diff --git a/config.xml b/config.xml index 7cd6608..e368c04 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + WordRotator A word-game @@ -9,8 +9,8 @@ - + @@ -27,13 +27,4 @@ - - - - - - - - - diff --git a/package.json b/package.json index 6d20ba0..5d4bc43 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,7 @@ { "name": "wordrotator", "displayName": "WordRotator", - "version": "1.3.0", - "main": "index.js", + "version": "1.3.2", "scripts": { "server": "ts-node src/server/index.ts", "run browser": "cordova run browser", @@ -17,45 +16,45 @@ "typeorm": "ts-node ./node_modules/typeorm/cli -f ./ormconfig.ts" }, "dependencies": { - "@types/node": "^14.14.27", + "@types/node": "^15.3.0", "body-parser": "^1.19.0", - "cordova-android": "^9.0.0", - "cordova-browser": "^6.0.0", - "cordova-ios": "^6.1.1", + "cordova-android": "^8.1.0", + "cordova-ios": "^5.1.1", + "cordova-plugin-webpack": "^1.0.5", "cordova-sites": "git+https://github.com/Ainias/cordova-sites.git#0.7.10", "cordova-sites-database": "git+https://github.com/Ainias/cordova-sites-database.git#0.4.4", "cordova-sites-easy-sync": "git+https://github.com/Ainias/cordova-sites-easy-sync.git#0.6.7", "cordova-sites-user-management": "git+https://github.com/Ainias/cordova-sites-user-management.git#0.5.4", "crypto": "^1.0.1", "cs-event-manager": "git+https://git@github.com/Ainias/event-manager.git#0.2", - "dotenv": "^8.2.0", + "dotenv": "^9.0.2", "express": "^4.17.1", "js-helper": "git+https://github.com/Ainias/js-helper.git#0.6.6", "jsonwebtoken": "^8.5.1", "mysql": "^2.18.1", - "nodemailer": "^6.4.14", - "ts-node": "9.1.1", - "typeorm": "^0.2.31", - "typescript": "^4.1.5" + "nodemailer": "^6.6.0", + "ts-node": "^9.1.1", + "typeorm": "^0.2.32", + "typescript": "^4.2.4" }, "devDependencies": { - "@babel/core": "^7.13.15", - "@babel/plugin-transform-runtime": "^7.13.15", + "@babel/core": "^7.14.2", + "@babel/plugin-transform-runtime": "^7.14.2", "@babel/polyfill": "^7.12.1", - "@babel/preset-env": "^7.13.15", - "@wdio/appium-service": "^7.4.2", - "@wdio/cli": "^7.4.6", - "@wdio/jasmine-framework": "^7.4.6", - "@wdio/local-runner": "^7.4.6", - "@wdio/selenium-standalone-service": "^7.4.2", - "@wdio/spec-reporter": "^7.4.3", - "appium": "1.20.2", + "@babel/preset-env": "^7.14.2", + "@wdio/appium-service": "^7.5.7", + "@wdio/cli": "^7.5.7", + "@wdio/jasmine-framework": "^ 7.5.3", + "@wdio/local-runner": "^7.5.7", + "@wdio/selenium-standalone-service": "^7.5.7", + "@wdio/spec-reporter": "^7.5.7", + "appium": "^1.21.0", "appium-doctor": "^1.16.0", "autoprefixer": "^10.2.5", - "babel-loader": "^8.1.0", + "babel-loader": "^8.2.2", "babel-preset-env": "^1.7.0", "clean-webpack-plugin": "^3.0.0", - "copy-webpack-plugin": "^6.2.1", + "copy-webpack-plugin": "^5.1.2", "cordova-plugin-device": "^2.0.3", "cordova-plugin-file": "^6.0.2", "cordova-plugin-nativestorage": "^2.3.2", @@ -63,37 +62,37 @@ "cordova-plugin-tts": "^0.2.3", "cordova-plugin-webpack": "^1.0.5", "cordova-plugin-whitelist": "^1.3.4", - "cordova-sqlite-storage": "^5.1.0", - "css-loader": "^5.0.0", + "cordova-serve": "^4.0.0", + "cordova-sqlite-storage": "^6.0.0", + "css-loader": "^5.2.4", + "enhanced-resolve": "^5.8.2", "extract-loader": "^5.1.0", - "file-loader": "^6.1.1", + "file-loader": "^6.2.0", "foundation-sites": "^6.6.3", "html-loader": "^1.3.2", - "html-webpack-plugin": "^4.5.0", + "html-webpack-plugin": "^4.5.2", "jasmine": "^3.7.0", "localforage": "^1.9.0", - "node-sass": "^5.0.0", - "postcss-loader": "^5.2.0", - "sass-loader": "^10.0.3", - "sql.js": "1.3.2", - "terser-webpack-plugin": "^5.0.0", - "ts-loader": "^8.0.17", + "node-sass": "^6.0.0", + "postcss-loader": "^4.3.0", + "sass-loader": "^10.2.0", + "sql.js": "1.5.0", + "terser-webpack-plugin": "^5.1.2", + "ts-loader": "^8.2.0", "webpack": "^4.46.0", "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0", - "workbox-precaching": "^5.1.4", - "workbox-webpack-plugin": "^5.1.4" + "webpack-dev-server": "^3.11.2" }, "cordova": { "plugins": { "cordova-plugin-webpack": {}, - "cordova-plugin-whitelist": {}, "cordova-plugin-nativestorage": {}, - "cordova-plugin-keyboard": {}, "cordova-plugin-tts": {}, + "nl.madebymark.share": {}, "cordova-plugin-device": {}, "cordova-plugin-file": {}, - "cordova-sqlite-storage": {} + "cordova-sqlite-storage": {}, + "cordova-plugin-whitelist": {} }, "platforms": [ "browser", diff --git a/src/client/js/Sites/LevelSite.ts b/src/client/js/Sites/LevelSite.ts index 643ad05..c81058a 100644 --- a/src/client/js/Sites/LevelSite.ts +++ b/src/client/js/Sites/LevelSite.ts @@ -125,6 +125,7 @@ export class LevelSite extends MenuSite { let continueButton = this.findBy("#continue-button"); continueButton.addEventListener("click", () => { + continueButton.style.opacity = 0; this.nextLevel(); }); @@ -300,19 +301,18 @@ export class LevelSite extends MenuSite { try { const savePromise = LevelPlayed.setPlayed(level.getLevelData()); - savePromise.then((r) => console.log("levelSaved!", r)); + // savePromise.then((r) => console.log("levelSaved!", r)); this.levelCounter++; await NativeStoragePromise.setItem("levelCounter", this.levelCounter); - - //Todo richtiges Element aufrufen? - this._view.classList.add('won'); await NativeStoragePromise.remove("currentLevel"); let continueButton = this.findBy("#continue-button"); continueButton.style.transition = "none"; continueButton.style.opacity = 0; + //Todo richtiges Element aufrufen? + this._view.classList.add('won'); ViewHelper.removeAllChildren(this.coinContainer); let coinsPerLevel = await NativeStoragePromise.getItem("coinsPerLevel", 5); diff --git a/src/client/js/script.js b/src/client/js/script.js index 9678f7c..74fda56 100644 --- a/src/client/js/script.js +++ b/src/client/js/script.js @@ -2,7 +2,6 @@ import translationGerman from '../translations/de.json'; import translationEn from '../translations/en.json'; import {App, Translator, DataManager, Toast} from "cordova-sites/dist/client"; - import "cordova-sites-user-management/dist/client/js/translationInit" import "cordova-sites/dist/client/js/translationInit" diff --git a/src/client/js/wordrotator/Level/Level.js b/src/client/js/wordrotator/Level/Level.js index 2d86e48..db2d83a 100644 --- a/src/client/js/wordrotator/Level/Level.js +++ b/src/client/js/wordrotator/Level/Level.js @@ -31,7 +31,7 @@ export class Level { }); this.segmentClickedListener = () => { - console.log("clicked") + // console.log("clicked") }; } diff --git a/src/client/js/wordrotator/Segment/ParentSegment.js b/src/client/js/wordrotator/Segment/ParentSegment.js index 3f79e4d..637389d 100644 --- a/src/client/js/wordrotator/Segment/ParentSegment.js +++ b/src/client/js/wordrotator/Segment/ParentSegment.js @@ -5,7 +5,7 @@ import {ViewHelper} from "js-helper/dist/client/ViewHelper"; export class ParentSegment extends Segment { static initListener() { window.addEventListener("mousedown", (e) => { - console.log("mousedown"); + // console.log("mousedown"); ParentSegment.mouseDownTarget = e.target; ParentSegment.clickPosition = {x: e.pageX, y: e.pageY}; }); @@ -66,7 +66,7 @@ export class ParentSegment extends Segment { this.mouseupListener = (e) => { let now = new Date().getTime(); - console.log("mouseup", ParentSegment.mouseDownTarget); + // console.log("mouseup", ParentSegment.mouseDownTarget); if (ParentSegment.mouseDownTarget !== null && this.element.contains(ParentSegment.mouseDownTarget) && this.element.contains(e.target)) { let position = {x: e.pageX, y: e.pageY}; e.stopPropagation(); @@ -269,4 +269,4 @@ export class ParentSegment extends Segment { } } -ParentSegment.initListener(); \ No newline at end of file +ParentSegment.initListener(); diff --git a/src/client/sass/_themeBlue.scss b/src/client/sass/_themeBlue.scss index 74e2597..f9356e2 100644 --- a/src/client/sass/_themeBlue.scss +++ b/src/client/sass/_themeBlue.scss @@ -52,6 +52,10 @@ body.theme-blue{ background: $primaryColor; color: $textColor; + label{ + color: $textColor; + } + .toast .message{ background: $secondaryColor; } diff --git a/src/client/translations/de.json b/src/client/translations/de.json index cc73436..58ea6a7 100644 --- a/src/client/translations/de.json +++ b/src/client/translations/de.json @@ -23,7 +23,7 @@ "choose-theme-dialog-title": "Theme auswählen:", "install": "Installieren", "share-dialog": "Teilen:", - "credits-text": "Ein großer Dank geht an Hanna, denn ohne sie sähe die App nicht so aus, wie sie aussieht. Danke für deine guten Vorschlä und Ratschläge für das Design!", + "credits-text": "Ein großer Dank geht an Hanna, denn ohne sie sähe die App nicht so aus, wie sie aussieht. Danke für deine guten Vorschläge und Ratschläge für das Design!", "credits-coin-text": "Sound:
Der Münz-Sound ist von der Webseite {0}. Alle Rechte für diesen Münz-Sound gehören {0}.", "credits-music-text": "Musik:
Bright And Beautiful - GEMAfreie Musik von {0}
Licensed under Creative Commons: By Attribution 4.0 International (CC BY 4.0)
{1}
Angepasst (geschnitten) für diese App", "storage-info": "Fortschritt {0} dauerhaft gespeichert", diff --git a/src/server/public/bundle.js b/src/server/public/bundle.js index 9f06cb3..c28426f 100644 --- a/src/server/public/bundle.js +++ b/src/server/public/bundle.js @@ -81,5887 +81,79140 @@ /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ return __webpack_require__(__webpack_require__.s = 288); /******/ }) /************************************************************************/ -/******/ ({ - -/***/ "./node_modules/base64-js/index.js": -/*!*****************************************!*\ - !*** ./node_modules/base64-js/index.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n\n//# sourceURL=webpack:///./node_modules/base64-js/index.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-database/dist/BaseDatabase.js": -/*!******************************************************************!*\ - !*** ./node_modules/cordova-sites-database/dist/BaseDatabase.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _typeorm = __webpack_require__(/*! typeorm */ \"./node_modules/typeorm/browser/index.js\");\nlet typeorm = _typeorm;\nclass BaseDatabase {\n constructor(database) {\n let options = this._createConnectionOptions(database);\n this._connectionPromise = this._createConnection(options);\n }\n _createConnection(options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (options.type === \"sqljs\") {\n //wait for SQL to be initialized\n window[\"SQL\"] = yield window[\"initSqlJs\"]();\n }\n return typeorm.createConnection(options).catch(e => {\n console.error(e);\n return Promise.reject(e);\n });\n });\n }\n _createConnectionOptions(database) {\n let options = BaseDatabase.CONNECTION_OPTIONS;\n if (typeof device === \"undefined\" || device.platform !== \"browser\") {\n options.type = \"cordova\";\n options.database = database;\n }\n else {\n let saveTimeout = null;\n options.type = \"sqljs\";\n options.location = database;\n options.autoSave = true;\n options.useLocalForage = true;\n //Deactivated delay of saving since PRAGMA foreign_keys = ON is not saved with delay (why ever!)\n // options.autoSaveCallback = function () {\n // clearTimeout(saveTimeout);\n // saveTimeout = setTimeout(() => {\n // typeorm.getSqljsManager().saveDatabase();\n // }, 150);\n // }\n }\n options.entities = this.getEntityDefinitions();\n // options.migrations = this.constructor._migrations;\n return options;\n }\n getEntityDefinitions() {\n let entities = [];\n Object.keys(BaseDatabase._models).forEach(modelName => {\n BaseDatabase._models[modelName]._database = this;\n entities.push(new typeorm.EntitySchema(BaseDatabase._models[modelName].getSchemaDefinition()));\n });\n // console.log(\"entities\", entities);\n return entities;\n }\n saveEntity(entity) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = null;\n if (Array.isArray(entity)) {\n if (entity.length === 0) {\n return entity;\n }\n repository = yield this._getRepository(entity[0].constructor);\n }\n else {\n repository = yield this._getRepository(entity.constructor);\n }\n return repository.save(entity);\n });\n }\n static _buildQuery(where, order, limit, offset, relations) {\n let query = {};\n if (where) {\n query[\"where\"] = where;\n }\n if (order) {\n query[\"order\"] = order;\n }\n if (limit) {\n query[\"take\"] = limit;\n }\n if (offset) {\n query[\"skip\"] = offset;\n }\n if (relations) {\n query[\"relations\"] = relations;\n }\n return query;\n }\n static _setLoaded(models) {\n return __awaiter(this, void 0, void 0, function* () {\n models = yield models;\n if (models === null || models === undefined) {\n return null;\n }\n let isArray = Array.isArray(models);\n if (!isArray) {\n models = [models];\n }\n models.forEach(models => models.setLoaded(true));\n return (isArray) ? models : models[0];\n });\n }\n findEntities(model, where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.find(BaseDatabase._buildQuery(where, order, limit, offset, relations)));\n });\n }\n findAndCountEntities(model, where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findAndCount(BaseDatabase._buildQuery(where, order, limit, offset, relations)));\n });\n }\n findOneEntity(model, where, order, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findOne(BaseDatabase._buildQuery(where, order, undefined, offset, relations)));\n });\n }\n findById(model, id, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findOne(id, BaseDatabase._buildQuery(undefined, undefined, undefined, undefined, relations)));\n });\n }\n findByIds(model, ids, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findByIds(ids, BaseDatabase._buildQuery(undefined, undefined, undefined, undefined, relations)));\n });\n }\n clearModel(model) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return repository.clear();\n });\n }\n _getRepository(model) {\n return __awaiter(this, void 0, void 0, function* () {\n let connection = yield this._connectionPromise;\n return connection.getRepository(model);\n });\n }\n createQueryBuilder(model) {\n return __awaiter(this, void 0, void 0, function* () {\n if (model) {\n let repo = yield this._getRepository(model);\n return repo.createQueryBuilder(model.getSchemaName());\n }\n else {\n let connection = yield this._connectionPromise;\n return connection.createQueryBuilder();\n }\n });\n }\n createQueryRunner() {\n return __awaiter(this, void 0, void 0, function* () {\n let connection = yield this._connectionPromise;\n return connection.createQueryRunner();\n });\n }\n deleteEntity(entity, model) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Array.isArray(entity)) {\n if (entity.length === 0) {\n return entity;\n }\n if (!model) {\n model = entity[0].constructor;\n }\n if (typeof entity[0] !== \"number\") {\n let ids = [];\n entity.forEach(ent => ids.push(ent.id));\n entity = ids;\n }\n }\n else {\n if (!model) {\n model = entity.constructor;\n }\n if (typeof entity !== \"number\") {\n entity = entity.id;\n }\n }\n let repository = yield this._getRepository(model);\n return repository.delete(entity);\n });\n }\n rawQuery(sql, params) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this._connectionPromise).query(sql, params);\n });\n }\n waitForConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._connectionPromise;\n });\n }\n /**\n * @return {BaseDatabase}\n */\n static getInstance() {\n if (!this.instance) {\n this.instance = new this();\n }\n return this.instance;\n }\n static addModel(model) {\n BaseDatabase._models[model.getSchemaName()] = model;\n }\n static getModel(modelName) {\n if (modelName) {\n return this._models[modelName];\n }\n else {\n return this._models;\n }\n }\n}\nexports.BaseDatabase = BaseDatabase;\nBaseDatabase._models = {};\nBaseDatabase.CONNECTION_OPTIONS = {\n location: \"default\",\n // autoSave: true,\n logging: [\"error\", \"warn\"],\n synchronize: true,\n};\nBaseDatabase.TYPES = {\n INTEGER: \"int\",\n FLOAT: \"float\",\n DATE: \"datetime\",\n STRING: \"varchar\",\n TEXT: \"text\",\n MEDIUMTEXT: \"mediumtext\",\n BOOLEAN: \"boolean\",\n JSON: \"json\",\n SIMPLE_JSON: \"simple-json\",\n MY_JSON: \"my-json\",\n};\n//# sourceMappingURL=BaseDatabase.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-database/dist/BaseDatabase.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-database/dist/BaseModel.js": -/*!***************************************************************!*\ - !*** ./node_modules/cordova-sites-database/dist/BaseModel.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst BaseDatabase_1 = __webpack_require__(/*! ./BaseDatabase */ \"./node_modules/cordova-sites-database/dist/BaseDatabase.js\");\nclass BaseModel {\n constructor() {\n this.id = null;\n this._isLoaded = false;\n }\n getId() {\n return this.id;\n }\n setId(id) {\n this.id = id;\n }\n static getColumnDefinitions() {\n return {\n id: {\n primary: true,\n type: BaseDatabase_1.BaseDatabase.TYPES.INTEGER,\n generated: true\n },\n };\n }\n static getRelationDefinitions() {\n return {};\n }\n static getRelations() {\n return Object.keys(this.getRelationDefinitions());\n }\n static getSchemaDefinition() {\n let columns = this.getColumnDefinitions();\n Object.keys(columns).forEach(column => {\n if (typeof columns[column] === \"string\") {\n columns[column] = { type: columns[column] };\n }\n if (columns[column].type === BaseDatabase_1.BaseDatabase.TYPES.MY_JSON && !columns[column].transformer) {\n columns[column].type = BaseDatabase_1.BaseDatabase.TYPES.MEDIUMTEXT;\n columns[column].transformer = {\n from: text => {\n return (text ? JSON.parse(text) : null);\n },\n to: json => {\n return (json ? JSON.stringify(json) : \"\");\n }\n };\n }\n });\n return {\n name: this.getSchemaName(),\n target: this,\n columns: columns,\n relations: this.getRelationDefinitions()\n };\n }\n static getSchemaName() {\n if (!this.SCHEMA_NAME) {\n this.SCHEMA_NAME = this.name;\n }\n return this.SCHEMA_NAME;\n }\n setLoaded(isLoaded) {\n this._isLoaded = isLoaded;\n }\n save() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.constructor._database.saveEntity(this);\n });\n }\n delete() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.constructor._database.deleteEntity(this);\n });\n }\n static deleteMany(entities) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.deleteEntity(entities);\n });\n }\n static saveMany(entities) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.saveEntity(entities);\n });\n }\n static find(where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findEntities(this, where, order, limit, offset, relations);\n });\n }\n static findAndCount(where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findAndCountEntities(this, where, order, limit, offset, relations);\n });\n }\n static findOne(where, order, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findOneEntity(this, where, order, offset, relations);\n });\n }\n static findById(id, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findById(this, id, relations);\n });\n }\n static findByIds(ids, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findByIds(this, ids, relations);\n });\n }\n static clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.clearModel(this);\n });\n }\n static equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {\n return a.every((subA, index) => {\n this.equals(subA, b[index]);\n });\n }\n else if (a instanceof this && b instanceof this) {\n return a.constructor === b.constructor && a.getId() === b.getId();\n }\n }\n}\nexports.BaseModel = BaseModel;\n/**\n * @type {null | BaseDatabase}\n * @private\n */\nBaseModel._database = null;\nBaseModel.RELATION = {\n MANY_TO_MANY: \"many-to-many\",\n MANY_TO_ONE: \"many-to-one\",\n ONE_TO_MANY: \"one-to-many\",\n ONE_TO_ONE: \"one-to-one\"\n};\n//# sourceMappingURL=BaseModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-database/dist/BaseModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-database/dist/cordova-sites-database.js": -/*!****************************************************************************!*\ - !*** ./node_modules/cordova-sites-database/dist/cordova-sites-database.js ***! - \****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(/*! ./BaseDatabase */ \"./node_modules/cordova-sites-database/dist/BaseDatabase.js\"));\n__export(__webpack_require__(/*! ./BaseModel */ \"./node_modules/cordova-sites-database/dist/BaseModel.js\"));\n__export(__webpack_require__(/*! ./cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\"));\n//# sourceMappingURL=cordova-sites-database.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-database/dist/cordova-sites-database.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client.js": -/*!*************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./client/ClientFileMedium */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientFileMedium.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/ClientModel */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientModel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/ClientPartialModel */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientPartialModel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/EasySyncClientDb */ \"./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/FileWriter/FilePromise */ \"./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FilePromise.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/FileWriter/FileTransferPromise */ \"./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileTransferPromise.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/FileWriter/FileWriterPromise */ \"./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileWriterPromise.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/LastSyncDates */ \"./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/SyncJob */ \"./node_modules/cordova-sites-easy-sync/dist/client/SyncJob.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/SyncJob_old */ \"./node_modules/cordova-sites-easy-sync/dist/client/SyncJob_old.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/editEntitySite/ModifyEntitySite */ \"./node_modules/cordova-sites-easy-sync/dist/client/editEntitySite/ModifyEntitySite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/migration/SetupEasySync */ \"./node_modules/cordova-sites-easy-sync/dist/client/migration/SetupEasySync.js\"), exports);\n//# sourceMappingURL=client.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/ClientFileMedium.js": -/*!******************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/ClientFileMedium.js ***! - \******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientFileMedium = void 0;\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ../shared/EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nconst FileTransferPromise_1 = __webpack_require__(/*! ./FileWriter/FileTransferPromise */ \"./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileTransferPromise.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst FilePromise_1 = __webpack_require__(/*! ./FileWriter/FilePromise */ \"./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FilePromise.js\");\nclass ClientFileMedium extends EasySyncBaseModel_1.EasySyncBaseModel {\n constructor() {\n super(...arguments);\n this.saveOffline = true;\n this._isDownloaded = true;\n }\n setLoaded(isLoaded) {\n // @ts-ignore\n super.setLoaded(isLoaded);\n this._isDownloaded = true;\n FilePromise_1.FilePromise.open(this.src, { create: false }).then(() => this._isDownloaded = true).catch(e => {\n console.log(\"not downloaded, yet!\");\n this._isDownloaded = false;\n ClientFileMedium._handleImages(this);\n });\n }\n save() {\n const _super = Object.create(null, {\n save: { get: () => super.save }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield ClientFileMedium._handleImages(this);\n return _super.save.call(this);\n });\n }\n static saveMany(entities) {\n const _super = Object.create(null, {\n saveMany: { get: () => super.saveMany }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield ClientFileMedium._handleImages(entities);\n return _super.saveMany.call(this, entities);\n });\n }\n static _handleImages(entities) {\n return __awaiter(this, void 0, void 0, function* () {\n let isArray = Array.isArray(entities);\n if (!isArray) {\n entities = [entities];\n }\n yield Helper_1.Helper.asyncForEach(entities, (entity) => __awaiter(this, void 0, void 0, function* () {\n if (entity.saveOffline && device.platform !== \"browser\" && !entity.src.startsWith(\"data\") && !entity.src.startsWith(\"http\") && !entity.src.startsWith(\"//\")) {\n yield new FileTransferPromise_1.FileTransferPromise(entity.getServerUrl(false), entity.src).download().catch(e => console.log(e));\n entity._isDownloaded = true;\n }\n }), true);\n });\n }\n}\nexports.ClientFileMedium = ClientFileMedium;\n//# sourceMappingURL=ClientFileMedium.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/ClientFileMedium.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/ClientModel.js": -/*!*************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/ClientModel.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientModel = void 0;\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\nclass ClientModel extends cordova_sites_database_1.BaseModel {\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n if (columns[\"id\"] && columns[\"id\"][\"generated\"]) {\n columns[\"id\"][\"generated\"] = false;\n }\n return columns;\n }\n static _fromJson(jsonObjects, models, includeRelations) {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n toJSON(includeFull) {\n }\n ;\n save(local) {\n const _super = Object.create(null, {\n save: { get: () => super.save }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let values = this.toJSON();\n let data = yield client_1.DataManager.send(this.constructor.SAVE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"values\": values\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n yield this.constructor._fromJson(data, this, true);\n }\n return _super.save.call(this);\n });\n }\n delete(local) {\n const _super = Object.create(null, {\n delete: { get: () => super.delete }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let data = yield client_1.DataManager.send(this.constructor.DELETE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"id\": this.id\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n }\n return _super.delete.call(this);\n });\n }\n static saveMany(entities, local) {\n const _super = Object.create(null, {\n saveMany: { get: () => super.saveMany }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let values = [];\n entities.forEach(entity => {\n values.push(entity.toJSON());\n });\n let data = yield client_1.DataManager.send(this.SAVE_PATH, {\n \"model\": this.getSchemaName(),\n \"values\": values\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n entities = yield this._fromJson(data, undefined, true);\n }\n return _super.saveMany.call(this, entities);\n });\n }\n static getSchemaDefinition() {\n const TYPES_FOR_DEFAULT_ESCAPING = [\n cordova_sites_database_1.BaseDatabase.TYPES.MEDIUMTEXT,\n cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n cordova_sites_database_1.BaseDatabase.TYPES.TEXT,\n ];\n let definitions = super.getSchemaDefinition();\n let columns = definitions[\"columns\"];\n Object.keys(columns).forEach(column => {\n if (columns[column].type === cordova_sites_database_1.BaseDatabase.TYPES.MEDIUMTEXT) {\n columns[column].type = cordova_sites_database_1.BaseDatabase.TYPES.TEXT;\n }\n if (columns[column].type === cordova_sites_database_1.BaseDatabase.TYPES.JSON) {\n columns[column].type = cordova_sites_database_1.BaseDatabase.TYPES.SIMPLE_JSON;\n }\n if (TYPES_FOR_DEFAULT_ESCAPING.indexOf(columns[column].type) !== -1) {\n columns[column].escapeJS = shared_1.Helper.nonNull(columns[column].escapeJS, true);\n columns[column].escapeHTML = shared_1.Helper.nonNull(columns[column].escapeHTML, true);\n }\n });\n return definitions;\n }\n}\nexports.ClientModel = ClientModel;\nClientModel.SAVE_PATH = \"/sync\";\nClientModel.DELETE_PATH = \"/sync/delete\";\n//# sourceMappingURL=ClientModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/ClientModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/ClientPartialModel.js": -/*!********************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/ClientPartialModel.js ***! - \********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientPartialModel = void 0;\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ../shared/EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass ClientPartialModel extends EasySyncBaseModel_1.EasySyncBaseModel {\n constructor() {\n super();\n this.clientId = null;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n if (columns[\"id\"]) {\n columns[\"id\"][\"primary\"] = false;\n columns[\"id\"][\"generated\"] = false;\n columns[\"id\"][\"nullable\"] = true;\n columns[\"id\"][\"unique\"] = true;\n }\n columns[\"clientId\"] = {\n type: \"integer\",\n primary: true,\n generated: true,\n };\n return columns;\n }\n toJSON(includeFull) {\n let relations = this.constructor.getRelationDefinitions();\n let columns = this.constructor.getColumnDefinitions();\n let obj = {};\n Object.keys(columns).forEach(attribute => {\n if (attribute !== \"clientId\") {\n obj[attribute] = this[attribute];\n }\n });\n Object.keys(relations).forEach(relationName => {\n if (includeFull === true) {\n obj[relationName] = this[relationName];\n }\n else {\n if (Array.isArray(this[relationName])) {\n let ids = [];\n this[relationName].forEach(child => (child && ids.push(child.id)));\n obj[relationName] = ids;\n }\n else if (this[relationName] instanceof cordova_sites_database_1.BaseModel) {\n obj[relationName] = this[relationName].id;\n }\n else {\n obj[relationName] = null;\n }\n }\n });\n return obj;\n }\n save(local) {\n const _super = Object.create(null, {\n save: { get: () => super.save }\n });\n return __awaiter(this, void 0, void 0, function* () {\n local = Helper_1.Helper.nonNull(local, true);\n if (typeof this.clientId !== \"number\") {\n this.clientId = undefined;\n }\n if (!local) {\n let values = this.toJSON();\n let data = yield client_1.DataManager.send(this.constructor.SAVE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"values\": values\n });\n if (data.success !== false) {\n yield this.constructor._fromJson(data, this, true);\n }\n }\n return _super.save.call(this, true);\n });\n }\n delete(local) {\n const _super = Object.create(null, {\n delete: { get: () => super.delete }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let data = yield client_1.DataManager.send(this.constructor.DELETE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"id\": this.id\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n }\n return _super.delete.call(this, true);\n });\n }\n static saveMany(entities, local) {\n const _super = Object.create(null, {\n saveMany: { get: () => super.saveMany }\n });\n return __awaiter(this, void 0, void 0, function* () {\n local = Helper_1.Helper.nonNull(local, true);\n entities.forEach(entity => {\n if (typeof entity.clientId !== \"number\") {\n entity.clientId = undefined;\n }\n });\n if (!local) {\n let values = [];\n entities.forEach(entity => {\n values.push(entity.toJSON());\n });\n let data = yield client_1.DataManager.send(this.SAVE_PATH, {\n \"model\": this.getSchemaName(),\n \"values\": values\n });\n if (data.success !== false) {\n entities = yield this._fromJson(data, entities, true);\n }\n }\n return _super.saveMany.call(this, entities, true);\n });\n }\n}\nexports.ClientPartialModel = ClientPartialModel;\n//# sourceMappingURL=ClientPartialModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/ClientPartialModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js": -/*!******************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js ***! - \******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EasySyncClientDb = void 0;\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nconst ClientModel_1 = __webpack_require__(/*! ./ClientModel */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientModel.js\");\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ../shared/EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nconst EasySyncPartialModel_1 = __webpack_require__(/*! ../shared/EasySyncPartialModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncPartialModel.js\");\nconst ClientPartialModel_1 = __webpack_require__(/*! ./ClientPartialModel */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientPartialModel.js\");\nconst FileMedium_1 = __webpack_require__(/*! ../shared/FileMedium */ \"./node_modules/cordova-sites-easy-sync/dist/shared/FileMedium.js\");\nconst ClientFileMedium_1 = __webpack_require__(/*! ./ClientFileMedium */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientFileMedium.js\");\nclass EasySyncClientDb extends cordova_sites_database_1.BaseDatabase {\n constructor(dbName) {\n super(dbName || \"EasySync\");\n }\n _createConnectionOptions(database) {\n JSObject.setPrototypeOf(EasySyncBaseModel_1.EasySyncBaseModel, ClientModel_1.ClientModel);\n JSObject.setPrototypeOf(EasySyncPartialModel_1.EasySyncPartialModel, ClientPartialModel_1.ClientPartialModel);\n JSObject.setPrototypeOf(EasySyncBaseModel_1.EasySyncBaseModel.prototype, ClientModel_1.ClientModel.prototype);\n JSObject.setPrototypeOf(EasySyncPartialModel_1.EasySyncPartialModel.prototype, ClientPartialModel_1.ClientPartialModel.prototype);\n JSObject.setPrototypeOf(FileMedium_1.FileMedium, ClientFileMedium_1.ClientFileMedium);\n JSObject.setPrototypeOf(FileMedium_1.FileMedium.prototype, ClientFileMedium_1.ClientFileMedium.prototype);\n let options = super._createConnectionOptions(database);\n options[\"migrationsTableName\"] = \"migrations\";\n return options;\n }\n}\nexports.EasySyncClientDb = EasySyncClientDb;\nEasySyncClientDb.BASE_MODEL = null;\nclient_1.App.addInitialization(() => __awaiter(void 0, void 0, void 0, function* () {\n yield EasySyncClientDb.getInstance()._connectionPromise.catch(function (e) {\n if (typeof EasySyncClientDb.errorListener === \"function\") {\n return EasySyncClientDb.errorListener(...arguments);\n }\n else {\n throw (e);\n }\n });\n}));\n//# sourceMappingURL=EasySyncClientDb.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FilePromise.js": -/*!************************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FilePromise.js ***! - \************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilePromise = void 0;\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst FileWriterPromise_1 = __webpack_require__(/*! ./FileWriterPromise */ \"./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileWriterPromise.js\");\nclass FilePromise {\n constructor(fileEntry) {\n this.fileEntry = fileEntry;\n }\n createWriter() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((res) => {\n this.fileEntry.createWriter(writer => {\n res(new FileWriterPromise_1.FileWriterPromise(writer));\n });\n });\n });\n }\n static open(file, options) {\n return __awaiter(this, void 0, void 0, function* () {\n options = Helper_1.Helper.nonNull(options, { create: true, exclusive: false });\n return new Promise((r, rej) => {\n window[\"resolveLocalFileSystemURL\"](\"cdvfile://localhost/persistent/\", dirEntry => {\n dirEntry.getFile(file, options, fileEntry => {\n r(new FilePromise(fileEntry));\n }, rej);\n }, rej);\n });\n });\n }\n}\nexports.FilePromise = FilePromise;\n//# sourceMappingURL=FilePromise.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FilePromise.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileTransferPromise.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileTransferPromise.js ***! - \********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileTransferPromise = void 0;\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst FilePromise_1 = __webpack_require__(/*! ./FilePromise */ \"./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FilePromise.js\");\nconst DataManager_1 = __webpack_require__(/*! cordova-sites/dist/client/js/DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\nclass FileTransferPromise {\n constructor(downloadUrl, storagePath) {\n this.downloadUrl = downloadUrl;\n if (Helper_1.Helper.isNull(storagePath)) {\n let parts = this.downloadUrl.split(\"/\");\n if (parts.length > 0) {\n storagePath = parts[parts.length - 1];\n }\n }\n this.storagePath = storagePath;\n }\n download() {\n return __awaiter(this, void 0, void 0, function* () {\n debugger;\n let blob = DataManager_1.DataManager.fetchBlob(this.downloadUrl);\n let filePromise = yield FilePromise_1.FilePromise.open(this.storagePath);\n let fileWriter = yield filePromise.createWriter();\n // blob = await blob;\n yield fileWriter.write(yield blob);\n });\n }\n}\nexports.FileTransferPromise = FileTransferPromise;\n//# sourceMappingURL=FileTransferPromise.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileTransferPromise.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileWriterPromise.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileWriterPromise.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileWriterPromise = void 0;\nclass FileWriterPromise {\n constructor(fileWriter) {\n this.fileWriter = fileWriter;\n this._isWritingPromise = Promise.resolve();\n }\n write(data) {\n return __awaiter(this, void 0, void 0, function* () {\n let promise = this._isWritingPromise.then(() => new Promise((res, rej) => {\n this.fileWriter.onwriteend = res;\n this.fileWriter.onerror = rej;\n this.fileWriter.write(data);\n }));\n this._isWritingPromise = promise.catch(console.error);\n return promise;\n });\n }\n}\nexports.FileWriterPromise = FileWriterPromise;\n//# sourceMappingURL=FileWriterPromise.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/FileWriter/FileWriterPromise.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js": -/*!***************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LastSyncDates = void 0;\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nclass LastSyncDates extends cordova_sites_database_1.BaseModel {\n constructor() {\n super();\n this.model = \"\";\n this.lastSynced = 0;\n this.where = {};\n }\n getModel() {\n return this.model;\n }\n setModel(model) {\n this.model = model;\n }\n getLastSynced() {\n return this.lastSynced;\n }\n setLastSynced(lastSynced) {\n this.lastSynced = lastSynced;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"model\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, nullable: true };\n columns[\"lastSynced\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, nullable: true };\n columns[\"where\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.SIMPLE_JSON };\n return columns;\n }\n}\nexports.LastSyncDates = LastSyncDates;\nLastSyncDates.SCHEMA_NAME = \"easy-sync-last-sync-dates\";\ncordova_sites_database_1.BaseDatabase.addModel(LastSyncDates);\n//# sourceMappingURL=LastSyncDates.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/SyncJob.js": -/*!*********************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/SyncJob.js ***! - \*********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncJob = void 0;\nconst LastSyncDates_1 = __webpack_require__(/*! ./LastSyncDates */ \"./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\nconst EasySyncClientDb_1 = __webpack_require__(/*! ./EasySyncClientDb */ \"./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js\");\nconst typeorm = __webpack_require__(/*! typeorm */ \"./node_modules/typeorm/browser/index.js\");\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ../shared/EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nconst ClientFileMedium_1 = __webpack_require__(/*! ./ClientFileMedium */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientFileMedium.js\");\nconst FileMedium_1 = __webpack_require__(/*! ../shared/FileMedium */ \"./node_modules/cordova-sites-easy-sync/dist/shared/FileMedium.js\");\nconst BaseDatabase_1 = __webpack_require__(/*! cordova-sites-database/dist/BaseDatabase */ \"./node_modules/cordova-sites-database/dist/BaseDatabase.js\");\nclass SyncJob {\n constructor() {\n this._syncedModels = {};\n this._modelNames = [];\n this._relationshipModels = {};\n this._lastSyncDates = {};\n this._keyedModelClasses = {};\n this._savePromise = Promise.resolve();\n this._queryRunner = null;\n this._finalRes = {};\n this._manyToManyRelations = {};\n }\n syncInBackgroundIfDataExists(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let copiedQuery = shared_1.JsonHelper.deepCopy(queries);\n let requestQueries = this._buildRequestQuery(copiedQuery);\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n this._syncPromise = this.sync(queries);\n if (Object[\"values\"](this._lastSyncDates).some(lastSync => {\n return lastSync[\"getLastSynced\"]() === 0;\n })) {\n yield this._syncPromise;\n }\n });\n }\n getSyncPromise() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._syncPromise;\n });\n }\n sync(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let requestQueries = this._buildRequestQuery(queries);\n if (Object.keys(this._lastSyncDates).length === 0) {\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n }\n yield this._doRuns(requestQueries);\n //Save new lastSync models\n let lastSyncPromises = [];\n Object.keys(this._lastSyncDates).forEach(model => {\n lastSyncPromises.push(this._lastSyncDates[model].save());\n });\n yield Promise.all(lastSyncPromises);\n //disabled in doRuns. Cannot be reenabled sooner, but since lastSyncDates should not have any relations, it should be okay\n yield EasySyncClientDb_1.EasySyncClientDb.getInstance().rawQuery(\"PRAGMA foreign_keys = ON;\");\n if (this._finalRes[\"FileMedium\"] && this._finalRes[\"FileMedium\"][\"changed\"]) {\n yield ClientFileMedium_1.ClientFileMedium._handleImages(yield FileMedium_1.FileMedium.findByIds(this._finalRes[\"FileMedium\"][\"changed\"]));\n }\n return this._finalRes;\n });\n }\n _doRuns(requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Initialize some variables\n let newLastSynced = null;\n let response = null;\n let offset = 0;\n //startTransaction maybe allow read, but not write?\n this._queryRunner = yield EasySyncClientDb_1.EasySyncClientDb.getInstance().createQueryRunner();\n this._savePromise = this._queryRunner.query(\"PRAGMA foreign_keys = OFF;\").then(() => {\n return this._queryRunner.startTransaction();\n });\n //Ask for next run until no more runs needed\n let shouldAskAgain;\n do {\n shouldAskAgain = false;\n response = yield SyncJob._fetchModel(requestQueries, offset);\n offset = response[\"nextOffset\"];\n //Update newLastSynced\n if (shared_1.Helper.isNull(newLastSynced)) {\n newLastSynced = parseInt(response[\"newLastSynced\"]);\n Object.keys(this._lastSyncDates).forEach(key => {\n this._lastSyncDates[key].setLastSynced(newLastSynced);\n });\n }\n //create new request query and save changes\n let newRequestQueries = [];\n response.results.forEach((res, i) => {\n if (res && res.shouldAskAgain) {\n shouldAskAgain = true;\n newRequestQueries.push(requestQueries[i]);\n }\n //Extract entities\n this._extractEntities(res);\n });\n requestQueries = newRequestQueries;\n } while (shouldAskAgain);\n yield this._handleManyToManyRelations();\n //wait for savePromises, stop transaction\n return this._savePromise.then(() => __awaiter(this, void 0, void 0, function* () {\n yield this._queryRunner.commitTransaction();\n })).catch((e) => __awaiter(this, void 0, void 0, function* () {\n console.error(e);\n yield this._queryRunner.rollbackTransaction();\n })).finally(() => __awaiter(this, void 0, void 0, function* () {\n yield this._queryRunner.release();\n }));\n });\n }\n /**\n * Extract the Entities and saves them(?) for one model\n *\n * @param modelRes\n * @private\n */\n _extractEntities(modelRes) {\n if (!modelRes) {\n return;\n }\n let modelClass = this._keyedModelClasses[modelRes[\"model\"]];\n let modelName = modelClass.getSchemaName();\n let deletedModelsIds = [];\n let changedEntities = [];\n //split result into deleted and changed/new entities\n modelRes[\"entities\"].forEach(entity => {\n if (entity.deleted) {\n deletedModelsIds.push(entity.id);\n }\n else {\n changedEntities.push(entity);\n }\n });\n this._syncedModels[modelName] = shared_1.Helper.nonNull(this._syncedModels[modelName], {});\n //convert json to entity and save it\n let schemaDefinition = modelClass.getSchemaDefinition();\n let relations = schemaDefinition[\"relations\"];\n let columns = schemaDefinition[\"columns\"];\n let changedEntityIds = [];\n changedEntities.forEach(entity => {\n Object.keys(relations).forEach(relation => {\n if (relations[relation].type === \"many-to-many\" && Array.isArray(entity[relation])) {\n let table = relations[relation].joinTable;\n let ownName;\n if (table.joinColumn && table.joinColumn.name) {\n ownName = table.joinColumn.name;\n }\n else {\n ownName = modelClass.getSchemaName();\n ownName = ownName.substr(0, 1).toLowerCase() + ownName.substr(1) + \"Id\";\n }\n let otherName;\n if (table.inverseJoinColumn && table.inverseJoinColumn.name) {\n otherName = table.inverseJoinColumn.name;\n }\n else {\n otherName = relations[relation].target;\n otherName = otherName.substr(0, 1).toLowerCase() + otherName.substr(1) + \"Id\";\n }\n this._manyToManyRelations[table.name] = shared_1.Helper.nonNull(this._manyToManyRelations[table.name], {});\n this._manyToManyRelations[table.name][\"values\"] = shared_1.Helper.nonNull(this._manyToManyRelations[table.name][\"values\"], []);\n this._manyToManyRelations[table.name][\"delete_\" + ownName] = shared_1.Helper.nonNull(this._manyToManyRelations[table.name][\"delete_\" + ownName], []);\n this._manyToManyRelations[table.name][\"delete_\" + ownName].push(entity.id);\n let otherIdsAlreadyInserted = [];\n let insertedRelations = this._manyToManyRelations[table.name][\"values\"].filter(relValue => relValue[ownName] === entity.id);\n insertedRelations.forEach(relValue => otherIdsAlreadyInserted.push(relValue[otherName]));\n entity[relation].forEach(otherId => {\n let index = otherIdsAlreadyInserted.indexOf(otherId);\n if (index === -1) {\n let value = {};\n value[ownName] = entity.id;\n value[otherName] = otherId;\n this._manyToManyRelations[table.name][\"values\"].push(value);\n }\n });\n }\n else if ((relations[relation].type === \"many-to-one\"\n || (relations[relation].type === \"one-to-one\" && relations[relation].joinColumn))\n //DO not check for a value of the relation here. Else If the first entity has no value set, the field\n // will not be set and therefore ignored for all other entites too\n ) {\n let fieldName;\n if (relations[relation].joinColumn && relations[relation].joinColumn.name) {\n fieldName = relations[relation].joinColumn.name;\n }\n else {\n fieldName = relation + \"Id\";\n }\n entity[fieldName] = entity[relation];\n }\n delete entity[relation];\n });\n Object.keys(columns).forEach(columnName => {\n if (columns[columnName].escapeHTML) {\n entity[columnName] = shared_1.XSSHelper.escapeHTML(entity[columnName]);\n }\n if (columns[columnName].escapeJS) {\n entity[columnName] = shared_1.XSSHelper.escapeJS(entity[columnName]);\n }\n });\n changedEntityIds.push(entity.id);\n });\n this._savePromise = this._savePromise.then(() => __awaiter(this, void 0, void 0, function* () { return yield this._insertOrReplace(modelClass, changedEntities); }));\n this._savePromise = this._savePromise.then(() => __awaiter(this, void 0, void 0, function* () { return yield this._deleteModels(modelClass, deletedModelsIds); }));\n this._finalRes[modelName] = shared_1.Helper.nonNull(this._finalRes[modelName], { \"deleted\": [], \"changed\": [] });\n this._finalRes[modelName][\"deleted\"].push(...deletedModelsIds);\n this._finalRes[modelName][\"changed\"].push(...changedEntityIds);\n }\n _buildRequestQuery(queries) {\n let requestQueries = [];\n //initializing query\n queries.forEach(query => {\n if (query.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel) {\n query = {\n model: query,\n where: {}\n };\n }\n query.model = query.model.getSchemaName();\n this._modelNames.push(query.model);\n requestQueries.push(query);\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNotNull(this._lastSyncDates[key])) {\n query[\"lastSynced\"] = this._lastSyncDates[key].getLastSynced();\n }\n });\n return requestQueries;\n }\n _getLastSyncModels(modelNames, requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Load syncModels\n let lastSyncModelsArray = yield LastSyncDates_1.LastSyncDates.find({\n \"model\": typeorm.In(modelNames)\n });\n let lastSyncDates = shared_1.Helper.arrayToObject(lastSyncModelsArray, model => \"\" + model.getModel() + JSON.stringify(model.where));\n requestQueries.forEach(query => {\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNull(lastSyncDates[key])) {\n let lastSyncDate = new LastSyncDates_1.LastSyncDates();\n lastSyncDate.setModel(query.model);\n lastSyncDate.where = query.where;\n lastSyncDate.setLastSynced(0);\n lastSyncDates[key] = lastSyncDate;\n }\n query[\"lastSynced\"] = lastSyncDates[key].getLastSynced();\n });\n return lastSyncDates;\n });\n }\n static _fetchModel(query, offset) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield client_1.DataManager.load(SyncJob.SYNC_PATH_PREFIX +\n client_1.DataManager.buildQuery({\n \"queries\": JSON.stringify(query),\n \"offset\": offset\n }));\n });\n }\n _insertOrReplace(modelClass, changedEntities) {\n return __awaiter(this, void 0, void 0, function* () {\n const MAX_INSERT_IN_ONE_GO = 300;\n if (changedEntities.length === 0) {\n return;\n }\n let schemaDefinition = modelClass.getSchemaDefinition();\n let tableName = schemaDefinition.name;\n tableName = shared_1.Helper.toSnakeCase(tableName);\n let columns = schemaDefinition.columns;\n //Get fields from entity for including relation fields\n const fields = Object.keys(changedEntities[0]);\n let values = [];\n let valueStrings = [];\n yield shared_1.Helper.asyncForEach(changedEntities, (entity) => __awaiter(this, void 0, void 0, function* () {\n let valueString = [];\n //Stellt die reihenfolge sicher\n fields.forEach(field => {\n let val = entity[field];\n if (columns[field] && columns[field].transformer) {\n val = columns[field].transformer.to(val);\n }\n if (columns[field] && columns[field].type === BaseDatabase_1.BaseDatabase.TYPES.SIMPLE_JSON) {\n val = JSON.stringify(val);\n }\n values.push(val);\n valueString.push(\"?\");\n });\n valueStrings.push(\"(\" + valueString.join(\",\") + \")\");\n if (valueStrings.length >= MAX_INSERT_IN_ONE_GO) {\n let sql = \"INSERT OR REPLACE INTO \" + tableName + \" (\" + fields.join(\",\") + \") VALUES \" + valueStrings.join(\",\");\n yield this._queryRunner.query(sql, values);\n valueStrings = [];\n values = [];\n }\n }));\n if (valueStrings.length > 0) {\n let sql = \"INSERT OR REPLACE INTO \" + tableName + \" (\" + fields.join(\",\") + \") VALUES \" + valueStrings.join(\",\");\n yield this._queryRunner.query(sql, values);\n }\n });\n }\n _deleteModels(modelClass, deletedModelsIds) {\n return __awaiter(this, void 0, void 0, function* () {\n const MAX_DELETES_IN_ONE_GO = 300;\n if (deletedModelsIds.length === 0) {\n return;\n }\n let tableName = modelClass.getSchemaName();\n tableName = shared_1.Helper.toSnakeCase(tableName);\n let ids = [];\n let valueStrings = [];\n yield shared_1.Helper.asyncForEach(deletedModelsIds, (entityId) => __awaiter(this, void 0, void 0, function* () {\n ids.push(entityId);\n valueStrings.push(\"?\");\n if (valueStrings.length >= MAX_DELETES_IN_ONE_GO) {\n let sql = \"DELETE FROM \" + tableName + \" WHERE id IN (\" + ids.join(\",\") + \")\";\n yield this._queryRunner.query(sql);\n valueStrings = [];\n ids = [];\n }\n }));\n if (valueStrings.length > 0) {\n let sql = \"DELETE FROM \" + tableName + \" WHERE id IN (\" + ids.join(\",\") + \")\";\n yield this._queryRunner.query(sql);\n }\n });\n }\n _handleManyToManyRelations() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._savePromise;\n let promises = [];\n Object.keys(this._manyToManyRelations).forEach(table => {\n let sql = \"DELETE FROM \" + table + \" WHERE \";\n let deleteSqls = [];\n Object.keys(this._manyToManyRelations[table]).forEach(field => {\n if (field.startsWith(\"delete_\")) {\n deleteSqls.push(field.substr(7) + \" IN (\" + this._manyToManyRelations[table][field].join(\",\") + \")\");\n }\n });\n sql += deleteSqls.join(\" OR \") + \";\";\n promises.push(this._queryRunner.query(sql).then(() => {\n if (this._manyToManyRelations[table].values.length > 0) {\n let fields = Object.keys(this._manyToManyRelations[table].values[0]);\n let valueStrings = [];\n this._manyToManyRelations[table].values.forEach(valuePair => {\n let values = [];\n fields.forEach(field => {\n values.push(valuePair[field]);\n });\n valueStrings.push(\"(\" + values.join(\",\") + \")\");\n });\n let sql = \"INSERT OR REPLACE INTO \" + table + \"(\" + fields.join(\",\") + \") VALUES \" + valueStrings.join(\",\") + \";\";\n return this._queryRunner.query(sql);\n }\n }));\n });\n yield Promise.all(promises);\n });\n }\n}\nexports.SyncJob = SyncJob;\nSyncJob.SYNC_PATH_PREFIX = \"sync\";\n//# sourceMappingURL=SyncJob.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/SyncJob.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/SyncJob_old.js": -/*!*************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/SyncJob_old.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncJob_old = void 0;\nconst LastSyncDates_1 = __webpack_require__(/*! ./LastSyncDates */ \"./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\nconst EasySyncClientDb_1 = __webpack_require__(/*! ./EasySyncClientDb */ \"./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js\");\nconst typeorm = __webpack_require__(/*! typeorm */ \"./node_modules/typeorm/browser/index.js\");\nconst EasySyncPartialModel_1 = __webpack_require__(/*! ../shared/EasySyncPartialModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncPartialModel.js\");\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ../shared/EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nconst ClientFileMedium_1 = __webpack_require__(/*! ./ClientFileMedium */ \"./node_modules/cordova-sites-easy-sync/dist/client/ClientFileMedium.js\");\nclass SyncJob_old {\n constructor() {\n this._syncedModels = {};\n this._modelNames = [];\n this._relationshipModels = {};\n this._lastSyncDates = {};\n this._keyedModelClasses = {};\n this._savePromises = [];\n }\n syncInBackgroundIfDataExists(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let copiedQuery = shared_1.JsonHelper.deepCopy(queries);\n let requestQueries = this._buildRequestQuery(copiedQuery);\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n this._syncPromise = this.sync(queries);\n if (Object[\"values\"](this._lastSyncDates).some(lastSync => {\n return lastSync[\"getLastSynced\"]() === 0;\n })) {\n yield this._syncPromise;\n }\n });\n }\n getSyncPromise() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._syncPromise;\n });\n }\n sync(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let requestQueries = this._buildRequestQuery(queries);\n if (shared_1.Helper.isNull(this._lastSyncDates)) {\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n }\n let saveResults = yield this._doRuns(requestQueries);\n yield this._handleRelations();\n //Save new lastSync models\n let lastSyncPromises = [];\n Object.keys(this._lastSyncDates).forEach(model => {\n lastSyncPromises.push(this._lastSyncDates[model].save());\n });\n yield Promise.all(lastSyncPromises);\n //Calculate final result and give it back\n let finalRes = {};\n saveResults.forEach(res => {\n if (res) {\n if (!finalRes[res.model]) {\n finalRes[res.model] = {\n \"deleted\": [],\n \"changed\": []\n };\n }\n if (res.deleted) {\n finalRes[res.model][\"deleted\"] = finalRes[res.model][\"deleted\"].concat(res.entities);\n }\n else {\n finalRes[res.model][\"changed\"] = finalRes[res.model][\"changed\"].concat(res.entities);\n }\n }\n });\n if (finalRes[\"FileMedium\"] && finalRes[\"FileMedium\"][\"changed\"]) {\n yield ClientFileMedium_1.ClientFileMedium._handleImages(finalRes[\"FileMedium\"][\"changed\"]);\n }\n return finalRes;\n });\n }\n _doRuns(requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Initialize some variables\n let newLastSynced = null;\n let response = null;\n let offset = 0;\n let shouldAskAgain = false;\n //Ask for next run until no more runs needed\n do {\n shouldAskAgain = false;\n response = yield SyncJob_old._fetchModel(requestQueries, offset);\n offset = response[\"nextOffset\"];\n //Update newLastSynced\n if (shared_1.Helper.isNull(newLastSynced)) {\n newLastSynced = parseInt(response[\"newLastSynced\"]);\n Object.keys(this._lastSyncDates).forEach(key => {\n this._lastSyncDates[key].setLastSynced(newLastSynced);\n });\n }\n //create new request query\n let newRequestQueries = [];\n response.results.forEach((res, i) => {\n if (this._extractEntities(res)) {\n shouldAskAgain = true;\n newRequestQueries.push(requestQueries[i]);\n }\n });\n requestQueries = newRequestQueries;\n } while (shouldAskAgain);\n return Promise.all(this._savePromises);\n });\n }\n _handleRelations() {\n return __awaiter(this, void 0, void 0, function* () {\n let mergedRelations = {};\n let relationPromises = [];\n Object.keys(this._relationshipModels).forEach(modelClassName => {\n let relationDefinitions = this._keyedModelClasses[modelClassName].getRelationDefinitions();\n Object.keys(this._relationshipModels[modelClassName]).forEach(id => {\n let entity = this._relationshipModels[modelClassName][id][\"entity\"];\n let relations = this._relationshipModels[modelClassName][id][\"relations\"];\n let entityRelationPromises = [];\n Object.keys(relations).forEach(relation => {\n //foreach relation load other models and save them here\n let valuePromise = this._handleSingleRelation(relationDefinitions, relation, relations, mergedRelations, entity);\n entityRelationPromises.push(valuePromise.then(value => {\n entity[relation] = value;\n }));\n });\n //Save after all relationships has been set\n relationPromises.push(Promise.all(entityRelationPromises).then(() => {\n return entity.save(true);\n }));\n });\n });\n //Wait for relation-promises\n yield Promise.all(relationPromises);\n yield shared_1.Helper.asyncForEach(Object.keys(mergedRelations), (model) => __awaiter(this, void 0, void 0, function* () {\n let entities = shared_1.Helper.arrayToObject(yield this._keyedModelClasses[model].findByIds(Object.keys(mergedRelations[model]), this._keyedModelClasses[model].getRelations()), e => e.id);\n Object.keys(mergedRelations[model]).forEach(id => {\n if (entities[id]) {\n Object.keys(mergedRelations[model][id]).forEach(relation => {\n if (Array.isArray(mergedRelations[model][id][relation])) {\n entities[id][relation] = shared_1.Helper.nonNull(entities[id][relation], []);\n entities[id][relation].push.apply(entities[id][relation], mergedRelations[model][id][relation]);\n }\n else {\n entities[id][relation] = mergedRelations[model][id][relation];\n }\n });\n }\n });\n yield EasySyncClientDb_1.EasySyncClientDb.getInstance().saveEntity(Object.values(entities));\n }), true);\n });\n }\n _handleSingleRelation(relationDefinitions, relationName, relations, mergedRelations, entity) {\n let valuePromise = Promise.resolve(undefined);\n let target = relationDefinitions[relationName][\"target\"];\n let shouldSync = (relationDefinitions[relationName].sync !== false);\n //is relation a *-to-many relation?\n if (Array.isArray(relations[relationName])) {\n if (shouldSync || relations[relationName].every(id => !shared_1.Helper.isSet(this._syncedModels, target, id))) {\n valuePromise = this._keyedModelClasses[target].findByIds(relations[relationName]);\n }\n else {\n let targetRelationDefinition = this._keyedModelClasses[target].getRelationDefinitions()[relationDefinitions[relationName][\"inverseSide\"]];\n relations[relationName].filter(id => !shared_1.Helper.isSet(this._relationshipModels, target, id)).forEach(id => {\n mergedRelations[target] = shared_1.Helper.nonNull(mergedRelations[target], {});\n mergedRelations[target][id] = shared_1.Helper.nonNull(mergedRelations[target][id], {});\n let otherRelationValue = null;\n if (targetRelationDefinition.type === \"many-to-many\" || targetRelationDefinition.type === \"one-to-many\") {\n otherRelationValue = shared_1.Helper.nonNull(mergedRelations[target][id][relationDefinitions[relationName][\"inverseSide\"]], []);\n otherRelationValue.push(entity);\n }\n else {\n otherRelationValue = entity;\n }\n mergedRelations[target][id][relationDefinitions[relationName][\"inverseSide\"]] = otherRelationValue;\n });\n }\n }\n else if (shouldSync || !shared_1.Helper.isSet(this._syncedModels, target, relations[relationName])) {\n valuePromise = this._keyedModelClasses[target].findById(relations[relationName]);\n }\n return valuePromise;\n }\n /**\n * Extract the Entities and saves them(?) for one model\n *\n * @param modelRes\n * @private\n */\n _extractEntities(modelRes) {\n if (!modelRes) {\n return false;\n }\n let shouldAskAgain = false;\n let modelClass = this._keyedModelClasses[modelRes[\"model\"]];\n let modelName = modelClass.getSchemaName();\n let deletedModelsIds = [];\n let changedModels = [];\n //split result into deleted and changed/new entities\n modelRes[\"entities\"].forEach(entity => {\n if (entity.deleted) {\n deletedModelsIds.push(entity.id);\n }\n else {\n changedModels.push(entity);\n }\n });\n this._syncedModels[modelName] = shared_1.Helper.nonNull(this._syncedModels[modelName], {});\n //convert json to entity and save it\n this._savePromises.push(modelClass._fromJson(changedModels).then((changedEntities) => __awaiter(this, void 0, void 0, function* () {\n let relations = modelClass.getRelationDefinitions();\n let newIds = [];\n changedEntities.forEach(entity => {\n this._syncedModels[modelName][entity.id] = entity;\n newIds.push(entity.id);\n Object.keys(relations).forEach(relation => {\n if (entity[relation]) {\n this._addRelation(modelName, entity, relation);\n //clear relation\n entity[relation] = null;\n }\n });\n });\n //Handle partial Models (different ids on client than server)\n if (modelClass.prototype instanceof EasySyncPartialModel_1.EasySyncPartialModel) {\n let oldObjects = yield modelClass.findByIds(newIds);\n let keyedEntities = shared_1.Helper.arrayToObject(changedEntities, changedEntities => changedEntities.id);\n oldObjects.forEach(old => {\n keyedEntities[old.id].clientId = old.clientId;\n });\n }\n return EasySyncClientDb_1.EasySyncClientDb.getInstance().saveEntity(changedEntities).then(res => {\n return {\n \"model\": modelName,\n \"entities\": res,\n \"deleted\": false\n };\n }).catch(e => {\n console.error(e);\n return Promise.reject(e);\n });\n })));\n //Deletion of the entities\n this._savePromises.push(EasySyncClientDb_1.EasySyncClientDb.getInstance().deleteEntity(deletedModelsIds, modelClass).then(res => {\n return {\n \"model\": modelName,\n \"entities\": res,\n \"deleted\": true\n };\n }).catch(e => {\n console.error(e);\n return Promise.reject(e);\n }));\n if (modelRes.shouldAskAgain) {\n shouldAskAgain = true;\n }\n return shouldAskAgain;\n }\n _buildRequestQuery(queries) {\n let requestQueries = [];\n //initializing query\n queries.forEach(query => {\n if (query.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel) {\n query = {\n model: query,\n where: {}\n };\n }\n query.model = query.model.getSchemaName();\n this._modelNames.push(query.model);\n requestQueries.push(query);\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNotNull(this._lastSyncDates[key])) {\n query[\"lastSynced\"] = this._lastSyncDates[key].getLastSynced();\n }\n });\n return requestQueries;\n }\n _getLastSyncModels(modelNames, requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Load syncModels\n let lastSyncModelsArray = yield LastSyncDates_1.LastSyncDates.find({\n \"model\": typeorm.In(modelNames)\n });\n let lastSyncDates = shared_1.Helper.arrayToObject(lastSyncModelsArray, model => \"\" + model.getModel() + JSON.stringify(model.where));\n requestQueries.forEach(query => {\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNull(lastSyncDates[key])) {\n let lastSyncDate = new LastSyncDates_1.LastSyncDates();\n lastSyncDate.setModel(query.model);\n lastSyncDate.where = query.where;\n lastSyncDate.setLastSynced(0);\n lastSyncDates[key] = lastSyncDate;\n }\n query[\"lastSynced\"] = lastSyncDates[key].getLastSynced();\n });\n return lastSyncDates;\n });\n }\n _addRelation(modelName, entity, relation) {\n this._relationshipModels[modelName] = shared_1.Helper.nonNull(this._relationshipModels[modelName], {});\n this._relationshipModels[modelName][entity.id] = shared_1.Helper.nonNull(this._relationshipModels[modelName][entity.id], {});\n this._relationshipModels[modelName][entity.id][\"entity\"] = entity;\n this._relationshipModels[modelName][entity.id][\"relations\"] = shared_1.Helper.nonNull(this._relationshipModels[modelName][entity.id][\"relations\"], {});\n this._relationshipModels[modelName][entity.id][\"relations\"][relation] = entity[relation];\n return this._relationshipModels;\n }\n static _fetchModel(query, offset) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield client_1.DataManager.load(SyncJob_old.SYNC_PATH_PREFIX +\n client_1.DataManager.buildQuery({\n \"queries\": JSON.stringify(query),\n \"offset\": offset\n }));\n });\n }\n}\nexports.SyncJob_old = SyncJob_old;\nSyncJob_old.SYNC_PATH_PREFIX = \"sync\";\n//# sourceMappingURL=SyncJob_old.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/SyncJob_old.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/editEntitySite/ModifyEntitySite.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/editEntitySite/ModifyEntitySite.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModifyEntitySite = void 0;\nconst MenuSite_1 = __webpack_require__(/*! cordova-sites/dist/client/js/Context/MenuSite */ \"./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js\");\nconst Form_1 = __webpack_require__(/*! cordova-sites/dist/client/js/Form */ \"./node_modules/cordova-sites/dist/client/js/Form.js\");\nconst js_helper_1 = __webpack_require__(/*! js-helper */ \"./node_modules/js-helper/dist/shared.js\");\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ../../shared/EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nclass ModifyEntitySite extends MenuSite_1.MenuSite {\n constructor(siteManager, view, model, menuTemplate) {\n super(siteManager, view, menuTemplate);\n this._formSelector = \".entity-form\";\n this._ckEditorConfig = {\n \".editor\": {\n toolbar: ['bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote'],\n removePlugins: [\"Heading\", \"Image\", \"ImageCaption\", \"ImageStyle\", \"ImageToolbar\", \"ImageUpload\", \"Table\", \"TableToolbar\", \"MediaEmbed\", \"CKFinderUploadAdapter\"],\n language: \"de\"\n }\n };\n this._entity = null;\n this._model = model;\n }\n getEntityFromParameters(constructParameters) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!(this._model.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel)) {\n throw {\n \"error\": \"wrong class given! Expected EasySyncBaseModel, given \" + this._model.name\n };\n }\n let entity = null;\n if (js_helper_1.Helper.isSet(constructParameters, \"id\")) {\n entity = this._model.findById(constructParameters[\"id\"], this._model.getRelations());\n }\n if (js_helper_1.Helper.isNull(entity)) {\n entity = new this._model();\n }\n return entity;\n });\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n let entity = yield this.getEntityFromParameters(constructParameters);\n if (entity !== null) {\n this.setEntity(entity);\n }\n return res;\n });\n }\n setEntity(entity) {\n return __awaiter(this, void 0, void 0, function* () {\n this._entity = entity;\n yield this._viewLoadedPromise;\n let values = yield this.dehydrate(this._entity);\n if (js_helper_1.Helper.isNotNull(values)) {\n yield this._form.setValues(values);\n }\n });\n }\n hydrate(values, entity) {\n return __awaiter(this, void 0, void 0, function* () {\n let schemaDefinition = entity.constructor.getSchemaDefinition();\n Object.keys(schemaDefinition.columns).forEach(column => {\n if (js_helper_1.Helper.isSet(values, column)) {\n entity[column] = values[column];\n }\n });\n return entity;\n });\n }\n dehydrate(entity) {\n return __awaiter(this, void 0, void 0, function* () {\n let values = {};\n let schemaDefinition = entity.constructor.getSchemaDefinition();\n Object.keys(schemaDefinition.columns).forEach(column => {\n if (js_helper_1.Helper.isSet(entity, column)) {\n values[column] = entity[column];\n }\n });\n return values;\n });\n }\n validate(values, form) {\n return __awaiter(this, void 0, void 0, function* () {\n return true;\n });\n }\n saveListener() {\n this.finish();\n }\n save(values) {\n return __awaiter(this, void 0, void 0, function* () {\n let entity = yield this.hydrate(values, this._entity);\n yield entity.save();\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this._form = new Form_1.Form(this.findBy(this._formSelector), (values) => __awaiter(this, void 0, void 0, function* () {\n this.showLoadingSymbol();\n try {\n yield this.save(values);\n this.saveListener();\n }\n catch (e) {\n console.error(e);\n this._form.setErrors({ \"error\": e.message });\n }\n finally {\n this.removeLoadingSymbol();\n }\n }));\n if (js_helper_1.Helper.isNotNull(window[\"CKEditor\"])) {\n Object.keys(this._ckEditorConfig).forEach(selector => {\n this.findBy(selector, true).forEach((e) => __awaiter(this, void 0, void 0, function* () {\n this._form.addEditor(yield CKEditor.create(e, this._ckEditorConfig[selector]));\n }));\n });\n }\n this._form.addValidator((values) => __awaiter(this, void 0, void 0, function* () {\n return yield this.validate(values, this._form);\n }));\n return res;\n });\n }\n}\nexports.ModifyEntitySite = ModifyEntitySite;\n//# sourceMappingURL=ModifyEntitySite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/editEntitySite/ModifyEntitySite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/client/migration/SetupEasySync.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/client/migration/SetupEasySync.js ***! - \*************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetupEasySync1000000000500 = void 0;\nconst typeorm_1 = __webpack_require__(/*! typeorm */ \"./node_modules/typeorm/browser/index.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nclass SetupEasySync1000000000500 {\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield queryRunner.dropTable(\"last_sync_dates\", true);\n yield this._addLastSyncDates(queryRunner);\n });\n }\n _addLastSyncDates(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let lastSyncDatesTable = new typeorm_1.Table({\n name: \"last_sync_dates\",\n columns: [\n {\n name: \"id\",\n type: \"Integer\",\n isPrimary: true,\n isGenerated: true,\n generationStrategy: \"increment\",\n },\n {\n name: \"model\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isNullable: true\n },\n {\n name: \"lastSynced\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n isNullable: true\n },\n {\n name: \"where\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.TEXT,\n }\n ]\n });\n return yield queryRunner.createTable(lastSyncDatesTable, true);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\nexports.SetupEasySync1000000000500 = SetupEasySync1000000000500;\n//# sourceMappingURL=SetupEasySync.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/client/migration/SetupEasySync.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/shared.js": -/*!*************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/shared.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./shared/EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/EasySyncPartialModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncPartialModel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/FileMedium */ \"./node_modules/cordova-sites-easy-sync/dist/shared/FileMedium.js\"), exports);\n//# sourceMappingURL=shared.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/shared.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js ***! - \*******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EasySyncBaseModel = void 0;\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\nclass EasySyncBaseModel extends cordova_sites_database_1.BaseModel {\n constructor() {\n super();\n this._delegate = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n this.version = 1;\n this.deleted = false;\n }\n toJSON(includeFull) {\n let relations = this.constructor.getRelationDefinitions();\n let columns = this.constructor.getColumnDefinitions();\n let obj = {};\n Object.keys(columns).forEach(attribute => {\n obj[attribute] = this[attribute];\n });\n Object.keys(relations).forEach(relationName => {\n if (includeFull === true) {\n obj[relationName] = this[relationName];\n }\n else {\n if (Array.isArray(this[relationName])) {\n let ids = [];\n this[relationName].forEach(child => (child && ids.push(child.id)));\n obj[relationName] = ids;\n }\n else if (this[relationName] instanceof cordova_sites_database_1.BaseModel) {\n obj[relationName] = this[relationName].id;\n }\n else {\n obj[relationName] = null;\n }\n }\n });\n return obj;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"createdAt\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE\n };\n columns[\"updatedAt\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE\n };\n columns[\"version\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n };\n columns[\"deleted\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN\n };\n return columns;\n }\n static _fromJson(jsonObjects, entities, includeRelations) {\n return __awaiter(this, void 0, void 0, function* () {\n entities = entities || [];\n let isArray = Array.isArray(jsonObjects);\n if (!isArray) {\n jsonObjects = [jsonObjects];\n }\n if (!Array.isArray(entities)) {\n entities = [entities];\n }\n let loadPromises = [];\n let addLoadPromises = [];\n jsonObjects.forEach((jsonObject, index) => {\n addLoadPromises.push(new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let entity = null;\n if (entities.length > index) {\n entity = entities[index];\n }\n else if (shared_1.Helper.isNotNull(jsonObject.id)) {\n entity = yield this.findById(jsonObject.id, this.getRelations());\n }\n if (entity === null) {\n entity = new this();\n }\n if (!jsonObject.version && jsonObject.version !== 0) {\n jsonObject.version = 1;\n }\n entities[index] = Object.assign(entity, jsonObject);\n this._handleColumns(entities[index]);\n this._handleRelations(entities[index], includeRelations, loadPromises);\n resolve();\n })));\n });\n //addLoadPromises adds other loadPromises. Therefore wait until done, then wait for other\n yield Promise.all(addLoadPromises);\n yield Promise.all(loadPromises);\n if (!isArray) {\n entities = (entities.length > 0) ? entities[0] : null;\n }\n return entities;\n });\n }\n static _handleRelations(entity, includeRelations, loadPromises) {\n let relations = this.getRelationDefinitions();\n Object.keys(relations).forEach(relationName => {\n let values = entity[relationName];\n if (typeof values === \"number\" || (Array.isArray(values) && values.length >= 1 && typeof values[0] === \"number\")) {\n if (includeRelations === true) {\n let loadPromise = null;\n if (Array.isArray(values)) {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findByIds(values);\n }\n else {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findById(values);\n }\n loadPromises.push(loadPromise.then(value => {\n entity[relationName] = value;\n }));\n }\n else if (includeRelations === false) {\n if (relations[relationName].type === \"many-to-many\" || relations[relationName].type === \"one-to-many\") {\n entity[relationName] = [];\n }\n else {\n entity[relationName] = null;\n }\n }\n }\n });\n }\n static _handleColumns(entity) {\n let schemaDefinition = this.getSchemaDefinition();\n let columns = schemaDefinition[\"columns\"];\n Object.keys(columns).forEach(columnName => {\n if (columns[columnName].escapeHTML) {\n entity[columnName] = shared_1.XSSHelper.escapeHTML(entity[columnName]);\n }\n if (columns[columnName].escapeJS) {\n entity[columnName] = shared_1.XSSHelper.escapeJS(entity[columnName]);\n }\n });\n }\n static prepareSync(entities) {\n return entities;\n }\n}\nexports.EasySyncBaseModel = EasySyncBaseModel;\nEasySyncBaseModel.delegateClass = null;\nEasySyncBaseModel.CAN_BE_SYNCED = true;\n//# sourceMappingURL=EasySyncBaseModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncPartialModel.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncPartialModel.js ***! - \**********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EasySyncPartialModel = void 0;\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ./EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nconst _typeorm = __webpack_require__(/*! typeorm */ \"./node_modules/typeorm/browser/index.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst XSSHelper_1 = __webpack_require__(/*! js-helper/dist/shared/XSSHelper */ \"./node_modules/js-helper/dist/shared/XSSHelper.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nlet typeorm = _typeorm;\n// if (typeorm.default) {\n// typeorm = typeorm.default;\n// }\nclass EasySyncPartialModel extends EasySyncBaseModel_1.EasySyncBaseModel {\n static findByIds(ids, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.find({\n \"id\": typeorm.In(ids)\n }, null, null, null, relations);\n });\n }\n static findById(id, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.findOne({\n \"id\": id\n }, null, null, relations);\n });\n }\n static findByClientId(id, relations) {\n const _super = Object.create(null, {\n findById: { get: () => super.findById }\n });\n return __awaiter(this, void 0, void 0, function* () {\n return _super.findById.call(this, id, relations);\n });\n }\n static findByClientIds(ids, relations) {\n const _super = Object.create(null, {\n findById: { get: () => super.findById }\n });\n return __awaiter(this, void 0, void 0, function* () {\n return _super.findById.call(this, ids, relations);\n });\n }\n toJSON(includeFull) {\n let relations = this.constructor.getRelationDefinitions();\n let columns = this.constructor.getColumnDefinitions();\n let obj = {};\n Object.keys(columns).forEach(attribute => {\n if (attribute !== \"clientId\") {\n obj[attribute] = this[attribute];\n }\n });\n Object.keys(relations).forEach(relationName => {\n if (includeFull === true) {\n obj[relationName] = this[relationName];\n }\n else {\n if (Array.isArray(this[relationName])) {\n let ids = [];\n this[relationName].forEach(child => (child && ids.push(child.id)));\n obj[relationName] = ids;\n }\n else if (this[relationName] instanceof cordova_sites_database_1.BaseModel) {\n obj[relationName] = this[relationName].id;\n }\n else {\n obj[relationName] = null;\n }\n }\n });\n return obj;\n }\n static _fromJson(jsonObjects, entities, includeRelations) {\n return __awaiter(this, void 0, void 0, function* () {\n entities = entities || [];\n let isArray = Array.isArray(jsonObjects);\n if (!isArray) {\n jsonObjects = [jsonObjects];\n }\n if (!Array.isArray(entities)) {\n entities = [entities];\n }\n let loadPromises = [];\n let addLoadPromises = [];\n jsonObjects.forEach((jsonObject, index) => {\n addLoadPromises.push(new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let entity = null;\n if (entities.length > index) {\n entity = entities[index];\n }\n else if (Helper_1.Helper.isNotNull(jsonObject.id)) {\n entity = yield this.findById(jsonObject.id, this.getRelations());\n }\n if (entity === null) {\n entity = new this();\n }\n if (!jsonObject.version) {\n jsonObject.version = 1;\n }\n entities[index] = Object.assign(entity, jsonObject);\n this._handleColumns_(entities[index]);\n this._handleRelations_(entities[index], includeRelations, loadPromises);\n resolve();\n })));\n });\n //addLoadPromises adds other loadPromises. Therefore wait until done, then wait for other\n yield Promise.all(addLoadPromises);\n yield Promise.all(loadPromises);\n if (!isArray) {\n entities = (entities.length > 0) ? entities[0] : null;\n }\n return entities;\n });\n }\n static _handleRelations_(entity, includeRelations, loadPromises) {\n let relations = this.getRelationDefinitions();\n Object.keys(relations).forEach(relationName => {\n let values = entity[relationName];\n if (typeof values === \"number\" || (Array.isArray(values) && values.length >= 1 && typeof values[0] === \"number\")) {\n if (includeRelations === true) {\n let loadPromise = null;\n if (Array.isArray(values)) {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findByIds(values);\n }\n else {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findById(values);\n }\n loadPromises.push(loadPromise.then(value => {\n entity[relationName] = value;\n }));\n }\n else if (includeRelations === false) {\n if (relations[relationName].type === \"many-to-many\" || relations[relationName].type === \"one-to-many\") {\n entity[relationName] = [];\n }\n else {\n entity[relationName] = null;\n }\n }\n }\n });\n }\n static _handleColumns_(entity) {\n let schemaDefinition = this.getSchemaDefinition();\n let columns = schemaDefinition[\"columns\"];\n Object.keys(columns).forEach(columnName => {\n if (columns[columnName].escapeHTML) {\n entity[columnName] = XSSHelper_1.XSSHelper.escapeHTML(entity[columnName]);\n }\n if (columns[columnName].escapeJS) {\n entity[columnName] = XSSHelper_1.XSSHelper.escapeJS(entity[columnName]);\n }\n });\n }\n}\nexports.EasySyncPartialModel = EasySyncPartialModel;\nEasySyncPartialModel.CAN_BE_SYNCED = true;\n//# sourceMappingURL=EasySyncPartialModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncPartialModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-easy-sync/dist/shared/FileMedium.js": -/*!************************************************************************!*\ - !*** ./node_modules/cordova-sites-easy-sync/dist/shared/FileMedium.js ***! - \************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileMedium = void 0;\nconst EasySyncBaseModel_1 = __webpack_require__(/*! ./EasySyncBaseModel */ \"./node_modules/cordova-sites-easy-sync/dist/shared/EasySyncBaseModel.js\");\nconst BaseDatabase_1 = __webpack_require__(/*! cordova-sites-database/dist/BaseDatabase */ \"./node_modules/cordova-sites-database/dist/BaseDatabase.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass FileMedium extends EasySyncBaseModel_1.EasySyncBaseModel {\n constructor() {\n super(...arguments);\n this.saveOffline = true;\n this._isDownloaded = true;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"src\"] = BaseDatabase_1.BaseDatabase.TYPES.MEDIUMTEXT;\n columns[\"saveOffline\"] = { type: BaseDatabase_1.BaseDatabase.TYPES.BOOLEAN, default: 1 };\n return columns;\n }\n getServerUrl(appendDate) {\n appendDate = Helper_1.Helper.nonNull(appendDate, true);\n if (!this.src.startsWith(\"http\") && !this.src.startsWith(\"//\") && !this.src.startsWith(\"data\")) {\n let path = FileMedium.PUBLIC_PATH + this.src;\n if (appendDate) {\n path += \"?t=\" + new Date(this.updatedAt).getTime();\n }\n return path;\n }\n return this.src;\n }\n getUrl() {\n if (device.platform !== \"browser\" && this.saveOffline && this._isDownloaded && Helper_1.Helper.isNotNull(this.id) && !this.src.startsWith(\"data\") && !this.src.startsWith(\"http\")) {\n return \"cdvfile://localhost/persistent/\" + this.src;\n }\n else {\n return this.getServerUrl();\n }\n }\n toString() {\n console.warn(\"to string called on FileMedium. Only for dependency. Please look inside your sourcecode\");\n return this.getUrl();\n }\n}\nexports.FileMedium = FileMedium;\nFileMedium.PUBLIC_PATH = \"./\";\nFileMedium.SCHEMA_NAME = \"FileMedium\";\nBaseDatabase_1.BaseDatabase.addModel(FileMedium);\n//# sourceMappingURL=FileMedium.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-easy-sync/dist/shared/FileMedium.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client.js": -/*!*******************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./client/js/Context/UserSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Dialog/SelectUserDialog */ \"./node_modules/cordova-sites-user-management/dist/client/js/Dialog/SelectUserDialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/MenuAction/StartUserSiteMenuAction */ \"./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/StartUserSiteMenuAction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/MenuAction/UserMenuAction */ \"./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/UserMenuAction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/OfflineUserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/OfflineUserManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Site/ChangeUserSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/ChangeUserSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Site/ForgotPasswordSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/ForgotPasswordSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Site/LoginSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/LoginSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Site/NotAllowedSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/NotAllowedSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Site/RegistrationSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/RegistrationSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/UserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/translationInit */ \"./node_modules/cordova-sites-user-management/dist/client/js/translationInit.js\"), exports);\n//# sourceMappingURL=client.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/html/dialog/selectUserDialog.html": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/html/dialog/selectUserDialog.html ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/selectUserDialog.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/html/dialog/selectUserDialog.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/html/sites/changeUserSite.html": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/html/sites/changeUserSite.html ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/changeUserSite.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/changeUserSite.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/html/sites/forgotPasswordSite.html": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/html/sites/forgotPasswordSite.html ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/forgotPasswordSite.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/forgotPasswordSite.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/html/sites/loginSite.html": -/*!******************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/html/sites/loginSite.html ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/loginSite.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/loginSite.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/html/sites/notAllowedSite.html": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/html/sites/notAllowedSite.html ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/notAllowedSite.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/notAllowedSite.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/html/sites/registrationSite.html": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/html/sites/registrationSite.html ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/registrationSite.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/registrationSite.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js ***! - \***************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserSite = void 0;\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst UserManager_1 = __webpack_require__(/*! ../UserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js\");\nconst LoginSite_1 = __webpack_require__(/*! ../Site/LoginSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/LoginSite.js\");\nconst NotAllowedSite_1 = __webpack_require__(/*! ../Site/NotAllowedSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/NotAllowedSite.js\");\nclass UserSite extends client_1.DelegateSite {\n constructor(site, access, allowOfflineAccess) {\n super(site);\n this._access = access;\n this._allowOfflineAccess = shared_1.Helper.nonNull(allowOfflineAccess, false);\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield UserManager_1.UserManager.getInstance().waitForGetMe();\n if (yield this._checkRights()) {\n let res = yield _super.onConstruct.call(this, constructParameters);\n UserManager_1.UserManager.getInstance().addLoginChangeCallback(() => __awaiter(this, void 0, void 0, function* () {\n yield this._checkRights();\n }), false);\n return res;\n }\n });\n }\n _checkRights() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!(UserManager_1.UserManager.getInstance().hasAccess(this._access) || (this._allowOfflineAccess && (yield UserManager_1.UserManager.getInstance().hasOfflineAccess(this._access))))) {\n // if (this.isShowing() && !this.isDestroying()) {\n // await this.startSite(NotAllowedSite);\n // }\n if (UserManager_1.UserManager.getInstance().isOnline() && !UserManager_1.UserManager.getInstance().isLoggedIn() && !(this._site instanceof LoginSite_1.LoginSite)) {\n this.startSite(LoginSite_1.LoginSite, {\n deepLink: this._site._siteManager.getDeepLinkFor(this._site),\n args: this._site.getParameters()\n });\n }\n else if (this._site._siteManager.getCurrentSite() === this._site && !this.isDestroying()) {\n new client_1.Toast(\"wrong rights\").show();\n yield this.startSite(NotAllowedSite_1.NotAllowedSite);\n }\n if (!this.isDestroying()) {\n yield this.finish();\n }\n return false;\n }\n return true;\n });\n }\n onStart(args) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (yield this._checkRights()) {\n yield _super.onStart.call(this, args);\n }\n });\n }\n}\nexports.UserSite = UserSite;\n//# sourceMappingURL=UserSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/Dialog/SelectUserDialog.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/Dialog/SelectUserDialog.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelectUserDialog = void 0;\nconst Dialog_1 = __webpack_require__(/*! cordova-sites/dist/client/js/Dialog/Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\");\nconst ViewInflater_1 = __webpack_require__(/*! cordova-sites/dist/client/js/ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst DataManager_1 = __webpack_require__(/*! cordova-sites/dist/client/js/DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\nconst ViewHelper_1 = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst view = __webpack_require__(/*! ../../html/dialog/selectUserDialog.html */ \"./node_modules/cordova-sites-user-management/dist/client/html/dialog/selectUserDialog.html\");\nclass SelectUserDialog extends Dialog_1.Dialog {\n constructor() {\n super(ViewInflater_1.ViewInflater.getInstance().load(view).then((view) => __awaiter(this, void 0, void 0, function* () {\n this._loadUserTimeout = null;\n this._usernameInput =\n view.querySelector(\"#username-input\");\n this._usernameInput.addEventListener(\"keydown\", () => {\n clearTimeout(this._loadUserTimeout);\n this._loadUserTimeout = setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n yield this._loadUsers(this._usernameInput.value);\n }), 500);\n });\n this._userContainer = view.querySelector(\"#user-container\");\n this._userTemplate = view.querySelector(\"#user-template\");\n this._userTemplate.remove();\n this._userTemplate.removeAttribute(\"id\");\n this._loadUsers();\n return view;\n })), \"select user\");\n }\n _loadUsers(username) {\n return __awaiter(this, void 0, void 0, function* () {\n debugger;\n let res = yield DataManager_1.DataManager.load(\"user/listUsers\" + DataManager_1.DataManager.buildQuery({ username: Helper_1.Helper.nonNull(username, \"\") }));\n if (res[\"success\"]) {\n ViewHelper_1.ViewHelper.removeAllChildren(this._userContainer);\n let users = res[\"data\"];\n users.forEach(user => {\n let userElement = this._userTemplate.cloneNode(true);\n userElement.querySelector(\".name\").innerText = user.username;\n userElement.addEventListener(\"click\", () => {\n this._result = user;\n this.close();\n });\n this._userContainer.appendChild(userElement);\n });\n }\n });\n }\n}\nexports.SelectUserDialog = SelectUserDialog;\n//# sourceMappingURL=SelectUserDialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/Dialog/SelectUserDialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/StartUserSiteMenuAction.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/StartUserSiteMenuAction.js ***! - \*********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StartUserSiteMenuAction = void 0;\nconst UserMenuAction_1 = __webpack_require__(/*! ./UserMenuAction */ \"./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/UserMenuAction.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nclass StartUserSiteMenuAction extends UserMenuAction_1.UserMenuAction {\n constructor(name, access, site, showFor, order, icon) {\n super(name, access, () => {\n if (client_1.StartSiteMenuAction._app) {\n if (Array.isArray(site) && site.length >= 2) {\n client_1.StartSiteMenuAction._app.startSite(site[0], site[1]);\n }\n else {\n client_1.StartSiteMenuAction._app.startSite(site);\n }\n }\n }, showFor, order, icon);\n }\n}\nexports.StartUserSiteMenuAction = StartUserSiteMenuAction;\n//# sourceMappingURL=StartUserSiteMenuAction.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/StartUserSiteMenuAction.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/UserMenuAction.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/UserMenuAction.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserMenuAction = void 0;\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst UserManager_1 = __webpack_require__(/*! ../UserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass UserMenuAction extends client_1.MenuAction {\n constructor(name, access, action, showFor, order, icon) {\n super(name, action, showFor, order, icon);\n this._access = access;\n this._loginChangedCallbackId = UserManager_1.UserManager.getInstance().addLoginChangeCallback(() => {\n this.redraw();\n });\n }\n isVisible() {\n return (super.isVisible() && UserManager_1.UserManager.getInstance().hasAccess(this._access));\n }\n isActivated() {\n return (super.isActivated() && UserManager_1.UserManager.getInstance().hasAccess(this._access));\n }\n copy(action) {\n let copiedAction = Helper_1.Helper.nonNull(action, new UserMenuAction());\n copiedAction._access = this._access;\n return super.copy(copiedAction);\n }\n}\nexports.UserMenuAction = UserMenuAction;\n//# sourceMappingURL=UserMenuAction.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/UserMenuAction.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/OfflineUserManager.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/OfflineUserManager.js ***! - \*****************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OfflineUserManager = void 0;\nconst client_1 = __webpack_require__(/*! cordova-sites-easy-sync/dist/client */ \"./node_modules/cordova-sites-easy-sync/dist/client.js\");\nconst client_2 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst UserManager_1 = __webpack_require__(/*! ./UserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js\");\nconst Role_1 = __webpack_require__(/*! ../../shared/v1/model/Role */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/Role.js\");\nconst User_1 = __webpack_require__(/*! ../../shared/v1/model/User */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass OfflineUserManager extends UserManager_1.UserManager {\n constructor() {\n super();\n this._userData = {\n id: null,\n loggedIn: false,\n online: true,\n username: null,\n email: null,\n accesses: OfflineUserManager.LOGGED_OUT_ACCESSES,\n };\n }\n _doGetMe() {\n return __awaiter(this, void 0, void 0, function* () {\n let userId = yield client_2.NativeStoragePromise.getItem(\"user-manager-user-id\");\n if (Helper_1.Helper.isNotNull(userId)) {\n let user = yield User_1.User.findById(userId, User_1.User.getRelations());\n if (Helper_1.Helper.isNotNull(user) && user.activated && !user.blocked) {\n yield this._handleLoginFromUser(user);\n }\n }\n return this._userData;\n });\n }\n _handleLoginFromUser(user) {\n return __awaiter(this, void 0, void 0, function* () {\n let accesses = [];\n let roles = user.roles;\n let roleIds = [];\n roles.forEach(role => {\n roleIds.push(role.id);\n });\n roles = yield Role_1.Role.findByIds(roleIds, [\"accesses\"]);\n yield Helper_1.Helper.asyncForEach(roles, (role) => __awaiter(this, void 0, void 0, function* () {\n accesses.push(...yield this._getAccessesFromRole(role));\n }));\n let accessNames = [];\n accesses.forEach(access => {\n accessNames.push(access.name);\n });\n this._userData = {\n id: user.id,\n loggedIn: true,\n online: true,\n username: user.username,\n email: user.email,\n accesses: accessNames,\n };\n });\n }\n _doLogin(email, password, saveLogin) {\n return __awaiter(this, void 0, void 0, function* () {\n let user = yield User_1.User.findOne({\n \"email\": email,\n \"password\": this._hashPassword(password),\n \"activated\": true,\n \"blocked\": false,\n }, undefined, undefined, User_1.User.getRelations());\n if (user) {\n yield this._handleLoginFromUser(user);\n if (saveLogin) {\n yield client_2.NativeStoragePromise.setItem(\"user-manager-user-id\", user.id);\n }\n return true;\n }\n return false;\n });\n }\n _doLogout() {\n return __awaiter(this, void 0, void 0, function* () {\n this._userData = {\n id: null,\n loggedIn: false,\n online: true,\n username: null,\n email: null,\n accesses: OfflineUserManager.LOGGED_OUT_ACCESSES,\n };\n yield client_2.NativeStoragePromise.remove(\"user-manager-user-id\");\n return false;\n });\n }\n _getAccessesFromRole(role) {\n return __awaiter(this, void 0, void 0, function* () {\n let accesses = role.accesses;\n let repo = yield client_1.EasySyncClientDb.getInstance()._getRepository(Role_1.Role.getSchemaName());\n let parents = yield repo.createQueryBuilder(Role_1.Role.getSchemaName())\n .leftJoinAndSelect(Role_1.Role.getSchemaName() + '.accesses', \"access\")\n .leftJoinAndSelect(Role_1.Role.getSchemaName() + '.children', \"child\")\n .where('child.id = :id', { id: role.id })\n .getMany();\n yield Helper_1.Helper.asyncForEach(parents, (role) => __awaiter(this, void 0, void 0, function* () {\n let otherAccesses = yield this._getAccessesFromRole(role);\n accesses.push(...otherAccesses);\n }));\n return accesses;\n });\n }\n _doRegister(email, username, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let errors = {};\n let users = yield Promise.all([\n User_1.User.findOne({ \"email\": email }),\n User_1.User.findOne({ \"username\": username }),\n ]);\n if (Helper_1.Helper.isNotNull(users[0])) {\n errors[\"email\"] = \"email is already in use.\";\n }\n if (Helper_1.Helper.isNotNull(users[1])) {\n errors[\"username\"] = \"username is already in use.\";\n }\n if (Object.keys(errors).length > 0) {\n return errors;\n }\n let user = new User_1.User();\n user.id = yield OfflineUserManager._getNewId();\n user.email = email;\n user.password = this._hashPassword(password);\n user.username = username;\n user.roles = OfflineUserManager.DEFAULT_ROLES;\n user.activated = true;\n yield user.save();\n // user.roles\n yield this.login(email, password);\n return user;\n });\n }\n static _getNewId() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNull(OfflineUserManager._lastId)) {\n let user = yield User_1.User.findOne(undefined, { \"id\": \"DESC\" });\n OfflineUserManager._lastId = user.id;\n }\n OfflineUserManager._lastId++;\n return OfflineUserManager._lastId;\n });\n }\n _hashPassword(pw) {\n return pw;\n }\n}\nexports.OfflineUserManager = OfflineUserManager;\nOfflineUserManager.LOGGED_OUT_ACCESSES = UserManager_1.UserManager.OFFLINE_ACCESSES;\nOfflineUserManager.DEFAULT_ROLES = [];\nOfflineUserManager._lastId = null;\n//# sourceMappingURL=OfflineUserManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/OfflineUserManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/Site/ChangeUserSite.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/Site/ChangeUserSite.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChangeUserSite = void 0;\nconst MenuSite_1 = __webpack_require__(/*! cordova-sites/dist/client/js/Context/MenuSite */ \"./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js\");\nconst UserSite_1 = __webpack_require__(/*! ../Context/UserSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst DataManager_1 = __webpack_require__(/*! cordova-sites/dist/client/js/DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst ViewHelper_1 = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\nconst UserMenuAction_1 = __webpack_require__(/*! ../MenuAction/UserMenuAction */ \"./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/UserMenuAction.js\");\nconst LoginSite_1 = __webpack_require__(/*! ./LoginSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/LoginSite.js\");\nconst SelectUserDialog_1 = __webpack_require__(/*! ../Dialog/SelectUserDialog */ \"./node_modules/cordova-sites-user-management/dist/client/js/Dialog/SelectUserDialog.js\");\nconst view = __webpack_require__(/*! ./../../html/sites/changeUserSite.html */ \"./node_modules/cordova-sites-user-management/dist/client/html/sites/changeUserSite.html\");\nclass ChangeUserSite extends MenuSite_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, ChangeUserSite.ACCESS));\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n let data;\n if (Helper_1.Helper.isSet(constructParameters, \"id\")) {\n data = yield DataManager_1.DataManager.load(ChangeUserSite.LOAD_USER_INFOS_URL + DataManager_1.DataManager.buildQuery({ id: constructParameters[\"id\"] }));\n }\n if (!data || data.success !== true) {\n new client_1.Toast(data.message).show();\n this.finish();\n }\n this._roles = data.roles;\n this._userData = data.userData;\n return res;\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this.findBy(\"#username\").innerText = this._userData.username;\n this._hasRoleContainer = this.findBy(\"#has-role-container\");\n this._availableRoleContainer = this.findBy(\"#available-role-container\");\n this._hasRoleTemplate = this.findBy(\"#has-role-template\");\n this._availableRoleTemplate = this.findBy(\"#available-role-template\");\n this._hasRoleTemplate.removeAttribute(\"id\");\n this._availableRoleTemplate.removeAttribute(\"id\");\n this._hasRoleTemplate.remove();\n this._availableRoleTemplate.remove();\n this.updateRoles();\n return res;\n });\n }\n updateRoles() {\n let userRoles = [];\n let availableRoles = [];\n this._roles.forEach(role => {\n if (this._userData.roleIds.indexOf(role.id) !== -1) {\n userRoles.push(role);\n }\n else {\n availableRoles.push(role);\n }\n });\n ViewHelper_1.ViewHelper.removeAllChildren(this._hasRoleContainer);\n userRoles.forEach((role, i) => {\n let elem = this._hasRoleTemplate.cloneNode(true);\n elem.querySelector(\".role-name\").innerText = role.name;\n elem.querySelector(\".remove-role\").addEventListener(\"click\", () => __awaiter(this, void 0, void 0, function* () {\n this.showLoadingSymbol();\n let res = yield DataManager_1.DataManager.send(ChangeUserSite.CHANGE_USER_ROLE_URL, {\n id: this._userData.id,\n roleId: role.id,\n addRole: false\n });\n if (res.success) {\n this._userData.roleIds.splice(this._userData.roleIds.indexOf(role.id), 1);\n this.updateRoles();\n }\n this.removeLoadingSymbol();\n }));\n this._hasRoleContainer.appendChild(elem);\n });\n ViewHelper_1.ViewHelper.removeAllChildren(this._availableRoleContainer);\n availableRoles.forEach(role => {\n let elem = this._availableRoleTemplate.cloneNode(true);\n elem.querySelector(\".role-name\").innerText = role.name;\n elem.querySelector(\".add-role\").addEventListener(\"click\", () => __awaiter(this, void 0, void 0, function* () {\n this.showLoadingSymbol();\n let res = yield DataManager_1.DataManager.send(ChangeUserSite.CHANGE_USER_ROLE_URL, {\n id: this._userData.id,\n roleId: role.id,\n addRole: true\n });\n if (res.success) {\n this._userData.roleIds.push(role.id);\n this.updateRoles();\n }\n this.removeLoadingSymbol();\n }));\n this._availableRoleContainer.appendChild(elem);\n });\n }\n}\nexports.ChangeUserSite = ChangeUserSite;\nChangeUserSite.ACCESS = \"admin\";\nChangeUserSite.LOAD_USER_INFOS_URL = \"/user/userRoles\";\nChangeUserSite.CHANGE_USER_ROLE_URL = \"/user/changeUserRole\";\nChangeUserSite.ADD_CHANGE_USER_ACTION = true;\nclient_1.App.addInitialization(app => {\n if (ChangeUserSite.ADD_CHANGE_USER_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new UserMenuAction_1.UserMenuAction(\"change user\", ChangeUserSite.ACCESS, () => __awaiter(void 0, void 0, void 0, function* () {\n let user = yield new SelectUserDialog_1.SelectUserDialog().show();\n yield app.startSite(ChangeUserSite, { \"id\": user[\"id\"] });\n })));\n }\n app.addDeepLink(\"login\", LoginSite_1.LoginSite);\n});\n//# sourceMappingURL=ChangeUserSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/Site/ChangeUserSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/Site/ForgotPasswordSite.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/Site/ForgotPasswordSite.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForgotPasswordSite = void 0;\nconst UserSite_1 = __webpack_require__(/*! ../Context/UserSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst view = __webpack_require__(/*! ./../../html/sites/forgotPasswordSite.html */ \"./node_modules/cordova-sites-user-management/dist/client/html/sites/forgotPasswordSite.html\");\nconst UserManager_1 = __webpack_require__(/*! ../UserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js\");\nconst LoginSite_1 = __webpack_require__(/*! ./LoginSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/LoginSite.js\");\nclass ForgotPasswordSite extends client_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, LoginSite_1.LoginSite.ACCESS));\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n if (client_1.Helper.isSet(constructParameters[\"t\"])) {\n this._token = constructParameters[\"t\"];\n }\n return res;\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n let form = new client_1.Form(this.findBy(\"#forgot-password-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n if (yield UserManager_1.UserManager.getInstance().sendForgotPasswordEmail(data[\"email\"])) {\n new client_1.Toast(\"forgot-password-mail sent\").show();\n yield this.finish();\n }\n else {\n form.setErrors({\n \"email\": \"email is not in our database\"\n });\n }\n }));\n let resetForm = new client_1.Form(this.findBy(\"#reset-password-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n if (yield UserManager_1.UserManager.getInstance().resetPassword(this._token, data[\"password1\"])) {\n new client_1.Toast(\"password resetted\").show();\n yield this.finish();\n }\n else {\n yield new client_1.Toast(\"token is not valid!\").show();\n }\n }));\n resetForm.addValidator(data => {\n let errors = {};\n let hasErrors = false;\n if (data[\"password1\"].trim() === \"\") {\n hasErrors = true;\n errors[\"password1\"] = \"no password set\";\n }\n if (data[\"password1\"] !== data[\"password2\"]) {\n hasErrors = true;\n errors[\"password2\"] = \"not equal to password1\";\n }\n if (hasErrors) {\n return errors;\n }\n else {\n return true;\n }\n });\n if (this._token) {\n this.findBy(\"#reset-password\").classList.remove(\"hidden\");\n this.findBy(\"#forgot-password\").classList.add(\"hidden\");\n }\n return res;\n });\n }\n}\nexports.ForgotPasswordSite = ForgotPasswordSite;\nclient_1.App.addInitialization(app => {\n app.addDeepLink(\"forgotPW\", ForgotPasswordSite);\n});\n//# sourceMappingURL=ForgotPasswordSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/Site/ForgotPasswordSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/Site/LoginSite.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/Site/LoginSite.js ***! - \*************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoginSite = void 0;\nconst UserSite_1 = __webpack_require__(/*! ../Context/UserSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js\");\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst view = __webpack_require__(/*! ./../../html/sites/loginSite.html */ \"./node_modules/cordova-sites-user-management/dist/client/html/sites/loginSite.html\");\nconst StartUserSiteMenuAction_1 = __webpack_require__(/*! ../MenuAction/StartUserSiteMenuAction */ \"./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/StartUserSiteMenuAction.js\");\nconst UserManager_1 = __webpack_require__(/*! ../UserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js\");\nconst UserMenuAction_1 = __webpack_require__(/*! ../MenuAction/UserMenuAction */ \"./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/UserMenuAction.js\");\nconst ForgotPasswordSite_1 = __webpack_require__(/*! ./ForgotPasswordSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Site/ForgotPasswordSite.js\");\nclass LoginSite extends client_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, LoginSite.ACCESS));\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n let form = new client_1.Form(this.findBy(\"#login-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n // await this.showLoadingSymbol();\n if (yield UserManager_1.UserManager.getInstance().login(data[\"email\"], data[\"password\"], client_1.Helper.isNotNull(data[\"saveLogin\"]))) {\n new client_1.Toast(\"welcome back\").show();\n yield this.finish();\n }\n else {\n form.setErrors({\n \"email\": \"email or password is wrong\"\n });\n // await this.removeLoadingSymbol();\n }\n }));\n let listener = () => form.clearErrors();\n this.findBy(\"#login-form [name=email]\").addEventListener(\"keydown\", listener);\n this.findBy(\"#login-form [name=password]\").addEventListener(\"keydown\", listener);\n this.findBy(\"#forgot-pw\").addEventListener(\"click\", () => __awaiter(this, void 0, void 0, function* () {\n this.startSite(ForgotPasswordSite_1.ForgotPasswordSite);\n }));\n return res;\n });\n }\n}\nexports.LoginSite = LoginSite;\nLoginSite.ACCESS = \"loggedOut\";\nLoginSite.LOGOUT_ACCESS = \"loggedIn\";\nLoginSite.ADD_LOGIN_ACTION = true;\nLoginSite.ADD_LOGOUT_ACTION = true;\nclient_1.App.addInitialization(app => {\n if (LoginSite.ADD_LOGIN_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new StartUserSiteMenuAction_1.StartUserSiteMenuAction(\"login\", LoginSite.ACCESS, LoginSite));\n }\n if (LoginSite.ADD_LOGOUT_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new UserMenuAction_1.UserMenuAction(\"logout\", LoginSite.LOGOUT_ACCESS, () => __awaiter(void 0, void 0, void 0, function* () {\n yield UserManager_1.UserManager.getInstance().logout();\n })));\n }\n app.addDeepLink(\"login\", LoginSite);\n});\n//# sourceMappingURL=LoginSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/Site/LoginSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/Site/NotAllowedSite.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/Site/NotAllowedSite.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotAllowedSite = void 0;\nconst MenuSite_1 = __webpack_require__(/*! cordova-sites/dist/client/js/Context/MenuSite */ \"./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js\");\nconst view = __webpack_require__(/*! ./../../html/sites/notAllowedSite.html */ \"./node_modules/cordova-sites-user-management/dist/client/html/sites/notAllowedSite.html\");\nclass NotAllowedSite extends MenuSite_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n }\n onConstruct(constructParameters) {\n return super.onConstruct(constructParameters);\n }\n onCreateMenu(navbar) {\n return super.onCreateMenu(navbar);\n }\n onPause() {\n const _super = Object.create(null, {\n onPause: { get: () => super.onPause }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onPause.call(this);\n yield this.finish();\n return res;\n });\n }\n}\nexports.NotAllowedSite = NotAllowedSite;\n//# sourceMappingURL=NotAllowedSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/Site/NotAllowedSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/Site/RegistrationSite.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/Site/RegistrationSite.js ***! - \********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegistrationSite = void 0;\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst view = __webpack_require__(/*! ./../../html/sites/registrationSite.html */ \"./node_modules/cordova-sites-user-management/dist/client/html/sites/registrationSite.html\");\nconst UserSite_1 = __webpack_require__(/*! ../Context/UserSite */ \"./node_modules/cordova-sites-user-management/dist/client/js/Context/UserSite.js\");\nconst StartUserSiteMenuAction_1 = __webpack_require__(/*! ../MenuAction/StartUserSiteMenuAction */ \"./node_modules/cordova-sites-user-management/dist/client/js/MenuAction/StartUserSiteMenuAction.js\");\nconst UserManager_1 = __webpack_require__(/*! ../UserManager */ \"./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js\");\nconst User_1 = __webpack_require__(/*! ../../../shared/v1/model/User */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js\");\nclass RegistrationSite extends client_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, RegistrationSite.ACCESS));\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n let form = new client_1.Form(this.findBy(\"#registration-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n let result = yield UserManager_1.UserManager.getInstance().register(data[\"email\"], data[\"username\"], data[\"password\"]);\n if ((result instanceof User_1.User) || result === true) {\n yield new client_1.Toast(\"registration successful\").show();\n yield this.finish();\n }\n else {\n yield form.setErrors(result);\n }\n }));\n form.addValidator(data => {\n if (data[\"password\"] !== data[\"password2\"]) {\n return {\n \"password2\": \"the passwords do not match.\"\n };\n }\n return true;\n });\n // let listener = () => form.clearErrors();\n // this.findBy(\"#login-form [name=email]\").addEventListener(\"keydown\", listener);\n // this.findBy(\"#login-form [name=password]\").addEventListener(\"keydown\", listener);\n return res;\n });\n }\n}\nexports.RegistrationSite = RegistrationSite;\nRegistrationSite.ACCESS = \"loggedOut\";\nRegistrationSite.ADD_REGISTRATION_ACTION = true;\nclient_1.App.addInitialization(app => {\n if (RegistrationSite.ADD_REGISTRATION_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new StartUserSiteMenuAction_1.StartUserSiteMenuAction(\"registration\", RegistrationSite.ACCESS, RegistrationSite));\n }\n app.addDeepLink(\"registration\", RegistrationSite);\n});\n//# sourceMappingURL=RegistrationSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/Site/RegistrationSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js ***! - \**********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserManager = void 0;\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst User_1 = __webpack_require__(/*! ../../shared/v1/model/User */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js\");\nclass UserManager {\n constructor() {\n this._defaultUserData = {\n id: null,\n loggedIn: false,\n online: false,\n username: null,\n email: null,\n accesses: UserManager.OFFLINE_ACCESSES,\n };\n this._userData = this._defaultUserData;\n this._lastLoginChangeCallbackId = -1;\n this._loginChangeCallbacks = {};\n this._getMePromise = null;\n }\n addLoginChangeCallback(callback, callImmediately) {\n this._lastLoginChangeCallbackId++;\n this._loginChangeCallbacks[this._lastLoginChangeCallbackId] = callback;\n if (client_1.Helper.nonNull(callImmediately, false)) {\n callback(this._userData.loggedIn, this);\n }\n return this._lastLoginChangeCallbackId;\n }\n hasAccess(access) {\n return (this._userData.accesses.indexOf(access) !== -1);\n }\n _checkChangedLogin(before) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._userData.loggedIn !== before.loggedIn || (this._userData.loggedIn === true && this._userData.id !== before.id)) {\n yield this._callLoginChangeCallbacks();\n }\n });\n }\n _callLoginChangeCallbacks() {\n return __awaiter(this, void 0, void 0, function* () {\n yield client_1.Helper.asyncForEach(Object.keys(this._loginChangeCallbacks), callbackId => {\n this._loginChangeCallbacks[callbackId](this._userData.loggedIn, this);\n }, true);\n });\n }\n getUserData() {\n return this._userData;\n }\n getMe() {\n return __awaiter(this, void 0, void 0, function* () {\n this._getMePromise = new Promise((r) => __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doGetMe();\n yield this._checkChangedLogin(before);\n r(res);\n }));\n return this._getMePromise;\n });\n }\n waitForGetMe() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._getMePromise === null) {\n this.getMe();\n }\n yield this._getMePromise;\n });\n }\n login(email, password, saveLogin) {\n return __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doLogin(email, password, saveLogin);\n //do it after the result is returned\n setTimeout(() => {\n this._checkChangedLogin(before);\n }, 1);\n return res;\n });\n }\n logout() {\n return __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doLogout();\n yield this._checkChangedLogin(before);\n if (!this._userData.loggedIn) {\n yield new client_1.Toast(\"goodbye\").show();\n }\n return res;\n });\n }\n register(email, username, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doRegister(email, username, password);\n yield this._checkChangedLogin(before);\n return res;\n });\n }\n _doGetMe() {\n return __awaiter(this, void 0, void 0, function* () {\n yield UserManager.updateHeaders();\n let data = yield client_1.DataManager.load(\"user\");\n if (client_1.Helper.isSet(data, \"userData\")) {\n yield client_1.NativeStoragePromise.setItem(\"user-data\", data.userData);\n this._userData = data.userData;\n }\n else {\n this._userData = this._defaultUserData;\n }\n this._updateAccessClasses();\n if (client_1.Helper.isSet(data, \"token\")) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + data.token);\n sessionStorage.setItem(\"auth-token\", data.token);\n if (client_1.Helper.isNotNull(yield client_1.NativeStoragePromise.getItem(\"auth-token\"))) {\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", data.token);\n }\n }\n });\n }\n _doLogin(email, password, saveLogin) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/login\", {\n \"email\": email,\n \"password\": password\n });\n if (data.success) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + data.token);\n sessionStorage.setItem(\"auth-token\", data.token);\n yield this._doGetMe();\n if (saveLogin) {\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", data.token);\n }\n return true;\n }\n else {\n client_1.DataManager.setHeader(\"Authorization\", \"\");\n sessionStorage.setItem(\"auth-token\", \"\");\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", \"\");\n yield new client_1.Toast(data.message).show();\n return false;\n }\n });\n }\n _doLogout() {\n return __awaiter(this, void 0, void 0, function* () {\n client_1.DataManager.setHeader(\"Authorization\", \"\");\n sessionStorage.setItem(\"auth-token\", \"\");\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", \"\");\n yield this._doGetMe();\n return true;\n });\n }\n _doRegister(email, username, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/register\", {\n \"email\": email,\n \"username\": username,\n \"password\": password\n });\n if (data.success) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + data.token);\n sessionStorage.setItem(\"auth-token\", data.token);\n yield this._doGetMe();\n return true;\n }\n else {\n client_1.DataManager.setHeader(\"Authorization\", \"\");\n sessionStorage.setItem(\"auth-token\", \"\");\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", \"\");\n yield new client_1.Toast(data.message).show();\n return false;\n }\n });\n }\n /**\n * @returns {UserManager}\n */\n static getInstance() {\n if (!UserManager._instance) {\n UserManager._instance = new UserManager();\n }\n return UserManager._instance;\n }\n static updateHeaders() {\n return __awaiter(this, void 0, void 0, function* () {\n let token = client_1.Helper.nonNull(sessionStorage.getItem(\"auth-token\"), yield client_1.NativeStoragePromise.getItem(\"auth-token\"));\n if (token) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + token);\n }\n });\n }\n _updateAccessClasses() {\n document.body.classList.forEach(cl => {\n if (cl.startsWith(UserManager.ACCESS_CLASS_PREFIX)) {\n document.body.classList.remove(cl);\n }\n });\n this._userData.accesses.forEach(access => {\n document.body.classList.add(UserManager.ACCESS_CLASS_PREFIX + access);\n });\n }\n hasOfflineAccess(access) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.isOnline()) {\n return false;\n }\n let offlineData = client_1.Helper.nonNull(yield client_1.NativeStoragePromise.getItem(\"user-data\"), { accesses: UserManager.OFFLINE_ACCESSES });\n return (offlineData.accesses.indexOf(access) !== -1);\n });\n }\n sendForgotPasswordEmail(email) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/forgotPW\", { email: email });\n return data.success;\n });\n }\n resetPassword(token, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/forgotPW/2\", { token: token, password: password });\n return data.success;\n });\n }\n isOnline() {\n return this._userData.online;\n }\n isLoggedIn() {\n return this._userData.loggedIn;\n }\n static syncParamFor(model) {\n return {\n model: model,\n where: {\n user: { id: this.getInstance().getUserData().id }\n }\n };\n }\n static userSyncParam() {\n return {\n model: User_1.User,\n where: {\n id: this.getInstance().getUserData().id\n }\n };\n }\n}\nexports.UserManager = UserManager;\nUserManager.ACCESS_CLASS_PREFIX = \"access-\";\nUserManager.OFFLINE_ACCESSES = [\n \"offline\"\n];\n//# sourceMappingURL=UserManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/UserManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/js/translationInit.js": -/*!**************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/js/translationInit.js ***! - \**************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst client_1 = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\nconst shared_1 = __webpack_require__(/*! cordova-sites/dist/shared */ \"./node_modules/cordova-sites/dist/shared.js\");\nconst deTranslations = __webpack_require__(/*! ../translations/de */ \"./node_modules/cordova-sites-user-management/dist/client/translations/de.json\");\nconst enTranslations = __webpack_require__(/*! ../translations/en */ \"./node_modules/cordova-sites-user-management/dist/client/translations/en.json\");\nclient_1.App.addInitialization(() => {\n shared_1.Translator.addDynamicTranslations({\n \"de\": deTranslations,\n \"en\": enTranslations\n });\n});\n//# sourceMappingURL=translationInit.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/js/translationInit.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/translations/de.json": -/*!*************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/translations/de.json ***! - \*************************************************************************************/ -/*! exports provided: login, logout, email, password, email or password is wrong, stay logged in, goodbye, welcome back, registration successful, registration, I have read and accepted the terms and conditions., retype password, the passwords do not match., username, email is already in use., username is already in use., wrong email or password, wrong rights, passwort vergessen?, password forgotten, request new password, email is not in our database, forgot-password-mail sent, password resetted, token is not valid, reset password, repeat password, token not valid, Not allowed, You don't have the rights to do this!, If you are not logged in, please log in and try again., default */ -/***/ (function(module) { - -eval("module.exports = JSON.parse(\"{\\\"login\\\":\\\"Login\\\",\\\"logout\\\":\\\"Logout\\\",\\\"email\\\":\\\"E-Mail\\\",\\\"password\\\":\\\"Passwort\\\",\\\"email or password is wrong\\\":\\\"Die E-Mail oder das Passwort stimmt nicht!\\\",\\\"stay logged in\\\":\\\"Angemeldet bleiben\\\",\\\"goodbye\\\":\\\"Auf Wiedersehen\\\",\\\"welcome back\\\":\\\"Willkommen zurück\\\",\\\"registration successful\\\":\\\"Registrierung erfolgreich\\\",\\\"registration\\\":\\\"Anmelden\\\",\\\"I have read and accepted the terms and conditions.\\\":\\\"Ich habe die AGB gelesen und akzeptiert.\\\",\\\"retype password\\\":\\\"Passwort wiederholen\\\",\\\"the passwords do not match.\\\":\\\"Die Passwörter stimmen nicht überein.\\\",\\\"username\\\":\\\"Username\\\",\\\"email is already in use.\\\":\\\"Die E-Mail wird bereits verwendet.\\\",\\\"username is already in use.\\\":\\\"Der Username ist bereits vergeben.\\\",\\\"wrong email or password\\\":\\\"Falsche E-Mail oder falsches Passwort\\\",\\\"wrong rights\\\":\\\"Keine Berechtigung!\\\",\\\"passwort vergessen?\\\":\\\"Passwort vergessen?\\\",\\\"password forgotten\\\":\\\"Passwort vergessen\\\",\\\"request new password\\\":\\\"Neues Passwort setzen\\\",\\\"email is not in our database\\\":\\\"Die E-Mail ist nicht registriert!\\\",\\\"forgot-password-mail sent\\\":\\\"Es wurde eine E-Mail an die angegebene Adresse gesendet.\\\",\\\"password resetted\\\":\\\"Das Passwort wurde erfolgreich zurückgesetzt.\\\",\\\"token is not valid\\\":\\\"Der Link ist nicht mehr gültig.\\\",\\\"reset password\\\":\\\"Passwort zurücksetzen\\\",\\\"repeat password\\\":\\\"Passwort wiederholen\\\",\\\"token not valid\\\":\\\"Der Link ist nicht mehr gültig\\\",\\\"Not allowed\\\":\\\"Nicht erlaubt\\\",\\\"You don't have the rights to do this!\\\":\\\"Du hast nicht die Berechtigung, um das zu tun!\\\",\\\"If you are not logged in, please log in and try again.\\\":\\\"Wenn du noch nicht eingeloggt bist, logge dich ein und versuche es erneut.\\\"}\");\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/translations/de.json?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/client/translations/en.json": -/*!*************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/client/translations/en.json ***! - \*************************************************************************************/ -/*! exports provided: login, logout, email, password, email or password is wrong, stay logged in, goodbye, welcome back, registration successful, registration, I have read and accepted the terms and conditions., retype password, the passwords do not match., username, email is already in use., username is already in use., wrong email or password, wrong rights, passwort vergessen?, password forgotten, request new password, email is not in our database, forgot-password-mail sent, password resetted, token is not valid, reset password, repeat password, token not valid, Not allowed, You don't have the rights to do this!, If you are not logged in, please log in and try again., default */ -/***/ (function(module) { - -eval("module.exports = JSON.parse(\"{\\\"login\\\":\\\"Login\\\",\\\"logout\\\":\\\"Logout\\\",\\\"email\\\":\\\"E-Mail\\\",\\\"password\\\":\\\"Password\\\",\\\"email or password is wrong\\\":\\\"The e-mail or password is incorrect!\\\",\\\"stay logged in\\\":\\\"Stay logged in\\\",\\\"goodbye\\\":\\\"Goodbye\\\",\\\"welcome back\\\":\\\"Welcome back\\\",\\\"registration successful\\\":\\\"Registration successful\\\",\\\"registration\\\":\\\"Registration\\\",\\\"I have read and accepted the terms and conditions.\\\":\\\"I have read and accepted the terms and conditions.\\\",\\\"retype password\\\":\\\"Retype Password\\\",\\\"the passwords do not match.\\\":\\\"The passwords do not match.\\\",\\\"username\\\":\\\"Username\\\",\\\"email is already in use.\\\":\\\"This e-mail is already in use.\\\",\\\"username is already in use.\\\":\\\"This Username is already taken.\\\",\\\"wrong email or password\\\":\\\"Wrong E-Mail or Password!\\\",\\\"wrong rights\\\":\\\"Wrong Rights!\\\",\\\"passwort vergessen?\\\":\\\"password forgotten?\\\",\\\"password forgotten\\\":\\\"Password Forgotten\\\",\\\"request new password\\\":\\\"Request New Password\\\",\\\"email is not in our database\\\":\\\"The given E-Mailaddress is not registered!\\\",\\\"forgot-password-mail sent\\\":\\\"We sent you an E-Mail with instructions\\\",\\\"password resetted\\\":\\\"The password was successfully changed.\\\",\\\"token is not valid\\\":\\\"The given link is no longer valid.\\\",\\\"reset password\\\":\\\"Reset Password\\\",\\\"repeat password\\\":\\\"Repeat Password\\\",\\\"token not valid\\\":\\\"The link is not valid any more\\\",\\\"Not allowed\\\":\\\"Not allowed\\\",\\\"You don't have the rights to do this!\\\":\\\"You don't have the rights to do this!\\\",\\\"If you are not logged in, please log in and try again.\\\":\\\"If you are not logged in, please log in and try again.\\\"}\");\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/client/translations/en.json?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared.js": -/*!*******************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./shared/migrations/DeleteUserManagement */ \"./node_modules/cordova-sites-user-management/dist/shared/migrations/DeleteUserManagement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/migrations/SetupUserManagement */ \"./node_modules/cordova-sites-user-management/dist/shared/migrations/SetupUserManagement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/v1/model/Access */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/Access.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/v1/model/AccessEasySyncModel */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/AccessEasySyncModel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/v1/model/Role */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/Role.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/v1/model/User */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/v1/model/UserSyncModel */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncModel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/v1/model/UserSyncPartialModel */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncPartialModel.js\"), exports);\n//# sourceMappingURL=shared.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/migrations/DeleteUserManagement.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/migrations/DeleteUserManagement.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteUserManagement1000000000000 = void 0;\nclass DeleteUserManagement1000000000000 {\n _isServer() {\n return (typeof document !== \"object\");\n }\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield queryRunner.dropTable(\"roleAccess\", true);\n yield queryRunner.dropTable(\"roleChildren\", true);\n yield queryRunner.dropTable(\"userRole\", true);\n if (this._isServer()) {\n yield queryRunner.dropTable(\"user_access\", true);\n }\n yield queryRunner.dropTable(\"access\", true);\n yield queryRunner.dropTable(\"role\", true);\n yield queryRunner.dropTable(\"user\", true);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\nexports.DeleteUserManagement1000000000000 = DeleteUserManagement1000000000000;\n//# sourceMappingURL=DeleteUserManagement.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/migrations/DeleteUserManagement.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/migrations/SetupUserManagement.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/migrations/SetupUserManagement.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetupUserManagement1000000001000 = void 0;\nconst typeorm_1 = __webpack_require__(/*! typeorm */ \"./node_modules/typeorm/browser/index.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nclass SetupUserManagement1000000001000 {\n _isServer() {\n return (typeof document !== \"object\");\n }\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._addAccess(queryRunner);\n yield this._addRole(queryRunner);\n yield this._addUser(queryRunner);\n yield this._addRoleAccess(queryRunner);\n yield this._addRoleChildren(queryRunner);\n yield this._addUserRole(queryRunner);\n if (this._isServer()) {\n yield this._addUserAccess(queryRunner);\n }\n });\n }\n _addAccess(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let accessTable = new typeorm_1.Table({\n name: \"access\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\"\n },\n {\n name: \"createdAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"updatedAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"version\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n },\n {\n name: \"deleted\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"name\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isUnique: true\n },\n {\n name: \"description\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING\n }\n ]\n });\n return yield queryRunner.createTable(accessTable, true);\n });\n }\n _addRole(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let roleTable = new typeorm_1.Table({\n name: \"role\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\"\n },\n {\n name: \"createdAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"updatedAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"version\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n },\n {\n name: \"deleted\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"name\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n },\n {\n name: \"description\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING\n }\n ]\n });\n return yield queryRunner.createTable(roleTable, true);\n });\n }\n _addUser(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let userTable = new typeorm_1.Table({\n name: \"user\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\"\n },\n {\n name: \"createdAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"updatedAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"version\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n },\n {\n name: \"deleted\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"username\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isUnique: true\n },\n {\n name: \"email\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isUnique: true\n },\n {\n name: \"password\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n },\n {\n name: \"activated\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"blocked\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"salt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n },\n ]\n });\n return yield queryRunner.createTable(userTable, true);\n });\n }\n _addRoleAccess(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let roleAccessTable = new typeorm_1.Table({\n name: \"roleAccess\",\n columns: [\n {\n name: \"roleId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"accessId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n }\n ],\n indices: [\n {\n name: \"IDX_38300dd4683a436f8db90b42bd\",\n columnNames: [\"roleId\"]\n },\n {\n name: \"IDX_bd55fc382ad2480f75a17e33cb\",\n columnNames: [\"accessId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_38300dd4683a436f8db90b42bd9\",\n columnNames: [\"roleId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_bd55fc382ad2480f75a17e33cb5\",\n columnNames: [\"accessId\"],\n referencedTableName: \"access\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(roleAccessTable, true);\n });\n }\n _addRoleChildren(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let roleChildrenTable = new typeorm_1.Table({\n name: \"roleChildren\",\n columns: [\n {\n name: \"childId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"parentId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n }\n ],\n indices: [\n {\n name: \"IDX_030234c342756c67cefa480687\",\n columnNames: [\"childId\"]\n },\n {\n name: \"IDX_35741f2d68a65c2765047705f8\",\n columnNames: [\"parentId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_roleChildren_childId\",\n columnNames: [\"childId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_roleChildren_parentId\",\n columnNames: [\"parentId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(roleChildrenTable, true);\n });\n }\n _addUserRole(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let userRoleTable = new typeorm_1.Table({\n name: \"userRole\",\n columns: [\n {\n name: \"userId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"roleId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n }\n ],\n indices: [\n {\n name: \"IDX_userRole_userId\",\n columnNames: [\"userId\"]\n },\n {\n name: \"IDX_userRole_roleId\",\n columnNames: [\"roleId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_userRole_userId\",\n columnNames: [\"userId\"],\n referencedTableName: \"user\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_userRole_roleId\",\n columnNames: [\"roleId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(userRoleTable, true);\n });\n }\n _addUserAccess(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let userRoleTable = new typeorm_1.Table({\n name: \"user_access\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"userId\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isNullable: true\n },\n {\n name: \"accessId\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isNullable: true\n }\n ],\n indices: [\n {\n name: \"IDX_userAccess_userId\",\n columnNames: [\"userId\"]\n },\n {\n name: \"IDX_userAccess_accessId\",\n columnNames: [\"accessId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_userAccess_userId\",\n columnNames: [\"userId\"],\n referencedTableName: \"user\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_userAccess_accessId\",\n columnNames: [\"accessId\"],\n referencedTableName: \"access\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(userRoleTable, true);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\nexports.SetupUserManagement1000000001000 = SetupUserManagement1000000001000;\n//# sourceMappingURL=SetupUserManagement.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/migrations/SetupUserManagement.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/v1/model/Access.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/v1/model/Access.js ***! - \***********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Access = void 0;\nconst shared_1 = __webpack_require__(/*! cordova-sites-easy-sync/dist/shared */ \"./node_modules/cordova-sites-easy-sync/dist/shared.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nclass Access extends shared_1.EasySyncBaseModel {\n constructor() {\n super();\n this.name = null;\n this.description = null;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"name\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, unique: true };\n columns[\"description\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n return columns;\n }\n}\nexports.Access = Access;\nAccess.CAN_BE_SYNCED = false;\ncordova_sites_database_1.BaseDatabase.addModel(Access);\n//# sourceMappingURL=Access.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/v1/model/Access.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/v1/model/AccessEasySyncModel.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/v1/model/AccessEasySyncModel.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AccessEasySyncModel = void 0;\nconst shared_1 = __webpack_require__(/*! cordova-sites-easy-sync/dist/shared */ \"./node_modules/cordova-sites-easy-sync/dist/shared.js\");\nclass AccessEasySyncModel extends shared_1.EasySyncBaseModel {\n}\nexports.AccessEasySyncModel = AccessEasySyncModel;\nAccessEasySyncModel.ACCESS_READ = true;\nAccessEasySyncModel.ACCESS_MODIFY = false;\nAccessEasySyncModel.CAN_BE_SYNCED = false;\n//# sourceMappingURL=AccessEasySyncModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/v1/model/AccessEasySyncModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/v1/model/Role.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/v1/model/Role.js ***! - \*********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Role = void 0;\nconst shared_1 = __webpack_require__(/*! cordova-sites-easy-sync/dist/shared */ \"./node_modules/cordova-sites-easy-sync/dist/shared.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nconst Access_1 = __webpack_require__(/*! ./Access */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/Access.js\");\nclass Role extends shared_1.EasySyncBaseModel {\n constructor() {\n super();\n this.name = null;\n this.description = null;\n this.accesses = null;\n this.parents = null;\n this.children = null;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"name\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n columns[\"description\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n return columns;\n }\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"accesses\"] = {\n target: Access_1.Access.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"roleAccess\"\n },\n cascade: false\n };\n relations[\"parents\"] = {\n target: Role.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"roleChildren\",\n joinColumn: {\n name: \"childId\",\n referencedColumnName: \"id\"\n },\n inverseJoinColumn: {\n name: \"parentId\",\n referencedColumnName: \"id\"\n }\n },\n cascade: false\n };\n relations[\"children\"] = {\n target: Role.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"roleChildren\",\n joinColumn: {\n name: \"parentId\",\n referencedColumnName: \"id\"\n },\n inverseJoinColumn: {\n name: \"childId\",\n referencedColumnName: \"id\"\n }\n },\n cascade: false\n };\n return relations;\n }\n}\nexports.Role = Role;\nRole.CAN_BE_SYNCED = false;\ncordova_sites_database_1.BaseDatabase.addModel(Role);\n//# sourceMappingURL=Role.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/v1/model/Role.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js ***! - \*********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.User = void 0;\nconst shared_1 = __webpack_require__(/*! cordova-sites-easy-sync/dist/shared */ \"./node_modules/cordova-sites-easy-sync/dist/shared.js\");\nconst cordova_sites_database_1 = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\nconst Role_1 = __webpack_require__(/*! ./Role */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/Role.js\");\nclass User extends shared_1.EasySyncBaseModel {\n constructor() {\n super();\n this.username = null;\n this.email = null;\n this.password = null;\n this.roles = null;\n this.activated = false;\n this.blocked = false;\n this.salt = null;\n }\n toJSON() {\n return {\n id: this.id,\n username: this.username,\n };\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"username\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, unique: true };\n columns[\"email\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, unique: true };\n columns[\"password\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n columns[\"activated\"] = cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN;\n columns[\"blocked\"] = cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN;\n columns[\"salt\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n return columns;\n }\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"roles\"] = {\n target: Role_1.Role.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"userRole\"\n },\n cascade: false\n };\n return relations;\n }\n static prepareSync(entities) {\n let jsonEntities = [];\n entities.forEach(entity => {\n let jsonEntity = {};\n jsonEntity.id = entity.id;\n jsonEntity.createdAt = new Date();\n jsonEntity.updatedAt = new Date();\n jsonEntity.username = \"\";\n jsonEntity.email = \"\";\n jsonEntity.password = \"\";\n jsonEntity.salt = \"\";\n jsonEntity.activated = 1;\n jsonEntity.blocked = 1;\n jsonEntity.version = 1;\n jsonEntity.deleted = 0;\n jsonEntities.push(jsonEntity);\n });\n return jsonEntities;\n }\n}\nexports.User = User;\ncordova_sites_database_1.BaseDatabase.addModel(User);\n//# sourceMappingURL=User.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncModel.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncModel.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserSyncModel = void 0;\nconst AccessEasySyncModel_1 = __webpack_require__(/*! ./AccessEasySyncModel */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/AccessEasySyncModel.js\");\nconst User_1 = __webpack_require__(/*! ./User */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js\");\nclass UserSyncModel extends AccessEasySyncModel_1.AccessEasySyncModel {\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"user\"] = {\n target: User_1.User.getSchemaName(),\n type: \"many-to-one\",\n // joinColumn: {\n // name: \"userId\"\n // },\n cascade: false,\n nullable: !this.NEED_USER\n };\n return relations;\n }\n}\nexports.UserSyncModel = UserSyncModel;\nUserSyncModel.NEED_USER = false;\n//# sourceMappingURL=UserSyncModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncPartialModel.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncPartialModel.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserSyncPartialModel = void 0;\nconst shared_1 = __webpack_require__(/*! cordova-sites-easy-sync/dist/shared */ \"./node_modules/cordova-sites-easy-sync/dist/shared.js\");\nconst User_1 = __webpack_require__(/*! ./User */ \"./node_modules/cordova-sites-user-management/dist/shared/v1/model/User.js\");\nclass UserSyncPartialModel extends shared_1.EasySyncPartialModel {\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"user\"] = {\n target: User_1.User.getSchemaName(),\n type: \"many-to-one\",\n // joinColumn: {\n // name: \"userId\"\n // },\n cascade: false,\n nullable: !this.NEED_USER\n };\n return relations;\n }\n}\nexports.UserSyncPartialModel = UserSyncPartialModel;\nUserSyncPartialModel.NEED_USER = false;\n//# sourceMappingURL=UserSyncPartialModel.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites-user-management/dist/shared/v1/model/UserSyncPartialModel.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client.js": -/*!***************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./client/js/App */ \"./node_modules/cordova-sites/dist/client/js/App.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/ColorIndicator/ColorIndicator */ \"./node_modules/cordova-sites/dist/client/js/ColorIndicator/ColorIndicator.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/AbstractSite */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/ContainerSite */ \"./node_modules/cordova-sites/dist/client/js/Context/ContainerSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Context */ \"./node_modules/cordova-sites/dist/client/js/Context/Context.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Delegate/DelegateSite */ \"./node_modules/cordova-sites/dist/client/js/Context/Delegate/DelegateSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Delegate/MasterSite */ \"./node_modules/cordova-sites/dist/client/js/Context/Delegate/MasterSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Fragment/AbstractWindowFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/Fragment/AbstractWindowFragment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Fragment/AlphabeticListFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/Fragment/AlphabeticListFragment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Fragment/TabFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/Fragment/TabFragment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Fragment/WindowPositionInterface */ \"./node_modules/cordova-sites/dist/client/js/Context/Fragment/WindowPositionInterface.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/Menu */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Menu.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/MenuAction/ErrorAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/ErrorAction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/MenuAction/MenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/MenuAction/OpenSubmenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/MenuAction/StartSiteMenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/StartSiteMenuAction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/NavbarFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/NavbarFragment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/Renderer/AccordionRenderer */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/AccordionRenderer.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/Renderer/DropdownRenderer */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/DropdownRenderer.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/Renderer/MenuRenderer */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/MenuRenderer.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/Menu/Submenu */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Submenu.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/MenuSite */ \"./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/SiteManager */ \"./node_modules/cordova-sites/dist/client/js/Context/SiteManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/SwipeFragment/SwipeChildFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeChildFragment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/SwipeFragment/SwipeFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeFragment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Context/TemplateSite */ \"./node_modules/cordova-sites/dist/client/js/Context/TemplateSite.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/DataManager/NotOnlineError */ \"./node_modules/cordova-sites/dist/client/js/DataManager/NotOnlineError.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Dialog/ButtonChooseDialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/ButtonChooseDialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Dialog/ChooseDialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/ChooseDialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Dialog/ConfirmDialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/ConfirmDialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Dialog/Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Dialog/ElemChooseDialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/ElemChooseDialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Dialog/ImgChooseDialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/ImgChooseDialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Form */ \"./node_modules/cordova-sites/dist/client/js/Form.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/HistoryManager */ \"./node_modules/cordova-sites/dist/client/js/HistoryManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Legacy/EventManager/EventManager */ \"./node_modules/cordova-sites/dist/client/js/Legacy/EventManager/EventManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Legacy/Matomo */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Legacy/ScaleHelper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/ScaleHelper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/NativeStoragePromise */ \"./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/PromiseHelper */ \"./node_modules/cordova-sites/dist/client/js/PromiseHelper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/ShareManager/ShareDialog */ \"./node_modules/cordova-sites/dist/client/js/ShareManager/ShareDialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/ShareManager/ShareManager */ \"./node_modules/cordova-sites/dist/client/js/ShareManager/ShareManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Singleton */ \"./node_modules/cordova-sites/dist/client/js/Singleton.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Sound/AudioChain */ \"./node_modules/cordova-sites/dist/client/js/Sound/AudioChain.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Sound/SoundManager */ \"./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Toast/Toast */ \"./node_modules/cordova-sites/dist/client/js/Toast/Toast.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Toast/ToastManager */ \"./node_modules/cordova-sites/dist/client/js/Toast/ToastManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/js/translationInit */ \"./node_modules/cordova-sites/dist/client/js/translationInit.js\"), exports);\n//# sourceMappingURL=client.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/Dialog/shareDialog.html": -/*!*****************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/Dialog/shareDialog.html ***! - \*****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/shareDialog.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/Dialog/shareDialog.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/Framework/Dialog/chooseDialog.html": -/*!****************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/Framework/Dialog/chooseDialog.html ***! - \****************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/chooseDialog.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Dialog/chooseDialog.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/Framework/Fragment/abstractWindowTemplate.html": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/Framework/Fragment/abstractWindowTemplate.html ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/abstractWindowTemplate.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/abstractWindowTemplate.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/Framework/Fragment/alphabeticListFragment.html": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/Framework/Fragment/alphabeticListFragment.html ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/alphabeticListFragment.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/alphabeticListFragment.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/Framework/Fragment/swipeFragment.html": -/*!*******************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/Framework/Fragment/swipeFragment.html ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/swipeFragment.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/swipeFragment.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/Framework/Fragment/tabFragment.html": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/Framework/Fragment/tabFragment.html ***! - \*****************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/tabFragment.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/tabFragment.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/siteTemplates/container.html": -/*!**********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/siteTemplates/container.html ***! - \**********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/container.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/siteTemplates/container.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/siteTemplates/menuSite.html": -/*!*********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/siteTemplates/menuSite.html ***! - \*********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/menuSite.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/siteTemplates/menuSite.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/html/siteTemplates/navbar.html": -/*!*******************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/html/siteTemplates/navbar.html ***! - \*******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__.p + \"html/navbar.html\";\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/html/siteTemplates/navbar.html?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/img/errorIcon.png": -/*!******************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/img/errorIcon.png ***! - \******************************************************************/ -/*! exports provided: default */ +/******/ ([ +/* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"img/errorIcon.png\");\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/img/errorIcon.png?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __extends; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __assign; }); +/* unused harmony export __rest */ +/* unused harmony export __decorate */ +/* unused harmony export __param */ +/* unused harmony export __metadata */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __awaiter; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __generator; }); +/* unused harmony export __createBinding */ +/* unused harmony export __exportStar */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return __values; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return __read; }); +/* unused harmony export __spread */ +/* unused harmony export __spreadArrays */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return __spreadArray; }); +/* unused harmony export __await */ +/* unused harmony export __asyncGenerator */ +/* unused harmony export __asyncDelegator */ +/* unused harmony export __asyncValues */ +/* unused harmony export __makeTemplateObject */ +/* unused harmony export __importStar */ +/* unused harmony export __importDefault */ +/* unused harmony export __classPrivateFieldGet */ +/* unused harmony export __classPrivateFieldSet */ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +function __spreadArray(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; +} + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + /***/ }), +/* 1 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./node_modules/cordova-sites/dist/client/js/App.js": -/*!**********************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/App.js ***! - \**********************************************************/ -/*! no static exports found */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return MongoDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return MongoQueryRunner; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return MongoEntityManager; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return MongoRepository; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return PostgresDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AuroraDataApiDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return CockroachDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return AuroraDataApiPostgresDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return SqlServerDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return SapDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return MysqlDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return OracleDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return SqliteDriver; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return BetterSqlite3Driver; }); +/** + * Dummy driver classes for replacement via `package.json` in browser builds. + * Using those classes reduces the build size by one third. + * + * If we don't include those dummy classes (and just disable the driver import + * with `false` in `package.json`) typeorm will throw an error on runtime and + * during webpack builds even if those driver are not used. + */ +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var MongoDriver = /** @class */ (function () { + function MongoDriver() { + } + return MongoDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var MongoQueryRunner = /** @class */ (function () { + function MongoQueryRunner() { + } + return MongoQueryRunner; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var MongoEntityManager = /** @class */ (function () { + function MongoEntityManager() { + } + return MongoEntityManager; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var MongoRepository = /** @class */ (function () { + function MongoRepository() { + } + return MongoRepository; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var PostgresDriver = /** @class */ (function () { + function PostgresDriver() { + } + return PostgresDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var AuroraDataApiDriver = /** @class */ (function () { + function AuroraDataApiDriver() { + } + return AuroraDataApiDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var CockroachDriver = /** @class */ (function () { + function CockroachDriver() { + } + return CockroachDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var AuroraDataApiPostgresDriver = /** @class */ (function () { + function AuroraDataApiPostgresDriver() { + } + return AuroraDataApiPostgresDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var SqlServerDriver = /** @class */ (function () { + function SqlServerDriver() { + } + return SqlServerDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var SapDriver = /** @class */ (function () { + function SapDriver() { + } + return SapDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var MysqlDriver = /** @class */ (function () { + function MysqlDriver() { + } + return MysqlDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var OracleDriver = /** @class */ (function () { + function OracleDriver() { + } + return OracleDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var SqliteDriver = /** @class */ (function () { + function SqliteDriver() { + } + return SqliteDriver; +}()); + +/** + * DO NOT IMPORT THIS CLASS - + * This is a dummy class for replacement via `package.json` in browser builds + */ +var BetterSqlite3Driver = /** @class */ (function () { + function BetterSqlite3Driver() { + } + return BetterSqlite3Driver; +}()); + + +//# sourceMappingURL=BrowserDisabledDriversDummy.js.map + + +/***/ }), +/* 2 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Query; }); +/** + * This class stores query and its parameters + */ +var Query = /** @class */ (function () { + function Query(query, parameters) { + this.query = query; + this.parameters = parameters; + } + return Query; +}()); + + +//# sourceMappingURL=Query.js.map + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(11); +var core = __webpack_require__(26); +var hide = __webpack_require__(52); +var redefine = __webpack_require__(45); +var ctx = __webpack_require__(62); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if (target) redefine(target, key, out, type & $export.U); + // export + if (exports[key] != out) hide(exports, key, exp); + if (IS_PROTO && expProto[key] != out) expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + + +/***/ }), +/* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.App = void 0;\n/**\n * Eine Klasse, welche als Ursprung für die App genutzt wird\n */\nconst Helper_1 = __webpack_require__(/*! ./Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst SiteManager_1 = __webpack_require__(/*! ./Context/SiteManager */ \"./node_modules/cordova-sites/dist/client/js/Context/SiteManager.js\");\nclass App {\n /**\n * Erstellt eine neue App, speichert ein internes Promise, welches resolved wird, sobald das deviceready-Event gefeuert wird\n */\n constructor() {\n this._resolver = { resolve: null, reject: null };\n this._readyPromise = new Promise(r => document.addEventListener(\"deviceready\", r, false));\n this._deepLinks = {};\n this._siteManager = SiteManager_1.SiteManager.getInstance();\n }\n addDeepLink(link, siteConstructor) {\n this._deepLinks[link] = siteConstructor;\n }\n startSite(site, args) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._siteManager) {\n return this._siteManager.startSite(site, args);\n }\n });\n }\n static setLogo(logo) {\n this._logo = logo;\n }\n static getLogo() {\n return this._logo;\n }\n start(startSiteConstructor) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.ready();\n let initialSiteConstructor = startSiteConstructor;\n let params = App._getStartParams();\n this.startingSite = initialSiteConstructor;\n this.startingSiteParameters = params;\n if (Helper_1.Helper.isNotNull(params[\"s\"])) {\n startSiteConstructor = Helper_1.Helper.nonNull(this._deepLinks[params[\"s\"]], startSiteConstructor);\n delete params[\"s\"];\n }\n this.startingSiteParameters = null;\n let siteManager = this._siteManager;\n siteManager.init(\"site\", this._deepLinks);\n Helper_1.Helper.removeAllChildren(document.getElementById(\"site\"));\n siteManager.startSite(startSiteConstructor, params);\n siteManager.setAppEndedListener(manager => {\n manager.startSite(initialSiteConstructor);\n });\n });\n }\n /**\n * Startet die erste Seite\n */\n startStartingSite() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.startingSite) {\n return this.startSite(this.startingSite, this.startingSiteParameters);\n }\n });\n }\n /**\n * Führt die Callback aus, sobald das interne Promise aufgelöst wird und App._promises fertig sind oder gibt das interne Promise zurück\n *\n * @param callback\n * @returns {Promise<*>}\n */\n ready(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n let promise = this._readyPromise.then(() => {\n App._resolver.resolve(this);\n return Promise.all(App._promises);\n });\n if (callback) {\n return promise.then(callback);\n }\n else {\n return promise;\n }\n });\n }\n static addInitialization(callbackOrPromise) {\n if (typeof callbackOrPromise === \"function\") {\n let promise = callbackOrPromise;\n callbackOrPromise = App._mainPromise.then((app) => {\n return promise(app);\n });\n }\n App._promises.push(callbackOrPromise);\n }\n static _getStartParams() {\n return Object.assign(App._extractParams(window.location.search.substr(1)), App._startParams);\n }\n static _extractParams(paramString) {\n if (Helper_1.Helper.isNull(paramString)) {\n return null;\n }\n let result = {}, tmp = [];\n let items = paramString.split(\"&\");\n for (let index = 0; index < items.length; index++) {\n tmp = items[index].split(\"=\");\n if (tmp[0].trim().length > 0) {\n result[tmp[0]] = decodeURIComponent(tmp[1]);\n }\n }\n return result;\n }\n static setStartParam(name, value) {\n this._startParams[name] = value;\n }\n}\nexports.App = App;\nApp._promises = [];\nApp._resolver = {\n resolve: null,\n reject: null,\n};\nApp._mainPromise = new Promise((res, rej) => {\n App._resolver = {\n resolve: res,\n reject: rej,\n };\n});\nApp._startParams = {};\n//# sourceMappingURL=App.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/App.js?"); + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +var __exportStar = this && this.__exportStar || function (m, exports) { + for (var p in m) { + if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); + } +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__exportStar(__webpack_require__(33), exports); + +__exportStar(__webpack_require__(256), exports); + +__exportStar(__webpack_require__(79), exports); + +__exportStar(__webpack_require__(146), exports); + +__exportStar(__webpack_require__(496), exports); + +__exportStar(__webpack_require__(111), exports); + +__exportStar(__webpack_require__(498), exports); + +__exportStar(__webpack_require__(258), exports); + +__exportStar(__webpack_require__(499), exports); + +__exportStar(__webpack_require__(501), exports); + +__exportStar(__webpack_require__(503), exports); + +__exportStar(__webpack_require__(505), exports); + +__exportStar(__webpack_require__(200), exports); + +__exportStar(__webpack_require__(506), exports); + +__exportStar(__webpack_require__(80), exports); + +__exportStar(__webpack_require__(98), exports); + +__exportStar(__webpack_require__(508), exports); + +__exportStar(__webpack_require__(160), exports); + +__exportStar(__webpack_require__(201), exports); + +__exportStar(__webpack_require__(260), exports); + +__exportStar(__webpack_require__(261), exports); + +__exportStar(__webpack_require__(262), exports); + +__exportStar(__webpack_require__(69), exports); + +__exportStar(__webpack_require__(252), exports); + +__exportStar(__webpack_require__(263), exports); + +__exportStar(__webpack_require__(511), exports); + +__exportStar(__webpack_require__(199), exports); + +__exportStar(__webpack_require__(254), exports); + +__exportStar(__webpack_require__(68), exports); + +__exportStar(__webpack_require__(513), exports); + +__exportStar(__webpack_require__(514), exports); + +__exportStar(__webpack_require__(515), exports); + +__exportStar(__webpack_require__(84), exports); + +__exportStar(__webpack_require__(265), exports); + +__exportStar(__webpack_require__(516), exports); + +__exportStar(__webpack_require__(161), exports); + +__exportStar(__webpack_require__(255), exports); + +__exportStar(__webpack_require__(198), exports); + +__exportStar(__webpack_require__(15), exports); + +__exportStar(__webpack_require__(55), exports); + +__exportStar(__webpack_require__(517), exports); + +__exportStar(__webpack_require__(42), exports); + +__exportStar(__webpack_require__(518), exports); + +__exportStar(__webpack_require__(266), exports); + +__exportStar(__webpack_require__(208), exports); + +__exportStar(__webpack_require__(257), exports); + +__exportStar(__webpack_require__(267), exports); + +__exportStar(__webpack_require__(17), exports); + +__exportStar(__webpack_require__(101), exports); + +__exportStar(__webpack_require__(259), exports); + +__exportStar(__webpack_require__(32), exports); + +__exportStar(__webpack_require__(58), exports); + +__exportStar(__webpack_require__(268), exports); /***/ }), +/* 5 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./node_modules/cordova-sites/dist/client/js/ColorIndicator/ColorIndicator.js": -/*!************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/ColorIndicator/ColorIndicator.js ***! - \************************************************************************************/ -/*! no static exports found */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Table; }); +/* harmony import */ var _TableColumn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25); +/* harmony import */ var _TableIndex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38); +/* harmony import */ var _TableForeignKey__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48); +/* harmony import */ var _util_TableUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(121); +/* harmony import */ var _TableUnique__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30); +/* harmony import */ var _TableCheck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43); +/* harmony import */ var _TableExclusion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(59); + + + + + + + +/** + * Table in the database represented in this class. + */ +var Table = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function Table(options) { + /** + * Table columns. + */ + this.columns = []; + /** + * Table indices. + */ + this.indices = []; + /** + * Table foreign keys. + */ + this.foreignKeys = []; + /** + * Table unique constraints. + */ + this.uniques = []; + /** + * Table check constraints. + */ + this.checks = []; + /** + * Table exclusion constraints. + */ + this.exclusions = []; + /** + * Indicates if table was just created. + * This is needed, for example to check if we need to skip primary keys creation + * for new tables. + */ + this.justCreated = false; + if (options) { + this.name = options.name; + if (options.columns) + this.columns = options.columns.map(function (column) { return new _TableColumn__WEBPACK_IMPORTED_MODULE_0__[/* TableColumn */ "a"](column); }); + if (options.indices) + this.indices = options.indices.map(function (index) { return new _TableIndex__WEBPACK_IMPORTED_MODULE_1__[/* TableIndex */ "a"](index); }); + if (options.foreignKeys) + this.foreignKeys = options.foreignKeys.map(function (foreignKey) { return new _TableForeignKey__WEBPACK_IMPORTED_MODULE_2__[/* TableForeignKey */ "a"](foreignKey); }); + if (options.uniques) + this.uniques = options.uniques.map(function (unique) { return new _TableUnique__WEBPACK_IMPORTED_MODULE_4__[/* TableUnique */ "a"](unique); }); + if (options.checks) + this.checks = options.checks.map(function (check) { return new _TableCheck__WEBPACK_IMPORTED_MODULE_5__[/* TableCheck */ "a"](check); }); + if (options.exclusions) + this.exclusions = options.exclusions.map(function (exclusion) { return new _TableExclusion__WEBPACK_IMPORTED_MODULE_6__[/* TableExclusion */ "a"](exclusion); }); + if (options.justCreated !== undefined) + this.justCreated = options.justCreated; + this.engine = options.engine; + } + } + Object.defineProperty(Table.prototype, "primaryColumns", { + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + get: function () { + return this.columns.filter(function (column) { return column.isPrimary; }); + }, + enumerable: false, + configurable: true + }); + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Clones this table to a new table with all properties cloned. + */ + Table.prototype.clone = function () { + return new Table({ + name: this.name, + columns: this.columns.map(function (column) { return column.clone(); }), + indices: this.indices.map(function (constraint) { return constraint.clone(); }), + foreignKeys: this.foreignKeys.map(function (constraint) { return constraint.clone(); }), + uniques: this.uniques.map(function (constraint) { return constraint.clone(); }), + checks: this.checks.map(function (constraint) { return constraint.clone(); }), + exclusions: this.exclusions.map(function (constraint) { return constraint.clone(); }), + justCreated: this.justCreated, + engine: this.engine, + }); + }; + /** + * Add column and creates its constraints. + */ + Table.prototype.addColumn = function (column) { + this.columns.push(column); + }; + /** + * Remove column and its constraints. + */ + Table.prototype.removeColumn = function (column) { + var foundColumn = this.columns.find(function (c) { return c.name === column.name; }); + if (foundColumn) + this.columns.splice(this.columns.indexOf(foundColumn), 1); + }; + /** + * Adds unique constraint. + */ + Table.prototype.addUniqueConstraint = function (uniqueConstraint) { + this.uniques.push(uniqueConstraint); + if (uniqueConstraint.columnNames.length === 1) { + var uniqueColumn = this.columns.find(function (column) { return column.name === uniqueConstraint.columnNames[0]; }); + if (uniqueColumn) + uniqueColumn.isUnique = true; + } + }; + /** + * Removes unique constraint. + */ + Table.prototype.removeUniqueConstraint = function (removedUnique) { + var foundUnique = this.uniques.find(function (unique) { return unique.name === removedUnique.name; }); + if (foundUnique) { + this.uniques.splice(this.uniques.indexOf(foundUnique), 1); + if (foundUnique.columnNames.length === 1) { + var uniqueColumn = this.columns.find(function (column) { return column.name === foundUnique.columnNames[0]; }); + if (uniqueColumn) + uniqueColumn.isUnique = false; + } + } + }; + /** + * Adds check constraint. + */ + Table.prototype.addCheckConstraint = function (checkConstraint) { + this.checks.push(checkConstraint); + }; + /** + * Removes check constraint. + */ + Table.prototype.removeCheckConstraint = function (removedCheck) { + var foundCheck = this.checks.find(function (check) { return check.name === removedCheck.name; }); + if (foundCheck) { + this.checks.splice(this.checks.indexOf(foundCheck), 1); + } + }; + /** + * Adds exclusion constraint. + */ + Table.prototype.addExclusionConstraint = function (exclusionConstraint) { + this.exclusions.push(exclusionConstraint); + }; + /** + * Removes exclusion constraint. + */ + Table.prototype.removeExclusionConstraint = function (removedExclusion) { + var foundExclusion = this.exclusions.find(function (exclusion) { return exclusion.name === removedExclusion.name; }); + if (foundExclusion) { + this.exclusions.splice(this.exclusions.indexOf(foundExclusion), 1); + } + }; + /** + * Adds foreign keys. + */ + Table.prototype.addForeignKey = function (foreignKey) { + this.foreignKeys.push(foreignKey); + }; + /** + * Removes foreign key. + */ + Table.prototype.removeForeignKey = function (removedForeignKey) { + var fk = this.foreignKeys.find(function (foreignKey) { return foreignKey.name === removedForeignKey.name; }); + if (fk) + this.foreignKeys.splice(this.foreignKeys.indexOf(fk), 1); + }; + /** + * Adds index. + */ + Table.prototype.addIndex = function (index, isMysql) { + if (isMysql === void 0) { isMysql = false; } + this.indices.push(index); + // in Mysql unique indices and unique constraints are the same thing + // if index is unique and have only one column, we mark this column as unique + if (index.columnNames.length === 1 && index.isUnique && isMysql) { + var column = this.columns.find(function (c) { return c.name === index.columnNames[0]; }); + if (column) + column.isUnique = true; + } + }; + /** + * Removes index. + */ + Table.prototype.removeIndex = function (tableIndex, isMysql) { + if (isMysql === void 0) { isMysql = false; } + var index = this.indices.find(function (index) { return index.name === tableIndex.name; }); + if (index) { + this.indices.splice(this.indices.indexOf(index), 1); + // in Mysql unique indices and unique constraints are the same thing + // if index is unique and have only one column, we move `unique` attribute from its column + if (index.columnNames.length === 1 && index.isUnique && isMysql) { + var column_1 = this.columns.find(function (c) { return c.name === index.columnNames[0]; }); + if (column_1) + column_1.isUnique = this.indices.some(function (ind) { return ind.columnNames.length === 1 && ind.columnNames[0] === column_1.name && !!index.isUnique; }); + } + } + }; + Table.prototype.findColumnByName = function (name) { + return this.columns.find(function (column) { return column.name === name; }); + }; + /** + * Returns all column indices. + */ + Table.prototype.findColumnIndices = function (column) { + return this.indices.filter(function (index) { + return !!index.columnNames.find(function (columnName) { return columnName === column.name; }); + }); + }; + /** + * Returns all column foreign keys. + */ + Table.prototype.findColumnForeignKeys = function (column) { + return this.foreignKeys.filter(function (foreignKey) { + return !!foreignKey.columnNames.find(function (columnName) { return columnName === column.name; }); + }); + }; + /** + * Returns all column uniques. + */ + Table.prototype.findColumnUniques = function (column) { + return this.uniques.filter(function (unique) { + return !!unique.columnNames.find(function (columnName) { return columnName === column.name; }); + }); + }; + /** + * Returns all column checks. + */ + Table.prototype.findColumnChecks = function (column) { + return this.checks.filter(function (check) { + return !!check.columnNames.find(function (columnName) { return columnName === column.name; }); + }); + }; + // ------------------------------------------------------------------------- + // Static Methods + // ------------------------------------------------------------------------- + /** + * Creates table from a given entity metadata. + */ + Table.create = function (entityMetadata, driver) { + var options = { + name: driver.buildTableName(entityMetadata.tableName, entityMetadata.schema, entityMetadata.database), + engine: entityMetadata.engine, + columns: entityMetadata.columns + .filter(function (column) { return column; }) + .map(function (column) { return _util_TableUtils__WEBPACK_IMPORTED_MODULE_3__[/* TableUtils */ "a"].createTableColumnOptions(column, driver); }), + indices: entityMetadata.indices + .filter(function (index) { return index.synchronize === true; }) + .map(function (index) { return _TableIndex__WEBPACK_IMPORTED_MODULE_1__[/* TableIndex */ "a"].create(index); }), + uniques: entityMetadata.uniques.map(function (unique) { return _TableUnique__WEBPACK_IMPORTED_MODULE_4__[/* TableUnique */ "a"].create(unique); }), + checks: entityMetadata.checks.map(function (check) { return _TableCheck__WEBPACK_IMPORTED_MODULE_5__[/* TableCheck */ "a"].create(check); }), + exclusions: entityMetadata.exclusions.map(function (exclusion) { return _TableExclusion__WEBPACK_IMPORTED_MODULE_6__[/* TableExclusion */ "a"].create(exclusion); }), + }; + return new Table(options); + }; + return Table; +}()); + + +//# sourceMappingURL=Table.js.map + + +/***/ }), +/* 6 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OrmUtils; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +var OrmUtils = /** @class */ (function () { + function OrmUtils() { + } + // ------------------------------------------------------------------------- + // Public methods + // ------------------------------------------------------------------------- + /** + * Chunks array into peaces. + */ + OrmUtils.chunk = function (array, size) { + return Array.from(Array(Math.ceil(array.length / size)), function (_, i) { + return array.slice(i * size, i * size + size); + }); + }; + OrmUtils.splitClassesAndStrings = function (clsesAndStrings) { + return [ + (clsesAndStrings).filter(function (cls) { return typeof cls !== "string"; }), + (clsesAndStrings).filter(function (str) { return typeof str === "string"; }), + ]; + }; + OrmUtils.groupBy = function (array, propertyCallback) { + return array.reduce(function (groupedArray, value) { + var key = propertyCallback(value); + var grouped = groupedArray.find(function (i) { return i.id === key; }); + if (!grouped) { + grouped = { id: key, items: [] }; + groupedArray.push(grouped); + } + grouped.items.push(value); + return groupedArray; + }, []); + }; + OrmUtils.uniq = function (array, criteriaOrProperty) { + return array.reduce(function (uniqueArray, item) { + var found = false; + if (criteriaOrProperty instanceof Function) { + var itemValue_1 = criteriaOrProperty(item); + found = !!uniqueArray.find(function (uniqueItem) { return criteriaOrProperty(uniqueItem) === itemValue_1; }); + } + else if (typeof criteriaOrProperty === "string") { + found = !!uniqueArray.find(function (uniqueItem) { return uniqueItem[criteriaOrProperty] === item[criteriaOrProperty]; }); + } + else { + found = uniqueArray.indexOf(item) !== -1; + } + if (!found) + uniqueArray.push(item); + return uniqueArray; + }, []); + }; + OrmUtils.isObject = function (item) { + return (item && typeof item === "object" && !Array.isArray(item)); + }; + /** + * Deep Object.assign. + * + * @see http://stackoverflow.com/a/34749873 + */ + OrmUtils.mergeDeep = function (target) { + var _a, _b; + var sources = []; + for (var _i = 1; _i < arguments.length; _i++) { + sources[_i - 1] = arguments[_i]; + } + if (!sources.length) + return target; + var source = sources.shift(); + if (this.isObject(target) && this.isObject(source)) { + for (var key in source) { + var value = source[key]; + if (key === "__proto__" || value instanceof Promise) + continue; + if (this.isObject(value) + && !(value instanceof Map) + && !(value instanceof Set) + && !(value instanceof Date) + && !(value instanceof Buffer) + && !(value instanceof RegExp)) { + if (!target[key]) + Object.assign(target, (_a = {}, _a[key] = Object.create(Object.getPrototypeOf(value)), _a)); + this.mergeDeep(target[key], value); + } + else { + Object.assign(target, (_b = {}, _b[key] = value, _b)); + } + } + } + return this.mergeDeep.apply(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([target], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(sources))); + }; + /** + * Deep compare objects. + * + * @see http://stackoverflow.com/a/1144249 + */ + OrmUtils.deepCompare = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var i, l, leftChain, rightChain; + if (arguments.length < 1) { + return true; // Die silently? Don't know how to handle such case, please help... + // throw "Need two or more arguments to compare"; + } + for (i = 1, l = arguments.length; i < l; i++) { + leftChain = []; // Todo: this can be cached + rightChain = []; + if (!this.compare2Objects(leftChain, rightChain, arguments[0], arguments[i])) { + return false; + } + } + return true; + }; + /** + * Check if two entity-id-maps are the same + */ + OrmUtils.compareIds = function (firstId, secondId) { + if (firstId === undefined || firstId === null || secondId === undefined || secondId === null) + return false; + // Optimized version for the common case + if (((typeof firstId.id === "string" && typeof secondId.id === "string") || + (typeof firstId.id === "number" && typeof secondId.id === "number")) && + Object.keys(firstId).length === 1 && + Object.keys(secondId).length === 1) { + return firstId.id === secondId.id; + } + return OrmUtils.deepCompare(firstId, secondId); + }; + /** + * Transforms given value into boolean value. + */ + OrmUtils.toBoolean = function (value) { + if (typeof value === "boolean") + return value; + if (typeof value === "string") + return value === "true" || value === "1"; + if (typeof value === "number") + return value > 0; + return false; + }; + /** + * Composes an object from the given array of keys and values. + */ + OrmUtils.zipObject = function (keys, values) { + return keys.reduce(function (object, column, index) { + object[column] = values[index]; + return object; + }, {}); + }; + /** + * Compares two arrays. + */ + OrmUtils.isArraysEqual = function (arr1, arr2) { + if (arr1.length !== arr2.length) + return false; + return arr1.every(function (element) { + return arr2.indexOf(element) !== -1; + }); + }; + // ------------------------------------------------------------------------- + // Private methods + // ------------------------------------------------------------------------- + OrmUtils.compare2Objects = function (leftChain, rightChain, x, y) { + var p; + // remember that NaN === NaN returns false + // and isNaN(undefined) returns true + if (Number.isNaN(x) && Number.isNaN(y)) + return true; + // Compare primitives and functions. + // Check if both arguments link to the same object. + // Especially useful on the step where we compare prototypes + if (x === y) + return true; + // Unequal, but either is null or undefined (use case: jsonb comparasion) + // PR #3776, todo: add tests + if (x === null || y === null || x === undefined || y === undefined) + return false; + // Fix the buffer compare bug. + // See: https://github.com/typeorm/typeorm/issues/3654 + if ((typeof x.equals === "function" || x.equals instanceof Function) && x.equals(y)) + return true; + // Works in case when functions are created in constructor. + // Comparing dates is a common scenario. Another built-ins? + // We can even handle functions passed across iframes + if ((typeof x === "function" && typeof y === "function") || + (x instanceof Date && y instanceof Date) || + (x instanceof RegExp && y instanceof RegExp) || + (x instanceof String && y instanceof String) || + (x instanceof Number && y instanceof Number)) + return x.toString() === y.toString(); + // At last checking prototypes as good as we can + if (!(x instanceof Object && y instanceof Object)) + return false; + if (x.isPrototypeOf(y) || y.isPrototypeOf(x)) + return false; + if (x.constructor !== y.constructor) + return false; + if (x.prototype !== y.prototype) + return false; + // Check for infinitive linking loops + if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1) + return false; + // Quick checking of one object being a subset of another. + // todo: cache the structure of arguments[0] for performance + for (p in y) { + if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { + return false; + } + else if (typeof y[p] !== typeof x[p]) { + return false; + } + } + for (p in x) { + if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { + return false; + } + else if (typeof y[p] !== typeof x[p]) { + return false; + } + switch (typeof (x[p])) { + case "object": + case "function": + leftChain.push(x); + rightChain.push(y); + if (!this.compare2Objects(leftChain, rightChain, x[p], y[p])) { + return false; + } + leftChain.pop(); + rightChain.pop(); + break; + default: + if (x[p] !== y[p]) { + return false; + } + break; + } + } + return true; + }; + return OrmUtils; +}()); + + +//# sourceMappingURL=OrmUtils.js.map + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97).Buffer)) + +/***/ }), +/* 7 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ColorIndicator = void 0;\nconst Singleton_1 = __webpack_require__(/*! ../Singleton */ \"./node_modules/cordova-sites/dist/client/js/Singleton.js\");\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nclass ColorIndicator extends Singleton_1.Singleton {\n getAverageImgColor(imgEl, areaWidth, areaHeight) {\n //https://stackoverflow.com/questions/2541481/get-average-color-of-image-via-javascript\n let blockSize = 5, // only visit every 5 pixels\n defaultRGB = { r: 255, g: 255, b: 255 }, // for non-supporting envs\n canvas = document.createElement('canvas'), context = canvas.getContext && canvas.getContext('2d'), data, width, height, i = -4 * blockSize, //start with first pixel\n length, rgb = { r: 0, g: 0, b: 0 }, count = 0;\n if (!context) {\n return defaultRGB;\n }\n height = canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height;\n width = canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width;\n areaWidth = Helper_1.Helper.nonNull(areaWidth, width);\n areaHeight = Helper_1.Helper.nonNull(areaWidth, height);\n context.drawImage(imgEl, 0, 0);\n try {\n data = context.getImageData(0, 0, Math.min(width, areaWidth), Math.min(height, areaHeight));\n }\n catch (e) {\n /* security error, img on diff domain */\n console.error(e);\n return defaultRGB;\n }\n length = data.data.length;\n while ((i += blockSize * 4) < length) {\n ++count;\n rgb.r += data.data[i];\n rgb.g += data.data[i + 1];\n rgb.b += data.data[i + 2];\n }\n // ~~ used to floor values\n rgb.r = ~~(rgb.r / count);\n rgb.g = ~~(rgb.g / count);\n rgb.b = ~~(rgb.b / count);\n return rgb;\n }\n invertColorBW(r, g, b) {\n return this.invertColor(r, g, b, true);\n }\n invertColor(r, g, b, bw) {\n if (typeof r === \"object\") {\n bw = g || bw;\n g = r.g;\n b = r.b;\n r = r.r;\n }\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\n ? { r: 0, g: 0, b: 0 }\n : { r: 255, g: 255, b: 255 };\n }\n // invert color components\n r = (255 - r);\n g = (255 - g);\n b = (255 - b);\n // pad each with zeros and return\n return {\n r: r,\n g: g,\n b: b,\n };\n }\n toHEX(r, g, b) {\n if (typeof r === \"object\") {\n g = r.g;\n b = r.b;\n r = r.r;\n }\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n return \"#\" + Helper_1.Helper.padZero(r) + Helper_1.Helper.padZero(g) + Helper_1.Helper.padZero(b);\n }\n}\nexports.ColorIndicator = ColorIndicator;\n//# sourceMappingURL=ColorIndicator.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/ColorIndicator/ColorIndicator.js?"); + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Helper = void 0; +/** + * Eine Klasse mit häufig genutzten, nützlichen Funktionen + */ +const JsonHelper_1 = __webpack_require__(192); +class Helper { + /** + * Testet, ob eine Variable null oder Undefined ist + * + * @param variable + * @returns {boolean} + */ + static isNull(variable, ...args) { + return Helper.isAllNull(...arguments); + } + static isAllNull(...args) { + for (let i = 0; i < args.length; i++) { + if (!(args[i] === null || args[i] === undefined)) { + return false; + } + } + return true; + } + static isAtLeastOneNull(...args) { + return !Helper.isAllNull(...args); + } + /** + * Testet, ob eine Variable nicht (null oder undefined) ist + * + * @param variable + * @returns {boolean} + */ + static isNotNull(variable, ...args) { + return Helper.isAllNotNull(...arguments); + } + static isAllNotNull(...args) { + for (let i = 0; i < args.length; i++) { + if ((args[i] === null || args[i] === undefined)) { + return false; + } + } + return true; + } + static isAtLeastOneNotNull(...args) { + return !Helper.isAllNull(...args); + } + /** + * Gibt den ersten übergebenen Wert, der nicht (null oder undefined) ist, zurück + * + * @param val1 + * @param val2 + * @param args + * @returns {*} + */ + static nonNull(val1, val2, ...args) { + for (let i = 0; i < arguments.length; i++) { + if (Helper.isNotNull(arguments[i])) { + return arguments[i]; + } + } + return null; + } + /** + * Testet, ob der übergebene Index am Objekt gesetzt ist. Werden mehrere Indexes übergeben, so wird getestet, + * ob die "Index-Kette" gesetzt ist. + * Bsp.: + * Helper.isSet({"index1":{"index2":value}}, "index1", "index2") ist wahr + * + * @param object + * @param indexes + * @returns {*} + */ + static isSet(object, ...indexes) { + if (Helper.isNotNull(object)) { + if (indexes.length === 0) { + return true; + } + return (Helper.isSet.apply(null, [object[indexes[0]]].concat(indexes.slice(1)))); + } + return false; + } + /** + * Testet, ob ein Wert null oder Leerstring, bzw nur aus leerzeichend bestehender String ist + * + * @param value + * @returns {boolean} + */ + static empty(value) { + return (Helper.isNull(value) || (typeof value === 'string' && value.trim() === "")); + } + /** + * Testet, ob ein Wert NICHT (null oder Leerstring, bzw nur aus leerzeichend bestehender String ist) + * + * @param value + * @returns {boolean} + */ + static notEmpty(value) { + return !Helper.empty(value); + } + static arrayToObject(array, indexFunction) { + let obj = {}; + array.forEach(val => { + obj[indexFunction(val)] = val; + }); + return obj; + } + /** + * Deepcopies JSON + * + * @param obj + * @returns {*} + */ + static cloneJson(obj) { + return JsonHelper_1.JsonHelper.deepCopy(obj); + } + /** + * Erstellt ein FormData-Object von JSON-Data. Nützlich für fetch + * + * @param obj + * @returns {FormData} + */ + static formDataFromObject(obj) { + let formData = new FormData(); + for (let k in obj) { + formData.set(k, obj[k]); + } + return formData; + } + static shuffleArray(array) { + let currentIndex = array.length, temporaryValue, randomIndex; + // While there remain elements to shuffle... + while (0 !== currentIndex) { + // Pick a remaining element... + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; + // And swap it with the current element. + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + return array; + } + static padZero(n, width, z) { + z = Helper.nonNull(z, '0'); + n = n + ''; + width = Helper.nonNull(width, 1); + return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; + } + static deepEqual(a, b) { + if (a === b) { + return true; + } + if (typeof a === "object" && typeof b === "object") { + let keysOfB = Object.keys(b); + let childrenDeepEqual = Object.keys(a).every((key) => { + let index = keysOfB.indexOf(key); + if (index < 0) { + return false; + } + keysOfB.splice(index, 1); + return Helper.deepEqual(a[key], b[key]); + }); + return (childrenDeepEqual && keysOfB.length === 0); + } + return false; + } + //Ältere evtl nützliche Funktionen + static htmlspecialcharsDecode(text) { + const map = { + '&': '&', + '&': "&", + '<': '<', + '>': '>', + '"': '"', + ''': "'", + '’': "’", + '‘': "‘", + '–': "–", + '—': "—", + '…': "…", + '”': '”' + }; + if (Helper.isNotNull(text) && typeof text.replace === "function") { + return text.replace(/\&[\w\d\#]{2,5}\;/g, function (m) { + return map[m]; + }); + } + return text; + } + /** + * Inverts the key-Values for an object + * @param obj + * @return {*} + */ + static invertKeyValues(obj) { + let new_obj = {}; + for (let prop in obj) { + if (obj.hasOwnProperty(prop)) { + new_obj[obj[prop]] = prop; + } + } + return new_obj; + } + static asyncForEach(array, callback, runAsyncronous) { + return __awaiter(this, void 0, void 0, function* () { + runAsyncronous = Helper.nonNull(runAsyncronous, false); + let validPromises = []; + for (let i = 0; i < array.length; i++) { + let index = i; + let currentPromise = Promise.resolve(callback(array[index], index, array)); + if (!runAsyncronous) { + yield currentPromise; + } + validPromises.push(currentPromise); + } + return Promise.all(validPromises); + }); + } + static escapeRegExp(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + } + static objectForEach(object, callback) { + Object.keys(object).forEach(key => { + callback(object[key], key, object); + }); + } + static toArray(object) { + let res = []; + for (let k in object) { + res.push(object[k]); + } + return res; + } + static imageUrlIsEmpty(url) { + return (Helper.isNull(url) || url.trim() === "" || url.trim() === "data:"); + } + static newPromiseWithResolve() { + let resolver = null; + let rejecter = null; + let promise = new Promise((resolve, reject) => { + resolver = resolve; + rejecter = reject; + }); + promise["resolve"] = resolver; + promise["reject"] = rejecter; + return promise; + } + static isMobileApp() { + return (typeof device !== "undefined" && device.platform !== "browser"); + } + static toSnakeCase(camelCase) { + return camelCase.replace(/([A-Z])/g, function (find, something, position) { return ((position > 0) ? "_" : "") + find[0].toLowerCase(); }); + } + static wait(timeout, result) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(r => { + setTimeout(() => { + r(result); + }, timeout); + }); + }); + } + static timeout(time, otherPromise, timeoutResult) { + return __awaiter(this, void 0, void 0, function* () { + return Promise.race([otherPromise, Helper.wait(time).then(() => { + if (timeoutResult === undefined) { + return Promise.reject(); + } + else { + return timeoutResult; + } + })]); + }); + } +} +exports.Helper = Helper; +//# sourceMappingURL=Helper.js.map /***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js ***! - \*******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/* 8 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractFragment = void 0;\nconst Context_1 = __webpack_require__(/*! ./Context */ \"./node_modules/cordova-sites/dist/client/js/Context/Context.js\");\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\n/**\n * Ein Fragment ist ein TeilView einer Ansicht.\n */\nclass AbstractFragment extends Context_1.Context {\n /**\n * Erstellt ein neues Fragment\n *\n * @param site\n * @param view\n */\n constructor(site, view) {\n super(view);\n this._site = site;\n this._viewQuery = null;\n this._active = true;\n }\n /**\n * Gibt die zugehörige Seite zurück\n *\n * @returns\n */\n getSite() {\n if (this._site instanceof AbstractFragment) {\n return this._site.getSite();\n }\n return this._site;\n }\n startSite(site, args) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._site.startSite(site, args);\n });\n }\n /**\n * Gibt zurück, ob das Fragment aktiv ist. Wenn nicht, wird es in der Seite nicht angezeigt\n *\n * @returns {boolean}\n */\n isActive() {\n return this._active;\n }\n setViewQuery(query) {\n this._viewQuery = query;\n }\n getViewQuery() {\n return this._viewQuery;\n }\n setActive(active) {\n this._active = active;\n if (Helper_1.Helper.isNotNull(this._view)) {\n if (active) {\n this._view.classList.remove(\"hidden\");\n }\n else {\n this._view.classList.add(\"hidden\");\n }\n }\n }\n}\nexports.AbstractFragment = AbstractFragment;\n//# sourceMappingURL=AbstractFragment.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BroadcasterResult; }); +/** + * Broadcaster execution result - promises executed by operations and number of executed listeners and subscribers. + */ +var BroadcasterResult = /** @class */ (function () { + function BroadcasterResult() { + /** + * Number of executed listeners and subscribers. + */ + this.count = 0; + /** + * Promises returned by listeners and subscribers which needs to be awaited. + */ + this.promises = []; + } + return BroadcasterResult; +}()); + + +//# sourceMappingURL=BroadcasterResult.js.map + /***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/AbstractSite.js": -/*!***************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/AbstractSite.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/* 9 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractSite = void 0;\nconst Context_1 = __webpack_require__(/*! ./Context */ \"./node_modules/cordova-sites/dist/client/js/Context/Context.js\");\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Translator_1 = __webpack_require__(/*! ../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst EventManager_1 = __webpack_require__(/*! ../Legacy/EventManager/EventManager */ \"./node_modules/cordova-sites/dist/client/js/Legacy/EventManager/EventManager.js\");\n/**\n * Basisklasse für eine Seite\n */\nclass AbstractSite extends Context_1.Context {\n /**\n * Construktor für eine Seite, sollte überladen werden und view sollte definiert werden. Seitenkonstruktoren bekommen NUR den siteManager übergebn\n * @param siteManager\n * @param view\n */\n constructor(siteManager, view) {\n super(view);\n this._isDestroying = false;\n this._isDestroying = false;\n //Promise und Resolver, welches erfüllt wird, wenn Seite beendet wird\n this._finishPromiseResolver = {\n resolve: null,\n reject: null\n };\n this._finishPromise = new Promise((resolve, reject) => {\n this._finishPromiseResolver = { resolve: resolve, reject: reject };\n });\n //Promise, welches erfüllt wird, wenn onConstruct-Promsise erfüllt wurde. Wird für onDestroy gebraucht\n this._onConstructPromise = null;\n this._parameters = {};\n this._result = null;\n this._siteManager = siteManager;\n this._title = {\n element: null,\n text: null\n };\n this._loadingSymbol = null;\n //Wird zum speichern der zugehörigen HistoryID genutzt\n this._historyId = null;\n }\n getTitle() {\n return this._title;\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n this.setParameters(Helper_1.Helper.nonNull(constructParameters, {}));\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_CONSTRUCT, {\n site: this, params: constructParameters\n });\n return res;\n });\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onStart.call(this, pauseArguments);\n this._updateTitle();\n this.updateUrl(this._parameters);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_START, {\n site: this, params: pauseArguments\n });\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_VIEW_LOADED, {\n site: this\n });\n return res;\n });\n }\n onPause() {\n const _super = Object.create(null, {\n onPause: { get: () => super.onPause }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onPause.call(this);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_PAUSE, {\n site: this\n });\n return res;\n });\n }\n onDestroy() {\n const _super = Object.create(null, {\n onDestroy: { get: () => super.onDestroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onDestroy.call(this);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_DESTROY, {\n site: this\n });\n return res;\n });\n }\n /**\n * Setzt den Titel der Website\n *\n * @param titleElement\n * @param title\n */\n setTitle(titleElement, title) {\n if (typeof titleElement === \"string\") {\n let args = title;\n title = titleElement;\n titleElement = Translator_1.Translator.makePersistentTranslation(title, args);\n }\n title = Helper_1.Helper.nonNull(title, titleElement.textContent);\n this._title = {\n element: titleElement,\n text: title\n };\n this._updateTitle();\n }\n setParameter(name, value) {\n this._parameters[name] = value;\n this.updateUrl(this._parameters);\n }\n setParameters(parameters) {\n this._parameters = parameters;\n this.updateUrl(this._parameters);\n }\n getParameters() {\n return this._parameters;\n }\n showLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNull(this._loadingSymbol)) {\n this._loadingSymbol = ViewInflater_1.ViewInflater.createLoadingSymbol(\"overlay\");\n let view = yield this.getViewPromise();\n if (Helper_1.Helper.isNotNull(this._loadingSymbol)) {\n view.appendChild(this._loadingSymbol);\n }\n }\n });\n }\n removeLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNotNull(this._loadingSymbol)) {\n this._loadingSymbol.remove();\n this._loadingSymbol = null;\n }\n });\n }\n onBeforeUnload(e) {\n return null;\n }\n /**\n * Updatet den Title der Webseite\n * @protected\n */\n _updateTitle() {\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this._siteManager.updateTitle(this._title.text);\n }\n }\n updateUrl(args) {\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this._siteManager.updateUrl(this, args);\n }\n }\n /**\n * Startet eine andere Seite mit den angegebenen Parametern\n *\n * @param site\n * @param args\n * @returns {*|Promise<*>}\n */\n startSite(site, args) {\n return this._siteManager.startSite(site, args);\n }\n /**\n * Alias für\n * this.startSite(...);\n * this.finish(...);\n *\n * @param site\n * @param args\n * @param result\n * @returns {*|Promise<*>}\n */\n finishAndStartSite(site, args, result) {\n let res = this.startSite(site, args);\n this.finish(result);\n return res;\n }\n /**\n * Beendet die aktuelle Seite. Kann ein Ergebnis setzen\n *\n * @param result\n */\n finish(result) {\n if (!(this._isDestroying || this._state === Context_1.Context.STATE_DESTROYED)) {\n this._isDestroying = true;\n if (Helper_1.Helper.isNotNull(result)) {\n this.setResult(result);\n }\n return this._siteManager.endSite(this);\n }\n }\n goBack() {\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this._siteManager.goBack();\n }\n }\n /**\n * Wird aufgerufen, falls zurück gedrückt wird. Gib false zurück, um das beenden der Seite zu verhindern\n */\n onBackPressed() {\n }\n /**\n * TODO Einbauen\n */\n onMenuPressed() {\n }\n /**\n * TODO Einbauen\n */\n onSearchPressed() {\n }\n /**\n * Gibt das FinishPromise zurück\n * @returns {Promise}\n */\n getFinishPromise() {\n return this._finishPromise;\n }\n /**\n * Setzt das Resultat. Letztes Setzen gilt\n * @param result\n */\n setResult(result) {\n this._result = result;\n }\n /**\n * Gibt den FinishResolver zurück. Genutzt, um FinishPromise zu resolven order rejecten\n * @returns {*}\n */\n getFinishResolver() {\n return this._finishPromiseResolver;\n }\n addEventListener(siteEvent, listener) {\n return EventManager_1.EventManager.getInstance().addListener(siteEvent, data => {\n if (data.site && data.site instanceof this.constructor) {\n listener(data);\n }\n });\n }\n isDestroying() {\n return this._isDestroying;\n }\n}\nexports.AbstractSite = AbstractSite;\nAbstractSite.EVENT = {\n ON_CONSTRUCT: \"abstract-site-on-construct\",\n ON_VIEW_LOADED: \"abstract-site-on-view-loaded\",\n ON_START: \"abstract-site-on-start\",\n ON_PAUSE: \"abstract-site-on-pause\",\n ON_DESTROY: \"abstract-site-on-destroy\"\n};\n//# sourceMappingURL=AbstractSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/AbstractSite.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return FindOperator; }); +/** + * Find Operator used in Find Conditions. + */ +var FindOperator = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function FindOperator(type, value, useParameter, multipleParameters, getSql, objectLiteralParameters) { + if (useParameter === void 0) { useParameter = true; } + if (multipleParameters === void 0) { multipleParameters = false; } + this._type = type; + this._value = value; + this._useParameter = useParameter; + this._multipleParameters = multipleParameters; + this._getSql = getSql; + this._objectLiteralParameters = objectLiteralParameters; + } + Object.defineProperty(FindOperator.prototype, "useParameter", { + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Indicates if parameter is used or not for this operator. + * Extracts final value if value is another find operator. + */ + get: function () { + if (this._value instanceof FindOperator) + return this._value.useParameter; + return this._useParameter; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FindOperator.prototype, "multipleParameters", { + /** + * Indicates if multiple parameters must be used for this operator. + * Extracts final value if value is another find operator. + */ + get: function () { + if (this._value instanceof FindOperator) + return this._value.multipleParameters; + return this._multipleParameters; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FindOperator.prototype, "type", { + /** + * Gets the Type of this FindOperator + */ + get: function () { + return this._type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FindOperator.prototype, "value", { + /** + * Gets the final value needs to be used as parameter value. + */ + get: function () { + if (this._value instanceof FindOperator) + return this._value.value; + return this._value; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FindOperator.prototype, "objectLiteralParameters", { + /** + * Gets ObjectLiteral parameters. + */ + get: function () { + if (this._value instanceof FindOperator) + return this._value.objectLiteralParameters; + return this._objectLiteralParameters; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FindOperator.prototype, "child", { + /** + * Gets the child FindOperator if it exists + */ + get: function () { + if (this._value instanceof FindOperator) + return this._value; + return undefined; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(FindOperator.prototype, "getSql", { + /** + * Gets the SQL generator + */ + get: function () { + if (this._value instanceof FindOperator) + return this._value.getSql; + return this._getSql; + }, + enumerable: false, + configurable: true + }); + return FindOperator; +}()); + + +//# sourceMappingURL=FindOperator.js.map + /***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/ContainerSite.js": -/*!****************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/ContainerSite.js ***! - \****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/* 10 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerSite = void 0;\nconst TemplateSite_1 = __webpack_require__(/*! ./TemplateSite */ \"./node_modules/cordova-sites/dist/client/js/Context/TemplateSite.js\");\nconst containerTemplate = __webpack_require__(/*! ../../html/siteTemplates/container.html */ \"./node_modules/cordova-sites/dist/client/html/siteTemplates/container.html\");\n/**\n * Seite, welche das Container-Template benutzt\n */\nclass ContainerSite extends TemplateSite_1.TemplateSite {\n /**\n * Constructor für die ContainerSite\n *\n * @param siteManager\n * @param view\n */\n constructor(siteManager, view) {\n super(siteManager, view, containerTemplate, \"#site-content\");\n }\n}\nexports.ContainerSite = ContainerSite;\n//# sourceMappingURL=ContainerSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/ContainerSite.js?"); +/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return PlatformTools; }); +/* unused harmony export EventEmitter */ +/* unused harmony export Readable */ +/* unused harmony export Writable */ +/** + * Browser's implementation of the platform-specific tools. + * + * This file gonna replace PlatformTools for browser environment. + * For node.js environment this class is not getting packaged. + * Don't use methods of this class in the code, use PlatformTools methods instead. + */ +var PlatformTools = /** @class */ (function () { + function PlatformTools() { + } + /** + * Gets global variable where global stuff can be stored. + */ + PlatformTools.getGlobalVariable = function () { + if (typeof window !== "undefined") { + return window; + } + else { + // NativeScript uses global, not window + return global; + } + }; + /** + * Loads ("require"-s) given file or package. + * This operation only supports on node platform + */ + PlatformTools.load = function (name) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: require(\"" + name + "\")."); + return ""; + }; + /** + * Normalizes given path. Does "path.normalize". + */ + PlatformTools.pathNormalize = function (pathStr) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: path.normalize(\"" + pathStr + "\")."); + return ""; + }; + /** + * Gets file extension. Does "path.extname". + */ + PlatformTools.pathExtname = function (pathStr) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: path.extname(\"" + pathStr + "\")."); + return ""; + }; + /** + * Resolved given path. Does "path.resolve". + */ + PlatformTools.pathResolve = function (pathStr) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: path.resolve(\"" + pathStr + "\")."); + return ""; + }; + /** + * Synchronously checks if file exist. Does "fs.existsSync". + */ + PlatformTools.fileExist = function (pathStr) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: fs.existsSync(\"" + pathStr + "\")."); + return false; + }; + PlatformTools.dotenv = function (pathStr) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: dotenv.config({ path: \"" + pathStr + "\" })."); + }; + /** + * Gets environment variable. + */ + PlatformTools.getEnvVariable = function (name) { + // if (this.type === "browser") + // throw new Error(`This option/function is not supported in the browser environment. Failed operation: process.env["${name}"].`); + return undefined; + }; + PlatformTools.readFileSync = function (filename) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: fs.readFileSync(\"" + filename + "\")."); + return null; + }; + PlatformTools.appendFileSync = function (filename, data) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: fs.appendFileSync(\"" + filename + "\")."); + }; + PlatformTools.writeFile = function (path, data) { + if (this.type === "browser") + throw new Error("This option/function is not supported in the browser environment. Failed operation: fs.writeFile(\"" + path + "\")."); + return Promise.reject(null); + }; + /** + * Highlights sql string to be print in the console. + */ + PlatformTools.highlightSql = function (sql) { + return sql; + }; + /** + * Highlights json string to be print in the console. + */ + PlatformTools.highlightJson = function (json) { + return json; + }; + /** + * Logging functions needed by AdvancedConsoleLogger (but here without chalk) + */ + PlatformTools.logInfo = function (prefix, info) { + console.info(prefix + " ", info); + }; + PlatformTools.logError = function (prefix, error) { + console.error(prefix + " ", error); + }; + PlatformTools.logWarn = function (prefix, warning) { + console.warn(prefix + " ", warning); + }; + PlatformTools.log = function (message) { + console.log(message); + }; + PlatformTools.warn = function (message) { + return message; + }; + /** + * Type of the currently running platform. + */ + PlatformTools.type = "browser"; + return PlatformTools; +}()); + +/** + * These classes are needed for stream operations or + * in the mongodb driver. Both aren't supported in the browser. + */ +var EventEmitter = /** @class */ (function () { + function EventEmitter() { + } + return EventEmitter; +}()); + +var Readable = /** @class */ (function () { + function Readable() { + } + return Readable; +}()); + +var Writable = /** @class */ (function () { + function Writable() { + } + return Writable; +}()); + +if (typeof window !== "undefined") { + window.Buffer = __webpack_require__(97).Buffer; +} +// NativeScript uses global, not window +if (typeof global !== "undefined") { + global.Buffer = __webpack_require__(97).Buffer; +} + +//# sourceMappingURL=BrowserPlatformTools.js.map + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(193))) /***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Context.js": -/*!**********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Context.js ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\n/**\n * Basis-Klasse für Seiten und Fragmente\n */\nclass Context {\n /**\n * Erstellt einen neuen Context. Erwartet den Link zu einem HTML-File, welches vom ViewInflater geladen werden kann.\n * Im Constructor sollten fragmente hinzugefügt werden (nachdem super.constructor(<>) aufgerufen wurde)\n *\n * @param view\n */\n constructor(view) {\n this.onViewLoadedCalled = false;\n this._pauseParameters = [];\n this._view = null;\n this._fragments = [];\n this._state = Context.STATE_CREATED;\n this._viewLoadedPromise = Helper_1.Helper.newPromiseWithResolve();\n this._viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then((siteContent) => {\n this._view = siteContent;\n return siteContent;\n }).catch(e => {\n // @ts-ignore\n this._viewLoadedPromise.reject(e);\n });\n }\n getState() {\n return this._state;\n }\n /**\n * Wird von SiteManager aufgerufen, wenn Klasse erstellt wird. Das ViewPromise ist noch nicht zwangsweise geladen!\n * Gibt ein Promise zurück. onViewLoaded wird erst aufgerufen, wenn onConstruct-Promise und view-Promise fullfilled sind.\n *\n * @param constructParameters, Object|Null\n * @returns {Promise}\n */\n onConstruct(constructParameters) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_CONSTRUCTED;\n this.constructParameters = constructParameters;\n let onConstructPromises = [];\n for (let k in this._fragments) {\n onConstructPromises.push(this._fragments[k].onConstruct.apply(this._fragments[k], [constructParameters]));\n onConstructPromises.push(this._fragments[k]._viewPromise);\n }\n return Promise.all(onConstructPromises);\n });\n }\n callOnViewLoaded() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.onViewLoadedCalled) {\n this.onViewLoadedCalled = true;\n const res = yield this.onViewLoaded();\n // @ts-ignore\n this._viewLoadedPromise.resolve(res);\n }\n return this._viewLoadedPromise;\n });\n }\n /**\n * Methode wird aufgerufen, sobald onConstruct-Promise und view-Promise fullfilled sind.\n * View ist hier noch nicht im Dokument hinzugefügt.\n *\n * Benutze diese Methode, um die View beim starten zu manipulieren.\n */\n onViewLoaded() {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_VIEW_LOADED;\n let onViewLoadedPromises = [];\n for (let k in this._fragments) {\n onViewLoadedPromises.push(this._fragments[k]._viewPromise.then(() => this._fragments[k].callOnViewLoaded()).then(() => this._fragments[k]._viewLoadedPromise.resolve()));\n }\n return Promise.all(onViewLoadedPromises);\n });\n }\n /**\n * onViewLoaded-Promise ist erfüllt => View wird dem Document hinzugefügt => onStart wird aufgerufen\n *\n * Seite wird pausiert => onPause wird aufgerufen => View wird aus dem Document entfernt => - etwas passiert -\n * => Seite wird fortgesetzt => View wird dem Document hinzugefügt => onStart wird mit dem Rückgabewert von onPause ausgeführt\n *\n * Zurückgegebenes Promise wird ignoriert!\n * @param pauseArguments, Object|NULL\n */\n onStart(pauseArguments) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_RUNNING;\n for (let k in this._fragments) {\n let fragment = this._fragments[k];\n fragment.onStart.apply(this._fragments[k], [yield this._fragments[k]._pauseParameters]);\n this._fragments[k]._viewPromise.then(function (fragmentView) {\n if (fragment.isActive()) {\n fragmentView.classList.remove(\"hidden\");\n }\n else {\n fragmentView.classList.add(\"hidden\");\n }\n });\n }\n });\n }\n /**\n * Seite wird pausiet => onPause wird ausgeführt => View wird aus dem Document entfernt\n * Seite wird beendet => onPause wird ausgeführt (falls State === running) => View wird aus dem Document entfernt\n * => onDestroy wird ausgeführt\n *\n * Rückgabe-Promise wird als Pause-Parameter gespeichert und wird beim Fortsetzen der Seite ausgeführt\n * @returns {Promise}\n */\n onPause(...args) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_PAUSED;\n for (let k in this._fragments) {\n let pauseParameters = this._fragments[k].onPause.apply(this._fragments[k], args);\n this._fragments[k].setPauseParameters(pauseParameters);\n }\n });\n }\n /**\n * Seite wird beendet => onPause wird ausgeführt (falls State === running) => View wird aus dem Document entfernt\n * => onDestroy wird ausgeführt\n *\n * Rückgabe-Promise wird ignoriert\n */\n onDestroy(...args) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_DESTROYED;\n for (let k in this._fragments) {\n this._fragments[k].onDestroy.apply(this._fragments[k], args);\n }\n });\n }\n isShowing() {\n return this._state === Context.STATE_RUNNING;\n }\n /**\n * Fügt ein neues Fragment hinzu.\n *\n * @param viewQuery\n * @param fragment\n */\n addFragment(viewQuery, fragment) {\n this._fragments.push(fragment);\n fragment.setViewQuery(viewQuery);\n this._viewPromise = Promise.all([this._viewPromise, fragment._viewPromise]).then(res => {\n res[0].querySelector(viewQuery).appendChild(res[1]);\n return res[0];\n }).catch(e => console.error(e));\n if (this._state >= Context.STATE_CONSTRUCTED) {\n fragment.onConstruct(this.constructParameters);\n }\n if (this._state >= Context.STATE_VIEW_LOADED) {\n Promise.all([this._viewLoadedPromise, fragment.getViewPromise()]).then(() => fragment.callOnViewLoaded());\n }\n if (this._state >= Context.STATE_RUNNING) {\n fragment._viewLoadedPromise.then(() => {\n if (this._state >= Context.STATE_RUNNING) {\n fragment.onStart();\n }\n });\n }\n }\n /**\n * Entfernt ein Fragment.\n *\n * @param fragment\n */\n removeFragment(fragment) {\n const index = this._fragments.indexOf(fragment);\n if (index !== -1) {\n this._fragments.splice(index, 1);\n }\n fragment._viewPromise.then(res => res.remove());\n this._fragments.push(fragment);\n if (this._state < Context.STATE_PAUSED) {\n fragment.onPause();\n }\n if (this._state < Context.STATE_DESTROYING) {\n fragment.onDestroy();\n }\n }\n /**\n * Findet ein Element anhand eines Selectors\n *\n * Wenn all = true, werden alle gefundenen Elemente zurückgegeben\n *\n * Wenn asPromise = true, wird das Ergebnis als Promise zurückgegeben. Hier wird gewartet, bis das _viewPromise fullfilled ist\n * Nutze das, um die View in onConstruct zu manipulieren. Evtl entfernen\n *\n * @param query\n * @param all\n * @param asPromise\n * @returns {*}\n */\n findBy(query, all, asPromise) {\n all = Helper_1.Helper.nonNull(all, false);\n asPromise = Helper_1.Helper.nonNull(asPromise, false);\n let getVal = function (root) {\n let res = null;\n if (all) {\n res = root.querySelectorAll(query);\n if (root.matches(query)) {\n res.push(root);\n }\n }\n else {\n if (root.matches(query)) {\n res = root;\n }\n else {\n res = root.querySelector(query);\n }\n }\n return res;\n };\n if (asPromise) {\n return this._viewPromise.then(function (rootView) {\n return getVal(rootView);\n });\n }\n return getVal(this._view);\n }\n find(selector) {\n if (this._view.matches(selector)) {\n return this._view;\n }\n else {\n return this._view.querySelector(selector);\n }\n }\n findAll(selector) {\n const res = this._view.querySelectorAll(selector);\n if (this._view.matches(selector)) {\n res.push(this._view);\n }\n return res;\n }\n /**\n * Setzt die PauseParameters\n * @param pauseParameters\n */\n setPauseParameters(pauseParameters) {\n this._pauseParameters = pauseParameters;\n }\n /**\n * Gibt das ViewPromise zurück\n * @returns {*}\n */\n getViewPromise() {\n return this._viewPromise;\n }\n}\nexports.Context = Context;\nContext.STATE_CREATED = 0;\nContext.STATE_CONSTRUCTED = 1;\nContext.STATE_VIEW_LOADED = 2;\nContext.STATE_RUNNING = 3;\nContext.STATE_PAUSED = 4;\nContext.STATE_DESTROYING = 5;\nContext.STATE_DESTROYED = 6;\n//# sourceMappingURL=Context.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Context.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Delegate/DelegateSite.js": -/*!************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Delegate/DelegateSite.js ***! - \************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DelegateSite = void 0;\nconst AbstractSite_1 = __webpack_require__(/*! ../AbstractSite */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractSite.js\");\nclass DelegateSite extends AbstractSite_1.AbstractSite {\n constructor(site) {\n super(undefined, document.createElement(\"span\"));\n /** @var {AbstractSite} */\n this._site = site;\n }\n setTitle(titleElement, title) {\n return this._site.setTitle(titleElement, title);\n }\n setParameter(name, value) {\n //Todo changing\n // return this._site.setParameter(name, value);\n }\n setParameters(parameters) {\n //TODO changing\n // return this._site.setParameters(parameters)\n }\n getParameters() {\n return this._site.getParameters();\n }\n showLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._site.showLoadingSymbol();\n });\n }\n removeLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._site.removeLoadingSymbol();\n });\n }\n _updateTitle() {\n return this._site._updateTitle();\n }\n updateUrl(args) {\n //todo\n // return this._site.updateUrl(args);\n }\n startSite(site, args) {\n return this._site.startSite(site, args);\n }\n finishAndStartSite(site, args, result) {\n return this._site.finishAndStartSite(site, args, result);\n }\n finish(result) {\n return this._site.finish(result);\n }\n goBack() {\n return this._site.goBack();\n }\n getFinishPromise() {\n return this._site.getFinishPromise();\n }\n setResult(result) {\n return this._site.setResult(result);\n }\n getFinishResolver() {\n return this._site.getFinishResolver();\n }\n addFragment(viewQuery, fragment) {\n return this._site.addFragment(viewQuery, fragment);\n }\n findBy(query, all, asPromise) {\n return this._site.findBy(query, all, asPromise);\n }\n setPauseParameters(pauseParameters) {\n return this._site.setPauseParameters(pauseParameters);\n }\n getViewPromise() {\n return this._site.getViewPromise();\n }\n getState() {\n return this._site.getState();\n }\n getTitle() {\n return this._site.getTitle();\n }\n isShowing() {\n return this._site.isShowing();\n }\n isDestroying() {\n return this._site.isDestroying();\n }\n}\nexports.DelegateSite = DelegateSite;\n//# sourceMappingURL=DelegateSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Delegate/DelegateSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Delegate/MasterSite.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Delegate/MasterSite.js ***! - \**********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MasterSite = void 0;\nconst AbstractSite_1 = __webpack_require__(/*! ../AbstractSite */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractSite.js\");\nconst Helper_1 = __webpack_require__(/*! ../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nclass MasterSite extends AbstractSite_1.AbstractSite {\n constructor(siteManager, view) {\n super(siteManager, view);\n this._delegates = [];\n }\n addDelegate(delegateSite) {\n this._delegates.push(delegateSite);\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onConstruct(constructParameters);\n }));\n return res;\n });\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onStart.call(this, pauseArguments);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onStart(pauseArguments);\n }));\n });\n }\n onBackPressed() {\n super.onBackPressed();\n this._delegates.forEach(delegate => {\n delegate.onBackPressed();\n });\n }\n onMenuPressed() {\n super.onMenuPressed();\n this._delegates.forEach(delegate => {\n delegate.onMenuPressed();\n });\n }\n onSearchPressed() {\n super.onSearchPressed();\n this._delegates.forEach(delegate => {\n delegate.onSearchPressed();\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onViewLoaded();\n }));\n return res;\n });\n }\n onPause() {\n const _super = Object.create(null, {\n onPause: { get: () => super.onPause }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onPause.call(this);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onPause();\n }));\n });\n }\n onDestroy() {\n const _super = Object.create(null, {\n onDestroy: { get: () => super.onDestroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onDestroy.call(this);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onDestroy();\n }));\n });\n }\n}\nexports.MasterSite = MasterSite;\n//# sourceMappingURL=MasterSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Delegate/MasterSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Fragment/AbstractWindowFragment.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Fragment/AbstractWindowFragment.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractWindowFragment = void 0;\nconst AbstractFragment_1 = __webpack_require__(/*! ../AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst ViewHelper_1 = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\nconst Translator_1 = __webpack_require__(/*! ../../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst NativeStoragePromise_1 = __webpack_require__(/*! ../../NativeStoragePromise */ \"./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js\");\nconst Toast_1 = __webpack_require__(/*! ../../Toast/Toast */ \"./node_modules/cordova-sites/dist/client/js/Toast/Toast.js\");\nconst template = __webpack_require__(/*! ../../../html/Framework/Fragment/abstractWindowTemplate.html */ \"./node_modules/cordova-sites/dist/client/html/Framework/Fragment/abstractWindowTemplate.html\");\nclass AbstractWindowFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view, position, title, id) {\n super(site, template);\n this.position = {\n x: 0,\n y: 0,\n anchorY: \"top\",\n anchorX: \"left\"\n };\n this.title = \"\";\n this._margin = { x: 0, y: 0 };\n this.saveData = {};\n this.state = \"normal\";\n this.popupWindow = null;\n this.translateTitle = true;\n this.position = Object.assign({ anchorY: \"top\", anchorX: \"left\" }, position);\n this.title = Helper_1.Helper.nonNull(title, \" \");\n if (id) {\n this.id = \"window-\" + id;\n }\n this._viewPromise = Promise.all([this._viewPromise, ViewInflater_1.ViewInflater.getInstance().load(view)]).then(res => {\n res[0].querySelector(\"#child-view\").replaceWith(res[1]);\n ViewInflater_1.ViewInflater.replaceWithChildren(res[1]);\n this._view = res[0];\n return res[0];\n }).catch(e => console.error(e));\n }\n setTitle(title) {\n if (this._titleElement) {\n ViewHelper_1.ViewHelper.removeAllChildren(this._titleElement);\n this._titleElement.appendChild(this.translateTitle ? Translator_1.Translator.makePersistentTranslation(title) : document.createTextNode(title));\n }\n this.title = title;\n }\n getDimension() {\n let computedStyle = window.getComputedStyle(this._container);\n let width = parseFloat(computedStyle.getPropertyValue(\"width\"));\n let height = parseFloat(computedStyle.getPropertyValue(\"height\"));\n return { x: Math.ceil(width) - this._margin.x, y: Math.ceil(height) - this._margin.y };\n }\n setDimension(x, y) {\n x += this._margin.x;\n y += this._margin.y;\n this._container.style.width = x + \"px\";\n this._container.style.height = y + \"px\";\n this.saveData.dimension = {\n x: x,\n y: y,\n };\n this._checkPositionAndDimension();\n this.save();\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this._container = this.findBy(\".window-container\");\n if (this.position.width || this.position.height) {\n this._container.style.width = this.position.width + \"px\";\n this._container.style.height = this.position.height + \"px\";\n }\n this._window = this.findBy(\".window\");\n this._titleElement = this.findBy(\"#title\");\n this._resizeElements = {\n x: [\n this._window,\n this.findBy(\".window-resize.left\"),\n this.findBy(\".window-resize.right\")\n ],\n y: [\n this._window,\n this._titleElement,\n this.findBy(\".window-resize.top\"),\n this.findBy(\".window-resize.bottom\")\n ],\n };\n yield this.load();\n this._checkPositionAndDimension();\n // this.moveTo(this.position.x, this.position.y);\n this.setTitle(this.title);\n this.addListeners();\n const buttonContainer = this.findBy(\"#title-buttons\");\n if (buttonContainer) {\n buttonContainer.remove();\n this._titleElement.parentNode.appendChild(buttonContainer);\n buttonContainer.querySelectorAll(\".title-button\").forEach(button => {\n button.addEventListener(\"click\", e => {\n this.onButtonClick(button.id, button, e);\n });\n });\n }\n return res;\n });\n }\n addListeners() {\n return __awaiter(this, void 0, void 0, function* () {\n let resizeStart = null;\n let multiplier;\n let dimension;\n let resizeStartListener = (x, y, e) => {\n if (e.target.classList.contains(\"window-resize\")) {\n e.stopPropagation();\n resizeStart = { x: x, y: y };\n let direction = e.target.dataset[\"direction\"].split(\",\");\n multiplier = { x: parseInt(direction[0]), y: parseInt(direction[1]) };\n dimension = this.getDimension();\n }\n };\n this.findBy(\".window-resize\", true).forEach(element => {\n element.addEventListener(\"mousedown\", (e) => {\n resizeStartListener(e.clientX, e.clientY, e);\n });\n });\n let mouseDownPos = null;\n let pos = null;\n let moveStartListener = (x, y, e) => {\n if (e.target === this._container || e.target.closest(\"#title\") === this._titleElement) {\n mouseDownPos = { x: x, y: y };\n pos = Object.assign({}, this.getPosition()); //Make copy\n this._container.classList.add(\"moving\");\n }\n this.makeActiveWindow();\n };\n this._container.addEventListener(\"mousedown\", (e) => {\n moveStartListener(e.clientX, e.clientY, e);\n });\n this._container.addEventListener(\"touchstart\", (e) => {\n if (e.touches.length === 1) {\n moveStartListener(e.touches[0].clientX, e.touches[0].clientY, e);\n }\n });\n let moveListener = (x, y) => {\n if (resizeStart !== null) {\n let diff = {\n x: (x - resizeStart.x) * (multiplier.x),\n y: (y - resizeStart.y) * (multiplier.y)\n };\n dimension = { x: dimension.x + diff.x, y: dimension.y + diff.y };\n this.setDimension(dimension.x, dimension.y);\n //TODO diff für Center berechnen...\n let moveDiff = { x: 0, y: 0 };\n if (multiplier.x * (this.position.anchorX === \"left\" ? 1 : -1) < 0) {\n moveDiff.x = diff.x * (this.position.anchorX === \"left\" ? -1 : 1);\n }\n if (multiplier.y * (this.position.anchorY === \"top\" ? 1 : -1) < 0) {\n moveDiff.y = diff.y * (this.position.anchorY === \"top\" ? -1 : 1);\n }\n this.moveAt(moveDiff.x, moveDiff.y);\n resizeStart = { x: x, y: y };\n }\n else if (mouseDownPos !== null) {\n let diff = {\n x: x - mouseDownPos.x,\n y: y - mouseDownPos.y,\n };\n mouseDownPos = { x, y };\n // const newPos = {x: pos.x + diff.x, y: pos.y + diff.y};\n this.moveAt(diff.x, diff.y);\n }\n };\n window.addEventListener(\"mousemove\", (e) => {\n moveListener(e.clientX, e.clientY);\n });\n window.addEventListener(\"touchmove\", (e) => {\n if (e.touches.length === 1) {\n moveListener(e.touches[0].clientX, e.touches[0].clientY);\n }\n });\n let endListener = (x, y, e) => {\n mouseDownPos = null;\n resizeStart = null;\n this._container.classList.remove(\"moving\");\n };\n window.addEventListener(\"mouseup\", (e) => {\n endListener(e.clientX, e.clientY, e);\n });\n window.addEventListener(\"touchend\", (e) => {\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n endListener(e.changedTouches[0].clientX, e.changedTouches[0].clientY, e);\n }\n });\n this._container.addEventListener(\"dblclick\", (e) => {\n if (e.target === this._container || e.target.closest(\"#title\") === this._titleElement) {\n this.toggleMinimize();\n }\n });\n window.addEventListener(\"resize\", () => {\n this._checkPositionAndDimension();\n });\n window.addEventListener(\"beforeunload\", () => {\n if (this.popupWindow) {\n this.id = null; //disable saving, since it should\n this.popupWindow.close();\n }\n });\n });\n }\n makeActiveWindow() {\n let activeWindow = document.querySelector(\".window-container.active-window\");\n if (activeWindow && activeWindow !== this._container) {\n activeWindow.classList.remove(\"active-window\");\n }\n this._container.classList.add(\"active-window\");\n }\n load() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.id) {\n const saveData = yield NativeStoragePromise_1.NativeStoragePromise.getItem(this.id);\n if (saveData) {\n this.saveData = saveData;\n if (saveData.dimension) {\n this.setDimension(saveData.dimension.x, saveData.dimension.y);\n }\n if (saveData.position) {\n this.position = saveData.position;\n this._checkPositionAndDimension();\n }\n if (saveData.state) {\n switch (saveData.state) {\n case \"minimized\": {\n this.toggleMinimize();\n break;\n }\n case \"maximized\": {\n this.toggleMaximize();\n break;\n }\n case \"popup\": {\n this._viewLoadedPromise.then(() => {\n this.openInNewWindow();\n });\n break;\n }\n }\n }\n }\n }\n });\n }\n save() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.id) {\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(this.id, this.saveData);\n }\n });\n }\n toggleMinimize() {\n if (this.state !== \"popup\") {\n this._container.classList.toggle(\"minimized\");\n this._container.classList.remove(\"maximized\");\n if (!this._container.classList.contains(\"minimized\")) {\n this.resizeToContent();\n this.state = \"normal\";\n }\n else {\n this.state = \"minimized\";\n }\n this.saveData.state = this.state;\n this.save();\n }\n }\n toggleMaximize() {\n if (this.state !== \"popup\") {\n this._container.classList.toggle(\"maximized\");\n this._container.classList.remove(\"minimized\");\n if (!this._container.classList.contains(\"maximized\")) {\n this.resizeToContent();\n this.state = \"normal\";\n }\n else {\n this.state = \"maximized\";\n }\n this.saveData.state = this.state;\n this.save();\n }\n }\n resizeToContent() {\n if (this._window) {\n let diff = {\n x: this._window.scrollWidth - this._window.clientWidth,\n y: this._window.scrollHeight - this._window.clientHeight,\n };\n let dimension = this.getDimension();\n if (diff.x === 0) {\n let sum = 0;\n this._resizeElements.x.forEach(e => sum += parseFloat(window.getComputedStyle(e).getPropertyValue(\"width\")));\n diff.x = Math.ceil(sum) - dimension.x;\n }\n if (diff.y === 0) {\n let sum = 0;\n this._resizeElements.y.forEach(e => sum += parseFloat(window.getComputedStyle(e).getPropertyValue(\"height\")));\n diff.y = Math.ceil(sum) - dimension.y;\n }\n dimension.x += diff.x;\n dimension.y += diff.y;\n if (this.state === \"normal\") {\n this.setDimension(dimension.x, dimension.y);\n }\n this._checkPositionAndDimension();\n }\n }\n getTopLeftCornerPosition() {\n const dimension = this.getDimension();\n let x = this.position.x;\n if (this.position.anchorX === \"center\") {\n x += window.innerWidth / 2 - dimension.x / 2;\n }\n else if (this.position.anchorX === \"right\") {\n x += window.innerWidth - dimension.x;\n }\n let y = this.position.y;\n if (this.position.anchorY === \"center\") {\n y += window.innerHeight / 2 - dimension.y / 2;\n }\n else if (this.position.anchorY === \"bottom\") {\n y += window.innerHeight - dimension.y;\n }\n if (x < 0) {\n x = 0;\n }\n if (y < 0) {\n y = 0;\n }\n return { x, y };\n }\n getCenterCenterPosition() {\n const dimension = this.getDimension();\n const topLeft = this.getTopLeftCornerPosition();\n return {\n x: (topLeft.x + dimension.x / 2) - window.innerWidth / 2,\n y: (topLeft.y + dimension.y / 2) - window.innerHeight / 2\n };\n }\n getBottomRightPosition() {\n const dimension = this.getDimension();\n const topLeft = this.getTopLeftCornerPosition();\n return {\n x: Math.min((topLeft.x + dimension.x) - window.innerWidth, 0),\n y: Math.min((topLeft.y + dimension.y) - window.innerHeight, 0),\n };\n }\n _checkPositionAndDimension() {\n let dimension = this.getDimension();\n let setDimension = true;\n let dimensionChanged = false;\n if (isNaN(dimension.x)) {\n dimension.x = 0;\n setDimension = false;\n }\n if (isNaN(dimension.y)) {\n dimension.y = 0;\n setDimension = false;\n }\n let posTopLeft = this.getTopLeftCornerPosition();\n let posCenterCenter = this.getCenterCenterPosition();\n let posBottomRight = this.getBottomRightPosition();\n if (dimension.x > window.innerWidth) {\n dimensionChanged = true;\n dimension.x = window.innerWidth;\n this.position.x = 0;\n this.position.anchorX = \"left\";\n }\n else {\n if (posTopLeft.x <= Math.abs(posCenterCenter.x) && posTopLeft.x <= -1 * posBottomRight.x) {\n this.position.x = posTopLeft.x;\n this.position.anchorX = \"left\";\n }\n else if (-1 * posBottomRight.x <= Math.abs(posCenterCenter.x)) {\n this.position.x = posBottomRight.x;\n this.position.anchorX = \"right\";\n }\n else {\n this.position.x = posCenterCenter.x;\n this.position.anchorX = \"center\";\n }\n }\n if (dimension.y > window.innerHeight) {\n dimensionChanged = true;\n dimension.y = window.innerHeight;\n this.position.y = 0;\n this.position.anchorY = \"top\";\n }\n else {\n if (posTopLeft.y <= Math.abs(posCenterCenter.y) && posTopLeft.y <= -1 * posBottomRight.y) {\n this.position.y = posTopLeft.y;\n this.position.anchorY = \"top\";\n }\n else if (-1 * posBottomRight.y <= Math.abs(posCenterCenter.y)) {\n this.position.y = posBottomRight.y;\n this.position.anchorY = \"bottom\";\n }\n else {\n this.position.y = posCenterCenter.y;\n this.position.anchorY = \"center\";\n }\n }\n if (this.position.anchorY === \"top\") {\n this._container.style.top = this.position.y + \"px\";\n this._container.style.removeProperty(\"bottom\");\n }\n else if (this.position.anchorY === \"bottom\") {\n this._container.style.bottom = (-1 * this.position.y) + \"px\";\n this._container.style.removeProperty(\"top\");\n }\n else {\n this._container.style.top = \"calc(50% + \" + this.position.y.toString() + \"px - \" + (dimension.y / 2).toString() + \"px)\";\n this._container.style.removeProperty(\"bottom\");\n }\n if (this.position.anchorX === \"left\") {\n this._container.style.left = this.position.x + \"px\";\n this._container.style.removeProperty(\"right\");\n }\n else if (this.position.anchorX === \"right\") {\n this._container.style.right = (-1 * this.position.x) + \"px\";\n this._container.style.removeProperty(\"left\");\n }\n else {\n this._container.style.left = \"calc(50% + \" + this.position.x.toString() + \"px - \" + (dimension.x / 2).toString() + \"px)\";\n this._container.style.removeProperty(\"right\");\n }\n this.saveData.position = this.position;\n if (!this._container.classList.contains(\"minimized\") && setDimension && dimensionChanged) {\n this.setDimension(dimension.x, dimension.y);\n }\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onStart.call(this, pauseArguments);\n this._checkPositionAndDimension();\n return res;\n });\n }\n moveAt(x, y) {\n const posTopLeft = this.getTopLeftCornerPosition();\n return this.moveTo(x + posTopLeft.x, y + posTopLeft.y);\n }\n moveTo(x, y) {\n this.position = { x: x, y: y, anchorX: \"left\", anchorY: \"top\" };\n this._checkPositionAndDimension();\n this.save();\n }\n onButtonClick(id, button, e) {\n switch (id) {\n case \"minimize-button\": {\n this.toggleMinimize();\n break;\n }\n case \"maximize-button\": {\n this.toggleMaximize();\n break;\n }\n case \"new-window-button\": {\n this.openInNewWindow();\n break;\n }\n }\n }\n openInNewWindow() {\n if (this.state === \"popup\") {\n return;\n }\n const windowProxy = window.open(\"\", \"\", \"modal=yes\");\n if (windowProxy === null) {\n new Toast_1.Toast(\"cannot open popups\").show();\n return;\n }\n this.state = \"popup\";\n this.saveData.state = this.state;\n this.save();\n const baseElement = document.createElement(\"base\");\n baseElement.href = window.location.href;\n windowProxy.document.head.appendChild(baseElement);\n const titleElement = document.createElement(\"title\");\n titleElement.innerText = this.title;\n windowProxy.document.head.appendChild(titleElement);\n document.querySelectorAll(\"link[rel='stylesheet']\").forEach(styleElem => {\n windowProxy.document.head.appendChild(styleElem.cloneNode());\n });\n const parent = this._view.parentNode;\n this._view.remove();\n this._container.classList.add(\"popup\");\n this._container.classList.remove(\"minimized\");\n this._container.classList.remove(\"maximized\");\n const translationCallback = Translator_1.Translator.getInstance().addTranslationCallback((baseElement) => {\n if (baseElement !== this._container) {\n Translator_1.Translator.getInstance().updateTranslations(this._container);\n }\n }, false);\n windowProxy.document.body.appendChild(this._view);\n windowProxy.addEventListener(\"beforeunload\", () => {\n this.state = \"normal\";\n this.saveData.state = this.state;\n this.save();\n this._view.remove();\n this._container.classList.remove(\"popup\");\n this._container.classList.remove(\"minimized\");\n this._container.classList.remove(\"maximized\");\n parent.appendChild(this._view);\n this.popupWindow = null;\n Translator_1.Translator.getInstance().removeTranslationCallback(translationCallback);\n });\n this.popupWindow = windowProxy;\n document.body.classList.forEach(className => {\n console.log(\"adding class\", className);\n windowProxy.document.body.classList.add(className);\n });\n }\n getPosition() {\n return this.position;\n }\n}\nexports.AbstractWindowFragment = AbstractWindowFragment;\n//# sourceMappingURL=AbstractWindowFragment.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Fragment/AbstractWindowFragment.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Fragment/AlphabeticListFragment.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Fragment/AlphabeticListFragment.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlphabeticListFragment = void 0;\nconst AbstractFragment_1 = __webpack_require__(/*! ../AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\");\nconst client_1 = __webpack_require__(/*! js-helper/dist/client */ \"./node_modules/js-helper/dist/client.js\");\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\nconst defaultView = __webpack_require__(/*! ../../../html/Framework/Fragment/alphabeticListFragment.html */ \"./node_modules/cordova-sites/dist/client/html/Framework/Fragment/alphabeticListFragment.html\");\nclass AlphabeticListFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view) {\n super(site, shared_1.Helper.nonNull(view, defaultView));\n this.elements = {};\n this.sideScrolling = false;\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n //TODO font-size changing\n let sideAlphabet = this.findBy(\".alphabetic-list-sidealphabet\");\n sideAlphabet.addEventListener(\"mousedown\", () => {\n this.sideScrolling = true;\n });\n window.addEventListener(\"touchstart\", (e) => {\n this.sideScrolling = true;\n });\n window.addEventListener(\"mouseup\", () => {\n this.sideScrolling = false;\n });\n window.addEventListener(\"touchend\", () => {\n this.sideScrolling = false;\n });\n this.findBy(\".alphabet-scroll-to\", true).forEach(elem => {\n let listener = (e) => {\n if (this.sideScrolling) {\n this.findBy(\".alphabet-section.\" + elem.dataset.letter).scrollIntoView({\n behavior: \"smooth\",\n block: \"start\"\n });\n }\n };\n elem.addEventListener(\"mousedown\", (e) => {\n this.sideScrolling = true;\n listener(e);\n });\n elem.addEventListener(\"mousemove\", listener);\n elem.addEventListener(\"touchstart\", (e) => {\n this.sideScrolling = true;\n listener(e);\n });\n elem.addEventListener(\"touchmove\", listener);\n });\n this.headingElement = this.findBy(\"#alphabetic-list-heading\");\n this.renderList();\n return res;\n });\n }\n setElements(elements) {\n this.elements = {};\n Object.keys(elements).sort(function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n }).forEach(key => {\n this.elements[key] = elements[key];\n });\n }\n setHeading(headingElement) {\n this.heading = headingElement;\n if (this.headingElement && this.heading) {\n client_1.ViewHelper.removeAllChildren(this.headingElement);\n this.headingElement.appendChild(this.heading);\n }\n }\n renderElement(element) {\n console.warn(\"should be overloaded?\");\n let elem = document.createElement(\"div\");\n elem.innerText = element;\n return elem;\n }\n renderList() {\n client_1.ViewHelper.removeAllChildren(this.headingElement);\n if (this.heading) {\n this.headingElement.appendChild(this.heading);\n }\n this.findBy(\".alphabet-section\", true).forEach(section => {\n client_1.ViewHelper.removeAllChildren(section);\n });\n let currentLetter = 'A';\n let currentSegment = this.findBy(\".alphabet-section.A\");\n Object.keys(this.elements).forEach(key => {\n let newLetter = key.trim().substring(0, 1).toUpperCase();\n if (newLetter !== currentLetter) {\n currentLetter = newLetter;\n let newSegment = this.findBy(\".alphabet-section.\" + newLetter);\n if (newSegment !== null) {\n currentSegment = newSegment;\n }\n }\n let element = this.renderElement(this.elements[key]);\n currentSegment.appendChild(element);\n });\n }\n}\nexports.AlphabeticListFragment = AlphabeticListFragment;\n//# sourceMappingURL=AlphabeticListFragment.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Fragment/AlphabeticListFragment.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Fragment/TabFragment.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Fragment/TabFragment.js ***! - \***********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TabFragment = void 0;\nconst AbstractFragment_1 = __webpack_require__(/*! ../AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\");\nconst defaultTabView = __webpack_require__(/*! ../../../html/Framework/Fragment/tabFragment.html */ \"./node_modules/cordova-sites/dist/client/html/Framework/Fragment/tabFragment.html\");\nconst Helper_1 = __webpack_require__(/*! ../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Translator_1 = __webpack_require__(/*! ../../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst client_1 = __webpack_require__(/*! js-helper/dist/client */ \"./node_modules/js-helper/dist/client.js\");\nclass TabFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view) {\n super(site, Helper_1.Helper.nonNull(view, defaultTabView));\n this.lastTabId = 0;\n this.activeTab = null;\n this.onTabChangeListener = null;\n this.tabs = new Map();\n this.tabViewPromise = this._viewLoadedPromise;\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this.nameContainer = this.findBy(\".tab-names\");\n this.nameButton = this.findBy(\".tab-button-template\");\n this.nameButton.classList.remove(\"tab-button-template\");\n this.nameButton.remove();\n this.tabContent = this.findBy(\".tab-content\");\n this.tabSite = this.findBy(\".tab-site-template\");\n this.tabSite.classList.remove(\"tab-site-template\");\n this.tabSite.remove();\n return res;\n });\n }\n addFragment(name, fragment, nameIsTranslatable) {\n super.addFragment(\".tab-content\", fragment);\n fragment._viewLoadedPromise.then(() => {\n const view = this.tabSite.cloneNode(true);\n view.appendChild(fragment._view);\n this.lastTabId++;\n const tab = {\n name: name,\n fragment: fragment,\n view: view,\n nameIsTranslatable: Helper_1.Helper.nonNull(nameIsTranslatable, true),\n button: null,\n id: this.lastTabId,\n };\n this.tabs.set(this.lastTabId, tab);\n this._viewLoadedPromise.then(() => {\n const nameElement = this.nameButton.cloneNode(true);\n nameElement.appendChild(tab.nameIsTranslatable ? Translator_1.Translator.makePersistentTranslation(name) : document.createTextNode(name));\n this.nameContainer.appendChild(nameElement);\n nameElement.addEventListener(\"click\", () => {\n this.showTab(tab.id);\n });\n tab.button = nameElement;\n if (Helper_1.Helper.isNull(this.activeTab)) {\n this.showTab(tab.id);\n }\n });\n });\n }\n showTab(tabId) {\n const tab = this.tabs.get(tabId);\n if (tab && tabId !== this.activeTab) {\n let previousActiveButton = this.findBy(\".tab-button.active\");\n if (Helper_1.Helper.isNotNull(previousActiveButton)) {\n previousActiveButton.classList.remove(\"active\");\n }\n tab.button.classList.add(\"active\");\n client_1.ViewHelper.removeAllChildren(this.tabContent);\n this.tabContent.appendChild(tab.view);\n this.activeTab = tabId;\n if (this.onTabChangeListener) {\n this.onTabChangeListener(tab);\n }\n }\n }\n setOnTabChangeListener(listener) {\n this.onTabChangeListener = listener;\n }\n}\nexports.TabFragment = TabFragment;\n//# sourceMappingURL=TabFragment.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Fragment/TabFragment.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Fragment/WindowPositionInterface.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Fragment/WindowPositionInterface.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=WindowPositionInterface.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Fragment/WindowPositionInterface.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/Menu.js": -/*!************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/Menu.js ***! - \************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Menu = void 0;\nconst Helper_1 = __webpack_require__(/*! ../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst MenuAction_1 = __webpack_require__(/*! ./MenuAction/MenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js\");\nconst OpenSubmenuAction_1 = __webpack_require__(/*! ./MenuAction/OpenSubmenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js\");\n/**\n * Klasse für ein Menü, was im Prinzip nichts anderes als eine Collection für MenuActions ist\n * Ein Menü hat einen oder mehrere Renderer, die für die Anzeige zuständig sind\n */\nclass Menu {\n /**\n * Setzt die Renderer und die initialen Actions\n *\n * @param renderer\n * @param actions\n */\n constructor(renderer, actions) {\n this._actions = [];\n this._renderers = [];\n this._submenus = [];\n if (Array.isArray(renderer)) {\n this._renderers = renderer;\n }\n else {\n this._renderers = [renderer];\n }\n //Initialisiert onClickListener\n this._onClickListener = this._generateOnClickListener();\n //Setze die Actions so, um einzelne Actions noch zu überprüfen\n Helper_1.Helper.nonNull(actions, []).forEach(action => {\n this.addAction(action, false);\n });\n this._openSubmenuListener = null;\n }\n /**\n * Erstellt ein neues Menu auf grundlage dieses Menüs. Alle Actions & Submenüs werden ebenfalls kopiert\n * @param menu\n * @return {Menu}\n */\n copy(menu) {\n menu = Helper_1.Helper.nonNull(menu, new Menu());\n menu._actions = [];\n this._actions.forEach(action => {\n menu.addAction(action.copy());\n });\n menu._renderers = this._renderers;\n menu._onClickListener = this._onClickListener;\n return menu;\n }\n /**\n * Schließt das Menü, hauptsächlich hier zum Schließen der Submenüs.\n * Zum öffnen wird nicht so eine Funktion gebraucht, da beim öffnen nicht die untermenüs geöffnet werden sollen\n */\n close() {\n this._submenus.forEach(submenu => {\n submenu.close();\n });\n }\n /**\n * Fügt eine Action dem Menü hinzu\n *\n * @param action\n * @param redraw\n */\n addAction(action, redraw) {\n //Überprüfung, ob es die richtige Klasse ist und ob die Action nicht schon hinzugefügt wurde\n if (action instanceof MenuAction_1.MenuAction && this._actions.indexOf(action) === -1) {\n //Falls es sich um ein Submenu handelt, füge dieses hinzu\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n this._submenus.push(action.getSubmenu());\n }\n this._actions.push(action);\n action.setMenu(this);\n //Falls redraw true (oder nicht angegeben, redraw)\n if (Helper_1.Helper.nonNull(redraw, true)) {\n this.redraw();\n }\n }\n }\n removeAllActions(redraw) {\n this._actions.forEach(action => action.setMenu(null));\n this._actions = [];\n this._submenus = [];\n //Falls redraw true (oder nicht angegeben, redraw)\n if (Helper_1.Helper.nonNull(redraw, true)) {\n this.redraw();\n }\n }\n /**\n * Sortiert die Actions und sagt danach den Renderern, dass diese das Menü zeuchnen sollen\n */\n draw() {\n try {\n this.sortActions();\n this._renderers.forEach(renderer => {\n renderer.render(this);\n });\n }\n catch (e) {\n console.error(e);\n }\n }\n /**\n * Sortiert die Actions der Order nach\n */\n sortActions() {\n this._actions = this._actions.sort(function (first, second) {\n return first.getOrder() - second.getOrder();\n });\n }\n openSubmenu(submenu) {\n if (this._openSubmenuListener) {\n this._openSubmenuListener(submenu);\n }\n }\n setOpenSubmenuListener(listener) {\n this._openSubmenuListener = listener;\n }\n /**\n * Generiert den defaultmäßigen onclick-listener.\n * @returns {Function}\n * @private\n */\n _generateOnClickListener() {\n return (event) => {\n let _element = event.target;\n //Falls es eine Action oder ein Unterlement einer Action war...\n if (_element.matches('li') || _element.matches('li *')) {\n //...finde das zugehörige Element und lese ID aus\n _element = _element.closest(\"li\");\n let actionId = parseInt(_element.dataset[\"id\"]);\n //Schaue nach, welche Action angeklickt wurde\n for (let i = 0, n = this._actions.length; i < n; i++) {\n if (this._actions[i].getId() === actionId) {\n //Falls action eine Funktion (und kein Link), sowie aktiv ist, führe action aus\n if (typeof this._actions[i].getAction() === 'function' && this._actions[i].isActivated()) {\n this._actions[i].getAction()(this._actions[i], event);\n event.preventDefault();\n }\n //Gebe gefundene Action zurück\n return this._actions[i];\n }\n }\n //Falls action nicht gefunden (da noch nicht beendet), suche in den submenüs nach der Action\n for (let i = 0, n = this._submenus.length; i < n; i++) {\n let action = this._submenus[i].click(actionId, event);\n if (action) {\n return action;\n }\n }\n }\n return null;\n };\n }\n /**\n * Setzt den OnClickListener\n *\n * @param listener\n */\n setOnClickListener(listener) {\n this._onClickListener = listener;\n }\n /**\n * Gibt den OnClickListener zurück\n *\n * @returns {*}\n */\n getOnClickListener() {\n return this._onClickListener;\n }\n /**\n * Gibt die Actions zurück\n * @returns {Array}\n */\n getActions() {\n return this._actions;\n }\n /**\n * Triggert ein neues Rendern für eine Action. Das entsprechende ActionElement wird ausgetauscht\n * @param action\n */\n redrawAction(action) {\n this._renderers.forEach(renderer => {\n renderer._triggerRenderAction(action);\n });\n }\n /**\n * Updated das entsprechende ActionElement abhängig vom Renderer. Das Element wird nicht ausgetauscht\n * @param action\n */\n updateAction(action) {\n this._renderers.forEach(renderer => {\n renderer.updateAction(action);\n });\n }\n /**\n * alias für draw\n */\n redraw() {\n this.draw();\n }\n}\nexports.Menu = Menu;\n//# sourceMappingURL=Menu.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/Menu.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/ErrorAction.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/ErrorAction.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorAction = void 0;\nconst MenuAction_1 = __webpack_require__(/*! ./MenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js\");\nconst Dialog_1 = __webpack_require__(/*! ../../../Dialog/Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\");\nconst Translator_1 = __webpack_require__(/*! ../../../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst errorIcon = __webpack_require__(/*! ../../../../img/errorIcon.png */ \"./node_modules/cordova-sites/dist/client/img/errorIcon.png\");\nclass ErrorAction extends MenuAction_1.MenuAction {\n constructor() {\n super(\"\", () => {\n let d = new Dialog_1.Dialog(ErrorAction._errors.join(\"
\"), Translator_1.Translator.translate(\"error\"));\n d.setTranslatable(false);\n d.show();\n }, MenuAction_1.MenuAction.SHOW_ALWAYS, -1000, ErrorAction.ERROR_ICON);\n this._visible = (ErrorAction._errors.length > 0);\n this._shouldTranslate = false;\n console.log(\"icon: \", ErrorAction.ERROR_ICON);\n }\n static addError(errorMessage) {\n if (this._errors.indexOf(errorMessage) === -1) {\n this._errors.push(errorMessage);\n this.getInstance().setVisibility((this._errors.length > 0));\n }\n }\n static removeError(errorMessage) {\n let index = this._errors.indexOf(errorMessage);\n if (index >= 0) {\n this._errors.splice(index, 1);\n this.getInstance().setVisibility((this._errors.length > 0));\n }\n }\n /**\n * @return ErrorAction;\n */\n static getInstance() {\n if (this._instance === null) {\n this._instance = new ErrorAction();\n }\n return this._instance;\n }\n}\nexports.ErrorAction = ErrorAction;\nErrorAction.ERROR_ICON = errorIcon;\nErrorAction._instance = null;\nErrorAction._errors = [];\n//# sourceMappingURL=ErrorAction.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/ErrorAction.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js ***! - \*****************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MenuAction = void 0;\nconst Helper_1 = __webpack_require__(/*! ../../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\n/**\n * Container für verschiedene Eigenschaften\n */\nclass MenuAction {\n /**\n * Erstellt eine MenuAction.\n * Außer name und action ist alles mit Default-werten vorbelegt\n *\n * @param name\n * @param action\n * @param showFor\n * @param order\n * @param icon\n */\n constructor(name, action, showFor, order, icon) {\n this._liClass = \"\";\n this._shouldTranslate = true;\n this._visible = true;\n this._activated = true;\n this._copies = [];\n this._menu = null;\n this._name = name;\n this._action = action;\n this._showFor = Helper_1.Helper.nonNull(showFor, MenuAction.SHOW_FOR_MEDIUM);\n this._order = Helper_1.Helper.nonNull(order, 1000);\n this._icon = icon;\n this._id = MenuAction.lastId++;\n this._liClass = \"\";\n this._shouldTranslate = true;\n this._visible = true;\n this._activated = true;\n this._menu = null;\n this._copies = [];\n }\n /**\n * Erstellt eine neue MenuAction auf grundlage dieser MenuAction. Alle Eigenschaften sind identisch, bis auf die ID\n *\n * @param action\n * @return {MenuAction}\n */\n copy(action) {\n let copiedAction = Helper_1.Helper.nonNull(action, new MenuAction());\n copiedAction._name = this._name;\n copiedAction._action = this._action;\n copiedAction._showFor = this._showFor;\n copiedAction._order = this._order;\n copiedAction._liClass = this._liClass;\n copiedAction._shouldTranslate = this._shouldTranslate;\n copiedAction._visible = this._visible;\n copiedAction._activated = this._activated;\n copiedAction._icon = this._icon;\n copiedAction._id = MenuAction.lastId++;\n this._copies.push(copiedAction);\n return copiedAction;\n // return new MenuActionSlave(this);\n }\n // _triggerCopies(fn, args){\n // this._copies.forEach(copy => {\n // copy[fn].apply(copy, args);\n // })\n // }\n /**\n * Sorgt dafür, dass die Action neu gezeichnet wird\n */\n redraw() {\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.redrawAction(this);\n }\n this._copies.forEach(copy => copy.redraw());\n }\n /**\n * Sorgt dafür, dass die ActionElemente geupdatet wird\n */\n update() {\n this._menu.updateAction(this);\n this._copies.forEach(copy => copy.update());\n }\n /**\n * Gibt die Order der MenuAction zurück. Die Order bestimmt die Reihenfolge in der die Elemente angezeigt werden.\n * Je kleiner die Order, desto weiter rechts/oben werden diese angezeigt\n *\n * @returns {*}\n */\n getOrder() {\n return this._order;\n }\n /**\n * Gibt zurück, ob die MenuAction aktiv ist\n *\n * @returns {boolean}\n */\n isActivated() {\n return this._activated;\n }\n /**\n * Gibt an, ob der Name übersetzt werden soll\n *\n * @returns {boolean}\n */\n isShouldTranslate() {\n return this._shouldTranslate;\n }\n setShouldTranslate(shouldTranslate) {\n this._shouldTranslate = (shouldTranslate === true);\n this.redraw();\n }\n setVisibility(visibility) {\n this._visible = visibility;\n this.redraw();\n this._copies.forEach(copy => copy.setVisibility(visibility));\n }\n /**\n * Gibt an, ob die MenuAction sichtbar ist\n *\n * @returns {boolean}\n */\n isVisible() {\n return this._visible;\n }\n /**\n * Gibt den Namen zurück\n *\n * @returns {*}\n */\n getName() {\n return this._name;\n }\n setName(name) {\n this._name = name;\n this.redraw();\n }\n /**\n * Gibt die Action, welche beim Click ausgeführt werden soll zurück\n * @returns {string|function}\n */\n getAction() {\n return this._action;\n }\n /**\n * Gibt die ID der MenuAction zurück\n * @returns {number}\n */\n getId() {\n return this._id;\n }\n /**\n * Gibt das Icon der MenuAction zurück\n * @returns {string|null}\n */\n getIcon() {\n return this._icon;\n }\n setIcon(icon) {\n this._icon = icon;\n this.redraw();\n }\n /**\n * Gibt die View-Klasse der Action zurück\n * @returns {string}\n */\n getShowFor() {\n return this._showFor;\n }\n /**\n * Gibt eine odder mehrere extra Klasse zurück, die dem li-Element der Action hinzugefügt werden kann\n * @returns {string}\n */\n getLiClass() {\n return this._liClass;\n }\n setLiClass(cssClass) {\n this._liClass = cssClass;\n this._copies.forEach(c => c.setLiClass(cssClass));\n this.redraw();\n }\n /**\n * Gibt das zugehörige Menu zurück\n *\n * @returns {null}\n */\n getMenu() {\n return this._menu;\n }\n /**\n * Setzt das zugehörige Menu\n *\n * @param menu\n */\n setMenu(menu) {\n this._menu = menu;\n }\n}\nexports.MenuAction = MenuAction;\n/**\n * Letzte ID, die vergeben wurde. Wird beim Erstellen einer Acton um eins erhöht\n * @type {number}\n */\nMenuAction.lastId = 0;\n/**\n * Die SHOW_ALWAYS-Visibility-Klasse\n * Das Element wird bei jeder Größe in der NavBar angezeigt\n *\n * @type {string}\n */\nMenuAction.SHOW_ALWAYS = \"always\";\n/**\n * Die SHOW_FOR_SMEDIUM-Visibility-Klasse\n * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe \"SMedium\" (zwischen Small und Medium) hat\n *\n * @type {string}\n */\nMenuAction.SHOW_FOR_SMEDIUM = \"smedium\";\n/**\n * Die SHOW_FOR_MEDIUM-Visibility-Klasse\n * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe \"Medium\" hat\n *\n * @type {string}\n */\nMenuAction.SHOW_FOR_MEDIUM = \"medium\";\n/**\n * Die SHOW_FOR_LARGE-Visibility-Klasse\n * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe \"Large\" hat\n *\n * @type {string}\n */\nMenuAction.SHOW_FOR_LARGE = \"large\";\n/**\n * Die SHOW_FOR_MEDIUM-Visibility-Klasse\n * Das Element wird nie in der NavBar angezeigt, sondern immer nur im aufklapbaren Menu\n *\n * @type {string}\n */\nMenuAction.SHOW_NEVER = \"never\";\n//# sourceMappingURL=MenuAction.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpenSubmenuAction = void 0;\nconst MenuAction_1 = __webpack_require__(/*! ./MenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js\");\nconst Helper_1 = __webpack_require__(/*! ../../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\n/**\n * Action, welche ein Untermenü öffnet\n */\nclass OpenSubmenuAction extends MenuAction_1.MenuAction {\n /**\n * Bekommt ein submenu anstelle einer Action übergeben.\n * Erstellt automatisch die action zum öffnen/schließen des Menüs\n *\n * @param title\n * @param menu\n * @param showFor\n * @param order\n * @param icon\n */\n constructor(title, menu, showFor, order, icon) {\n //Erstellt die action zum schließen/öffnen des Submenüs\n super(title, action => {\n action.getSubmenu().toggle();\n action.update();\n }, showFor, order, icon);\n this._submenu = menu;\n menu.setParentAction(this);\n }\n /**\n * Erstellt eine neue MenuAction auf grundlage dieser MenuAction. Alle Eigenschaften sind identisch, bis auf die ID\n * und das Submenu, welches ebenfalls kopiert wird\n *\n * @param action\n * @return {MenuAction}\n */\n copy(action) {\n action = Helper_1.Helper.nonNull(action, new OpenSubmenuAction(null, this._submenu.copy()));\n action = super.copy(action);\n action._submenu.setParentAction(action);\n return action;\n }\n /**\n * Gibt das Submenu zurück\n *\n * @returns {*}\n */\n getSubmenu() {\n return this._submenu;\n }\n}\nexports.OpenSubmenuAction = OpenSubmenuAction;\n//# sourceMappingURL=OpenSubmenuAction.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/StartSiteMenuAction.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/StartSiteMenuAction.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StartSiteMenuAction = void 0;\nconst MenuAction_1 = __webpack_require__(/*! ./MenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js\");\nconst App_1 = __webpack_require__(/*! ../../../App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\nclass StartSiteMenuAction extends MenuAction_1.MenuAction {\n constructor(name, site, showFor, order, icon) {\n super(name, () => {\n if (StartSiteMenuAction._app) {\n if (Array.isArray(site) && site.length >= 2) {\n StartSiteMenuAction._app.startSite(site[0], site[1]);\n }\n else {\n StartSiteMenuAction._app.startSite(site);\n }\n }\n }, showFor, order, icon);\n }\n}\nexports.StartSiteMenuAction = StartSiteMenuAction;\nStartSiteMenuAction._app = null;\nApp_1.App.addInitialization(app => {\n StartSiteMenuAction._app = app;\n});\n//# sourceMappingURL=StartSiteMenuAction.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/StartSiteMenuAction.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/NavbarFragment.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/NavbarFragment.js ***! - \**********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NavbarFragment = void 0;\nconst AbstractFragment_1 = __webpack_require__(/*! ../AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\");\nconst defaultViewNavbar = __webpack_require__(/*! ../../../html/siteTemplates/navbar.html */ \"./node_modules/cordova-sites/dist/client/html/siteTemplates/navbar.html\");\nconst MenuAction_1 = __webpack_require__(/*! ./MenuAction/MenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js\");\nconst Helper_1 = __webpack_require__(/*! ../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Context_1 = __webpack_require__(/*! ../Context */ \"./node_modules/cordova-sites/dist/client/js/Context/Context.js\");\nconst Menu_1 = __webpack_require__(/*! ./Menu */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Menu.js\");\nconst OpenSubmenuAction_1 = __webpack_require__(/*! ./MenuAction/OpenSubmenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js\");\nconst DropdownRenderer_1 = __webpack_require__(/*! ./Renderer/DropdownRenderer */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/DropdownRenderer.js\");\nconst AccordionRenderer_1 = __webpack_require__(/*! ./Renderer/AccordionRenderer */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/AccordionRenderer.js\");\nconst ColorIndicator_1 = __webpack_require__(/*! ../../ColorIndicator/ColorIndicator */ \"./node_modules/cordova-sites/dist/client/js/ColorIndicator/ColorIndicator.js\");\nconst App_1 = __webpack_require__(/*! ../../App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\n/**\n * Fragment, welches ein Menü in der Navbar anzeigt und hinzufügt.\n *\n * Technisch gesehen wird das gleiche Menü zwei mal gerendert und hinzugefügt. Einmal das Menü in der Navbar, welches\n * immer sichtbar ist und einmal das versteckte Menü, welches durch einen Toggle-Button angezeigt werden kann.\n * Dabei hat jede MenuAction eine Sichtbarkeitsklasse. Anhand der Sichtbarkeitsklasse und der Bildschirmgröße wird\n * entweder das eine oder das andere Element sichtbar, jedoch niemals beide.\n */\nclass NavbarFragment extends AbstractFragment_1.AbstractFragment {\n /**\n * Erstellt das Fragment\n * @param site\n * @param {string|Node|null} viewNavbar\n */\n constructor(site, viewNavbar) {\n super(site, Helper_1.Helper.nonNull(viewNavbar, defaultViewNavbar));\n this._menu = null;\n this._responsiveMenu = null;\n this._backgroundImage = \"\";\n this._menuActions = [];\n NavbarFragment.defaultActions.forEach(action => {\n this._menuActions.push(action.copy());\n });\n this._scrollWidget = null;\n this._canGoBack = true;\n this._logo = App_1.App.getLogo();\n }\n setLogo(logo) {\n this._logo = logo;\n if (this._view) {\n if (Helper_1.Helper.isNotNull(this._logo)) {\n this.findBy(\".logo\").classList.remove(\"hidden\");\n this.findBy(\".logo-img\").src = this._logo;\n }\n else {\n this.findBy(\".logo\").classList.add(\"hidden\");\n }\n }\n }\n setCanGoBack(canGoBack) {\n this._canGoBack = canGoBack;\n if (this._view) {\n if (this._canGoBack) {\n this.findBy(\".back-button\").classList.remove(\"hidden\");\n }\n else {\n this.findBy(\".back-button\").classList.add(\"hidden\");\n }\n }\n }\n setScrollWidget(scrollWidget) {\n this._scrollWidget = scrollWidget;\n if (this._view && this._scrollWidget) {\n let nav = this.findBy(\".top-bar > span\");\n let background = this.findBy(\".background-img\");\n let listener = () => {\n let navbarElem = this.findBy(\"nav.top-bar\");\n if (nav.getBoundingClientRect().bottom >= background.getBoundingClientRect().bottom) {\n navbarElem.classList.add(\"solid\");\n }\n else {\n navbarElem.classList.remove(\"solid\");\n }\n };\n background.addEventListener(\"load\", listener);\n scrollWidget.addEventListener(\"scroll\", listener);\n requestAnimationFrame(listener);\n }\n }\n setBackgroundImage(backgroundImage) {\n this._backgroundImage = backgroundImage;\n if (this._view) {\n let navbarElem = this.findBy(\"nav.top-bar\");\n if (Helper_1.Helper.isNotNull(this._backgroundImage)) {\n let imgElem = this.findBy(\".background-img\");\n let colorIndicator = ColorIndicator_1.ColorIndicator.getInstance();\n // navbarElem.classList.add(\"color-black\");\n imgElem.addEventListener(\"load\", () => {\n if (this._backgroundImage !== \"\") {\n let color = (colorIndicator.getAverageImgColor(imgElem, undefined, 150));\n let textColor = colorIndicator.invertColorBW(color);\n if (textColor.r === 0 && textColor.g === 0 && textColor.b === 0) {\n navbarElem.classList.remove(\"color-white\");\n navbarElem.classList.add(\"color-black\");\n }\n else {\n navbarElem.classList.remove(\"color-black\");\n navbarElem.classList.add(\"color-white\");\n }\n }\n else {\n navbarElem.classList.remove(\"color-black\");\n navbarElem.classList.remove(\"color-white\");\n }\n });\n requestAnimationFrame(() => {\n let heightElement = navbarElem.querySelector(\".grid-container\");\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n if (\"ResizeObserver\" in window) {\n // @ts-ignore\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => {\n if (entry.borderBoxSize) {\n navbarElem.style = \"min-height:\" + entry.borderBoxSize[0].blockSize + \"px\";\n }\n else if (entry.contentRect) {\n navbarElem.style = \"min-height:\" + entry.contentRect.height + \"px\";\n }\n else {\n console.log(\"entry\", entry);\n }\n });\n });\n resizeObserver.observe(heightElement);\n }\n setTimeout(() => {\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n }, 500);\n setTimeout(() => {\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n }, 1000);\n setTimeout(() => {\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n }, 1500);\n });\n imgElem.src = this._backgroundImage;\n navbarElem.classList.add(\"with-image\");\n }\n else {\n navbarElem.classList.remove(\"with-image\");\n }\n }\n }\n /**\n * Wird aufgerufen, sobald die View geladen ist\n * @returns {Promise<*>}\n */\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this.setTitleElement(document.createTextNode(NavbarFragment.title));\n //Erstelle die Renderers und das Menü\n let renderers = [];\n renderers.push(new DropdownRenderer_1.DropdownRenderer(this.findBy(\"#navbar-menu-visible\")));\n renderers.push(new AccordionRenderer_1.AccordionRenderer(this.findBy(\"#navbar-menu-hidden\")));\n this._menu = new Menu_1.Menu(renderers, this._menuActions);\n this._closeListenerContainer = this.findBy(\"#navbar-close-listener-container\");\n //Falls im visible-submenu eine Submenu-Action zu sehen ist\n this._menu.setOpenSubmenuListener(() => {\n this._showCloseListener();\n });\n //Falls ein Element im Menü angeklickt wird, sollte das Menü geschlossen werden,\n //außer dadurch wird ein Untermenü geöffnet/geschlossen\n let oldListener = this._menu.getOnClickListener();\n this._menu.setOnClickListener(e => {\n if (!(oldListener(e) instanceof OpenSubmenuAction_1.OpenSubmenuAction)) {\n this.closeMenu();\n }\n });\n //Fügt close/open-Listener für den Toggle-Button hinzu\n this._responsiveMenu = this.findBy(\"#responsive-menu\");\n this.findBy(\"#responsive-menu-toggle\").onclick = () => {\n if (this._responsiveMenu.classList.contains(\"visible\")) {\n this.closeMenu();\n }\n else {\n this.openMenu();\n }\n };\n //Wenn das \"versteckte\" Menü geöffnet ist, sollte jeder Click nicht auf das Menü dieses wieder schließen\n //Dazu gibt es den navbar-close-listener der sich vor allen (außer dem Menü) befindet. Er wird nur angezeigt,\n //wenn das Menü offen ist\n let navbarFragment = this;\n this.findBy(\"#navbar-close-listener\").addEventListener(\"click\", function (e) {\n if (e.target === this) {\n navbarFragment.closeMenu();\n }\n });\n //Wenn die größe des Fenster geändert wird, muss nachgeschaut werden, ob der Menü-Button für das hidden-Menü noch angezeigt werden muss\n window.addEventListener('resize', () => {\n //Reicht aus, wenn Seite im Vordergrund, da bei jedem Start (durch onStart) der toggleButton geupdatet wird\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this.updateToggleButton();\n }\n });\n //Rendere das Menü\n this.drawMenu();\n this.findBy(\".back-button\").addEventListener(\"click\", () => {\n this.goBack();\n });\n this.findBy(\".logo\").addEventListener(\"click\", () => {\n if (NavbarFragment.onLogoClickListener) {\n NavbarFragment.onLogoClickListener(this.getSite());\n }\n });\n this.setCanGoBack(this._canGoBack);\n this.setBackgroundImage(this._backgroundImage);\n this.setScrollWidget(this._scrollWidget);\n this.setLogo(this._logo);\n return res;\n });\n }\n goBack() {\n if (this._canGoBack) {\n this.getSite().goBack();\n }\n }\n /**\n * Jedes mal, wenn die Seite startet, update den toggleButton\n *\n * @param pauseArguments\n * @returns {Promise}\n */\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n _super.onStart.call(this, pauseArguments);\n this.updateToggleButton();\n });\n }\n _showCloseListener() {\n if (this._closeListenerContainer) {\n this._closeListenerContainer.style.display = 'block';\n }\n }\n /**\n * Schließe das Menü\n */\n closeMenu() {\n if (Helper_1.Helper.isNotNull(this._responsiveMenu)) {\n this._responsiveMenu.classList.remove(\"visible\");\n this._view.classList.remove(\"navbar-is-open\");\n }\n if (this._closeListenerContainer) {\n this._closeListenerContainer.style.display = 'none';\n }\n if (this._menu) {\n this._menu.close();\n }\n }\n /**\n * Öffne das Menü\n */\n openMenu() {\n if (Helper_1.Helper.isNotNull(this._responsiveMenu)) {\n // this._responsiveMenu.style.display = 'block';\n this._responsiveMenu.classList.add(\"visible\");\n this._view.classList.add(\"navbar-is-open\");\n }\n this._showCloseListener();\n }\n /**\n * rendere das Menü\n */\n drawMenu() {\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.draw();\n }\n }\n /**\n * Update die Sichtbarkeit des MenüButtons für das \"versteckte\" Menü\n */\n updateToggleButton() {\n //Bekomme die aktuelle Bildschirm-größe als Foundation-Klasse\n let size = NavbarFragment._getCurrentSize();\n //schaue hier nach den enthaltenen Elementen. Evtl sollte das direkt an den MenüActions gemacht werden\n let firstParentElement = this.findBy(\"#navbar-menu-visible\");\n if (\n //Es existieren Elemente für large und Bildschirmgröße ist kleiner large => ToggleButton muss angezeigt werden\n (size === \"medium\" || size === \"smedium\" || size === \"small\") &&\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_FOR_LARGE + \":not(.hidden)\").length > 0 ||\n //Es existieren Elemente für medium und Bildschirmgröße ist kleiner medium=> ToggleButton muss angezeigt werden\n (size === \"smedium\" || size === \"small\") &&\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_FOR_MEDIUM + \":not(.hidden)\").length > 0 ||\n //Es existieren Elemente für smedium und Bildschirmgröße ist kleiner medium=> ToggleButton muss angezeigt werden\n (size === \"small\") &&\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_FOR_SMEDIUM + \":not(.hidden)\").length > 0 ||\n //Es existieren Elemente, welche nie angezeigt werden sollen => ToggleButton muss angezeigt werden\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_NEVER + \":not(.hidden)\").length > 0) {\n document.getElementById(\"responsive-menu-toggle\").style.display = 'block';\n }\n else {\n document.getElementById(\"responsive-menu-toggle\").style.display = 'none';\n //schließe Menü, falls es offen war\n this.closeMenu();\n }\n }\n /**\n * Funktion zum hinzufügen von Actions\n * @param action\n */\n addAction(action) {\n this._menuActions.push(action);\n //Falls Menü schon existiert, füge Elemente hinzu\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.addAction(action);\n }\n }\n /**\n * Funktion zum hinzufügen von Actions\n * @param redraw\n */\n removeAllActions(redraw) {\n this._menuActions = [];\n //Falls Menü schon existiert, füge Elemente hinzu\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.removeAllActions(redraw);\n }\n }\n /**\n * Updatet das Title-Element\n * @param titleElement\n */\n setTitleElement(titleElement) {\n Helper_1.Helper.removeAllChildren(this.findBy(\"#title-element-container\")).appendChild(titleElement);\n }\n /**\n * Gibt die aktuelle Size zurück\n *\n * @returns {*}\n * @private\n */\n static _getCurrentSize() {\n let matched;\n //Queries sind paare von css-selektoren auf die Mindest-Breite und Namen\n //Queries sind so geordnet, dass größter zum schluss kommt\n let queries = NavbarFragment._getViewQueries();\n for (let i = 0; i < queries.length; i++) {\n let query = queries[i];\n //Letzter sollte matchen, daher noch nicht breaken\n if (matchMedia(query._value).matches) {\n matched = query;\n }\n }\n if (typeof matched === 'object') {\n return matched._name;\n }\n else {\n return matched;\n }\n }\n /**\n * Gibt die ViewQueries zurück, triggert die Berechnung der ViewQueries, falls das noch nicht geschehen ist\n *\n * @returns {Array}\n * @private\n */\n static _getViewQueries() {\n if (NavbarFragment.queries.length === 0) {\n NavbarFragment.queries = NavbarFragment._calculateViewQueries();\n }\n return NavbarFragment.queries;\n }\n /**\n * Berechnet die ViewQueries, bzw liest diese aus Foundation/CSS ein\n * Eine Veränderung der Werte in SASS, verändert daher auch hier die Werte\n *\n * @returns {*}\n * @private\n */\n static _calculateViewQueries() {\n //Hilfs-Funktion zum Parsen der Bildschirmgröße\n function parseStyleToObject(str) {\n let styleObject = {};\n if (typeof str !== 'string') {\n return styleObject;\n }\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n if (!str) {\n return styleObject;\n }\n styleObject = str.split('&').reduce(function (ret, param) {\n const parts = param.replace(/\\+/g, ' ').split('=');\n let key = parts[0];\n let val = parts[1];\n key = decodeURIComponent(key);\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = val === undefined ? null : decodeURIComponent(val);\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n }\n else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n }\n else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n return styleObject;\n }\n //die Font-Family ist reiner Text. Daher übergibt Foundation die Bildchirmgröße mit den dazugehörigen Namen als\n // Font-Family in einem Element im Head\n let cssStyle = document.getElementsByClassName('foundation-mq');\n if (cssStyle.length === 0) {\n return;\n }\n let queries = [];\n //Lade Bildschirmgrößen und speichere diese als Query in einem Array\n let cssStyleElements = parseStyleToObject(window.getComputedStyle(cssStyle[0]).getPropertyValue('font-family'));\n for (let key in cssStyleElements) {\n if (cssStyleElements.hasOwnProperty(key)) {\n //Erstelle aus der Bildschirmgröße die Queries\n queries.push({\n _name: key,\n _value: 'only screen and (min-width: ' + cssStyleElements[key] + ')'\n });\n }\n }\n return queries;\n }\n /**\n * Setzt den Listener, welcher ausgeführt wird, wenn auf das Logo geklickt wird\n *\n * @param listener\n */\n static setOnLogoClickListener(listener) {\n this.onLogoClickListener = listener;\n }\n}\nexports.NavbarFragment = NavbarFragment;\nNavbarFragment.queries = [];\nNavbarFragment.onLogoClickListener = () => App_1.App.addInitialization(app => app.startStartingSite());\nNavbarFragment.title = \"MeinBerufBau\";\nNavbarFragment.defaultActions = [];\n//# sourceMappingURL=NavbarFragment.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/NavbarFragment.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/AccordionRenderer.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/AccordionRenderer.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AccordionRenderer = void 0;\nconst OpenSubmenuAction_1 = __webpack_require__(/*! ../MenuAction/OpenSubmenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js\");\nconst MenuRenderer_1 = __webpack_require__(/*! ./MenuRenderer */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/MenuRenderer.js\");\nconst Helper_1 = __webpack_require__(/*! ../../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Translator_1 = __webpack_require__(/*! ../../../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\n/**\n * Leitet von DropdownRenderer ab, da Funktionalität fast gleich ist\n */\nclass AccordionRenderer extends MenuRenderer_1.MenuRenderer {\n /**\n * Rendert eine Action\n *\n * @param action\n * @returns {HTMLLIElement}\n */\n renderAction(action) {\n let linkElement = this.renderLinkElement(action);\n let liElement = this.renderLiElement(action);\n liElement.insertBefore(linkElement, liElement.firstChild);\n return liElement;\n }\n /**\n * Rendert das AnchorElement für eine Action\n * @param action\n * @returns {HTMLAnchorElement}\n */\n renderLinkElement(action) {\n let aElement = document.createElement(\"a\");\n if (typeof action.getAction() === 'string') {\n aElement.href = action.getAction();\n }\n if (Helper_1.Helper.isNotNull(action.getIcon())) {\n let iconElement = document.createElement(\"img\");\n iconElement.src = action.getIcon();\n iconElement.classList.add('action-image');\n if (action.isShouldTranslate()) {\n iconElement.dataset[\"translationTitle\"] = action.getName();\n iconElement.classList.add(Translator_1.Translator.getInstance().getTranslationClass());\n }\n else {\n iconElement.title = action.getName();\n }\n aElement.appendChild(iconElement);\n }\n let name = action.getName();\n // debugger;\n if (action.isShouldTranslate()) {\n name = Translator_1.Translator.makePersistentTranslation(name);\n }\n else {\n name = document.createTextNode(name);\n }\n aElement.appendChild(name);\n return aElement;\n }\n /**\n * Render das LI-Element für eine Action\n *\n * @param action\n * @returns {HTMLLIElement}\n */\n renderLiElement(action) {\n let liElement = document.createElement(\"li\");\n if (action.getLiClass().trim() !== \"\") {\n liElement.classList.add(...action.getLiClass().split(\" \"));\n }\n // liElement.appendChild(aElement);\n liElement.dataset[\"id\"] = action.getId();\n if (Helper_1.Helper.isNotNull(action.getIcon())) {\n liElement.classList.add(\"img\");\n }\n if (!action.isVisible()) {\n liElement.classList.add(\"hidden\");\n }\n liElement.classList.add(action.getShowFor());\n return liElement;\n }\n /**\n * Da abgeleitet von DropdownRenderer, muss eine Klasse wieder entfernt werden\n *\n * @param action\n * @returns {*}\n */\n renderSubmenuAction(action) {\n let submenuActionElement = super.renderSubmenuAction(action);\n submenuActionElement.classList.remove('is-dropdown-submenu-parent');\n submenuActionElement.classList.add('is-accordion-submenu-parent');\n return submenuActionElement;\n }\n /**\n * erstellt ein SubmenuParent für Accordion\n * @param action\n * @returns {HTMLUListElement}\n */\n createSubmenuParentElement(action) {\n let menuElement = document.createElement(\"ul\");\n menuElement.classList.add(\"menu\");\n menuElement.classList.add(\"vertical\");\n menuElement.classList.add(\"submenu\");\n menuElement.classList.add(\"accordion-menu\");\n menuElement.classList.add(\"is-accordion-submenu\");\n menuElement.classList.add(\"first-sub\");\n return menuElement;\n }\n /**\n * Updatet ein ActionElement\n * @param action\n */\n updateAction(action) {\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n let submenuElement = this.getElementForAction(action).querySelector(\".submenu\");\n if (action.getSubmenu().isOpen()) {\n this.getElementForAction(action).setAttribute(\"aria-expanded\", true);\n submenuElement.classList.add(\"js-active\");\n submenuElement.style = \"\";\n }\n else {\n this.getElementForAction(action).removeAttribute(\"aria-expanded\");\n submenuElement.classList.remove(\"js-activ\");\n submenuElement.style = \"display:none;\";\n }\n }\n }\n}\nexports.AccordionRenderer = AccordionRenderer;\n//# sourceMappingURL=AccordionRenderer.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/AccordionRenderer.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/DropdownRenderer.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/DropdownRenderer.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DropdownRenderer = void 0;\nconst OpenSubmenuAction_1 = __webpack_require__(/*! ../MenuAction/OpenSubmenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js\");\nconst AccordionRenderer_1 = __webpack_require__(/*! ./AccordionRenderer */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/AccordionRenderer.js\");\nconst Submenu_1 = __webpack_require__(/*! ../Submenu */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Submenu.js\");\n/**\n * Erstellt ein Dropdown-Menu\n */\nclass DropdownRenderer extends AccordionRenderer_1.AccordionRenderer {\n constructor(parentElement) {\n super(parentElement);\n this._accordionMenuRenderer = new AccordionRenderer_1.AccordionRenderer();\n }\n /**\n * Rendert die SubmenuAction\n *\n * @param action\n * @returns {*}\n */\n renderSubmenuAction(action) {\n if (action.getMenu() instanceof Submenu_1.Submenu) {\n return super.renderSubmenuAction(action);\n }\n let submenuActionElement = super.renderSubmenuAction(action);\n submenuActionElement.classList.add('is-dropdown-submenu-parent');\n submenuActionElement.classList.add('opens-right');\n return submenuActionElement;\n }\n /**\n * Erstellt ein SubmenuParent\n *\n * @param action\n * @returns {HTMLUListElement}\n */\n createSubmenuParentElement(action) {\n if (action.getMenu() instanceof Submenu_1.Submenu) {\n return super.createSubmenuParentElement(action);\n }\n let menuElement = document.createElement(\"ul\");\n menuElement.classList.add(\"menu\");\n menuElement.classList.add(\"vertical\");\n menuElement.classList.add(\"submenu\");\n menuElement.classList.add(\"accordion-menu\");\n menuElement.classList.add(\"is-dropdown-submenu\");\n menuElement.classList.add(\"first-sub\");\n return menuElement;\n }\n /**\n * Updatet das Element für eine Action\n * @param action\n */\n updateAction(action) {\n if (action.getMenu() instanceof Submenu_1.Submenu) {\n return super.updateAction(action);\n }\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n let submenuElement = this.getElementForAction(action).querySelector(\".submenu\");\n if (action.getSubmenu().isOpen()) {\n submenuElement.classList.add(\"js-dropdown-active\");\n }\n else {\n submenuElement.classList.remove(\"js-dropdown-active\");\n }\n }\n }\n}\nexports.DropdownRenderer = DropdownRenderer;\n//# sourceMappingURL=DropdownRenderer.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/DropdownRenderer.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/MenuRenderer.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/MenuRenderer.js ***! - \*****************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MenuRenderer = void 0;\nconst Helper_1 = __webpack_require__(/*! ../../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst OpenSubmenuAction_1 = __webpack_require__(/*! ../MenuAction/OpenSubmenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js\");\n/**\n * Rendert ein Menü\n */\nclass MenuRenderer {\n /**\n * Jeder Renderer hat ein Element, wo er die gerenderten Elemente hinzufügt\n *\n * @param parentElement\n */\n constructor(parentElement) {\n this._parentElement = parentElement;\n this._renderedElements = {};\n }\n /**\n * Stößt das Rendern an\n * @param menu\n * @param parentElement\n */\n render(menu, parentElement) {\n let actions = menu.getActions();\n //Funktion wird auch für Submenüs genutzt. Daher muss hier ein anderes parentElement übergeben werden\n parentElement = Helper_1.Helper.nonNull(parentElement, this._parentElement);\n if (Helper_1.Helper.isNotNull(parentElement)) {\n Helper_1.Helper.removeAllChildren(parentElement);\n //Füge Elemente hinzu\n actions.forEach(action => {\n parentElement.appendChild(this.getElementForAction(action));\n });\n //Setze den onclick-Listener\n parentElement.onclick = (e) => {\n if (typeof menu.getOnClickListener() === 'function') {\n menu.getOnClickListener()(e);\n }\n };\n }\n }\n /**\n * Führt das Rendern der Elemente aus und ersetzt evtl schon alte Elemente\n * Auslagern von renderAction und renderSubmenuAction zum besseren überschreiben der Funktionen.\n *\n * renderSubmenuAction und renderAction sollten nur von dieser Funktion aufgerufen werden, damit die\n * _rendererElements aktuell bleiben!\n *\n * @param action\n * @returns {HTMLElement}\n * @private\n */\n _triggerRenderAction(action) {\n let oldElement = this._renderedElements[action.getId()];\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n this._renderedElements[action.getId()] = this.renderSubmenuAction(action);\n }\n else {\n this._renderedElements[action.getId()] = this.renderAction(action);\n }\n this.updateAction(action);\n if (Helper_1.Helper.isNotNull(oldElement)) {\n oldElement.replaceWith(this._renderedElements[action.getId()]);\n }\n return this._renderedElements[action.getId()];\n }\n /**\n * Gibt das Element zur Action. Falls es noch nicht existiert, wird dieses gerendert\n * @param action\n * @returns {*}\n */\n getElementForAction(action) {\n if (Helper_1.Helper.isNull(this._renderedElements[action.getId()])) {\n this._triggerRenderAction(action);\n }\n return this._renderedElements[action.getId()];\n }\n /**\n * Funktion zum überladen\n * @param action\n */\n renderAction(action) {\n return null;\n }\n /**\n * Funktion zum überladen\n * @param action\n */\n updateAction(action) {\n }\n /**\n * Rendert eine SubmenuAction, kann/sollte überladen werden\n * @param action\n * @returns {*}\n */\n renderSubmenuAction(action) {\n let actionElement = this.renderAction(action);\n action.getSubmenu().sortActions();\n let submenuParentElement = this.createSubmenuParentElement(action);\n this.render(action.getSubmenu(), submenuParentElement);\n actionElement.appendChild(submenuParentElement);\n return actionElement;\n }\n ;\n /**\n * Erstellt ein Element für ein Submenu. Sollte überladen werden\n * @param action\n * @returns {HTMLUListElement}\n */\n createSubmenuParentElement(action) {\n return document.createElement(\"ul\");\n }\n}\nexports.MenuRenderer = MenuRenderer;\n//# sourceMappingURL=MenuRenderer.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/Renderer/MenuRenderer.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/Menu/Submenu.js": -/*!***************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/Menu/Submenu.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Submenu = void 0;\nconst Menu_1 = __webpack_require__(/*! ./Menu */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/Menu.js\");\nconst Helper_1 = __webpack_require__(/*! ../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst OpenSubmenuAction_1 = __webpack_require__(/*! ./MenuAction/OpenSubmenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/OpenSubmenuAction.js\");\n/**\n * Submenü, ein untermenü\n */\nclass Submenu extends Menu_1.Menu {\n /**\n * Constructor für ein Submenu\n *\n * Bekommt parameter für die OpenSubmenuAction übergeben und reicht diese weiter.\n * Renderer besitzt das Menü keine, da die Renderer des ParentMenus genutzt werden\n * Actions können nicht bei der Erstellung hinzugefügt werden\n *\n * @param title\n * @param showFor\n * @param order\n * @param icon\n * @param renderers\n */\n constructor(title, showFor, order, icon, renderers) {\n super(Helper_1.Helper.nonNull(renderers, []));\n this._parentAction = new OpenSubmenuAction_1.OpenSubmenuAction(title, this, showFor, order, icon);\n this._isOpen = false;\n }\n /**\n * Erstellt ein neues Menu auf grundlage dieses Menüs. Alle Actions & Submenüs werden ebenfalls kopiert\n *\n * @param menu\n * @return {Submenu}\n */\n copy(menu) {\n menu = Helper_1.Helper.nonNull(menu, new Submenu());\n menu = super.copy(menu);\n menu._isOpen = this._isOpen;\n return menu;\n }\n /**\n * Setzt die ParentAction\n *\n * @param action\n */\n setParentAction(action) {\n this._parentAction = action;\n }\n /**\n * Gibt das ParentMenu zurück\n */\n getParentMenu() {\n return this._parentAction.getMenu();\n }\n /**\n * Erstelle keinen onClickListener, damit der Listener aus dem Obermenü aufgerufen wird\n *\n * @returns {null}\n * @private\n */\n _generateOnClickListener() {\n return null;\n }\n /**\n * Wird vom Obermenü aufgerufen, um die ensprechende Action zu finden\n *\n * @param actionId\n * @param event\n * @returns {boolean}\n */\n click(actionId, event) {\n for (let i = 0, n = this._actions.length; i < n; i++) {\n if (this._actions[i].getId() === actionId) {\n if (typeof this._actions[i].getAction() === 'function' && this._actions[i].isActivated()) {\n this._actions[i].getAction()(this._actions[i], event);\n event.preventDefault();\n }\n if (!(this._actions[i] instanceof OpenSubmenuAction_1.OpenSubmenuAction)) {\n this.close();\n }\n return this._actions[i];\n }\n }\n //Falls action nicht gefunden (da noch nicht beendet), suche in den submenüs nach der Action\n for (let i = 0, n = this._submenus.length; i < n; i++) {\n let action = this._submenus[i].click(actionId, event);\n if (action) {\n return action;\n }\n }\n return null;\n }\n /**\n * Öffnet oder schließt das Menü\n */\n toggle() {\n if (this._isOpen) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * öffnet das Menü und updatet die Elemente\n */\n open() {\n this._isOpen = true;\n this.openSubmenu(this);\n if (Helper_1.Helper.isNotNull(this._parentAction)) {\n this._parentAction.update();\n }\n }\n openSubmenu(submenu) {\n this.getParentMenu().openSubmenu(submenu);\n }\n /**\n * schließt das Menü und updatet die Elemente\n */\n close() {\n this._isOpen = false;\n super.close();\n if (Helper_1.Helper.isNotNull(this._parentAction)) {\n this._parentAction.update();\n }\n }\n /**\n * Gibt die ParentAction zurück\n *\n * @returns {OpenSubmenuAction}\n */\n getParentAction() {\n return this._parentAction;\n }\n /**\n * Updated eine Action. Da ein Submenu keine Renderer hat, muss es ans parentMenu weitergegeben werden\n * @param action\n */\n updateAction(action) {\n const parentMenu = this.getParentMenu();\n if (parentMenu) {\n parentMenu.updateAction(action);\n }\n }\n redrawAction(action) {\n const parentMenu = this.getParentMenu();\n if (parentMenu) {\n parentMenu.redrawAction(action);\n }\n }\n /**\n * Gibt an, ob das Submenu offen ist oder nicht\n *\n * @returns {boolean}\n */\n isOpen() {\n return this._isOpen;\n }\n}\nexports.Submenu = Submenu;\n//# sourceMappingURL=Submenu.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/Menu/Submenu.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js": -/*!***********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MenuSite = void 0;\nconst TemplateSite_1 = __webpack_require__(/*! ./TemplateSite */ \"./node_modules/cordova-sites/dist/client/js/Context/TemplateSite.js\");\nconst defaultMenuTemplate = __webpack_require__(/*! ../../html/siteTemplates/menuSite.html */ \"./node_modules/cordova-sites/dist/client/html/siteTemplates/menuSite.html\");\nconst NavbarFragment_1 = __webpack_require__(/*! ./Menu/NavbarFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/NavbarFragment.js\");\nconst Context_1 = __webpack_require__(/*! ./Context */ \"./node_modules/cordova-sites/dist/client/js/Context/Context.js\");\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\n/**\n * Seite benutzt das menuTemplate, welches das ContainerTemplate includiert.\n *\n * Außerdem beinhaltet die MenuSite ein NavbarFragment, wo Menüelemente hinzugefügt werden können\n */\nclass MenuSite extends TemplateSite_1.TemplateSite {\n /**\n * Constructor für eine MenuSite\n *\n * @param siteManager\n * @param view\n * @param menuTemplate\n */\n constructor(siteManager, view, menuTemplate) {\n super(siteManager, view, Helper_1.Helper.nonNull(menuTemplate, defaultMenuTemplate), \"#site-content\");\n this._navbarFragment = new NavbarFragment_1.NavbarFragment(this);\n this.addFragment(\"#navbar-fragment\", this._navbarFragment);\n }\n getNavbarFragment() {\n return this._navbarFragment;\n }\n /**\n * Während des onConstructs werden die Menüelemente hinzugefügt => aufrufen des onCreateMenu\n *\n * @param constructParameters\n * @returns {Promise}\n */\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = yield _super.onConstruct.call(this, constructParameters);\n this.onCreateMenu(this._navbarFragment);\n return res;\n });\n }\n onMenuPressed() {\n this._navbarFragment.openMenu();\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this._navbarFragment.setScrollWidget(this.findBy(\"#main-content-container\"));\n return res;\n });\n }\n /**\n * Überschreibt updateTtle, um Element in der Statusbar zu setzen\n *\n * @protected\n */\n _updateTitle() {\n super._updateTitle();\n if (this._title.element && this._state === Context_1.Context.STATE_RUNNING) {\n this._navbarFragment.setTitleElement(this._title.element);\n }\n }\n /**\n * Überschreiben durch Kinder-Klassen, um ein Menü zu erstellen\n *\n * @param {NavbarFragment} navbar\n */\n onCreateMenu(navbar) { }\n}\nexports.MenuSite = MenuSite;\n//# sourceMappingURL=MenuSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/SiteManager.js": -/*!**************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/SiteManager.js ***! - \**************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SiteManager = void 0;\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst AbstractSite_1 = __webpack_require__(/*! ./AbstractSite */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractSite.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst Context_1 = __webpack_require__(/*! ./Context */ \"./node_modules/cordova-sites/dist/client/js/Context/Context.js\");\nconst Translator_1 = __webpack_require__(/*! ../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst DataManager_1 = __webpack_require__(/*! ../DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\nconst HistoryManager_1 = __webpack_require__(/*! ../HistoryManager */ \"./node_modules/cordova-sites/dist/client/js/HistoryManager.js\");\nconst EventManager_1 = __webpack_require__(/*! ../Legacy/EventManager/EventManager */ \"./node_modules/cordova-sites/dist/client/js/Legacy/EventManager/EventManager.js\");\n/**\n * Manager-Klasse für die Seiten\n */\nclass SiteManager {\n /**\n * Constructor für Manager. Fügt Listener für zurück (onpopstate) hinzu\n */\n constructor() {\n this._isInit = false;\n }\n /**\n *\n * @return {SiteManager}\n */\n static getInstance() {\n if (!this._instance) {\n this._instance = new SiteManager();\n }\n return this._instance;\n }\n /**\n * @param siteDivId\n * @param deepLinks\n */\n init(siteDivId, deepLinks) {\n this._siteDiv = null;\n this._siteStack = [];\n this._siteDiv = document.getElementById(siteDivId);\n this._titleTranslationCallbackId = null;\n this._appEndedListener = null;\n this._inversedDeepLinks = Helper_1.Helper.invertKeyValues(deepLinks);\n //Listener, welcher beim klicken auf Zurück oder Forward ausgeführt wird\n HistoryManager_1.HistoryManager.getInstance().setOnPopStateListener((state, direction) => {\n //Falls zurück\n if (direction === HistoryManager_1.HistoryManager.BACK) {\n this.goBack();\n }\n //Falls vorwärts\n else if (HistoryManager_1.HistoryManager.FORWARD === direction) {\n if (this._siteStack.indexOf(state.state.site) !== -1) {\n this.toForeground(state.state.site);\n }\n else {\n this.startSite(state.state.site.constructor, state.state.parameters);\n }\n }\n });\n //Cordova-Callbacks\n document.addEventListener(\"pause\", () => this._pauseSite(), false);\n document.addEventListener(\"resume\", () => __awaiter(this, void 0, void 0, function* () { return yield this._resumeSite(); }), false);\n document.addEventListener(\"menubutton\", () => {\n let site = this.getCurrentSite();\n if (Helper_1.Helper.isNotNull(site)) {\n site.onMenuPressed();\n }\n }, false);\n document.addEventListener(\"searchbutton\", () => {\n let site = this.getCurrentSite();\n if (Helper_1.Helper.isNotNull(site)) {\n site.onSearchPressed();\n }\n }, false);\n window.addEventListener(\"beforeunload\", e => {\n const returnMessage = this.beforeUnload(e);\n if (returnMessage !== null) {\n e.preventDefault();\n e.returnValue = returnMessage;\n return returnMessage;\n }\n });\n this._isInit = true;\n }\n setAppEndedListener(listener) {\n this._appEndedListener = listener;\n }\n goBack() {\n if (this._siteStack.length >= 1) {\n let site = this.getCurrentSite();\n if (site && site.onBackPressed() !== false) {\n this.endSite(site);\n }\n }\n }\n /**\n * gibt die aktuelle Seite zurück\n * @returns AbstractSite\n */\n getCurrentSite() {\n if (this._siteStack.length >= 1) {\n return this._siteStack[this._siteStack.length - 1];\n }\n return null;\n }\n /**\n * Erstellt eine neue Seite und zeigt diese an. ParamsPromise kann entweder ein Promise oder ein Objekt oder null sein.\n *\n * @param siteConstructor\n * @param paramsPromise\n * @returns {Promise}\n */\n startSite(siteConstructor, paramsPromise) {\n return __awaiter(this, void 0, void 0, function* () {\n //Testen, ob der Constructor vom richtigen Typen ist\n if (!(siteConstructor.prototype instanceof AbstractSite_1.AbstractSite)) {\n throw {\n \"error\": \"wrong class given! Expected AbstractSite, given \" + siteConstructor.name\n };\n }\n EventManager_1.EventManager.trigger(\"site-manager-start-site\", {\n site: siteConstructor, paramPromise: paramsPromise\n });\n //Loading-Symbol, falls ViewParameters noch länger brauchen\n let loadingSymbol = ViewInflater_1.ViewInflater.createLoadingSymbol(\"overlay\");\n this._siteDiv.appendChild(loadingSymbol);\n //create Site\n let site = new siteConstructor(this);\n this._siteStack.unshift(site);\n //Wartet auf onConstruct, viewPromise, onViewLoaded und zeigt dann Seite\n Promise.resolve(paramsPromise).then((params) => __awaiter(this, void 0, void 0, function* () {\n site._onConstructPromise = site.onConstruct(Helper_1.Helper.nonNull(params, {}));\n yield Promise.all([site._onConstructPromise, site.getViewPromise()]);\n //If site is ended inside onConstruct, don't do anything\n if (site._state !== Context_1.Context.STATE_DESTROYED && site._state !== Context_1.Context.STATE_DESTROYING) {\n yield site.callOnViewLoaded();\n site._viewLoadedPromise.resolve();\n return this._show(site);\n }\n loadingSymbol.remove();\n })).catch((e) => {\n console.error(\"site start error for site \", siteConstructor.name, e);\n site.getFinishResolver().reject(e);\n loadingSymbol.remove();\n //Zeige alte Seite im Fehlerfall wieder an\n for (let i = this._siteStack.length - 1; i >= 0; i--) {\n if (this._siteStack[i] !== site) {\n return this._show(this._siteStack[i]);\n }\n }\n site._viewLoadedPromise.reject();\n });\n //Gebe Site-Promise zurück\n return site.getFinishPromise();\n });\n }\n updateUrl(site, args) {\n let url = this._generateUrl(site, args);\n HistoryManager_1.HistoryManager.getInstance().replaceState({\n 'site': site,\n 'parameters': args\n }, site.constructor.name, url);\n }\n _generateUrl(site, args) {\n let deepLink = this.getDeepLinkFor(site);\n let url = [location.protocol, '//', location.host, location.pathname].join('');\n if (Helper_1.Helper.isNotNull(deepLink)) {\n args[\"s\"] = deepLink;\n url = [url, DataManager_1.DataManager.buildQuery(args)].join('');\n }\n return url;\n }\n /**\n * Gibt einen DeepLink zurück\n *\n * @param site\n * @return string\n */\n getDeepLinkFor(site) {\n return this._inversedDeepLinks[site.constructor];\n }\n /**\n * Pausiert eine Seite\n *\n * @param site\n * @private\n */\n _pauseSite(site) {\n site = Helper_1.Helper.nonNull(site, this.getCurrentSite());\n if (Helper_1.Helper.isNotNull(site) && site._state === Context_1.Context.STATE_RUNNING) {\n site._pauseParameters = site.onPause();\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol());\n }\n }\n /**\n * Lässt eine Seite weiterlaufen\n *\n * @param site\n * @private\n */\n _resumeSite(site) {\n return __awaiter(this, void 0, void 0, function* () {\n site = Helper_1.Helper.nonNull(site, this.getCurrentSite());\n if (Helper_1.Helper.isNotNull(site) && (site._state === Context_1.Context.STATE_PAUSED || site._state === Context_1.Context.STATE_VIEW_LOADED)) {\n yield site.getViewPromise();\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(site._view);\n yield Translator_1.Translator.getInstance().updateTranslations();\n if (Helper_1.Helper.isNull(site._historyId)) {\n site._historyId = HistoryManager_1.HistoryManager.getInstance().pushState({\n 'site': site,\n 'parameters': site.getParameters()\n }, site.constructor.name, this._generateUrl(site, site.getParameters()));\n }\n else {\n HistoryManager_1.HistoryManager.getInstance().stateToCurrentPosition(site._historyId);\n }\n yield site.onStart(site._pauseParameters);\n }\n });\n }\n /**\n * Zeigt eine Seite an\n *\n * @param site\n * @returns {Promise<*>}\n * @private\n */\n _show(site) {\n return __awaiter(this, void 0, void 0, function* () {\n //check if site is ended\n if (site._state === Context_1.Context.STATE_DESTROYING || site._state === Context_1.Context.STATE_DESTROYED) {\n return;\n }\n //Mache nichts, wenn Seite bereits angezeigt wird\n if (site._state === Context_1.Context.STATE_RUNNING && this.getCurrentSite() === site) {\n return;\n }\n //Speichere alte Seite\n this._pauseSite();\n //Zeige Ladesymbol\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol());\n //Hinzufügen/Updaten zum SiteStack\n let currentSiteIndex = this._siteStack.indexOf(site);\n if (-1 !== currentSiteIndex) {\n this._siteStack.splice(currentSiteIndex, 1);\n }\n this._siteStack.push(site);\n //Anzeigen der Seite. Stelle sicher, dass die View wirklich geladen ist!\n return site.getViewPromise().then(() => __awaiter(this, void 0, void 0, function* () {\n //Stelle sicher, dass in der Zwischenzeit keine andere Seite gestartet wurde\n if (this.getCurrentSite() === site) {\n yield this._resumeSite(site);\n }\n }));\n });\n }\n /**\n * Beendet eine Seite. Muss nicht die aktive Seite sein\n *\n * @param site\n */\n endSite(site) {\n return __awaiter(this, void 0, void 0, function* () {\n // return site._onConstructPromise.then(async () => {\n //Aus Index entfernen\n let index = this._siteStack.indexOf(site);\n this._siteStack.splice(index, 1);\n //Seite war/ist die aktive Seite\n if (index === this._siteStack.length) {\n this._pauseSite(site);\n //Seite ist aktiv, zeige Ladesymbol\n this._siteDiv.appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol('overlay'));\n site.getFinishPromise().then(() => {\n let newSiteToShow = this.getCurrentSite();\n if (Helper_1.Helper.isNotNull(newSiteToShow)) {\n this.toForeground(newSiteToShow);\n }\n });\n }\n if (this._siteStack.length <= 0) {\n console.log(\"stack is empty, starting normal site!\");\n HistoryManager_1.HistoryManager.getInstance().cutStack(0);\n HistoryManager_1.HistoryManager.getInstance().go(-1 * history.length, true);\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(document.createTextNode(\"App ist beendet\"));\n if (typeof this._appEndedListener === \"function\") {\n this._appEndedListener(this);\n }\n }\n site._context = Context_1.Context.STATE_DESTROYING;\n yield site.onDestroy();\n site._context = Context_1.Context.STATE_DESTROYED;\n site.getFinishResolver().resolve(site._result);\n });\n }\n /**\n * Stellt eine aktive Seite in den Vordergrund;\n * @param site\n * @returns {Promise<*>}\n */\n toForeground(site) {\n return this._show(site);\n }\n /**\n * Updated den Seitentitel. Dafür gibt es im translation-file den Key document-title (document-title-empty, falls title null),\n * der als Parameter in der Übersetzung den übergebenen Title übergeben bekommt.\n *\n * Der übergebene title wird mit den angebenenen argumenten zuerst übersetz, bevor der gesamte document-Title überstzt wird\n *\n * Wenn args === false, dann wird title nicht übersetzt\n *\n * Durch das argument titleTemplate kann der key im translation-file von document-title individuell abweichen\n *\n * @param title\n * @param args\n * @param titleTemplate\n */\n updateTitle(title, args, titleTemplate) {\n titleTemplate = Helper_1.Helper.nonNull(titleTemplate, Helper_1.Helper.isNull(title) ? \"document-title-empty\" : \"document-title\");\n if (Helper_1.Helper.isNotNull(this._titleTranslationCallbackId)) {\n Translator_1.Translator.removeTranslationCallback(this._titleTranslationCallbackId);\n }\n this._titleTranslationCallbackId = Translator_1.Translator.addTranslationCallback(() => {\n if (args !== false) {\n title = Translator_1.Translator.translate(title, args);\n }\n document.title = Translator_1.Translator.translate(titleTemplate, [title]);\n });\n }\n beforeUnload(e) {\n return this.getCurrentSite().onBeforeUnload(e);\n }\n}\nexports.SiteManager = SiteManager;\nSiteManager._instance = null;\n//# sourceMappingURL=SiteManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/SiteManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeChildFragment.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeChildFragment.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SwipeChildFragment = void 0;\nconst AbstractFragment_1 = __webpack_require__(/*! ../AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\");\nconst Helper_1 = __webpack_require__(/*! ../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nclass SwipeChildFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view) {\n super(site, view);\n this._parent = null;\n }\n onSwipeRight() {\n return __awaiter(this, void 0, void 0, function* () {\n this.previousFragment();\n });\n }\n onSwipeLeft() {\n return __awaiter(this, void 0, void 0, function* () {\n this.nextFragment();\n });\n }\n setParent(parent) {\n this._parent = parent;\n }\n nextFragment() {\n if (Helper_1.Helper.isNotNull(this._parent)) {\n this._parent.nextFragment();\n }\n }\n previousFragment() {\n if (Helper_1.Helper.isNotNull(this._parent)) {\n this._parent.previousFragment();\n }\n }\n}\nexports.SwipeChildFragment = SwipeChildFragment;\n//# sourceMappingURL=SwipeChildFragment.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeChildFragment.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeFragment.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeFragment.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SwipeFragment = void 0;\nconst AbstractFragment_1 = __webpack_require__(/*! ../AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\");\nconst SwipeChildFragment_1 = __webpack_require__(/*! ./SwipeChildFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeChildFragment.js\");\nconst Helper_1 = __webpack_require__(/*! ../../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst view = __webpack_require__(/*! ../../../html/Framework/Fragment/swipeFragment.html */ \"./node_modules/cordova-sites/dist/client/html/Framework/Fragment/swipeFragment.html\");\nclass SwipeFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site) {\n super(site, view);\n this._activeIndex = 0;\n this._touchStart = null;\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this._view.addEventListener(\"touchstart\", e => {\n this._touchStart = e.touches[0];\n }, false);\n this._view.addEventListener(\"touchend\", e => {\n this._handleSwipe(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n this._touchStart = null;\n });\n this._view.addEventListener(\"mousedown\", e => {\n this._touchStart = e;\n }, false);\n this._view.addEventListener(\"mouseup\", e => {\n this._handleSwipe(e.clientX, e.clientY);\n this._touchStart = null;\n });\n return _super.onViewLoaded.call(this);\n });\n }\n _handleSwipe(endX, endY) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNull(this._touchStart)) {\n return;\n }\n let touchStart = this._touchStart;\n this._touchStart = null;\n let diffX = touchStart.clientX - endX;\n if (Math.abs(touchStart.clientY - endY) <= SwipeFragment.MAX_Y\n && Math.abs(diffX) >= SwipeFragment.MIN_X) {\n if (diffX > 0) {\n yield this._fragments[this._activeIndex].onSwipeLeft();\n }\n else {\n yield this._fragments[this._activeIndex].onSwipeRight();\n }\n }\n });\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._activeIndex >= 0 && this._activeIndex < this._fragments.length) {\n this.setActiveFragment(this._activeIndex);\n }\n return _super.onStart.call(this, pauseArguments);\n });\n }\n setActiveFragment(index) {\n if (index instanceof SwipeChildFragment_1.SwipeChildFragment) {\n index = this._fragments.indexOf(index);\n }\n if (index >= 0 && index < this._fragments.length) {\n this._activeIndex = index;\n this._fragments.forEach((frag, i) => {\n frag.setActive(i === this._activeIndex);\n });\n }\n }\n nextFragment() {\n this.setActiveFragment((this._activeIndex + 1) % this._fragments.length);\n }\n previousFragment() {\n this.setActiveFragment((this._activeIndex + this._fragments.length - 1) % this._fragments.length);\n }\n addFragment(fragment) {\n if (fragment instanceof SwipeChildFragment_1.SwipeChildFragment) {\n fragment.setParent(this);\n return super.addFragment(\".swipe-container\", fragment);\n }\n }\n}\nexports.SwipeFragment = SwipeFragment;\nSwipeFragment.MAX_Y = 80;\nSwipeFragment.MIN_X = 150;\n//# sourceMappingURL=SwipeFragment.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/SwipeFragment/SwipeFragment.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Context/TemplateSite.js": -/*!***************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Context/TemplateSite.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateSite = void 0;\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst MasterSite_1 = __webpack_require__(/*! ./Delegate/MasterSite */ \"./node_modules/cordova-sites/dist/client/js/Context/Delegate/MasterSite.js\");\n/**\n * Die Seite bekommt ein Template übergeben und ersetzt in diesem Template das mit dem Selector gefundene\n * Element mit der angebenen View\n */\nclass TemplateSite extends MasterSite_1.MasterSite {\n /**\n * Constructor für eine TemplateSite\n *\n * @param siteManager\n * @param view\n * @param template\n * @param selectorToReplace\n */\n constructor(siteManager, view, template, selectorToReplace) {\n super(siteManager, template);\n this._viewPromise = Promise.all([this._viewPromise, ViewInflater_1.ViewInflater.getInstance().load(view)]).then(res => {\n res[0].querySelector(selectorToReplace).replaceWith(res[1]);\n ViewInflater_1.ViewInflater.replaceWithChildren(res[1]);\n this._view = res[0];\n return res[0];\n }).catch(e => console.error(e));\n }\n}\nexports.TemplateSite = TemplateSite;\n//# sourceMappingURL=TemplateSite.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Context/TemplateSite.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/DataManager.js": -/*!******************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/DataManager.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataManager = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst NotOnlineError_1 = __webpack_require__(/*! ./DataManager/NotOnlineError */ \"./node_modules/cordova-sites/dist/client/js/DataManager/NotOnlineError.js\");\n/**\n * Ein Manager, welches das Laden von Resourcen übernimmt.\n */\nclass DataManager {\n /**\n * Diese Funktion sollte anstelle von dem nativen \"fetch\" verwendet werden!\n * Das native Fetch kann keine file://, welches von Cordova unter Android (und whs iOS) verwendet wird\n * Daher wird heir auf XMLHttpRequest zurückgegriffen\n *\n * @param url\n * @param useArrayBuffer\n * @returns {Promise<*>}\n */\n static fetch(url, useArrayBuffer) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(function (resolve, reject) {\n let xhr = new XMLHttpRequest();\n useArrayBuffer = Helper_1.Helper.nonNull(useArrayBuffer, false);\n if (useArrayBuffer) {\n xhr.responseType = \"arraybuffer\";\n }\n xhr.onload = function () {\n resolve(new Response(useArrayBuffer ? xhr.response : xhr.responseText, { status: (xhr.status === 0) ? 200 : xhr.status }));\n };\n xhr.onerror = function (e) {\n console.error(e);\n debugger;\n reject(new NotOnlineError_1.NotOnlineError(\"not-online\", url));\n };\n xhr.open('GET', url);\n //set headers\n Object.keys(DataManager._additionalHeaders).forEach(header => {\n xhr.setRequestHeader(header, DataManager._additionalHeaders[header]);\n });\n xhr.send(null);\n }).then(res => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(true);\n }\n return res;\n }).catch(e => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n throw e;\n });\n });\n }\n static fetchBlob(url) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(function (resolve, reject) {\n let xhr = new XMLHttpRequest();\n xhr.onload = function (e) {\n resolve(xhr.response);\n };\n xhr.onerror = function (e) {\n console.error(e);\n debugger;\n reject(new NotOnlineError_1.NotOnlineError(\"not-online\", url));\n };\n xhr.open('GET', url);\n xhr.responseType = \"blob\";\n //set headers\n Object.keys(DataManager._additionalHeaders).forEach(header => {\n xhr.setRequestHeader(header, DataManager._additionalHeaders[header]);\n });\n xhr.send(null);\n }).then(res => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(true);\n }\n return res;\n }).catch(e => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n throw e;\n });\n });\n }\n /**\n * Vereinfachung von Laden von Resourcen.\n * Lädt per GET die angegebene URL und gibt diese als JSON oder Text zurück\n *\n * @param url\n * @param format\n * @param useBasePath\n * @returns {Promise<* | void>}\n */\n static load(url, format, useBasePath) {\n return __awaiter(this, void 0, void 0, function* () {\n format = Helper_1.Helper.nonNull(format, true);\n if (format === true) {\n format = \"json\";\n }\n else if (format === false) {\n format = \"text\";\n }\n else if (format !== \"json\" && format !== \"text\") {\n format = \"raw\";\n }\n useBasePath = Helper_1.Helper.nonNull(useBasePath, true);\n if (useBasePath === true) {\n useBasePath = DataManager._basePath;\n }\n else if (typeof useBasePath !== \"string\") {\n useBasePath = \"\";\n }\n url = DataManager.basePath(url, useBasePath);\n return DataManager.fetch(url, format === \"raw\").catch(e => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n throw new NotOnlineError_1.NotOnlineError(e, url);\n }).then(function (res) {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(true);\n }\n if (format === \"json\") {\n return res.json();\n }\n else if (format === \"text\") {\n return res.text();\n }\n else {\n return res;\n }\n });\n });\n }\n /**\n * Vereinfachung von Laden von Resourcen.\n * Lädt per GET das angegebene Asset und gibt diese als JSON oder Text zurück\n *\n * @param url\n * @param format\n * @returns {Promise<* | void>}\n */\n static loadAsset(url, format) {\n return __awaiter(this, void 0, void 0, function* () {\n let assetPath = DataManager._assetBasePath;\n if (!url.startsWith(\"/\") && assetPath.length > 0 && !assetPath.endsWith(\"/\")) {\n assetPath += \"/\";\n }\n return this.load(url, Helper_1.Helper.nonNull(format, \"text\"), assetPath);\n });\n }\n /**\n * Wandelt ein Key-Value-Objekt in einen QueryString um\n *\n * @param values\n * @return {string}\n */\n static buildQuery(values) {\n let queryStrings = [];\n for (let k in values) {\n queryStrings.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(values[k]));\n }\n return \"?\" + queryStrings.join(\"&\");\n }\n /**\n * Wandelt ein Key-Value-Objekt in einen QueryString um\n *\n * @param values\n * @return {string}\n */\n static buildQueryWithoutNullValues(values) {\n let queryValues = {};\n for (let k in values) {\n if (Helper_1.Helper.isNotNull(values[k])) {\n queryValues[k] = values[k];\n }\n }\n return this.buildQuery(queryValues);\n }\n static send(url, params) {\n return __awaiter(this, void 0, void 0, function* () {\n url = DataManager.basePath(url);\n let headers = {};\n if (!(params instanceof FormData) && typeof params === \"object\") {\n params = JSON.stringify(params);\n headers = {\n \"Content-Type\": \"application/json\"\n };\n }\n Object.keys(DataManager._additionalHeaders).forEach(header => {\n headers[header] = DataManager._additionalHeaders[header];\n });\n return fetch(url, {\n \"credentials\": \"same-origin\",\n \"method\": \"POST\",\n \"headers\": headers,\n \"body\": params,\n }).then(function (res) {\n return res.json();\n }).catch(function (e) {\n debugger;\n console.error(\"error\", e);\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n return {\n \"success\": false,\n \"errors\": [\n \"not-online\"\n ]\n };\n });\n });\n }\n static basePath(url, basePath) {\n basePath = Helper_1.Helper.nonNull(basePath, DataManager._basePath);\n return basePath + ((url) ? url : \"\");\n }\n static setHeader(header, value) {\n DataManager._additionalHeaders[header] = value;\n }\n}\nexports.DataManager = DataManager;\nDataManager.onlineCallback = null;\nDataManager._additionalHeaders = {};\nDataManager._basePath = \"\";\nDataManager._assetBasePath = \"\";\n//# sourceMappingURL=DataManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/DataManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/DataManager/NotOnlineError.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/DataManager/NotOnlineError.js ***! - \*********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotOnlineError = void 0;\nclass NotOnlineError extends Error {\n constructor(message, url) {\n super(message + \" for url \" + url);\n this._url = url;\n }\n}\nexports.NotOnlineError = NotOnlineError;\n//# sourceMappingURL=NotOnlineError.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/DataManager/NotOnlineError.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Dialog/ButtonChooseDialog.js": -/*!********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Dialog/ButtonChooseDialog.js ***! - \********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ButtonChooseDialog = void 0;\nconst Dialog_1 = __webpack_require__(/*! ./Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\");\nclass ButtonChooseDialog extends Dialog_1.Dialog {\n constructor(content, title, values) {\n super(content, title);\n Object.keys(values).forEach(key => {\n this.addButton(values[key], key);\n });\n }\n}\nexports.ButtonChooseDialog = ButtonChooseDialog;\n//# sourceMappingURL=ButtonChooseDialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Dialog/ButtonChooseDialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Dialog/ChooseDialog.js": -/*!**************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Dialog/ChooseDialog.js ***! - \**************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChooseDialog = void 0;\nconst Dialog_1 = __webpack_require__(/*! ./Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst view = __webpack_require__(/*! ../../html/Framework/Dialog/chooseDialog.html */ \"./node_modules/cordova-sites/dist/client/html/Framework/Dialog/chooseDialog.html\");\nconst Translator_1 = __webpack_require__(/*! ../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass ChooseDialog extends Dialog_1.Dialog {\n constructor(valueNames, title, translateable) {\n let viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then(view => {\n translateable = Helper_1.Helper.nonNull(translateable, true);\n let template = view.querySelector(\"#choose-value-template\");\n template.remove();\n template.removeAttribute(\"id\");\n let templateContainer = view.querySelector(\"#choose-container\");\n for (let k in valueNames) {\n let valueElem = template.cloneNode(true);\n let textElem = null;\n if (translateable) {\n textElem = Translator_1.Translator.makePersistentTranslation(valueNames[k]);\n }\n else {\n textElem = document.createElement(\"span\");\n textElem.innerText = valueNames[k];\n }\n valueElem.querySelector(\".choose-dialog-value\").appendChild(textElem);\n valueElem[\"dataset\"][\"value\"] = k;\n valueElem.addEventListener(\"click\", () => {\n this._result = k;\n this.close();\n });\n templateContainer.appendChild(valueElem);\n }\n return view;\n });\n super(viewPromise, title);\n }\n}\nexports.ChooseDialog = ChooseDialog;\n//# sourceMappingURL=ChooseDialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Dialog/ChooseDialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Dialog/ConfirmDialog.js": -/*!***************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Dialog/ConfirmDialog.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfirmDialog = void 0;\nconst Dialog_1 = __webpack_require__(/*! ./Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\");\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nclass ConfirmDialog extends Dialog_1.Dialog {\n constructor(content, title, confirmButtonText, cancelButtonText) {\n super(content, title);\n this.confirmButtonText = Helper_1.Helper.nonNull(confirmButtonText, \"confirm-button\");\n this.cancelButtonText = Helper_1.Helper.nonNull(cancelButtonText, \"cancel-button\");\n }\n show() {\n const _super = Object.create(null, {\n show: { get: () => super.show }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.addButton(this.confirmButtonText, true);\n this.addButton(this.cancelButtonText, false);\n return _super.show.call(this);\n });\n }\n close() {\n if (Helper_1.Helper.isNull(this._result)) {\n this._result = false;\n }\n return super.close();\n }\n}\nexports.ConfirmDialog = ConfirmDialog;\n//# sourceMappingURL=ConfirmDialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Dialog/ConfirmDialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js": -/*!********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Dialog = void 0;\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Translator_1 = __webpack_require__(/*! ../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nclass Dialog {\n constructor(content, title) {\n this._resolver = null;\n this._content = null;\n this._backgroundElement = null;\n this._cancelable = true;\n this._title = Helper_1.Helper.nonNull(title, \"\");\n this._translatable = true;\n this._additionalClasses = \"\";\n this._buttons = [];\n this._result = null;\n this._contentPromise = null;\n this._addedToDomePromise = new Promise(r => {\n this._addedToDomePromiseResolver = r;\n });\n if (Helper_1.Helper.isNotNull(content)) {\n this.setContent(content);\n }\n }\n setTitle(title) {\n this._title = title;\n return this;\n }\n setTranslatable(translatable) {\n this._translatable = translatable;\n }\n setAdditionalClasses(classes) {\n this._additionalClasses = classes;\n }\n getTitle() {\n return this._title;\n }\n setCancelable(cancelable) {\n this._cancelable = (cancelable === true);\n return this;\n }\n setContent(content) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof content === \"string\" && content.endsWith(\".html\")) {\n content = ViewInflater_1.ViewInflater.getInstance().load(content);\n }\n this._contentPromise = Promise.resolve(content);\n this._content = yield this._contentPromise;\n return this;\n });\n }\n addButton(elementOrText, listenerOrResult, shouldClose) {\n shouldClose = Helper_1.Helper.nonNull(shouldClose, true);\n let button = null;\n if (typeof elementOrText === \"string\") {\n button = document.createElement(\"button\");\n button.classList.add(\"button\");\n button.classList.add(\"right\");\n button.appendChild(Translator_1.Translator.makePersistentTranslation(elementOrText));\n }\n else {\n button = elementOrText;\n }\n let self = this;\n if (typeof listenerOrResult !== \"function\") {\n let result = listenerOrResult;\n listenerOrResult = function () {\n self._result = result;\n };\n }\n let callback = null;\n if (shouldClose) {\n callback = function (e) {\n if (Helper_1.Helper.isNotNull(listenerOrResult)) {\n listenerOrResult(e);\n }\n self.close();\n };\n }\n else {\n callback = listenerOrResult;\n }\n if (Helper_1.Helper.isNotNull(callback)) {\n button.addEventListener(\"click\", callback);\n }\n this._buttons.push(button);\n }\n show() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._contentPromise;\n this._backgroundElement = this.createModalDialogElement();\n this._backgroundElement.addEventListener(\"keyup\", e => {\n if (e.key === \"Escape\" && this._cancelable) {\n this.close();\n }\n });\n document.body.appendChild(this._backgroundElement);\n yield Translator_1.Translator.getInstance().updateTranslations();\n this._addedToDomePromiseResolver();\n return new Promise((resolve) => {\n this._resolver = resolve;\n });\n });\n }\n createModalDialogElement() {\n let titleElement = document.createElement(\"span\");\n titleElement.classList.add(\"title\");\n if (this._translatable && this._title !== \"\") {\n titleElement.appendChild(Translator_1.Translator.makePersistentTranslation(this._title));\n }\n else {\n titleElement.innerHTML = this._title;\n }\n let titleBar = document.createElement(\"div\");\n titleBar.appendChild(titleElement);\n let contentContainer = document.createElement(\"div\");\n contentContainer.classList.add(\"content-container\");\n let modalDialog = document.createElement(\"div\");\n modalDialog.className = this._additionalClasses;\n modalDialog.classList.add(\"modal\");\n modalDialog.appendChild(titleBar);\n modalDialog.appendChild(contentContainer);\n let buttonBar = document.createElement(\"div\");\n buttonBar.classList.add(\"modal-button-container\");\n for (let i = 0, n = this._buttons.length; i < n; i++) {\n buttonBar.appendChild(this._buttons[i]);\n }\n if (!(this._content instanceof Node)) {\n this._content = (this._translatable) ? Translator_1.Translator.makePersistentTranslation(this._content) : document.createTextNode(this._content);\n }\n contentContainer.appendChild(this._content);\n this._backgroundElement = document.createElement(\"div\");\n this._backgroundElement.classList.add(\"background\");\n this._backgroundElement.style.display = \"block\";\n this._backgroundElement.appendChild(modalDialog);\n this._backgroundElement.querySelector(\".modal\").appendChild(buttonBar);\n if (this._cancelable) {\n let closeButton = document.createElement(\"span\");\n closeButton.classList.add(\"close\");\n closeButton.innerHTML = \"×\";\n titleBar.appendChild(closeButton);\n closeButton.addEventListener(\"click\", () => {\n this.close();\n });\n window.addEventListener(\"click\", (e) => {\n if (e.target === this._backgroundElement) {\n this.close();\n }\n });\n }\n return this._backgroundElement;\n }\n waitForAddedToDom() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._addedToDomePromise;\n });\n }\n close() {\n this.waitForAddedToDom().then(() => {\n if (Helper_1.Helper.isNotNull(this._backgroundElement)) {\n this._backgroundElement.style.display = \"none\";\n this._backgroundElement.remove();\n this._backgroundElement = null;\n }\n });\n if (Helper_1.Helper.isNotNull(this._resolver)) {\n this._resolver(this._result);\n }\n }\n}\nexports.Dialog = Dialog;\n//# sourceMappingURL=Dialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Dialog/ElemChooseDialog.js": -/*!******************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Dialog/ElemChooseDialog.js ***! - \******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElemChooseDialog = void 0;\nconst Dialog_1 = __webpack_require__(/*! ./Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst view = __webpack_require__(/*! ../../html/Framework/Dialog/chooseDialog.html */ \"./node_modules/cordova-sites/dist/client/html/Framework/Dialog/chooseDialog.html\");\nclass ElemChooseDialog extends Dialog_1.Dialog {\n constructor(valueNames, title) {\n let viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then(view => {\n let template = view.querySelector(\"#choose-value-template\");\n template.remove();\n template.removeAttribute(\"id\");\n let templateContainer = view.querySelector(\"#choose-container\");\n for (let k in valueNames) {\n let valueElem = template.cloneNode(true);\n valueElem.querySelector(\".choose-dialog-value\").appendChild(valueNames[k]);\n valueElem[\"dataset\"][\"value\"] = k;\n valueElem.addEventListener(\"click\", () => {\n this._result = k;\n this.close();\n });\n templateContainer.appendChild(valueElem);\n }\n return view;\n });\n super(viewPromise, title);\n }\n}\nexports.ElemChooseDialog = ElemChooseDialog;\n//# sourceMappingURL=ElemChooseDialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Dialog/ElemChooseDialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Dialog/ImgChooseDialog.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Dialog/ImgChooseDialog.js ***! - \*****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImgChooseDialog = void 0;\nconst ElemChooseDialog_1 = __webpack_require__(/*! ./ElemChooseDialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/ElemChooseDialog.js\");\nclass ImgChooseDialog extends ElemChooseDialog_1.ElemChooseDialog {\n constructor(valueNames, title) {\n let newValueNames = {};\n Object.keys(valueNames).forEach(k => {\n let elem = document.createElement(\"img\");\n elem.src = valueNames[k];\n newValueNames[k] = elem;\n });\n super(newValueNames, title);\n }\n}\nexports.ImgChooseDialog = ImgChooseDialog;\n//# sourceMappingURL=ImgChooseDialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Dialog/ImgChooseDialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Form.js": -/*!***********************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Form.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Form = void 0;\nconst DataManager_1 = __webpack_require__(/*! ./DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\nconst Helper_1 = __webpack_require__(/*! ./Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Translator_1 = __webpack_require__(/*! ./Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst Toast_1 = __webpack_require__(/*! ./Toast/Toast */ \"./node_modules/cordova-sites/dist/client/js/Toast/Toast.js\");\nclass Form {\n constructor(formElem, urlOrCallback, method) {\n this._formElem = formElem;\n this._method = Helper_1.Helper.nonNull(method, formElem[\"method\"], \"POST\");\n this._elementChangeListener = null;\n this._validators = [];\n this._isBusy = false;\n if (typeof urlOrCallback === \"string\") {\n this._submitHandler = (values) => {\n if (this._method.toLowerCase() === \"get\") {\n return (DataManager_1.DataManager.load(urlOrCallback + DataManager_1.DataManager.buildQuery(values)));\n }\n else {\n //TODO, wenn Serververbindung kommt\n // return (DataManager.send(urlOrCallback, values));\n }\n };\n }\n else {\n this._submitHandler = urlOrCallback;\n }\n this._editors = [];\n this._submitCallback = null;\n this.errorCallback = (errors) => __awaiter(this, void 0, void 0, function* () {\n yield this.setErrors(errors);\n });\n formElem.addEventListener(\"submit\", function (e) {\n return __awaiter(this, void 0, void 0, function* () {\n e.preventDefault();\n yield self.doSubmit(e);\n });\n });\n let self = this;\n [...formElem.elements].forEach(element => {\n element.addEventListener(\"change\", function () {\n if (this.value.trim() !== \"\") {\n this.classList.add(\"notEmpty\");\n }\n else {\n this.classList.remove(\"notEmpty\");\n }\n this.setCustomValidity(\"\");\n if (Helper_1.Helper.isNotNull(self._elementChangeListener)) {\n self._elementChangeListener(element, this);\n }\n this.setCustomValidity(\"\");\n if (element.accept && element.accept.indexOf(\"image\") !== -1) {\n if (element.files && element.files[0]) {\n let reader = new FileReader();\n reader.onload = e => {\n const previewElem = formElem.querySelector(\".\" + element.name + \"-preview\");\n if (previewElem) {\n previewElem.src = e.target[\"result\"];\n }\n };\n reader.readAsDataURL(element.files[0]);\n }\n else {\n formElem.querySelector(\".\" + element.name + \"-preview\").src = \"\";\n }\n }\n });\n element.addEventListener(\"keydown\", function () {\n this.setCustomValidity(\"\");\n });\n });\n }\n addValidator(validatorCallback) {\n this._validators.push(validatorCallback);\n }\n onError(errorHandler) {\n this.errorCallback = errorHandler;\n }\n addEditor(e) {\n this._editors.push(e);\n }\n doSubmit(e) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._isBusy) {\n let res = yield this.submit();\n //TODO einbauen, wenn server dazu kommt\n // if (res[\"success\"]) {\n // if (self._submitCallback !== null) {\n // return self._submitCallback(res[\"result\"]);\n // }\n // } else if (Helper.isNotNull(self.errorCallback)) {\n // return self.errorCallback(res[\"errors\"]);\n // }\n return res;\n }\n return false;\n });\n }\n setValues(valuePromise) {\n return __awaiter(this, void 0, void 0, function* () {\n this.setIsBusy(true);\n let values = yield Promise.resolve(valuePromise);\n this.setIsBusy(false);\n for (let k in values) {\n if (Helper_1.Helper.isNotNull(this._formElem.elements[k])) {\n if (Helper_1.Helper.isNotNull(this._formElem.elements[k].options) && Helper_1.Helper.isNotNull(values[k + \"Options\"])) {\n let options = this._formElem.elements[k].options;\n for (let val in values[k + \"Options\"]) {\n let option = document.createElement(\"option\");\n option.value = val;\n option.innerText = values[k + \"Options\"][val];\n options.add(option);\n }\n }\n if (this._formElem.elements[k].type && (this._formElem.elements[k].type === \"checkbox\" || this._formElem.elements[k].type === \"radio\")) {\n this._formElem.elements[k].checked = this._formElem.elements[k].value == values[k];\n }\n else if (this._formElem.elements[k].type && this._formElem.elements[k].type === \"file\") {\n if (this._formElem.elements[k + \"-hidden\"]) {\n this._formElem.elements[k + \"-hidden\"].value = values[k];\n }\n if (this._formElem.elements[k].accept && this._formElem.elements[k].accept.indexOf(\"image\") !== -1) {\n let previewImage = this._formElem.querySelector(\".\" + k + \"-preview\");\n if (previewImage) {\n previewImage.src = values[k];\n }\n }\n }\n else {\n this._formElem.elements[k].value = Helper_1.Helper.htmlspecialcharsDecode(values[k]);\n if (this._formElem.elements[k].classList) {\n if (Helper_1.Helper.isNotNull(values[k]) && (\"\" + values[k]).trim() !== \"\") {\n this._formElem.elements[k].classList.add(\"notEmpty\");\n }\n else {\n this._formElem.elements[k].classList.remove(\"notEmpty\");\n }\n }\n }\n }\n }\n return this;\n });\n }\n getValues(filesToBase64) {\n return __awaiter(this, void 0, void 0, function* () {\n let valuesFormData = new FormData(this._formElem);\n let values = Array.from(valuesFormData[\"entries\"]()).reduce((memo, pair) => (Object.assign(Object.assign({}, memo), { [pair[0]]: pair[1] })), {});\n if (Helper_1.Helper.nonNull(filesToBase64, true)) {\n values = yield Form.filesToBase64(values);\n }\n return values;\n });\n }\n static filesToBase64(values) {\n return __awaiter(this, void 0, void 0, function* () {\n let filePromises = [];\n Object.keys(values).forEach(key => {\n if (values[key] instanceof Blob) {\n filePromises.push(new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n reader.readAsDataURL(values[key]);\n }).then(base64 => values[key] = base64));\n }\n });\n yield Promise.all(filePromises);\n return values;\n });\n }\n setElementChangeListener(listener) {\n this._elementChangeListener = listener;\n }\n clearErrors() {\n Object.keys(this._formElem.elements).forEach(elemKey => {\n this._formElem.elements[elemKey].setCustomValidity(\"\");\n });\n }\n setErrors(errors) {\n let hasElem = false;\n let firstError = null;\n // let notCatchedErrors = [];\n for (let k in errors) {\n if (Helper_1.Helper.isNotNull(this._formElem.elements[k]) && this._formElem.elements[k].type !== \"hidden\"\n && Helper_1.Helper.isNull(this._formElem.elements[k].readonly) && (Helper_1.Helper.isNull(this._formElem.elements[k].disabled) || !this._formElem.elements[k].disabled)) {\n this._formElem.elements[k].setCustomValidity(Translator_1.Translator.translate(Helper_1.Helper.nonNull(errors[k], \"form-default-error\")));\n hasElem = true;\n }\n else {\n new Toast_1.Toast(Helper_1.Helper.nonNull(errors[k], \"form-default-error\")).show();\n }\n // if (Helper.isNull(firstError)) {\n // firstError = ;\n // }\n }\n // if (!hasElem && Helper.isNotNull(firstError)) {\n // for (let k in this._formElem.elements) {\n // if (this._formElem.elements[k].type !== \"hidden\") {\n // this._formElem.elements[k].setCustomValidity(Translator.translate(firstError));\n // hasElem = true;\n // break;\n // }\n // }\n // }\n if (hasElem) {\n \"reportValidity\" in this._formElem && this._formElem.reportValidity();\n }\n }\n setIsBusy(isBusy) {\n this._isBusy = isBusy;\n if (this._isBusy) {\n this._formElem.classList.add(\"sending\");\n }\n else {\n this._formElem.classList.remove(\"sending\");\n }\n }\n submit() {\n return __awaiter(this, void 0, void 0, function* () {\n this._editors.forEach(e => e.updateSourceElement());\n this.setIsBusy(true);\n if (yield this.validate()) {\n let res = false;\n try {\n res = yield (this._submitHandler(yield this.getValues(), this));\n }\n catch (e) {\n console.error(e);\n }\n finally {\n this.setIsBusy(false);\n }\n return res;\n }\n this.setIsBusy(false);\n return false;\n });\n }\n validate() {\n return __awaiter(this, void 0, void 0, function* () {\n if (\"reportValidity\" in this._formElem && !this._formElem.reportValidity()) {\n return false;\n }\n let values = yield this.getValues();\n let res = yield Helper_1.Helper.asyncForEach(this._validators, (validator) => __awaiter(this, void 0, void 0, function* () {\n return validator(values, this);\n }), true);\n let hasErrors = false;\n let errors = {};\n res.forEach(value => {\n if (value !== true) {\n hasErrors = true;\n if (typeof value === \"object\") {\n for (let k in value) {\n errors[k] = value[k];\n }\n }\n }\n });\n if (hasErrors) {\n yield this.setErrors(errors);\n return false;\n }\n return true;\n });\n }\n onSubmit(callback) {\n this._submitCallback = callback;\n }\n getFormElement() {\n return this._formElem;\n }\n}\nexports.Form = Form;\n//# sourceMappingURL=Form.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Form.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/HistoryManager.js": -/*!*********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/HistoryManager.js ***! - \*********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HistoryManager = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\n/**\n * Manager, welcher sich um die Manipulation von der Historie kümmert\n */\nclass HistoryManager {\n /**\n * Constructor für den Manager. Fügt den onPopstateListener hinzu\n */\n constructor() {\n this._lastStateId = -1;\n this._states = {};\n this._stack = [];\n this._ignoreOnPopState = false;\n this._isUpdateNativeStack = false;\n this._onPopStateListener = null;\n this._currentStackIndex = -1;\n window.onpopstate = (e) => {\n //Wenn nativeStack geupdated wird, mache nichts\n if (this._isUpdateNativeStack) {\n this._isUpdateNativeStack = false;\n return;\n }\n let direction = e.state[\"type\"];\n this._currentStackIndex += direction;\n this._updateNativeHistoryStack();\n //Wenn popState ignoriert werden soll, mache ebenfalls nichts außer Stack updaten\n if (this._ignoreOnPopState) {\n this._ignoreOnPopState = false;\n return;\n }\n //Wenn Listener gesetzt, hole daten und führe Listener aus\n if (typeof this._onPopStateListener === 'function') {\n let data = {};\n if (this._stack.length > this._currentStackIndex && this._currentStackIndex >= 0) {\n data = this._states[this._stack[this._currentStackIndex]];\n }\n this._onPopStateListener(data, direction, e);\n }\n };\n this._updateNativeHistoryStack();\n }\n /**\n * Updated den History-Stack innerhalb des Browsers\n *\n * @param url\n * @private\n */\n _updateNativeHistoryStack(url) {\n url = Helper_1.Helper.nonNull(url, window.location.href);\n //setze das weitere zurückgehen\n if (this._currentStackIndex >= 0) {\n history.pushState({\n \"type\": HistoryManager.BACK,\n }, \"back\", url);\n }\n history.pushState({\n \"type\": HistoryManager.CURRENT,\n }, \"current\", url);\n if (this._currentStackIndex < this._stack.length - 1) {\n history.pushState({\n \"type\": HistoryManager.FORWARD,\n }, \"forward\", url);\n this._isUpdateNativeStack = true;\n history.go(-1);\n }\n }\n /**\n * Generiert einen neuen History-Eintrag. Gibt die ID des Eintrages zurück\n *\n * @param value\n * @param name\n * @param url\n *\n * @return {number}\n */\n pushState(value, name, url) {\n let newState = {\n state: value,\n title: name,\n url: url\n };\n this._lastStateId++;\n this._states[this._lastStateId] = newState;\n this._currentStackIndex++;\n this._stack.splice(this._currentStackIndex, this._stack.length, this._lastStateId);\n this._updateNativeHistoryStack(url);\n return this._lastStateId;\n }\n /**\n * Ersetzt den Eintrag mit der gegebenen ID. Ist die ID nicht gegeben, wird der aktuelle Eintrag ersetzt\n *\n * @param value\n * @param name\n * @param url\n * @param id\n */\n replaceState(value, name, url, id) {\n id = Helper_1.Helper.nonNull(id, this._stack[this._currentStackIndex]);\n if (this._stack.length > this._currentStackIndex && this._currentStackIndex >= 0) {\n this._states[id] = {\n state: value,\n title: name,\n url: url\n };\n this._updateNativeHistoryStack(url);\n }\n }\n /**\n * Verschiebt den Eintrag mit der entsprechenden ID an die aktuell aktive Stelle\n * @param id\n */\n stateToCurrentPosition(id) {\n if (Helper_1.Helper.isNotNull(this._states[id])) {\n let oldStackPosition = this._stack.indexOf(id);\n if (oldStackPosition !== -1) {\n this._stack.splice(oldStackPosition, 1);\n this._stack.splice(this._currentStackIndex + ((oldStackPosition <= this._currentStackIndex) ? -1 : 0), 0, id);\n }\n }\n }\n /**\n * Gehe um to in der Historie\n *\n * @param to\n * @param ignoreOnPopState\n */\n go(to, ignoreOnPopState) {\n this._ignoreOnPopState = (Helper_1.Helper.nonNull(ignoreOnPopState, false) === true);\n history.go(to);\n }\n /**\n * Entferne alle Einträge ab at (inklusive). Wenn at nicht gesetzt ist, wird alles über der aktuellen position abgeschnitten\n * @param at\n */\n cutStack(at) {\n at = Helper_1.Helper.nonNull(at, this._currentStackIndex + 1);\n this._stack.splice(at);\n this._currentStackIndex = Math.min(this._currentStackIndex, this._stack.length - 1);\n this._updateNativeHistoryStack();\n }\n /**\n * Alias für this.go(-1)\n */\n back() {\n this.go(-1);\n }\n /**\n * Alias für this.go(1)\n */\n forward() {\n this.go(+1);\n }\n /**\n * Setzt den onPopStateListener\n *\n * @param listener\n */\n setOnPopStateListener(listener) {\n this._onPopStateListener = listener;\n }\n /**\n * Singelton-Getter\n * @return {HistoryManager}\n */\n static getInstance() {\n if (Helper_1.Helper.isNull(HistoryManager._instance)) {\n HistoryManager._instance = new HistoryManager();\n }\n return HistoryManager._instance;\n }\n}\nexports.HistoryManager = HistoryManager;\nHistoryManager.BACK = -1;\nHistoryManager.FORWARD = 1;\nHistoryManager.CURRENT = 0;\n//# sourceMappingURL=HistoryManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/HistoryManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Legacy/EventManager/EventManager.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Legacy/EventManager/EventManager.js ***! - \***************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventManager = void 0;\nconst cs_event_manager_1 = __webpack_require__(/*! cs-event-manager */ \"./node_modules/cs-event-manager/dist/shared.js\");\nclass EventManager extends cs_event_manager_1.EventManager {\n}\nexports.EventManager = EventManager;\n//# sourceMappingURL=EventManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Legacy/EventManager/EventManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js": -/*!********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Helper = void 0;\n/**\n * Eine Klasse mit häufig genutzten, nützlichen Funktionen\n */\nconst Translator_1 = __webpack_require__(/*! ../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nclass Helper {\n /**\n * Testet, ob eine Variable null oder Undefined ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNull(variable) {\n return (variable === null || variable === undefined);\n }\n /**\n * Testet, ob eine Variable nicht (null oder undefined) ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNotNull(variable) {\n return !Helper.isNull(variable);\n }\n /**\n * Gibt den ersten übergebenen Wert, der nicht (null oder undefined) ist, zurück\n *\n * @param val1\n * @param val2\n * @param args\n * @returns {*}\n */\n static nonNull(val1, val2, ...args) {\n for (let i = 0; i < arguments.length; i++) {\n if (Helper.isNotNull(arguments[i])) {\n return arguments[i];\n }\n }\n return null;\n }\n /**\n * Testet, ob der übergebene Index am Objekt gesetzt ist. Werden mehrere Indexes übergeben, so wird getestet,\n * ob die \"Index-Kette\" gesetzt ist.\n * Bsp.:\n * Helper.isSet({\"index1\":{\"index2\":value}}, \"index1\", \"index2\") ist wahr\n *\n * @param object\n * @param indexes\n * @returns {*}\n */\n static isSet(object, ...indexes) {\n if (Helper.isNotNull(object)) {\n if (indexes.length === 0) {\n return true;\n }\n return (Helper.isSet.apply(null, [object[indexes[0]]].concat(indexes.slice(1))));\n }\n return false;\n }\n /**\n * Testet, ob ein Wert null oder Leerstring, bzw nur aus leerzeichend bestehender String ist\n *\n * @param value\n * @returns {boolean}\n */\n static empty(value) {\n return (Helper.isNull(value) || (typeof value === 'string' && value.trim() === \"\"));\n }\n /**\n * Testet, ob ein Wert NICHT (null oder Leerstring, bzw nur aus leerzeichend bestehender String ist)\n *\n * @param value\n * @returns {boolean}\n */\n static notEmpty(value) {\n return !Helper.empty(value);\n }\n /**\n * Formatiert ein Date-Object nach der Vorlage von der C-Funktion strftime\n *\n * @param sFormat\n * @param date\n * @param useUTC\n * @returns {*|void|string|never}\n */\n static strftime(sFormat, date, useUTC, makePersistentTranslation) {\n useUTC = Helper.nonNull(useUTC, false);\n makePersistentTranslation = Helper.nonNull(makePersistentTranslation, true);\n date = Helper.nonNull(date, new Date());\n if (!(date instanceof Date))\n date = new Date(date);\n let nDay = (useUTC) ? date.getUTCDay() : date.getDay(), nDate = (useUTC) ? date.getUTCDate() : date.getDate(), nMonth = (useUTC) ? date.getUTCMonth() : date.getMonth(), nYear = (useUTC) ? date.getUTCFullYear() : date.getFullYear(), nHour = (useUTC) ? date.getUTCHours() : date.getHours(), aDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], aDaysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], aMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], isLeapYear = function () {\n if ((nYear & 3) !== 0)\n return false;\n return nYear % 100 !== 0 || nYear % 400 === 0;\n }, getThursday = function () {\n let target = new Date(date);\n target.setDate(nDate - ((nDay + 6) % 7) + 3);\n return target;\n }, zeroPad = function (nNum, nPad) {\n return ('' + (Math.pow(10, nPad) + nNum)).slice(1);\n };\n return sFormat.replace(/%[a-z]/gi, function (sMatch) {\n return {\n '%a': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aDaysShort[nDay]).outerHTML : Translator_1.Translator.translate(aDaysShort[nDay]),\n '%A': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aDays[nDay]).outerHTML : Translator_1.Translator.translate(aDays[nDay]),\n '%b': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aMonths[nMonth].slice(0, 3)).outerHTML : Translator_1.Translator.translate(aMonths[nMonth].slice(0, 3)),\n '%B': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aMonths[nMonth]).outerHTML : Translator_1.Translator.translate(aMonths[nMonth]),\n '%c': date.toUTCString(),\n '%C': Math.floor(nYear / 100),\n '%d': zeroPad(nDate, 2),\n '%e': nDate,\n '%f': zeroPad(date.getTime() % 1000, 4),\n '%F': date.toISOString().slice(0, 10),\n '%G': getThursday().getFullYear(),\n '%g': ('' + getThursday().getFullYear()).slice(2),\n '%H': zeroPad(nHour, 2),\n '%I': zeroPad((nHour + 11) % 12 + 1, 2),\n '%j': zeroPad(aDayCount[nMonth] + nDate + ((nMonth > 1 && isLeapYear()) ? 1 : 0), 3),\n '%k': '' + nHour,\n '%l': (nHour + 11) % 12 + 1,\n '%m': zeroPad(nMonth + 1, 2),\n '%M': zeroPad(date.getMinutes(), 2),\n '%p': (nHour < 12) ? 'AM' : 'PM',\n '%P': (nHour < 12) ? 'am' : 'pm',\n '%s': Math.round(date.getTime() / 1000),\n '%S': zeroPad(date.getSeconds(), 2),\n '%u': nDay || 7,\n '%w': '' + nDay,\n '%x': date.toLocaleDateString(),\n '%X': date.toLocaleTimeString(),\n '%y': ('' + nYear).slice(2),\n '%Y': nYear,\n '%z': date.toTimeString().replace(/.+GMT([+-]\\d+).+/, '$1'),\n '%Z': date.toTimeString().replace(/.+\\((.+?)\\)$/, '$1')\n }[sMatch] || sMatch;\n });\n }\n static arrayToObject(array, indexFunction) {\n let obj = {};\n array.forEach(val => {\n obj[indexFunction(val)] = val;\n });\n return obj;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static cloneJson(obj) {\n // https://stackoverflow.com/questions/4120475/how-to-create-and-clone-a-json-object/17502990#17502990\n let i;\n // basic type deep copy\n if (Helper.isNull(obj) || typeof obj !== 'object') {\n return obj;\n }\n // array deep copy\n if (obj instanceof Array) {\n let cloneA = [];\n for (i = 0; i < obj.length; ++i) {\n cloneA[i] = Helper.cloneJson(obj[i]);\n }\n return cloneA;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n // object deep copy\n let cloneO = {};\n for (i in obj) {\n cloneO[i] = Helper.cloneJson(obj[i]);\n }\n return cloneO;\n }\n /**\n * Erstellt ein FormData-Object von JSON-Data. Nützlich für fetch\n *\n * @param obj\n * @returns {FormData}\n */\n static formDataFromObject(obj) {\n let formData = new FormData();\n for (let k in obj) {\n formData.set(k, obj[k]);\n }\n return formData;\n }\n /**\n * Entfernt alle Children eines Elements\n *\n * @param element\n * @returns {Node}\n */\n static removeAllChildren(element) {\n if (element instanceof Node) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n return element;\n }\n static shuffleArray(array) {\n let currentIndex = array.length, temporaryValue, randomIndex;\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n return array;\n }\n static padZero(n, width, z) {\n z = Helper.nonNull(z, '0');\n n = n + '';\n width = Helper.nonNull(width, 1);\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n }\n static deepEqual(a, b) {\n // debugger;\n if (a === b) {\n return true;\n }\n if (typeof a === \"object\" && typeof b === \"object\") {\n let keysOfB = Object.keys(b);\n let childrenDeepEqual = Object.keys(a).every((key) => {\n let index = keysOfB.indexOf(key);\n if (index < 0) {\n return false;\n }\n keysOfB.splice(index, 1);\n return Helper.deepEqual(a[key], b[key]);\n });\n return (childrenDeepEqual && keysOfB.length === 0);\n }\n return false;\n }\n //Ältere evtl nützliche Funktionen\n static htmlspecialcharsDecode(text) {\n const map = {\n '&': '&',\n '&': \"&\",\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '’': \"’\",\n '‘': \"‘\",\n '–': \"–\",\n '—': \"—\",\n '…': \"…\",\n '”': '”'\n };\n if (Helper.isNotNull(text) && typeof text.replace === \"function\") {\n return text.replace(/\\&[\\w\\d\\#]{2,5}\\;/g, function (m) {\n return map[m];\n });\n }\n return text;\n }\n // static getIndexedObject(array, keyValue) {\n // let obj = {};\n // for (let i = 0, n = array.length; i < n; i++) {\n // obj[array[i][keyValue]] = array[i];\n // }\n // return obj;\n // }\n /**\n * Inverts the key-Values for an object\n * @param obj\n * @return {*}\n */\n static invertKeyValues(obj) {\n let new_obj = {};\n for (let prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n new_obj[obj[prop]] = prop;\n }\n }\n return new_obj;\n }\n static asyncForEach(array, callback, runAsyncronous) {\n return __awaiter(this, void 0, void 0, function* () {\n runAsyncronous = Helper.nonNull(runAsyncronous, false);\n if (array instanceof Map) {\n array = Array.from(array.values());\n }\n let validPromises = [];\n for (let i = 0; i < array.length; i++) {\n let index = i;\n let currentPromise = Promise.resolve(callback(array[index], index, array));\n if (!runAsyncronous) {\n yield currentPromise;\n }\n validPromises.push(currentPromise);\n }\n return Promise.all(validPromises);\n });\n }\n static escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n }\n static objectForEach(object, callback) {\n Object.keys(object).forEach(key => {\n callback(object[key], key, object);\n });\n }\n static toArray(object) {\n let res = [];\n for (let k in object) {\n res.push(object[k]);\n }\n return res;\n }\n static imageUrlIsEmpty(url) {\n return (Helper.isNull(url) || url.trim() === \"\" || url.trim() === \"data:\");\n }\n static newPromiseWithResolve() {\n let resolver = null;\n let rejecter = null;\n let promise = new Promise((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n promise[\"resolve\"] = resolver;\n promise[\"reject\"] = rejecter;\n return promise;\n }\n}\nexports.Helper = Helper;\n//# sourceMappingURL=Helper.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js": -/*!********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Matomo = void 0;\nconst js_helper_1 = __webpack_require__(/*! js-helper */ \"./node_modules/js-helper/dist/shared.js\");\nconst NativeStoragePromise_1 = __webpack_require__(/*! ../NativeStoragePromise */ \"./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js\");\nclass Matomo {\n static init() {\n Matomo.isTrackingPromise = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let shouldTrack = yield NativeStoragePromise_1.NativeStoragePromise.getItem(Matomo.LOCAL_STORAGE_KEY, \"1\");\n if (js_helper_1.Helper.isNull(shouldTrack)) {\n shouldTrack = yield Matomo._askIsTracking();\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(Matomo.LOCAL_STORAGE_KEY, shouldTrack);\n }\n else {\n shouldTrack = (shouldTrack === \"1\");\n yield Matomo.setTrack(shouldTrack);\n }\n resolve(shouldTrack);\n }));\n Matomo.isTrackingPromise.then(() => {\n Matomo.push(['trackPageView'], true);\n Matomo.push(['enableLinkTracking'], true);\n Matomo.push(['setTrackerUrl', Matomo.TRACK_SITE + '/piwik.php'], true);\n Matomo.push(['setSiteId', Matomo.SIDE_ID + \"\"], true);\n let d = document, g = d.createElement('script'), s = d.getElementsByTagName('head')[0];\n g.type = 'text/javascript';\n g.async = true;\n g.defer = true;\n g.src = Matomo.TRACK_SITE + '/piwik.js';\n s.appendChild(g);\n });\n }\n static update(title) {\n if (js_helper_1.Helper.nonNull(Matomo.currentUrl)) {\n Matomo.push(['setReferrerUrl', Matomo.currentUrl]);\n }\n Matomo.currentUrl = window.location.pathname + window.location.search;\n Matomo.push(['setCustomUrl', Matomo.currentUrl]);\n Matomo.push(['setDocumentTitle', title]);\n // remove all previously assigned custom variables, requires Matomo (formerly Piwik) 3.0.2\n Matomo.push(['deleteCustomVariables', 'page']);\n Matomo.push(['setGenerationTimeMs', 0]);\n Matomo.push(['trackPageView']);\n // make Matomo aware of newly added content\n var content = document.getElementById('site-content');\n Matomo.push(['MediaAnalytics::scanForMedia', content]);\n Matomo.push(['FormAnalytics::scanForForms', content]);\n Matomo.push(['trackContentImpressionsWithinNode', content]);\n Matomo.push(['enableLinkTracking']);\n }\n static _askIsTracking() {\n return __awaiter(this, void 0, void 0, function* () {\n Matomo.isTrackingPromise = new Promise(resolve => {\n Matomo.push([function () {\n resolve(!this[\"isUserOptedOut\"]());\n }]);\n });\n return Matomo.isTrackingPromise;\n });\n }\n static query(method) {\n return __awaiter(this, void 0, void 0, function* () {\n return fetch(Matomo.TRACK_SITE + Matomo.BASE_PATH + method, {\n \"mode\": \"cors\",\n \"credentials\": \"include\",\n }).then(res => res.text()).then(text => (new window[\"DOMParser\"]()).parseFromString(text, \"text/xml\"));\n });\n }\n static getTrackingPromise() {\n return Matomo.isTrackingPromise;\n }\n static setTrack(shouldTrack) {\n return __awaiter(this, void 0, void 0, function* () {\n Matomo.isTrackingPromise = Promise.resolve(shouldTrack);\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(Matomo.LOCAL_STORAGE_KEY, (shouldTrack === true) ? \"1\" : \"0\");\n if (shouldTrack) {\n yield Matomo.push([\"forgetUserOptOut\"], true);\n }\n else {\n yield Matomo.push([\"optUserOut\"], true);\n }\n });\n }\n static trackEvent(event, name, label, value) {\n return __awaiter(this, void 0, void 0, function* () {\n let ev = [\"trackEvent\", event, name];\n if (js_helper_1.Helper.isNotNull(label)) {\n ev.push(label);\n }\n if (js_helper_1.Helper.isNotNull(value) && !isNaN(parseFloat(value)) && isFinite(value)) {\n ev.push(value);\n }\n return this.push(ev);\n });\n }\n //TODO Matomo\n static push(arr, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // if (!Array.isArray(arr)) {\n // arr = [arr];\n // }\n // window[\"_paq\"].push(arr);\n });\n }\n}\nexports.Matomo = Matomo;\nMatomo.LOCAL_STORAGE_KEY = \"matomoShouldTrack\";\nMatomo.TRACK_SITE = \"\";\nMatomo.BASE_PATH = \"\";\nMatomo.SIDE_ID = \"1\";\nMatomo.currentUrl = null;\nMatomo.isTrackingPromise = null;\n//# sourceMappingURL=Matomo.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Legacy/ScaleHelper.js": -/*!*************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Legacy/ScaleHelper.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScaleHelper = void 0;\nconst js_helper_1 = __webpack_require__(/*! js-helper */ \"./node_modules/js-helper/dist/shared.js\");\nclass ScaleHelper {\n scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, addListener) {\n return __awaiter(this, void 0, void 0, function* () {\n addListener = js_helper_1.Helper.nonNull(addListener, true);\n animationDelay = js_helper_1.Helper.nonNull(animationDelay, 0);\n let newFontSize = yield this._getNewFontSize(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay === 0);\n if (animationDelay > 0) {\n yield new Promise(r => {\n setTimeout(r, animationDelay);\n fontElement.style.fontSize = newFontSize + \"px\";\n });\n }\n let self = this;\n let listener = function () {\n return new Promise(resolve => {\n let timeout = (typeof addListener === 'number') ? addListener : 255;\n setTimeout(() => {\n resolve(self.scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, false));\n }, timeout);\n });\n };\n if (addListener !== false) {\n window.addEventListener(\"resize\", listener);\n }\n return listener;\n });\n }\n scaleToFull(fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animDelay, addListener) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.scaleTo(1, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animDelay, addListener);\n });\n }\n _getNewFontSize(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, setFontSize) {\n return __awaiter(this, void 0, void 0, function* () {\n margin = js_helper_1.Helper.nonNull(margin, 10);\n ignoreHeight = js_helper_1.Helper.nonNull(ignoreHeight, false);\n ignoreWidth = js_helper_1.Helper.nonNull(ignoreWidth, false);\n fontWeight = js_helper_1.Helper.nonNull(fontWeight, fontElement.innerHTML.length);\n setFontSize = js_helper_1.Helper.nonNull(setFontSize, true);\n let hasNoTransitionClass = container.classList.contains(\"no-transition\");\n if (!hasNoTransitionClass) {\n container.classList.add(\"no-transition\");\n }\n const numChanged = 5;\n let oldDiffIndex = 0;\n let oldDiff = [];\n for (let i = 0; i < numChanged; i++) {\n oldDiff.push(0);\n }\n let beforeFontSize = fontElement.style.fontSize;\n let currentFontSize = 1;\n let widthDiff = 0;\n let heightDiff = 0;\n let containerWidth = 0;\n let containerHeight = 0;\n do {\n currentFontSize += oldDiff[oldDiffIndex] / (fontWeight + 1);\n fontElement.style.fontSize = currentFontSize + 'px';\n let containerStyle = window.getComputedStyle(container);\n containerWidth = parseFloat(containerStyle.getPropertyValue(\"width\").replace('px', ''));\n containerHeight = parseFloat(containerStyle.getPropertyValue(\"height\").replace('px', ''));\n widthDiff = containerWidth - fontElement.offsetWidth;\n heightDiff = containerHeight - fontElement.offsetHeight;\n oldDiffIndex = (oldDiffIndex + 1) % numChanged;\n let newDiff = (ignoreWidth ? heightDiff : (ignoreHeight ? widthDiff : Math.min(widthDiff, heightDiff)));\n if (newDiff === oldDiff[(oldDiffIndex + 1) % numChanged]) {\n break;\n }\n oldDiff[oldDiffIndex] = newDiff;\n } while ((widthDiff > (1 - scale) * containerWidth || ignoreWidth) && (heightDiff > (1 - scale) * containerHeight || ignoreHeight));\n currentFontSize -= margin;\n fontElement.style.fontSize = ((setFontSize) ? currentFontSize + \"px\" : beforeFontSize);\n if (!hasNoTransitionClass) {\n yield new Promise((r) => {\n setTimeout(r, 50);\n });\n container.classList.remove(\"no-transition\");\n }\n return currentFontSize;\n });\n }\n}\nexports.ScaleHelper = ScaleHelper;\n//# sourceMappingURL=ScaleHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Legacy/ScaleHelper.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js": -/*!***************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NativeStoragePromise = void 0;\n/**\n * Promise-Wrapper-Klasse für Native-Storage\n */\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst JsonHelper_1 = __webpack_require__(/*! js-helper/dist/shared/JsonHelper */ \"./node_modules/js-helper/dist/shared/JsonHelper.js\");\nclass NativeStoragePromise {\n static _isElectron() {\n return (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0);\n }\n /**\n * Setzt ein Item für NativeStorage\n *\n * @param key\n * @param value\n * @returns {Promise<*>}\n */\n static setItem(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.persistent) {\n if (this._isElectron()) {\n return new Promise((res, rej) => this.electronStorage.set(this.prefix + key, value, err => {\n if (err) {\n rej(err);\n }\n else {\n res();\n }\n }));\n }\n else {\n return new Promise((res, rej) => NativeStorage.setItem(this.prefix + key, value, res, rej));\n }\n }\n else {\n this._cache[this.prefix + key] = value;\n }\n });\n }\n /**\n * Bekomme ein Item von NativeStorage\n *\n * @param key\n * @param defaultValue?\n * @returns {Promise<*>}\n */\n static getItem(key, defaultValue) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((res, rej) => {\n if (this._isElectron()) {\n this.electronStorage.get(this.prefix + key, (e, data) => {\n if (e) {\n res(Helper_1.Helper.nonNull(this._cache[this.prefix + key], defaultValue));\n }\n else {\n res(JsonHelper_1.JsonHelper.deepEqual(data, {}) ? defaultValue : data);\n }\n });\n }\n else {\n NativeStorage.getItem(this.prefix + key, data => res(Helper_1.Helper.nonNull(data, defaultValue)), (e => {\n res(Helper_1.Helper.nonNull(this._cache[this.prefix + key], defaultValue));\n }));\n }\n });\n });\n }\n /**\n * Bekomme die Keys vom NativeStorage\n *\n * @returns {Promise<*>}\n */\n static keys() {\n return __awaiter(this, void 0, void 0, function* () {\n let keys = [];\n if (this.persistent) {\n if (this._isElectron()) {\n keys = yield new Promise((res, rej) => this.electronStorage.keys((err, keys) => {\n if (err) {\n rej(err);\n }\n else {\n res(keys);\n }\n }));\n }\n else {\n keys = yield new Promise((res, rej) => NativeStorage.keys(res, rej));\n }\n }\n else {\n keys = Object.keys(this._cache);\n }\n return keys.filter(key => key.startsWith(this.prefix));\n });\n }\n /**\n * Entfernt ein Object aus dem NativeStorage\n *\n * @param key\n * @returns {Promise<*>}\n */\n static remove(key) {\n return __awaiter(this, void 0, void 0, function* () {\n delete this._cache[this.prefix + key];\n if (this._isElectron()) {\n return new Promise((res, rej) => this.electronStorage.remove(this.prefix + key, err => {\n if (err) {\n rej(err);\n }\n else {\n res();\n }\n }));\n }\n else {\n return new Promise((res, rej) => NativeStorage.remove(this.prefix + key, res, rej));\n }\n });\n }\n /**\n * Entfernt alle Objects aus dem NativeStorage\n *\n * @returns {Promise<*>}\n */\n static clear() {\n return __awaiter(this, void 0, void 0, function* () {\n let keys = yield this.keys();\n yield Helper_1.Helper.asyncForEach((keys), (key) => __awaiter(this, void 0, void 0, function* () {\n yield this.remove(key);\n }), true);\n });\n }\n static makePersistent() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.persistent) {\n this.persistent = true;\n yield Helper_1.Helper.asyncForEach(Object.keys(this._cache), (key) => __awaiter(this, void 0, void 0, function* () {\n yield this.setItem(key, this._cache[key]);\n }), true);\n }\n });\n }\n static makeUnpersistent() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.persistent) {\n let keys = yield this.keys();\n let values = {};\n yield Helper_1.Helper.asyncForEach(keys, (key) => __awaiter(this, void 0, void 0, function* () {\n values[key] = yield this.getItem(key);\n }));\n this.clear();\n this.persistent = false;\n this._cache = values;\n }\n });\n }\n}\nexports.NativeStoragePromise = NativeStoragePromise;\nNativeStoragePromise._cache = {};\nNativeStoragePromise.prefix = \"\";\nNativeStoragePromise.persistent = true;\nNativeStoragePromise.electronStorage = null;\n//# sourceMappingURL=NativeStoragePromise.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/PromiseHelper.js": -/*!********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/PromiseHelper.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromiseHelper = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nclass PromiseHelper {\n static delay(milliseconds) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(r => {\n setTimeout(r, milliseconds);\n });\n });\n }\n static tryMultipleTimes(func, times, delay) {\n return __awaiter(this, void 0, void 0, function* () {\n times = Helper_1.Helper.nonNull(times, 5);\n delay = Helper_1.Helper.nonNull(delay, 50);\n for (let i = 0; i < times; i++) {\n let res = yield func();\n if (res !== undefined) {\n return res;\n }\n else {\n yield PromiseHelper.delay(delay);\n }\n }\n return undefined;\n });\n }\n static tryUntilTimeout(func, timeout, delay) {\n return __awaiter(this, void 0, void 0, function* () {\n timeout = Helper_1.Helper.nonNull(timeout, 500);\n delay = Helper_1.Helper.nonNull(delay, 50);\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n let shouldRun = true;\n PromiseHelper.delay(timeout).then(() => {\n reject(new Error(\"timeout\"));\n shouldRun = false;\n });\n while (shouldRun) {\n let res = yield func();\n if (res !== undefined) {\n resolve(res);\n break;\n }\n yield PromiseHelper.delay(delay);\n }\n }));\n });\n }\n}\nexports.PromiseHelper = PromiseHelper;\n//# sourceMappingURL=PromiseHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/PromiseHelper.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/ShareManager/ShareDialog.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/ShareManager/ShareDialog.js ***! - \*******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShareDialog = void 0;\nconst Dialog_1 = __webpack_require__(/*! ../Dialog/Dialog */ \"./node_modules/cordova-sites/dist/client/js/Dialog/Dialog.js\");\nconst ViewInflater_1 = __webpack_require__(/*! ../ViewInflater */ \"./node_modules/cordova-sites/dist/client/js/ViewInflater.js\");\nconst view = __webpack_require__(/*! ../../html/Dialog/shareDialog.html */ \"./node_modules/cordova-sites/dist/client/html/Dialog/shareDialog.html\");\nclass ShareDialog extends Dialog_1.Dialog {\n constructor(textToShare) {\n super(ViewInflater_1.ViewInflater.getInstance().load(view).then(view => {\n view.querySelector(\"#whatsapp-share\").addEventListener(\"click\", () => {\n let linkToOpen = \"\";\n linkToOpen = \"https://web.whatsapp.com/send?text=\" + encodeURIComponent(textToShare);\n window.open(linkToOpen, '_blank', \"noopener\");\n this.close();\n });\n view.querySelector(\"#telegram-share\").addEventListener(\"click\", () => {\n let linkToOpen = \"https://t.me/share/url?url=\" + encodeURIComponent(textToShare);\n window.open(linkToOpen, '_blank', \"noopener\");\n this.close();\n });\n return view;\n }), \"Share\");\n }\n}\nexports.ShareDialog = ShareDialog;\n//# sourceMappingURL=ShareDialog.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/ShareManager/ShareDialog.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/ShareManager/ShareManager.js": -/*!********************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/ShareManager/ShareManager.js ***! - \********************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShareManager = void 0;\nconst ShareDialog_1 = __webpack_require__(/*! ./ShareDialog */ \"./node_modules/cordova-sites/dist/client/js/ShareManager/ShareDialog.js\");\nclass ShareManager {\n share(text) {\n if (device.platform === \"browser\") {\n this._shareBrowser(text);\n }\n else {\n this._shareMobile(text);\n }\n }\n _shareMobile(text) {\n navigator[\"share\"](text);\n }\n _shareBrowser(text) {\n new ShareDialog_1.ShareDialog(text).show();\n }\n}\nexports.ShareManager = ShareManager;\n//# sourceMappingURL=ShareManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/ShareManager/ShareManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Singleton.js": -/*!****************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Singleton.js ***! - \****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Singleton = void 0;\nclass Singleton {\n /**\n *\n * @returns {Singleton|this}\n */\n static getInstance() {\n if (!this._instance) {\n this._instance = new this();\n }\n return this._instance;\n }\n}\nexports.Singleton = Singleton;\n//# sourceMappingURL=Singleton.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Singleton.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Sound/AudioChain.js": -/*!***********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Sound/AudioChain.js ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AudioChain = void 0;\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass AudioChain {\n constructor(context, sourceBuffer, chainFunction) {\n this._buffer = sourceBuffer;\n this._shouldLoop = false;\n this._loopStart = null;\n this._loopEnd = null;\n this._chainFunction = chainFunction;\n this._context = context;\n this._startTime = null;\n this._pauseTime = null;\n this._source = null;\n this._running = false;\n }\n setBuffer(buffer) {\n this._buffer = buffer;\n }\n setLooping(shouldLoop, loopStart, loopEnd) {\n this._shouldLoop = shouldLoop;\n if (Helper_1.Helper.isNotNull(loopStart)) {\n this._loopStart = loopStart;\n }\n if (Helper_1.Helper.isNotNull(loopEnd)) {\n this._loopEnd = loopEnd;\n }\n }\n start(delay, offset, duration) {\n return __awaiter(this, void 0, void 0, function* () {\n //sind sonst null, schmeißt in Android 5 einen fehler\n delay = Helper_1.Helper.nonNull(delay, 0);\n offset = Helper_1.Helper.nonNull(offset, 0);\n //Duration darf nicht gesetzt werden\n // duration = Helper.nonNull(duration, -1);\n let source = this._context.createBufferSource();\n source.loop = this._shouldLoop;\n if (Helper_1.Helper.isNotNull(this._loopStart)) {\n source.loopStart = this._loopStart;\n }\n if (Helper_1.Helper.isNotNull(this._loopEnd)) {\n source.loopEnd = this._loopEnd;\n }\n source.buffer = this._buffer;\n yield this._chainFunction(source);\n if (Helper_1.Helper.isNull(duration)) {\n source.start(delay, offset);\n }\n else {\n source.start(delay, offset, duration);\n }\n this._startTime = (new Date()).getTime() - (Helper_1.Helper.nonNull(offset, 0) * 1000);\n this._source = source;\n this._running = true;\n });\n }\n stop(delay) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNotNull(this._source)) {\n delay = Helper_1.Helper.nonNull(delay, 0);\n this._pauseTime = ((new Date()).getTime()) - this._startTime;\n this._running = false;\n return this._source.stop(delay);\n }\n return null;\n });\n }\n resume() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._running) {\n return this.start(null, Helper_1.Helper.nonNull(this._pauseTime, 0) / 1000.0);\n }\n });\n }\n}\nexports.AudioChain = AudioChain;\n//# sourceMappingURL=AudioChain.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Sound/AudioChain.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js": -/*!*************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SoundManager = void 0;\nconst AudioChain_1 = __webpack_require__(/*! ./AudioChain */ \"./node_modules/cordova-sites/dist/client/js/Sound/AudioChain.js\");\nconst Helper_1 = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst App_1 = __webpack_require__(/*! ../App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\nconst DataManager_1 = __webpack_require__(/*! ../DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\nclass SoundManager {\n constructor() {\n this.channels = {};\n if ('AudioContext' in window) {\n this.context = new AudioContext();\n }\n else if ('webkitAudioContext' in window) {\n // @ts-ignore\n this.context = new webkitAudioContext();\n }\n else {\n throw new Error(\"No audio context found!\");\n }\n this.context.onstatechange = function () {\n console.log(\"stateChange from context\", arguments);\n };\n this.context.oncomplete = function () {\n console.log(\"onComplete from context\", arguments);\n };\n window.addEventListener(\"visibilitychange\", (e) => {\n // console.log(\"visibility Change event\", e);\n this.handleVisibilityChange();\n });\n //For safari\n let checkVisibility = () => {\n this.handleVisibilityChange();\n setTimeout(checkVisibility, 500);\n };\n checkVisibility();\n }\n static getInstance() {\n if (Helper_1.Helper.isNull(SoundManager._instance)) {\n SoundManager._instance = new SoundManager();\n }\n return SoundManager._instance;\n }\n isNotSuspended() {\n // return false;\n return this.context.state !== \"suspended\";\n }\n set(options, channel) {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n let audioObject = Helper_1.Helper.nonNull(this.channels[channel], {});\n if (typeof options === \"string\") {\n options = { audio: options };\n }\n let audio = options.audio;\n if (Helper_1.Helper.isNotNull(audio)) {\n audioObject.loadedPromise = DataManager_1.DataManager.loadAsset(audio, \"raw\").then(res => res.arrayBuffer()).then(arrayBuffer => {\n return new Promise((r, reject) => this.context.decodeAudioData(arrayBuffer, r));\n }).catch(e => console.error(e));\n // audioObject.loadedPromise = fetch(audio).then(res => res.arrayBuffer()).then(arrayBuffer => {\n // return new Promise((r, reject) => this.context.decodeAudioData(arrayBuffer, r));\n // }).catch(e => console.error(e));\n this.stop(channel);\n }\n audioObject.muted = Helper_1.Helper.nonNull(options.muted, audioObject.muted, false);\n audioObject.volume = Helper_1.Helper.nonNull(options.volume, audioObject.volume, 1);\n audioObject.loop = Helper_1.Helper.nonNull(options.loop, audioObject.loop, false);\n audioObject.timeOffset = Helper_1.Helper.nonNull(options.timeOffset, audioObject.timeOffset, 0);\n this.channels[channel] = audioObject;\n if (audioObject.muted) {\n this.stop(channel);\n }\n return this.channels[channel];\n }\n resumeContext() {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof this.context.resume === \"function\") {\n return this.context.resume();\n }\n });\n }\n play(channel, audioOrOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n this.resumeContext();\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n if (Helper_1.Helper.isNull(audioOrOptions)) {\n audioOrOptions = {};\n }\n else if (!(typeof audioOrOptions === \"object\")) {\n audioOrOptions = {\n audio: audioOrOptions\n };\n }\n audioOrOptions.timeOffset = Helper_1.Helper.nonNull(audioOrOptions.timeOffset, 0);\n this.stop(channel);\n this.set(audioOrOptions, channel);\n if (!this.channels[channel].muted) {\n let buffer = yield this.channels[channel].loadedPromise;\n let source = new AudioChain_1.AudioChain(this.context, buffer, (sourceNode) => {\n let gain = this.context.createGain();\n gain.gain.value = this.channels[channel].volume;\n sourceNode.connect(gain);\n gain.connect(this.context.destination);\n });\n source.setBuffer(buffer);\n //to prevent gap in mp3-files\n source.setLooping(this.channels[channel].loop, 0.3, buffer.duration - 0.3);\n this.channels[channel].source = source;\n yield source.start();\n }\n return this.channels[channel];\n });\n }\n stop(channel) {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n let oldAudio = this.channels[channel];\n if (Helper_1.Helper.isNotNull(oldAudio) && Helper_1.Helper.isNotNull(oldAudio.source)) {\n oldAudio.source.stop();\n }\n }\n get(channel) {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n return this.channels[channel];\n }\n resume(channel) {\n return __awaiter(this, void 0, void 0, function* () {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n if (Helper_1.Helper.isNotNull(this.channels[channel]) && !this.channels[channel].muted && Helper_1.Helper.isNotNull(this.channels[channel].source)) {\n return this.channels[channel].source.resume();\n }\n });\n }\n stopAll() {\n for (let k in this.channels) {\n if (Helper_1.Helper.isNotNull(this.channels[k].source)) {\n this.channels[k].source.stop();\n }\n }\n }\n resumeAllIfNotMuted() {\n for (let k in this.channels) {\n if (Helper_1.Helper.isNotNull(this.channels[k]) && !this.channels[k].muted && Helper_1.Helper.isNotNull(this.channels[k].source)) {\n this.channels[k].source.resume();\n }\n }\n }\n handleVisibilityChange() {\n if (document.hidden) {\n this.stopAll();\n }\n else {\n this.resumeAllIfNotMuted();\n }\n }\n}\nexports.SoundManager = SoundManager;\nSoundManager.CHANNELS = {\n MUSIC: \"music\",\n SOUND: \"sound\",\n DEFAULT: \"default\"\n};\nApp_1.App.addInitialization(app => {\n // PauseSite.onPauseListeners.push(() => {\n // SoundManager.getInstance().stopAll();\n // });\n // PauseSite.onStartListeners.push(() => {\n // SoundManager.getInstance().resumeAllIfNotMuted();\n // });\n});\n// AndroidBridge.addDefinition(() => {\n// window[\"soundManagerInstance\"] = SoundManager.getInstance();\n// window[\"soundManagerInstance\"][\"stopAll\"] = window[\"soundManagerInstance\"].stopAll;\n// window[\"soundManagerInstance\"][\"resumeAllIfNotMuted\"] = window[\"soundManagerInstance\"].resumeAllIfNotMuted;\n// });\n//# sourceMappingURL=SoundManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Toast/Toast.js": -/*!******************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Toast/Toast.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Toast = void 0;\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst ToastManager_1 = __webpack_require__(/*! ./ToastManager */ \"./node_modules/cordova-sites/dist/client/js/Toast/ToastManager.js\");\nclass Toast {\n constructor(message, duration, shouldTranslateOrTranslationArgs) {\n this._message = message;\n this._duration = Helper_1.Helper.nonNull(duration, Toast.DEFAULT_DURATION);\n this._shouldTranslate = shouldTranslateOrTranslationArgs !== false;\n this._translationArgs = Helper_1.Helper.nonNull(shouldTranslateOrTranslationArgs, []);\n this._id = Toast.LAST_ID++;\n this._toastElement = null;\n }\n getId() {\n return this._id;\n }\n getMessage() {\n return this._message;\n }\n getDuration() {\n return this._duration;\n }\n isShouldTranslate() {\n return this._shouldTranslate;\n }\n getTranslationArgs() {\n return this._translationArgs;\n }\n setToastElement(element) {\n this._toastElement = element;\n }\n getToastElement() {\n return this._toastElement;\n }\n show() {\n return __awaiter(this, void 0, void 0, function* () {\n return ToastManager_1.ToastManager.getInstance().showToast(this);\n });\n }\n hide() {\n return __awaiter(this, void 0, void 0, function* () {\n return ToastManager_1.ToastManager.getInstance().hideToast(this);\n });\n }\n}\nexports.Toast = Toast;\nToast.LAST_ID = 0;\nToast.DEFAULT_DURATION = 2500;\n//# sourceMappingURL=Toast.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Toast/Toast.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Toast/ToastManager.js": -/*!*************************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Toast/ToastManager.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToastManager = void 0;\nconst Helper_1 = __webpack_require__(/*! ../Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Translator_1 = __webpack_require__(/*! ../Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nclass ToastManager {\n constructor() {\n this._toastContainer = document.querySelector(ToastManager._toastContainerSelector);\n this._toastTemplate = this._toastContainer.querySelector(\".toast-template\");\n this._toastTemplate.classList.remove(\"toast-template\");\n this._toastTemplate.remove();\n }\n showToast(toast) {\n return __awaiter(this, void 0, void 0, function* () {\n let message = toast.getMessage();\n if (toast.isShouldTranslate()) {\n message = Translator_1.Translator.makePersistentTranslation(message, toast.getTranslationArgs());\n }\n else {\n message = document.createTextNode(message);\n }\n let toastElement = this._toastTemplate.cloneNode(true);\n toastElement.querySelector(\".message\").appendChild(message);\n toast.setToastElement(toastElement);\n this._toastContainer.appendChild(toastElement);\n toastElement.style.opacity = 1;\n return new Promise(resolve => {\n toastElement.querySelector(\".message\").onclick = () => {\n this.hideToast(toast);\n resolve(true);\n };\n setTimeout(() => {\n this.hideToast(toast);\n resolve(false);\n }, toast.getDuration());\n });\n });\n }\n hideToast(toast) {\n return __awaiter(this, void 0, void 0, function* () {\n //TODO Animation hinzufügen\n let element = toast.getToastElement();\n if (Helper_1.Helper.isNotNull(element)) {\n element.style.opacity = 0;\n return new Promise(res => {\n setTimeout(() => {\n element.remove();\n res();\n }, 250);\n });\n }\n return Promise.reject(\"toast is not showing\");\n });\n }\n static setToastContainerSelector(selector) {\n ToastManager._toastContainerSelector = selector;\n }\n static getInstance() {\n if (!ToastManager._instance) {\n ToastManager._instance = new ToastManager();\n }\n return ToastManager._instance;\n }\n}\nexports.ToastManager = ToastManager;\nToastManager._instance = null;\nToastManager._toastContainerSelector = \"#toast-container\";\n//# sourceMappingURL=ToastManager.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Toast/ToastManager.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/Translator.js": -/*!*****************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/Translator.js ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\nconst NativeStoragePromise_1 = __webpack_require__(/*! ./NativeStoragePromise */ \"./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js\");\nconst Helper_1 = __webpack_require__(/*! ./Legacy/Helper */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Helper.js\");\nconst Translator_1 = __webpack_require__(/*! ../../shared/Translator */ \"./node_modules/cordova-sites/dist/shared/Translator.js\");\n/**\n * Singleton-Klasse zum Übersetzen von Text-Inhalten\n */\nclass Translator extends Translator_1.Translator {\n /**\n * Erstellt einen neuen Translator\n * @param config\n */\n constructor(config) {\n super(config);\n config = Helper_1.Helper.nonNull(config, {});\n this._currentLanguage = config.currentLanguage || this._fallbackLanguage;\n this._nativeStorageKey = config.nativeStorageKey || \"language\";\n this._translationClass = config.translationClass || \"translation\";\n this._initPromise = this.loadUserLanguage().then(userLanguage => this.setLanguage(userLanguage.toLowerCase()));\n }\n /**\n * Setzt die neue Sprache, updated alle Übersetzungen. Speichert danach die aktuelle Sprache in NativeStorage\n * @param language\n */\n setLanguage(language) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._currentLanguage === language) {\n yield this.updateTranslations();\n return;\n }\n if (!this._translations[language]) {\n return;\n }\n if (typeof document !== 'undefined') {\n document.getElementsByTagName(\"html\")[0].setAttribute(\"lang\", language);\n }\n this._currentLanguage = language;\n yield this.updateTranslations();\n //zum schluss => Falls setzen des Keys fehlschlägt, wird trotzdem noch übersetzt\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(this._nativeStorageKey, this._currentLanguage);\n });\n }\n /**\n * Übersetzt sofort einen Key in die aktuelle Sprache\n * @param key\n * @param args\n * @returns {*}\n */\n translate(key, args, language) {\n return super.translate(key, args, Helper_1.Helper.nonNull(language, this._currentLanguage));\n }\n /**\n * Fügt eine Callback hinzu, die aufgerufen wird, sobald die Seite übersetzt wird. Sollte genutzt werden, um Teile\n * zu übersetzen, die nicht per HTML übersetzt werden können, die der Document Title\n *\n * wenn callImmediately true ist (default), wird die Callback sofort einmal ausgeführt\n *\n * Gibt die CallbackId zurück\n *\n * @param callback\n * @param callImmediately\n * @returns {number}\n */\n addTranslationCallback(callback, callImmediately) {\n callImmediately = Helper_1.Helper.nonNull(callImmediately, true);\n this._lastTranslationCallbackId++;\n this._translationCallbacks.set(this._lastTranslationCallbackId, callback);\n if (callImmediately) {\n callback();\n }\n return this._lastTranslationCallbackId;\n }\n /**\n * Entfernt die Callback anhand der gegebenen ID\n *\n * @param callbackId\n */\n removeTranslationCallback(callbackId) {\n this._translationCallbacks.delete(callbackId);\n }\n /**\n * Updated die aktuellen übersetzungen\n */\n updateTranslations(baseElement) {\n return __awaiter(this, void 0, void 0, function* () {\n baseElement = Helper_1.Helper.nonNull(baseElement, document);\n if (typeof baseElement !== 'undefined') {\n let elements = baseElement.getElementsByClassName(this._translationClass);\n for (let i = 0, max = elements.length; i < max; i++) {\n let key = (Translator._isValid(elements[i].dataset[\"translation\"]) ? elements[i].dataset[\"translation\"] : (elements[i].innerText || \"\"));\n if (key !== \"\" && !elements[i].dataset[\"onlyTranslateAttributes\"]) {\n try {\n let translation = this.translate(key, (elements[i].dataset[\"translationArgs\"] !== undefined) ? JSON.parse(elements[i].dataset[\"translationArgs\"]) : undefined);\n if (elements[i].dataset[\"translationUseText\"] === \"1\") {\n elements[i].innerText = translation;\n }\n else {\n elements[i].innerHTML = translation;\n }\n elements[i].dataset[\"translation\"] = key;\n }\n catch (err) {\n console.error(\"wrong configured translation: \" + err);\n }\n }\n //Übersetzung von Attributen\n for (let k in elements[i].dataset) {\n if (k.startsWith(\"translation\") && !k.endsWith(\"Args\")) {\n try {\n elements[i][k.substr(11).toLowerCase()] = this.translate(elements[i].dataset[k], (elements[i].dataset[k + \"Args\"] !== undefined) ? JSON.parse(elements[i].dataset[k + \"Args\"]) : undefined);\n }\n catch (err) {\n console.error(\"wrong configured translation: \" + err);\n }\n }\n }\n }\n }\n //Call translation callbacks\n yield Helper_1.Helper.asyncForEach(this._translationCallbacks, (callback) => __awaiter(this, void 0, void 0, function* () { return callback(baseElement); }));\n // this._translationCallbacks.forEach(callback => callback(baseElement));\n });\n }\n /**\n * Lädt die im NativeStorage gespeicherte Sprache oder - falls diese nicht vorhanden ist - die vom User untersütze Sprache im Browser\n * @returns {Promise<*>}\n */\n loadUserLanguage() {\n return __awaiter(this, void 0, void 0, function* () {\n let userLanguage = yield NativeStoragePromise_1.NativeStoragePromise.getItem(this._nativeStorageKey);\n if (!Translator._isValid(userLanguage) || !(userLanguage in this._translations)) {\n let userLanguages = [];\n if (navigator.language !== undefined) {\n userLanguages.push(navigator.language);\n }\n if (\"languages\" in navigator) {\n //.slice(0) klont das Array. Behebt einen Bug in Firefox\n userLanguages = navigator.languages.slice(0);\n }\n //sicherstellen, dass überhaupt eine Sprache gefunden wird\n userLanguages.push(this._fallbackLanguage);\n // if (userLanguages !== undefined) {\n for (let i = 0, numLanguages = userLanguages.length; i < numLanguages; i++) {\n if (userLanguages[i] in this._translations) {\n userLanguage = userLanguages[i];\n break;\n }\n }\n // }\n }\n return userLanguage;\n });\n }\n /**\n * Erstellt eine neue Übersetzung, welche auch übersetzt wird, wenn die Sprache geändert wird\n * @param key\n * @param args\n * @param tag\n * @param useText\n * @returns {any}\n */\n makePersistentTranslation(key, args, tag, useText) {\n useText = Helper_1.Helper.nonNull(useText, tag, args, false);\n tag = tag || \"span\";\n if (typeof document !== 'undefined') {\n let htmlElem = document.createElement(tag);\n htmlElem.dataset[\"translation\"] = key;\n htmlElem.classList.add(this._translationClass);\n if (args !== undefined) {\n htmlElem.dataset[\"translationArgs\"] = JSON.stringify(args);\n }\n if (useText === true) {\n htmlElem.innerText = this.translate(key, args);\n htmlElem.dataset[\"translationUseText\"] = \"1\";\n }\n else {\n htmlElem.innerHTML = this.translate(key, args);\n }\n return htmlElem;\n }\n }\n getTranslationClass() {\n return this._translationClass;\n }\n getCurrentLanguage() {\n return this._currentLanguage;\n }\n static getInstance() {\n return Translator_1.Translator.getInstance();\n }\n static setLanguage(language) {\n return __awaiter(this, void 0, void 0, function* () {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.setLanguage(language);\n }\n });\n }\n static makePersistentTranslation(key, args, tag, useText) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.makePersistentTranslation(key, args, tag, useText);\n }\n }\n static addTranslationCallback(callback, callImmediately) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.addTranslationCallback(callback, callImmediately);\n }\n }\n static removeTranslationCallback(callbackId) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.removeTranslationCallback(callbackId);\n }\n }\n static updateTranslations(baseElement) {\n return __awaiter(this, void 0, void 0, function* () {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.updateTranslations(baseElement);\n }\n });\n }\n static init(config) {\n Translator_1.Translator.instance = new Translator(config);\n }\n}\nexports.Translator = Translator;\nTranslator._translations = {};\nTranslator.logMissingTranslations = true;\nTranslator.instance = null;\n//# sourceMappingURL=Translator.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/Translator.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/ViewInflater.js": -/*!*******************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/ViewInflater.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ViewInflater = void 0;\nconst client_1 = __webpack_require__(/*! js-helper/dist/client */ \"./node_modules/js-helper/dist/client.js\");\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\nconst DataManager_1 = __webpack_require__(/*! ./DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\n/**\n * Singleton-Klasse genutzt zum laden von Views\n */\nclass ViewInflater {\n constructor() {\n this.loadingPromises = {};\n }\n /**\n * Statische Funktion, um die Singleton-Instanz zu holen\n *\n * @returns {ViewInflater}\n */\n static getInstance() {\n if (shared_1.Helper.isNull(ViewInflater.instance)) {\n ViewInflater.instance = new ViewInflater();\n }\n return ViewInflater.instance;\n }\n /**\n * Lädt asynchron eine View anhand einer URL und lädt ebenso alle child-views\n *\n * Extra nicht async, damit Promise sofort in LoadingPromise hinzugefügt werden kann\n *\n * @param viewUrl\n * @param parentUrls\n * @returns {*}\n */\n load(viewUrl, parentUrls) {\n // console.log(\"viewUrl\", viewUrl, parentUrls);\n //Kopiere Elemente, damit originale parentURLS nicht verändert werden\n parentUrls = shared_1.JsonHelper.deepCopy(shared_1.Helper.nonNull(parentUrls, []));\n //Detektiert eine Schleife in den Views\n if (parentUrls.indexOf(viewUrl) !== -1) {\n //Return Promise.reject => da View vorher schon einmal geladen, wird das Resultat ebenfalls in loadingPromises gespeichert für diese View\n return Promise.reject(\"views are in a circuit! cannot resolve view for url \" + parentUrls[0] + \"! url \" + viewUrl + \" is in stack before!\");\n }\n parentUrls.push(viewUrl);\n //Shortcut, falls die View schon geladen wurde. Muss nach Schleifenüberprüfung aufgerufen werden\n if (shared_1.Helper.isNotNull(this.loadingPromises[viewUrl])) {\n return this.loadingPromises[viewUrl].then(view => view.cloneNode(true));\n }\n let t;\n let resultPromise = Promise.resolve(t);\n if (viewUrl instanceof Element) {\n resultPromise = Promise.resolve(viewUrl);\n }\n else {\n resultPromise = DataManager_1.DataManager.loadAsset(viewUrl).then(htmlText => {\n let doc = (new DOMParser()).parseFromString(htmlText, \"text/html\");\n //Parsing hat nicht geklappt, also per innerHTML\n if (shared_1.Helper.isNull(doc)) {\n doc = document.implementation.createHTMLDocument('');\n doc.body.innerHTML = htmlText;\n }\n //Wrappe Elemente mit einem Span\n let spanElem = document.createElement(\"span\");\n spanElem.classList.add(\"injected-span\");\n return ViewInflater.moveChildren(doc.body, spanElem);\n });\n }\n this.loadingPromises[viewUrl] = resultPromise.then(parentElement => {\n let promises = [];\n let childViews = parentElement.querySelectorAll(\"[data-view]\");\n //lade Kinder-Views\n childViews.forEach(childView => {\n promises.push(ViewInflater.getInstance().load(childView.dataset[\"view\"], parentUrls).then(element => {\n childView.replaceWith(element);\n ViewInflater.replaceWithChildren(element);\n }));\n });\n return Promise.all(promises).then(function () {\n return parentElement;\n });\n }).catch(e => {\n console.error(e);\n this.loadingPromises[viewUrl] = null;\n throw e;\n });\n return this.loadingPromises[viewUrl].then(view => view.cloneNode(true));\n }\n /**\n * Statische Funktion, um Elemente aus einem String zu kreieren\n *\n * @param string\n * @returns {NodeListOf}\n */\n static inflateElementsFromString(string) {\n let template = document.createElement('template');\n template.innerHTML = string;\n return template.content.childNodes;\n }\n /**\n * Kreiert ein Ladesymbol. Evtl entfernen\n *\n * @returns {HTMLDivElement}\n */\n static createLoadingSymbol(loaderClass) {\n let svgNS = \"http://www.w3.org/2000/svg\";\n let loader = document.createElement(\"div\");\n loader.classList.add('loader');\n //LoaderClass darf nicht leer sein, da sonst HTML einen Felher schmeißt\n if (loaderClass) {\n loader.classList.add(loaderClass);\n }\n let svg = document.createElementNS(svgNS, \"svg\");\n svg.setAttribute('viewBox', \"0 0 32 32\");\n svg.setAttribute(\"width\", \"32\");\n svg.setAttribute(\"height\", \"32\");\n let circle = document.createElementNS(svgNS, \"circle\");\n circle.setAttribute(\"class\", \"spinner\");\n circle.setAttribute(\"cx\", \"16\");\n circle.setAttribute(\"cy\", \"16\");\n circle.setAttribute(\"r\", \"14\");\n circle.setAttribute(\"fill\", \"none\");\n svg.appendChild(circle);\n loader.appendChild(svg);\n // let loader = document.createElement(\"div\");\n // loader.appendChild(document.createTextNode(\"LOADING...\"));\n return loader;\n }\n /**\n * Moves the child-Nodes from one element to another\n * @param from\n * @param to\n * @returns {*}\n */\n static moveChildren(from, to) {\n return client_1.ViewHelper.moveChildren(from, to);\n }\n /**\n * Ersetzt ein Element durch seine Kinder (entfernt das Element ohne die Kinder zu entfernen)\n * @param element\n */\n static replaceWithChildren(element) {\n let children = [];\n //Zwischenspeichern der Children, da removeChild die forEach-Schleife durcheinander bringt\n element.childNodes.forEach(child => {\n children.push(child);\n });\n let parent = element.parentElement;\n children.forEach(child => {\n element.removeChild(child);\n parent.insertBefore(child, element);\n });\n element.remove();\n }\n}\nexports.ViewInflater = ViewInflater;\nViewInflater.instance = null;\n//# sourceMappingURL=ViewInflater.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/ViewInflater.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/js/translationInit.js": -/*!**********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/js/translationInit.js ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst App_1 = __webpack_require__(/*! ./App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\nconst Translator_1 = __webpack_require__(/*! ./Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\nconst deTranslations = __webpack_require__(/*! ../translations/de */ \"./node_modules/cordova-sites/dist/client/translations/de.json\");\nconst enTranslations = __webpack_require__(/*! ../translations/en */ \"./node_modules/cordova-sites/dist/client/translations/en.json\");\nApp_1.App.addInitialization(() => {\n console.log(\"user trsnslation\");\n Translator_1.Translator.addDynamicTranslations({\n \"de\": deTranslations,\n \"en\": enTranslations\n });\n});\n//# sourceMappingURL=translationInit.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/js/translationInit.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/translations/de.json": -/*!*********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/translations/de.json ***! - \*********************************************************************/ -/*! exports provided: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, January, February, March, April, May, June, July, August, September, October, November, December, Sun, Mon, Tue, Wed, Thu, Fri, Sat, Jan, Feb, Mar, Apr, Jun, Jul, Aug, Sep, Oct, Nov, Dec, cannot open popups, default */ -/***/ (function(module) { - -eval("module.exports = JSON.parse(\"{\\\"Sunday\\\":\\\"Sonntag\\\",\\\"Monday\\\":\\\"Montag\\\",\\\"Tuesday\\\":\\\"Dienstag\\\",\\\"Wednesday\\\":\\\"Mittwoch\\\",\\\"Thursday\\\":\\\"Donnerstag\\\",\\\"Friday\\\":\\\"Freitag\\\",\\\"Saturday\\\":\\\"Samstag\\\",\\\"January\\\":\\\"Januar\\\",\\\"February\\\":\\\"Februar\\\",\\\"March\\\":\\\"März\\\",\\\"April\\\":\\\"April\\\",\\\"May\\\":\\\"Mai\\\",\\\"June\\\":\\\"Juni\\\",\\\"July\\\":\\\"Juli\\\",\\\"August\\\":\\\"August\\\",\\\"September\\\":\\\"September\\\",\\\"October\\\":\\\"Oktober\\\",\\\"November\\\":\\\"November\\\",\\\"December\\\":\\\"Dezember\\\",\\\"Sun\\\":\\\"So\\\",\\\"Mon\\\":\\\"Mo\\\",\\\"Tue\\\":\\\"Di\\\",\\\"Wed\\\":\\\"Mi\\\",\\\"Thu\\\":\\\"Do\\\",\\\"Fri\\\":\\\"Fr\\\",\\\"Sat\\\":\\\"Sa\\\",\\\"Jan\\\":\\\"Jan\\\",\\\"Feb\\\":\\\"Feb\\\",\\\"Mar\\\":\\\"Mär\\\",\\\"Apr\\\":\\\"Apr\\\",\\\"Jun\\\":\\\"Jun\\\",\\\"Jul\\\":\\\"Jul\\\",\\\"Aug\\\":\\\"Aug\\\",\\\"Sep\\\":\\\"Sep\\\",\\\"Oct\\\":\\\"Okt\\\",\\\"Nov\\\":\\\"Nov\\\",\\\"Dec\\\":\\\"Dez\\\",\\\"cannot open popups\\\":\\\"Bitte erlaube Popups, um die Funktion nutzen zu können.\\\"}\");\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/translations/de.json?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/client/translations/en.json": -/*!*********************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/client/translations/en.json ***! - \*********************************************************************/ -/*! exports provided: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, January, February, March, April, May, June, July, August, September, October, November, December, Sun, Mon, Tue, Wed, Thu, Fri, Sat, Jan, Feb, Mar, Apr, Jun, Jul, Aug, Sep, Oct, Nov, Dec, cannot open popups, default */ -/***/ (function(module) { - -eval("module.exports = JSON.parse(\"{\\\"Sunday\\\":\\\"Sunday\\\",\\\"Monday\\\":\\\"Monday\\\",\\\"Tuesday\\\":\\\"Tuesday\\\",\\\"Wednesday\\\":\\\"Wednesday\\\",\\\"Thursday\\\":\\\"Thursday\\\",\\\"Friday\\\":\\\"Friday\\\",\\\"Saturday\\\":\\\"Saturday\\\",\\\"January\\\":\\\"January\\\",\\\"February\\\":\\\"February\\\",\\\"March\\\":\\\"March\\\",\\\"April\\\":\\\"April\\\",\\\"May\\\":\\\"May\\\",\\\"June\\\":\\\"June\\\",\\\"July\\\":\\\"July\\\",\\\"August\\\":\\\"August\\\",\\\"September\\\":\\\"September\\\",\\\"October\\\":\\\"October\\\",\\\"November\\\":\\\"November\\\",\\\"December\\\":\\\"December\\\",\\\"Sun\\\":\\\"Sun\\\",\\\"Mon\\\":\\\"Mon\\\",\\\"Tue\\\":\\\"Tue\\\",\\\"Wed\\\":\\\"Wed\\\",\\\"Thu\\\":\\\"Thu\\\",\\\"Fri\\\":\\\"Fri\\\",\\\"Sat\\\":\\\"Sat\\\",\\\"Jan\\\":\\\"Jan\\\",\\\"Feb\\\":\\\"Feb\\\",\\\"Mar\\\":\\\"Mar\\\",\\\"Apr\\\":\\\"Apr\\\",\\\"Jun\\\":\\\"Jun\\\",\\\"Jul\\\":\\\"Jul\\\",\\\"Aug\\\":\\\"Aug\\\",\\\"Sep\\\":\\\"Sep\\\",\\\"Oct\\\":\\\"Oct\\\",\\\"Nov\\\":\\\"Nov\\\",\\\"Dec\\\":\\\"Dec\\\",\\\"cannot open popups\\\":\\\"Please allow popups to use this function.\\\"}\");\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/client/translations/en.json?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/shared.js": -/*!***************************************************!*\ - !*** ./node_modules/cordova-sites/dist/shared.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./shared/Translator */ \"./node_modules/cordova-sites/dist/shared/Translator.js\"), exports);\n//# sourceMappingURL=shared.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/shared.js?"); - -/***/ }), - -/***/ "./node_modules/cordova-sites/dist/shared/Translator.js": -/*!**************************************************************!*\ - !*** ./node_modules/cordova-sites/dist/shared/Translator.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\nconst shared_1 = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\n/**\n * Singleton-Klasse zum Übersetzen von Text-Inhalten\n */\nclass Translator {\n /**\n * Erstellt einen neuen Translator\n * @param config\n */\n constructor(config = {\n translations: {},\n fallbackLanguage: \"en\",\n markUntranslatedTranslations: true,\n markTranslations: false,\n logMissingTranslations: true\n }) {\n this._dynamicKey = 0;\n this._translations = {};\n this.addDynamicTranslations(Translator._translations);\n this.addDynamicTranslations(config.translations);\n this._fallbackLanguage = config.fallbackLanguage;\n this._markUntranslatedTranslations = config.markUntranslatedTranslations;\n this._markTranslations = config.markTranslations;\n if (config.logMissingTranslations === true) {\n this._logMissingTranslationsFunction = (missingTranslation, language) => {\n if (language === this._fallbackLanguage) {\n console.error(\"missing base translation for key \" + missingTranslation);\n }\n else {\n console.warn(\"missing translation for language >\" + language + \"< and key >\" + missingTranslation + \"<\");\n }\n };\n }\n else if (typeof config.logMissingTranslations === \"function\") {\n this._logMissingTranslationsFunction = config.logMissingTranslations;\n }\n else {\n this._logMissingTranslationsFunction = null;\n }\n this._translationCallbacks = new Map();\n this._lastTranslationCallbackId = 0;\n }\n createDynamicKey() {\n this._dynamicKey++;\n return \"translator-dynamic-\" + new Date().getTime() + \"-\" + this._dynamicKey;\n }\n /**\n * Übersetzt sofort einen Key in die aktuelle Sprache\n * @param key\n * @param args\n * @param language\n * @returns {*}\n */\n translate(key, args, language) {\n if (shared_1.Helper.isNull(key)) {\n return \"\";\n }\n language = shared_1.Helper.nonNull(language, args, this._fallbackLanguage);\n let translation = null;\n key = key.toLowerCase();\n if (shared_1.Helper.isNotNull(this._translations[language]) && shared_1.Helper.isNotNull(this._translations[language][key])) {\n translation = this._translations[language][key];\n }\n if (!Translator._isValid(translation)) {\n if (this._logMissingTranslationsFunction !== null) {\n this._logMissingTranslationsFunction(key, language);\n }\n if (this._translations[this._fallbackLanguage]) {\n translation = this._translations[this._fallbackLanguage][key];\n }\n if (!Translator._isValid(translation)) {\n if (this._logMissingTranslationsFunction !== null) {\n this._logMissingTranslationsFunction(key, language);\n }\n translation = key;\n }\n if (this._markUntranslatedTranslations) {\n translation = \">>\" + translation + \"<<\";\n }\n }\n if (this._markTranslations) {\n translation = \"$\" + translation + \"$\";\n }\n if (args !== undefined) {\n translation = Translator._format(translation, args);\n }\n return translation;\n }\n /**\n * Fügt neue Übersetzungen hinzu\n * @param trans\n */\n addDynamicTranslations(trans) {\n for (let lang in trans) {\n if (!this._translations[lang]) {\n this._translations[lang] = {};\n }\n for (let key in trans[lang]) {\n this._translations[lang][key.toLowerCase()] = trans[lang][key];\n }\n }\n }\n getLanguages() {\n return Object.keys(this._translations);\n }\n getFallbackLanguage() {\n return this._fallbackLanguage;\n }\n static translate(key, args, language) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.translate(key, args, language);\n }\n return \"\";\n }\n static addDynamicTranslations(trans) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.addDynamicTranslations(trans);\n }\n else {\n Object.keys(trans).forEach(lang => {\n if (shared_1.Helper.isNull(Translator._translations[lang])) {\n Translator._translations[lang] = {};\n }\n Object.assign(Translator._translations[lang], trans[lang]);\n });\n }\n }\n static init(config) {\n Translator.instance = new Translator(config);\n }\n /**\n * @returns {Translator|null}\n */\n static getInstance() {\n return Translator.instance;\n }\n static _isValid(translation) {\n return (typeof translation === \"string\");\n }\n static _format(translation, args) {\n return translation.replace(/{(\\d+)}/g, function (match, number) {\n return args[number] !== undefined ? args[number] : match;\n });\n }\n}\nexports.Translator = Translator;\nTranslator._translations = {};\nTranslator.instance = null;\n//# sourceMappingURL=Translator.js.map\n\n//# sourceURL=webpack:///./node_modules/cordova-sites/dist/shared/Translator.js?"); - -/***/ }), - -/***/ "./node_modules/cs-event-manager/dist/shared.js": -/*!******************************************************!*\ - !*** ./node_modules/cs-event-manager/dist/shared.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(/*! ./shared/EventManager */ \"./node_modules/cs-event-manager/dist/shared/EventManager.js\"));\n\n\n//# sourceURL=webpack:///./node_modules/cs-event-manager/dist/shared.js?"); - -/***/ }), - -/***/ "./node_modules/cs-event-manager/dist/shared/EventManager.js": -/*!*******************************************************************!*\ - !*** ./node_modules/cs-event-manager/dist/shared/EventManager.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_helper_1 = __webpack_require__(/*! js-helper */ \"./node_modules/js-helper/dist/shared.js\");\nclass EventManager {\n constructor() {\n this._listeners = {};\n this._lastListenerId = 0;\n }\n /**\n * @return {EventManager}\n */\n static getInstance() {\n if (!this._instance) {\n this._instance = new EventManager();\n }\n return this._instance;\n }\n addListener(event, listener) {\n if (typeof listener !== \"function\") {\n throw new Error(\"can only add functions as listeners!\");\n }\n this._lastListenerId++;\n if (!this._listeners[event]) {\n this._listeners[event] = {};\n this._listeners[event][this._lastListenerId] = listener;\n }\n return this._lastListenerId;\n }\n removeListener(event, listenerId) {\n if (this._listeners[event] && this._listeners[event][listenerId]) {\n delete this._listeners[event][listenerId];\n }\n }\n trigger(event, data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._listeners[event]) {\n yield js_helper_1.Helper.asyncForEach(Object.keys(this._listeners[event]), (listenerId) => __awaiter(this, void 0, void 0, function* () {\n yield this._listeners[event][listenerId](data);\n }), true);\n }\n });\n }\n static trigger(event, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.getInstance().trigger(event, data);\n });\n }\n}\nexports.EventManager = EventManager;\nEventManager._instance = null;\n\n\n//# sourceURL=webpack:///./node_modules/cs-event-manager/dist/shared/EventManager.js?"); - -/***/ }), - -/***/ "./node_modules/debug/src/browser.js": -/*!*******************************************!*\ - !*** ./node_modules/debug/src/browser.js ***! - \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("/* WEBPACK VAR INJECTION */(function(process) {/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/debug/src/common.js\")(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/debug/src/browser.js?"); - -/***/ }), - -/***/ "./node_modules/debug/src/common.js": -/*!******************************************!*\ - !*** ./node_modules/debug/src/common.js ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n\n\n//# sourceURL=webpack:///./node_modules/debug/src/common.js?"); - -/***/ }), - -/***/ "./node_modules/ieee754/index.js": -/*!***************************************!*\ - !*** ./node_modules/ieee754/index.js ***! - \***************************************/ -/*! no static exports found */ +/* 11 */ /***/ (function(module, exports) { -eval("/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n//# sourceURL=webpack:///./node_modules/ieee754/index.js?"); +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + /***/ }), - -/***/ "./node_modules/inherits/inherits_browser.js": -/*!***************************************************!*\ - !*** ./node_modules/inherits/inherits_browser.js ***! - \***************************************************/ -/*! no static exports found */ +/* 12 */ /***/ (function(module, exports) { -eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/inherits/inherits_browser.js?"); +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + /***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./node_modules/isarray/index.js": -/*!***************************************!*\ - !*** ./node_modules/isarray/index.js ***! - \***************************************/ -/*! no static exports found */ +var isObject = __webpack_require__(14); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; +}; + + +/***/ }), +/* 14 */ /***/ (function(module, exports) { -eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n//# sourceURL=webpack:///./node_modules/isarray/index.js?"); +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + /***/ }), - -/***/ "./node_modules/js-helper/dist/client.js": -/*!***********************************************!*\ - !*** ./node_modules/js-helper/dist/client.js ***! - \***********************************************/ -/*! no static exports found */ +/* 15 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./client/Dragger/DragHelper */ \"./node_modules/js-helper/dist/client/Dragger/DragHelper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/Dragger/DraggedElement */ \"./node_modules/js-helper/dist/client/Dragger/DraggedElement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/HotkeyManager */ \"./node_modules/js-helper/dist/client/HotkeyManager.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/InputSelect */ \"./node_modules/js-helper/dist/client/InputSelect.js\"), exports);\n__exportStar(__webpack_require__(/*! ./client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\"), exports);\n//# sourceMappingURL=client.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/client.js?"); + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Helper = void 0; +/** + * Eine Klasse mit häufig genutzten, nützlichen Funktionen + */ + +var Translator_1 = __webpack_require__(32); + +var Helper = /*#__PURE__*/function () { + function Helper() { + _classCallCheck(this, Helper); + } + + _createClass(Helper, null, [{ + key: "isNull", + value: + /** + * Testet, ob eine Variable null oder Undefined ist + * + * @param variable + * @returns {boolean} + */ + function isNull(variable) { + return variable === null || variable === undefined; + } + /** + * Testet, ob eine Variable nicht (null oder undefined) ist + * + * @param variable + * @returns {boolean} + */ + + }, { + key: "isNotNull", + value: function isNotNull(variable) { + return !Helper.isNull(variable); + } + /** + * Gibt den ersten übergebenen Wert, der nicht (null oder undefined) ist, zurück + * + * @param val1 + * @param val2 + * @param args + * @returns {*} + */ + + }, { + key: "nonNull", + value: function nonNull(val1, val2) { + for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + for (var i = 0; i < arguments.length; i++) { + if (Helper.isNotNull(arguments[i])) { + return arguments[i]; + } + } + + return null; + } + /** + * Testet, ob der übergebene Index am Objekt gesetzt ist. Werden mehrere Indexes übergeben, so wird getestet, + * ob die "Index-Kette" gesetzt ist. + * Bsp.: + * Helper.isSet({"index1":{"index2":value}}, "index1", "index2") ist wahr + * + * @param object + * @param indexes + * @returns {*} + */ + + }, { + key: "isSet", + value: function isSet(object) { + if (Helper.isNotNull(object)) { + for (var _len2 = arguments.length, indexes = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + indexes[_key2 - 1] = arguments[_key2]; + } + + if (indexes.length === 0) { + return true; + } + + return Helper.isSet.apply(null, [object[indexes[0]]].concat(indexes.slice(1))); + } + + return false; + } + /** + * Testet, ob ein Wert null oder Leerstring, bzw nur aus leerzeichend bestehender String ist + * + * @param value + * @returns {boolean} + */ + + }, { + key: "empty", + value: function empty(value) { + return Helper.isNull(value) || typeof value === 'string' && value.trim() === ""; + } + /** + * Testet, ob ein Wert NICHT (null oder Leerstring, bzw nur aus leerzeichend bestehender String ist) + * + * @param value + * @returns {boolean} + */ + + }, { + key: "notEmpty", + value: function notEmpty(value) { + return !Helper.empty(value); + } + /** + * Formatiert ein Date-Object nach der Vorlage von der C-Funktion strftime + * + * @param sFormat + * @param date + * @param useUTC + * @returns {*|void|string|never} + */ + + }, { + key: "strftime", + value: function strftime(sFormat, date, useUTC, makePersistentTranslation) { + useUTC = Helper.nonNull(useUTC, false); + makePersistentTranslation = Helper.nonNull(makePersistentTranslation, true); + date = Helper.nonNull(date, new Date()); + if (!(date instanceof Date)) date = new Date(date); + + var nDay = useUTC ? date.getUTCDay() : date.getDay(), + nDate = useUTC ? date.getUTCDate() : date.getDate(), + nMonth = useUTC ? date.getUTCMonth() : date.getMonth(), + nYear = useUTC ? date.getUTCFullYear() : date.getFullYear(), + nHour = useUTC ? date.getUTCHours() : date.getHours(), + aDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + aDaysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + aMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], + isLeapYear = function isLeapYear() { + if ((nYear & 3) !== 0) return false; + return nYear % 100 !== 0 || nYear % 400 === 0; + }, + getThursday = function getThursday() { + var target = new Date(date); + target.setDate(nDate - (nDay + 6) % 7 + 3); + return target; + }, + zeroPad = function zeroPad(nNum, nPad) { + return ('' + (Math.pow(10, nPad) + nNum)).slice(1); + }; + + return sFormat.replace(/%[a-z]/gi, function (sMatch) { + return { + '%a': makePersistentTranslation ? Translator_1.Translator.makePersistentTranslation(aDaysShort[nDay]).outerHTML : Translator_1.Translator.translate(aDaysShort[nDay]), + '%A': makePersistentTranslation ? Translator_1.Translator.makePersistentTranslation(aDays[nDay]).outerHTML : Translator_1.Translator.translate(aDays[nDay]), + '%b': makePersistentTranslation ? Translator_1.Translator.makePersistentTranslation(aMonths[nMonth].slice(0, 3)).outerHTML : Translator_1.Translator.translate(aMonths[nMonth].slice(0, 3)), + '%B': makePersistentTranslation ? Translator_1.Translator.makePersistentTranslation(aMonths[nMonth]).outerHTML : Translator_1.Translator.translate(aMonths[nMonth]), + '%c': date.toUTCString(), + '%C': Math.floor(nYear / 100), + '%d': zeroPad(nDate, 2), + '%e': nDate, + '%f': zeroPad(date.getTime() % 1000, 4), + '%F': date.toISOString().slice(0, 10), + '%G': getThursday().getFullYear(), + '%g': ('' + getThursday().getFullYear()).slice(2), + '%H': zeroPad(nHour, 2), + '%I': zeroPad((nHour + 11) % 12 + 1, 2), + '%j': zeroPad(aDayCount[nMonth] + nDate + (nMonth > 1 && isLeapYear() ? 1 : 0), 3), + '%k': '' + nHour, + '%l': (nHour + 11) % 12 + 1, + '%m': zeroPad(nMonth + 1, 2), + '%M': zeroPad(date.getMinutes(), 2), + '%p': nHour < 12 ? 'AM' : 'PM', + '%P': nHour < 12 ? 'am' : 'pm', + '%s': Math.round(date.getTime() / 1000), + '%S': zeroPad(date.getSeconds(), 2), + '%u': nDay || 7, + '%w': '' + nDay, + '%x': date.toLocaleDateString(), + '%X': date.toLocaleTimeString(), + '%y': ('' + nYear).slice(2), + '%Y': nYear, + '%z': date.toTimeString().replace(/.+GMT([+-]\d+).+/, '$1'), + '%Z': date.toTimeString().replace(/.+\((.+?)\)$/, '$1') + }[sMatch] || sMatch; + }); + } + }, { + key: "arrayToObject", + value: function arrayToObject(array, indexFunction) { + var obj = {}; + array.forEach(function (val) { + obj[indexFunction(val)] = val; + }); + return obj; + } + /** + * Deepcopies JSON + * + * @param obj + * @returns {*} + */ + + }, { + key: "cloneJson", + value: function cloneJson(obj) { + // https://stackoverflow.com/questions/4120475/how-to-create-and-clone-a-json-object/17502990#17502990 + var i; // basic type deep copy + + if (Helper.isNull(obj) || _typeof(obj) !== 'object') { + return obj; + } // array deep copy + + + if (obj instanceof Array) { + var cloneA = []; + + for (i = 0; i < obj.length; ++i) { + cloneA[i] = Helper.cloneJson(obj[i]); + } + + return cloneA; + } + + if (obj instanceof Date) { + return new Date(obj.getTime()); + } // object deep copy + + + var cloneO = {}; + + for (i in obj) { + cloneO[i] = Helper.cloneJson(obj[i]); + } + + return cloneO; + } + /** + * Erstellt ein FormData-Object von JSON-Data. Nützlich für fetch + * + * @param obj + * @returns {FormData} + */ + + }, { + key: "formDataFromObject", + value: function formDataFromObject(obj) { + var formData = new FormData(); + + for (var k in obj) { + formData.set(k, obj[k]); + } + + return formData; + } + /** + * Entfernt alle Children eines Elements + * + * @param element + * @returns {Node} + */ + + }, { + key: "removeAllChildren", + value: function removeAllChildren(element) { + if (element instanceof Node) { + while (element.firstChild) { + element.removeChild(element.firstChild); + } + } + + return element; + } + }, { + key: "shuffleArray", + value: function shuffleArray(array) { + var currentIndex = array.length, + temporaryValue, + randomIndex; // While there remain elements to shuffle... + + while (0 !== currentIndex) { + // Pick a remaining element... + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; // And swap it with the current element. + + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + + return array; + } + }, { + key: "padZero", + value: function padZero(n, width, z) { + z = Helper.nonNull(z, '0'); + n = n + ''; + width = Helper.nonNull(width, 1); + return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; + } + }, { + key: "deepEqual", + value: function deepEqual(a, b) { + // debugger; + if (a === b) { + return true; + } + + if (_typeof(a) === "object" && _typeof(b) === "object") { + var keysOfB = Object.keys(b); + var childrenDeepEqual = Object.keys(a).every(function (key) { + var index = keysOfB.indexOf(key); + + if (index < 0) { + return false; + } + + keysOfB.splice(index, 1); + return Helper.deepEqual(a[key], b[key]); + }); + return childrenDeepEqual && keysOfB.length === 0; + } + + return false; + } //Ältere evtl nützliche Funktionen + + }, { + key: "htmlspecialcharsDecode", + value: function htmlspecialcharsDecode(text) { + var map = { + '&': '&', + '&': "&", + '<': '<', + '>': '>', + '"': '"', + ''': "'", + '’': "’", + '‘': "‘", + '–': "–", + '—': "—", + '…': "…", + '”': '”' + }; + + if (Helper.isNotNull(text) && typeof text.replace === "function") { + return text.replace(/\&[\w\d\#]{2,5}\;/g, function (m) { + return map[m]; + }); + } + + return text; + } // static getIndexedObject(array, keyValue) { + // let obj = {}; + // for (let i = 0, n = array.length; i < n; i++) { + // obj[array[i][keyValue]] = array[i]; + // } + // return obj; + // } + + /** + * Inverts the key-Values for an object + * @param obj + * @return {*} + */ + + }, { + key: "invertKeyValues", + value: function invertKeyValues(obj) { + var new_obj = {}; + + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + new_obj[obj[prop]] = prop; + } + } + + return new_obj; + } + }, { + key: "asyncForEach", + value: function asyncForEach(array, callback, runAsyncronous) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var validPromises, i, index, currentPromise; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + runAsyncronous = Helper.nonNull(runAsyncronous, false); + + if (array instanceof Map) { + array = Array.from(array.values()); + } + + validPromises = []; + i = 0; + + case 4: + if (!(i < array.length)) { + _context.next = 14; + break; + } + + index = i; + currentPromise = Promise.resolve(callback(array[index], index, array)); + + if (runAsyncronous) { + _context.next = 10; + break; + } + + _context.next = 10; + return currentPromise; + + case 10: + validPromises.push(currentPromise); + + case 11: + i++; + _context.next = 4; + break; + + case 14: + return _context.abrupt("return", Promise.all(validPromises)); + + case 15: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }, { + key: "escapeRegExp", + value: function escapeRegExp(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + } + }, { + key: "objectForEach", + value: function objectForEach(object, callback) { + Object.keys(object).forEach(function (key) { + callback(object[key], key, object); + }); + } + }, { + key: "toArray", + value: function toArray(object) { + var res = []; + + for (var k in object) { + res.push(object[k]); + } + + return res; + } + }, { + key: "imageUrlIsEmpty", + value: function imageUrlIsEmpty(url) { + return Helper.isNull(url) || url.trim() === "" || url.trim() === "data:"; + } + }, { + key: "newPromiseWithResolve", + value: function newPromiseWithResolve() { + var resolver = null; + var rejecter = null; + var promise = new Promise(function (resolve, reject) { + resolver = resolve; + rejecter = reject; + }); + promise["resolve"] = resolver; + promise["reject"] = rejecter; + return promise; + } + }]); + + return Helper; +}(); + +exports.Helper = Helper; /***/ }), +/* 16 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./node_modules/js-helper/dist/client/Dragger/DragHelper.js": -/*!******************************************************************!*\ - !*** ./node_modules/js-helper/dist/client/Dragger/DragHelper.js ***! - \******************************************************************/ -/*! no static exports found */ +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ AbstractSqliteDriver_AbstractSqliteDriver; }); + +// EXTERNAL MODULE: ./node_modules/typeorm/node_modules/tslib/tslib.es6.js +var tslib_es6 = __webpack_require__(0); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/DateUtils.js +var DateUtils = __webpack_require__(21); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js +var BrowserDisabledDriversDummy = __webpack_require__(1); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/Table.js +var Table = __webpack_require__(5); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableColumn.js +var TableColumn = __webpack_require__(25); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js +var TableForeignKey = __webpack_require__(48); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableIndex.js +var TableIndex = __webpack_require__(38); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/util/TableUtils.js +var TableUtils = __webpack_require__(121); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableUnique.js +var TableUnique = __webpack_require__(30); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableCheck.js +var TableCheck = __webpack_require__(43); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js +var TableExclusion = __webpack_require__(59); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/view/View.js +var View = __webpack_require__(56); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/schema-builder/RdbmsSchemaBuilder.js + + + + + + + + + + + + + + +/** + * Creates complete tables schemas in the database based on the entity metadatas. + * + * Steps how schema is being built: + * 1. load list of all tables with complete column and keys information from the db + * 2. drop all (old) foreign keys that exist in the table, but does not exist in the metadata + * 3. create new tables that does not exist in the db, but exist in the metadata + * 4. drop all columns exist (left old) in the db table, but does not exist in the metadata + * 5. add columns from metadata which does not exist in the table + * 6. update all exist columns which metadata has changed + * 7. update primary keys - update old and create new primary key from changed columns + * 8. create foreign keys which does not exist in the table yet + * 9. create indices which are missing in db yet, and drops indices which exist in the db, but does not exist in the metadata anymore + */ +var RdbmsSchemaBuilder_RdbmsSchemaBuilder = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RdbmsSchemaBuilder(connection) { + this.connection = connection; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates complete schemas for the given entity metadatas. + */ + RdbmsSchemaBuilder.prototype.build = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var tablePaths, error_1, rollbackError_1; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + this.queryRunner = this.connection.createQueryRunner(); + if (!!(this.connection.driver instanceof BrowserDisabledDriversDummy["d" /* CockroachDriver */])) return [3 /*break*/, 2]; + return [4 /*yield*/, this.queryRunner.startTransaction()]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + _a.trys.push([2, 12, 18, 20]); + tablePaths = this.entityToSyncMetadatas.map(function (metadata) { return metadata.tablePath; }); + if (!(this.viewEntityToSyncMetadatas.length > 0)) return [3 /*break*/, 4]; + return [4 /*yield*/, this.createTypeormMetadataTable()]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [4 /*yield*/, this.queryRunner.getTables(tablePaths)]; + case 5: + _a.sent(); + return [4 /*yield*/, this.queryRunner.getViews([])]; + case 6: + _a.sent(); + return [4 /*yield*/, this.executeSchemaSyncOperationsInProperOrder()]; + case 7: + _a.sent(); + if (!this.connection.queryResultCache) return [3 /*break*/, 9]; + return [4 /*yield*/, this.connection.queryResultCache.synchronize(this.queryRunner)]; + case 8: + _a.sent(); + _a.label = 9; + case 9: + if (!!(this.connection.driver instanceof BrowserDisabledDriversDummy["d" /* CockroachDriver */])) return [3 /*break*/, 11]; + return [4 /*yield*/, this.queryRunner.commitTransaction()]; + case 10: + _a.sent(); + _a.label = 11; + case 11: return [3 /*break*/, 20]; + case 12: + error_1 = _a.sent(); + _a.label = 13; + case 13: + _a.trys.push([13, 16, , 17]); + if (!!(this.connection.driver instanceof BrowserDisabledDriversDummy["d" /* CockroachDriver */])) return [3 /*break*/, 15]; + return [4 /*yield*/, this.queryRunner.rollbackTransaction()]; + case 14: + _a.sent(); + _a.label = 15; + case 15: return [3 /*break*/, 17]; + case 16: + rollbackError_1 = _a.sent(); + return [3 /*break*/, 17]; + case 17: throw error_1; + case 18: return [4 /*yield*/, this.queryRunner.release()]; + case 19: + _a.sent(); + return [7 /*endfinally*/]; + case 20: return [2 /*return*/]; + } + }); + }); + }; + /** + * Returns sql queries to be executed by schema builder. + */ + RdbmsSchemaBuilder.prototype.log = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var tablePaths; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + this.queryRunner = this.connection.createQueryRunner(); + _a.label = 1; + case 1: + _a.trys.push([1, , 9, 11]); + tablePaths = this.entityToSyncMetadatas.map(function (metadata) { return metadata.tablePath; }); + if (!(this.viewEntityToSyncMetadatas.length > 0)) return [3 /*break*/, 3]; + return [4 /*yield*/, this.createTypeormMetadataTable()]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [4 /*yield*/, this.queryRunner.getTables(tablePaths)]; + case 4: + _a.sent(); + return [4 /*yield*/, this.queryRunner.getViews([])]; + case 5: + _a.sent(); + this.queryRunner.enableSqlMemory(); + return [4 /*yield*/, this.executeSchemaSyncOperationsInProperOrder()]; + case 6: + _a.sent(); + if (!this.connection.queryResultCache) return [3 /*break*/, 8]; + return [4 /*yield*/, this.connection.queryResultCache.synchronize(this.queryRunner)]; + case 7: + _a.sent(); + _a.label = 8; + case 8: return [2 /*return*/, this.queryRunner.getMemorySql()]; + case 9: + // its important to disable this mode despite the fact we are release query builder + // because there exist drivers which reuse same query runner. Also its important to disable + // sql memory after call of getMemorySql() method because last one flushes sql memory. + this.queryRunner.disableSqlMemory(); + return [4 /*yield*/, this.queryRunner.release()]; + case 10: + _a.sent(); + return [7 /*endfinally*/]; + case 11: return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(RdbmsSchemaBuilder.prototype, "entityToSyncMetadatas", { + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Returns only entities that should be synced in the database. + */ + get: function () { + return this.connection.entityMetadatas.filter(function (metadata) { return metadata.synchronize && metadata.tableType !== "entity-child" && metadata.tableType !== "view"; }); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RdbmsSchemaBuilder.prototype, "viewEntityToSyncMetadatas", { + /** + * Returns only entities that should be synced in the database. + */ + get: function () { + return this.connection.entityMetadatas.filter(function (metadata) { return metadata.tableType === "view" && metadata.synchronize; }); + }, + enumerable: false, + configurable: true + }); + /** + * Executes schema sync operations in a proper order. + * Order of operations matter here. + */ + RdbmsSchemaBuilder.prototype.executeSchemaSyncOperationsInProperOrder = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.dropOldViews()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.dropOldForeignKeys()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.dropOldIndices()]; + case 3: + _a.sent(); + return [4 /*yield*/, this.dropOldChecks()]; + case 4: + _a.sent(); + return [4 /*yield*/, this.dropOldExclusions()]; + case 5: + _a.sent(); + return [4 /*yield*/, this.dropCompositeUniqueConstraints()]; + case 6: + _a.sent(); + // await this.renameTables(); + return [4 /*yield*/, this.renameColumns()]; + case 7: + // await this.renameTables(); + _a.sent(); + return [4 /*yield*/, this.createNewTables()]; + case 8: + _a.sent(); + return [4 /*yield*/, this.dropRemovedColumns()]; + case 9: + _a.sent(); + return [4 /*yield*/, this.addNewColumns()]; + case 10: + _a.sent(); + return [4 /*yield*/, this.updatePrimaryKeys()]; + case 11: + _a.sent(); + return [4 /*yield*/, this.updateExistColumns()]; + case 12: + _a.sent(); + return [4 /*yield*/, this.createNewIndices()]; + case 13: + _a.sent(); + return [4 /*yield*/, this.createNewChecks()]; + case 14: + _a.sent(); + return [4 /*yield*/, this.createNewExclusions()]; + case 15: + _a.sent(); + return [4 /*yield*/, this.createCompositeUniqueConstraints()]; + case 16: + _a.sent(); + return [4 /*yield*/, this.createForeignKeys()]; + case 17: + _a.sent(); + return [4 /*yield*/, this.createViews()]; + case 18: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops all (old) foreign keys that exist in the tables, but do not exist in the entity metadata. + */ + RdbmsSchemaBuilder.prototype.dropOldForeignKeys = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_1, this_1, _a, _b, metadata, e_1_1; + var e_1, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_1 = function (metadata) { + var table, tableForeignKeysToDrop; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_1.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + tableForeignKeysToDrop = table.foreignKeys.filter(function (tableForeignKey) { + var metadataFK = metadata.foreignKeys.find(function (metadataForeignKey) { return foreignKeysMatch(tableForeignKey, metadataForeignKey); }); + return !metadataFK + || (metadataFK.onDelete && metadataFK.onDelete !== tableForeignKey.onDelete) + || (metadataFK.onUpdate && metadataFK.onUpdate !== tableForeignKey.onUpdate); + }); + if (tableForeignKeysToDrop.length === 0) + return [2 /*return*/, "continue"]; + this_1.connection.logger.logSchemaBuild("dropping old foreign keys of " + table.name + ": " + tableForeignKeysToDrop.map(function (dbForeignKey) { return dbForeignKey.name; }).join(", ")); + // drop foreign keys from the database + return [4 /*yield*/, this_1.queryRunner.dropForeignKeys(table, tableForeignKeysToDrop)]; + case 1: + // drop foreign keys from the database + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_1 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_1(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_1_1 = _d.sent(); + e_1 = { error: e_1_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_1) throw e_1.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Rename tables + */ + RdbmsSchemaBuilder.prototype.renameTables = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/]; + }); + }); + }; + /** + * Renames columns. + * Works if only one column per table was changed. + * Changes only column name. If something besides name was changed, these changes will be ignored. + */ + RdbmsSchemaBuilder.prototype.renameColumns = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_2, this_2, _a, _b, metadata, e_2_1; + var e_2, _c; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_2 = function (metadata) { + var table, renamedMetadataColumns, renamedTableColumns, renamedColumn; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_2.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + if (metadata.columns.length !== table.columns.length) + return [2 /*return*/, "continue"]; + renamedMetadataColumns = metadata.columns.filter(function (column) { + return !table.columns.find(function (tableColumn) { + return tableColumn.name === column.databaseName + && tableColumn.type === _this.connection.driver.normalizeType(column) + && tableColumn.isNullable === column.isNullable + && tableColumn.isUnique === _this.connection.driver.normalizeIsUnique(column); + }); + }); + if (renamedMetadataColumns.length === 0 || renamedMetadataColumns.length > 1) + return [2 /*return*/, "continue"]; + renamedTableColumns = table.columns.filter(function (tableColumn) { + return !metadata.columns.find(function (column) { + return column.databaseName === tableColumn.name + && _this.connection.driver.normalizeType(column) === tableColumn.type + && column.isNullable === tableColumn.isNullable + && _this.connection.driver.normalizeIsUnique(column) === tableColumn.isUnique; + }); + }); + if (renamedTableColumns.length === 0 || renamedTableColumns.length > 1) + return [2 /*return*/, "continue"]; + renamedColumn = renamedTableColumns[0].clone(); + renamedColumn.name = renamedMetadataColumns[0].databaseName; + this_2.connection.logger.logSchemaBuild("renaming column \"" + renamedTableColumns[0].name + "\" in to \"" + renamedColumn.name + "\""); + return [4 /*yield*/, this_2.queryRunner.renameColumn(table, renamedTableColumns[0], renamedColumn)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_2 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_2(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_2_1 = _d.sent(); + e_2 = { error: e_2_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_2) throw e_2.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + RdbmsSchemaBuilder.prototype.dropOldIndices = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_3, this_3, _a, _b, metadata, e_3_1; + var e_3, _c; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_3 = function (metadata) { + var table, dropQueries; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_3.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + dropQueries = table.indices + .filter(function (tableIndex) { + var indexMetadata = metadata.indices.find(function (index) { return index.name === tableIndex.name; }); + if (indexMetadata) { + if (indexMetadata.synchronize === false) + return false; + if (indexMetadata.isUnique !== tableIndex.isUnique) + return true; + if (indexMetadata.isSpatial !== tableIndex.isSpatial) + return true; + if (_this.connection.driver.isFullTextColumnTypeSupported() && indexMetadata.isFulltext !== tableIndex.isFulltext) + return true; + if (indexMetadata.columns.length !== tableIndex.columnNames.length) + return true; + return !indexMetadata.columns.every(function (column) { return tableIndex.columnNames.indexOf(column.databaseName) !== -1; }); + } + return true; + }) + .map(function (tableIndex) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + this.connection.logger.logSchemaBuild("dropping an index: \"" + tableIndex.name + "\" from table " + table.name); + return [4 /*yield*/, this.queryRunner.dropIndex(table, tableIndex)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + return [4 /*yield*/, Promise.all(dropQueries)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_3 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_3(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_3_1 = _d.sent(); + e_3 = { error: e_3_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_3) throw e_3.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + RdbmsSchemaBuilder.prototype.dropOldChecks = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_4, this_4, _a, _b, metadata, e_4_1; + var e_4, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + // Mysql does not support check constraints + if (this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) + return [2 /*return*/]; + _loop_4 = function (metadata) { + var table, oldChecks; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_4.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + oldChecks = table.checks.filter(function (tableCheck) { + return !metadata.checks.find(function (checkMetadata) { return checkMetadata.name === tableCheck.name; }); + }); + if (oldChecks.length === 0) + return [2 /*return*/, "continue"]; + this_4.connection.logger.logSchemaBuild("dropping old check constraint: " + oldChecks.map(function (check) { return "\"" + check.name + "\""; }).join(", ") + " from table \"" + table.name + "\""); + return [4 /*yield*/, this_4.queryRunner.dropCheckConstraints(table, oldChecks)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_4 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_4(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_4_1 = _d.sent(); + e_4 = { error: e_4_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_4) throw e_4.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + RdbmsSchemaBuilder.prototype.dropCompositeUniqueConstraints = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_5, this_5, _a, _b, metadata, e_5_1; + var e_5, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_5 = function (metadata) { + var table, compositeUniques; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_5.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + compositeUniques = table.uniques.filter(function (tableUnique) { + return tableUnique.columnNames.length > 1 && !metadata.uniques.find(function (uniqueMetadata) { return uniqueMetadata.name === tableUnique.name; }); + }); + if (compositeUniques.length === 0) + return [2 /*return*/, "continue"]; + this_5.connection.logger.logSchemaBuild("dropping old unique constraint: " + compositeUniques.map(function (unique) { return "\"" + unique.name + "\""; }).join(", ") + " from table \"" + table.name + "\""); + return [4 /*yield*/, this_5.queryRunner.dropUniqueConstraints(table, compositeUniques)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_5 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_5(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_5_1 = _d.sent(); + e_5 = { error: e_5_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_5) throw e_5.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + RdbmsSchemaBuilder.prototype.dropOldExclusions = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_6, this_6, _a, _b, metadata, e_6_1; + var e_6, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + // Only PostgreSQL supports exclusion constraints + if (!(this.connection.driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */])) + return [2 /*return*/]; + _loop_6 = function (metadata) { + var table, oldExclusions; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_6.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + oldExclusions = table.exclusions.filter(function (tableExclusion) { + return !metadata.exclusions.find(function (exclusionMetadata) { return exclusionMetadata.name === tableExclusion.name; }); + }); + if (oldExclusions.length === 0) + return [2 /*return*/, "continue"]; + this_6.connection.logger.logSchemaBuild("dropping old exclusion constraint: " + oldExclusions.map(function (exclusion) { return "\"" + exclusion.name + "\""; }).join(", ") + " from table \"" + table.name + "\""); + return [4 /*yield*/, this_6.queryRunner.dropExclusionConstraints(table, oldExclusions)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_6 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_6(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_6_1 = _d.sent(); + e_6 = { error: e_6_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_6) throw e_6.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates tables that do not exist in the database yet. + * New tables are created without foreign and primary keys. + * Primary key only can be created in conclusion with auto generated column. + */ + RdbmsSchemaBuilder.prototype.createNewTables = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_7, this_7, _a, _b, metadata, e_7_1; + var e_7, _c; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_7 = function (metadata) { + var existTable, table; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + existTable = this_7.queryRunner.loadedTables.find(function (table) { + var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined; + var schema = metadata.schema || _this.connection.driver.options.schema; + var fullTableName = _this.connection.driver.buildTableName(metadata.tableName, schema, database); + return table.name === fullTableName; + }); + if (existTable) + return [2 /*return*/, "continue"]; + this_7.connection.logger.logSchemaBuild("creating a new table: " + metadata.tablePath); + table = Table["a" /* Table */].create(metadata, this_7.connection.driver); + return [4 /*yield*/, this_7.queryRunner.createTable(table, false, false)]; + case 1: + _e.sent(); + this_7.queryRunner.loadedTables.push(table); + return [2 /*return*/]; + } + }); + }; + this_7 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_7(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_7_1 = _d.sent(); + e_7 = { error: e_7_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_7) throw e_7.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + RdbmsSchemaBuilder.prototype.createViews = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_8, this_8, _a, _b, metadata, e_8_1; + var e_8, _c; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_8 = function (metadata) { + var existView, view; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + existView = this_8.queryRunner.loadedViews.find(function (view) { + var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined; + var schema = metadata.schema || _this.connection.driver.options.schema; + var fullViewName = _this.connection.driver.buildTableName(metadata.tableName, schema, database); + var viewExpression = typeof view.expression === "string" ? view.expression.trim() : view.expression(_this.connection).getQuery(); + var metadataExpression = typeof metadata.expression === "string" ? metadata.expression.trim() : metadata.expression(_this.connection).getQuery(); + return view.name === fullViewName && viewExpression === metadataExpression; + }); + if (existView) + return [2 /*return*/, "continue"]; + this_8.connection.logger.logSchemaBuild("creating a new view: " + metadata.tablePath); + view = View["a" /* View */].create(metadata, this_8.connection.driver); + return [4 /*yield*/, this_8.queryRunner.createView(view)]; + case 1: + _e.sent(); + this_8.queryRunner.loadedViews.push(view); + return [2 /*return*/]; + } + }); + }; + this_8 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.viewEntityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_8(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_8_1 = _d.sent(); + e_8 = { error: e_8_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_8) throw e_8.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + RdbmsSchemaBuilder.prototype.dropOldViews = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_9, this_9, _a, _b, view, e_9_1; + var e_9, _c; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_9 = function (view) { + var existViewMetadata; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + existViewMetadata = this_9.viewEntityToSyncMetadatas.find(function (metadata) { + var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined; + var schema = metadata.schema || _this.connection.driver.options.schema; + var fullViewName = _this.connection.driver.buildTableName(metadata.tableName, schema, database); + var viewExpression = typeof view.expression === "string" ? view.expression.trim() : view.expression(_this.connection).getQuery(); + var metadataExpression = typeof metadata.expression === "string" ? metadata.expression.trim() : metadata.expression(_this.connection).getQuery(); + return view.name === fullViewName && viewExpression === metadataExpression; + }); + if (existViewMetadata) + return [2 /*return*/, "continue"]; + this_9.connection.logger.logSchemaBuild("dropping an old view: " + view.name); + // drop an old view + return [4 /*yield*/, this_9.queryRunner.dropView(view)]; + case 1: + // drop an old view + _e.sent(); + this_9.queryRunner.loadedViews.splice(this_9.queryRunner.loadedViews.indexOf(view), 1); + return [2 /*return*/]; + } + }); + }; + this_9 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.queryRunner.loadedViews), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + view = _b.value; + return [5 /*yield**/, _loop_9(view)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_9_1 = _d.sent(); + e_9 = { error: e_9_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_9) throw e_9.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops all columns that exist in the table, but does not exist in the metadata (left old). + * We drop their keys too, since it should be safe. + */ + RdbmsSchemaBuilder.prototype.dropRemovedColumns = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_10, this_10, _a, _b, metadata, e_10_1; + var e_10, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_10 = function (metadata) { + var table, droppedTableColumns; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_10.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + droppedTableColumns = table.columns.filter(function (tableColumn) { + return !metadata.columns.find(function (columnMetadata) { return columnMetadata.databaseName === tableColumn.name; }); + }); + if (droppedTableColumns.length === 0) + return [2 /*return*/, "continue"]; + this_10.connection.logger.logSchemaBuild("columns dropped in " + table.name + ": " + droppedTableColumns.map(function (column) { return column.name; }).join(", ")); + // drop columns from the database + return [4 /*yield*/, this_10.queryRunner.dropColumns(table, droppedTableColumns)]; + case 1: + // drop columns from the database + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_10 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_10(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_10_1 = _d.sent(); + e_10 = { error: e_10_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_10) throw e_10.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Adds columns from metadata which does not exist in the table. + * Columns are created without keys. + */ + RdbmsSchemaBuilder.prototype.addNewColumns = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_11, this_11, _a, _b, metadata, e_11_1; + var e_11, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_11 = function (metadata) { + var table, newColumnMetadatas, newTableColumnOptions, newTableColumns; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_11.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + newColumnMetadatas = metadata.columns.filter(function (columnMetadata) { + return !table.columns.find(function (tableColumn) { return tableColumn.name === columnMetadata.databaseName; }); + }); + if (newColumnMetadatas.length === 0) + return [2 /*return*/, "continue"]; + newTableColumnOptions = this_11.metadataColumnsToTableColumnOptions(newColumnMetadatas); + newTableColumns = newTableColumnOptions.map(function (option) { return new TableColumn["a" /* TableColumn */](option); }); + if (newTableColumns.length === 0) + return [2 /*return*/, "continue"]; + this_11.connection.logger.logSchemaBuild("new columns added: " + newColumnMetadatas.map(function (column) { return column.databaseName; }).join(", ")); + return [4 /*yield*/, this_11.queryRunner.addColumns(table, newTableColumns)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_11 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_11(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_11_1 = _d.sent(); + e_11 = { error: e_11_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_11) throw e_11.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Updates composite primary keys. + */ + RdbmsSchemaBuilder.prototype.updatePrimaryKeys = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_12, this_12, _a, _b, metadata, e_12_1; + var e_12, _c; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_12 = function (metadata) { + var table, primaryMetadataColumns, primaryTableColumns, changedPrimaryColumns; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_12.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + primaryMetadataColumns = metadata.columns.filter(function (column) { return column.isPrimary; }); + primaryTableColumns = table.columns.filter(function (column) { return column.isPrimary; }); + if (!(primaryTableColumns.length !== primaryMetadataColumns.length && primaryMetadataColumns.length > 1)) return [3 /*break*/, 2]; + changedPrimaryColumns = primaryMetadataColumns.map(function (primaryMetadataColumn) { + return new TableColumn["a" /* TableColumn */](TableUtils["a" /* TableUtils */].createTableColumnOptions(primaryMetadataColumn, _this.connection.driver)); + }); + return [4 /*yield*/, this_12.queryRunner.updatePrimaryKeys(table, changedPrimaryColumns)]; + case 1: + _e.sent(); + _e.label = 2; + case 2: return [2 /*return*/]; + } + }); + }; + this_12 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_12(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_12_1 = _d.sent(); + e_12 = { error: e_12_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_12) throw e_12.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Update all exist columns which metadata has changed. + * Still don't create keys. Also we don't touch foreign keys of the changed columns. + */ + RdbmsSchemaBuilder.prototype.updateExistColumns = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_13, this_13, _a, _b, metadata, e_13_1; + var e_13, _c; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_13 = function (metadata) { + var table, changedColumns, changedColumns_1, changedColumns_1_1, changedColumn, e_14_1, changedColumns_2, changedColumns_2_1, changedColumn, e_15_1, changedColumns_3, changedColumns_3_1, changedColumn, e_16_1, newAndOldTableColumns; + var e_14, _e, e_15, _f, e_16, _g; + return Object(tslib_es6["d" /* __generator */])(this, function (_h) { + switch (_h.label) { + case 0: + table = this_13.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + changedColumns = this_13.connection.driver.findChangedColumns(table.columns, metadata.columns); + if (changedColumns.length === 0) + return [2 /*return*/, "continue"]; + _h.label = 1; + case 1: + _h.trys.push([1, 6, 7, 8]); + changedColumns_1 = (e_14 = void 0, Object(tslib_es6["g" /* __values */])(changedColumns)), changedColumns_1_1 = changedColumns_1.next(); + _h.label = 2; + case 2: + if (!!changedColumns_1_1.done) return [3 /*break*/, 5]; + changedColumn = changedColumns_1_1.value; + return [4 /*yield*/, this_13.dropColumnReferencedForeignKeys(metadata.tablePath, changedColumn.databaseName)]; + case 3: + _h.sent(); + _h.label = 4; + case 4: + changedColumns_1_1 = changedColumns_1.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_14_1 = _h.sent(); + e_14 = { error: e_14_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (changedColumns_1_1 && !changedColumns_1_1.done && (_e = changedColumns_1.return)) _e.call(changedColumns_1); + } + finally { if (e_14) throw e_14.error; } + return [7 /*endfinally*/]; + case 8: + _h.trys.push([8, 13, 14, 15]); + changedColumns_2 = (e_15 = void 0, Object(tslib_es6["g" /* __values */])(changedColumns)), changedColumns_2_1 = changedColumns_2.next(); + _h.label = 9; + case 9: + if (!!changedColumns_2_1.done) return [3 /*break*/, 12]; + changedColumn = changedColumns_2_1.value; + return [4 /*yield*/, this_13.dropColumnCompositeIndices(metadata.tablePath, changedColumn.databaseName)]; + case 10: + _h.sent(); + _h.label = 11; + case 11: + changedColumns_2_1 = changedColumns_2.next(); + return [3 /*break*/, 9]; + case 12: return [3 /*break*/, 15]; + case 13: + e_15_1 = _h.sent(); + e_15 = { error: e_15_1 }; + return [3 /*break*/, 15]; + case 14: + try { + if (changedColumns_2_1 && !changedColumns_2_1.done && (_f = changedColumns_2.return)) _f.call(changedColumns_2); + } + finally { if (e_15) throw e_15.error; } + return [7 /*endfinally*/]; + case 15: + if (!!(this_13.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || this_13.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */])) return [3 /*break*/, 23]; + _h.label = 16; + case 16: + _h.trys.push([16, 21, 22, 23]); + changedColumns_3 = (e_16 = void 0, Object(tslib_es6["g" /* __values */])(changedColumns)), changedColumns_3_1 = changedColumns_3.next(); + _h.label = 17; + case 17: + if (!!changedColumns_3_1.done) return [3 /*break*/, 20]; + changedColumn = changedColumns_3_1.value; + return [4 /*yield*/, this_13.dropColumnCompositeUniques(metadata.tablePath, changedColumn.databaseName)]; + case 18: + _h.sent(); + _h.label = 19; + case 19: + changedColumns_3_1 = changedColumns_3.next(); + return [3 /*break*/, 17]; + case 20: return [3 /*break*/, 23]; + case 21: + e_16_1 = _h.sent(); + e_16 = { error: e_16_1 }; + return [3 /*break*/, 23]; + case 22: + try { + if (changedColumns_3_1 && !changedColumns_3_1.done && (_g = changedColumns_3.return)) _g.call(changedColumns_3); + } + finally { if (e_16) throw e_16.error; } + return [7 /*endfinally*/]; + case 23: + newAndOldTableColumns = changedColumns.map(function (changedColumn) { + var oldTableColumn = table.columns.find(function (column) { return column.name === changedColumn.databaseName; }); + var newTableColumnOptions = TableUtils["a" /* TableUtils */].createTableColumnOptions(changedColumn, _this.connection.driver); + var newTableColumn = new TableColumn["a" /* TableColumn */](newTableColumnOptions); + return { + oldColumn: oldTableColumn, + newColumn: newTableColumn + }; + }); + if (newAndOldTableColumns.length === 0) + return [2 /*return*/, "continue"]; + this_13.connection.logger.logSchemaBuild("columns changed in \"" + table.name + "\". updating: " + changedColumns.map(function (column) { return column.databaseName; }).join(", ")); + return [4 /*yield*/, this_13.queryRunner.changeColumns(table, newAndOldTableColumns)]; + case 24: + _h.sent(); + return [2 /*return*/]; + } + }); + }; + this_13 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_13(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_13_1 = _d.sent(); + e_13 = { error: e_13_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_13) throw e_13.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates composite indices which are missing in db yet. + */ + RdbmsSchemaBuilder.prototype.createNewIndices = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_14, this_14, _a, _b, metadata, e_17_1; + var e_17, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_14 = function (metadata) { + var table, newIndices; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_14.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + newIndices = metadata.indices + .filter(function (indexMetadata) { return !table.indices.find(function (tableIndex) { return tableIndex.name === indexMetadata.name; }) && indexMetadata.synchronize === true; }) + .map(function (indexMetadata) { return TableIndex["a" /* TableIndex */].create(indexMetadata); }); + if (newIndices.length === 0) + return [2 /*return*/, "continue"]; + this_14.connection.logger.logSchemaBuild("adding new indices " + newIndices.map(function (index) { return "\"" + index.name + "\""; }).join(", ") + " in table \"" + table.name + "\""); + return [4 /*yield*/, this_14.queryRunner.createIndices(table, newIndices)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_14 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_14(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_17_1 = _d.sent(); + e_17 = { error: e_17_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_17) throw e_17.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + RdbmsSchemaBuilder.prototype.createNewChecks = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_15, this_15, _a, _b, metadata, e_18_1; + var e_18, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + // Mysql does not support check constraints + if (this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) + return [2 /*return*/]; + _loop_15 = function (metadata) { + var table, newChecks; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_15.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + newChecks = metadata.checks + .filter(function (checkMetadata) { return !table.checks.find(function (tableCheck) { return tableCheck.name === checkMetadata.name; }); }) + .map(function (checkMetadata) { return TableCheck["a" /* TableCheck */].create(checkMetadata); }); + if (newChecks.length === 0) + return [2 /*return*/, "continue"]; + this_15.connection.logger.logSchemaBuild("adding new check constraints: " + newChecks.map(function (index) { return "\"" + index.name + "\""; }).join(", ") + " in table \"" + table.name + "\""); + return [4 /*yield*/, this_15.queryRunner.createCheckConstraints(table, newChecks)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_15 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_15(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_18_1 = _d.sent(); + e_18 = { error: e_18_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_18) throw e_18.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates composite uniques which are missing in db yet. + */ + RdbmsSchemaBuilder.prototype.createCompositeUniqueConstraints = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_16, this_16, _a, _b, metadata, e_19_1; + var e_19, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_16 = function (metadata) { + var table, compositeUniques; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_16.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + compositeUniques = metadata.uniques + .filter(function (uniqueMetadata) { return uniqueMetadata.columns.length > 1 && !table.uniques.find(function (tableUnique) { return tableUnique.name === uniqueMetadata.name; }); }) + .map(function (uniqueMetadata) { return TableUnique["a" /* TableUnique */].create(uniqueMetadata); }); + if (compositeUniques.length === 0) + return [2 /*return*/, "continue"]; + this_16.connection.logger.logSchemaBuild("adding new unique constraints: " + compositeUniques.map(function (unique) { return "\"" + unique.name + "\""; }).join(", ") + " in table \"" + table.name + "\""); + return [4 /*yield*/, this_16.queryRunner.createUniqueConstraints(table, compositeUniques)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_16 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_16(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_19_1 = _d.sent(); + e_19 = { error: e_19_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_19) throw e_19.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates exclusions which are missing in db yet. + */ + RdbmsSchemaBuilder.prototype.createNewExclusions = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_17, this_17, _a, _b, metadata, e_20_1; + var e_20, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + // Only PostgreSQL supports exclusion constraints + if (!(this.connection.driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */])) + return [2 /*return*/]; + _loop_17 = function (metadata) { + var table, newExclusions; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_17.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + newExclusions = metadata.exclusions + .filter(function (exclusionMetadata) { return !table.exclusions.find(function (tableExclusion) { return tableExclusion.name === exclusionMetadata.name; }); }) + .map(function (exclusionMetadata) { return TableExclusion["a" /* TableExclusion */].create(exclusionMetadata); }); + if (newExclusions.length === 0) + return [2 /*return*/, "continue"]; + this_17.connection.logger.logSchemaBuild("adding new exclusion constraints: " + newExclusions.map(function (exclusion) { return "\"" + exclusion.name + "\""; }).join(", ") + " in table \"" + table.name + "\""); + return [4 /*yield*/, this_17.queryRunner.createExclusionConstraints(table, newExclusions)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_17 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_17(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_20_1 = _d.sent(); + e_20 = { error: e_20_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_20) throw e_20.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates foreign keys which does not exist in the table yet. + */ + RdbmsSchemaBuilder.prototype.createForeignKeys = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _loop_18, this_18, _a, _b, metadata, e_21_1; + var e_21, _c; + return Object(tslib_es6["d" /* __generator */])(this, function (_d) { + switch (_d.label) { + case 0: + _loop_18 = function (metadata) { + var table, newKeys, dbForeignKeys; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + table = this_18.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; }); + if (!table) + return [2 /*return*/, "continue"]; + newKeys = metadata.foreignKeys + .filter(function (foreignKey) { + return !table.foreignKeys.find(function (dbForeignKey) { return foreignKeysMatch(dbForeignKey, foreignKey); }); + }); + if (newKeys.length === 0) + return [2 /*return*/, "continue"]; + dbForeignKeys = newKeys.map(function (foreignKeyMetadata) { return TableForeignKey["a" /* TableForeignKey */].create(foreignKeyMetadata); }); + this_18.connection.logger.logSchemaBuild("creating a foreign keys: " + newKeys.map(function (key) { return key.name; }).join(", ") + " on table \"" + table.name + "\""); + return [4 /*yield*/, this_18.queryRunner.createForeignKeys(table, dbForeignKeys)]; + case 1: + _e.sent(); + return [2 /*return*/]; + } + }); + }; + this_18 = this; + _d.label = 1; + case 1: + _d.trys.push([1, 6, 7, 8]); + _a = Object(tslib_es6["g" /* __values */])(this.entityToSyncMetadatas), _b = _a.next(); + _d.label = 2; + case 2: + if (!!_b.done) return [3 /*break*/, 5]; + metadata = _b.value; + return [5 /*yield**/, _loop_18(metadata)]; + case 3: + _d.sent(); + _d.label = 4; + case 4: + _b = _a.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_21_1 = _d.sent(); + e_21 = { error: e_21_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_21) throw e_21.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops all foreign keys where given column of the given table is being used. + */ + RdbmsSchemaBuilder.prototype.dropColumnReferencedForeignKeys = function (tablePath, columnName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, tablesWithFK, columnForeignKey, clonedTable, tablesWithFK_1, tablesWithFK_1_1, tableWithFK, e_22_1; + var e_22, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; }); + if (!table) + return [2 /*return*/]; + tablesWithFK = []; + columnForeignKey = table.foreignKeys.find(function (foreignKey) { return foreignKey.columnNames.indexOf(columnName) !== -1; }); + if (columnForeignKey) { + clonedTable = table.clone(); + clonedTable.foreignKeys = [columnForeignKey]; + tablesWithFK.push(clonedTable); + table.removeForeignKey(columnForeignKey); + } + this.queryRunner.loadedTables.forEach(function (loadedTable) { + var dependForeignKeys = loadedTable.foreignKeys.filter(function (foreignKey) { + return foreignKey.referencedTableName === tablePath && foreignKey.referencedColumnNames.indexOf(columnName) !== -1; + }); + if (dependForeignKeys.length > 0) { + var clonedTable = loadedTable.clone(); + clonedTable.foreignKeys = dependForeignKeys; + tablesWithFK.push(clonedTable); + dependForeignKeys.forEach(function (dependForeignKey) { return loadedTable.removeForeignKey(dependForeignKey); }); + } + }); + if (!(tablesWithFK.length > 0)) return [3 /*break*/, 8]; + _b.label = 1; + case 1: + _b.trys.push([1, 6, 7, 8]); + tablesWithFK_1 = Object(tslib_es6["g" /* __values */])(tablesWithFK), tablesWithFK_1_1 = tablesWithFK_1.next(); + _b.label = 2; + case 2: + if (!!tablesWithFK_1_1.done) return [3 /*break*/, 5]; + tableWithFK = tablesWithFK_1_1.value; + this.connection.logger.logSchemaBuild("dropping related foreign keys of " + tableWithFK.name + ": " + tableWithFK.foreignKeys.map(function (foreignKey) { return foreignKey.name; }).join(", ")); + return [4 /*yield*/, this.queryRunner.dropForeignKeys(tableWithFK, tableWithFK.foreignKeys)]; + case 3: + _b.sent(); + _b.label = 4; + case 4: + tablesWithFK_1_1 = tablesWithFK_1.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_22_1 = _b.sent(); + e_22 = { error: e_22_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (tablesWithFK_1_1 && !tablesWithFK_1_1.done && (_a = tablesWithFK_1.return)) _a.call(tablesWithFK_1); + } + finally { if (e_22) throw e_22.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops all composite indices, related to given column. + */ + RdbmsSchemaBuilder.prototype.dropColumnCompositeIndices = function (tablePath, columnName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, relatedIndices; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; }); + if (!table) + return [2 /*return*/]; + relatedIndices = table.indices.filter(function (index) { return index.columnNames.length > 1 && index.columnNames.indexOf(columnName) !== -1; }); + if (relatedIndices.length === 0) + return [2 /*return*/]; + this.connection.logger.logSchemaBuild("dropping related indices of \"" + tablePath + "\".\"" + columnName + "\": " + relatedIndices.map(function (index) { return index.name; }).join(", ")); + return [4 /*yield*/, this.queryRunner.dropIndices(table, relatedIndices)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops all composite uniques, related to given column. + */ + RdbmsSchemaBuilder.prototype.dropColumnCompositeUniques = function (tablePath, columnName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, relatedUniques; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; }); + if (!table) + return [2 /*return*/]; + relatedUniques = table.uniques.filter(function (unique) { return unique.columnNames.length > 1 && unique.columnNames.indexOf(columnName) !== -1; }); + if (relatedUniques.length === 0) + return [2 /*return*/]; + this.connection.logger.logSchemaBuild("dropping related unique constraints of \"" + tablePath + "\".\"" + columnName + "\": " + relatedUniques.map(function (unique) { return unique.name; }).join(", ")); + return [4 /*yield*/, this.queryRunner.dropUniqueConstraints(table, relatedUniques)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new columns from the given column metadatas. + */ + RdbmsSchemaBuilder.prototype.metadataColumnsToTableColumnOptions = function (columns) { + var _this = this; + return columns.map(function (columnMetadata) { return TableUtils["a" /* TableUtils */].createTableColumnOptions(columnMetadata, _this.connection.driver); }); + }; + /** + * Creates typeorm service table for storing user defined Views. + */ + RdbmsSchemaBuilder.prototype.createTypeormMetadataTable = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var options, typeormMetadataTable; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + options = this.connection.driver.options; + typeormMetadataTable = this.connection.driver.buildTableName("typeorm_metadata", options.schema, options.database); + return [4 /*yield*/, this.queryRunner.createTable(new Table["a" /* Table */]({ + name: typeormMetadataTable, + columns: [ + { + name: "type", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataType }), + isNullable: false + }, + { + name: "database", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataDatabase }), + isNullable: true + }, + { + name: "schema", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataSchema }), + isNullable: true + }, + { + name: "table", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataTable }), + isNullable: true + }, + { + name: "name", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataName }), + isNullable: true + }, + { + name: "value", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataValue }), + isNullable: true + }, + ] + }), true)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + return RdbmsSchemaBuilder; +}()); + +function foreignKeysMatch(tableForeignKey, metadataForeignKey) { + return (tableForeignKey.name === metadataForeignKey.name) + && (tableForeignKey.referencedTableName === metadataForeignKey.referencedTablePath); +} + +//# sourceMappingURL=RdbmsSchemaBuilder.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/OrmUtils.js +var OrmUtils = __webpack_require__(6); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/ApplyValueTransformers.js +var ApplyValueTransformers = __webpack_require__(60); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js + + + + + +/** + * Organizes communication with sqlite DBMS. + */ +var AbstractSqliteDriver_AbstractSqliteDriver = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function AbstractSqliteDriver(connection) { + /** + * Indicates if replication is enabled. + */ + this.isReplicated = false; + /** + * Indicates if tree tables are supported by this driver. + */ + this.treeSupport = true; + /** + * Gets list of supported column data types by a driver. + * + * @see https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm + * @see https://sqlite.org/datatype3.html + */ + this.supportedDataTypes = [ + "int", + "integer", + "tinyint", + "smallint", + "mediumint", + "bigint", + "unsigned big int", + "int2", + "int8", + "integer", + "character", + "varchar", + "varying character", + "nchar", + "native character", + "nvarchar", + "text", + "clob", + "text", + "blob", + "real", + "double", + "double precision", + "float", + "real", + "numeric", + "decimal", + "boolean", + "date", + "time", + "datetime" + ]; + /** + * Gets list of column data types that support length by a driver. + */ + this.withLengthColumnTypes = [ + "character", + "varchar", + "varying character", + "nchar", + "native character", + "nvarchar", + "text", + "blob", + "clob" + ]; + /** + * Gets list of spatial column data types. + */ + this.spatialTypes = []; + /** + * Gets list of column data types that support precision by a driver. + */ + this.withPrecisionColumnTypes = [ + "real", + "double", + "double precision", + "float", + "real", + "numeric", + "decimal", + "date", + "time", + "datetime" + ]; + /** + * Gets list of column data types that support scale by a driver. + */ + this.withScaleColumnTypes = [ + "real", + "double", + "double precision", + "float", + "real", + "numeric", + "decimal", + ]; + /** + * Orm has special columns and we need to know what database column types should be for those types. + * Column types are driver dependant. + */ + this.mappedDataTypes = { + createDate: "datetime", + createDateDefault: "datetime('now')", + updateDate: "datetime", + updateDateDefault: "datetime('now')", + deleteDate: "datetime", + deleteDateNullable: true, + version: "integer", + treeLevel: "integer", + migrationId: "integer", + migrationName: "varchar", + migrationTimestamp: "bigint", + cacheId: "int", + cacheIdentifier: "varchar", + cacheTime: "bigint", + cacheDuration: "int", + cacheQuery: "text", + cacheResult: "text", + metadataType: "varchar", + metadataDatabase: "varchar", + metadataSchema: "varchar", + metadataTable: "varchar", + metadataName: "varchar", + metadataValue: "text", + }; + this.connection = connection; + this.options = connection.options; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Performs connection to the database. + */ + AbstractSqliteDriver.prototype.connect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _a = this; + return [4 /*yield*/, this.createDatabaseConnection()]; + case 1: + _a.databaseConnection = _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Makes any action after connection (e.g. create extensions in Postgres driver). + */ + AbstractSqliteDriver.prototype.afterConnect = function () { + return Promise.resolve(); + }; + /** + * Closes connection with database. + */ + AbstractSqliteDriver.prototype.disconnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + _this.queryRunner = undefined; + _this.databaseConnection.close(function (err) { return err ? fail(err) : ok(); }); + })]; + }); + }); + }; + /** + * Creates a schema builder used to build and sync a schema. + */ + AbstractSqliteDriver.prototype.createSchemaBuilder = function () { + return new RdbmsSchemaBuilder_RdbmsSchemaBuilder(this.connection); + }; + /** + * Prepares given value to a value to be persisted, based on its column type and metadata. + */ + AbstractSqliteDriver.prototype.preparePersistentValue = function (value, columnMetadata) { + if (columnMetadata.transformer) + value = ApplyValueTransformers["a" /* ApplyValueTransformers */].transformTo(columnMetadata.transformer, value); + if (value === null || value === undefined) + return value; + if (columnMetadata.type === Boolean || columnMetadata.type === "boolean") { + return value === true ? 1 : 0; + } + else if (columnMetadata.type === "date") { + return DateUtils["a" /* DateUtils */].mixedDateToDateString(value); + } + else if (columnMetadata.type === "time") { + return DateUtils["a" /* DateUtils */].mixedDateToTimeString(value); + } + else if (columnMetadata.type === "datetime" || columnMetadata.type === Date) { + // to string conversation needs because SQLite stores date as integer number, when date came as Object + // TODO: think about `toUTC` conversion + return DateUtils["a" /* DateUtils */].mixedDateToUtcDatetimeString(value); + } + else if (columnMetadata.type === "simple-array") { + return DateUtils["a" /* DateUtils */].simpleArrayToString(value); + } + else if (columnMetadata.type === "simple-json") { + return DateUtils["a" /* DateUtils */].simpleJsonToString(value); + } + else if (columnMetadata.type === "simple-enum") { + return DateUtils["a" /* DateUtils */].simpleEnumToString(value); + } + return value; + }; + /** + * Prepares given value to a value to be hydrated, based on its column type or metadata. + */ + AbstractSqliteDriver.prototype.prepareHydratedValue = function (value, columnMetadata) { + if (value === null || value === undefined) + return columnMetadata.transformer ? ApplyValueTransformers["a" /* ApplyValueTransformers */].transformFrom(columnMetadata.transformer, value) : value; + if (columnMetadata.type === Boolean || columnMetadata.type === "boolean") { + value = value ? true : false; + } + else if (columnMetadata.type === "datetime" || columnMetadata.type === Date) { + /** + * Fix date conversion issue + * + * If the format of the date string is "2018-03-14 02:33:33.906", Safari (and iOS WKWebView) will convert it to an invalid date object. + * We need to modify the date string to "2018-03-14T02:33:33.906Z" and Safari will convert it correctly. + * + * ISO 8601 + * https://www.w3.org/TR/NOTE-datetime + */ + if (value && typeof value === "string") { + // There are various valid time string formats a sqlite time string might have: + // https://www.sqlite.org/lang_datefunc.html + // There are two separate fixes we may need to do: + // 1) Add 'T' separator if space is used instead + // 2) Add 'Z' UTC suffix if no timezone or offset specified + if (/^\d\d\d\d-\d\d-\d\d \d\d:\d\d/.test(value)) { + value = value.replace(" ", "T"); + } + if (/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d(:\d\d(\.\d\d\d)?)?$/.test(value)) { + value += "Z"; + } + } + value = DateUtils["a" /* DateUtils */].normalizeHydratedDate(value); + } + else if (columnMetadata.type === "date") { + value = DateUtils["a" /* DateUtils */].mixedDateToDateString(value); + } + else if (columnMetadata.type === "time") { + value = DateUtils["a" /* DateUtils */].mixedTimeToString(value); + } + else if (columnMetadata.type === "simple-array") { + value = DateUtils["a" /* DateUtils */].stringToSimpleArray(value); + } + else if (columnMetadata.type === "simple-json") { + value = DateUtils["a" /* DateUtils */].stringToSimpleJson(value); + } + else if (columnMetadata.type === "simple-enum") { + value = DateUtils["a" /* DateUtils */].stringToSimpleEnum(value, columnMetadata); + } + if (columnMetadata.transformer) + value = ApplyValueTransformers["a" /* ApplyValueTransformers */].transformFrom(columnMetadata.transformer, value); + return value; + }; + /** + * Replaces parameters in the given sql with special escaping character + * and an array of parameter names to be passed to a query. + */ + AbstractSqliteDriver.prototype.escapeQueryWithParameters = function (sql, parameters, nativeParameters) { + var builtParameters = Object.keys(nativeParameters).map(function (key) { + // Mapping boolean values to their numeric representation + if (typeof nativeParameters[key] === "boolean") { + return nativeParameters[key] === true ? 1 : 0; + } + return nativeParameters[key]; + }); + if (!parameters || !Object.keys(parameters).length) + return [sql, builtParameters]; + var keys = Object.keys(parameters).map(function (parameter) { return "(:(\\.\\.\\.)?" + parameter + "\\b)"; }).join("|"); + sql = sql.replace(new RegExp(keys, "g"), function (key) { + var value; + var isArray = false; + if (key.substr(0, 4) === ":...") { + isArray = true; + value = parameters[key.substr(4)]; + } + else { + value = parameters[key.substr(1)]; + } + if (isArray) { + return value.map(function (v) { + builtParameters.push(v); + return "?"; + // return "$" + builtParameters.length; + }).join(", "); + } + else if (value instanceof Function) { + return value(); + } + else { + builtParameters.push(value); + return "?"; + // return "$" + builtParameters.length; + } + }); // todo: make replace only in value statements, otherwise problems + return [sql, builtParameters]; + }; + /** + * Escapes a column name. + */ + AbstractSqliteDriver.prototype.escape = function (columnName) { + return "\"" + columnName + "\""; + }; + /** + * Build full table name with database name, schema name and table name. + * E.g. "myDB"."mySchema"."myTable" + * + * Returns only simple table name because all inherited drivers does not supports schema and database. + */ + AbstractSqliteDriver.prototype.buildTableName = function (tableName, schema, database) { + return tableName; + }; + /** + * Creates a database type from a given column metadata. + */ + AbstractSqliteDriver.prototype.normalizeType = function (column) { + if (column.type === Number || column.type === "int") { + return "integer"; + } + else if (column.type === String) { + return "varchar"; + } + else if (column.type === Date) { + return "datetime"; + } + else if (column.type === Boolean) { + return "boolean"; + } + else if (column.type === "uuid") { + return "varchar"; + } + else if (column.type === "simple-array") { + return "text"; + } + else if (column.type === "simple-json") { + return "text"; + } + else if (column.type === "simple-enum") { + return "varchar"; + } + else { + return column.type || ""; + } + }; + /** + * Normalizes "default" value of the column. + */ + AbstractSqliteDriver.prototype.normalizeDefault = function (columnMetadata) { + var defaultValue = columnMetadata.default; + if (typeof defaultValue === "number") { + return "" + defaultValue; + } + else if (typeof defaultValue === "boolean") { + return defaultValue === true ? "1" : "0"; + } + else if (typeof defaultValue === "function") { + return defaultValue(); + } + else if (typeof defaultValue === "string") { + return "'" + defaultValue + "'"; + } + else if (defaultValue === null) { + return undefined; + } + else { + return defaultValue; + } + }; + /** + * Normalizes "isUnique" value of the column. + */ + AbstractSqliteDriver.prototype.normalizeIsUnique = function (column) { + return column.entityMetadata.uniques.some(function (uq) { return uq.columns.length === 1 && uq.columns[0] === column; }); + }; + /** + * Calculates column length taking into account the default length values. + */ + AbstractSqliteDriver.prototype.getColumnLength = function (column) { + return column.length ? column.length.toString() : ""; + }; + /** + * Normalizes "default" value of the column. + */ + AbstractSqliteDriver.prototype.createFullType = function (column) { + var type = column.type; + if (column.enum) { + return "varchar"; + } + if (column.length) { + type += "(" + column.length + ")"; + } + else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) { + type += "(" + column.precision + "," + column.scale + ")"; + } + else if (column.precision !== null && column.precision !== undefined) { + type += "(" + column.precision + ")"; + } + if (column.isArray) + type += " array"; + return type; + }; + /** + * Obtains a new database connection to a master server. + * Used for replication. + * If replication is not setup then returns default connection's database connection. + */ + AbstractSqliteDriver.prototype.obtainMasterConnection = function () { + return Promise.resolve(); + }; + /** + * Obtains a new database connection to a slave server. + * Used for replication. + * If replication is not setup then returns master (default) connection's database connection. + */ + AbstractSqliteDriver.prototype.obtainSlaveConnection = function () { + return Promise.resolve(); + }; + /** + * Creates generated map of values generated or returned by database after INSERT query. + */ + AbstractSqliteDriver.prototype.createGeneratedMap = function (metadata, insertResult, entityIndex, entityNum) { + var generatedMap = metadata.generatedColumns.reduce(function (map, generatedColumn) { + var value; + if (generatedColumn.generationStrategy === "increment" && insertResult) { + // NOTE: When INSERT statement is successfully completed, the last inserted row ID is returned. + // see also: SqliteQueryRunner.query() + value = insertResult - entityNum + entityIndex + 1; + // } else if (generatedColumn.generationStrategy === "uuid") { + // value = insertValue[generatedColumn.databaseName]; + } + if (!value) + return map; + return OrmUtils["a" /* OrmUtils */].mergeDeep(map, generatedColumn.createValueMap(value)); + }, {}); + return Object.keys(generatedMap).length > 0 ? generatedMap : undefined; + }; + /** + * Differentiate columns of this table and columns from the given column metadatas columns + * and returns only changed. + */ + AbstractSqliteDriver.prototype.findChangedColumns = function (tableColumns, columnMetadatas) { + var _this = this; + return columnMetadatas.filter(function (columnMetadata) { + var tableColumn = tableColumns.find(function (c) { return c.name === columnMetadata.databaseName; }); + if (!tableColumn) + return false; // we don't need new columns, we only need exist and changed + // console.log("table:", columnMetadata.entityMetadata.tableName); + // console.log("name:", tableColumn.name, columnMetadata.databaseName); + // console.log("type:", tableColumn.type, this.normalizeType(columnMetadata)); + // console.log("length:", tableColumn.length, columnMetadata.length); + // console.log("precision:", tableColumn.precision, columnMetadata.precision); + // console.log("scale:", tableColumn.scale, columnMetadata.scale); + // console.log("comment:", tableColumn.comment, columnMetadata.comment); + // console.log("default:", this.normalizeDefault(columnMetadata), columnMetadata.default); + // console.log("isPrimary:", tableColumn.isPrimary, columnMetadata.isPrimary); + // console.log("isNullable:", tableColumn.isNullable, columnMetadata.isNullable); + // console.log("isUnique:", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata)); + // console.log("isGenerated:", tableColumn.isGenerated, columnMetadata.isGenerated); + // console.log("=========================================="); + return tableColumn.name !== columnMetadata.databaseName + || tableColumn.type !== _this.normalizeType(columnMetadata) + || tableColumn.length !== columnMetadata.length + || tableColumn.precision !== columnMetadata.precision + || tableColumn.scale !== columnMetadata.scale + // || tableColumn.comment !== columnMetadata.comment || // todo + || _this.normalizeDefault(columnMetadata) !== tableColumn.default + || tableColumn.isPrimary !== columnMetadata.isPrimary + || tableColumn.isNullable !== columnMetadata.isNullable + || tableColumn.isUnique !== _this.normalizeIsUnique(columnMetadata) + || (columnMetadata.generationStrategy !== "uuid" && tableColumn.isGenerated !== columnMetadata.isGenerated); + }); + }; + /** + * Returns true if driver supports RETURNING / OUTPUT statement. + */ + AbstractSqliteDriver.prototype.isReturningSqlSupported = function () { + return false; + }; + /** + * Returns true if driver supports uuid values generation on its own. + */ + AbstractSqliteDriver.prototype.isUUIDGenerationSupported = function () { + return false; + }; + /** + * Returns true if driver supports fulltext indices. + */ + AbstractSqliteDriver.prototype.isFullTextColumnTypeSupported = function () { + return false; + }; + /** + * Creates an escaped parameter. + */ + AbstractSqliteDriver.prototype.createParameter = function (parameterName, index) { + // return "$" + (index + 1); + return "?"; + // return "$" + parameterName; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates connection with the database. + */ + AbstractSqliteDriver.prototype.createDatabaseConnection = function () { + throw new Error("Do not use AbstractSqlite directly, it has to be used with one of the sqlite drivers"); + }; + /** + * If driver dependency is not given explicitly, then try to load it via "require". + */ + AbstractSqliteDriver.prototype.loadDependencies = function () { + // dependencies have to be loaded in the specific driver + }; + return AbstractSqliteDriver; +}()); + + +//# sourceMappingURL=AbstractSqliteDriver.js.map + + +/***/ }), +/* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DragHelper = void 0;\nconst DraggedElement_1 = __webpack_require__(/*! ./DraggedElement */ \"./node_modules/js-helper/dist/client/Dragger/DraggedElement.js\");\nclass DragHelper {\n constructor() {\n this.startPosition = null;\n this.currentDraggedElement = null;\n window.addEventListener(\"mousemove\", e => {\n if (this.currentDraggedElement) {\n this.dragMove({ x: e.clientX, y: e.clientY });\n }\n });\n window.addEventListener(\"touchmove\", e => {\n if (this.currentDraggedElement) {\n this.dragMove({ x: e.touches[0].clientX, y: e.touches[0].clientY });\n }\n });\n window.addEventListener(\"mouseup\", e => {\n if (e.button === 0) {\n this.dragStop({ x: e.clientX, y: e.clientY });\n }\n });\n window.addEventListener(\"touchend\", e => {\n if (e.touches.length === 0) {\n this.dragStop({ x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY });\n }\n });\n }\n static getInstance() {\n if (!this.instance) {\n this.instance = new DragHelper();\n }\n return this.instance;\n }\n draggable(element) {\n const dragElement = new DraggedElement_1.DraggedElement(element);\n element.addEventListener(\"mousedown\", e => {\n e.preventDefault();\n console.log(\"mousedown\", e.button);\n if (e.button === 0) {\n this.dragStart({ x: e.clientX, y: e.clientY }, dragElement);\n }\n });\n element.addEventListener(\"touchstart\", e => {\n e.preventDefault();\n if (e.touches.length === 1) {\n this.dragStart({ x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY }, dragElement);\n }\n });\n return dragElement;\n }\n dragStart(position, draggedElement) {\n this.currentDraggedElement = draggedElement;\n this.startPosition = position;\n this.currentDraggedElement.start();\n }\n dragMove(toPosition) {\n if (this.currentDraggedElement) {\n const diff = { x: toPosition.x - this.startPosition.x, y: toPosition.y - this.startPosition.y };\n this.currentDraggedElement.moveRelativeTo(diff);\n }\n }\n dragStop(mousePos) {\n if (this.currentDraggedElement) {\n this.currentDraggedElement.stop(mousePos);\n this.currentDraggedElement = null;\n this.startPosition = null;\n }\n }\n}\nexports.DragHelper = DragHelper;\n//# sourceMappingURL=DragHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/client/Dragger/DragHelper.js?"); + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SoundManager = void 0; + +var AudioChain_1 = __webpack_require__(267); + +var Helper_1 = __webpack_require__(7); + +var App_1 = __webpack_require__(33); + +var DataManager_1 = __webpack_require__(68); + +var SoundManager = /*#__PURE__*/function () { + function SoundManager() { + var _this = this; + + _classCallCheck(this, SoundManager); + + this.channels = {}; + + if ('AudioContext' in window) { + this.context = new AudioContext(); + } else if ('webkitAudioContext' in window) { + // @ts-ignore + this.context = new webkitAudioContext(); + } else { + throw new Error("No audio context found!"); + } + + this.context.onstatechange = function () { + console.log("stateChange from context", arguments); + }; + + this.context.oncomplete = function () { + console.log("onComplete from context", arguments); + }; + + window.addEventListener("visibilitychange", function (e) { + // console.log("visibility Change event", e); + _this.handleVisibilityChange(); + }); //For safari + + var checkVisibility = function checkVisibility() { + _this.handleVisibilityChange(); + + setTimeout(checkVisibility, 500); + }; + + checkVisibility(); + } + + _createClass(SoundManager, [{ + key: "isNotSuspended", + value: function isNotSuspended() { + // return false; + return this.context.state !== "suspended"; + } + }, { + key: "set", + value: function set(options, channel) { + var _this2 = this; + + channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT); + var audioObject = Helper_1.Helper.nonNull(this.channels[channel], {}); + + if (typeof options === "string") { + options = { + audio: options + }; + } + + var audio = options.audio; + + if (Helper_1.Helper.isNotNull(audio)) { + audioObject.loadedPromise = DataManager_1.DataManager.loadAsset(audio, "raw").then(function (res) { + return res.arrayBuffer(); + }).then(function (arrayBuffer) { + return new Promise(function (r, reject) { + return _this2.context.decodeAudioData(arrayBuffer, r); + }); + }).catch(function (e) { + return console.error(e); + }); // audioObject.loadedPromise = fetch(audio).then(res => res.arrayBuffer()).then(arrayBuffer => { + // return new Promise((r, reject) => this.context.decodeAudioData(arrayBuffer, r)); + // }).catch(e => console.error(e)); + + this.stop(channel); + } + + audioObject.muted = Helper_1.Helper.nonNull(options.muted, audioObject.muted, false); + audioObject.volume = Helper_1.Helper.nonNull(options.volume, audioObject.volume, 1); + audioObject.loop = Helper_1.Helper.nonNull(options.loop, audioObject.loop, false); + audioObject.timeOffset = Helper_1.Helper.nonNull(options.timeOffset, audioObject.timeOffset, 0); + this.channels[channel] = audioObject; + + if (audioObject.muted) { + this.stop(channel); + } + + return this.channels[channel]; + } + }, { + key: "resumeContext", + value: function resumeContext() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!(typeof this.context.resume === "function")) { + _context.next = 2; + break; + } + + return _context.abrupt("return", this.context.resume()); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "play", + value: function play(channel, audioOrOptions) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this3 = this; + + var buffer, source; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + this.resumeContext(); + channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT); + + if (Helper_1.Helper.isNull(audioOrOptions)) { + audioOrOptions = {}; + } else if (!(_typeof(audioOrOptions) === "object")) { + audioOrOptions = { + audio: audioOrOptions + }; + } + + audioOrOptions.timeOffset = Helper_1.Helper.nonNull(audioOrOptions.timeOffset, 0); + this.stop(channel); + this.set(audioOrOptions, channel); + + if (this.channels[channel].muted) { + _context2.next = 16; + break; + } + + _context2.next = 9; + return this.channels[channel].loadedPromise; + + case 9: + buffer = _context2.sent; + source = new AudioChain_1.AudioChain(this.context, buffer, function (sourceNode) { + var gain = _this3.context.createGain(); + + gain.gain.value = _this3.channels[channel].volume; + sourceNode.connect(gain); + gain.connect(_this3.context.destination); + }); + source.setBuffer(buffer); //to prevent gap in mp3-files + + source.setLooping(this.channels[channel].loop, 0.3, buffer.duration - 0.3); + this.channels[channel].source = source; + _context2.next = 16; + return source.start(); + + case 16: + return _context2.abrupt("return", this.channels[channel]); + + case 17: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "stop", + value: function stop(channel) { + channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT); + var oldAudio = this.channels[channel]; + + if (Helper_1.Helper.isNotNull(oldAudio) && Helper_1.Helper.isNotNull(oldAudio.source)) { + oldAudio.source.stop(); + } + } + }, { + key: "get", + value: function get(channel) { + channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT); + return this.channels[channel]; + } + }, { + key: "resume", + value: function resume(channel) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT); + + if (!(Helper_1.Helper.isNotNull(this.channels[channel]) && !this.channels[channel].muted && Helper_1.Helper.isNotNull(this.channels[channel].source))) { + _context3.next = 3; + break; + } + + return _context3.abrupt("return", this.channels[channel].source.resume()); + + case 3: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "stopAll", + value: function stopAll() { + for (var k in this.channels) { + if (Helper_1.Helper.isNotNull(this.channels[k].source)) { + this.channels[k].source.stop(); + } + } + } + }, { + key: "resumeAllIfNotMuted", + value: function resumeAllIfNotMuted() { + for (var k in this.channels) { + if (Helper_1.Helper.isNotNull(this.channels[k]) && !this.channels[k].muted && Helper_1.Helper.isNotNull(this.channels[k].source)) { + this.channels[k].source.resume(); + } + } + } + }, { + key: "handleVisibilityChange", + value: function handleVisibilityChange() { + if (document.hidden) { + this.stopAll(); + } else { + this.resumeAllIfNotMuted(); + } + } + }], [{ + key: "getInstance", + value: function getInstance() { + if (Helper_1.Helper.isNull(SoundManager._instance)) { + SoundManager._instance = new SoundManager(); + } + + return SoundManager._instance; + } + }]); + + return SoundManager; +}(); + +exports.SoundManager = SoundManager; +SoundManager.CHANNELS = { + MUSIC: "music", + SOUND: "sound", + DEFAULT: "default" +}; +App_1.App.addInitialization(function (app) {// PauseSite.onPauseListeners.push(() => { + // SoundManager.getInstance().stopAll(); + // }); + // PauseSite.onStartListeners.push(() => { + // SoundManager.getInstance().resumeAllIfNotMuted(); + // }); +}); // AndroidBridge.addDefinition(() => { +// window["soundManagerInstance"] = SoundManager.getInstance(); +// window["soundManagerInstance"]["stopAll"] = window["soundManagerInstance"].stopAll; +// window["soundManagerInstance"]["resumeAllIfNotMuted"] = window["soundManagerInstance"].resumeAllIfNotMuted; +// }); /***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./node_modules/js-helper/dist/client/Dragger/DraggedElement.js": -/*!**********************************************************************!*\ - !*** ./node_modules/js-helper/dist/client/Dragger/DraggedElement.js ***! - \**********************************************************************/ -/*! no static exports found */ +var store = __webpack_require__(134)('wks'); +var uid = __webpack_require__(87); +var Symbol = __webpack_require__(11).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + + +/***/ }), +/* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DraggedElement = void 0;\nclass DraggedElement {\n constructor(element) {\n this.isDragging = false;\n this.element = element;\n }\n onStart(listener) {\n this.startListener = listener;\n return this;\n }\n onStop(listener) {\n this.stopListener = listener;\n return this;\n }\n onMove(listener) {\n this.moveListener = listener;\n return this;\n }\n start() {\n this.isDragging = true;\n if (!this.previewElement) {\n this.previewElement = this.element.cloneNode(true);\n const styles = getComputedStyle(this.element);\n for (let i = 0; i < styles.length; i++) {\n this.previewElement.style[styles[i]] = styles.getPropertyValue(styles[i]);\n }\n this.previewElement.style.opacity = \"0.6\";\n this.previewElement.style.position = \"fixed\";\n }\n const boundingRect = this.element.getBoundingClientRect();\n this.startPosition = { x: boundingRect.left, y: boundingRect.top };\n this.previewElement.style.top = boundingRect.top + \"px\";\n this.previewElement.style.left = boundingRect.left + \"px\";\n this.previewElement.style.width = (boundingRect.right - boundingRect.left) + \"px\";\n this.previewElement.style.height = (boundingRect.bottom - boundingRect.top) + \"px\";\n document.body.appendChild(this.previewElement);\n if (this.startListener) {\n this.startListener(this.element);\n }\n }\n stop(mousePosition) {\n this.isDragging = false;\n if (this.previewElement) {\n this.previewElement.remove();\n }\n const droppedAt = document.elementFromPoint(mousePosition.x, mousePosition.y);\n if (this.stopListener) {\n this.stopListener(this.element, droppedAt);\n }\n }\n moved() {\n if (this.isDragging && this.moveListener) {\n this.moveListener(this.element);\n }\n }\n moveRelativeTo(relativePos) {\n if (this.startPosition && this.previewElement) {\n const newPosition = { x: this.startPosition.x + relativePos.x, y: this.startPosition.y + relativePos.y };\n this.previewElement.style.left = newPosition.x + \"px\";\n this.previewElement.style.top = newPosition.y + \"px\";\n this.moved();\n }\n }\n}\nexports.DraggedElement = DraggedElement;\n//# sourceMappingURL=DraggedElement.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/client/Dragger/DraggedElement.js?"); + + +function __export(m) { + for (var p in m) { + if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } +} + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__export(__webpack_require__(147)); + +__export(__webpack_require__(209)); + +__export(__webpack_require__(19)); /***/ }), +/* 20 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./node_modules/js-helper/dist/client/HotkeyManager.js": -/*!*************************************************************!*\ - !*** ./node_modules/js-helper/dist/client/HotkeyManager.js ***! - \*************************************************************/ -/*! no static exports found */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DriverUtils; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _util_StringUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49); + + +/** + * Common driver utility functions. + */ +var DriverUtils = /** @class */ (function () { + function DriverUtils() { + } + // ------------------------------------------------------------------------- + // Public Static Methods + // ------------------------------------------------------------------------- + /** + * Normalizes and builds a new driver options. + * Extracts settings from connection url and sets to a new options object. + */ + DriverUtils.buildDriverOptions = function (options, buildOptions) { + var e_1, _a; + if (options.url) { + var urlDriverOptions = this.parseConnectionUrl(options.url); + if (buildOptions && buildOptions.useSid && urlDriverOptions.database) { + urlDriverOptions.sid = urlDriverOptions.database; + } + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "g"])(Object.keys(urlDriverOptions)), _c = _b.next(); !_c.done; _c = _b.next()) { + var key = _c.value; + if (typeof urlDriverOptions[key] === "undefined") { + delete urlDriverOptions[key]; + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + return Object.assign({}, options, urlDriverOptions); + } + return Object.assign({}, options); + }; + /** + * buildDriverOptions for MongodDB only to support replica set + */ + DriverUtils.buildMongoDBDriverOptions = function (options, buildOptions) { + var e_2, _a; + if (options.url) { + var urlDriverOptions = this.parseMongoDBConnectionUrl(options.url); + if (buildOptions && buildOptions.useSid && urlDriverOptions.database) { + urlDriverOptions.sid = urlDriverOptions.database; + } + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "g"])(Object.keys(urlDriverOptions)), _c = _b.next(); !_c.done; _c = _b.next()) { + var key = _c.value; + if (typeof urlDriverOptions[key] === "undefined") { + delete urlDriverOptions[key]; + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_2) throw e_2.error; } + } + return Object.assign({}, options, urlDriverOptions); + } + return Object.assign({}, options); + }; + /** + * Builds column alias from given alias name and column name. + * + * If alias length is greater than the limit (if any) allowed by the current + * driver, replaces it with a hashed string. + * + * @param driver Current `Driver`. + * @param alias Alias part. + * @param column Name of the column to be concatened to `alias`. + * + * @return An alias allowing to select/transform the target `column`. + */ + DriverUtils.buildColumnAlias = function (_a, alias, column) { + var maxAliasLength = _a.maxAliasLength; + var columnAliasName = alias + "_" + column; + if (maxAliasLength && maxAliasLength > 0 && columnAliasName.length > maxAliasLength) { + return Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_1__[/* hash */ "b"])(columnAliasName, { length: maxAliasLength }); + } + return columnAliasName; + }; + // ------------------------------------------------------------------------- + // Private Static Methods + // ------------------------------------------------------------------------- + /** + * Extracts connection data from the connection url. + */ + DriverUtils.parseConnectionUrl = function (url) { + var type = url.split(":")[0]; + var firstSlashes = url.indexOf("//"); + var preBase = url.substr(firstSlashes + 2); + var secondSlash = preBase.indexOf("/"); + var base = (secondSlash !== -1) ? preBase.substr(0, secondSlash) : preBase; + var afterBase = (secondSlash !== -1) ? preBase.substr(secondSlash + 1) : undefined; + // remove mongodb query params + if (afterBase && afterBase.indexOf("?") !== -1) { + afterBase = afterBase.substr(0, afterBase.indexOf("?")); + } + var lastAtSign = base.lastIndexOf("@"); + var usernameAndPassword = base.substr(0, lastAtSign); + var hostAndPort = base.substr(lastAtSign + 1); + var username = usernameAndPassword; + var password = ""; + var firstColon = usernameAndPassword.indexOf(":"); + if (firstColon !== -1) { + username = usernameAndPassword.substr(0, firstColon); + password = usernameAndPassword.substr(firstColon + 1); + } + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(hostAndPort.split(":"), 2), host = _a[0], port = _a[1]; + return { + type: type, + host: host, + username: decodeURIComponent(username), + password: decodeURIComponent(password), + port: port ? parseInt(port) : undefined, + database: afterBase || undefined + }; + }; + /** + * Extracts connection data from the connection url for MongoDB to support replica set. + */ + DriverUtils.parseMongoDBConnectionUrl = function (url) { + var _a; + var type = url.split(":")[0]; + var firstSlashes = url.indexOf("//"); + var preBase = url.substr(firstSlashes + 2); + var secondSlash = preBase.indexOf("/"); + var base = (secondSlash !== -1) ? preBase.substr(0, secondSlash) : preBase; + var afterBase = (secondSlash !== -1) ? preBase.substr(secondSlash + 1) : undefined; + var afterQuestionMark = ""; + var host = undefined; + var port = undefined; + var hostReplicaSet = undefined; + var replicaSet = undefined; + // remove mongodb query params + if (afterBase && afterBase.indexOf("?") !== -1) { + // split params to get replica set + afterQuestionMark = afterBase.substr((afterBase.indexOf("?") + 1), afterBase.length); + replicaSet = afterQuestionMark.split("=")[1]; + afterBase = afterBase.substr(0, afterBase.indexOf("?")); + } + var lastAtSign = base.lastIndexOf("@"); + var usernameAndPassword = base.substr(0, lastAtSign); + var hostAndPort = base.substr(lastAtSign + 1); + var username = usernameAndPassword; + var password = ""; + var firstColon = usernameAndPassword.indexOf(":"); + if (firstColon !== -1) { + username = usernameAndPassword.substr(0, firstColon); + password = usernameAndPassword.substr(firstColon + 1); + } + if (replicaSet) { + hostReplicaSet = hostAndPort; + } + else { + _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(hostAndPort.split(":"), 2), host = _a[0], port = _a[1]; + } + return { + type: type, + host: host, + hostReplicaSet: hostReplicaSet, + username: decodeURIComponent(username), + password: decodeURIComponent(password), + port: port ? parseInt(port) : undefined, + database: afterBase || undefined, + replicaSet: replicaSet || undefined + }; + }; + return DriverUtils; +}()); + + +//# sourceMappingURL=DriverUtils.js.map + + +/***/ }), +/* 21 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DateUtils; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Provides utilities to transform hydrated and persisted data. + */ +var DateUtils = /** @class */ (function () { + function DateUtils() { + } + // ------------------------------------------------------------------------- + // Public Static Methods + // ------------------------------------------------------------------------- + /** + * Normalizes date object hydrated from the database. + */ + DateUtils.normalizeHydratedDate = function (mixedDate) { + if (!mixedDate) + return mixedDate; + return typeof mixedDate === "string" ? new Date(mixedDate) : mixedDate; + }; + /** + * Converts given value into date string in a "YYYY-MM-DD" format. + */ + DateUtils.mixedDateToDateString = function (value) { + if (value instanceof Date) + return this.formatZerolessValue(value.getFullYear()) + "-" + this.formatZerolessValue(value.getMonth() + 1) + "-" + this.formatZerolessValue(value.getDate()); + return value; + }; + /** + * Converts given value into date object. + */ + DateUtils.mixedDateToDate = function (mixedDate, toUtc, useMilliseconds) { + if (toUtc === void 0) { toUtc = false; } + if (useMilliseconds === void 0) { useMilliseconds = true; } + var date = typeof mixedDate === "string" ? new Date(mixedDate) : mixedDate; + if (toUtc) + date = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()); + if (!useMilliseconds) + date.setUTCMilliseconds(0); + return date; + }; + /** + * Converts given value into time string in a "HH:mm:ss" format. + */ + DateUtils.mixedDateToTimeString = function (value, skipSeconds) { + if (skipSeconds === void 0) { skipSeconds = false; } + if (value instanceof Date) + return this.formatZerolessValue(value.getHours()) + + ":" + this.formatZerolessValue(value.getMinutes()) + + (!skipSeconds ? ":" + this.formatZerolessValue(value.getSeconds()) : ""); + return value; + }; + /** + * Converts given value into time string in a "HH:mm:ss" format. + */ + DateUtils.mixedTimeToDate = function (value) { + if (typeof value === "string") { + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(value.split(":"), 3), hours = _a[0], minutes = _a[1], seconds = _a[2]; + var date = new Date(); + if (hours) + date.setHours(parseInt(hours)); + if (minutes) + date.setMinutes(parseInt(minutes)); + if (seconds) + date.setSeconds(parseInt(seconds)); + return date; + } + return value; + }; + /** + * Converts given string value with "-" separator into a "HH:mm:ss" format. + */ + DateUtils.mixedTimeToString = function (value, skipSeconds) { + if (skipSeconds === void 0) { skipSeconds = false; } + value = value instanceof Date ? (value.getHours() + ":" + value.getMinutes() + (!skipSeconds ? ":" + value.getSeconds() : "")) : value; + if (typeof value === "string") { + return value.split(":") + .map(function (v) { return v.length === 1 ? "0" + v : v; }) // append zero at beginning if we have a first-zero-less number + .join(":"); + } + return value; + }; + /** + * Converts given value into datetime string in a "YYYY-MM-DD HH-mm-ss" format. + */ + DateUtils.mixedDateToDatetimeString = function (value, useMilliseconds) { + if (typeof value === "string") { + value = new Date(value); + } + if (value instanceof Date) { + var finalValue = this.formatZerolessValue(value.getFullYear()) + "-" + + this.formatZerolessValue(value.getMonth() + 1) + "-" + + this.formatZerolessValue(value.getDate()) + " " + + this.formatZerolessValue(value.getHours()) + ":" + + this.formatZerolessValue(value.getMinutes()) + ":" + + this.formatZerolessValue(value.getSeconds()); + if (useMilliseconds) + finalValue += "." + this.formatMilliseconds(value.getMilliseconds()); + value = finalValue; + } + return value; + }; + /** + * Converts given value into utc datetime string in a "YYYY-MM-DD HH-mm-ss.sss" format. + */ + DateUtils.mixedDateToUtcDatetimeString = function (value) { + if (typeof value === "string") { + value = new Date(value); + } + if (value instanceof Date) { + return this.formatZerolessValue(value.getUTCFullYear()) + "-" + + this.formatZerolessValue(value.getUTCMonth() + 1) + "-" + + this.formatZerolessValue(value.getUTCDate()) + " " + + this.formatZerolessValue(value.getUTCHours()) + ":" + + this.formatZerolessValue(value.getUTCMinutes()) + ":" + + this.formatZerolessValue(value.getUTCSeconds()) + "." + + this.formatMilliseconds(value.getUTCMilliseconds()); + } + return value; + }; + /** + * Converts each item in the given array to string joined by "," separator. + */ + DateUtils.simpleArrayToString = function (value) { + if (Array.isArray(value)) { + return value + .map(function (i) { return String(i); }) + .join(","); + } + return value; + }; + /** + * Converts given string to simple array split by "," separator. + */ + DateUtils.stringToSimpleArray = function (value) { + if (value instanceof String || typeof value === "string") { + if (value.length > 0) { + return value.split(","); + } + else { + return []; + } + } + return value; + }; + DateUtils.simpleJsonToString = function (value) { + return JSON.stringify(value); + }; + DateUtils.stringToSimpleJson = function (value) { + return typeof value === "string" ? JSON.parse(value) : value; + }; + DateUtils.simpleEnumToString = function (value) { + return "" + value; + }; + DateUtils.stringToSimpleEnum = function (value, columnMetadata) { + if (columnMetadata.enum + && !isNaN(value) + && columnMetadata.enum.indexOf(parseInt(value)) >= 0) { + // convert to number if that exists in poosible enum options + value = parseInt(value); + } + return value; + }; + // ------------------------------------------------------------------------- + // Private Static Methods + // ------------------------------------------------------------------------- + /** + * Formats given number to "0x" format, e.g. if it is 1 then it will return "01". + */ + DateUtils.formatZerolessValue = function (value) { + if (value < 10) + return "0" + value; + return String(value); + }; + /** + * Formats given number to "0x" format, e.g. if it is 1 then it will return "01". + */ + DateUtils.formatMilliseconds = function (value) { + if (value < 10) { + return "00" + value; + } + else if (value < 100) { + return "0" + value; + } + else { + return String(value); + } + }; + return DateUtils; +}()); + + +//# sourceMappingURL=DateUtils.js.map + + +/***/ }), +/* 22 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HotkeyManager = void 0;\nclass HotkeyManager {\n constructor() {\n this._keys = {};\n this._callbacks = {};\n this._lastCallbackId = 0;\n this._active = false;\n this.mousePosition = null;\n this._addListeners();\n this.ignoreFormElements = false;\n }\n static isFormElement(element) {\n return element instanceof HTMLInputElement\n || element instanceof HTMLSelectElement\n || element instanceof HTMLTextAreaElement;\n }\n getMousePosition() {\n return this.mousePosition;\n }\n _addListeners() {\n window.addEventListener(\"keydown\", e => {\n if (this.ignoreFormElements || !HotkeyManager.isFormElement(e.target)) {\n this._keys[e.key.toLowerCase()] = true;\n if (this._active) {\n this._checkCallbacks(e);\n }\n }\n });\n window.addEventListener(\"keyup\", e => {\n if (e.key) {\n this._keys[e.key.toLowerCase()] = false;\n }\n });\n document.addEventListener(\"mousemove\", e => {\n this.mousePosition = { x: e.clientX, y: e.clientY };\n });\n }\n activate() {\n this._active = true;\n }\n deactivate() {\n this._active = false;\n }\n addCallback(keys, callback) {\n this._lastCallbackId++;\n this._callbacks[this._lastCallbackId] = {\n keys: keys,\n callback: callback\n };\n }\n isKeyPressed(key) {\n return this._active && this._keys[key] && this._keys[key] === true;\n }\n _checkCallbacks(e) {\n //TODO async forEach?\n Object.values(this._callbacks).forEach(callback => {\n // @ts-ignore\n if (callback.keys.every(key => this._keys[key] === true)) {\n // @ts-ignore\n callback.callback(e);\n }\n });\n }\n removeCallback(callbackId) {\n delete this._callbacks[callbackId];\n }\n}\nexports.HotkeyManager = HotkeyManager;\n//# sourceMappingURL=HotkeyManager.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/client/HotkeyManager.js?"); + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(__webpack_require__(475), exports); +__exportStar(__webpack_require__(476), exports); +__exportStar(__webpack_require__(7), exports); +__exportStar(__webpack_require__(192), exports); +__exportStar(__webpack_require__(477), exports); +__exportStar(__webpack_require__(488), exports); +__exportStar(__webpack_require__(489), exports); +__exportStar(__webpack_require__(490), exports); +__exportStar(__webpack_require__(251), exports); +//# sourceMappingURL=shared.js.map /***/ }), - -/***/ "./node_modules/js-helper/dist/client/InputSelect.js": -/*!***********************************************************!*\ - !*** ./node_modules/js-helper/dist/client/InputSelect.js ***! - \***********************************************************/ -/*! no static exports found */ +/* 23 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InputSelect = void 0;\nconst Helper_1 = __webpack_require__(/*! ../shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nconst ViewHelper_1 = __webpack_require__(/*! ./ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\nclass InputSelect {\n constructor(element, options) {\n this.onChangeListeners = [];\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n this.options = new Map();\n this.inputElement = element;\n options.forEach(o => {\n if (typeof o === \"string\") {\n o = { value: o, label: o };\n }\n o.selected = Helper_1.Helper.nonNull(o.selected, false);\n this.options.set(o.value, o);\n return o;\n });\n this.buildElement();\n }\n onChange(listener) {\n this.onChangeListeners.push(listener);\n }\n buildElement() {\n const parent = this.inputElement.parentElement;\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"input-select-container\");\n const flexContainer = document.createElement(\"div\");\n flexContainer.classList.add(\"input-select-flex\");\n this.selectedOptionsContainer = document.createElement(\"span\");\n this.selectedOptionsContainer.classList.add(\"input-select-selected-options\");\n const classes = [];\n this.inputElement.classList.forEach(c => {\n this.container.classList.add(c);\n classes.push(c);\n });\n this.inputElement.classList.remove(...classes);\n this.inputElement.classList.add(\"input-select-input\");\n this.optionsContainer = document.createElement(\"div\");\n this.optionsContainer.classList.add(\"input-select-options\");\n parent.insertBefore(this.container, this.inputElement);\n this.inputElement.remove();\n this.container.appendChild(flexContainer);\n this.container.appendChild(this.optionsContainer);\n flexContainer.appendChild(this.selectedOptionsContainer);\n flexContainer.appendChild(this.inputElement);\n this.inputElement.addEventListener(\"input\", () => this.updateOptions());\n if (\"ResizeObserver\" in window) {\n // @ts-ignore\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => {\n this.optionsContainer.style.width = entry.borderBoxSize[0].inlineSize + \"px\";\n });\n });\n resizeObserver.observe(this.container);\n }\n // if (\"IntersectionObserver\" in window) {\n // const intersectionOptions = {\n // root: this.optionsContainer,\n // rootMargin: \"20px\",\n // threshold: 0.01\n // }\n // const intersectionObserver = new IntersectionObserver((entries) => {\n // entries.forEach(entry => console.log(\"is intersecting\", entry.isIntersecting));\n // // console.log(\"entries\", entries);\n // }, intersectionOptions);\n // intersectionObserver.observe(flexContainer);\n // }\n window.addEventListener(\"scroll\", () => console.log(\"scrolling\"));\n this.container.addEventListener(\"click\", () => {\n const rect = this.container.getBoundingClientRect();\n this.optionsContainer.style.top = (rect.top + rect.height) + \"px\";\n });\n this.updateOptions();\n }\n updateOptions() {\n ViewHelper_1.ViewHelper.removeAllChildren(this.selectedOptionsContainer);\n ViewHelper_1.ViewHelper.removeAllChildren(this.optionsContainer);\n const inputValue = this.inputElement.value;\n this.options.forEach(o => {\n const optionElement = document.createElement(\"span\");\n optionElement.classList.add(\"input-select-option\");\n optionElement.dataset[\"value\"] = o.value;\n optionElement.innerText = o.label;\n if (o.selected) {\n this.selectedOptionsContainer.appendChild(optionElement);\n }\n else if (o.label.indexOf(inputValue) !== -1) {\n this.optionsContainer.appendChild(optionElement);\n }\n optionElement.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n e.cancelBubble = true;\n this.toggle(o.value);\n this.inputElement.focus();\n });\n });\n }\n toggle(value) {\n const option = this.options.get(value);\n if (option) {\n option.selected = !option.selected;\n this.updateOptions();\n this.onChangeListeners.forEach(listener => {\n listener(option, this);\n });\n }\n }\n getOptions() {\n return Array.from(this.options.values());\n }\n getSelectedOptions() {\n return this.getOptions().filter(o => o.selected);\n }\n getSelectedValues() {\n return this.getSelectedOptions().map(o => o.value);\n }\n updateSelection(selection) {\n Object.keys(selection).forEach(value => {\n const option = this.options.get(value);\n if (option) {\n option.selected = selection[value];\n }\n });\n this.updateOptions();\n }\n}\nexports.InputSelect = InputSelect;\n//# sourceMappingURL=InputSelect.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/client/InputSelect.js?"); +// 7.1.15 ToLength +var toInteger = __webpack_require__(64); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + /***/ }), - -/***/ "./node_modules/js-helper/dist/client/ViewHelper.js": -/*!**********************************************************!*\ - !*** ./node_modules/js-helper/dist/client/ViewHelper.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/* 24 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ViewHelper = void 0;\nclass ViewHelper {\n /**\n * Entfernt alle Children eines Elements\n *\n * @param element\n * @returns {Node}\n */\n static removeAllChildren(element) {\n if (element instanceof Node) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n return element;\n }\n /**\n * Moves the child-Nodes from one element to another\n * @param from\n * @param to\n * @returns {*}\n */\n static moveChildren(from, to) {\n let children = [];\n //Zwischenspeichern der Children, da removeChild die forEach-Schleife durcheinander bringt\n from.childNodes.forEach(child => {\n children.push(child);\n });\n children.forEach(child => {\n from.removeChild(child);\n to.appendChild(child);\n });\n return to;\n }\n static insertAfter(newChild, referenceChild) {\n const parent = referenceChild.parentNode;\n if (parent) {\n if (parent.lastChild === referenceChild) {\n parent.appendChild(newChild);\n }\n else {\n parent.insertBefore(newChild, referenceChild.nextSibling);\n }\n return true;\n }\n return false;\n }\n}\nexports.ViewHelper = ViewHelper;\n//# sourceMappingURL=ViewHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/client/ViewHelper.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjectUtils; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +var ObjectUtils = /** @class */ (function () { + function ObjectUtils() { + } + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ + ObjectUtils.assign = function (target) { + var e_1, _a, e_2, _b; + var sources = []; + for (var _i = 1; _i < arguments.length; _i++) { + sources[_i - 1] = arguments[_i]; + } + try { + for (var sources_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "g"])(sources), sources_1_1 = sources_1.next(); !sources_1_1.done; sources_1_1 = sources_1.next()) { + var source = sources_1_1.value; + try { + for (var _c = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "g"])(Object.getOwnPropertyNames(source))), _d = _c.next(); !_d.done; _d = _c.next()) { + var prop = _d.value; + target[prop] = source[prop]; + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_d && !_d.done && (_b = _c.return)) _b.call(_c); + } + finally { if (e_2) throw e_2.error; } + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (sources_1_1 && !sources_1_1.done && (_a = sources_1.return)) _a.call(sources_1); + } + finally { if (e_1) throw e_1.error; } + } + }; + return ObjectUtils; +}()); + + +//# sourceMappingURL=ObjectUtils.js.map + /***/ }), - -/***/ "./node_modules/js-helper/dist/shared.js": -/*!***********************************************!*\ - !*** ./node_modules/js-helper/dist/shared.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/* 25 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(__webpack_require__(/*! ./shared/Counter */ \"./node_modules/js-helper/dist/shared/Counter.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/DateHelper */ \"./node_modules/js-helper/dist/shared/DateHelper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/JsonHelper */ \"./node_modules/js-helper/dist/shared/JsonHelper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/MigrationHelper */ \"./node_modules/js-helper/dist/shared/MigrationHelper.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/Prioritized */ \"./node_modules/js-helper/dist/shared/Prioritized.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/PromiseWithHandlers */ \"./node_modules/js-helper/dist/shared/PromiseWithHandlers.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/Random */ \"./node_modules/js-helper/dist/shared/Random.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared/XSSHelper */ \"./node_modules/js-helper/dist/shared/XSSHelper.js\"), exports);\n//# sourceMappingURL=shared.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TableColumn; }); +/** + * Table's columns in the database represented in this class. + */ +var TableColumn = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TableColumn(options) { + /** + * Indicates if column is NULL, or is NOT NULL in the database. + */ + this.isNullable = false; + /** + * Indicates if column is auto-generated sequence. + */ + this.isGenerated = false; + /** + * Indicates if column is a primary key. + */ + this.isPrimary = false; + /** + * Indicates if column has unique value. + */ + this.isUnique = false; + /** + * Indicates if column stores array. + */ + this.isArray = false; + /** + * Column type's length. Used only on some column types. + * For example type = "string" and length = "100" means that ORM will create a column with type varchar(100). + */ + this.length = ""; + /** + * Puts ZEROFILL attribute on to numeric column. Works only for MySQL. + * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column + */ + this.zerofill = false; + /** + * Puts UNSIGNED attribute on to numeric column. Works only for MySQL. + */ + this.unsigned = false; + if (options) { + this.name = options.name; + this.type = options.type || ""; + this.length = options.length || ""; + this.width = options.width; + this.charset = options.charset; + this.collation = options.collation; + this.precision = options.precision; + this.scale = options.scale; + this.zerofill = options.zerofill || false; + this.unsigned = this.zerofill ? true : (options.unsigned || false); + this.default = options.default; + this.onUpdate = options.onUpdate; + this.isNullable = options.isNullable || false; + this.isGenerated = options.isGenerated || false; + this.generationStrategy = options.generationStrategy; + this.isPrimary = options.isPrimary || false; + this.isUnique = options.isUnique || false; + this.isArray = options.isArray || false; + this.comment = options.comment; + this.enum = options.enum; + this.enumName = options.enumName; + this.asExpression = options.asExpression; + this.generatedType = options.generatedType; + this.spatialFeatureType = options.spatialFeatureType; + this.srid = options.srid; + } + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Clones this column to a new column with exact same properties as this column has. + */ + TableColumn.prototype.clone = function () { + return new TableColumn({ + name: this.name, + type: this.type, + length: this.length, + width: this.width, + charset: this.charset, + collation: this.collation, + precision: this.precision, + scale: this.scale, + zerofill: this.zerofill, + unsigned: this.unsigned, + enum: this.enum, + enumName: this.enumName, + asExpression: this.asExpression, + generatedType: this.generatedType, + default: this.default, + onUpdate: this.onUpdate, + isNullable: this.isNullable, + isGenerated: this.isGenerated, + generationStrategy: this.generationStrategy, + isPrimary: this.isPrimary, + isUnique: this.isUnique, + isArray: this.isArray, + comment: this.comment, + spatialFeatureType: this.spatialFeatureType, + srid: this.srid + }); + }; + return TableColumn; +}()); + + +//# sourceMappingURL=TableColumn.js.map + /***/ }), - -/***/ "./node_modules/js-helper/dist/shared/Counter.js": -/*!*******************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/Counter.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Counter = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass Counter {\n constructor(value) {\n this._value = 0;\n if (value instanceof Counter) {\n value = value.current;\n }\n this._value = Helper_1.Helper.nonNull(value, 0);\n }\n next() {\n this._value++;\n return this._value;\n }\n current() {\n return this._value;\n }\n}\nexports.Counter = Counter;\n//# sourceMappingURL=Counter.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/Counter.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/DateHelper.js": -/*!**********************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/DateHelper.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DateHelper = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nlet DateHelper = /** @class */ (() => {\n class DateHelper {\n /**\n * Formatiert ein Date-Object nach der Vorlage von der C-Funktion strftime\n *\n * @param sFormat\n * @param date\n * @param useUTC\n * @returns {*|void|string}\n */\n static strftime(sFormat, date, useUTC) {\n useUTC = Helper_1.Helper.nonNull(useUTC, false);\n date = Helper_1.Helper.nonNull(date, new Date());\n if (!(date instanceof Date))\n date = new Date(date);\n let nDay = (useUTC) ? date.getUTCDay() : date.getDay(), nDate = (useUTC) ? date.getUTCDate() : date.getDate(), nMonth = (useUTC) ? date.getUTCMonth() : date.getMonth(), nYear = (useUTC) ? date.getUTCFullYear() : date.getFullYear(), nHour = (useUTC) ? date.getUTCHours() : date.getHours(), aDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], aDaysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], aMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], isLeapYear = function () {\n if ((nYear & 3) !== 0)\n return false;\n return nYear % 100 !== 0 || nYear % 400 === 0;\n }, getThursday = function () {\n let target = new Date(date);\n target.setDate(nDate - ((nDay + 6) % 7) + 3);\n return target;\n }, zeroPad = function (nNum, nPad) {\n return ('' + (Math.pow(10, nPad) + nNum)).slice(1);\n };\n return sFormat.replace(/%[a-z]/gi, (sMatch) => {\n return {\n '%a': this.translate(aDaysShort[nDay]),\n '%A': this.translate(aDays[nDay]),\n '%b': this.translate(aMonths[nMonth].slice(0, 3)),\n '%B': this.translate(aMonths[nMonth]),\n '%c': date.toUTCString(),\n '%C': Math.floor(nYear / 100),\n '%d': zeroPad(nDate, 2),\n '%e': nDate,\n '%f': zeroPad(date.getTime() % 1000, 4),\n '%F': date.toISOString().slice(0, 10),\n '%G': getThursday().getFullYear(),\n '%g': ('' + getThursday().getFullYear()).slice(2),\n '%H': zeroPad(nHour, 2),\n '%I': zeroPad((nHour + 11) % 12 + 1, 2),\n '%j': zeroPad(aDayCount[nMonth] + nDate + ((nMonth > 1 && isLeapYear()) ? 1 : 0), 3),\n '%k': '' + nHour,\n '%l': (nHour + 11) % 12 + 1,\n '%m': zeroPad(nMonth + 1, 2),\n '%M': zeroPad(date.getMinutes(), 2),\n '%p': (nHour < 12) ? 'AM' : 'PM',\n '%P': (nHour < 12) ? 'am' : 'pm',\n '%s': Math.round(date.getTime() / 1000),\n '%S': zeroPad(date.getSeconds(), 2),\n '%u': nDay || 7,\n '%w': '' + nDay,\n '%x': date.toLocaleDateString(),\n '%X': date.toLocaleTimeString(),\n '%y': ('' + nYear).slice(2),\n '%Y': nYear,\n '%z': date.toTimeString().replace(/.+GMT([+-]\\d+).+/, '$1'),\n '%Z': date.toTimeString().replace(/.+\\((.+?)\\)$/, '$1')\n }[sMatch] || sMatch;\n });\n }\n static translate(key) {\n if (this.translationCallback) {\n return this.translationCallback(key);\n }\n return key;\n }\n static setTranslationCallback(callback) {\n this.translationCallback = callback;\n }\n }\n DateHelper.FORMAT = {\n ISO_TIME: \"%Y-%m-%dT%H:%M%S\"\n };\n return DateHelper;\n})();\nexports.DateHelper = DateHelper;\n//# sourceMappingURL=DateHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/DateHelper.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/Helper.js": -/*!******************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/Helper.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Helper = void 0;\n/**\n * Eine Klasse mit häufig genutzten, nützlichen Funktionen\n */\nconst JsonHelper_1 = __webpack_require__(/*! ./JsonHelper */ \"./node_modules/js-helper/dist/shared/JsonHelper.js\");\nclass Helper {\n /**\n * Testet, ob eine Variable null oder Undefined ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNull(variable, ...args) {\n return Helper.isAllNull(...arguments);\n }\n static isAllNull(...args) {\n for (let i = 0; i < args.length; i++) {\n if (!(args[i] === null || args[i] === undefined)) {\n return false;\n }\n }\n return true;\n }\n static isAtLeastOneNull(...args) {\n return !Helper.isAllNull(...args);\n }\n /**\n * Testet, ob eine Variable nicht (null oder undefined) ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNotNull(variable, ...args) {\n return Helper.isAllNotNull(...arguments);\n }\n static isAllNotNull(...args) {\n for (let i = 0; i < args.length; i++) {\n if ((args[i] === null || args[i] === undefined)) {\n return false;\n }\n }\n return true;\n }\n static isAtLeastOneNotNull(...args) {\n return !Helper.isAllNull(...args);\n }\n /**\n * Gibt den ersten übergebenen Wert, der nicht (null oder undefined) ist, zurück\n *\n * @param val1\n * @param val2\n * @param args\n * @returns {*}\n */\n static nonNull(val1, val2, ...args) {\n for (let i = 0; i < arguments.length; i++) {\n if (Helper.isNotNull(arguments[i])) {\n return arguments[i];\n }\n }\n return null;\n }\n /**\n * Testet, ob der übergebene Index am Objekt gesetzt ist. Werden mehrere Indexes übergeben, so wird getestet,\n * ob die \"Index-Kette\" gesetzt ist.\n * Bsp.:\n * Helper.isSet({\"index1\":{\"index2\":value}}, \"index1\", \"index2\") ist wahr\n *\n * @param object\n * @param indexes\n * @returns {*}\n */\n static isSet(object, ...indexes) {\n if (Helper.isNotNull(object)) {\n if (indexes.length === 0) {\n return true;\n }\n return (Helper.isSet.apply(null, [object[indexes[0]]].concat(indexes.slice(1))));\n }\n return false;\n }\n /**\n * Testet, ob ein Wert null oder Leerstring, bzw nur aus leerzeichend bestehender String ist\n *\n * @param value\n * @returns {boolean}\n */\n static empty(value) {\n return (Helper.isNull(value) || (typeof value === 'string' && value.trim() === \"\"));\n }\n /**\n * Testet, ob ein Wert NICHT (null oder Leerstring, bzw nur aus leerzeichend bestehender String ist)\n *\n * @param value\n * @returns {boolean}\n */\n static notEmpty(value) {\n return !Helper.empty(value);\n }\n static arrayToObject(array, indexFunction) {\n let obj = {};\n array.forEach(val => {\n obj[indexFunction(val)] = val;\n });\n return obj;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static cloneJson(obj) {\n return JsonHelper_1.JsonHelper.deepCopy(obj);\n }\n /**\n * Erstellt ein FormData-Object von JSON-Data. Nützlich für fetch\n *\n * @param obj\n * @returns {FormData}\n */\n static formDataFromObject(obj) {\n let formData = new FormData();\n for (let k in obj) {\n formData.set(k, obj[k]);\n }\n return formData;\n }\n static shuffleArray(array) {\n let currentIndex = array.length, temporaryValue, randomIndex;\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n return array;\n }\n static padZero(n, width, z) {\n z = Helper.nonNull(z, '0');\n n = n + '';\n width = Helper.nonNull(width, 1);\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n }\n static deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a === \"object\" && typeof b === \"object\") {\n let keysOfB = Object.keys(b);\n let childrenDeepEqual = Object.keys(a).every((key) => {\n let index = keysOfB.indexOf(key);\n if (index < 0) {\n return false;\n }\n keysOfB.splice(index, 1);\n return Helper.deepEqual(a[key], b[key]);\n });\n return (childrenDeepEqual && keysOfB.length === 0);\n }\n return false;\n }\n //Ältere evtl nützliche Funktionen\n static htmlspecialcharsDecode(text) {\n const map = {\n '&': '&',\n '&': \"&\",\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '’': \"’\",\n '‘': \"‘\",\n '–': \"–\",\n '—': \"—\",\n '…': \"…\",\n '”': '”'\n };\n if (Helper.isNotNull(text) && typeof text.replace === \"function\") {\n return text.replace(/\\&[\\w\\d\\#]{2,5}\\;/g, function (m) {\n return map[m];\n });\n }\n return text;\n }\n /**\n * Inverts the key-Values for an object\n * @param obj\n * @return {*}\n */\n static invertKeyValues(obj) {\n let new_obj = {};\n for (let prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n new_obj[obj[prop]] = prop;\n }\n }\n return new_obj;\n }\n static asyncForEach(array, callback, runAsyncronous) {\n return __awaiter(this, void 0, void 0, function* () {\n runAsyncronous = Helper.nonNull(runAsyncronous, false);\n let validPromises = [];\n for (let i = 0; i < array.length; i++) {\n let index = i;\n let currentPromise = Promise.resolve(callback(array[index], index, array));\n if (!runAsyncronous) {\n yield currentPromise;\n }\n validPromises.push(currentPromise);\n }\n return Promise.all(validPromises);\n });\n }\n static escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n }\n static objectForEach(object, callback) {\n Object.keys(object).forEach(key => {\n callback(object[key], key, object);\n });\n }\n static toArray(object) {\n let res = [];\n for (let k in object) {\n res.push(object[k]);\n }\n return res;\n }\n static imageUrlIsEmpty(url) {\n return (Helper.isNull(url) || url.trim() === \"\" || url.trim() === \"data:\");\n }\n static newPromiseWithResolve() {\n let resolver = null;\n let rejecter = null;\n let promise = new Promise((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n promise[\"resolve\"] = resolver;\n promise[\"reject\"] = rejecter;\n return promise;\n }\n static isMobileApp() {\n return (typeof device !== \"undefined\" && device.platform !== \"browser\");\n }\n static toSnakeCase(camelCase) {\n return camelCase.replace(/([A-Z])/g, function (find, something, position) { return ((position > 0) ? \"_\" : \"\") + find[0].toLowerCase(); });\n }\n static wait(timeout, result) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(r => {\n setTimeout(() => {\n r(result);\n }, timeout);\n });\n });\n }\n static timeout(time, otherPromise, timeoutResult) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.race([otherPromise, Helper.wait(time).then(() => {\n if (timeoutResult === undefined) {\n return Promise.reject();\n }\n else {\n return timeoutResult;\n }\n })]);\n });\n }\n}\nexports.Helper = Helper;\n//# sourceMappingURL=Helper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/Helper.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/JsonHelper.js": -/*!**********************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/JsonHelper.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonHelper = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass JsonHelper {\n static deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n // array deepEqual\n if (a instanceof Array && b instanceof Array && a.length === b.length) {\n return a[\"every\"]((obj, i) => {\n return JsonHelper.deepEqual(obj, b[i]);\n });\n }\n //date deepEqual\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n // object deep copy\n if (typeof a === \"object\" && typeof b === \"object\") {\n let aKeys = Object.keys(a);\n let bKeys = Object.keys(b);\n return aKeys.length === bKeys.length && aKeys[\"every\"]((key) => {\n return Helper_1.Helper.isNotNull(b[key]) && JsonHelper.deepEqual(a[key], b[key]);\n });\n }\n //else is false (or not handled)\n return false;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static deepCopy(obj) {\n // https://stackoverflow.com/questions/4120475/how-to-create-and-clone-a-json-object/17502990#17502990\n let i;\n // basic type deep copy\n if (Helper_1.Helper.isNull(obj) || typeof obj !== 'object') {\n return obj;\n }\n // array deep copy\n if (obj instanceof Array) {\n let cloneA = [];\n for (i = 0; i < obj.length; ++i) {\n cloneA[i] = JsonHelper.deepCopy(obj[i]);\n }\n return cloneA;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n // object deep copy\n let cloneO = {};\n for (i in obj) {\n cloneO[i] = JsonHelper.deepCopy(obj[i]);\n }\n return cloneO;\n }\n static deepAssign(...objects) {\n if (objects.length > 0 && Array.isArray(objects)) {\n const result = [];\n objects.forEach(arr => result.push(...arr));\n return result;\n }\n const resultObj = {};\n objects.forEach(obj => {\n for (let i in obj) {\n if (resultObj[i] && typeof obj[i] === \"object\" && typeof resultObj[i] === \"object\") {\n resultObj[i] = JsonHelper.deepAssign(resultObj[i], obj[i]);\n }\n else {\n resultObj[i] = obj[i];\n }\n }\n });\n return resultObj;\n }\n static getDiff(a, b) {\n const result = {\n changed: {},\n added: {},\n removed: [],\n };\n // if (Array.isArray(a) && Array.isArray(b)){\n // const lengthA = a.length;\n // const lengthB = b.length;\n //\n // const minLength = Math.min(lengthA, lengthB);\n // for (let i = 0; i < minLength; i++){\n // const\n // }\n // }\n if ((typeof a !== \"object\" || typeof b !== \"object\")\n && (!Array.isArray(a) && !Array.isArray(b))) {\n if (a === b) {\n return null;\n }\n else {\n return { value: b };\n }\n }\n let hasChanged = false;\n let hasRemoved = false;\n let hasAdded = false;\n for (let i in a) {\n if (i in b) {\n const newVal = JsonHelper.getDiff(a[i], b[i]);\n if (newVal !== null) {\n result.changed[i] = newVal;\n hasChanged = true;\n }\n }\n else {\n result.removed.push(i);\n hasRemoved = true;\n }\n }\n for (let i in b) {\n if (!(i in a)) {\n result.added[i] = b[i];\n hasAdded = true;\n }\n }\n if (hasRemoved || hasAdded || hasChanged) {\n return result;\n }\n else {\n return null;\n }\n }\n static applyDiff(obj, diff) {\n if (!Array.isArray(diff.removed)) {\n debugger;\n }\n Object.keys(diff.changed).forEach(key => {\n if (\"value\" in diff.changed[key]) {\n obj[key] = diff.changed[key].value;\n }\n else {\n obj[key] = JsonHelper.applyDiff(obj[key], diff.changed[key]);\n }\n });\n Object.keys(diff.added).forEach(key => obj[key] = diff.added[key]);\n if (Array.isArray(obj)) {\n diff.removed.sort((a, b) => (parseInt(b) - parseInt(a))).forEach(index => {\n obj.splice(parseInt(index), 1);\n });\n }\n else {\n diff.removed.forEach(rem => delete obj[rem]);\n }\n return obj;\n }\n}\nexports.JsonHelper = JsonHelper;\n//# sourceMappingURL=JsonHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/JsonHelper.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/MigrationHelper.js": -/*!***************************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/MigrationHelper.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MigrationHelper = void 0;\nconst typeorm_1 = __webpack_require__(/*! typeorm */ \"./node_modules/typeorm/browser/index.js\");\nconst Helper_1 = __webpack_require__(/*! ./Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass MigrationHelper {\n static isServer() {\n return (typeof document !== \"object\");\n }\n static addTableFromModelClass(modelClass, queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield queryRunner.createTable(this.createTableFromModelClass(modelClass));\n });\n }\n static addManyToManyTable(tableOne, tableTwo, queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield queryRunner.createTable(this.createManyToManyTable(tableOne, tableTwo));\n });\n }\n static createManyToManyTable(tableOne, tableTwo) {\n let fieldOne = tableOne + \"Id\";\n let fieldTwo = tableTwo + \"Id\";\n let name = tableOne + tableTwo.substr(0, 1).toUpperCase() + tableTwo.substr(1);\n let manyToManyTable = new typeorm_1.Table({\n name: name,\n columns: [\n {\n name: fieldOne,\n isPrimary: true,\n type: \"integer\"\n },\n {\n name: fieldTwo,\n isPrimary: true,\n type: \"integer\"\n }\n ],\n indices: [\n {\n name: \"IDX_\" + name + \"_\" + fieldOne,\n columnNames: [fieldOne]\n },\n {\n name: \"IDX_\" + name + \"_\" + fieldTwo,\n columnNames: [fieldTwo]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_\" + name + \"_\" + fieldOne,\n columnNames: [fieldOne],\n referencedTableName: tableOne.replace(/([A-Z])/, (match, p1) => \"_\" + p1.toLowerCase()),\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_\" + name + \"_\" + fieldTwo,\n columnNames: [fieldTwo],\n referencedTableName: tableTwo.replace(/([A-Z])/, (match, p1) => \"_\" + p1.toLowerCase()),\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return manyToManyTable;\n }\n static createTableFromModelClass(modelClass, prefix) {\n prefix = Helper_1.Helper.nonNull(prefix, \"\");\n let columns = [];\n let indices = [];\n let foreignKeys = [];\n let schemaDefinition = modelClass.getSchemaDefinition();\n let tableName = prefix + Helper_1.Helper.toSnakeCase(schemaDefinition.name);\n Object.keys(schemaDefinition.columns).forEach(column => {\n let columnConfig = {};\n Object.keys(schemaDefinition.columns[column]).forEach(key => {\n columnConfig[key] = schemaDefinition.columns[column][key];\n });\n columnConfig[\"name\"] = column;\n if (schemaDefinition.columns[column].primary) {\n columnConfig[\"isPrimary\"] = true;\n }\n if (schemaDefinition.columns[column].nullable) {\n columnConfig[\"isNullable\"] = true;\n }\n if (schemaDefinition.columns[column].generated) {\n //If it is not EasySyncBaseModel or server\n if (Helper_1.Helper.isNull(modelClass.CAN_BE_SYNCED) || this.isServer() || column === \"clientId\") {\n columnConfig[\"isGenerated\"] = true;\n columnConfig[\"generationStrategy\"] = \"increment\";\n if (!this.isServer()) {\n columnConfig[\"type\"] = \"INTEGER\";\n }\n }\n }\n if (typeof columnConfig[\"default\"] === \"string\") {\n columnConfig[\"default\"] = \"'\" + columnConfig[\"default\"] + \"'\";\n }\n else if (columnConfig[\"default\"] === true) {\n columnConfig[\"default\"] = 1;\n }\n else if (columnConfig[\"default\"] === false) {\n columnConfig[\"default\"] = 0;\n }\n if (columnConfig[\"type\"] === MigrationHelper.TYPES.SIMPLE_JSON) {\n columnConfig[\"type\"] = MigrationHelper.TYPES.TEXT;\n }\n if (columnConfig[\"type\"] === MigrationHelper.TYPES.MEDIUMTEXT && !this.isServer()) {\n columnConfig[\"type\"] = MigrationHelper.TYPES.TEXT;\n }\n if (columnConfig[\"type\"] === MigrationHelper.TYPES.SIMPLE_JSON && !this.isServer()) {\n columnConfig[\"type\"] = MigrationHelper.TYPES.TEXT;\n }\n columns.push(columnConfig);\n });\n Object.keys(schemaDefinition.relations).forEach(relation => {\n if (schemaDefinition.relations[relation].type === \"many-to-one\" || schemaDefinition.relations[relation].joinColumn) {\n // let columnName = Helper.toSnakeCase(relation) + \"Id\";\n let columnName = relation.substr(0, 1).toLowerCase() + relation.substr(1) + \"Id\";\n let columnConfig = {\n name: columnName,\n type: MigrationHelper.TYPES.INTEGER,\n isNullable: true\n };\n columns.push(columnConfig);\n let indexConfig = {\n name: \"IDX_\" + tableName + \"_\" + columnName,\n columnNames: [columnName]\n };\n indices.push(indexConfig);\n let foreignKeyConfig = {\n name: \"FK_\" + tableName + \"_\" + columnName,\n columnNames: [columnName],\n referencedTableName: Helper_1.Helper.toSnakeCase(schemaDefinition.relations[relation].target),\n referencedColumnNames: [\"id\"]\n };\n foreignKeys.push(foreignKeyConfig);\n }\n });\n return new typeorm_1.Table({\n name: tableName,\n columns: columns,\n indices: indices,\n foreignKeys: foreignKeys\n });\n }\n static updateModel(queryRunner, newModel) {\n return __awaiter(this, void 0, void 0, function* () {\n let schemaDefinition = newModel.getSchemaDefinition();\n let tableName = Helper_1.Helper.toSnakeCase(schemaDefinition.name);\n let newTable = this.createTableFromModelClass(newModel);\n let table = yield queryRunner.getTable(tableName);\n table.name = \"__temp__\" + table.name;\n table.indices.forEach(index => {\n index.name = \"__temp__\" + index.name;\n });\n table.foreignKeys.forEach(key => {\n key.name = \"__temp__\" + key.name;\n key.columnNames = [key.columnNames[0]];\n key.referencedColumnNames = [key.referencedColumnNames[0]];\n });\n if (MigrationHelper.isServer()) {\n table.columns.forEach(column => {\n if (column.default !== null && typeof column.default === \"string\" && column.default.startsWith(\"'\") && column.default.endsWith(\"'\") && (column.type !== \"varchar\" || column.default.startsWith(\"''\"))) {\n column.default = column.default.substring(1, column.default.length - 1);\n }\n });\n }\n yield queryRunner.createTable(table);\n let names = [];\n table.columns.forEach(column => {\n names.push(column.name);\n });\n yield queryRunner.query(\"INSERT INTO \" + table.name + \"(`\" + names.join(\"`,`\") + \"`) SELECT `\" + names.join(\"`,`\") + \"` FROM \" + tableName + \";\");\n yield queryRunner.query(\"DROP TABLE \" + tableName + \";\");\n yield queryRunner.createTable(newTable);\n let newColumnNames = [];\n newTable.columns.forEach(column => newColumnNames.push(column.name));\n names = [];\n table.columns.forEach(column => {\n if (newColumnNames.indexOf(column.name) !== -1) {\n names.push(column.name);\n }\n });\n yield queryRunner.query(\"INSERT INTO \" + tableName + \"(`\" + names.join(\"`,`\") + \"`) SELECT `\" + names.join(\"`,`\") + \"` FROM \" + table.name + \";\");\n yield queryRunner.query(\"DROP TABLE \" + table.name + \";\");\n });\n }\n}\nexports.MigrationHelper = MigrationHelper;\nMigrationHelper.TYPES = {\n INTEGER: \"int\",\n FLOAT: \"float\",\n DATE: \"datetime\",\n STRING: \"varchar\",\n TEXT: \"text\",\n MEDIUMTEXT: \"mediumtext\",\n BOOLEAN: \"boolean\",\n JSON: \"json\",\n SIMPLE_JSON: \"simple-json\",\n MY_JSON: \"my-json\"\n};\n//# sourceMappingURL=MigrationHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/MigrationHelper.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/Prioritized.js": -/*!***********************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/Prioritized.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Prioritized = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nclass Prioritized {\n constructor(promises) {\n this._lastPriority = 0;\n this._status = 0;\n this._lastResult = null;\n this._success = {};\n this._highestPromise = null;\n promises = Helper_1.Helper.nonNull(promises, {});\n this._callbacks = [];\n if (Array.isArray(promises)) {\n let tmpPromises = {};\n promises.forEach((promise, i) => {\n tmpPromises[(i + 1) * 10] = promise;\n });\n promises = tmpPromises;\n }\n let highestPromiseResolver = null;\n this._highestPromise = new Promise(resolve => {\n highestPromiseResolver = resolve;\n });\n Object.keys(promises).forEach(priority => {\n this._success[priority] = null;\n promises[priority].then(res => {\n this._success[priority] = true;\n if (parseInt(priority) > this._lastPriority) {\n this._lastResult = res;\n this._lastPriority = parseInt(priority);\n this._callCallbacks();\n if (this._checkHighest()) {\n this._status = 2;\n highestPromiseResolver();\n }\n else {\n this._status = 1;\n }\n }\n }).catch(e => {\n this._success[priority] = e;\n if (this._checkHighest()) {\n this._status = 2;\n highestPromiseResolver();\n }\n });\n });\n this._promises = promises;\n }\n _callCallbacks() {\n this._callbacks.forEach(callback => {\n callback(this._lastResult, this._lastPriority);\n });\n }\n _checkHighest() {\n let isHighestResult = false;\n Object.keys(this._success).reverse().some(priority => {\n if (Helper_1.Helper.isNull(this._success[priority])) {\n //return true beendet some-schleife\n return true;\n }\n else if (this._success[priority] === true) {\n isHighestResult = true;\n return true;\n }\n });\n return isHighestResult;\n }\n do(callback) {\n if (this._status < 2) {\n this._callbacks.push(callback);\n }\n if (this._status > 0) {\n callback(this._lastResult, this._lastPriority);\n }\n }\n highest(funcOrPromise) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._highestPromise;\n if (Helper_1.Helper.isNotNull(funcOrPromise)) {\n return Promise.resolve(this._lastResult).then(funcOrPromise);\n }\n else {\n return Promise.resolve(this._lastResult);\n }\n });\n }\n first(funcOrPromise) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._status === 0) {\n if (Helper_1.Helper.isNotNull(funcOrPromise)) {\n return Promise.race(Object[\"values\"](this._promises)).then(funcOrPromise);\n }\n else {\n return Promise.race(Object[\"values\"](this._promises));\n }\n }\n else {\n return Promise.resolve(this._lastResult);\n }\n });\n }\n}\nexports.Prioritized = Prioritized;\n//# sourceMappingURL=Prioritized.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/Prioritized.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/PromiseWithHandlers.js": -/*!*******************************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/PromiseWithHandlers.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromiseWithHandlers = void 0;\nclass PromiseWithHandlers extends Promise {\n constructor(executor) {\n let resolver = null;\n let rejecter = null;\n super((res, rej) => {\n resolver = res;\n rejecter = rej;\n if (executor) {\n executor(resolver, rejecter);\n }\n });\n this.resolver = resolver;\n this.rejecter = rejecter;\n }\n resolve(value) {\n if (this.resolver) {\n this.resolver(value);\n }\n }\n reject(value) {\n if (this.rejecter) {\n this.rejecter(value);\n }\n }\n}\nexports.PromiseWithHandlers = PromiseWithHandlers;\n//# sourceMappingURL=PromiseWithHandlers.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/PromiseWithHandlers.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/Random.js": -/*!******************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/Random.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Random = void 0;\nconst Helper_1 = __webpack_require__(/*! ./Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\nlet Random = /** @class */ (() => {\n class Random {\n static seedRandom(seed) {\n this._seed = seed;\n }\n static getRandom() {\n let t = this._seed += 0x6D2B79F5;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n }\n static getIntRandom(maxValue) {\n return Math.floor(Random.getRandom() * (maxValue + 1));\n }\n static getStringRandom(numSigns, alphabet) {\n alphabet = Helper_1.Helper.nonNull(alphabet, \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\");\n let random = \"\";\n const numAlphabet = alphabet.length - 1;\n for (let i = 0; i < numSigns; i++) {\n random += alphabet[Random.getIntRandom(numAlphabet)];\n }\n return random;\n }\n }\n Random._seed = new Date().getTime();\n return Random;\n})();\nexports.Random = Random;\n//# sourceMappingURL=Random.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/Random.js?"); - -/***/ }), - -/***/ "./node_modules/js-helper/dist/shared/XSSHelper.js": -/*!*********************************************************!*\ - !*** ./node_modules/js-helper/dist/shared/XSSHelper.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.XSSHelper = void 0;\nclass XSSHelper {\n static escapeHTML(text) {\n if (typeof text !== \"string\") {\n return text;\n }\n const MAP = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n return text.replace(/[&<>\"']/g, function (m) {\n return MAP[m];\n });\n }\n static escapeJS(text) {\n if (typeof text !== \"string\") {\n return text;\n }\n return text.replace(/[<]([\\\\s]*\\\\\\/?[\\\\s]*)script([^<]*)[>]/g, function (match, p1, p2) {\n return \"<\" + p1 + \"sc‌ript\" + p2 + \">\";\n });\n }\n}\nexports.XSSHelper = XSSHelper;\n//# sourceMappingURL=XSSHelper.js.map\n\n//# sourceURL=webpack:///./node_modules/js-helper/dist/shared/XSSHelper.js?"); - -/***/ }), - -/***/ "./node_modules/ms/index.js": -/*!**********************************!*\ - !*** ./node_modules/ms/index.js ***! - \**********************************/ -/*! no static exports found */ +/* 26 */ /***/ (function(module, exports) { -eval("/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n//# sourceURL=webpack:///./node_modules/ms/index.js?"); +var core = module.exports = { version: '2.6.12' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + /***/ }), - -/***/ "./node_modules/node-libs-browser/node_modules/buffer/index.js": -/*!*********************************************************************!*\ - !*** ./node_modules/node-libs-browser/node_modules/buffer/index.js ***! - \*********************************************************************/ -/*! no static exports found */ +/* 27 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\n\nvar base64 = __webpack_require__(/*! base64-js */ \"./node_modules/base64-js/index.js\")\nvar ieee754 = __webpack_require__(/*! ieee754 */ \"./node_modules/ieee754/index.js\")\nvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/isarray/index.js\")\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js?"); + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ViewHelper = void 0; +class ViewHelper { + /** + * Entfernt alle Children eines Elements + * + * @param element + * @returns {Node} + */ + static removeAllChildren(element) { + if (element instanceof Node) { + while (element.firstChild) { + element.removeChild(element.firstChild); + } + } + return element; + } + /** + * Moves the child-Nodes from one element to another + * @param from + * @param to + * @returns {*} + */ + static moveChildren(from, to) { + let children = []; + //Zwischenspeichern der Children, da removeChild die forEach-Schleife durcheinander bringt + from.childNodes.forEach(child => { + children.push(child); + }); + children.forEach(child => { + from.removeChild(child); + to.appendChild(child); + }); + return to; + } + static insertAfter(newChild, referenceChild) { + const parent = referenceChild.parentNode; + if (parent) { + if (parent.lastChild === referenceChild) { + parent.appendChild(newChild); + } + else { + parent.insertBefore(newChild, referenceChild.nextSibling); + } + return true; + } + return false; + } +} +exports.ViewHelper = ViewHelper; +//# sourceMappingURL=ViewHelper.js.map /***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./node_modules/process/browser.js": -/*!*****************************************!*\ - !*** ./node_modules/process/browser.js ***! - \*****************************************/ -/*! no static exports found */ +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(12)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(13); +var IE8_DOM_DEFINE = __webpack_require__(213); +var toPrimitive = __webpack_require__(82); +var dP = Object.defineProperty; + +exports.f = __webpack_require__(28) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), +/* 30 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TableUnique; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Database's table unique constraint stored in this class. + */ +var TableUnique = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TableUnique(options) { + /** + * Columns that contains this constraint. + */ + this.columnNames = []; + this.name = options.name; + this.columnNames = options.columnNames; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new copy of this constraint with exactly same properties. + */ + TableUnique.prototype.clone = function () { + return new TableUnique({ + name: this.name, + columnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.columnNames)) + }); + }; + // ------------------------------------------------------------------------- + // Static Methods + // ------------------------------------------------------------------------- + /** + * Creates unique from the unique metadata object. + */ + TableUnique.create = function (uniqueMetadata) { + return new TableUnique({ + name: uniqueMetadata.name, + columnNames: uniqueMetadata.columns.map(function (column) { return column.databaseName; }) + }); + }; + return TableUnique; +}()); + + +//# sourceMappingURL=TableUnique.js.map + + +/***/ }), +/* 31 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ColumnMetadata; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6); +/* harmony import */ var _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1); +/* harmony import */ var _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9); +/* harmony import */ var _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(60); + + + + + +/** + * This metadata contains all information about entity's column. + */ +var ColumnMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function ColumnMetadata(options) { + /** + * Type's length in the database. + */ + this.length = ""; + /** + * Indicates if this column is a primary key. + */ + this.isPrimary = false; + /** + * Indicates if this column is generated (auto increment or generated other way). + */ + this.isGenerated = false; + /** + * Indicates if column can contain nulls or not. + */ + this.isNullable = false; + /** + * Indicates if column is selected by query builder or not. + */ + this.isSelect = true; + /** + * Indicates if column is inserted by default or not. + */ + this.isInsert = true; + /** + * Indicates if column allows updates or not. + */ + this.isUpdate = true; + /** + * Puts ZEROFILL attribute on to numeric column. Works only for MySQL. + * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column + */ + this.zerofill = false; + /** + * Puts UNSIGNED attribute on to numeric column. Works only for MySQL. + */ + this.unsigned = false; + /** + * Indicates if this column is an array. + */ + this.isArray = false; + /** + * Indicates if column is virtual. Virtual columns are not mapped to the entity. + */ + this.isVirtual = false; + /** + * Indicates if column is discriminator. Discriminator columns are not mapped to the entity. + */ + this.isDiscriminator = false; + /** + * Indicates if column is tree-level column. Tree-level columns are used in closure entities. + */ + this.isTreeLevel = false; + /** + * Indicates if this column contains an entity creation date. + */ + this.isCreateDate = false; + /** + * Indicates if this column contains an entity update date. + */ + this.isUpdateDate = false; + /** + * Indicates if this column contains an entity delete date. + */ + this.isDeleteDate = false; + /** + * Indicates if this column contains an entity version. + */ + this.isVersion = false; + /** + * Indicates if this column contains an object id. + */ + this.isObjectId = false; + /** + * Indicates if this column is nested set's left column. + * Used only in tree entities with nested-set type. + */ + this.isNestedSetLeft = false; + /** + * Indicates if this column is nested set's right column. + * Used only in tree entities with nested-set type. + */ + this.isNestedSetRight = false; + /** + * Indicates if this column is materialized path's path column. + * Used only in tree entities with materialized path type. + */ + this.isMaterializedPath = false; + this.entityMetadata = options.entityMetadata; + this.embeddedMetadata = options.embeddedMetadata; + this.referencedColumn = options.referencedColumn; + if (options.args.target) + this.target = options.args.target; + if (options.args.propertyName) + this.propertyName = options.args.propertyName; + if (options.args.options.name) + this.givenDatabaseName = options.args.options.name; + if (options.args.options.type) + this.type = options.args.options.type; + if (options.args.options.length) + this.length = options.args.options.length ? options.args.options.length.toString() : ""; + if (options.args.options.width) + this.width = options.args.options.width; + if (options.args.options.charset) + this.charset = options.args.options.charset; + if (options.args.options.collation) + this.collation = options.args.options.collation; + if (options.args.options.primary) + this.isPrimary = options.args.options.primary; + if (options.args.options.default === null) // to make sure default: null is the same as nullable: true + this.isNullable = true; + if (options.args.options.nullable !== undefined) + this.isNullable = options.args.options.nullable; + if (options.args.options.select !== undefined) + this.isSelect = options.args.options.select; + if (options.args.options.insert !== undefined) + this.isInsert = options.args.options.insert; + if (options.args.options.update !== undefined) + this.isUpdate = options.args.options.update; + if (options.args.options.readonly !== undefined) + this.isUpdate = !options.args.options.readonly; + if (options.args.options.comment) + this.comment = options.args.options.comment; + if (options.args.options.default !== undefined) + this.default = options.args.options.default; + if (options.args.options.onUpdate) + this.onUpdate = options.args.options.onUpdate; + if (options.args.options.scale !== null && options.args.options.scale !== undefined) + this.scale = options.args.options.scale; + if (options.args.options.zerofill) { + this.zerofill = options.args.options.zerofill; + this.unsigned = true; // if you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column + } + if (options.args.options.unsigned) + this.unsigned = options.args.options.unsigned; + if (options.args.options.precision !== undefined) + this.precision = options.args.options.precision; + if (options.args.options.enum) { + if (options.args.options.enum instanceof Object && !Array.isArray(options.args.options.enum)) { + this.enum = Object.keys(options.args.options.enum) + .filter(function (key) { return isNaN(+key); }) // remove numeric keys - typescript numeric enum types generate them + .map(function (key) { return options.args.options.enum[key]; }); + } + else { + this.enum = options.args.options.enum; + } + } + if (options.args.options.enumName) { + this.enumName = options.args.options.enumName; + } + if (options.args.options.asExpression) { + this.asExpression = options.args.options.asExpression; + this.generatedType = options.args.options.generatedType ? options.args.options.generatedType : "VIRTUAL"; + } + if (options.args.options.hstoreType) + this.hstoreType = options.args.options.hstoreType; + if (options.args.options.array) + this.isArray = options.args.options.array; + if (options.args.mode) { + this.isVirtual = options.args.mode === "virtual"; + this.isTreeLevel = options.args.mode === "treeLevel"; + this.isCreateDate = options.args.mode === "createDate"; + this.isUpdateDate = options.args.mode === "updateDate"; + this.isDeleteDate = options.args.mode === "deleteDate"; + this.isVersion = options.args.mode === "version"; + this.isObjectId = options.args.mode === "objectId"; + } + if (options.args.options.transformer) + this.transformer = options.args.options.transformer; + if (options.args.options.spatialFeatureType) + this.spatialFeatureType = options.args.options.spatialFeatureType; + if (options.args.options.srid !== undefined) + this.srid = options.args.options.srid; + if (this.isTreeLevel) + this.type = options.connection.driver.mappedDataTypes.treeLevel; + if (this.isCreateDate) { + if (!this.type) + this.type = options.connection.driver.mappedDataTypes.createDate; + if (!this.default) + this.default = function () { return options.connection.driver.mappedDataTypes.createDateDefault; }; + if (this.precision === undefined && options.connection.driver.mappedDataTypes.createDatePrecision) + this.precision = options.connection.driver.mappedDataTypes.createDatePrecision; + } + if (this.isUpdateDate) { + if (!this.type) + this.type = options.connection.driver.mappedDataTypes.updateDate; + if (!this.default) + this.default = function () { return options.connection.driver.mappedDataTypes.updateDateDefault; }; + if (!this.onUpdate) + this.onUpdate = options.connection.driver.mappedDataTypes.updateDateDefault; + if (this.precision === undefined && options.connection.driver.mappedDataTypes.updateDatePrecision) + this.precision = options.connection.driver.mappedDataTypes.updateDatePrecision; + } + if (this.isDeleteDate) { + if (!this.type) + this.type = options.connection.driver.mappedDataTypes.deleteDate; + if (!this.isNullable) + this.isNullable = options.connection.driver.mappedDataTypes.deleteDateNullable; + if (this.precision === undefined && options.connection.driver.mappedDataTypes.deleteDatePrecision) + this.precision = options.connection.driver.mappedDataTypes.deleteDatePrecision; + } + if (this.isVersion) + this.type = options.connection.driver.mappedDataTypes.version; + if (options.closureType) + this.closureType = options.closureType; + if (options.nestedSetLeft) + this.isNestedSetLeft = options.nestedSetLeft; + if (options.nestedSetRight) + this.isNestedSetRight = options.nestedSetRight; + if (options.materializedPath) + this.isMaterializedPath = options.materializedPath; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Creates entity id map from the given entity ids array. + */ + ColumnMetadata.prototype.createValueMap = function (value, useDatabaseName) { + var _a; + var _this = this; + if (useDatabaseName === void 0) { useDatabaseName = false; } + // extract column value from embeds of entity if column is in embedded + if (this.embeddedMetadata) { + // example: post[data][information][counters].id where "data", "information" and "counters" are embeddeds + // we need to get value of "id" column from the post real entity object and return it in a + // { data: { information: { counters: { id: ... } } } } format + // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters] + var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.embeddedMetadata.parentPropertyNames)); + // now need to access post[data][information][counters] to get column value from the counters + // and on each step we need to create complex literal object, e.g. first { data }, + // then { data: { information } }, then { data: { information: { counters } } }, + // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } } + // this recursive function helps doing that + var extractEmbeddedColumnValue_1 = function (propertyNames, map) { + var propertyName = propertyNames.shift(); + if (propertyName) { + map[propertyName] = {}; + extractEmbeddedColumnValue_1(propertyNames, map[propertyName]); + return map; + } + // this is bugfix for #720 when increment number is bigint we need to make sure its a string + if ((_this.generationStrategy === "increment" || _this.generationStrategy === "rowid") && _this.type === "bigint" && value !== null) + value = String(value); + map[useDatabaseName ? _this.databaseName : _this.propertyName] = value; + return map; + }; + return extractEmbeddedColumnValue_1(propertyNames, {}); + } + else { // no embeds - no problems. Simply return column property name and its value of the entity + // this is bugfix for #720 when increment number is bigint we need to make sure its a string + if ((this.generationStrategy === "increment" || this.generationStrategy === "rowid") && this.type === "bigint" && value !== null) + value = String(value); + return _a = {}, _a[useDatabaseName ? this.databaseName : this.propertyName] = value, _a; + } + }; + /** + * Extracts column value and returns its column name with this value in a literal object. + * If column is in embedded (or recursive embedded) it returns complex literal object. + * + * Examples what this method can return depend if this column is in embeds. + * { id: 1 } or { title: "hello" }, { counters: { code: 1 } }, { data: { information: { counters: { code: 1 } } } } + */ + ColumnMetadata.prototype.getEntityValueMap = function (entity, options) { + var _a, _b; + var _this = this; + var returnNulls = false; // options && options.skipNulls === false ? false : true; // todo: remove if current will not bring problems, uncomment if it will. + // extract column value from embeds of entity if column is in embedded + if (this.embeddedMetadata) { + // example: post[data][information][counters].id where "data", "information" and "counters" are embeddeds + // we need to get value of "id" column from the post real entity object and return it in a + // { data: { information: { counters: { id: ... } } } } format + // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters] + var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.embeddedMetadata.parentPropertyNames)); + // now need to access post[data][information][counters] to get column value from the counters + // and on each step we need to create complex literal object, e.g. first { data }, + // then { data: { information } }, then { data: { information: { counters } } }, + // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } } + // this recursive function helps doing that + var extractEmbeddedColumnValue_2 = function (propertyNames, value, map) { + var propertyName = propertyNames.shift(); + if (value === undefined) + return map; + if (propertyName) { + var submap = {}; + extractEmbeddedColumnValue_2(propertyNames, value[propertyName], submap); + if (Object.keys(submap).length > 0) { + map[propertyName] = submap; + } + return map; + } + if (value[_this.propertyName] !== undefined && (returnNulls === false || value[_this.propertyName] !== null)) + map[_this.propertyName] = value[_this.propertyName]; + return map; + }; + var map = {}; + extractEmbeddedColumnValue_2(propertyNames, entity, map); + return Object.keys(map).length > 0 ? map : undefined; + } + else { // no embeds - no problems. Simply return column property name and its value of the entity + if (this.relationMetadata && entity[this.relationMetadata.propertyName] && entity[this.relationMetadata.propertyName] instanceof Object) { + var map = this.relationMetadata.joinColumns.reduce(function (map, joinColumn) { + var value = joinColumn.referencedColumn.getEntityValueMap(entity[_this.relationMetadata.propertyName]); + if (value === undefined) + return map; + return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[/* OrmUtils */ "a"].mergeDeep(map, value); + }, {}); + if (Object.keys(map).length > 0) + return _a = {}, _a[this.propertyName] = map, _a; + return undefined; + } + else { + if (entity[this.propertyName] !== undefined && (returnNulls === false || entity[this.propertyName] !== null)) + return _b = {}, _b[this.propertyName] = entity[this.propertyName], _b; + return undefined; + } + } + }; + /** + * Extracts column value from the given entity. + * If column is in embedded (or recursive embedded) it extracts its value from there. + */ + ColumnMetadata.prototype.getEntityValue = function (entity, transform) { + if (transform === void 0) { transform = false; } + if (entity === undefined || entity === null) + return undefined; + // extract column value from embeddeds of entity if column is in embedded + var value = undefined; + if (this.embeddedMetadata) { + // example: post[data][information][counters].id where "data", "information" and "counters" are embeddeds + // we need to get value of "id" column from the post real entity object + // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters] + var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.embeddedMetadata.parentPropertyNames)); + // next we need to access post[data][information][counters][this.propertyName] to get column value from the counters + // this recursive function takes array of generated property names and gets the post[data][information][counters] embed + var extractEmbeddedColumnValue_3 = function (propertyNames, value) { + var propertyName = propertyNames.shift(); + return propertyName && value ? extractEmbeddedColumnValue_3(propertyNames, value[propertyName]) : value; + }; + // once we get nested embed object we get its column, e.g. post[data][information][counters][this.propertyName] + var embeddedObject = extractEmbeddedColumnValue_3(propertyNames, entity); + if (embeddedObject) { + if (this.relationMetadata && this.referencedColumn) { + var relatedEntity = this.relationMetadata.getEntityValue(embeddedObject); + if (relatedEntity && relatedEntity instanceof Object && !(relatedEntity instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[/* FindOperator */ "a"])) { + value = this.referencedColumn.getEntityValue(relatedEntity); + } + else if (embeddedObject[this.propertyName] && embeddedObject[this.propertyName] instanceof Object && !(embeddedObject[this.propertyName] instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[/* FindOperator */ "a"])) { + value = this.referencedColumn.getEntityValue(embeddedObject[this.propertyName]); + } + else { + value = embeddedObject[this.propertyName]; + } + } + else if (this.referencedColumn) { + value = this.referencedColumn.getEntityValue(embeddedObject[this.propertyName]); + } + else { + value = embeddedObject[this.propertyName]; + } + } + } + else { // no embeds - no problems. Simply return column name by property name of the entity + if (this.relationMetadata && this.referencedColumn) { + var relatedEntity = this.relationMetadata.getEntityValue(entity); + if (relatedEntity && relatedEntity instanceof Object && !(relatedEntity instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[/* FindOperator */ "a"]) && !(relatedEntity instanceof Function)) { + value = this.referencedColumn.getEntityValue(relatedEntity); + } + else if (entity[this.propertyName] && entity[this.propertyName] instanceof Object && !(entity[this.propertyName] instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[/* FindOperator */ "a"]) && !(entity[this.propertyName] instanceof Function)) { + value = this.referencedColumn.getEntityValue(entity[this.propertyName]); + } + else { + value = entity[this.propertyName]; + } + } + else if (this.referencedColumn) { + value = this.referencedColumn.getEntityValue(entity[this.propertyName]); + } + else { + value = entity[this.propertyName]; + } + } + if (transform && this.transformer) + value = _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__[/* ApplyValueTransformers */ "a"].transformTo(this.transformer, value); + return value; + }; + /** + * Sets given entity's column value. + * Using of this method helps to set entity relation's value of the lazy and non-lazy relations. + */ + ColumnMetadata.prototype.setEntityValue = function (entity, value) { + var _this = this; + if (this.embeddedMetadata) { + // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters] + var extractEmbeddedColumnValue_4 = function (embeddedMetadatas, map) { + // if (!object[embeddedMetadata.propertyName]) + // object[embeddedMetadata.propertyName] = embeddedMetadata.create(); + var embeddedMetadata = embeddedMetadatas.shift(); + if (embeddedMetadata) { + if (!map[embeddedMetadata.propertyName]) + map[embeddedMetadata.propertyName] = embeddedMetadata.create(); + extractEmbeddedColumnValue_4(embeddedMetadatas, map[embeddedMetadata.propertyName]); + return map; + } + map[_this.propertyName] = value; + return map; + }; + return extractEmbeddedColumnValue_4(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.embeddedMetadata.embeddedMetadataTree)), entity); + } + else { + // we write a deep object in this entity only if the column is virtual + // because if its not virtual it means the user defined a real column for this relation + // also we don't do it if column is inside a junction table + if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.propertyName !== this.propertyName) { + if (!(this.propertyName in entity)) { + entity[this.propertyName] = {}; + } + entity[this.propertyName][this.referencedColumn.propertyName] = value; + } + else { + entity[this.propertyName] = value; + } + } + }; + // --------------------------------------------------------------------- + // Builder Methods + // --------------------------------------------------------------------- + ColumnMetadata.prototype.build = function (connection) { + this.propertyPath = this.buildPropertyPath(); + this.propertyAliasName = this.propertyPath.replace(".", "_"); + this.databaseName = this.buildDatabaseName(connection); + this.databasePath = this.buildDatabasePath(); + this.databaseNameWithoutPrefixes = connection.namingStrategy.columnName(this.propertyName, this.givenDatabaseName, []); + return this; + }; + ColumnMetadata.prototype.buildPropertyPath = function () { + var path = ""; + if (this.embeddedMetadata && this.embeddedMetadata.parentPropertyNames.length) + path = this.embeddedMetadata.parentPropertyNames.join(".") + "."; + path += this.propertyName; + // we add reference column to property path only if this column is virtual + // because if its not virtual it means user defined a real column for this relation + // also we don't do it if column is inside a junction table + if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.propertyName !== this.propertyName) + path += "." + this.referencedColumn.propertyName; + return path; + }; + ColumnMetadata.prototype.buildDatabasePath = function () { + var path = ""; + if (this.embeddedMetadata && this.embeddedMetadata.parentPropertyNames.length) + path = this.embeddedMetadata.parentPropertyNames.join(".") + "."; + path += this.databaseName; + // we add reference column to property path only if this column is virtual + // because if its not virtual it means user defined a real column for this relation + // also we don't do it if column is inside a junction table + if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.databaseName !== this.databaseName) + path += "." + this.referencedColumn.databaseName; + return path; + }; + ColumnMetadata.prototype.buildDatabaseName = function (connection) { + var propertyNames = this.embeddedMetadata ? this.embeddedMetadata.parentPrefixes : []; + if (connection.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_2__[/* MongoDriver */ "e"]) // we don't need to include embedded name for the mongodb column names + propertyNames = []; + return connection.namingStrategy.columnName(this.propertyName, this.givenDatabaseName, propertyNames); + }; + return ColumnMetadata; +}()); + + +//# sourceMappingURL=ColumnMetadata.js.map + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Translator = void 0; + +var NativeStoragePromise_1 = __webpack_require__(42); + +var Helper_1 = __webpack_require__(15); + +var Translator_1 = __webpack_require__(246); +/** + * Singleton-Klasse zum Übersetzen von Text-Inhalten + */ + + +var Translator = /*#__PURE__*/function (_Translator_1$Transla) { + _inherits(Translator, _Translator_1$Transla); + + var _super = _createSuper(Translator); + + /** + * Erstellt einen neuen Translator + * @param config + */ + function Translator(config) { + var _this; + + _classCallCheck(this, Translator); + + _this = _super.call(this, config); + config = Helper_1.Helper.nonNull(config, {}); + _this._currentLanguage = config.currentLanguage || _this._fallbackLanguage; + _this._nativeStorageKey = config.nativeStorageKey || "language"; + _this._translationClass = config.translationClass || "translation"; + _this._initPromise = _this.loadUserLanguage().then(function (userLanguage) { + return _this.setLanguage(userLanguage.toLowerCase()); + }); + return _this; + } + /** + * Setzt die neue Sprache, updated alle Übersetzungen. Speichert danach die aktuelle Sprache in NativeStorage + * @param language + */ + + + _createClass(Translator, [{ + key: "setLanguage", + value: function setLanguage(language) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!(this._currentLanguage === language)) { + _context.next = 4; + break; + } + + _context.next = 3; + return this.updateTranslations(); + + case 3: + return _context.abrupt("return"); + + case 4: + if (this._translations[language]) { + _context.next = 6; + break; + } + + return _context.abrupt("return"); + + case 6: + if (typeof document !== 'undefined') { + document.getElementsByTagName("html")[0].setAttribute("lang", language); + } + + this._currentLanguage = language; + _context.next = 10; + return this.updateTranslations(); + + case 10: + _context.next = 12; + return NativeStoragePromise_1.NativeStoragePromise.setItem(this._nativeStorageKey, this._currentLanguage); + + case 12: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + /** + * Übersetzt sofort einen Key in die aktuelle Sprache + * @param key + * @param args + * @returns {*} + */ + + }, { + key: "translate", + value: function translate(key, args, language) { + return _get(_getPrototypeOf(Translator.prototype), "translate", this).call(this, key, args, Helper_1.Helper.nonNull(language, this._currentLanguage)); + } + /** + * Fügt eine Callback hinzu, die aufgerufen wird, sobald die Seite übersetzt wird. Sollte genutzt werden, um Teile + * zu übersetzen, die nicht per HTML übersetzt werden können, die der Document Title + * + * wenn callImmediately true ist (default), wird die Callback sofort einmal ausgeführt + * + * Gibt die CallbackId zurück + * + * @param callback + * @param callImmediately + * @returns {number} + */ + + }, { + key: "addTranslationCallback", + value: function addTranslationCallback(callback, callImmediately) { + callImmediately = Helper_1.Helper.nonNull(callImmediately, true); + this._lastTranslationCallbackId++; + + this._translationCallbacks.set(this._lastTranslationCallbackId, callback); + + if (callImmediately) { + callback(); + } + + return this._lastTranslationCallbackId; + } + /** + * Entfernt die Callback anhand der gegebenen ID + * + * @param callbackId + */ + + }, { + key: "removeTranslationCallback", + value: function removeTranslationCallback(callbackId) { + this._translationCallbacks.delete(callbackId); + } + /** + * Updated die aktuellen übersetzungen + */ + + }, { + key: "updateTranslations", + value: function updateTranslations(baseElement) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this2 = this; + + var elements, i, max, key, translation, k; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + baseElement = Helper_1.Helper.nonNull(baseElement, document); + + if (typeof baseElement !== 'undefined') { + elements = baseElement.getElementsByClassName(this._translationClass); + + for (i = 0, max = elements.length; i < max; i++) { + key = Translator._isValid(elements[i].dataset["translation"]) ? elements[i].dataset["translation"] : elements[i].innerText || ""; + + if (key !== "" && !elements[i].dataset["onlyTranslateAttributes"]) { + try { + translation = this.translate(key, elements[i].dataset["translationArgs"] !== undefined ? JSON.parse(elements[i].dataset["translationArgs"]) : undefined); + + if (elements[i].dataset["translationUseText"] === "1") { + elements[i].innerText = translation; + } else { + elements[i].innerHTML = translation; + } + + elements[i].dataset["translation"] = key; + } catch (err) { + console.error("wrong configured translation: " + err); + } + } //Übersetzung von Attributen + + + for (k in elements[i].dataset) { + if (k.startsWith("translation") && !k.endsWith("Args")) { + try { + elements[i][k.substr(11).toLowerCase()] = this.translate(elements[i].dataset[k], elements[i].dataset[k + "Args"] !== undefined ? JSON.parse(elements[i].dataset[k + "Args"]) : undefined); + } catch (err) { + console.error("wrong configured translation: " + err); + } + } + } + } + } //Call translation callbacks + + + _context3.next = 4; + return Helper_1.Helper.asyncForEach(this._translationCallbacks, function (callback) { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", callback(baseElement)); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + }); + + case 4: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + /** + * Lädt die im NativeStorage gespeicherte Sprache oder - falls diese nicht vorhanden ist - die vom User untersütze Sprache im Browser + * @returns {Promise<*>} + */ + + }, { + key: "loadUserLanguage", + value: function loadUserLanguage() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var userLanguage, userLanguages, i, numLanguages; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return NativeStoragePromise_1.NativeStoragePromise.getItem(this._nativeStorageKey); + + case 2: + userLanguage = _context4.sent; + + if (!(!Translator._isValid(userLanguage) || !(userLanguage in this._translations))) { + _context4.next = 16; + break; + } + + userLanguages = []; + + if (navigator.language !== undefined) { + userLanguages.push(navigator.language); + } + + if ("languages" in navigator) { + //.slice(0) klont das Array. Behebt einen Bug in Firefox + userLanguages = navigator.languages.slice(0); + } //sicherstellen, dass überhaupt eine Sprache gefunden wird + + + userLanguages.push(this._fallbackLanguage); // if (userLanguages !== undefined) { + + i = 0, numLanguages = userLanguages.length; + + case 9: + if (!(i < numLanguages)) { + _context4.next = 16; + break; + } + + if (!(userLanguages[i] in this._translations)) { + _context4.next = 13; + break; + } + + userLanguage = userLanguages[i]; + return _context4.abrupt("break", 16); + + case 13: + i++; + _context4.next = 9; + break; + + case 16: + return _context4.abrupt("return", userLanguage); + + case 17: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + /** + * Erstellt eine neue Übersetzung, welche auch übersetzt wird, wenn die Sprache geändert wird + * @param key + * @param args + * @param tag + * @param useText + * @returns {any} + */ + + }, { + key: "makePersistentTranslation", + value: function makePersistentTranslation(key, args, tag, useText) { + useText = Helper_1.Helper.nonNull(useText, tag, args, false); + tag = tag || "span"; + + if (typeof document !== 'undefined') { + var htmlElem = document.createElement(tag); + htmlElem.dataset["translation"] = key; + htmlElem.classList.add(this._translationClass); + + if (args !== undefined) { + htmlElem.dataset["translationArgs"] = JSON.stringify(args); + } + + if (useText === true) { + htmlElem.innerText = this.translate(key, args); + htmlElem.dataset["translationUseText"] = "1"; + } else { + htmlElem.innerHTML = this.translate(key, args); + } + + return htmlElem; + } + } + }, { + key: "getTranslationClass", + value: function getTranslationClass() { + return this._translationClass; + } + }, { + key: "getCurrentLanguage", + value: function getCurrentLanguage() { + return this._currentLanguage; + } + }], [{ + key: "getInstance", + value: function getInstance() { + return Translator_1.Translator.getInstance(); + } + }, { + key: "setLanguage", + value: function setLanguage(language) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var instance; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + instance = Translator.getInstance(); + + if (!instance) { + _context5.next = 3; + break; + } + + return _context5.abrupt("return", instance.setLanguage(language)); + + case 3: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); + } + }, { + key: "makePersistentTranslation", + value: function makePersistentTranslation(key, args, tag, useText) { + var instance = Translator.getInstance(); + + if (instance) { + return instance.makePersistentTranslation(key, args, tag, useText); + } + } + }, { + key: "addTranslationCallback", + value: function addTranslationCallback(callback, callImmediately) { + var instance = Translator.getInstance(); + + if (instance) { + return instance.addTranslationCallback(callback, callImmediately); + } + } + }, { + key: "removeTranslationCallback", + value: function removeTranslationCallback(callbackId) { + var instance = Translator.getInstance(); + + if (instance) { + return instance.removeTranslationCallback(callbackId); + } + } + }, { + key: "updateTranslations", + value: function updateTranslations(baseElement) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var instance; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + instance = Translator.getInstance(); + + if (!instance) { + _context6.next = 3; + break; + } + + return _context6.abrupt("return", instance.updateTranslations(baseElement)); + + case 3: + case "end": + return _context6.stop(); + } + } + }, _callee6); + })); + } + }, { + key: "init", + value: function init(config) { + Translator_1.Translator.instance = new Translator(config); + } + }]); + + return Translator; +}(Translator_1.Translator); + +exports.Translator = Translator; +Translator._translations = {}; +Translator.logMissingTranslations = true; +Translator.instance = null; + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.App = void 0; +/** + * Eine Klasse, welche als Ursprung für die App genutzt wird + */ + +var Helper_1 = __webpack_require__(15); + +var SiteManager_1 = __webpack_require__(252); + +var App = /*#__PURE__*/function () { + /** + * Erstellt eine neue App, speichert ein internes Promise, welches resolved wird, sobald das deviceready-Event gefeuert wird + */ + function App() { + _classCallCheck(this, App); + + this._resolver = { + resolve: null, + reject: null + }; + this._readyPromise = new Promise(function (r) { + return document.addEventListener("deviceready", r, false); + }); + this._deepLinks = {}; + this._siteManager = SiteManager_1.SiteManager.getInstance(); + } + + _createClass(App, [{ + key: "addDeepLink", + value: function addDeepLink(link, siteConstructor) { + this._deepLinks[link] = siteConstructor; + } + }, { + key: "startSite", + value: function startSite(site, args) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!this._siteManager) { + _context.next = 2; + break; + } + + return _context.abrupt("return", this._siteManager.startSite(site, args)); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "start", + value: function start(startSiteConstructor) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var initialSiteConstructor, params, siteManager; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return this.ready(); + + case 2: + initialSiteConstructor = startSiteConstructor; + params = App._getStartParams(); + this.startingSite = initialSiteConstructor; + this.startingSiteParameters = params; + + if (Helper_1.Helper.isNotNull(params["s"])) { + startSiteConstructor = Helper_1.Helper.nonNull(this._deepLinks[params["s"]], startSiteConstructor); + delete params["s"]; + } + + this.startingSiteParameters = null; + siteManager = this._siteManager; + siteManager.init("site", this._deepLinks); + Helper_1.Helper.removeAllChildren(document.getElementById("site")); + siteManager.startSite(startSiteConstructor, params); + siteManager.setAppEndedListener(function (manager) { + manager.startSite(initialSiteConstructor); + }); + + case 13: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + /** + * Startet die erste Seite + */ + + }, { + key: "startStartingSite", + value: function startStartingSite() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + if (!this.startingSite) { + _context3.next = 2; + break; + } + + return _context3.abrupt("return", this.startSite(this.startingSite, this.startingSiteParameters)); + + case 2: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + /** + * Führt die Callback aus, sobald das interne Promise aufgelöst wird und App._promises fertig sind oder gibt das interne Promise zurück + * + * @param callback + * @returns {Promise<*>} + */ + + }, { + key: "ready", + value: function ready(callback) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this = this; + + var promise; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + promise = this._readyPromise.then(function () { + App._resolver.resolve(_this); + + return Promise.all(App._promises); + }); + + if (!callback) { + _context4.next = 5; + break; + } + + return _context4.abrupt("return", promise.then(callback)); + + case 5: + return _context4.abrupt("return", promise); + + case 6: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }], [{ + key: "setLogo", + value: function setLogo(logo) { + this._logo = logo; + } + }, { + key: "getLogo", + value: function getLogo() { + return this._logo; + } + }, { + key: "addInitialization", + value: function addInitialization(callbackOrPromise) { + if (typeof callbackOrPromise === "function") { + var promise = callbackOrPromise; + callbackOrPromise = App._mainPromise.then(function (app) { + return promise(app); + }); + } + + App._promises.push(callbackOrPromise); + } + }, { + key: "_getStartParams", + value: function _getStartParams() { + return Object.assign(App._extractParams(window.location.search.substr(1)), App._startParams); + } + }, { + key: "_extractParams", + value: function _extractParams(paramString) { + if (Helper_1.Helper.isNull(paramString)) { + return null; + } + + var result = {}, + tmp = []; + var items = paramString.split("&"); + + for (var index = 0; index < items.length; index++) { + tmp = items[index].split("="); + + if (tmp[0].trim().length > 0) { + result[tmp[0]] = decodeURIComponent(tmp[1]); + } + } + + return result; + } + }, { + key: "setStartParam", + value: function setStartParam(name, value) { + this._startParams[name] = value; + } + }]); + + return App; +}(); + +exports.App = App; +App._promises = []; +App._resolver = { + resolve: null, + reject: null +}; +App._mainPromise = new Promise(function (res, rej) { + App._resolver = { + resolve: res, + reject: rej + }; +}); +App._startParams = {}; + +/***/ }), +/* 34 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueryRunnerAlreadyReleasedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + */ +var QueryRunnerAlreadyReleasedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(QueryRunnerAlreadyReleasedError, _super); + function QueryRunnerAlreadyReleasedError() { + var _this = _super.call(this) || this; + _this.name = "QueryRunnerAlreadyReleasedError"; + Object.setPrototypeOf(_this, QueryRunnerAlreadyReleasedError.prototype); + _this.message = "Query runner already released. Cannot run queries anymore."; + return _this; + } + return QueryRunnerAlreadyReleasedError; +}(Error)); + + +//# sourceMappingURL=QueryRunnerAlreadyReleasedError.js.map + + +/***/ }), +/* 35 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EntityMetadata; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _error_CannotCreateEntityIdMapError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(151); +/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6); +/* harmony import */ var _util_StringUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49); + + + + + + + + +/** + * Contains all entity metadata. + */ +var EntityMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function EntityMetadata(options) { + /** + * Children entity metadatas. Used in inheritance patterns. + */ + this.childEntityMetadatas = []; + /** + * All "inheritance tree" from a target entity. + * For example for target Post < ContentModel < Unit it will be an array of [Post, ContentModel, Unit]. + * It also contains child entities for single table inheritance. + */ + this.inheritanceTree = []; + /** + * Table type. Tables can be abstract, closure, junction, embedded, etc. + */ + this.tableType = "regular"; + /** + * Enables Sqlite "WITHOUT ROWID" modifier for the "CREATE TABLE" statement + */ + this.withoutRowid = false; + /** + * Indicates if schema will be synchronized for this entity or not. + */ + this.synchronize = true; + /** + * Checks if there any non-nullable column exist in this entity. + */ + this.hasNonNullableRelations = false; + /** + * Indicates if this entity metadata of a junction table, or not. + * Junction table is a table created by many-to-many relationship. + * + * Its also possible to understand if entity is junction via tableType. + */ + this.isJunction = false; + /** + * Checks if this table is a junction table of the closure table. + * This type is for tables that contain junction metadata of the closure tables. + */ + this.isClosureJunction = false; + /** + * Checks if entity's table has multiple primary columns. + */ + this.hasMultiplePrimaryKeys = false; + /** + * Indicates if this entity metadata has uuid generated columns. + */ + this.hasUUIDGeneratedColumns = false; + /** + * Entity's column metadatas defined by user. + */ + this.ownColumns = []; + /** + * Columns of the entity, including columns that are coming from the embeddeds of this entity. + */ + this.columns = []; + /** + * Ancestor columns used only in closure junction tables. + */ + this.ancestorColumns = []; + /** + * Descendant columns used only in closure junction tables. + */ + this.descendantColumns = []; + /** + * All columns except for virtual columns. + */ + this.nonVirtualColumns = []; + /** + * In the case if this entity metadata is junction table's entity metadata, + * this will contain all referenced columns of owner entity. + */ + this.ownerColumns = []; + /** + * In the case if this entity metadata is junction table's entity metadata, + * this will contain all referenced columns of inverse entity. + */ + this.inverseColumns = []; + /** + * Gets the column with generated flag. + */ + this.generatedColumns = []; + /** + * Gets the primary columns. + */ + this.primaryColumns = []; + /** + * Entity's relation metadatas. + */ + this.ownRelations = []; + /** + * Relations of the entity, including relations that are coming from the embeddeds of this entity. + */ + this.relations = []; + /** + * List of eager relations this metadata has. + */ + this.eagerRelations = []; + /** + * List of eager relations this metadata has. + */ + this.lazyRelations = []; + /** + * Gets only one-to-one relations of the entity. + */ + this.oneToOneRelations = []; + /** + * Gets only owner one-to-one relations of the entity. + */ + this.ownerOneToOneRelations = []; + /** + * Gets only one-to-many relations of the entity. + */ + this.oneToManyRelations = []; + /** + * Gets only many-to-one relations of the entity. + */ + this.manyToOneRelations = []; + /** + * Gets only many-to-many relations of the entity. + */ + this.manyToManyRelations = []; + /** + * Gets only owner many-to-many relations of the entity. + */ + this.ownerManyToManyRelations = []; + /** + * Gets only owner one-to-one and many-to-one relations. + */ + this.relationsWithJoinColumns = []; + /** + * Entity's relation id metadatas. + */ + this.relationIds = []; + /** + * Entity's relation id metadatas. + */ + this.relationCounts = []; + /** + * Entity's foreign key metadatas. + */ + this.foreignKeys = []; + /** + * Entity's embedded metadatas. + */ + this.embeddeds = []; + /** + * All embeddeds - embeddeds from this entity metadata and from all child embeddeds, etc. + */ + this.allEmbeddeds = []; + /** + * Entity's own indices. + */ + this.ownIndices = []; + /** + * Entity's index metadatas. + */ + this.indices = []; + /** + * Entity's unique metadatas. + */ + this.uniques = []; + /** + * Entity's own uniques. + */ + this.ownUniques = []; + /** + * Entity's check metadatas. + */ + this.checks = []; + /** + * Entity's exclusion metadatas. + */ + this.exclusions = []; + /** + * Entity's own listener metadatas. + */ + this.ownListeners = []; + /** + * Entity listener metadatas. + */ + this.listeners = []; + /** + * Listener metadatas with "AFTER LOAD" type. + */ + this.afterLoadListeners = []; + /** + * Listener metadatas with "AFTER INSERT" type. + */ + this.beforeInsertListeners = []; + /** + * Listener metadatas with "AFTER INSERT" type. + */ + this.afterInsertListeners = []; + /** + * Listener metadatas with "AFTER UPDATE" type. + */ + this.beforeUpdateListeners = []; + /** + * Listener metadatas with "AFTER UPDATE" type. + */ + this.afterUpdateListeners = []; + /** + * Listener metadatas with "AFTER REMOVE" type. + */ + this.beforeRemoveListeners = []; + /** + * Listener metadatas with "AFTER REMOVE" type. + */ + this.afterRemoveListeners = []; + this.connection = options.connection; + this.inheritanceTree = options.inheritanceTree || []; + this.inheritancePattern = options.inheritancePattern; + this.treeType = options.tableTree ? options.tableTree.type : undefined; + this.treeOptions = options.tableTree ? options.tableTree.options : undefined; + this.parentClosureEntityMetadata = options.parentClosureEntityMetadata; + this.tableMetadataArgs = options.args; + this.target = this.tableMetadataArgs.target; + this.tableType = this.tableMetadataArgs.type; + this.expression = this.tableMetadataArgs.expression; + this.withoutRowid = this.tableMetadataArgs.withoutRowid; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new entity. + */ + EntityMetadata.prototype.create = function (queryRunner) { + var _this = this; + // if target is set to a function (e.g. class) that can be created then create it + var ret; + if (this.target instanceof Function) { + ret = new this.target(); + this.lazyRelations.forEach(function (relation) { return _this.connection.relationLoader.enableLazyLoad(relation, ret, queryRunner); }); + return ret; + } + // otherwise simply return a new empty object + var newObject = {}; + this.lazyRelations.forEach(function (relation) { return _this.connection.relationLoader.enableLazyLoad(relation, newObject, queryRunner); }); + return newObject; + }; + /** + * Checks if given entity has an id. + */ + EntityMetadata.prototype.hasId = function (entity) { + if (!entity) + return false; + return this.primaryColumns.every(function (primaryColumn) { + var value = primaryColumn.getEntityValue(entity); + return value !== null && value !== undefined && value !== ""; + }); + }; + /** + * Checks if given entity / object contains ALL primary keys entity must have. + * Returns true if it contains all of them, false if at least one of them is not defined. + */ + EntityMetadata.prototype.hasAllPrimaryKeys = function (entity) { + return this.primaryColumns.every(function (primaryColumn) { + var value = primaryColumn.getEntityValue(entity); + return value !== null && value !== undefined; + }); + }; + /** + * Ensures that given object is an entity id map. + * If given id is an object then it means its already id map. + * If given id isn't an object then it means its a value of the id column + * and it creates a new id map with this value and name of the primary column. + */ + EntityMetadata.prototype.ensureEntityIdMap = function (id) { + if (id instanceof Object) + return id; + if (this.hasMultiplePrimaryKeys) + throw new _error_CannotCreateEntityIdMapError__WEBPACK_IMPORTED_MODULE_2__[/* CannotCreateEntityIdMapError */ "a"](this, id); + return this.primaryColumns[0].createValueMap(id); + }; + /** + * Gets primary keys of the entity and returns them in a literal object. + * For example, for Post{ id: 1, title: "hello" } where id is primary it will return { id: 1 } + * For multiple primary keys it returns multiple keys in object. + * For primary keys inside embeds it returns complex object literal with keys in them. + */ + EntityMetadata.prototype.getEntityIdMap = function (entity) { + if (!entity) + return undefined; + return EntityMetadata.getValueMap(entity, this.primaryColumns, { skipNulls: true }); + }; + /** + * Creates a "mixed id map". + * If entity has multiple primary keys (ids) then it will return just regular id map, like what getEntityIdMap returns. + * But if entity has a single primary key then it will return just value of the id column of the entity, just value. + * This is called mixed id map. + */ + EntityMetadata.prototype.getEntityIdMixedMap = function (entity) { + if (!entity) + return entity; + var idMap = this.getEntityIdMap(entity); + if (this.hasMultiplePrimaryKeys) { + return idMap; + } + else if (idMap) { + return this.primaryColumns[0].getEntityValue(idMap); // todo: what about parent primary column? + } + return idMap; + }; + /** + * Compares two different entities by their ids. + * Returns true if they match, false otherwise. + */ + EntityMetadata.prototype.compareEntities = function (firstEntity, secondEntity) { + var firstEntityIdMap = this.getEntityIdMap(firstEntity); + if (!firstEntityIdMap) + return false; + var secondEntityIdMap = this.getEntityIdMap(secondEntity); + if (!secondEntityIdMap) + return false; + return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[/* OrmUtils */ "a"].compareIds(firstEntityIdMap, secondEntityIdMap); + }; + /** + * Finds column with a given property name. + */ + EntityMetadata.prototype.findColumnWithPropertyName = function (propertyName) { + return this.columns.find(function (column) { return column.propertyName === propertyName; }); + }; + /** + * Finds column with a given database name. + */ + EntityMetadata.prototype.findColumnWithDatabaseName = function (databaseName) { + return this.columns.find(function (column) { return column.databaseName === databaseName; }); + }; + /** + * Finds column with a given property path. + */ + EntityMetadata.prototype.findColumnWithPropertyPath = function (propertyPath) { + var column = this.columns.find(function (column) { return column.propertyPath === propertyPath; }); + if (column) + return column; + // in the case if column with property path was not found, try to find a relation with such property path + // if we find relation and it has a single join column then its the column user was seeking + var relation = this.relations.find(function (relation) { return relation.propertyPath === propertyPath; }); + if (relation && relation.joinColumns.length === 1) + return relation.joinColumns[0]; + return undefined; + }; + /** + * Finds columns with a given property path. + * Property path can match a relation, and relations can contain multiple columns. + */ + EntityMetadata.prototype.findColumnsWithPropertyPath = function (propertyPath) { + var column = this.columns.find(function (column) { return column.propertyPath === propertyPath; }); + if (column) + return [column]; + // in the case if column with property path was not found, try to find a relation with such property path + // if we find relation and it has a single join column then its the column user was seeking + var relation = this.relations.find(function (relation) { return relation.propertyPath === propertyPath; }); + if (relation && relation.joinColumns) + return relation.joinColumns; + return []; + }; + /** + * Finds relation with the given property path. + */ + EntityMetadata.prototype.findRelationWithPropertyPath = function (propertyPath) { + return this.relations.find(function (relation) { return relation.propertyPath === propertyPath; }); + }; + /** + * Checks if there is an embedded with a given property path. + */ + EntityMetadata.prototype.hasEmbeddedWithPropertyPath = function (propertyPath) { + return this.allEmbeddeds.some(function (embedded) { return embedded.propertyPath === propertyPath; }); + }; + /** + * Finds embedded with a given property path. + */ + EntityMetadata.prototype.findEmbeddedWithPropertyPath = function (propertyPath) { + return this.allEmbeddeds.find(function (embedded) { return embedded.propertyPath === propertyPath; }); + }; + /** + * Iterates through entity and finds and extracts all values from relations in the entity. + * If relation value is an array its being flattened. + */ + EntityMetadata.prototype.extractRelationValuesFromEntity = function (entity, relations) { + var _this = this; + var relationsAndValues = []; + relations.forEach(function (relation) { + var value = relation.getEntityValue(entity); + if (Array.isArray(value)) { + value.forEach(function (subValue) { return relationsAndValues.push([relation, subValue, _this.getInverseEntityMetadata(subValue, relation)]); }); + } + else if (value) { + relationsAndValues.push([relation, value, _this.getInverseEntityMetadata(value, relation)]); + } + }); + return relationsAndValues; + }; + EntityMetadata.prototype.getInverseEntityMetadata = function (value, relation) { + var childEntityMetadata = relation.inverseEntityMetadata.childEntityMetadatas.find(function (metadata) { + return metadata.target === value.constructor; + }); + return childEntityMetadata ? childEntityMetadata : relation.inverseEntityMetadata; + }; + // ------------------------------------------------------------------------- + // Public Static Methods + // ------------------------------------------------------------------------- + /** + * Creates a property paths for a given entity. + */ + EntityMetadata.createPropertyPath = function (metadata, entity, prefix) { + var _this = this; + if (prefix === void 0) { prefix = ""; } + var paths = []; + Object.keys(entity).forEach(function (key) { + // check for function is needed in the cases when createPropertyPath used on values containg a function as a value + // example: .update().set({ name: () => `SUBSTR('', 1, 2)` }) + var parentPath = prefix ? prefix + "." + key : key; + if (metadata.hasEmbeddedWithPropertyPath(parentPath)) { + var subPaths = _this.createPropertyPath(metadata, entity[key], parentPath); + paths.push.apply(paths, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(subPaths))); + } + else { + var path = prefix ? prefix + "." + key : key; + paths.push(path); + } + }); + return paths; + }; + /** + * Finds difference between two entity id maps. + * Returns items that exist in the first array and absent in the second array. + */ + EntityMetadata.difference = function (firstIdMaps, secondIdMaps) { + return firstIdMaps.filter(function (firstIdMap) { + return !secondIdMaps.find(function (secondIdMap) { return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[/* OrmUtils */ "a"].compareIds(firstIdMap, secondIdMap); }); + }); + }; + /** + * Creates value map from the given values and columns. + * Examples of usages are primary columns map and join columns map. + */ + EntityMetadata.getValueMap = function (entity, columns, options) { + return columns.reduce(function (map, column) { + var value = column.getEntityValueMap(entity, options); + // make sure that none of the values of the columns are not missing + if (map === undefined || value === null || value === undefined) + return undefined; + return column.isObjectId ? Object.assign(map, value) : _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[/* OrmUtils */ "a"].mergeDeep(map, value); + }, {}); + }; + // --------------------------------------------------------------------- + // Public Builder Methods + // --------------------------------------------------------------------- + EntityMetadata.prototype.build = function () { + var namingStrategy = this.connection.namingStrategy; + var entityPrefix = this.connection.options.entityPrefix; + this.engine = this.tableMetadataArgs.engine; + this.database = this.tableMetadataArgs.type === "entity-child" && this.parentEntityMetadata ? this.parentEntityMetadata.database : this.tableMetadataArgs.database; + if (this.tableMetadataArgs.schema) { + this.schema = this.tableMetadataArgs.schema; + } + else if ((this.tableMetadataArgs.type === "entity-child") && this.parentEntityMetadata) { + this.schema = this.parentEntityMetadata.schema; + } + else { + this.schema = this.connection.options.schema; + } + this.givenTableName = this.tableMetadataArgs.type === "entity-child" && this.parentEntityMetadata ? this.parentEntityMetadata.givenTableName : this.tableMetadataArgs.name; + this.synchronize = this.tableMetadataArgs.synchronize === false ? false : true; + this.targetName = this.tableMetadataArgs.target instanceof Function ? this.tableMetadataArgs.target.name : this.tableMetadataArgs.target; + if (this.tableMetadataArgs.type === "closure-junction") { + this.tableNameWithoutPrefix = namingStrategy.closureJunctionTableName(this.givenTableName); + } + else if (this.tableMetadataArgs.type === "entity-child" && this.parentEntityMetadata) { + this.tableNameWithoutPrefix = namingStrategy.tableName(this.parentEntityMetadata.targetName, this.parentEntityMetadata.givenTableName); + } + else { + this.tableNameWithoutPrefix = namingStrategy.tableName(this.targetName, this.givenTableName); + if (this.connection.driver.maxAliasLength && this.connection.driver.maxAliasLength > 0 && this.tableNameWithoutPrefix.length > this.connection.driver.maxAliasLength) { + this.tableNameWithoutPrefix = Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_4__[/* shorten */ "c"])(this.tableNameWithoutPrefix, { separator: "_", segmentLength: 3 }); + } + } + this.tableName = entityPrefix ? namingStrategy.prefixTableName(entityPrefix, this.tableNameWithoutPrefix) : this.tableNameWithoutPrefix; + this.target = this.target ? this.target : this.tableName; + this.name = this.targetName ? this.targetName : this.tableName; + this.expression = this.tableMetadataArgs.expression; + this.withoutRowid = this.tableMetadataArgs.withoutRowid === true ? true : false; + this.tablePath = this.buildTablePath(); + this.schemaPath = this.buildSchemaPath(); + this.orderBy = (this.tableMetadataArgs.orderBy instanceof Function) ? this.tableMetadataArgs.orderBy(this.propertiesMap) : this.tableMetadataArgs.orderBy; // todo: is propertiesMap available here? Looks like its not + this.isJunction = this.tableMetadataArgs.type === "closure-junction" || this.tableMetadataArgs.type === "junction"; + this.isClosureJunction = this.tableMetadataArgs.type === "closure-junction"; + }; + /** + * Registers a new column in the entity and recomputes all depend properties. + */ + EntityMetadata.prototype.registerColumn = function (column) { + if (this.ownColumns.indexOf(column) !== -1) + return; + this.ownColumns.push(column); + this.columns = this.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.columnsFromTree); }, this.ownColumns); + this.primaryColumns = this.columns.filter(function (column) { return column.isPrimary; }); + this.hasMultiplePrimaryKeys = this.primaryColumns.length > 1; + this.hasUUIDGeneratedColumns = this.columns.filter(function (column) { return column.isGenerated || column.generationStrategy === "uuid"; }).length > 0; + this.propertiesMap = this.createPropertiesMap(); + if (this.childEntityMetadatas) + this.childEntityMetadatas.forEach(function (entityMetadata) { return entityMetadata.registerColumn(column); }); + }; + /** + * Creates a special object - all columns and relations of the object (plus columns and relations from embeds) + * in a special format - { propertyName: propertyName }. + * + * example: Post{ id: number, name: string, counterEmbed: { count: number }, category: Category }. + * This method will create following object: + * { id: "id", counterEmbed: { count: "counterEmbed.count" }, category: "category" } + */ + EntityMetadata.prototype.createPropertiesMap = function () { + var map = {}; + this.columns.forEach(function (column) { return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[/* OrmUtils */ "a"].mergeDeep(map, column.createValueMap(column.propertyPath)); }); + this.relations.forEach(function (relation) { return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[/* OrmUtils */ "a"].mergeDeep(map, relation.createValueMap(relation.propertyPath)); }); + return map; + }; + /** + * Builds table path using database name, schema name and table name. + */ + EntityMetadata.prototype.buildTablePath = function () { + var tablePath = this.tableName; + if (this.schema && ((this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"]) || (this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"]) || (this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) || (this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"]))) { + tablePath = this.schema + "." + tablePath; + } + if (this.database && !(this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"])) { + if (!this.schema && this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + tablePath = this.database + ".." + tablePath; + } + else { + tablePath = this.database + "." + tablePath; + } + } + return tablePath; + }; + /** + * Builds table path using schema name and database name. + */ + EntityMetadata.prototype.buildSchemaPath = function () { + if (!this.schema) + return undefined; + return this.database && !(this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"]) ? this.database + "." + this.schema : this.schema; + }; + return EntityMetadata; +}()); + + +//# sourceMappingURL=EntityMetadata.js.map + + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__(76); +module.exports = function (it) { + return Object(defined(it)); +}; + + +/***/ }), +/* 37 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DriverOptionNotSetError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown if some required driver's option is not set. + */ +var DriverOptionNotSetError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(DriverOptionNotSetError, _super); + function DriverOptionNotSetError(optionName) { + var _this = _super.call(this) || this; + _this.name = "DriverOptionNotSetError"; + Object.setPrototypeOf(_this, DriverOptionNotSetError.prototype); + _this.message = "Driver option (" + optionName + ") is not set. Please set it to perform connection to the database."; + return _this; + } + return DriverOptionNotSetError; +}(Error)); + + +//# sourceMappingURL=DriverOptionNotSetError.js.map + + +/***/ }), +/* 38 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TableIndex; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Database's table index stored in this class. + */ +var TableIndex = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TableIndex(options) { + /** + * Columns included in this index. + */ + this.columnNames = []; + this.name = options.name; + this.columnNames = options.columnNames; + this.isUnique = !!options.isUnique; + this.isSpatial = !!options.isSpatial; + this.isFulltext = !!options.isFulltext; + this.parser = options.parser; + this.where = options.where ? options.where : ""; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new copy of this index with exactly same properties. + */ + TableIndex.prototype.clone = function () { + return new TableIndex({ + name: this.name, + columnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.columnNames)), + isUnique: this.isUnique, + isSpatial: this.isSpatial, + isFulltext: this.isFulltext, + parser: this.parser, + where: this.where + }); + }; + // ------------------------------------------------------------------------- + // Static Methods + // ------------------------------------------------------------------------- + /** + * Creates index from the index metadata object. + */ + TableIndex.create = function (indexMetadata) { + return new TableIndex({ + name: indexMetadata.name, + columnNames: indexMetadata.columns.map(function (column) { return column.databaseName; }), + isUnique: indexMetadata.isUnique, + isSpatial: indexMetadata.isSpatial, + isFulltext: indexMetadata.isFulltext, + parser: indexMetadata.parser, + where: indexMetadata.where + }); + }; + return TableIndex; +}()); + + +//# sourceMappingURL=TableIndex.js.map + + +/***/ }), +/* 39 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueryFailedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24); + + +/** + * Thrown when query execution has failed. +*/ +var QueryFailedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(QueryFailedError, _super); + function QueryFailedError(query, parameters, driverError) { + var _this = _super.call(this) || this; + Object.setPrototypeOf(_this, QueryFailedError.prototype); + _this.message = driverError.toString() + .replace(/^error: /, "") + .replace(/^Error: /, "") + .replace(/^Request/, ""); + _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_1__[/* ObjectUtils */ "a"].assign(_this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __assign */ "a"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __assign */ "a"])({}, driverError), { name: "QueryFailedError", query: query, parameters: parameters || [] })); + return _this; + } + return QueryFailedError; +}(Error)); + + +//# sourceMappingURL=QueryFailedError.js.map + + +/***/ }), +/* 40 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ QueryBuilder_QueryBuilder; }); + +// EXTERNAL MODULE: ./node_modules/typeorm/node_modules/tslib/tslib.es6.js +var tslib_es6 = __webpack_require__(0); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/ObjectUtils.js +var ObjectUtils = __webpack_require__(24); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/Alias.js + +/** + */ +var Alias_Alias = /** @class */ (function () { + function Alias(alias) { + ObjectUtils["a" /* ObjectUtils */].assign(this, alias || {}); + } + Object.defineProperty(Alias.prototype, "target", { + get: function () { + return this.metadata.target; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Alias.prototype, "hasMetadata", { + get: function () { + return !!this._metadata; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Alias.prototype, "metadata", { + get: function () { + if (!this._metadata) + throw new Error("Cannot get entity metadata for the given alias \"" + this.name + "\""); + return this._metadata; + }, + set: function (metadata) { + this._metadata = metadata; + }, + enumerable: false, + configurable: true + }); + return Alias; +}()); + + +//# sourceMappingURL=Alias.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/JoinAttribute.js +var JoinAttribute = __webpack_require__(162); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js +var RelationIdAttribute = __webpack_require__(118); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js +var RelationCountAttribute = __webpack_require__(119); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/QueryExpressionMap.js + + + + + +/** + * Contains all properties of the QueryBuilder that needs to be build a final query. + */ +var QueryExpressionMap_QueryExpressionMap = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function QueryExpressionMap(connection) { + this.connection = connection; + // ------------------------------------------------------------------------- + // Public Properties + // ------------------------------------------------------------------------- + /** + * Indicates if QueryBuilder used to select entities and not a raw results. + */ + this.queryEntity = false; + /** + * All aliases (including main alias) used in the query. + */ + this.aliases = []; + /** + * Represents query type. QueryBuilder is able to build SELECT, UPDATE and DELETE queries. + */ + this.queryType = "select"; + /** + * Data needs to be SELECT-ed. + */ + this.selects = []; + /** + * Whether SELECT is DISTINCT. + */ + this.selectDistinct = false; + /** + * SELECT DISTINCT ON query (postgres). + */ + this.selectDistinctOn = []; + /** + * Extra returning columns to be added to the returning statement if driver supports it. + */ + this.extraReturningColumns = []; + /** + * Optional on conflict statement used in insertion query in postgres. + */ + this.onConflict = ""; + /** + * Optional on ignore statement used in insertion query in databases. + */ + this.onIgnore = false; + /** + * JOIN queries. + */ + this.joinAttributes = []; + /** + * RelationId queries. + */ + this.relationIdAttributes = []; + /** + * Relation count queries. + */ + this.relationCountAttributes = []; + /** + * WHERE queries. + */ + this.wheres = []; + /** + * HAVING queries. + */ + this.havings = []; + /** + * ORDER BY queries. + */ + this.orderBys = {}; + /** + * GROUP BY queries. + */ + this.groupBys = []; + /** + * Indicates if soft-deleted rows should be included in entity result. + * By default the soft-deleted rows are not included. + */ + this.withDeleted = false; + /** + * Parameters used to be escaped in final query. + */ + this.parameters = {}; + /** + * Indicates if alias, table names and column names will be ecaped by driver, or not. + * + * todo: rename to isQuotingDisabled, also think if it should be named "escaping" + */ + this.disableEscaping = true; + /** + * Indicates if virtual columns should be included in entity result. + * + * todo: what to do with it? is it properly used? what about persistence? + */ + this.enableRelationIdValues = false; + /** + * Extra where condition appended to the end of original where conditions with AND keyword. + * Original condition will be wrapped into brackets. + */ + this.extraAppendedAndWhereCondition = ""; + /** + * Indicates if query builder creates a subquery. + */ + this.subQuery = false; + /** + * Indicates if property names are prefixed with alias names during property replacement. + * By default this is enabled, however we need this because aliases are not supported in UPDATE and DELETE queries, + * but user can use them in WHERE expressions. + */ + this.aliasNamePrefixingEnabled = true; + /** + * Indicates if query result cache is enabled or not. + */ + this.cache = false; + /** + * Options that define QueryBuilder behaviour. + */ + this.options = []; + /** + * List of columns where data should be inserted. + * Used in INSERT query. + */ + this.insertColumns = []; + /** + * Used if user wants to update or delete a specific entities. + */ + this.whereEntities = []; + /** + * Indicates if entity must be updated after insertion / updation. + * This may produce extra query or use RETURNING / OUTPUT statement (depend on database). + */ + this.updateEntity = true; + /** + * Indicates if listeners and subscribers must be called before and after query execution. + */ + this.callListeners = true; + /** + * Indicates if query must be wrapped into transaction. + */ + this.useTransaction = false; + /** + * Extra parameters. + * Used in InsertQueryBuilder to avoid default parameters mechanizm and execute high performance insertions. + */ + this.nativeParameters = {}; + } + Object.defineProperty(QueryExpressionMap.prototype, "allOrderBys", { + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Get all ORDER BY queries - if order by is specified by user then it uses them, + * otherwise it uses default entity order by if it was set. + */ + get: function () { + var _this = this; + if (!Object.keys(this.orderBys).length && this.mainAlias.hasMetadata && this.options.indexOf("disable-global-order") === -1) { + var entityOrderBy_1 = this.mainAlias.metadata.orderBy || {}; + return Object.keys(entityOrderBy_1).reduce(function (orderBy, key) { + orderBy[_this.mainAlias.name + "." + key] = entityOrderBy_1[key]; + return orderBy; + }, {}); + } + return this.orderBys; + }, + enumerable: false, + configurable: true + }); + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a main alias and adds it to the current expression map. + */ + QueryExpressionMap.prototype.setMainAlias = function (alias) { + // if main alias is already set then remove it from the array + // if (this.mainAlias) + // this.aliases.splice(this.aliases.indexOf(this.mainAlias)); + // set new main alias + this.mainAlias = alias; + return alias; + }; + /** + * Creates a new alias and adds it to the current expression map. + */ + QueryExpressionMap.prototype.createAlias = function (options) { + var aliasName = options.name; + if (!aliasName && options.tablePath) + aliasName = options.tablePath; + if (!aliasName && options.target instanceof Function) + aliasName = options.target.name; + if (!aliasName && typeof options.target === "string") + aliasName = options.target; + var alias = new Alias_Alias(); + alias.type = options.type; + if (aliasName) + alias.name = aliasName; + if (options.metadata) + alias.metadata = options.metadata; + if (options.target && !alias.hasMetadata) + alias.metadata = this.connection.getMetadata(options.target); + if (options.tablePath) + alias.tablePath = options.tablePath; + if (options.subQuery) + alias.subQuery = options.subQuery; + this.aliases.push(alias); + return alias; + }; + /** + * Finds alias with the given name. + * If alias was not found it throw an exception. + */ + QueryExpressionMap.prototype.findAliasByName = function (aliasName) { + var alias = this.aliases.find(function (alias) { return alias.name === aliasName; }); + if (!alias) + throw new Error("\"" + aliasName + "\" alias was not found. Maybe you forgot to join it?"); + return alias; + }; + QueryExpressionMap.prototype.findColumnByAliasExpression = function (aliasExpression) { + var _a = Object(tslib_es6["e" /* __read */])(aliasExpression.split("."), 2), aliasName = _a[0], propertyPath = _a[1]; + var alias = this.findAliasByName(aliasName); + return alias.metadata.findColumnWithPropertyName(propertyPath); + }; + Object.defineProperty(QueryExpressionMap.prototype, "relationMetadata", { + /** + * Gets relation metadata of the relation this query builder works with. + * + * todo: add proper exceptions + */ + get: function () { + if (!this.mainAlias) + throw new Error("Entity to work with is not specified!"); // todo: better message + var relationMetadata = this.mainAlias.metadata.findRelationWithPropertyPath(this.relationPropertyPath); + if (!relationMetadata) + throw new Error("Relation " + this.relationPropertyPath + " was not found in entity " + this.mainAlias.name); // todo: better message + return relationMetadata; + }, + enumerable: false, + configurable: true + }); + /** + * Copies all properties of the current QueryExpressionMap into a new one. + * Useful when QueryBuilder needs to create a copy of itself. + */ + QueryExpressionMap.prototype.clone = function () { + var _this = this; + var map = new QueryExpressionMap(this.connection); + map.queryType = this.queryType; + map.selects = this.selects.map(function (select) { return select; }); + map.selectDistinct = this.selectDistinct; + map.selectDistinctOn = this.selectDistinctOn; + this.aliases.forEach(function (alias) { return map.aliases.push(new Alias_Alias(alias)); }); + map.mainAlias = this.mainAlias; + map.valuesSet = this.valuesSet; + map.returning = this.returning; + map.onConflict = this.onConflict; + map.onIgnore = this.onIgnore; + map.onUpdate = this.onUpdate; + map.joinAttributes = this.joinAttributes.map(function (join) { return new JoinAttribute["a" /* JoinAttribute */](_this.connection, _this, join); }); + map.relationIdAttributes = this.relationIdAttributes.map(function (relationId) { return new RelationIdAttribute["a" /* RelationIdAttribute */](_this, relationId); }); + map.relationCountAttributes = this.relationCountAttributes.map(function (relationCount) { return new RelationCountAttribute["a" /* RelationCountAttribute */](_this, relationCount); }); + map.wheres = this.wheres.map(function (where) { return (Object(tslib_es6["a" /* __assign */])({}, where)); }); + map.havings = this.havings.map(function (having) { return (Object(tslib_es6["a" /* __assign */])({}, having)); }); + map.orderBys = Object.assign({}, this.orderBys); + map.groupBys = this.groupBys.map(function (groupBy) { return groupBy; }); + map.limit = this.limit; + map.offset = this.offset; + map.skip = this.skip; + map.take = this.take; + map.lockMode = this.lockMode; + map.lockVersion = this.lockVersion; + map.lockTables = this.lockTables; + map.withDeleted = this.withDeleted; + map.parameters = Object.assign({}, this.parameters); + map.disableEscaping = this.disableEscaping; + map.enableRelationIdValues = this.enableRelationIdValues; + map.extraAppendedAndWhereCondition = this.extraAppendedAndWhereCondition; + map.subQuery = this.subQuery; + map.aliasNamePrefixingEnabled = this.aliasNamePrefixingEnabled; + map.cache = this.cache; + map.cacheId = this.cacheId; + map.cacheDuration = this.cacheDuration; + map.relationPropertyPath = this.relationPropertyPath; + map.of = this.of; + map.insertColumns = this.insertColumns; + map.whereEntities = this.whereEntities; + map.updateEntity = this.updateEntity; + map.callListeners = this.callListeners; + map.useTransaction = this.useTransaction; + map.nativeParameters = Object.assign({}, this.nativeParameters); + map.comment = this.comment; + return map; + }; + return QueryExpressionMap; +}()); + + +//# sourceMappingURL=QueryExpressionMap.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/Brackets.js +var Brackets = __webpack_require__(154); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/metadata/EntityMetadata.js +var EntityMetadata = __webpack_require__(35); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js +var SqljsDriver = __webpack_require__(41); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js +var BrowserDisabledDriversDummy = __webpack_require__(1); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/index.js + 194 modules +var browser = __webpack_require__(47); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/find-options/FindOperator.js +var FindOperator = __webpack_require__(9); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/find-options/operator/In.js +var In = __webpack_require__(155); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/EntityColumnNotFound.js +var EntityColumnNotFound = __webpack_require__(114); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/QueryBuilder.js + + + + + + + + + + + + + +// todo: completely cover query builder with tests +// todo: entityOrProperty can be target name. implement proper behaviour if it is. +// todo: check in persistment if id exist on object and throw exception (can be in partial selection?) +// todo: fix problem with long aliases eg getMaxIdentifierLength +// todo: fix replacing in .select("COUNT(post.id) AS cnt") statement +// todo: implement joinAlways in relations and relationId +// todo: finish partial selection +// todo: sugar methods like: .addCount and .selectCount, selectCountAndMap, selectSum, selectSumAndMap, ... +// todo: implement @Select decorator +// todo: add select and map functions +// todo: implement relation/entity loading and setting them into properties within a separate query +// .loadAndMap("post.categories", "post.categories", qb => ...) +// .loadAndMap("post.categories", Category, qb => ...) +/** + * Allows to build complex sql queries in a fashion way and execute those queries. + */ +var QueryBuilder_QueryBuilder = /** @class */ (function () { + /** + * QueryBuilder can be initialized from given Connection and QueryRunner objects or from given other QueryBuilder. + */ + function QueryBuilder(connectionOrQueryBuilder, queryRunner) { + if (connectionOrQueryBuilder instanceof QueryBuilder) { + this.connection = connectionOrQueryBuilder.connection; + this.queryRunner = connectionOrQueryBuilder.queryRunner; + this.expressionMap = connectionOrQueryBuilder.expressionMap.clone(); + } + else { + this.connection = connectionOrQueryBuilder; + this.queryRunner = queryRunner; + this.expressionMap = new QueryExpressionMap_QueryExpressionMap(this.connection); + } + } + Object.defineProperty(QueryBuilder.prototype, "alias", { + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Gets the main alias string used in this query builder. + */ + get: function () { + if (!this.expressionMap.mainAlias) + throw new Error("Main alias is not set"); // todo: better exception + return this.expressionMap.mainAlias.name; + }, + enumerable: false, + configurable: true + }); + /** + * Creates SELECT query and selects given data. + * Replaces all previous selections if they exist. + */ + QueryBuilder.prototype.select = function (selection, selectionAliasName) { + this.expressionMap.queryType = "select"; + if (Array.isArray(selection)) { + this.expressionMap.selects = selection.map(function (selection) { return ({ selection: selection }); }); + } + else if (selection) { + this.expressionMap.selects = [{ selection: selection, aliasName: selectionAliasName }]; + } + // loading it dynamically because of circular issue + var SelectQueryBuilderCls = __webpack_require__(117).SelectQueryBuilder; + if (this instanceof SelectQueryBuilderCls) + return this; + return new SelectQueryBuilderCls(this); + }; + /** + * Creates INSERT query. + */ + QueryBuilder.prototype.insert = function () { + this.expressionMap.queryType = "insert"; + // loading it dynamically because of circular issue + var InsertQueryBuilderCls = __webpack_require__(194).InsertQueryBuilder; + if (this instanceof InsertQueryBuilderCls) + return this; + return new InsertQueryBuilderCls(this); + }; + /** + * Creates UPDATE query and applies given update values. + */ + QueryBuilder.prototype.update = function (entityOrTableNameUpdateSet, maybeUpdateSet) { + var updateSet = maybeUpdateSet ? maybeUpdateSet : entityOrTableNameUpdateSet; + entityOrTableNameUpdateSet = entityOrTableNameUpdateSet instanceof browser["EntitySchema"] ? entityOrTableNameUpdateSet.options.name : entityOrTableNameUpdateSet; + if (entityOrTableNameUpdateSet instanceof Function || typeof entityOrTableNameUpdateSet === "string") { + var mainAlias = this.createFromAlias(entityOrTableNameUpdateSet); + this.expressionMap.setMainAlias(mainAlias); + } + this.expressionMap.queryType = "update"; + this.expressionMap.valuesSet = updateSet; + // loading it dynamically because of circular issue + var UpdateQueryBuilderCls = __webpack_require__(195).UpdateQueryBuilder; + if (this instanceof UpdateQueryBuilderCls) + return this; + return new UpdateQueryBuilderCls(this); + }; + /** + * Creates DELETE query. + */ + QueryBuilder.prototype.delete = function () { + this.expressionMap.queryType = "delete"; + // loading it dynamically because of circular issue + var DeleteQueryBuilderCls = __webpack_require__(196).DeleteQueryBuilder; + if (this instanceof DeleteQueryBuilderCls) + return this; + return new DeleteQueryBuilderCls(this); + }; + QueryBuilder.prototype.softDelete = function () { + this.expressionMap.queryType = "soft-delete"; + // loading it dynamically because of circular issue + var SoftDeleteQueryBuilderCls = __webpack_require__(250).SoftDeleteQueryBuilder; + if (this instanceof SoftDeleteQueryBuilderCls) + return this; + return new SoftDeleteQueryBuilderCls(this); + }; + QueryBuilder.prototype.restore = function () { + this.expressionMap.queryType = "restore"; + // loading it dynamically because of circular issue + var SoftDeleteQueryBuilderCls = __webpack_require__(250).SoftDeleteQueryBuilder; + if (this instanceof SoftDeleteQueryBuilderCls) + return this; + return new SoftDeleteQueryBuilderCls(this); + }; + /** + * Sets entity's relation with which this query builder gonna work. + */ + QueryBuilder.prototype.relation = function (entityTargetOrPropertyPath, maybePropertyPath) { + var entityTarget = arguments.length === 2 ? entityTargetOrPropertyPath : undefined; + var propertyPath = arguments.length === 2 ? maybePropertyPath : entityTargetOrPropertyPath; + this.expressionMap.queryType = "relation"; + this.expressionMap.relationPropertyPath = propertyPath; + if (entityTarget) { + var mainAlias = this.createFromAlias(entityTarget); + this.expressionMap.setMainAlias(mainAlias); + } + // loading it dynamically because of circular issue + var RelationQueryBuilderCls = __webpack_require__(207).RelationQueryBuilder; + if (this instanceof RelationQueryBuilderCls) + return this; + return new RelationQueryBuilderCls(this); + }; + /** + * Checks if given relation or relations exist in the entity. + * Returns true if relation exists, false otherwise. + * + * todo: move this method to manager? or create a shortcut? + */ + QueryBuilder.prototype.hasRelation = function (target, relation) { + var entityMetadata = this.connection.getMetadata(target); + var relations = Array.isArray(relation) ? relation : [relation]; + return relations.every(function (relation) { + return !!entityMetadata.findRelationWithPropertyPath(relation); + }); + }; + /** + * Sets parameter name and its value. + */ + QueryBuilder.prototype.setParameter = function (key, value) { + this.expressionMap.parameters[key] = value; + return this; + }; + /** + * Adds all parameters from the given object. + */ + QueryBuilder.prototype.setParameters = function (parameters) { + var _this = this; + // remove function parameters + Object.keys(parameters).forEach(function (key) { + if (parameters[key] instanceof Function) { + throw new Error("Function parameter isn't supported in the parameters. Please check \"" + key + "\" parameter."); + } + }); + // set parent query builder parameters as well in sub-query mode + if (this.expressionMap.parentQueryBuilder) + this.expressionMap.parentQueryBuilder.setParameters(parameters); + Object.keys(parameters).forEach(function (key) { return _this.setParameter(key, parameters[key]); }); + return this; + }; + /** + * Adds native parameters from the given object. + */ + QueryBuilder.prototype.setNativeParameters = function (parameters) { + var _this = this; + // set parent query builder parameters as well in sub-query mode + if (this.expressionMap.parentQueryBuilder) + this.expressionMap.parentQueryBuilder.setNativeParameters(parameters); + Object.keys(parameters).forEach(function (key) { + _this.expressionMap.nativeParameters[key] = parameters[key]; + }); + return this; + }; + /** + * Gets all parameters. + */ + QueryBuilder.prototype.getParameters = function () { + var parameters = Object.assign({}, this.expressionMap.parameters); + // add discriminator column parameter if it exist + if (this.expressionMap.mainAlias && this.expressionMap.mainAlias.hasMetadata) { + var metadata = this.expressionMap.mainAlias.metadata; + if (metadata.discriminatorColumn && metadata.parentEntityMetadata) { + var values = metadata.childEntityMetadatas + .filter(function (childMetadata) { return childMetadata.discriminatorColumn; }) + .map(function (childMetadata) { return childMetadata.discriminatorValue; }); + values.push(metadata.discriminatorValue); + parameters["discriminatorColumnValues"] = values; + } + } + return parameters; + }; + /** + * Prints sql to stdout using console.log. + */ + QueryBuilder.prototype.printSql = function () { + var _a = Object(tslib_es6["e" /* __read */])(this.getQueryAndParameters(), 2), query = _a[0], parameters = _a[1]; + this.connection.logger.logQuery(query, parameters); + return this; + }; + /** + * Gets generated sql that will be executed. + * Parameters in the query are escaped for the currently used driver. + */ + QueryBuilder.prototype.getSql = function () { + return this.getQueryAndParameters()[0]; + }; + /** + * Gets query to be executed with all parameters used in it. + */ + QueryBuilder.prototype.getQueryAndParameters = function () { + // this execution order is important because getQuery method generates this.expressionMap.nativeParameters values + var query = this.getQuery(); + var parameters = this.getParameters(); + return this.connection.driver.escapeQueryWithParameters(query, parameters, this.expressionMap.nativeParameters); + }; + /** + * Executes sql generated by query builder and returns raw database results. + */ + QueryBuilder.prototype.execute = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a, sql, parameters, queryRunner; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _a = Object(tslib_es6["e" /* __read */])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1]; + queryRunner = this.obtainQueryRunner(); + _b.label = 1; + case 1: + _b.trys.push([1, , 3, 8]); + return [4 /*yield*/, queryRunner.query(sql, parameters)]; + case 2: return [2 /*return*/, _b.sent()]; // await is needed here because we are using finally + case 3: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 5]; + return [4 /*yield*/, queryRunner.release()]; + case 4: + _b.sent(); + _b.label = 5; + case 5: + if (!(this.connection.driver instanceof SqljsDriver["a" /* SqljsDriver */])) return [3 /*break*/, 7]; + return [4 /*yield*/, this.connection.driver.autoSave()]; + case 6: + _b.sent(); + _b.label = 7; + case 7: return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a completely new query builder. + * Uses same query runner as current QueryBuilder. + */ + QueryBuilder.prototype.createQueryBuilder = function () { + return new this.constructor(this.connection, this.queryRunner); + }; + /** + * Clones query builder as it is. + * Note: it uses new query runner, if you want query builder that uses exactly same query runner, + * you can create query builder using its constructor, for example new SelectQueryBuilder(queryBuilder) + * where queryBuilder is cloned QueryBuilder. + */ + QueryBuilder.prototype.clone = function () { + return new this.constructor(this); + }; + /** + * Includes a Query comment in the query builder. This is helpful for debugging purposes, + * such as finding a specific query in the database server's logs, or for categorization using + * an APM product. + */ + QueryBuilder.prototype.comment = function (comment) { + this.expressionMap.comment = comment; + return this; + }; + /** + * Disables escaping. + */ + QueryBuilder.prototype.disableEscaping = function () { + this.expressionMap.disableEscaping = false; + return this; + }; + /** + * Escapes table name, column name or alias name using current database's escaping character. + */ + QueryBuilder.prototype.escape = function (name) { + if (!this.expressionMap.disableEscaping) + return name; + return this.connection.driver.escape(name); + }; + /** + * Sets or overrides query builder's QueryRunner. + */ + QueryBuilder.prototype.setQueryRunner = function (queryRunner) { + this.queryRunner = queryRunner; + return this; + }; + /** + * Indicates if listeners and subscribers must be called before and after query execution. + * Enabled by default. + */ + QueryBuilder.prototype.callListeners = function (enabled) { + this.expressionMap.callListeners = enabled; + return this; + }; + /** + * If set to true the query will be wrapped into a transaction. + */ + QueryBuilder.prototype.useTransaction = function (enabled) { + this.expressionMap.useTransaction = enabled; + return this; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Gets escaped table name with schema name if SqlServer driver used with custom + * schema name, otherwise returns escaped table name. + */ + QueryBuilder.prototype.getTableName = function (tablePath) { + var _this = this; + return tablePath.split(".") + .map(function (i) { + // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string + if (i === "") + return i; + return _this.escape(i); + }).join("."); + }; + /** + * Gets name of the table where insert should be performed. + */ + QueryBuilder.prototype.getMainTableName = function () { + if (!this.expressionMap.mainAlias) + throw new Error("Entity where values should be inserted is not specified. Call \"qb.into(entity)\" method to specify it."); + if (this.expressionMap.mainAlias.hasMetadata) + return this.expressionMap.mainAlias.metadata.tablePath; + return this.expressionMap.mainAlias.tablePath; + }; + /** + * Specifies FROM which entity's table select/update/delete will be executed. + * Also sets a main string alias of the selection data. + */ + QueryBuilder.prototype.createFromAlias = function (entityTarget, aliasName) { + // if table has a metadata then find it to properly escape its properties + // const metadata = this.connection.entityMetadatas.find(metadata => metadata.tableName === tableName); + if (this.connection.hasMetadata(entityTarget)) { + var metadata = this.connection.getMetadata(entityTarget); + return this.expressionMap.createAlias({ + type: "from", + name: aliasName, + metadata: this.connection.getMetadata(entityTarget), + tablePath: metadata.tablePath + }); + } + else { + if (typeof entityTarget === "string") { + var isSubquery = entityTarget.substr(0, 1) === "(" && entityTarget.substr(-1) === ")"; + return this.expressionMap.createAlias({ + type: "from", + name: aliasName, + tablePath: !isSubquery ? entityTarget : undefined, + subQuery: isSubquery ? entityTarget : undefined, + }); + } + var subQueryBuilder = entityTarget(this.subQuery()); + this.setParameters(subQueryBuilder.getParameters()); + var subquery = subQueryBuilder.getQuery(); + return this.expressionMap.createAlias({ + type: "from", + name: aliasName, + subQuery: subquery + }); + } + }; + /** + * Replaces all entity's propertyName to name in the given statement. + */ + QueryBuilder.prototype.replacePropertyNames = function (statement) { + var e_1, _a; + var _this = this; + // Escape special characters in regular expressions + // Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + var escapeRegExp = function (s) { return s.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); }; + var _loop_1 = function (alias) { + var e_2, _d, e_3, _e, e_4, _f, e_5, _g, e_6, _h, e_7, _j; + if (!alias.hasMetadata) + return "continue"; + var replaceAliasNamePrefix = this_1.expressionMap.aliasNamePrefixingEnabled ? alias.name + "." : ""; + var replacementAliasNamePrefix = this_1.expressionMap.aliasNamePrefixingEnabled ? this_1.escape(alias.name) + "." : ""; + var replacements = {}; + try { + // Insert & overwrite the replacements from least to most relevant in our replacements object. + // To do this we iterate and overwrite in the order of relevance. + // Least to Most Relevant: + // * Relation Property Path to first join column key + // * Relation Property Path + Column Path + // * Column Database Name + // * Column Propety Name + // * Column Property Path + for (var _k = (e_2 = void 0, Object(tslib_es6["g" /* __values */])(alias.metadata.relations)), _l = _k.next(); !_l.done; _l = _k.next()) { + var relation = _l.value; + if (relation.joinColumns.length > 0) + replacements[relation.propertyPath] = relation.joinColumns[0].databaseName; + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_l && !_l.done && (_d = _k.return)) _d.call(_k); + } + finally { if (e_2) throw e_2.error; } + } + try { + for (var _m = (e_3 = void 0, Object(tslib_es6["g" /* __values */])(alias.metadata.relations)), _o = _m.next(); !_o.done; _o = _m.next()) { + var relation = _o.value; + try { + for (var _p = (e_4 = void 0, Object(tslib_es6["g" /* __values */])(Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(relation.joinColumns)), Object(tslib_es6["e" /* __read */])(relation.inverseJoinColumns)))), _q = _p.next(); !_q.done; _q = _p.next()) { + var joinColumn = _q.value; + var propertyKey = relation.propertyPath + "." + joinColumn.referencedColumn.propertyPath; + replacements[propertyKey] = joinColumn.databaseName; + } + } + catch (e_4_1) { e_4 = { error: e_4_1 }; } + finally { + try { + if (_q && !_q.done && (_f = _p.return)) _f.call(_p); + } + finally { if (e_4) throw e_4.error; } + } + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (_o && !_o.done && (_e = _m.return)) _e.call(_m); + } + finally { if (e_3) throw e_3.error; } + } + try { + for (var _r = (e_5 = void 0, Object(tslib_es6["g" /* __values */])(alias.metadata.columns)), _s = _r.next(); !_s.done; _s = _r.next()) { + var column = _s.value; + replacements[column.databaseName] = column.databaseName; + } + } + catch (e_5_1) { e_5 = { error: e_5_1 }; } + finally { + try { + if (_s && !_s.done && (_g = _r.return)) _g.call(_r); + } + finally { if (e_5) throw e_5.error; } + } + try { + for (var _t = (e_6 = void 0, Object(tslib_es6["g" /* __values */])(alias.metadata.columns)), _u = _t.next(); !_u.done; _u = _t.next()) { + var column = _u.value; + replacements[column.propertyName] = column.databaseName; + } + } + catch (e_6_1) { e_6 = { error: e_6_1 }; } + finally { + try { + if (_u && !_u.done && (_h = _t.return)) _h.call(_t); + } + finally { if (e_6) throw e_6.error; } + } + try { + for (var _v = (e_7 = void 0, Object(tslib_es6["g" /* __values */])(alias.metadata.columns)), _w = _v.next(); !_w.done; _w = _v.next()) { + var column = _w.value; + replacements[column.propertyPath] = column.databaseName; + } + } + catch (e_7_1) { e_7 = { error: e_7_1 }; } + finally { + try { + if (_w && !_w.done && (_j = _v.return)) _j.call(_v); + } + finally { if (e_7) throw e_7.error; } + } + var replacementKeys = Object.keys(replacements); + if (replacementKeys.length) { + statement = statement.replace(new RegExp( + // Avoid a lookbehind here since it's not well supported + "([ =(]|^.{0})" + + (escapeRegExp(replaceAliasNamePrefix) + "(" + replacementKeys.map(escapeRegExp).join("|") + ")") + + "(?=[ =),]|.{0}$)", "gm"), function (_, pre, p) { + return "" + pre + replacementAliasNamePrefix + _this.escape(replacements[p]); + }); + } + }; + var this_1 = this; + try { + for (var _b = Object(tslib_es6["g" /* __values */])(this.expressionMap.aliases), _c = _b.next(); !_c.done; _c = _b.next()) { + var alias = _c.value; + _loop_1(alias); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + return statement; + }; + QueryBuilder.prototype.createComment = function () { + if (!this.expressionMap.comment) { + return ""; + } + // ANSI SQL 2003 support C style comments - comments that start with `/*` and end with `*/` + // In some dialects query nesting is available - but not all. Because of this, we'll need + // to scrub "ending" characters from the SQL but otherwise we can leave everything else + // as-is and it should be valid. + return "/* " + this.expressionMap.comment.replace("*/", "") + " */ "; + }; + /** + * Creates "WHERE" expression. + */ + QueryBuilder.prototype.createWhereExpression = function () { + var conditionsArray = []; + var whereExpression = this.createWhereExpressionString(); + whereExpression.trim() && conditionsArray.push(this.createWhereExpressionString()); + if (this.expressionMap.mainAlias.hasMetadata) { + var metadata = this.expressionMap.mainAlias.metadata; + // Adds the global condition of "non-deleted" for the entity with delete date columns in select query. + if (this.expressionMap.queryType === "select" && !this.expressionMap.withDeleted && metadata.deleteDateColumn) { + var column = this.expressionMap.aliasNamePrefixingEnabled + ? this.expressionMap.mainAlias.name + "." + metadata.deleteDateColumn.propertyName + : metadata.deleteDateColumn.propertyName; + var condition = this.replacePropertyNames(column) + " IS NULL"; + conditionsArray.push(condition); + } + if (metadata.discriminatorColumn && metadata.parentEntityMetadata) { + var column = this.expressionMap.aliasNamePrefixingEnabled + ? this.expressionMap.mainAlias.name + "." + metadata.discriminatorColumn.databaseName + : metadata.discriminatorColumn.databaseName; + var condition = this.replacePropertyNames(column) + " IN (:...discriminatorColumnValues)"; + conditionsArray.push(condition); + } + } + if (this.expressionMap.extraAppendedAndWhereCondition) { + var condition = this.replacePropertyNames(this.expressionMap.extraAppendedAndWhereCondition); + conditionsArray.push(condition); + } + if (!conditionsArray.length) { + return ""; + } + else if (conditionsArray.length === 1) { + return " WHERE " + conditionsArray[0]; + } + else { + return " WHERE ( " + conditionsArray.join(" ) AND ( ") + " )"; + } + }; + /** + * Creates "RETURNING" / "OUTPUT" expression. + */ + QueryBuilder.prototype.createReturningExpression = function () { + var _this = this; + var columns = this.getReturningColumns(); + var driver = this.connection.driver; + // also add columns we must auto-return to perform entity updation + // if user gave his own returning + if (typeof this.expressionMap.returning !== "string" && + this.expressionMap.extraReturningColumns.length > 0 && + driver.isReturningSqlSupported()) { + columns.push.apply(columns, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.expressionMap.extraReturningColumns.filter(function (column) { + return columns.indexOf(column) === -1; + })))); + } + if (columns.length) { + var columnsExpression = columns.map(function (column) { + var name = _this.escape(column.databaseName); + if (driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + if (_this.expressionMap.queryType === "insert" || _this.expressionMap.queryType === "update" || _this.expressionMap.queryType === "soft-delete" || _this.expressionMap.queryType === "restore") { + return "INSERTED." + name; + } + else { + return _this.escape(_this.getMainTableName()) + "." + name; + } + } + else { + return name; + } + }).join(", "); + if (driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */]) { + columnsExpression += " INTO " + columns.map(function (column) { + var parameterName = "output_" + column.databaseName; + _this.expressionMap.nativeParameters[parameterName] = { type: driver.columnTypeToNativeParameter(column.type), dir: driver.oracle.BIND_OUT }; + return _this.connection.driver.createParameter(parameterName, Object.keys(_this.expressionMap.nativeParameters).length); + }).join(", "); + } + if (driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + if (this.expressionMap.queryType === "insert" || this.expressionMap.queryType === "update") { + columnsExpression += " INTO @OutputTable"; + } + } + return columnsExpression; + } + else if (typeof this.expressionMap.returning === "string") { + return this.expressionMap.returning; + } + return ""; + }; + /** + * If returning / output cause is set to array of column names, + * then this method will return all column metadatas of those column names. + */ + QueryBuilder.prototype.getReturningColumns = function () { + var _this = this; + var columns = []; + if (Array.isArray(this.expressionMap.returning)) { + this.expressionMap.returning.forEach(function (columnName) { + if (_this.expressionMap.mainAlias.hasMetadata) { + columns.push.apply(columns, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(_this.expressionMap.mainAlias.metadata.findColumnsWithPropertyPath(columnName)))); + } + }); + } + return columns; + }; + /** + * Concatenates all added where expressions into one string. + */ + QueryBuilder.prototype.createWhereExpressionString = function () { + var _this = this; + return this.expressionMap.wheres.map(function (where, index) { + switch (where.type) { + case "and": + return (index > 0 ? "AND " : "") + _this.replacePropertyNames(where.condition); + case "or": + return (index > 0 ? "OR " : "") + _this.replacePropertyNames(where.condition); + default: + return _this.replacePropertyNames(where.condition); + } + }).join(" "); + }; + /** + * Creates "WHERE" expression and variables for the given "ids". + */ + QueryBuilder.prototype.createWhereIdsExpression = function (ids) { + var _a; + var _this = this; + var metadata = this.expressionMap.mainAlias.metadata; + var normalized = (Array.isArray(ids) ? ids : [ids]).map(function (id) { return metadata.ensureEntityIdMap(id); }); + // using in(...ids) for single primary key entities + if (!metadata.hasMultiplePrimaryKeys + && metadata.embeddeds.length === 0) { + var primaryColumn_1 = metadata.primaryColumns[0]; + // getEntityValue will try to transform `In`, it is a bug + // todo: remove this transformer check after #2390 is fixed + if (!primaryColumn_1.transformer) { + return this.computeWhereParameter((_a = {}, + _a[primaryColumn_1.propertyName] = Object(In["a" /* In */])(normalized.map(function (id) { return primaryColumn_1.getEntityValue(id, false); })), + _a)); + } + } + // create shortcuts for better readability + var alias = this.expressionMap.aliasNamePrefixingEnabled ? this.escape(this.expressionMap.mainAlias.name) + "." : ""; + var parameterIndex = Object.keys(this.expressionMap.nativeParameters).length; + var whereStrings = normalized.map(function (id, index) { + var whereSubStrings = []; + metadata.primaryColumns.forEach(function (primaryColumn, secondIndex) { + var parameterName = "id_" + index + "_" + secondIndex; + // whereSubStrings.push(alias + this.escape(primaryColumn.databaseName) + "=:id_" + index + "_" + secondIndex); + whereSubStrings.push(alias + _this.escape(primaryColumn.databaseName) + " = " + _this.connection.driver.createParameter(parameterName, parameterIndex)); + _this.expressionMap.nativeParameters[parameterName] = primaryColumn.getEntityValue(id, true); + parameterIndex++; + }); + return whereSubStrings.join(" AND "); + }); + return whereStrings.length > 1 + ? "(" + whereStrings.map(function (whereString) { return "(" + whereString + ")"; }).join(" OR ") + ")" + : whereStrings[0]; + }; + /** + * Computes given where argument - transforms to a where string all forms it can take. + */ + QueryBuilder.prototype.computeWhereParameter = function (where) { + var _this = this; + if (typeof where === "string") + return where; + if (where instanceof Brackets["a" /* Brackets */]) { + var whereQueryBuilder = this.createQueryBuilder(); + whereQueryBuilder.expressionMap.mainAlias = this.expressionMap.mainAlias; + whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = this.expressionMap.aliasNamePrefixingEnabled; + whereQueryBuilder.expressionMap.nativeParameters = this.expressionMap.nativeParameters; + where.whereFactory(whereQueryBuilder); + var whereString = whereQueryBuilder.createWhereExpressionString(); + this.setParameters(whereQueryBuilder.getParameters()); + return whereString ? "(" + whereString + ")" : ""; + } + else if (where instanceof Function) { + return where(this); + } + else if (where instanceof Object) { + var wheres = Array.isArray(where) ? where : [where]; + var andConditions = void 0; + var parameterIndex_1 = Object.keys(this.expressionMap.nativeParameters).length; + if (this.expressionMap.mainAlias.hasMetadata) { + andConditions = wheres.map(function (where, whereIndex) { + var propertyPaths = EntityMetadata["a" /* EntityMetadata */].createPropertyPath(_this.expressionMap.mainAlias.metadata, where); + return propertyPaths.map(function (propertyPath, propertyIndex) { + var columns = _this.expressionMap.mainAlias.metadata.findColumnsWithPropertyPath(propertyPath); + if (!columns.length) { + throw new EntityColumnNotFound["a" /* EntityColumnNotFound */](propertyPath); + } + return columns.map(function (column, columnIndex) { + var aliasPath = _this.expressionMap.aliasNamePrefixingEnabled ? _this.alias + "." + propertyPath : column.propertyPath; + var parameterValue = column.getEntityValue(where, true); + var parameterName = "where_" + whereIndex + "_" + propertyIndex + "_" + columnIndex; + var parameterBaseCount = Object.keys(_this.expressionMap.nativeParameters).filter(function (x) { return x.startsWith(parameterName); }).length; + if (parameterValue === null) { + return aliasPath + " IS NULL"; + } + else if (parameterValue instanceof FindOperator["a" /* FindOperator */]) { + var parameters_1 = []; + if (parameterValue.useParameter) { + if (parameterValue.objectLiteralParameters) { + _this.setParameters(parameterValue.objectLiteralParameters); + } + else { + var realParameterValues = parameterValue.multipleParameters ? parameterValue.value : [parameterValue.value]; + realParameterValues.forEach(function (realParameterValue, realParameterValueIndex) { + _this.expressionMap.nativeParameters[parameterName + (parameterBaseCount + realParameterValueIndex)] = realParameterValue; + parameterIndex_1++; + parameters_1.push(_this.connection.driver.createParameter(parameterName + (parameterBaseCount + realParameterValueIndex), parameterIndex_1 - 1)); + }); + } + } + return _this.computeFindOperatorExpression(parameterValue, aliasPath, parameters_1); + } + else { + _this.expressionMap.nativeParameters[parameterName] = parameterValue; + parameterIndex_1++; + var parameter = _this.connection.driver.createParameter(parameterName, parameterIndex_1 - 1); + return aliasPath + " = " + parameter; + } + }).filter(function (expression) { return !!expression; }).join(" AND "); + }).filter(function (expression) { return !!expression; }).join(" AND "); + }); + } + else { + andConditions = wheres.map(function (where, whereIndex) { + return Object.keys(where).map(function (key, parameterIndex) { + var parameterValue = where[key]; + var aliasPath = _this.expressionMap.aliasNamePrefixingEnabled ? _this.alias + "." + key : key; + if (parameterValue === null) { + return aliasPath + " IS NULL"; + } + else { + var parameterName = "where_" + whereIndex + "_" + parameterIndex; + _this.expressionMap.nativeParameters[parameterName] = parameterValue; + parameterIndex++; + return aliasPath + " = " + _this.connection.driver.createParameter(parameterName, parameterIndex - 1); + } + }).join(" AND "); + }); + } + if (andConditions.length > 1) + return andConditions.map(function (where) { return "(" + where + ")"; }).join(" OR "); + return andConditions.join(""); + } + return ""; + }; + /** + * Gets SQL needs to be inserted into final query. + */ + QueryBuilder.prototype.computeFindOperatorExpression = function (operator, aliasPath, parameters) { + var driver = this.connection.driver; + switch (operator.type) { + case "not": + if (operator.child) { + return "NOT(" + this.computeFindOperatorExpression(operator.child, aliasPath, parameters) + ")"; + } + else { + return aliasPath + " != " + parameters[0]; + } + case "lessThan": + return aliasPath + " < " + parameters[0]; + case "lessThanOrEqual": + return aliasPath + " <= " + parameters[0]; + case "moreThan": + return aliasPath + " > " + parameters[0]; + case "moreThanOrEqual": + return aliasPath + " >= " + parameters[0]; + case "equal": + return aliasPath + " = " + parameters[0]; + case "ilike": + if (driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */] || driver instanceof BrowserDisabledDriversDummy["d" /* CockroachDriver */]) { + return aliasPath + " ILIKE " + parameters[0]; + } + return "UPPER(" + aliasPath + ") LIKE UPPER(" + parameters[0] + ")"; + case "like": + return aliasPath + " LIKE " + parameters[0]; + case "between": + return aliasPath + " BETWEEN " + parameters[0] + " AND " + parameters[1]; + case "in": + if (parameters.length === 0) { + return "0=1"; + } + return aliasPath + " IN (" + parameters.join(", ") + ")"; + case "any": + return aliasPath + " = ANY(" + parameters[0] + ")"; + case "isNull": + return aliasPath + " IS NULL"; + case "raw": + if (operator.getSql) { + return operator.getSql(aliasPath); + } + else { + return aliasPath + " = " + operator.value; + } + } + throw new TypeError("Unsupported FindOperator " + FindOperator["a" /* FindOperator */].constructor.name); + }; + /** + * Creates a query builder used to execute sql queries inside this query builder. + */ + QueryBuilder.prototype.obtainQueryRunner = function () { + return this.queryRunner || this.connection.createQueryRunner(); + }; + return QueryBuilder; +}()); + + +//# sourceMappingURL=QueryBuilder.js.map + + +/***/ }), +/* 41 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SqljsDriver; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _SqljsQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(283); +/* harmony import */ var _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(71); +/* harmony import */ var _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(37); +/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(10); +/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6); + + + + + + + +var SqljsDriver = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(SqljsDriver, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function SqljsDriver(connection) { + var _this = _super.call(this, connection) || this; + // If autoSave is enabled by user, location or autoSaveCallback have to be set + // because either autoSave saves to location or calls autoSaveCallback. + if (_this.options.autoSave && !_this.options.location && !_this.options.autoSaveCallback) { + throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_4__[/* DriverOptionNotSetError */ "a"]("location or autoSaveCallback"); + } + // load sql.js package + _this.loadDependencies(); + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Performs connection to the database. + */ + SqljsDriver.prototype.connect = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var _a; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + _a = this; + return [4 /*yield*/, this.createDatabaseConnection()]; + case 1: + _a.databaseConnection = _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Closes connection with database. + */ + SqljsDriver.prototype.disconnect = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + try { + _this.queryRunner = undefined; + _this.databaseConnection.close(); + ok(); + } + catch (e) { + fail(e); + } + })]; + }); + }); + }; + /** + * Creates a query runner used to execute database queries. + */ + SqljsDriver.prototype.createQueryRunner = function (mode) { + if (!this.queryRunner) + this.queryRunner = new _SqljsQueryRunner__WEBPACK_IMPORTED_MODULE_2__[/* SqljsQueryRunner */ "a"](this); + return this.queryRunner; + }; + /** + * Loads a database from a given file (Node.js), local storage key (browser) or array. + * This will delete the current database! + */ + SqljsDriver.prototype.load = function (fileNameOrLocalStorageOrData, checkIfFileOrLocalStorageExists) { + if (checkIfFileOrLocalStorageExists === void 0) { checkIfFileOrLocalStorageExists = true; } + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var database, localStorageContent; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + if (!(typeof fileNameOrLocalStorageOrData === "string")) return [3 /*break*/, 8]; + if (!(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].type === "node")) return [3 /*break*/, 1]; + // Node.js + // fileNameOrLocalStorageOrData should be a path to the file + if (_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].fileExist(fileNameOrLocalStorageOrData)) { + database = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].readFileSync(fileNameOrLocalStorageOrData); + return [2 /*return*/, this.createDatabaseConnectionWithImport(database)]; + } + else if (checkIfFileOrLocalStorageExists) { + throw new Error("File " + fileNameOrLocalStorageOrData + " does not exist"); + } + else { + // File doesn't exist and checkIfFileOrLocalStorageExists is set to false. + // Therefore open a database without importing an existing file. + // File will be written on first write operation. + return [2 /*return*/, this.createDatabaseConnectionWithImport()]; + } + return [3 /*break*/, 7]; + case 1: + localStorageContent = null; + if (!this.options.useLocalForage) return [3 /*break*/, 5]; + if (!window.localforage) return [3 /*break*/, 3]; + return [4 /*yield*/, window.localforage.getItem(fileNameOrLocalStorageOrData)]; + case 2: + localStorageContent = _a.sent(); + return [3 /*break*/, 4]; + case 3: throw new Error("localforage is not defined - please import localforage.js into your site"); + case 4: return [3 /*break*/, 6]; + case 5: + localStorageContent = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].getGlobalVariable().localStorage.getItem(fileNameOrLocalStorageOrData); + _a.label = 6; + case 6: + if (localStorageContent != null) { + // localStorage value exists. + return [2 /*return*/, this.createDatabaseConnectionWithImport(JSON.parse(localStorageContent))]; + } + else if (checkIfFileOrLocalStorageExists) { + throw new Error("File " + fileNameOrLocalStorageOrData + " does not exist"); + } + else { + // localStorage value doesn't exist and checkIfFileOrLocalStorageExists is set to false. + // Therefore open a database without importing anything. + // localStorage value will be written on first write operation. + return [2 /*return*/, this.createDatabaseConnectionWithImport()]; + } + _a.label = 7; + case 7: return [3 /*break*/, 9]; + case 8: return [2 /*return*/, this.createDatabaseConnectionWithImport(fileNameOrLocalStorageOrData)]; + case 9: return [2 /*return*/]; + } + }); + }); + }; + /** + * Saved the current database to the given file (Node.js), local storage key (browser) or + * indexedDB key (browser with enabled useLocalForage option). + * If no location path is given, the location path in the options (if specified) will be used. + */ + SqljsDriver.prototype.save = function (location) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var path, content, e_1, database, databaseArray; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + if (!location && !this.options.location) { + throw new Error("No location is set, specify a location parameter or add the location option to your configuration"); + } + path = ""; + if (location) { + path = location; + } + else if (this.options.location) { + path = this.options.location; + } + if (!(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].type === "node")) return [3 /*break*/, 5]; + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + content = Buffer.from(this.databaseConnection.export()); + return [4 /*yield*/, _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].writeFile(path, content)]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + throw new Error("Could not save database, error: " + e_1); + case 4: return [3 /*break*/, 10]; + case 5: + database = this.databaseConnection.export(); + databaseArray = [].slice.call(database); + if (!this.options.useLocalForage) return [3 /*break*/, 9]; + if (!window.localforage) return [3 /*break*/, 7]; + return [4 /*yield*/, window.localforage.setItem(path, JSON.stringify(databaseArray))]; + case 6: + _a.sent(); + return [3 /*break*/, 8]; + case 7: throw new Error("localforage is not defined - please import localforage.js into your site"); + case 8: return [3 /*break*/, 10]; + case 9: + _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].getGlobalVariable().localStorage.setItem(path, JSON.stringify(databaseArray)); + _a.label = 10; + case 10: return [2 /*return*/]; + } + }); + }); + }; + /** + * This gets called by the QueryRunner when a change to the database is made. + * If a custom autoSaveCallback is specified, it get's called with the database as Uint8Array, + * otherwise the save method is called which saves it to file (Node.js), local storage (browser) + * or indexedDB (browser with enabled useLocalForage option). + */ + SqljsDriver.prototype.autoSave = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.options.autoSave) return [3 /*break*/, 4]; + if (!this.options.autoSaveCallback) return [3 /*break*/, 2]; + return [4 /*yield*/, this.options.autoSaveCallback(this.export())]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: return [4 /*yield*/, this.save()]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); + }; + /** + * Returns the current database as Uint8Array. + */ + SqljsDriver.prototype.export = function () { + return this.databaseConnection.export(); + }; + /** + * Creates generated map of values generated or returned by database after INSERT query. + */ + SqljsDriver.prototype.createGeneratedMap = function (metadata, insertResult) { + var _this = this; + var generatedMap = metadata.generatedColumns.reduce(function (map, generatedColumn) { + // seems to be the only way to get the inserted id, see https://github.com/kripken/sql.js/issues/77 + if (generatedColumn.isPrimary && generatedColumn.generationStrategy === "increment") { + var query = "SELECT last_insert_rowid()"; + try { + var result = _this.databaseConnection.exec(query); + _this.connection.logger.logQuery(query); + return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_6__[/* OrmUtils */ "a"].mergeDeep(map, generatedColumn.createValueMap(result[0].values[0][0])); + } + catch (e) { + _this.connection.logger.logQueryError(e, query, []); + } + } + return map; + }, {}); + return Object.keys(generatedMap).length > 0 ? generatedMap : undefined; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates connection with the database. + * If the location option is set, the database is loaded first. + */ + SqljsDriver.prototype.createDatabaseConnection = function () { + if (this.options.location) { + return this.load(this.options.location, false); + } + return this.createDatabaseConnectionWithImport(this.options.database); + }; + /** + * Creates connection with an optional database. + * If database is specified it is loaded, otherwise a new empty database is created. + */ + SqljsDriver.prototype.createDatabaseConnectionWithImport = function (database) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var isLegacyVersion, sqlite, _a; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + isLegacyVersion = typeof this.sqlite.Database === "function"; + if (!isLegacyVersion) return [3 /*break*/, 1]; + _a = this.sqlite; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.sqlite(this.options.sqlJsConfig)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + sqlite = _a; + if (database && database.length > 0) { + this.databaseConnection = new sqlite.Database(database); + } + else { + this.databaseConnection = new sqlite.Database(); + } + // Enable foreign keys for database + return [2 /*return*/, new Promise(function (ok, fail) { + try { + _this.databaseConnection.exec("PRAGMA foreign_keys = ON;"); + ok(_this.databaseConnection); + } + catch (e) { + fail(e); + } + })]; + } + }); + }); + }; + /** + * If driver dependency is not given explicitly, then try to load it via "require". + */ + SqljsDriver.prototype.loadDependencies = function () { + if (_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].type === "browser") { + this.sqlite = window.SQL; + } + else { + try { + this.sqlite = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[/* PlatformTools */ "a"].load("sql.js"); + } + catch (e) { + throw new _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_3__[/* DriverPackageNotInstalledError */ "a"]("sql.js", "sql.js"); + } + } + }; + return SqljsDriver; +}(_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__[/* AbstractSqliteDriver */ "a"])); + + +//# sourceMappingURL=SqljsDriver.js.map + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97).Buffer)) + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NativeStoragePromise = void 0; +/** + * Promise-Wrapper-Klasse für Native-Storage + */ + +var Helper_1 = __webpack_require__(7); + +var JsonHelper_1 = __webpack_require__(192); + +var NativeStoragePromise = /*#__PURE__*/function () { + function NativeStoragePromise() { + _classCallCheck(this, NativeStoragePromise); + } + + _createClass(NativeStoragePromise, null, [{ + key: "_isElectron", + value: function _isElectron() { + return (typeof navigator === "undefined" ? "undefined" : _typeof(navigator)) === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0; + } + /** + * Setzt ein Item für NativeStorage + * + * @param key + * @param value + * @returns {Promise<*>} + */ + + }, { + key: "setItem", + value: function setItem(key, value) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this = this; + + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!this.persistent) { + _context.next = 8; + break; + } + + if (!this._isElectron()) { + _context.next = 5; + break; + } + + return _context.abrupt("return", new Promise(function (res, rej) { + return _this.electronStorage.set(_this.prefix + key, value, function (err) { + if (err) { + rej(err); + } else { + res(); + } + }); + })); + + case 5: + return _context.abrupt("return", new Promise(function (res, rej) { + return NativeStorage.setItem(_this.prefix + key, value, res, rej); + })); + + case 6: + _context.next = 9; + break; + + case 8: + this._cache[this.prefix + key] = value; + + case 9: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + /** + * Bekomme ein Item von NativeStorage + * + * @param key + * @param defaultValue? + * @returns {Promise<*>} + */ + + }, { + key: "getItem", + value: function getItem(key, defaultValue) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this2 = this; + + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", new Promise(function (res, rej) { + if (_this2._isElectron()) { + _this2.electronStorage.get(_this2.prefix + key, function (e, data) { + if (e) { + res(Helper_1.Helper.nonNull(_this2._cache[_this2.prefix + key], defaultValue)); + } else { + res(JsonHelper_1.JsonHelper.deepEqual(data, {}) ? defaultValue : data); + } + }); + } else { + NativeStorage.getItem(_this2.prefix + key, function (data) { + return res(Helper_1.Helper.nonNull(data, defaultValue)); + }, function (e) { + res(Helper_1.Helper.nonNull(_this2._cache[_this2.prefix + key], defaultValue)); + }); + } + })); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + /** + * Bekomme die Keys vom NativeStorage + * + * @returns {Promise<*>} + */ + + }, { + key: "keys", + value: function keys() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this3 = this; + + var keys; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + keys = []; + + if (!this.persistent) { + _context3.next = 13; + break; + } + + if (!this._isElectron()) { + _context3.next = 8; + break; + } + + _context3.next = 5; + return new Promise(function (res, rej) { + return _this3.electronStorage.keys(function (err, keys) { + if (err) { + rej(err); + } else { + res(keys); + } + }); + }); + + case 5: + keys = _context3.sent; + _context3.next = 11; + break; + + case 8: + _context3.next = 10; + return new Promise(function (res, rej) { + return NativeStorage.keys(res, rej); + }); + + case 10: + keys = _context3.sent; + + case 11: + _context3.next = 14; + break; + + case 13: + keys = Object.keys(this._cache); + + case 14: + return _context3.abrupt("return", keys.filter(function (key) { + return key.startsWith(_this3.prefix); + })); + + case 15: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + /** + * Entfernt ein Object aus dem NativeStorage + * + * @param key + * @returns {Promise<*>} + */ + + }, { + key: "remove", + value: function remove(key) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this4 = this; + + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + delete this._cache[this.prefix + key]; + + if (!this._isElectron()) { + _context4.next = 5; + break; + } + + return _context4.abrupt("return", new Promise(function (res, rej) { + return _this4.electronStorage.remove(_this4.prefix + key, function (err) { + if (err) { + rej(err); + } else { + res(); + } + }); + })); + + case 5: + return _context4.abrupt("return", new Promise(function (res, rej) { + return NativeStorage.remove(_this4.prefix + key, res, rej); + })); + + case 6: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + /** + * Entfernt alle Objects aus dem NativeStorage + * + * @returns {Promise<*>} + */ + + }, { + key: "clear", + value: function clear() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _this5 = this; + + var keys; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return this.keys(); + + case 2: + keys = _context6.sent; + _context6.next = 5; + return Helper_1.Helper.asyncForEach(keys, function (key) { + return __awaiter(_this5, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return this.remove(key); + + case 2: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + }, true); + + case 5: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "makePersistent", + value: function makePersistent() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var _this6 = this; + + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + if (this.persistent) { + _context8.next = 4; + break; + } + + this.persistent = true; + _context8.next = 4; + return Helper_1.Helper.asyncForEach(Object.keys(this._cache), function (key) { + return __awaiter(_this6, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + _context7.next = 2; + return this.setItem(key, this._cache[key]); + + case 2: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + }, true); + + case 4: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "makeUnpersistent", + value: function makeUnpersistent() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + var _this7 = this; + + var keys, values; + return regeneratorRuntime.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + if (!this.persistent) { + _context10.next = 10; + break; + } + + _context10.next = 3; + return this.keys(); + + case 3: + keys = _context10.sent; + values = {}; + _context10.next = 7; + return Helper_1.Helper.asyncForEach(keys, function (key) { + return __awaiter(_this7, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return this.getItem(key); + + case 2: + values[key] = _context9.sent; + + case 3: + case "end": + return _context9.stop(); + } + } + }, _callee9, this); + })); + }); + + case 7: + this.clear(); + this.persistent = false; + this._cache = values; + + case 10: + case "end": + return _context10.stop(); + } + } + }, _callee10, this); + })); + } + }]); + + return NativeStoragePromise; +}(); + +exports.NativeStoragePromise = NativeStoragePromise; +NativeStoragePromise._cache = {}; +NativeStoragePromise.prefix = ""; +NativeStoragePromise.persistent = true; +NativeStoragePromise.electronStorage = null; + +/***/ }), +/* 43 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TableCheck; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Database's table check constraint stored in this class. + */ +var TableCheck = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TableCheck(options) { + /** + * Column that contains this constraint. + */ + this.columnNames = []; + this.name = options.name; + this.columnNames = options.columnNames; + this.expression = options.expression; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new copy of this constraint with exactly same properties. + */ + TableCheck.prototype.clone = function () { + return new TableCheck({ + name: this.name, + columnNames: this.columnNames ? Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.columnNames)) : [], + expression: this.expression, + }); + }; + // ------------------------------------------------------------------------- + // Static Methods + // ------------------------------------------------------------------------- + /** + * Creates checks from the check metadata object. + */ + TableCheck.create = function (checkMetadata) { + return new TableCheck({ + name: checkMetadata.name, + expression: checkMetadata.expression + }); + }; + return TableCheck; +}()); + + +//# sourceMappingURL=TableCheck.js.map + + +/***/ }), +/* 44 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TransactionNotStartedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when transaction is not started yet and user tries to run commit or rollback. + */ +var TransactionNotStartedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(TransactionNotStartedError, _super); + function TransactionNotStartedError() { + var _this = _super.call(this) || this; + _this.name = "TransactionNotStartedError"; + Object.setPrototypeOf(_this, TransactionNotStartedError.prototype); + _this.message = "Transaction is not started yet, start transaction before committing or rolling it back."; + return _this; + } + return TransactionNotStartedError; +}(Error)); + + +//# sourceMappingURL=TransactionNotStartedError.js.map + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(11); +var hide = __webpack_require__(52); +var has = __webpack_require__(51); +var SRC = __webpack_require__(87)('src'); +var $toString = __webpack_require__(293); +var TO_STRING = 'toString'; +var TPL = ('' + $toString).split(TO_STRING); + +__webpack_require__(26).inspectSource = function (it) { + return $toString.call(it); +}; + +(module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) has(val, 'name') || hide(val, 'name', key); + if (O[key] === val) return; + if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if (O === global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + hide(O, key, val); + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); + + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var fails = __webpack_require__(12); +var defined = __webpack_require__(76); +var quot = /"/g; +// B.2.3.2.1 CreateHTML(string, tag, attribute, value) +var createHTML = function (string, tag, attribute, value) { + var S = String(defined(string)); + var p1 = '<' + tag; + if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; + return p1 + '>' + S + ''; +}; +module.exports = function (NAME, exec) { + var O = {}; + O[NAME] = exec(createHTML); + $export($export.P + $export.F * fails(function () { + var test = ''[NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }), 'String', O); +}; + + +/***/ }), +/* 47 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, "useContainer", function() { return /* reexport */ useContainer; }); +__webpack_require__.d(__webpack_exports__, "getFromContainer", function() { return /* reexport */ getFromContainer; }); +__webpack_require__.d(__webpack_exports__, "CannotReflectMethodParameterTypeError", function() { return /* reexport */ CannotReflectMethodParameterTypeError_CannotReflectMethodParameterTypeError; }); +__webpack_require__.d(__webpack_exports__, "AlreadyHasActiveConnectionError", function() { return /* reexport */ AlreadyHasActiveConnectionError_AlreadyHasActiveConnectionError; }); +__webpack_require__.d(__webpack_exports__, "SubjectWithoutIdentifierError", function() { return /* reexport */ SubjectWithoutIdentifierError_SubjectWithoutIdentifierError; }); +__webpack_require__.d(__webpack_exports__, "CannotConnectAlreadyConnectedError", function() { return /* reexport */ CannotConnectAlreadyConnectedError_CannotConnectAlreadyConnectedError; }); +__webpack_require__.d(__webpack_exports__, "LockNotSupportedOnGivenDriverError", function() { return /* reexport */ LockNotSupportedOnGivenDriverError["a" /* LockNotSupportedOnGivenDriverError */]; }); +__webpack_require__.d(__webpack_exports__, "ConnectionIsNotSetError", function() { return /* reexport */ ConnectionIsNotSetError_ConnectionIsNotSetError; }); +__webpack_require__.d(__webpack_exports__, "CannotCreateEntityIdMapError", function() { return /* reexport */ CannotCreateEntityIdMapError["a" /* CannotCreateEntityIdMapError */]; }); +__webpack_require__.d(__webpack_exports__, "MetadataAlreadyExistsError", function() { return /* reexport */ MetadataAlreadyExistsError_MetadataAlreadyExistsError; }); +__webpack_require__.d(__webpack_exports__, "CannotDetermineEntityError", function() { return /* reexport */ CannotDetermineEntityError_CannotDetermineEntityError; }); +__webpack_require__.d(__webpack_exports__, "UpdateValuesMissingError", function() { return /* reexport */ UpdateValuesMissingError["a" /* UpdateValuesMissingError */]; }); +__webpack_require__.d(__webpack_exports__, "TreeRepositoryNotSupportedError", function() { return /* reexport */ TreeRepositoryNotSupportedError_TreeRepositoryNotSupportedError; }); +__webpack_require__.d(__webpack_exports__, "CustomRepositoryNotFoundError", function() { return /* reexport */ CustomRepositoryNotFoundError_CustomRepositoryNotFoundError; }); +__webpack_require__.d(__webpack_exports__, "TransactionNotStartedError", function() { return /* reexport */ TransactionNotStartedError["a" /* TransactionNotStartedError */]; }); +__webpack_require__.d(__webpack_exports__, "TransactionAlreadyStartedError", function() { return /* reexport */ TransactionAlreadyStartedError["a" /* TransactionAlreadyStartedError */]; }); +__webpack_require__.d(__webpack_exports__, "EntityNotFoundError", function() { return /* reexport */ EntityNotFoundError["a" /* EntityNotFoundError */]; }); +__webpack_require__.d(__webpack_exports__, "EntityMetadataNotFoundError", function() { return /* reexport */ EntityMetadataNotFoundError_EntityMetadataNotFoundError; }); +__webpack_require__.d(__webpack_exports__, "MustBeEntityError", function() { return /* reexport */ MustBeEntityError_MustBeEntityError; }); +__webpack_require__.d(__webpack_exports__, "OptimisticLockVersionMismatchError", function() { return /* reexport */ OptimisticLockVersionMismatchError["a" /* OptimisticLockVersionMismatchError */]; }); +__webpack_require__.d(__webpack_exports__, "LimitOnUpdateNotSupportedError", function() { return /* reexport */ LimitOnUpdateNotSupportedError["a" /* LimitOnUpdateNotSupportedError */]; }); +__webpack_require__.d(__webpack_exports__, "PrimaryColumnCannotBeNullableError", function() { return /* reexport */ PrimaryColumnCannotBeNullableError_PrimaryColumnCannotBeNullableError; }); +__webpack_require__.d(__webpack_exports__, "CustomRepositoryCannotInheritRepositoryError", function() { return /* reexport */ CustomRepositoryCannotInheritRepositoryError_CustomRepositoryCannotInheritRepositoryError; }); +__webpack_require__.d(__webpack_exports__, "QueryRunnerProviderAlreadyReleasedError", function() { return /* reexport */ QueryRunnerProviderAlreadyReleasedError_QueryRunnerProviderAlreadyReleasedError; }); +__webpack_require__.d(__webpack_exports__, "CannotAttachTreeChildrenEntityError", function() { return /* reexport */ CannotAttachTreeChildrenEntityError_CannotAttachTreeChildrenEntityError; }); +__webpack_require__.d(__webpack_exports__, "CustomRepositoryDoesNotHaveEntityError", function() { return /* reexport */ CustomRepositoryDoesNotHaveEntityError_CustomRepositoryDoesNotHaveEntityError; }); +__webpack_require__.d(__webpack_exports__, "MissingDeleteDateColumnError", function() { return /* reexport */ MissingDeleteDateColumnError["a" /* MissingDeleteDateColumnError */]; }); +__webpack_require__.d(__webpack_exports__, "NoConnectionForRepositoryError", function() { return /* reexport */ NoConnectionForRepositoryError_NoConnectionForRepositoryError; }); +__webpack_require__.d(__webpack_exports__, "CircularRelationsError", function() { return /* reexport */ CircularRelationsError_CircularRelationsError; }); +__webpack_require__.d(__webpack_exports__, "ReturningStatementNotSupportedError", function() { return /* reexport */ ReturningStatementNotSupportedError["a" /* ReturningStatementNotSupportedError */]; }); +__webpack_require__.d(__webpack_exports__, "UsingJoinTableIsNotAllowedError", function() { return /* reexport */ UsingJoinTableIsNotAllowedError_UsingJoinTableIsNotAllowedError; }); +__webpack_require__.d(__webpack_exports__, "MissingJoinColumnError", function() { return /* reexport */ MissingJoinColumnError_MissingJoinColumnError; }); +__webpack_require__.d(__webpack_exports__, "MissingPrimaryColumnError", function() { return /* reexport */ MissingPrimaryColumnError_MissingPrimaryColumnError; }); +__webpack_require__.d(__webpack_exports__, "EntityColumnNotFound", function() { return /* reexport */ EntityColumnNotFound["a" /* EntityColumnNotFound */]; }); +__webpack_require__.d(__webpack_exports__, "MissingDriverError", function() { return /* reexport */ MissingDriverError_MissingDriverError; }); +__webpack_require__.d(__webpack_exports__, "DriverPackageNotInstalledError", function() { return /* reexport */ DriverPackageNotInstalledError["a" /* DriverPackageNotInstalledError */]; }); +__webpack_require__.d(__webpack_exports__, "CannotGetEntityManagerNotConnectedError", function() { return /* reexport */ CannotGetEntityManagerNotConnectedError_CannotGetEntityManagerNotConnectedError; }); +__webpack_require__.d(__webpack_exports__, "ConnectionNotFoundError", function() { return /* reexport */ ConnectionNotFoundError_ConnectionNotFoundError; }); +__webpack_require__.d(__webpack_exports__, "NoVersionOrUpdateDateColumnError", function() { return /* reexport */ NoVersionOrUpdateDateColumnError["a" /* NoVersionOrUpdateDateColumnError */]; }); +__webpack_require__.d(__webpack_exports__, "InsertValuesMissingError", function() { return /* reexport */ InsertValuesMissingError["a" /* InsertValuesMissingError */]; }); +__webpack_require__.d(__webpack_exports__, "OptimisticLockCanNotBeUsedError", function() { return /* reexport */ OptimisticLockCanNotBeUsedError["a" /* OptimisticLockCanNotBeUsedError */]; }); +__webpack_require__.d(__webpack_exports__, "MetadataWithSuchNameAlreadyExistsError", function() { return /* reexport */ MetadataWithSuchNameAlreadyExistsError_MetadataWithSuchNameAlreadyExistsError; }); +__webpack_require__.d(__webpack_exports__, "DriverOptionNotSetError", function() { return /* reexport */ DriverOptionNotSetError["a" /* DriverOptionNotSetError */]; }); +__webpack_require__.d(__webpack_exports__, "FindRelationsNotFoundError", function() { return /* reexport */ FindRelationsNotFoundError_FindRelationsNotFoundError; }); +__webpack_require__.d(__webpack_exports__, "RepositoryNotFoundError", function() { return /* reexport */ RepositoryNotFoundError_RepositoryNotFoundError; }); +__webpack_require__.d(__webpack_exports__, "NamingStrategyNotFoundError", function() { return /* reexport */ NamingStrategyNotFoundError_NamingStrategyNotFoundError; }); +__webpack_require__.d(__webpack_exports__, "PessimisticLockTransactionRequiredError", function() { return /* reexport */ PessimisticLockTransactionRequiredError["a" /* PessimisticLockTransactionRequiredError */]; }); +__webpack_require__.d(__webpack_exports__, "RepositoryNotTreeError", function() { return /* reexport */ RepositoryNotTreeError_RepositoryNotTreeError; }); +__webpack_require__.d(__webpack_exports__, "DataTypeNotSupportedError", function() { return /* reexport */ DataTypeNotSupportedError_DataTypeNotSupportedError; }); +__webpack_require__.d(__webpack_exports__, "InitializedRelationError", function() { return /* reexport */ InitializedRelationError_InitializedRelationError; }); +__webpack_require__.d(__webpack_exports__, "MissingJoinTableError", function() { return /* reexport */ MissingJoinTableError_MissingJoinTableError; }); +__webpack_require__.d(__webpack_exports__, "QueryFailedError", function() { return /* reexport */ QueryFailedError["a" /* QueryFailedError */]; }); +__webpack_require__.d(__webpack_exports__, "NoNeedToReleaseEntityManagerError", function() { return /* reexport */ NoNeedToReleaseEntityManagerError_NoNeedToReleaseEntityManagerError; }); +__webpack_require__.d(__webpack_exports__, "UsingJoinColumnOnlyOnOneSideAllowedError", function() { return /* reexport */ UsingJoinColumnOnlyOnOneSideAllowedError_UsingJoinColumnOnlyOnOneSideAllowedError; }); +__webpack_require__.d(__webpack_exports__, "UsingJoinTableOnlyOnOneSideAllowedError", function() { return /* reexport */ UsingJoinTableOnlyOnOneSideAllowedError_UsingJoinTableOnlyOnOneSideAllowedError; }); +__webpack_require__.d(__webpack_exports__, "SubjectRemovedAndUpdatedError", function() { return /* reexport */ SubjectRemovedAndUpdatedError_SubjectRemovedAndUpdatedError; }); +__webpack_require__.d(__webpack_exports__, "PersistedEntityNotFoundError", function() { return /* reexport */ PersistedEntityNotFoundError_PersistedEntityNotFoundError; }); +__webpack_require__.d(__webpack_exports__, "UsingJoinColumnIsNotAllowedError", function() { return /* reexport */ UsingJoinColumnIsNotAllowedError_UsingJoinColumnIsNotAllowedError; }); +__webpack_require__.d(__webpack_exports__, "ColumnTypeUndefinedError", function() { return /* reexport */ ColumnTypeUndefinedError_ColumnTypeUndefinedError; }); +__webpack_require__.d(__webpack_exports__, "QueryRunnerAlreadyReleasedError", function() { return /* reexport */ QueryRunnerAlreadyReleasedError["a" /* QueryRunnerAlreadyReleasedError */]; }); +__webpack_require__.d(__webpack_exports__, "OffsetWithoutLimitNotSupportedError", function() { return /* reexport */ OffsetWithoutLimitNotSupportedError["a" /* OffsetWithoutLimitNotSupportedError */]; }); +__webpack_require__.d(__webpack_exports__, "CannotExecuteNotConnectedError", function() { return /* reexport */ CannotExecuteNotConnectedError_CannotExecuteNotConnectedError; }); +__webpack_require__.d(__webpack_exports__, "NoConnectionOptionError", function() { return /* reexport */ NoConnectionOptionError_NoConnectionOptionError; }); +__webpack_require__.d(__webpack_exports__, "Column", function() { return /* reexport */ Column; }); +__webpack_require__.d(__webpack_exports__, "CreateDateColumn", function() { return /* reexport */ CreateDateColumn; }); +__webpack_require__.d(__webpack_exports__, "DeleteDateColumn", function() { return /* reexport */ DeleteDateColumn; }); +__webpack_require__.d(__webpack_exports__, "PrimaryGeneratedColumn", function() { return /* reexport */ PrimaryGeneratedColumn; }); +__webpack_require__.d(__webpack_exports__, "PrimaryColumn", function() { return /* reexport */ PrimaryColumn; }); +__webpack_require__.d(__webpack_exports__, "UpdateDateColumn", function() { return /* reexport */ UpdateDateColumn; }); +__webpack_require__.d(__webpack_exports__, "VersionColumn", function() { return /* reexport */ VersionColumn; }); +__webpack_require__.d(__webpack_exports__, "ViewColumn", function() { return /* reexport */ ViewColumn; }); +__webpack_require__.d(__webpack_exports__, "ObjectIdColumn", function() { return /* reexport */ ObjectIdColumn; }); +__webpack_require__.d(__webpack_exports__, "AfterInsert", function() { return /* reexport */ AfterInsert; }); +__webpack_require__.d(__webpack_exports__, "AfterLoad", function() { return /* reexport */ AfterLoad; }); +__webpack_require__.d(__webpack_exports__, "AfterRemove", function() { return /* reexport */ AfterRemove; }); +__webpack_require__.d(__webpack_exports__, "AfterUpdate", function() { return /* reexport */ AfterUpdate; }); +__webpack_require__.d(__webpack_exports__, "BeforeInsert", function() { return /* reexport */ BeforeInsert; }); +__webpack_require__.d(__webpack_exports__, "BeforeRemove", function() { return /* reexport */ BeforeRemove; }); +__webpack_require__.d(__webpack_exports__, "BeforeUpdate", function() { return /* reexport */ BeforeUpdate; }); +__webpack_require__.d(__webpack_exports__, "EventSubscriber", function() { return /* reexport */ EventSubscriber; }); +__webpack_require__.d(__webpack_exports__, "JoinColumn", function() { return /* reexport */ JoinColumn; }); +__webpack_require__.d(__webpack_exports__, "JoinTable", function() { return /* reexport */ JoinTable; }); +__webpack_require__.d(__webpack_exports__, "ManyToMany", function() { return /* reexport */ ManyToMany; }); +__webpack_require__.d(__webpack_exports__, "ManyToOne", function() { return /* reexport */ ManyToOne; }); +__webpack_require__.d(__webpack_exports__, "OneToMany", function() { return /* reexport */ OneToMany; }); +__webpack_require__.d(__webpack_exports__, "OneToOne", function() { return /* reexport */ OneToOne; }); +__webpack_require__.d(__webpack_exports__, "RelationCount", function() { return /* reexport */ RelationCount; }); +__webpack_require__.d(__webpack_exports__, "RelationId", function() { return /* reexport */ RelationId; }); +__webpack_require__.d(__webpack_exports__, "Entity", function() { return /* reexport */ Entity; }); +__webpack_require__.d(__webpack_exports__, "ChildEntity", function() { return /* reexport */ ChildEntity; }); +__webpack_require__.d(__webpack_exports__, "TableInheritance", function() { return /* reexport */ TableInheritance; }); +__webpack_require__.d(__webpack_exports__, "ViewEntity", function() { return /* reexport */ ViewEntity; }); +__webpack_require__.d(__webpack_exports__, "Transaction", function() { return /* reexport */ Transaction; }); +__webpack_require__.d(__webpack_exports__, "TransactionManager", function() { return /* reexport */ TransactionManager; }); +__webpack_require__.d(__webpack_exports__, "TransactionRepository", function() { return /* reexport */ TransactionRepository; }); +__webpack_require__.d(__webpack_exports__, "TreeLevelColumn", function() { return /* reexport */ TreeLevelColumn; }); +__webpack_require__.d(__webpack_exports__, "TreeParent", function() { return /* reexport */ TreeParent; }); +__webpack_require__.d(__webpack_exports__, "TreeChildren", function() { return /* reexport */ TreeChildren; }); +__webpack_require__.d(__webpack_exports__, "Tree", function() { return /* reexport */ Tree; }); +__webpack_require__.d(__webpack_exports__, "Index", function() { return /* reexport */ Index; }); +__webpack_require__.d(__webpack_exports__, "Unique", function() { return /* reexport */ Unique; }); +__webpack_require__.d(__webpack_exports__, "Check", function() { return /* reexport */ Check; }); +__webpack_require__.d(__webpack_exports__, "Exclusion", function() { return /* reexport */ Exclusion; }); +__webpack_require__.d(__webpack_exports__, "Generated", function() { return /* reexport */ Generated; }); +__webpack_require__.d(__webpack_exports__, "EntityRepository", function() { return /* reexport */ EntityRepository; }); +__webpack_require__.d(__webpack_exports__, "Any", function() { return /* reexport */ Any; }); +__webpack_require__.d(__webpack_exports__, "Between", function() { return /* reexport */ Between; }); +__webpack_require__.d(__webpack_exports__, "Equal", function() { return /* reexport */ Equal; }); +__webpack_require__.d(__webpack_exports__, "In", function() { return /* reexport */ In["a" /* In */]; }); +__webpack_require__.d(__webpack_exports__, "IsNull", function() { return /* reexport */ IsNull; }); +__webpack_require__.d(__webpack_exports__, "LessThan", function() { return /* reexport */ LessThan; }); +__webpack_require__.d(__webpack_exports__, "LessThanOrEqual", function() { return /* reexport */ LessThanOrEqual; }); +__webpack_require__.d(__webpack_exports__, "ILike", function() { return /* reexport */ ILike; }); +__webpack_require__.d(__webpack_exports__, "Like", function() { return /* reexport */ Like; }); +__webpack_require__.d(__webpack_exports__, "MoreThan", function() { return /* reexport */ MoreThan; }); +__webpack_require__.d(__webpack_exports__, "MoreThanOrEqual", function() { return /* reexport */ MoreThanOrEqual; }); +__webpack_require__.d(__webpack_exports__, "Not", function() { return /* reexport */ Not; }); +__webpack_require__.d(__webpack_exports__, "Raw", function() { return /* reexport */ Raw; }); +__webpack_require__.d(__webpack_exports__, "FindOperator", function() { return /* reexport */ FindOperator["a" /* FindOperator */]; }); +__webpack_require__.d(__webpack_exports__, "FindOptionsUtils", function() { return /* reexport */ FindOptionsUtils_FindOptionsUtils; }); +__webpack_require__.d(__webpack_exports__, "AdvancedConsoleLogger", function() { return /* reexport */ AdvancedConsoleLogger_AdvancedConsoleLogger; }); +__webpack_require__.d(__webpack_exports__, "SimpleConsoleLogger", function() { return /* reexport */ SimpleConsoleLogger; }); +__webpack_require__.d(__webpack_exports__, "DummyLogger", function() { return /* reexport */ DummyLogger; }); +__webpack_require__.d(__webpack_exports__, "FileLogger", function() { return /* reexport */ BrowserFileLoggerDummy_FileLogger; }); +__webpack_require__.d(__webpack_exports__, "EntityMetadata", function() { return /* reexport */ EntityMetadata["a" /* EntityMetadata */]; }); +__webpack_require__.d(__webpack_exports__, "EntityManager", function() { return /* reexport */ EntityManager_EntityManager; }); +__webpack_require__.d(__webpack_exports__, "AbstractRepository", function() { return /* reexport */ AbstractRepository_AbstractRepository; }); +__webpack_require__.d(__webpack_exports__, "Repository", function() { return /* reexport */ Repository_Repository; }); +__webpack_require__.d(__webpack_exports__, "BaseEntity", function() { return /* reexport */ BaseEntity_BaseEntity; }); +__webpack_require__.d(__webpack_exports__, "TreeRepository", function() { return /* reexport */ TreeRepository_TreeRepository; }); +__webpack_require__.d(__webpack_exports__, "MongoDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["e" /* MongoDriver */]; }); +__webpack_require__.d(__webpack_exports__, "MongoQueryRunner", function() { return /* reexport */ BrowserDisabledDriversDummy["g" /* MongoQueryRunner */]; }); +__webpack_require__.d(__webpack_exports__, "MongoRepository", function() { return /* reexport */ BrowserDisabledDriversDummy["h" /* MongoRepository */]; }); +__webpack_require__.d(__webpack_exports__, "PostgresDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["k" /* PostgresDriver */]; }); +__webpack_require__.d(__webpack_exports__, "AuroraDataApiDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]; }); +__webpack_require__.d(__webpack_exports__, "CockroachDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["d" /* CockroachDriver */]; }); +__webpack_require__.d(__webpack_exports__, "AuroraDataApiPostgresDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["b" /* AuroraDataApiPostgresDriver */]; }); +__webpack_require__.d(__webpack_exports__, "SqlServerDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["m" /* SqlServerDriver */]; }); +__webpack_require__.d(__webpack_exports__, "SapDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["l" /* SapDriver */]; }); +__webpack_require__.d(__webpack_exports__, "MysqlDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["i" /* MysqlDriver */]; }); +__webpack_require__.d(__webpack_exports__, "OracleDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["j" /* OracleDriver */]; }); +__webpack_require__.d(__webpack_exports__, "SqliteDriver", function() { return /* reexport */ BrowserDisabledDriversDummy["n" /* SqliteDriver */]; }); +__webpack_require__.d(__webpack_exports__, "BetterSqlite3Driver", function() { return /* reexport */ BrowserDisabledDriversDummy["c" /* BetterSqlite3Driver */]; }); +__webpack_require__.d(__webpack_exports__, "TableCheck", function() { return /* reexport */ TableCheck["a" /* TableCheck */]; }); +__webpack_require__.d(__webpack_exports__, "TableColumn", function() { return /* reexport */ TableColumn["a" /* TableColumn */]; }); +__webpack_require__.d(__webpack_exports__, "TableExclusion", function() { return /* reexport */ TableExclusion["a" /* TableExclusion */]; }); +__webpack_require__.d(__webpack_exports__, "TableForeignKey", function() { return /* reexport */ TableForeignKey["a" /* TableForeignKey */]; }); +__webpack_require__.d(__webpack_exports__, "TableIndex", function() { return /* reexport */ TableIndex["a" /* TableIndex */]; }); +__webpack_require__.d(__webpack_exports__, "TableUnique", function() { return /* reexport */ TableUnique["a" /* TableUnique */]; }); +__webpack_require__.d(__webpack_exports__, "Table", function() { return /* reexport */ Table["a" /* Table */]; }); +__webpack_require__.d(__webpack_exports__, "MssqlParameter", function() { return /* reexport */ MssqlParameter; }); +__webpack_require__.d(__webpack_exports__, "ConnectionOptionsReader", function() { return /* reexport */ BrowserConnectionOptionsReaderDummy_ConnectionOptionsReader; }); +__webpack_require__.d(__webpack_exports__, "Connection", function() { return /* reexport */ Connection_Connection; }); +__webpack_require__.d(__webpack_exports__, "ConnectionManager", function() { return /* reexport */ ConnectionManager_ConnectionManager; }); +__webpack_require__.d(__webpack_exports__, "QueryBuilder", function() { return /* reexport */ QueryBuilder["a" /* QueryBuilder */]; }); +__webpack_require__.d(__webpack_exports__, "SelectQueryBuilder", function() { return /* reexport */ SelectQueryBuilder["SelectQueryBuilder"]; }); +__webpack_require__.d(__webpack_exports__, "DeleteQueryBuilder", function() { return /* reexport */ DeleteQueryBuilder["DeleteQueryBuilder"]; }); +__webpack_require__.d(__webpack_exports__, "InsertQueryBuilder", function() { return /* reexport */ InsertQueryBuilder["InsertQueryBuilder"]; }); +__webpack_require__.d(__webpack_exports__, "UpdateQueryBuilder", function() { return /* reexport */ UpdateQueryBuilder["UpdateQueryBuilder"]; }); +__webpack_require__.d(__webpack_exports__, "RelationQueryBuilder", function() { return /* reexport */ RelationQueryBuilder["RelationQueryBuilder"]; }); +__webpack_require__.d(__webpack_exports__, "Brackets", function() { return /* reexport */ Brackets["a" /* Brackets */]; }); +__webpack_require__.d(__webpack_exports__, "InsertResult", function() { return /* reexport */ InsertResult["a" /* InsertResult */]; }); +__webpack_require__.d(__webpack_exports__, "UpdateResult", function() { return /* reexport */ UpdateResult["a" /* UpdateResult */]; }); +__webpack_require__.d(__webpack_exports__, "DeleteResult", function() { return /* reexport */ DeleteResult["a" /* DeleteResult */]; }); +__webpack_require__.d(__webpack_exports__, "MongoEntityManager", function() { return /* reexport */ BrowserDisabledDriversDummy["f" /* MongoEntityManager */]; }); +__webpack_require__.d(__webpack_exports__, "Migration", function() { return /* reexport */ Migration; }); +__webpack_require__.d(__webpack_exports__, "MigrationExecutor", function() { return /* reexport */ MigrationExecutor_MigrationExecutor; }); +__webpack_require__.d(__webpack_exports__, "DefaultNamingStrategy", function() { return /* reexport */ DefaultNamingStrategy_DefaultNamingStrategy; }); +__webpack_require__.d(__webpack_exports__, "EntitySchema", function() { return /* reexport */ EntitySchema["a" /* EntitySchema */]; }); +__webpack_require__.d(__webpack_exports__, "getMetadataArgsStorage", function() { return /* binding */ getMetadataArgsStorage; }); +__webpack_require__.d(__webpack_exports__, "getConnectionOptions", function() { return /* binding */ getConnectionOptions; }); +__webpack_require__.d(__webpack_exports__, "getConnectionManager", function() { return /* binding */ getConnectionManager; }); +__webpack_require__.d(__webpack_exports__, "createConnection", function() { return /* binding */ createConnection; }); +__webpack_require__.d(__webpack_exports__, "createConnections", function() { return /* binding */ createConnections; }); +__webpack_require__.d(__webpack_exports__, "getConnection", function() { return /* binding */ getConnection; }); +__webpack_require__.d(__webpack_exports__, "getManager", function() { return /* binding */ getManager; }); +__webpack_require__.d(__webpack_exports__, "getMongoManager", function() { return /* binding */ getMongoManager; }); +__webpack_require__.d(__webpack_exports__, "getSqljsManager", function() { return /* binding */ getSqljsManager; }); +__webpack_require__.d(__webpack_exports__, "getRepository", function() { return /* binding */ getRepository; }); +__webpack_require__.d(__webpack_exports__, "getTreeRepository", function() { return /* binding */ getTreeRepository; }); +__webpack_require__.d(__webpack_exports__, "getCustomRepository", function() { return /* binding */ getCustomRepository; }); +__webpack_require__.d(__webpack_exports__, "getMongoRepository", function() { return /* binding */ getMongoRepository; }); +__webpack_require__.d(__webpack_exports__, "createQueryBuilder", function() { return /* binding */ createQueryBuilder; }); + +// EXTERNAL MODULE: ./node_modules/typeorm/node_modules/tslib/tslib.es6.js +var tslib_es6 = __webpack_require__(0); + +// EXTERNAL MODULE: ./node_modules/reflect-metadata/Reflect.js +var reflect_metadata_Reflect = __webpack_require__(478); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/RandomGenerator.js +var RandomGenerator = __webpack_require__(61); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/StringUtils.js +var StringUtils = __webpack_require__(49); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/Table.js +var Table = __webpack_require__(5); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/naming-strategy/DefaultNamingStrategy.js + + + + +/** + * Naming strategy that is used by default. + */ +var DefaultNamingStrategy_DefaultNamingStrategy = /** @class */ (function () { + function DefaultNamingStrategy() { + this.nestedSetColumnNames = { left: "nsleft", right: "nsright" }; + this.materializedPathColumnName = "mpath"; + } + /** + * Normalizes table name. + * + * @param targetName Name of the target entity that can be used to generate a table name. + * @param userSpecifiedName For example if user specified a table name in a decorator, e.g. @Entity("name") + */ + DefaultNamingStrategy.prototype.tableName = function (targetName, userSpecifiedName) { + return userSpecifiedName ? userSpecifiedName : Object(StringUtils["d" /* snakeCase */])(targetName); + }; + /** + * Creates a table name for a junction table of a closure table. + * + * @param originalClosureTableName Name of the closure table which owns this junction table. + */ + DefaultNamingStrategy.prototype.closureJunctionTableName = function (originalClosureTableName) { + return originalClosureTableName + "_closure"; + }; + DefaultNamingStrategy.prototype.columnName = function (propertyName, customName, embeddedPrefixes) { + var name = customName || propertyName; + if (embeddedPrefixes.length) + return Object(StringUtils["a" /* camelCase */])(embeddedPrefixes.join("_")) + Object(StringUtils["e" /* titleCase */])(name); + return name; + }; + DefaultNamingStrategy.prototype.relationName = function (propertyName) { + return propertyName; + }; + DefaultNamingStrategy.prototype.primaryKeyName = function (tableOrName, columnNames) { + // sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays + var clonedColumnNames = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(columnNames)); + clonedColumnNames.sort(); + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + clonedColumnNames.join("_"); + return "PK_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 27); + }; + DefaultNamingStrategy.prototype.uniqueConstraintName = function (tableOrName, columnNames) { + // sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays + var clonedColumnNames = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(columnNames)); + clonedColumnNames.sort(); + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + clonedColumnNames.join("_"); + return "UQ_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 27); + }; + DefaultNamingStrategy.prototype.relationConstraintName = function (tableOrName, columnNames, where) { + // sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays + var clonedColumnNames = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(columnNames)); + clonedColumnNames.sort(); + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + clonedColumnNames.join("_"); + if (where) + key += "_" + where; + return "REL_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 26); + }; + DefaultNamingStrategy.prototype.defaultConstraintName = function (tableOrName, columnName) { + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + columnName; + return "DF_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 27); + }; + DefaultNamingStrategy.prototype.foreignKeyName = function (tableOrName, columnNames, _referencedTablePath, _referencedColumnNames) { + // sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays + var clonedColumnNames = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(columnNames)); + clonedColumnNames.sort(); + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + clonedColumnNames.join("_"); + return "FK_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 27); + }; + DefaultNamingStrategy.prototype.indexName = function (tableOrName, columnNames, where) { + // sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays + var clonedColumnNames = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(columnNames)); + clonedColumnNames.sort(); + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + clonedColumnNames.join("_"); + if (where) + key += "_" + where; + return "IDX_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 26); + }; + DefaultNamingStrategy.prototype.checkConstraintName = function (tableOrName, expression, isEnum) { + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + expression; + var name = "CHK_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 26); + return isEnum ? name + "_ENUM" : name; + }; + DefaultNamingStrategy.prototype.exclusionConstraintName = function (tableOrName, expression) { + var tableName = tableOrName instanceof Table["a" /* Table */] ? tableOrName.name : tableOrName; + var replacedTableName = tableName.replace(".", "_"); + var key = replacedTableName + "_" + expression; + return "XCL_" + RandomGenerator["a" /* RandomGenerator */].sha1(key).substr(0, 26); + }; + DefaultNamingStrategy.prototype.joinColumnName = function (relationName, referencedColumnName) { + return Object(StringUtils["a" /* camelCase */])(relationName + "_" + referencedColumnName); + }; + DefaultNamingStrategy.prototype.joinTableName = function (firstTableName, secondTableName, firstPropertyName, secondPropertyName) { + return Object(StringUtils["d" /* snakeCase */])(firstTableName + "_" + firstPropertyName.replace(/\./gi, "_") + "_" + secondTableName); + }; + DefaultNamingStrategy.prototype.joinTableColumnDuplicationPrefix = function (columnName, index) { + return columnName + "_" + index; + }; + DefaultNamingStrategy.prototype.joinTableColumnName = function (tableName, propertyName, columnName) { + return Object(StringUtils["a" /* camelCase */])(tableName + "_" + (columnName ? columnName : propertyName)); + }; + DefaultNamingStrategy.prototype.joinTableInverseColumnName = function (tableName, propertyName, columnName) { + return this.joinTableColumnName(tableName, propertyName, columnName); + }; + /** + * Adds globally set prefix to the table name. + * This method is executed no matter if prefix was set or not. + * Table name is either user's given table name, either name generated from entity target. + * Note that table name comes here already normalized by #tableName method. + */ + DefaultNamingStrategy.prototype.prefixTableName = function (prefix, tableName) { + return prefix + tableName; + }; + DefaultNamingStrategy.prototype.eagerJoinRelationAlias = function (alias, propertyPath) { + return alias + "_" + propertyPath.replace(".", "_"); + }; + return DefaultNamingStrategy; +}()); + + +//# sourceMappingURL=DefaultNamingStrategy.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CannotExecuteNotConnectedError.js + +/** + * Thrown when consumer tries to execute operation allowed only if connection is opened. + */ +var CannotExecuteNotConnectedError_CannotExecuteNotConnectedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CannotExecuteNotConnectedError, _super); + function CannotExecuteNotConnectedError(connectionName) { + var _this = _super.call(this) || this; + _this.name = "CannotExecuteNotConnectedError"; + Object.setPrototypeOf(_this, CannotExecuteNotConnectedError.prototype); + _this.message = "Cannot execute operation on \"" + connectionName + "\" connection because connection is not yet established."; + return _this; + } + return CannotExecuteNotConnectedError; +}(Error)); + + +//# sourceMappingURL=CannotExecuteNotConnectedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CannotConnectAlreadyConnectedError.js + +/** + * Thrown when consumer tries to connect when he already connected. + */ +var CannotConnectAlreadyConnectedError_CannotConnectAlreadyConnectedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CannotConnectAlreadyConnectedError, _super); + function CannotConnectAlreadyConnectedError(connectionName) { + var _this = _super.call(this) || this; + _this.name = "CannotConnectAlreadyConnectedError"; + Object.setPrototypeOf(_this, CannotConnectAlreadyConnectedError.prototype); + _this.message = "Cannot create a \"" + connectionName + "\" connection because connection to the database already established."; + return _this; + } + return CannotConnectAlreadyConnectedError; +}(Error)); + + +//# sourceMappingURL=CannotConnectAlreadyConnectedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/EntityMetadataNotFoundError.js + + +/** + */ +var EntityMetadataNotFoundError_EntityMetadataNotFoundError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(EntityMetadataNotFoundError, _super); + function EntityMetadataNotFoundError(target) { + var _this = _super.call(this) || this; + _this.name = "EntityMetadataNotFound"; + Object.setPrototypeOf(_this, EntityMetadataNotFoundError.prototype); + var targetName; + if (target instanceof EntitySchema["a" /* EntitySchema */]) { + targetName = target.options.name; + } + else if (typeof target === "function") { + targetName = target.name; + } + else if (typeof target === "object" && "name" in target) { + targetName = target.name; + } + else { + targetName = target; + } + _this.message = "No metadata for \"" + targetName + "\" was found."; + return _this; + } + return EntityMetadataNotFoundError; +}(Error)); + + +//# sourceMappingURL=EntityMetadataNotFoundError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/migration/Migration.js +/** + * Represents entity of the migration in the database. + */ +var Migration = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function Migration(id, timestamp, name, instance) { + this.id = id; + this.timestamp = timestamp; + this.name = name; + this.instance = instance; + } + return Migration; +}()); + + +//# sourceMappingURL=Migration.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js +var BrowserDisabledDriversDummy = __webpack_require__(1); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js +/** + * Sql server driver requires parameter types to be specified fo input parameters used in the query. + * + * @see https://github.com/patriksimek/node-mssql#data-types + */ +var MssqlParameter = /** @class */ (function () { + function MssqlParameter(value, type) { + var params = []; + for (var _i = 2; _i < arguments.length; _i++) { + params[_i - 2] = arguments[_i]; + } + this.value = value; + this.type = type; + // ------------------------------------------------------------------------- + // Public Properties + // ------------------------------------------------------------------------- + this.params = []; + this.params = params || []; + } + return MssqlParameter; +}()); + + +//# sourceMappingURL=MssqlParameter.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/migration/MigrationExecutor.js + + + + + + +/** + * Executes migrations: runs pending and reverts previously executed migrations. + */ +var MigrationExecutor_MigrationExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function MigrationExecutor(connection, queryRunner) { + this.connection = connection; + this.queryRunner = queryRunner; + // ------------------------------------------------------------------------- + // Public Properties + // ------------------------------------------------------------------------- + /** + * Indicates how migrations should be run in transactions. + * all: all migrations are run in a single transaction + * none: all migrations are run without a transaction + * each: each migration is run in a separate transaction + */ + this.transaction = "all"; + var options = this.connection.driver.options; + this.migrationsTableName = connection.options.migrationsTableName || "migrations"; + this.migrationsTable = this.connection.driver.buildTableName(this.migrationsTableName, options.schema, options.database); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Tries to execute a single migration given. + */ + MigrationExecutor.prototype.executeMigration = function (migration) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.withQueryRunner(function (queryRunner) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)]; + case 1: + _a.sent(); + return [4 /*yield*/, migration.instance.up(queryRunner)]; + case 2: + _a.sent(); + return [4 /*yield*/, this.insertExecutedMigration(queryRunner, migration)]; + case 3: + _a.sent(); + return [2 /*return*/, migration]; + } + }); + }); })]; + }); + }); + }; + /** + * Returns an array of all migrations. + */ + MigrationExecutor.prototype.getAllMigrations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, Promise.resolve(this.getMigrations())]; + }); + }); + }; + /** + * Returns an array of all executed migrations. + */ + MigrationExecutor.prototype.getExecutedMigrations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.withQueryRunner(function (queryRunner) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)]; + case 2: return [2 /*return*/, _a.sent()]; + } + }); + }); })]; + }); + }); + }; + /** + * Returns an array of all pending migrations. + */ + MigrationExecutor.prototype.getPendingMigrations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var allMigrations, executedMigrations; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getAllMigrations()]; + case 1: + allMigrations = _a.sent(); + return [4 /*yield*/, this.getExecutedMigrations()]; + case 2: + executedMigrations = _a.sent(); + return [2 /*return*/, allMigrations.filter(function (migration) { + return !executedMigrations.find(function (executedMigration) { + return executedMigration.name === migration.name; + }); + })]; + } + }); + }); + }; + /** + * Inserts an executed migration. + */ + MigrationExecutor.prototype.insertMigration = function (migration) { + var _this = this; + return new Promise(function (resolve, reject) { + _this.withQueryRunner(function (queryRunner) { + _this.insertExecutedMigration(queryRunner, migration) + .then(resolve) + .catch(reject); + }); + }); + }; + /** + * Deletes an executed migration. + */ + MigrationExecutor.prototype.deleteMigration = function (migration) { + var _this = this; + return new Promise(function (resolve, reject) { + _this.withQueryRunner(function (queryRunner) { + _this.deleteExecutedMigration(queryRunner, migration) + .then(resolve) + .catch(reject); + }); + }); + }; + /** + * Lists all migrations and whether they have been executed or not + * returns true if there are unapplied migrations + */ + MigrationExecutor.prototype.showMigrations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var hasUnappliedMigrations, queryRunner, executedMigrations, allMigrations, _loop_1, this_1, allMigrations_1, allMigrations_1_1, migration; + var e_1, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + hasUnappliedMigrations = false; + queryRunner = this.queryRunner || this.connection.createQueryRunner(); + // create migrations table if its not created yet + return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)]; + case 1: + // create migrations table if its not created yet + _b.sent(); + return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)]; + case 2: + executedMigrations = _b.sent(); + allMigrations = this.getMigrations(); + _loop_1 = function (migration) { + var executedMigration = executedMigrations.find(function (executedMigration) { return executedMigration.name === migration.name; }); + if (executedMigration) { + this_1.connection.logger.logSchemaBuild(" [X] " + migration.name); + } + else { + hasUnappliedMigrations = true; + this_1.connection.logger.logSchemaBuild(" [ ] " + migration.name); + } + }; + this_1 = this; + try { + for (allMigrations_1 = Object(tslib_es6["g" /* __values */])(allMigrations), allMigrations_1_1 = allMigrations_1.next(); !allMigrations_1_1.done; allMigrations_1_1 = allMigrations_1.next()) { + migration = allMigrations_1_1.value; + _loop_1(migration); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (allMigrations_1_1 && !allMigrations_1_1.done && (_a = allMigrations_1.return)) _a.call(allMigrations_1); + } + finally { if (e_1) throw e_1.error; } + } + if (!!this.queryRunner) return [3 /*break*/, 4]; + return [4 /*yield*/, queryRunner.release()]; + case 3: + _b.sent(); + _b.label = 4; + case 4: return [2 /*return*/, hasUnappliedMigrations]; + } + }); + }); + }; + /** + * Executes all pending migrations. Pending migrations are migrations that are not yet executed, + * thus not saved in the database. + */ + MigrationExecutor.prototype.executePendingMigrations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, executedMigrations, lastTimeExecutedMigration, allMigrations, successMigrations, pendingMigrations, transactionStartedByUs, _loop_2, this_2, pendingMigrations_1, pendingMigrations_1_1, migration, e_2_1, err_1, rollbackError_1; + var e_2, _a; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + queryRunner = this.queryRunner || this.connection.createQueryRunner(); + // create migrations table if its not created yet + return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)]; + case 1: + // create migrations table if its not created yet + _b.sent(); + return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)]; + case 2: + executedMigrations = _b.sent(); + lastTimeExecutedMigration = this.getLatestTimestampMigration(executedMigrations); + allMigrations = this.getMigrations(); + successMigrations = []; + pendingMigrations = allMigrations.filter(function (migration) { + // check if we already have executed migration + var executedMigration = executedMigrations.find(function (executedMigration) { return executedMigration.name === migration.name; }); + if (executedMigration) + return false; + // migration is new and not executed. now check if its timestamp is correct + // if (lastTimeExecutedMigration && migration.timestamp < lastTimeExecutedMigration.timestamp) + // throw new Error(`New migration found: ${migration.name}, however this migration's timestamp is not valid. Migration's timestamp should not be older then migrations already executed in the database.`); + // every check is passed means that migration was not run yet and we need to run it + return true; + }); + if (!!pendingMigrations.length) return [3 /*break*/, 5]; + this.connection.logger.logSchemaBuild("No migrations are pending"); + if (!!this.queryRunner) return [3 /*break*/, 4]; + return [4 /*yield*/, queryRunner.release()]; + case 3: + _b.sent(); + _b.label = 4; + case 4: return [2 /*return*/, []]; + case 5: + // log information about migration execution + this.connection.logger.logSchemaBuild(executedMigrations.length + " migrations are already loaded in the database."); + this.connection.logger.logSchemaBuild(allMigrations.length + " migrations were found in the source code."); + if (lastTimeExecutedMigration) + this.connection.logger.logSchemaBuild(lastTimeExecutedMigration.name + " is the last executed migration. It was executed on " + new Date(lastTimeExecutedMigration.timestamp).toString() + "."); + this.connection.logger.logSchemaBuild(pendingMigrations.length + " migrations are new migrations that needs to be executed."); + transactionStartedByUs = false; + if (!(this.transaction === "all" && !queryRunner.isTransactionActive)) return [3 /*break*/, 7]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 6: + _b.sent(); + transactionStartedByUs = true; + _b.label = 7; + case 7: + _b.trys.push([7, 18, 23, 26]); + _loop_2 = function (migration) { + return Object(tslib_es6["d" /* __generator */])(this, function (_c) { + switch (_c.label) { + case 0: + if (!(this_2.transaction === "each" && !queryRunner.isTransactionActive)) return [3 /*break*/, 2]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 1: + _c.sent(); + transactionStartedByUs = true; + _c.label = 2; + case 2: return [4 /*yield*/, migration.instance.up(queryRunner) + .then(function () { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: // now when migration is executed we need to insert record about it into the database + return [4 /*yield*/, this.insertExecutedMigration(queryRunner, migration)]; + case 1: + _a.sent(); + if (!(this.transaction === "each" && transactionStartedByUs)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [2 /*return*/]; + } + }); + }); }) + .then(function () { + successMigrations.push(migration); + _this.connection.logger.logSchemaBuild("Migration " + migration.name + " has been executed successfully."); + })]; + case 3: + _c.sent(); + return [2 /*return*/]; + } + }); + }; + this_2 = this; + _b.label = 8; + case 8: + _b.trys.push([8, 13, 14, 15]); + pendingMigrations_1 = Object(tslib_es6["g" /* __values */])(pendingMigrations), pendingMigrations_1_1 = pendingMigrations_1.next(); + _b.label = 9; + case 9: + if (!!pendingMigrations_1_1.done) return [3 /*break*/, 12]; + migration = pendingMigrations_1_1.value; + return [5 /*yield**/, _loop_2(migration)]; + case 10: + _b.sent(); + _b.label = 11; + case 11: + pendingMigrations_1_1 = pendingMigrations_1.next(); + return [3 /*break*/, 9]; + case 12: return [3 /*break*/, 15]; + case 13: + e_2_1 = _b.sent(); + e_2 = { error: e_2_1 }; + return [3 /*break*/, 15]; + case 14: + try { + if (pendingMigrations_1_1 && !pendingMigrations_1_1.done && (_a = pendingMigrations_1.return)) _a.call(pendingMigrations_1); + } + finally { if (e_2) throw e_2.error; } + return [7 /*endfinally*/]; + case 15: + if (!(this.transaction === "all" && transactionStartedByUs)) return [3 /*break*/, 17]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 16: + _b.sent(); + _b.label = 17; + case 17: return [3 /*break*/, 26]; + case 18: + err_1 = _b.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 22]; + _b.label = 19; + case 19: + _b.trys.push([19, 21, , 22]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 20: + _b.sent(); + return [3 /*break*/, 22]; + case 21: + rollbackError_1 = _b.sent(); + return [3 /*break*/, 22]; + case 22: throw err_1; + case 23: + if (!!this.queryRunner) return [3 /*break*/, 25]; + return [4 /*yield*/, queryRunner.release()]; + case 24: + _b.sent(); + _b.label = 25; + case 25: return [7 /*endfinally*/]; + case 26: return [2 /*return*/, successMigrations]; + } + }); + }); + }; + /** + * Reverts last migration that were run. + */ + MigrationExecutor.prototype.undoLastMigration = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, executedMigrations, lastTimeExecutedMigration, allMigrations, migrationToRevert, transactionStartedByUs, err_2, rollbackError_2; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + queryRunner = this.queryRunner || this.connection.createQueryRunner(); + // create migrations table if its not created yet + return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)]; + case 1: + // create migrations table if its not created yet + _a.sent(); + return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)]; + case 2: + executedMigrations = _a.sent(); + lastTimeExecutedMigration = this.getLatestExecutedMigration(executedMigrations); + // if no migrations found in the database then nothing to revert + if (!lastTimeExecutedMigration) { + this.connection.logger.logSchemaBuild("No migrations was found in the database. Nothing to revert!"); + return [2 /*return*/]; + } + allMigrations = this.getMigrations(); + migrationToRevert = allMigrations.find(function (migration) { return migration.name === lastTimeExecutedMigration.name; }); + // if no migrations found in the database then nothing to revert + if (!migrationToRevert) + throw new Error("No migration " + lastTimeExecutedMigration.name + " was found in the source code. Make sure you have this migration in your codebase and its included in the connection options."); + // log information about migration execution + this.connection.logger.logSchemaBuild(executedMigrations.length + " migrations are already loaded in the database."); + this.connection.logger.logSchemaBuild(lastTimeExecutedMigration.name + " is the last executed migration. It was executed on " + new Date(lastTimeExecutedMigration.timestamp).toString() + "."); + this.connection.logger.logSchemaBuild("Now reverting it..."); + transactionStartedByUs = false; + if (!((this.transaction !== "none") && !queryRunner.isTransactionActive)) return [3 /*break*/, 4]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 3: + _a.sent(); + transactionStartedByUs = true; + _a.label = 4; + case 4: + _a.trys.push([4, 9, 14, 17]); + return [4 /*yield*/, migrationToRevert.instance.down(queryRunner)]; + case 5: + _a.sent(); + return [4 /*yield*/, this.deleteExecutedMigration(queryRunner, migrationToRevert)]; + case 6: + _a.sent(); + this.connection.logger.logSchemaBuild("Migration " + migrationToRevert.name + " has been reverted successfully."); + if (!transactionStartedByUs) return [3 /*break*/, 8]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 7: + _a.sent(); + _a.label = 8; + case 8: return [3 /*break*/, 17]; + case 9: + err_2 = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 13]; + _a.label = 10; + case 10: + _a.trys.push([10, 12, , 13]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 11: + _a.sent(); + return [3 /*break*/, 13]; + case 12: + rollbackError_2 = _a.sent(); + return [3 /*break*/, 13]; + case 13: throw err_2; + case 14: + if (!!this.queryRunner) return [3 /*break*/, 16]; + return [4 /*yield*/, queryRunner.release()]; + case 15: + _a.sent(); + _a.label = 16; + case 16: return [7 /*endfinally*/]; + case 17: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates table "migrations" that will store information about executed migrations. + */ + MigrationExecutor.prototype.createMigrationsTableIfNotExist = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var tableExist; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + // If driver is mongo no need to create + if (this.connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */]) { + return [2 /*return*/]; + } + return [4 /*yield*/, queryRunner.hasTable(this.migrationsTable)]; + case 1: + tableExist = _a.sent(); + if (!!tableExist) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.createTable(new Table["a" /* Table */]({ + name: this.migrationsTable, + columns: [ + { + name: "id", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationId }), + isGenerated: true, + generationStrategy: "increment", + isPrimary: true, + isNullable: false + }, + { + name: "timestamp", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }), + isPrimary: false, + isNullable: false + }, + { + name: "name", + type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }), + isNullable: false + }, + ] + }))]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [2 /*return*/]; + } + }); + }); + }; + /** + * Loads all migrations that were executed and saved into the database (sorts by id). + */ + MigrationExecutor.prototype.loadExecutedMigrations = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var mongoRunner, migrationsRaw; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!(this.connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */])) return [3 /*break*/, 2]; + mongoRunner = queryRunner; + return [4 /*yield*/, mongoRunner.databaseConnection + .db(this.connection.driver.database) + .collection(this.migrationsTableName) + .find() + .sort({ "_id": -1 }) + .toArray()]; + case 1: return [2 /*return*/, _a.sent()]; + case 2: return [4 /*yield*/, this.connection.manager + .createQueryBuilder(queryRunner) + .select() + .orderBy(this.connection.driver.escape("id"), "DESC") + .from(this.migrationsTable, this.migrationsTableName) + .getRawMany()]; + case 3: + migrationsRaw = _a.sent(); + return [2 /*return*/, migrationsRaw.map(function (migrationRaw) { + return new Migration(parseInt(migrationRaw["id"]), parseInt(migrationRaw["timestamp"]), migrationRaw["name"]); + })]; + } + }); + }); + }; + /** + * Gets all migrations that setup for this connection. + */ + MigrationExecutor.prototype.getMigrations = function () { + var migrations = this.connection.migrations.map(function (migration) { + var migrationClassName = migration.name || migration.constructor.name; + var migrationTimestamp = parseInt(migrationClassName.substr(-13), 10); + if (!migrationTimestamp || isNaN(migrationTimestamp)) { + throw new Error(migrationClassName + " migration name is wrong. Migration class name should have a JavaScript timestamp appended."); + } + return new Migration(undefined, migrationTimestamp, migrationClassName, migration); + }); + this.checkForDuplicateMigrations(migrations); + // sort them by timestamp + return migrations.sort(function (a, b) { return a.timestamp - b.timestamp; }); + }; + MigrationExecutor.prototype.checkForDuplicateMigrations = function (migrations) { + var migrationNames = migrations.map(function (migration) { return migration.name; }); + var duplicates = Array.from(new Set(migrationNames.filter(function (migrationName, index) { return migrationNames.indexOf(migrationName) < index; }))); + if (duplicates.length > 0) { + throw Error("Duplicate migrations: " + duplicates.join(", ")); + } + }; + /** + * Finds the latest migration (sorts by timestamp) in the given array of migrations. + */ + MigrationExecutor.prototype.getLatestTimestampMigration = function (migrations) { + var sortedMigrations = migrations.map(function (migration) { return migration; }).sort(function (a, b) { return (a.timestamp - b.timestamp) * -1; }); + return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined; + }; + /** + * Finds the latest migration in the given array of migrations. + * PRE: Migration array must be sorted by descending id. + */ + MigrationExecutor.prototype.getLatestExecutedMigration = function (sortedMigrations) { + return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined; + }; + /** + * Inserts new executed migration's data into migrations table. + */ + MigrationExecutor.prototype.insertExecutedMigration = function (queryRunner, migration) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var values, mongoRunner, qb; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + values = {}; + if (this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + values["timestamp"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp })); + values["name"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName })); + } + else { + values["timestamp"] = migration.timestamp; + values["name"] = migration.name; + } + if (!(this.connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */])) return [3 /*break*/, 2]; + mongoRunner = queryRunner; + return [4 /*yield*/, mongoRunner.databaseConnection.db(this.connection.driver.database).collection(this.migrationsTableName).insert(values)]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: + qb = queryRunner.manager.createQueryBuilder(); + return [4 /*yield*/, qb.insert() + .into(this.migrationsTable) + .values(values) + .execute()]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); + }; + /** + * Delete previously executed migration's data from the migrations table. + */ + MigrationExecutor.prototype.deleteExecutedMigration = function (queryRunner, migration) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var conditions, mongoRunner, qb; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + conditions = {}; + if (this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + conditions["timestamp"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp })); + conditions["name"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName })); + } + else { + conditions["timestamp"] = migration.timestamp; + conditions["name"] = migration.name; + } + if (!(this.connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */])) return [3 /*break*/, 2]; + mongoRunner = queryRunner; + return [4 /*yield*/, mongoRunner.databaseConnection.db(this.connection.driver.database).collection(this.migrationsTableName).deleteOne(conditions)]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: + qb = queryRunner.manager.createQueryBuilder(); + return [4 /*yield*/, qb.delete() + .from(this.migrationsTable) + .where(qb.escape("timestamp") + " = :timestamp") + .andWhere(qb.escape("name") + " = :name") + .setParameters(conditions) + .execute()]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); + }; + MigrationExecutor.prototype.withQueryRunner = function (callback) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + queryRunner = this.queryRunner || this.connection.createQueryRunner(); + _a.label = 1; + case 1: + _a.trys.push([1, , 2, 5]); + return [2 /*return*/, callback(queryRunner)]; + case 2: + if (!!this.queryRunner) return [3 /*break*/, 4]; + return [4 /*yield*/, queryRunner.release()]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [7 /*endfinally*/]; + case 5: return [2 /*return*/]; + } + }); + }); + }; + return MigrationExecutor; +}()); + + +//# sourceMappingURL=MigrationExecutor.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/MissingPrimaryColumnError.js + +/** + */ +var MissingPrimaryColumnError_MissingPrimaryColumnError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(MissingPrimaryColumnError, _super); + function MissingPrimaryColumnError(entityMetadata) { + var _this = _super.call(this) || this; + _this.name = "MissingPrimaryColumnError"; + Object.setPrototypeOf(_this, MissingPrimaryColumnError.prototype); + _this.message = "Entity \"" + entityMetadata.name + "\" does not have a primary column. Primary column is required to " + + "have in all your entities. Use @PrimaryColumn decorator to add a primary column to your entity."; + return _this; + } + return MissingPrimaryColumnError; +}(Error)); + + +//# sourceMappingURL=MissingPrimaryColumnError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CircularRelationsError.js + +/** + * Thrown when circular relations detected with nullable set to false. + */ +var CircularRelationsError_CircularRelationsError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CircularRelationsError, _super); + function CircularRelationsError(path) { + var _this = _super.call(this) || this; + _this.name = "CircularRelationsError"; + Object.setPrototypeOf(_this, CircularRelationsError.prototype); + _this.message = "Circular relations detected: " + path + ". To resolve this issue you need to set nullable: true somewhere in this dependency structure."; + return _this; + } + return CircularRelationsError; +}(Error)); + + +//# sourceMappingURL=CircularRelationsError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/util/DepGraph.js +/** + * This source code is from https://github.com/jriecken/dependency-graph + * Just added "any" types here, wrapper everything into exported class. + * We cant use a package itself because we want to package "everything-in-it" for the frontend users of TypeORM. + */ +/** + * A simple dependency graph + */ +/** + * Helper for creating a Depth-First-Search on + * a set of edges. + * + * Detects cycles and throws an Error if one is detected. + * + * @param edges The set of edges to DFS through + * @param leavesOnly Whether to only return "leaf" nodes (ones who have no edges) + * @param result An array in which the results will be populated + */ +function createDFS(edges, leavesOnly, result) { + var currentPath = []; + var visited = {}; + return function DFS(currentNode) { + visited[currentNode] = true; + currentPath.push(currentNode); + edges[currentNode].forEach(function (node) { + if (!visited[node]) { + DFS(node); + } + else if (currentPath.indexOf(node) >= 0) { + currentPath.push(node); + throw new Error("Dependency Cycle Found: " + currentPath.join(" -> ")); + } + }); + currentPath.pop(); + if ((!leavesOnly || edges[currentNode].length === 0) && result.indexOf(currentNode) === -1) { + result.push(currentNode); + } + }; +} +var DepGraph = /** @class */ (function () { + function DepGraph() { + this.nodes = {}; + this.outgoingEdges = {}; // Node -> [Dependency Node] + this.incomingEdges = {}; // Node -> [Dependant Node] + } + /** + * Add a node to the dependency graph. If a node already exists, this method will do nothing. + */ + DepGraph.prototype.addNode = function (node, data) { + if (!this.hasNode(node)) { + // Checking the arguments length allows the user to add a node with undefined data + if (arguments.length === 2) { + this.nodes[node] = data; + } + else { + this.nodes[node] = node; + } + this.outgoingEdges[node] = []; + this.incomingEdges[node] = []; + } + }; + /** + * Remove a node from the dependency graph. If a node does not exist, this method will do nothing. + */ + DepGraph.prototype.removeNode = function (node) { + if (this.hasNode(node)) { + delete this.nodes[node]; + delete this.outgoingEdges[node]; + delete this.incomingEdges[node]; + [this.incomingEdges, this.outgoingEdges].forEach(function (edgeList) { + Object.keys(edgeList).forEach(function (key) { + var idx = edgeList[key].indexOf(node); + if (idx >= 0) { + edgeList[key].splice(idx, 1); + } + }, this); + }); + } + }; + /** + * Check if a node exists in the graph + */ + DepGraph.prototype.hasNode = function (node) { + return this.nodes.hasOwnProperty(node); + }; + /** + * Get the data associated with a node name + */ + DepGraph.prototype.getNodeData = function (node) { + if (this.hasNode(node)) { + return this.nodes[node]; + } + else { + throw new Error("Node does not exist: " + node); + } + }; + /** + * Set the associated data for a given node name. If the node does not exist, this method will throw an error + */ + DepGraph.prototype.setNodeData = function (node, data) { + if (this.hasNode(node)) { + this.nodes[node] = data; + } + else { + throw new Error("Node does not exist: " + node); + } + }; + /** + * Add a dependency between two nodes. If either of the nodes does not exist, + * an Error will be thrown. + */ + DepGraph.prototype.addDependency = function (from, to) { + if (!this.hasNode(from)) { + throw new Error("Node does not exist: " + from); + } + if (!this.hasNode(to)) { + throw new Error("Node does not exist: " + to); + } + if (this.outgoingEdges[from].indexOf(to) === -1) { + this.outgoingEdges[from].push(to); + } + if (this.incomingEdges[to].indexOf(from) === -1) { + this.incomingEdges[to].push(from); + } + return true; + }; + /** + * Remove a dependency between two nodes. + */ + DepGraph.prototype.removeDependency = function (from, to) { + var idx; + if (this.hasNode(from)) { + idx = this.outgoingEdges[from].indexOf(to); + if (idx >= 0) { + this.outgoingEdges[from].splice(idx, 1); + } + } + if (this.hasNode(to)) { + idx = this.incomingEdges[to].indexOf(from); + if (idx >= 0) { + this.incomingEdges[to].splice(idx, 1); + } + } + }; + /** + * Get an array containing the nodes that the specified node depends on (transitively). + * + * Throws an Error if the graph has a cycle, or the specified node does not exist. + * + * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned + * in the array. + */ + DepGraph.prototype.dependenciesOf = function (node, leavesOnly) { + if (this.hasNode(node)) { + var result = []; + var DFS = createDFS(this.outgoingEdges, leavesOnly, result); + DFS(node); + var idx = result.indexOf(node); + if (idx >= 0) { + result.splice(idx, 1); + } + return result; + } + else { + throw new Error("Node does not exist: " + node); + } + }; + /** + * get an array containing the nodes that depend on the specified node (transitively). + * + * Throws an Error if the graph has a cycle, or the specified node does not exist. + * + * If `leavesOnly` is true, only nodes that do not have any dependants will be returned in the array. + */ + DepGraph.prototype.dependantsOf = function (node, leavesOnly) { + if (this.hasNode(node)) { + var result = []; + var DFS = createDFS(this.incomingEdges, leavesOnly, result); + DFS(node); + var idx = result.indexOf(node); + if (idx >= 0) { + result.splice(idx, 1); + } + return result; + } + else { + throw new Error("Node does not exist: " + node); + } + }; + /** + * Construct the overall processing order for the dependency graph. + * + * Throws an Error if the graph has a cycle. + * + * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned. + */ + DepGraph.prototype.overallOrder = function (leavesOnly) { + var self = this; + var result = []; + var keys = Object.keys(this.nodes); + if (keys.length === 0) { + return result; // Empty graph + } + else { + // Look for cycles - we run the DFS starting at all the nodes in case there + // are several disconnected subgraphs inside this dependency graph. + var CycleDFS_1 = createDFS(this.outgoingEdges, false, []); + keys.forEach(function (n) { + CycleDFS_1(n); + }); + var DFS_1 = createDFS(this.outgoingEdges, leavesOnly, result); + // Find all potential starting points (nodes with nothing depending on them) an + // run a DFS starting at these points to get the order + keys.filter(function (node) { + return self.incomingEdges[node].length === 0; + }).forEach(function (n) { + DFS_1(n); + }); + return result; + } + }; + return DepGraph; +}()); + + +//# sourceMappingURL=DepGraph.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/DataTypeNotSupportedError.js + +var DataTypeNotSupportedError_DataTypeNotSupportedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(DataTypeNotSupportedError, _super); + function DataTypeNotSupportedError(column, dataType, database) { + var _this = _super.call(this) || this; + _this.name = "DataTypeNotSupportedError"; + Object.setPrototypeOf(_this, DataTypeNotSupportedError.prototype); + var type = typeof dataType === "string" ? dataType : dataType.name; + _this.message = "Data type \"" + type + "\" in \"" + column.entityMetadata.targetName + "." + column.propertyName + "\" is not supported by \"" + database + "\" database."; + return _this; + } + return DataTypeNotSupportedError; +}(Error)); + + +//# sourceMappingURL=DataTypeNotSupportedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/NoConnectionOptionError.js + +/** + * Thrown when some option is not set in the connection options. + */ +var NoConnectionOptionError_NoConnectionOptionError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(NoConnectionOptionError, _super); + function NoConnectionOptionError(optionName) { + var _this = _super.call(this) || this; + Object.setPrototypeOf(_this, NoConnectionOptionError.prototype); + _this.message = "Option \"" + optionName + "\" is not set in your connection options, please define \"" + optionName + "\" option in your connection options or ormconfig.json"; + return _this; + } + return NoConnectionOptionError; +}(Error)); + + +//# sourceMappingURL=NoConnectionOptionError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/InitializedRelationError.js + +/** + * Thrown when relation has array initialized which is forbidden my ORM. + * + * @see https://github.com/typeorm/typeorm/issues/1319 + * @see http://typeorm.io/#/relations-faq/avoid-relation-property-initializers + */ +var InitializedRelationError_InitializedRelationError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(InitializedRelationError, _super); + function InitializedRelationError(relation) { + var _this = _super.call(this) || this; + Object.setPrototypeOf(_this, InitializedRelationError.prototype); + _this.message = "Array initializations are not allowed in entity relations. " + + ("Please remove array initialization (= []) from \"" + relation.entityMetadata.targetName + "#" + relation.propertyPath + "\". ") + + "This is ORM requirement to make relations to work properly. Refer docs for more information."; + return _this; + } + return InitializedRelationError; +}(Error)); + + +//# sourceMappingURL=InitializedRelationError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata-builder/EntityMetadataValidator.js + + + + + + + + + + +/// todo: add check if there are multiple tables with the same name +/// todo: add checks when generated column / table names are too long for the specific driver +// todo: type in function validation, inverse side function validation +// todo: check on build for duplicate names, since naming checking was removed from MetadataStorage +// todo: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns? +// todo: check if multiple tree parent metadatas in validator +// todo: tree decorators can be used only on closure table (validation) +// todo: throw error if parent tree metadata was not specified in a closure table +// todo: MetadataArgsStorage: type in function validation, inverse side function validation +// todo: MetadataArgsStorage: check on build for duplicate names, since naming checking was removed from MetadataStorage +// todo: MetadataArgsStorage: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns? +// todo: MetadataArgsStorage: check for duplicate targets too since this check has been removed too +// todo: check if relation decorator contains primary: true and nullable: true +// todo: check column length, precision. scale +// todo: MySQL index can be unique or spatial or fulltext +/** + * Validates built entity metadatas. + */ +var EntityMetadataValidator_EntityMetadataValidator = /** @class */ (function () { + function EntityMetadataValidator() { + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Validates all given entity metadatas. + */ + EntityMetadataValidator.prototype.validateMany = function (entityMetadatas, driver) { + var _this = this; + entityMetadatas.forEach(function (entityMetadata) { return _this.validate(entityMetadata, entityMetadatas, driver); }); + this.validateDependencies(entityMetadatas); + this.validateEagerRelations(entityMetadatas); + }; + /** + * Validates given entity metadata. + */ + EntityMetadataValidator.prototype.validate = function (entityMetadata, allEntityMetadatas, driver) { + // check if table metadata has an id + if (!entityMetadata.primaryColumns.length && !entityMetadata.isJunction) + throw new MissingPrimaryColumnError_MissingPrimaryColumnError(entityMetadata); + // validate if table is using inheritance it has a discriminator + // also validate if discriminator values are not empty and not repeated + if (entityMetadata.inheritancePattern === "STI" || entityMetadata.tableType === "entity-child") { + if (!entityMetadata.discriminatorColumn) + throw new Error("Entity " + entityMetadata.name + " using single-table inheritance, it should also have a discriminator column. Did you forget to put discriminator column options?"); + if (typeof entityMetadata.discriminatorValue === "undefined") + throw new Error("Entity " + entityMetadata.name + " has an undefined discriminator value. Discriminator value should be defined."); + var sameDiscriminatorValueEntityMetadata = allEntityMetadatas.find(function (metadata) { + return metadata !== entityMetadata + && (metadata.inheritancePattern === "STI" || metadata.tableType === "entity-child") + && metadata.discriminatorValue === entityMetadata.discriminatorValue + && metadata.inheritanceTree.some(function (parent) { return entityMetadata.inheritanceTree.indexOf(parent) !== -1; }); + }); + if (sameDiscriminatorValueEntityMetadata) + throw new Error("Entities " + entityMetadata.name + " and " + sameDiscriminatorValueEntityMetadata.name + " have the same discriminator values. Make sure they are different while using the @ChildEntity decorator."); + } + entityMetadata.relationCounts.forEach(function (relationCount) { + if (relationCount.relation.isManyToOne || relationCount.relation.isOneToOne) + throw new Error("Relation count can not be implemented on ManyToOne or OneToOne relations."); + }); + if (!(driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */])) { + entityMetadata.columns.forEach(function (column) { + var normalizedColumn = driver.normalizeType(column); + if (driver.supportedDataTypes.indexOf(normalizedColumn) === -1) + throw new DataTypeNotSupportedError_DataTypeNotSupportedError(column, normalizedColumn, driver.options.type); + if (column.length && driver.withLengthColumnTypes.indexOf(normalizedColumn) === -1) + throw new Error("Column " + column.propertyName + " of Entity " + entityMetadata.name + " does not support length property."); + if (column.type === "enum" && !column.enum && !column.enumName) + throw new Error("Column \"" + column.propertyName + "\" of Entity \"" + entityMetadata.name + "\" is defined as enum, but missing \"enum\" or \"enumName\" properties."); + }); + } + if (driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) { + var generatedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated && column.generationStrategy !== "uuid"; }); + if (generatedColumns.length > 1) + throw new Error("Error in " + entityMetadata.name + " entity. There can be only one auto-increment column in MySql table."); + } + // for mysql we are able to not define a default selected database, instead all entities can have their database + // defined in their decorators. To make everything work either all entities must have database define and we + // can live without database set in the connection options, either database in the connection options must be set + if (driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */]) { + var metadatasWithDatabase = allEntityMetadatas.filter(function (metadata) { return metadata.database; }); + if (metadatasWithDatabase.length === 0 && !driver.database) + throw new NoConnectionOptionError_NoConnectionOptionError("database"); + } + if (driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + var charsetColumns = entityMetadata.columns.filter(function (column) { return column.charset; }); + if (charsetColumns.length > 1) + throw new Error("Character set specifying is not supported in Sql Server"); + } + // check if relations are all without initialized properties + var entityInstance = entityMetadata.create(); + entityMetadata.relations.forEach(function (relation) { + if (relation.isManyToMany || relation.isOneToMany) { + // we skip relations for which persistence is disabled since initialization in them cannot harm somehow + if (relation.persistenceEnabled === false) + return; + // get entity relation value and check if its an array + var relationInitializedValue = relation.getEntityValue(entityInstance); + if (Array.isArray(relationInitializedValue)) + throw new InitializedRelationError_InitializedRelationError(relation); + } + }); + // validate relations + entityMetadata.relations.forEach(function (relation) { + // check join tables: + // using JoinTable is possible only on one side of the many-to-many relation + // todo(dima): fix + // if (relation.joinTable) { + // if (!relation.isManyToMany) + // throw new UsingJoinTableIsNotAllowedError(entityMetadata, relation); + // // if there is inverse side of the relation, then check if it does not have join table too + // if (relation.hasInverseSide && relation.inverseRelation.joinTable) + // throw new UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation); + // } + // check join columns: + // using JoinColumn is possible only on one side of the relation and on one-to-one, many-to-one relation types + // first check if relation is one-to-one or many-to-one + // todo(dima): fix + /*if (relation.joinColumn) { + + // join column can be applied only on one-to-one and many-to-one relations + if (!relation.isOneToOne && !relation.isManyToOne) + throw new UsingJoinColumnIsNotAllowedError(entityMetadata, relation); + + // if there is inverse side of the relation, then check if it does not have join table too + if (relation.hasInverseSide && relation.inverseRelation.joinColumn && relation.isOneToOne) + throw new UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation); + + // check if join column really has referenced column + if (relation.joinColumn && !relation.joinColumn.referencedColumn) + throw new Error(`Join column does not have referenced column set`); + + } + + // if its a one-to-one relation and JoinColumn is missing on both sides of the relation + // or its one-side relation without JoinColumn we should give an error + if (!relation.joinColumn && relation.isOneToOne && (!relation.hasInverseSide || !relation.inverseRelation.joinColumn)) + throw new MissingJoinColumnError(entityMetadata, relation);*/ + // if its a many-to-many relation and JoinTable is missing on both sides of the relation + // or its one-side relation without JoinTable we should give an error + // todo(dima): fix it + // if (!relation.joinTable && relation.isManyToMany && (!relation.hasInverseSide || !relation.inverseRelation.joinTable)) + // throw new MissingJoinTableError(entityMetadata, relation); + // todo: validate if its one-to-one and side which does not have join column MUST have inverse side + // todo: validate if its many-to-many and side which does not have join table MUST have inverse side + // todo: if there is a relation, and inverse side is specified only on one side, shall we give error + // todo: with message like: "Inverse side is specified only on one side of the relationship. Specify on other side too to prevent confusion". + // todo: add validation if there two entities with the same target, and show error message with description of the problem (maybe file was renamed/moved but left in output directory) + // todo: check if there are multiple columns on the same column applied. + // todo: check column type if is missing in relational databases (throw new Error(`Column type of ${type} cannot be determined.`);) + // todo: include driver-specific checks. for example in mongodb empty prefixes are not allowed + // todo: if multiple columns with same name - throw exception, including cases when columns are in embeds with same prefixes or without prefix at all + // todo: if multiple primary key used, at least one of them must be unique or @Index decorator must be set on entity + // todo: check if entity with duplicate names, some decorators exist + }); + // make sure cascade remove is not set for both sides of relationships (can be set in OneToOne decorators) + entityMetadata.relations.forEach(function (relation) { + var isCircularCascadeRemove = relation.isCascadeRemove && relation.inverseRelation && relation.inverseRelation.isCascadeRemove; + if (isCircularCascadeRemove) + throw new Error("Relation " + entityMetadata.name + "#" + relation.propertyName + " and " + relation.inverseRelation.entityMetadata.name + "#" + relation.inverseRelation.propertyName + " both has cascade remove set. " + + "This may lead to unexpected circular removals. Please set cascade remove only from one side of relationship."); + }); // todo: maybe better just deny removal from one to one relation without join column? + entityMetadata.eagerRelations.forEach(function (relation) { + }); + }; + /** + * Validates dependencies of the entity metadatas. + */ + EntityMetadataValidator.prototype.validateDependencies = function (entityMetadatas) { + var graph = new DepGraph(); + entityMetadatas.forEach(function (entityMetadata) { + graph.addNode(entityMetadata.name); + }); + entityMetadatas.forEach(function (entityMetadata) { + entityMetadata.relationsWithJoinColumns + .filter(function (relation) { return !relation.isNullable; }) + .forEach(function (relation) { + graph.addDependency(entityMetadata.name, relation.inverseEntityMetadata.name); + }); + }); + try { + graph.overallOrder(); + } + catch (err) { + throw new CircularRelationsError_CircularRelationsError(err.toString().replace("Error: Dependency Cycle Found: ", "")); + } + }; + /** + * Validates eager relations to prevent circular dependency in them. + */ + EntityMetadataValidator.prototype.validateEagerRelations = function (entityMetadatas) { + entityMetadatas.forEach(function (entityMetadata) { + entityMetadata.eagerRelations.forEach(function (relation) { + if (relation.inverseRelation && relation.inverseRelation.isEager) + throw new Error("Circular eager relations are disallowed. " + + (entityMetadata.targetName + "#" + relation.propertyPath + " contains \"eager: true\", and its inverse side ") + + (relation.inverseEntityMetadata.targetName + "#" + relation.inverseRelation.propertyPath + " contains \"eager: true\" as well.") + + " Remove \"eager: true\" from one side of the relation."); + }); + }); + }; + return EntityMetadataValidator; +}()); + + +//# sourceMappingURL=EntityMetadataValidator.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js + +/** + * Thrown when consumer tries to use query runner from query runner provider after it was released. + */ +var QueryRunnerProviderAlreadyReleasedError_QueryRunnerProviderAlreadyReleasedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(QueryRunnerProviderAlreadyReleasedError, _super); + function QueryRunnerProviderAlreadyReleasedError() { + var _this = _super.call(this) || this; + _this.name = "QueryRunnerProviderAlreadyReleasedError"; + Object.setPrototypeOf(_this, QueryRunnerProviderAlreadyReleasedError.prototype); + _this.message = "Database connection provided by a query runner was already released, cannot continue to use its querying methods anymore."; + return _this; + } + return QueryRunnerProviderAlreadyReleasedError; +}(Error)); + + +//# sourceMappingURL=QueryRunnerProviderAlreadyReleasedError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/EntityNotFoundError.js +var EntityNotFoundError = __webpack_require__(113); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/NoNeedToReleaseEntityManagerError.js + +/** + * Thrown when consumer tries to release entity manager that does not use single database connection. + */ +var NoNeedToReleaseEntityManagerError_NoNeedToReleaseEntityManagerError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(NoNeedToReleaseEntityManagerError, _super); + function NoNeedToReleaseEntityManagerError() { + var _this = _super.call(this) || this; + _this.name = "NoNeedToReleaseEntityManagerError"; + Object.setPrototypeOf(_this, NoNeedToReleaseEntityManagerError.prototype); + _this.message = "Entity manager is not using single database connection and cannot be released. " + + "Only entity managers created by connection#createEntityManagerWithSingleDatabaseConnection " + + "methods have a single database connection and they should be released."; + return _this; + } + return NoNeedToReleaseEntityManagerError; +}(Error)); + + +//# sourceMappingURL=NoNeedToReleaseEntityManagerError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/repository/Repository.js + +/** + * Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc. + */ +var Repository_Repository = /** @class */ (function () { + function Repository() { + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new query builder that can be used to build a sql query. + */ + Repository.prototype.createQueryBuilder = function (alias, queryRunner) { + return this.manager.createQueryBuilder(this.metadata.target, alias || this.metadata.targetName, queryRunner || this.queryRunner); + }; + Object.defineProperty(Repository.prototype, "target", { + /** + * Returns object that is managed by this repository. + * If this repository manages entity from schema, + * then it returns a name of that schema instead. + */ + get: function () { + return this.metadata.target; + }, + enumerable: false, + configurable: true + }); + /** + * Checks if entity has an id. + * If entity composite compose ids, it will check them all. + */ + Repository.prototype.hasId = function (entity) { + return this.manager.hasId(this.metadata.target, entity); + }; + /** + * Gets entity mixed id. + */ + Repository.prototype.getId = function (entity) { + return this.manager.getId(this.metadata.target, entity); + }; + /** + * Creates a new entity instance or instances. + * Can copy properties from the given object into new entities. + */ + Repository.prototype.create = function (plainEntityLikeOrPlainEntityLikes) { + return this.manager.create(this.metadata.target, plainEntityLikeOrPlainEntityLikes); + }; + /** + * Merges multiple entities (or entity-like objects) into a given entity. + */ + Repository.prototype.merge = function (mergeIntoEntity) { + var _a; + var entityLikes = []; + for (var _i = 1; _i < arguments.length; _i++) { + entityLikes[_i - 1] = arguments[_i]; + } + return (_a = this.manager).merge.apply(_a, Object(tslib_es6["f" /* __spreadArray */])([this.metadata.target, mergeIntoEntity], Object(tslib_es6["e" /* __read */])(entityLikes))); + }; + /** + * Creates a new entity from the given plain javascript object. If entity already exist in the database, then + * it loads it (and everything related to it), replaces all values with the new ones from the given object + * and returns this new entity. This new entity is actually a loaded from the db entity with all properties + * replaced from the new object. + * + * Note that given entity-like object must have an entity id / primary key to find entity by. + * Returns undefined if entity with given id was not found. + */ + Repository.prototype.preload = function (entityLike) { + return this.manager.preload(this.metadata.target, entityLike); + }; + /** + * Saves one or many given entities. + */ + Repository.prototype.save = function (entityOrEntities, options) { + return this.manager.save(this.metadata.target, entityOrEntities, options); + }; + /** + * Removes one or many given entities. + */ + Repository.prototype.remove = function (entityOrEntities, options) { + return this.manager.remove(this.metadata.target, entityOrEntities, options); + }; + /** + * Records the delete date of one or many given entities. + */ + Repository.prototype.softRemove = function (entityOrEntities, options) { + return this.manager.softRemove(this.metadata.target, entityOrEntities, options); + }; + /** + * Recovers one or many given entities. + */ + Repository.prototype.recover = function (entityOrEntities, options) { + return this.manager.recover(this.metadata.target, entityOrEntities, options); + }; + /** + * Inserts a given entity into the database. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient INSERT query. + * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted. + */ + Repository.prototype.insert = function (entity) { + return this.manager.insert(this.metadata.target, entity); + }; + /** + * Updates entity partially. Entity can be found by a given conditions. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient UPDATE query. + * Does not check if entity exist in the database. + */ + Repository.prototype.update = function (criteria, partialEntity) { + return this.manager.update(this.metadata.target, criteria, partialEntity); + }; + /** + * Deletes entities by a given criteria. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient DELETE query. + * Does not check if entity exist in the database. + */ + Repository.prototype.delete = function (criteria) { + return this.manager.delete(this.metadata.target, criteria); + }; + /** + * Records the delete date of entities by a given criteria. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient SOFT-DELETE query. + * Does not check if entity exist in the database. + */ + Repository.prototype.softDelete = function (criteria) { + return this.manager.softDelete(this.metadata.target, criteria); + }; + /** + * Restores entities by a given criteria. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient SOFT-DELETE query. + * Does not check if entity exist in the database. + */ + Repository.prototype.restore = function (criteria) { + return this.manager.restore(this.metadata.target, criteria); + }; + /** + * Counts entities that match given find options or conditions. + */ + Repository.prototype.count = function (optionsOrConditions) { + return this.manager.count(this.metadata.target, optionsOrConditions); + }; + /** + * Finds entities that match given find options or conditions. + */ + Repository.prototype.find = function (optionsOrConditions) { + return this.manager.find(this.metadata.target, optionsOrConditions); + }; + /** + * Finds entities that match given find options or conditions. + * Also counts all entities that match given conditions, + * but ignores pagination settings (from and take options). + */ + Repository.prototype.findAndCount = function (optionsOrConditions) { + return this.manager.findAndCount(this.metadata.target, optionsOrConditions); + }; + /** + * Finds entities by ids. + * Optionally find options can be applied. + */ + Repository.prototype.findByIds = function (ids, optionsOrConditions) { + return this.manager.findByIds(this.metadata.target, ids, optionsOrConditions); + }; + /** + * Finds first entity that matches given conditions. + */ + Repository.prototype.findOne = function (optionsOrConditions, maybeOptions) { + return this.manager.findOne(this.metadata.target, optionsOrConditions, maybeOptions); + }; + /** + * Finds first entity that matches given conditions. + */ + Repository.prototype.findOneOrFail = function (optionsOrConditions, maybeOptions) { + return this.manager.findOneOrFail(this.metadata.target, optionsOrConditions, maybeOptions); + }; + /** + * Executes a raw SQL query and returns a raw database results. + * Raw query execution is supported only by relational databases (MongoDB is not supported). + */ + Repository.prototype.query = function (query, parameters) { + return this.manager.query(query, parameters); + }; + /** + * Clears all the data from the given table/collection (truncates/drops it). + * + * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms. + * @see https://stackoverflow.com/a/5972738/925151 + */ + Repository.prototype.clear = function () { + return this.manager.clear(this.metadata.target); + }; + /** + * Increments some column by provided value of the entities matched given conditions. + */ + Repository.prototype.increment = function (conditions, propertyPath, value) { + return this.manager.increment(this.metadata.target, conditions, propertyPath, value); + }; + /** + * Decrements some column by provided value of the entities matched given conditions. + */ + Repository.prototype.decrement = function (conditions, propertyPath, value) { + return this.manager.decrement(this.metadata.target, conditions, propertyPath, value); + }; + return Repository; +}()); + + +//# sourceMappingURL=Repository.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js + 1 modules +var AbstractSqliteDriver = __webpack_require__(16); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/repository/TreeRepository.js + + + +/** + * Repository with additional functions to work with trees. + * + * @see Repository + */ +var TreeRepository_TreeRepository = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(TreeRepository, _super); + function TreeRepository() { + return _super !== null && _super.apply(this, arguments) || this; + } + // todo: implement moving + // todo: implement removing + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Gets complete trees for all roots in the table. + */ + TreeRepository.prototype.findTrees = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var roots; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.findRoots()]; + case 1: + roots = _a.sent(); + return [4 /*yield*/, Promise.all(roots.map(function (root) { return _this.findDescendantsTree(root); }))]; + case 2: + _a.sent(); + return [2 /*return*/, roots]; + } + }); + }); + }; + /** + * Roots are entities that have no ancestors. Finds them all. + */ + TreeRepository.prototype.findRoots = function () { + var _this = this; + var escapeAlias = function (alias) { return _this.manager.connection.driver.escape(alias); }; + var escapeColumn = function (column) { return _this.manager.connection.driver.escape(column); }; + var parentPropertyName = this.manager.connection.namingStrategy.joinColumnName(this.metadata.treeParentRelation.propertyName, this.metadata.primaryColumns[0].propertyName); + return this.createQueryBuilder("treeEntity") + .where(escapeAlias("treeEntity") + "." + escapeColumn(parentPropertyName) + " IS NULL") + .getMany(); + }; + /** + * Gets all children (descendants) of the given entity. Returns them all in a flat array. + */ + TreeRepository.prototype.findDescendants = function (entity) { + return this + .createDescendantsQueryBuilder("treeEntity", "treeClosure", entity) + .getMany(); + }; + /** + * Gets all children (descendants) of the given entity. Returns them in a tree - nested into each other. + */ + TreeRepository.prototype.findDescendantsTree = function (entity) { + var _this = this; + // todo: throw exception if there is no column of this relation? + return this + .createDescendantsQueryBuilder("treeEntity", "treeClosure", entity) + .getRawAndEntities() + .then(function (entitiesAndScalars) { + var relationMaps = _this.createRelationMaps("treeEntity", entitiesAndScalars.raw); + _this.buildChildrenEntityTree(entity, entitiesAndScalars.entities, relationMaps); + return entity; + }); + }; + /** + * Gets number of descendants of the entity. + */ + TreeRepository.prototype.countDescendants = function (entity) { + return this + .createDescendantsQueryBuilder("treeEntity", "treeClosure", entity) + .getCount(); + }; + /** + * Creates a query builder used to get descendants of the entities in a tree. + */ + TreeRepository.prototype.createDescendantsQueryBuilder = function (alias, closureTableAlias, entity) { + var _this = this; + // create shortcuts for better readability + var escape = function (alias) { return _this.manager.connection.driver.escape(alias); }; + if (this.metadata.treeType === "closure-table") { + var joinCondition = this.metadata.closureJunctionTable.descendantColumns.map(function (column) { + return escape(closureTableAlias) + "." + escape(column.propertyPath) + " = " + escape(alias) + "." + escape(column.referencedColumn.propertyPath); + }).join(" AND "); + var parameters_1 = {}; + var whereCondition = this.metadata.closureJunctionTable.ancestorColumns.map(function (column) { + parameters_1[column.referencedColumn.propertyName] = column.referencedColumn.getEntityValue(entity); + return escape(closureTableAlias) + "." + escape(column.propertyPath) + " = :" + column.referencedColumn.propertyName; + }).join(" AND "); + return this + .createQueryBuilder(alias) + .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition) + .where(whereCondition) + .setParameters(parameters_1); + } + else if (this.metadata.treeType === "nested-set") { + var whereCondition = alias + "." + this.metadata.nestedSetLeftColumn.propertyPath + " BETWEEN " + + "joined." + this.metadata.nestedSetLeftColumn.propertyPath + " AND joined." + this.metadata.nestedSetRightColumn.propertyPath; + var parameters_2 = {}; + var joinCondition = this.metadata.treeParentRelation.joinColumns.map(function (joinColumn) { + var parameterName = joinColumn.referencedColumn.propertyPath.replace(".", "_"); + parameters_2[parameterName] = joinColumn.referencedColumn.getEntityValue(entity); + return "joined." + joinColumn.referencedColumn.propertyPath + " = :" + parameterName; + }).join(" AND "); + return this + .createQueryBuilder(alias) + .innerJoin(this.metadata.targetName, "joined", whereCondition) + .where(joinCondition, parameters_2); + } + else if (this.metadata.treeType === "materialized-path") { + return this + .createQueryBuilder(alias) + .where(function (qb) { + var subQuery = qb.subQuery() + .select(_this.metadata.targetName + "." + _this.metadata.materializedPathColumn.propertyPath, "path") + .from(_this.metadata.target, _this.metadata.targetName) + .whereInIds(_this.metadata.getEntityIdMap(entity)); + qb.setNativeParameters(subQuery.expressionMap.nativeParameters); + if (_this.manager.connection.driver instanceof AbstractSqliteDriver["a" /* AbstractSqliteDriver */]) { + return alias + "." + _this.metadata.materializedPathColumn.propertyPath + " LIKE " + subQuery.getQuery() + " || '%'"; + } + else { + return alias + "." + _this.metadata.materializedPathColumn.propertyPath + " LIKE CONCAT(" + subQuery.getQuery() + ", '%')"; + } + }); + } + throw new Error("Supported only in tree entities"); + }; + /** + * Gets all parents (ancestors) of the given entity. Returns them all in a flat array. + */ + TreeRepository.prototype.findAncestors = function (entity) { + return this + .createAncestorsQueryBuilder("treeEntity", "treeClosure", entity) + .getMany(); + }; + /** + * Gets all parents (ancestors) of the given entity. Returns them in a tree - nested into each other. + */ + TreeRepository.prototype.findAncestorsTree = function (entity) { + var _this = this; + // todo: throw exception if there is no column of this relation? + return this + .createAncestorsQueryBuilder("treeEntity", "treeClosure", entity) + .getRawAndEntities() + .then(function (entitiesAndScalars) { + var relationMaps = _this.createRelationMaps("treeEntity", entitiesAndScalars.raw); + _this.buildParentEntityTree(entity, entitiesAndScalars.entities, relationMaps); + return entity; + }); + }; + /** + * Gets number of ancestors of the entity. + */ + TreeRepository.prototype.countAncestors = function (entity) { + return this + .createAncestorsQueryBuilder("treeEntity", "treeClosure", entity) + .getCount(); + }; + /** + * Creates a query builder used to get ancestors of the entities in the tree. + */ + TreeRepository.prototype.createAncestorsQueryBuilder = function (alias, closureTableAlias, entity) { + // create shortcuts for better readability + // const escape = (alias: string) => this.manager.connection.driver.escape(alias); + var _this = this; + if (this.metadata.treeType === "closure-table") { + var joinCondition = this.metadata.closureJunctionTable.ancestorColumns.map(function (column) { + return closureTableAlias + "." + column.propertyPath + " = " + alias + "." + column.referencedColumn.propertyPath; + }).join(" AND "); + var parameters_3 = {}; + var whereCondition = this.metadata.closureJunctionTable.descendantColumns.map(function (column) { + parameters_3[column.referencedColumn.propertyName] = column.referencedColumn.getEntityValue(entity); + return closureTableAlias + "." + column.propertyPath + " = :" + column.referencedColumn.propertyName; + }).join(" AND "); + return this + .createQueryBuilder(alias) + .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition) + .where(whereCondition) + .setParameters(parameters_3); + } + else if (this.metadata.treeType === "nested-set") { + var joinCondition = "joined." + this.metadata.nestedSetLeftColumn.propertyPath + " BETWEEN " + + alias + "." + this.metadata.nestedSetLeftColumn.propertyPath + " AND " + alias + "." + this.metadata.nestedSetRightColumn.propertyPath; + var parameters_4 = {}; + var whereCondition = this.metadata.treeParentRelation.joinColumns.map(function (joinColumn) { + var parameterName = joinColumn.referencedColumn.propertyPath.replace(".", "_"); + parameters_4[parameterName] = joinColumn.referencedColumn.getEntityValue(entity); + return "joined." + joinColumn.referencedColumn.propertyPath + " = :" + parameterName; + }).join(" AND "); + return this + .createQueryBuilder(alias) + .innerJoin(this.metadata.targetName, "joined", joinCondition) + .where(whereCondition, parameters_4); + } + else if (this.metadata.treeType === "materialized-path") { + // example: SELECT * FROM category category WHERE (SELECT mpath FROM `category` WHERE id = 2) LIKE CONCAT(category.mpath, '%'); + return this + .createQueryBuilder(alias) + .where(function (qb) { + var subQuery = qb.subQuery() + .select(_this.metadata.targetName + "." + _this.metadata.materializedPathColumn.propertyPath, "path") + .from(_this.metadata.target, _this.metadata.targetName) + .whereInIds(_this.metadata.getEntityIdMap(entity)); + qb.setNativeParameters(subQuery.expressionMap.nativeParameters); + if (_this.manager.connection.driver instanceof AbstractSqliteDriver["a" /* AbstractSqliteDriver */]) { + return subQuery.getQuery() + " LIKE " + alias + "." + _this.metadata.materializedPathColumn.propertyPath + " || '%'"; + } + else { + return subQuery.getQuery() + " LIKE CONCAT(" + alias + "." + _this.metadata.materializedPathColumn.propertyPath + ", '%')"; + } + }); + } + throw new Error("Supported only in tree entities"); + }; + /** + * Moves entity to the children of then given entity. + * + move(entity: Entity, to: Entity): Promise { + return Promise.resolve(); + } */ + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + TreeRepository.prototype.createRelationMaps = function (alias, rawResults) { + var _this = this; + return rawResults.map(function (rawResult) { + var joinColumn = _this.metadata.treeParentRelation.joinColumns[0]; + // fixes issue #2518, default to databaseName property when givenDatabaseName is not set + var joinColumnName = joinColumn.givenDatabaseName || joinColumn.databaseName; + var id = rawResult[alias + "_" + _this.metadata.primaryColumns[0].databaseName]; + var parentId = rawResult[alias + "_" + joinColumnName]; + return { + id: _this.manager.connection.driver.prepareHydratedValue(id, _this.metadata.primaryColumns[0]), + parentId: _this.manager.connection.driver.prepareHydratedValue(parentId, joinColumn), + }; + }); + }; + TreeRepository.prototype.buildChildrenEntityTree = function (entity, entities, relationMaps) { + var _this = this; + var childProperty = this.metadata.treeChildrenRelation.propertyName; + var parentEntityId = this.metadata.primaryColumns[0].getEntityValue(entity); + var childRelationMaps = relationMaps.filter(function (relationMap) { return relationMap.parentId === parentEntityId; }); + var childIds = new Set(childRelationMaps.map(function (relationMap) { return relationMap.id; })); + entity[childProperty] = entities.filter(function (entity) { return childIds.has(_this.metadata.primaryColumns[0].getEntityValue(entity)); }); + entity[childProperty].forEach(function (childEntity) { + _this.buildChildrenEntityTree(childEntity, entities, relationMaps); + }); + }; + TreeRepository.prototype.buildParentEntityTree = function (entity, entities, relationMaps) { + var _this = this; + var parentProperty = this.metadata.treeParentRelation.propertyName; + var entityId = this.metadata.primaryColumns[0].getEntityValue(entity); + var parentRelationMap = relationMaps.find(function (relationMap) { return relationMap.id === entityId; }); + var parentEntity = entities.find(function (entity) { + if (!parentRelationMap) + return false; + return _this.metadata.primaryColumns[0].getEntityValue(entity) === parentRelationMap.parentId; + }); + if (parentEntity) { + entity[parentProperty] = parentEntity; + this.buildParentEntityTree(entity[parentProperty], entities, relationMaps); + } + }; + return TreeRepository; +}(Repository_Repository)); + + +//# sourceMappingURL=TreeRepository.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/FindRelationsNotFoundError.js + +/** + * Thrown when relations specified in the find options were not found in the entities. +*/ +var FindRelationsNotFoundError_FindRelationsNotFoundError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(FindRelationsNotFoundError, _super); + function FindRelationsNotFoundError(notFoundRelations) { + var _this = _super.call(this) || this; + Object.setPrototypeOf(_this, FindRelationsNotFoundError.prototype); + if (notFoundRelations.length === 1) { + _this.message = "Relation \"" + notFoundRelations[0] + "\" was not found; please check if it is correct and really exists in your entity."; + } + else { + _this.message = "Relations " + notFoundRelations.map(function (relation) { return "\"" + relation + "\""; }).join(", ") + " were not found; please check if relations are correct and they exist in your entities."; + } + return _this; + } + return FindRelationsNotFoundError; +}(Error)); + + +//# sourceMappingURL=FindRelationsNotFoundError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/FindOptionsUtils.js + + +/** + * Utilities to work with FindOptions. + */ +var FindOptionsUtils_FindOptionsUtils = /** @class */ (function () { + function FindOptionsUtils() { + } + // ------------------------------------------------------------------------- + // Public Static Methods + // ------------------------------------------------------------------------- + /** + * Checks if given object is really instance of FindOneOptions interface. + */ + FindOptionsUtils.isFindOneOptions = function (obj) { + var possibleOptions = obj; + return possibleOptions && + (Array.isArray(possibleOptions.select) || + possibleOptions.where instanceof Object || + typeof possibleOptions.where === "string" || + Array.isArray(possibleOptions.relations) || + possibleOptions.join instanceof Object || + possibleOptions.order instanceof Object || + possibleOptions.cache instanceof Object || + typeof possibleOptions.cache === "boolean" || + typeof possibleOptions.cache === "number" || + possibleOptions.lock instanceof Object || + possibleOptions.loadRelationIds instanceof Object || + typeof possibleOptions.loadRelationIds === "boolean" || + typeof possibleOptions.loadEagerRelations === "boolean" || + typeof possibleOptions.withDeleted === "boolean" || + typeof possibleOptions.transaction === "boolean"); + }; + /** + * Checks if given object is really instance of FindManyOptions interface. + */ + FindOptionsUtils.isFindManyOptions = function (obj) { + var possibleOptions = obj; + return possibleOptions && (this.isFindOneOptions(possibleOptions) || + typeof possibleOptions.skip === "number" || + typeof possibleOptions.take === "number" || + typeof possibleOptions.skip === "string" || + typeof possibleOptions.take === "string"); + }; + /** + * Checks if given object is really instance of FindOptions interface. + */ + FindOptionsUtils.extractFindManyOptionsAlias = function (object) { + if (this.isFindManyOptions(object) && object.join) + return object.join.alias; + return undefined; + }; + /** + * Applies give find many options to the given query builder. + */ + FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder = function (qb, options) { + if (this.isFindManyOptions(options)) + return this.applyOptionsToQueryBuilder(qb, options); + if (options) + return qb.where(options); + return qb; + }; + /** + * Applies give find options to the given query builder. + */ + FindOptionsUtils.applyOptionsToQueryBuilder = function (qb, options) { + // if options are not set then simply return query builder. This is made for simplicity of usage. + if (!options || (!this.isFindOneOptions(options) && !this.isFindManyOptions(options))) + return qb; + if (options.transaction === true) { + qb.expressionMap.useTransaction = true; + } + if (!qb.expressionMap.mainAlias || !qb.expressionMap.mainAlias.hasMetadata) + return qb; + var metadata = qb.expressionMap.mainAlias.metadata; + // apply all options from FindOptions + if (options.select) { + qb.select([]); + options.select.forEach(function (select) { + if (!metadata.findColumnWithPropertyPath(String(select))) + throw new Error(select + " column was not found in the " + metadata.name + " entity."); + qb.addSelect(qb.alias + "." + select); + }); + } + if (options.where) + qb.where(options.where); + if (options.skip) + qb.skip(options.skip); + if (options.take) + qb.take(options.take); + if (options.order) + Object.keys(options.order).forEach(function (key) { + var order = options.order[key]; + if (!metadata.findColumnWithPropertyPath(key)) + throw new Error(key + " column was not found in the " + metadata.name + " entity."); + switch (order) { + case 1: + qb.addOrderBy(qb.alias + "." + key, "ASC"); + break; + case -1: + qb.addOrderBy(qb.alias + "." + key, "DESC"); + break; + case "ASC": + qb.addOrderBy(qb.alias + "." + key, "ASC"); + break; + case "DESC": + qb.addOrderBy(qb.alias + "." + key, "DESC"); + break; + } + }); + if (options.relations) { + var allRelations = options.relations.map(function (relation) { return relation; }); + this.applyRelationsRecursively(qb, allRelations, qb.expressionMap.mainAlias.name, qb.expressionMap.mainAlias.metadata, ""); + // recursive removes found relations from allRelations array + // if there are relations left in this array it means those relations were not found in the entity structure + // so, we give an exception about not found relations + if (allRelations.length > 0) + throw new FindRelationsNotFoundError_FindRelationsNotFoundError(allRelations); + } + if (options.join) { + if (options.join.leftJoin) + Object.keys(options.join.leftJoin).forEach(function (key) { + qb.leftJoin(options.join.leftJoin[key], key); + }); + if (options.join.innerJoin) + Object.keys(options.join.innerJoin).forEach(function (key) { + qb.innerJoin(options.join.innerJoin[key], key); + }); + if (options.join.leftJoinAndSelect) + Object.keys(options.join.leftJoinAndSelect).forEach(function (key) { + qb.leftJoinAndSelect(options.join.leftJoinAndSelect[key], key); + }); + if (options.join.innerJoinAndSelect) + Object.keys(options.join.innerJoinAndSelect).forEach(function (key) { + qb.innerJoinAndSelect(options.join.innerJoinAndSelect[key], key); + }); + } + if (options.cache) { + if (options.cache instanceof Object) { + var cache = options.cache; + qb.cache(cache.id, cache.milliseconds); + } + else { + qb.cache(options.cache); + } + } + if (options.lock) { + if (options.lock.mode === "optimistic") { + qb.setLock(options.lock.mode, options.lock.version); + } + else if (options.lock.mode === "pessimistic_read" || options.lock.mode === "pessimistic_write" || options.lock.mode === "dirty_read" || options.lock.mode === "pessimistic_partial_write" || options.lock.mode === "pessimistic_write_or_fail") { + var tableNames = options.lock.tables ? options.lock.tables.map(function (table) { + var tableAlias = qb.expressionMap.aliases.find(function (alias) { + return alias.metadata.tableNameWithoutPrefix === table; + }); + if (!tableAlias) { + throw new Error("\"" + table + "\" is not part of this query"); + } + return qb.escape(tableAlias.name); + }) : undefined; + qb.setLock(options.lock.mode, undefined, tableNames); + } + } + if (options.withDeleted) { + qb.withDeleted(); + } + if (options.loadRelationIds === true) { + qb.loadAllRelationIds(); + } + else if (options.loadRelationIds instanceof Object) { + qb.loadAllRelationIds(options.loadRelationIds); + } + return qb; + }; + // ------------------------------------------------------------------------- + // Protected Static Methods + // ------------------------------------------------------------------------- + /** + * Adds joins for all relations and sub-relations of the given relations provided in the find options. + */ + FindOptionsUtils.applyRelationsRecursively = function (qb, allRelations, alias, metadata, prefix) { + var _this = this; + // find all relations that match given prefix + var matchedBaseRelations = []; + if (prefix) { + var regexp_1 = new RegExp("^" + prefix.replace(".", "\\.") + "\\."); + matchedBaseRelations = allRelations + .filter(function (relation) { return relation.match(regexp_1); }) + .map(function (relation) { return relation.replace(regexp_1, ""); }) + .filter(function (relation) { return metadata.findRelationWithPropertyPath(relation); }); + } + else { + matchedBaseRelations = allRelations.filter(function (relation) { return metadata.findRelationWithPropertyPath(relation); }); + } + // go through all matched relations and add join for them + matchedBaseRelations.forEach(function (relation) { + // generate a relation alias + var relationAlias = alias + "__" + relation; + // shorten it if needed by the driver + if (qb.connection.driver.maxAliasLength && relationAlias.length > qb.connection.driver.maxAliasLength) { + relationAlias = Object(StringUtils["c" /* shorten */])(relationAlias); + } + // add a join for the found relation + var selection = alias + "." + relation; + qb.leftJoinAndSelect(selection, relationAlias); + // join the eager relations of the found relation + var relMetadata = metadata.relations.find(function (metadata) { return metadata.propertyName === relation; }); + if (relMetadata) { + _this.joinEagerRelations(qb, relationAlias, relMetadata.inverseEntityMetadata); + } + // remove added relations from the allRelations array, this is needed to find all not found relations at the end + allRelations.splice(allRelations.indexOf(prefix ? prefix + "." + relation : relation), 1); + // try to find sub-relations + var join = qb.expressionMap.joinAttributes.find(function (join) { return join.entityOrProperty === selection; }); + _this.applyRelationsRecursively(qb, allRelations, join.alias.name, join.metadata, prefix ? prefix + "." + relation : relation); + }); + }; + FindOptionsUtils.joinEagerRelations = function (qb, alias, metadata) { + var _this = this; + metadata.eagerRelations.forEach(function (relation) { + var relationAlias = qb.connection.namingStrategy.eagerJoinRelationAlias(alias, relation.propertyPath); + qb.leftJoinAndSelect(alias + "." + relation.propertyPath, relationAlias); + _this.joinEagerRelations(qb, relationAlias, relation.inverseEntityMetadata); + }); + }; + return FindOptionsUtils; +}()); + + +//# sourceMappingURL=FindOptionsUtils.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +/** + * Transforms plain old javascript object + * Entity is constructed based on its entity metadata. + */ +var PlainObjectToNewEntityTransformer = /** @class */ (function () { + function PlainObjectToNewEntityTransformer() { + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + PlainObjectToNewEntityTransformer.prototype.transform = function (newEntity, object, metadata, getLazyRelationsPromiseValue) { + if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; } + // console.log("groupAndTransform entity:", newEntity); + // console.log("groupAndTransform object:", object); + this.groupAndTransform(newEntity, object, metadata, getLazyRelationsPromiseValue); + // console.log("result:", newEntity); + return newEntity; + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + /** + * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated + * we need to group our result and we must have some unique id (primary key in our case) + */ + PlainObjectToNewEntityTransformer.prototype.groupAndTransform = function (entity, object, metadata, getLazyRelationsPromiseValue) { + // console.log("groupAndTransform entity:", entity); + // console.log("groupAndTransform object:", object); + var _this = this; + if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; } + // copy regular column properties from the given object + metadata.nonVirtualColumns.forEach(function (column) { + var objectColumnValue = column.getEntityValue(object); + if (objectColumnValue !== undefined) + column.setEntityValue(entity, objectColumnValue); + }); + // // copy relation properties from the given object + if (metadata.relations.length) { + metadata.relations.forEach(function (relation) { + var entityRelatedValue = relation.getEntityValue(entity); + var objectRelatedValue = relation.getEntityValue(object, getLazyRelationsPromiseValue); + if (objectRelatedValue === undefined) + return; + if (relation.isOneToMany || relation.isManyToMany) { + if (!Array.isArray(objectRelatedValue)) + return; + if (!entityRelatedValue) { + entityRelatedValue = []; + relation.setEntityValue(entity, entityRelatedValue); + } + objectRelatedValue.forEach(function (objectRelatedValueItem) { + // check if we have this item from the merging object in the original entity we merge into + var objectRelatedValueEntity = entityRelatedValue.find(function (entityRelatedValueItem) { + return relation.inverseEntityMetadata.compareEntities(objectRelatedValueItem, entityRelatedValueItem); + }); + // if such item already exist then merge new data into it, if its not we create a new entity and merge it into the array + if (!objectRelatedValueEntity) { + objectRelatedValueEntity = relation.inverseEntityMetadata.create(); + entityRelatedValue.push(objectRelatedValueEntity); + } + _this.groupAndTransform(objectRelatedValueEntity, objectRelatedValueItem, relation.inverseEntityMetadata, getLazyRelationsPromiseValue); + }); + } + else { + // if related object isn't an object (direct relation id for example) + // we just set it to the entity relation, we don't need anything more from it + // however we do it only if original entity does not have this relation set to object + // to prevent full overriding of objects + if (!(objectRelatedValue instanceof Object)) { + if (!(entityRelatedValue instanceof Object)) + relation.setEntityValue(entity, objectRelatedValue); + return; + } + if (!entityRelatedValue) { + entityRelatedValue = relation.inverseEntityMetadata.create(); + relation.setEntityValue(entity, entityRelatedValue); + } + _this.groupAndTransform(entityRelatedValue, objectRelatedValue, relation.inverseEntityMetadata, getLazyRelationsPromiseValue); + } + }); + } + }; + return PlainObjectToNewEntityTransformer; +}()); + + +//# sourceMappingURL=PlainObjectToNewEntityTransformer.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js + +/** + */ +var LoadMapItem = /** @class */ (function () { + function LoadMapItem(plainEntity, metadata, parentLoadMapItem, relation) { + this.plainEntity = plainEntity; + this.metadata = metadata; + this.parentLoadMapItem = parentLoadMapItem; + this.relation = relation; + } + Object.defineProperty(LoadMapItem.prototype, "target", { + get: function () { + return this.metadata.target; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LoadMapItem.prototype, "id", { + get: function () { + return this.metadata.getEntityIdMixedMap(this.plainEntity); + }, + enumerable: false, + configurable: true + }); + return LoadMapItem; +}()); +var LoadMap = /** @class */ (function () { + function LoadMap() { + this.loadMapItems = []; + } + Object.defineProperty(LoadMap.prototype, "mainLoadMapItem", { + get: function () { + return this.loadMapItems.find(function (item) { return !item.relation && !item.parentLoadMapItem; }); + }, + enumerable: false, + configurable: true + }); + LoadMap.prototype.addLoadMap = function (newLoadMap) { + var item = this.loadMapItems.find(function (item) { return item.target === newLoadMap.target && item.id === newLoadMap.id; }); + if (!item) + this.loadMapItems.push(newLoadMap); + }; + LoadMap.prototype.fillEntities = function (target, entities) { + var _this = this; + entities.forEach(function (entity) { + var item = _this.loadMapItems.find(function (loadMapItem) { + return loadMapItem.target === target && loadMapItem.metadata.compareEntities(entity, loadMapItem.plainEntity); + }); + if (item) + item.entity = entity; + }); + }; + LoadMap.prototype.groupByTargetIds = function () { + var groups = []; + this.loadMapItems.forEach(function (loadMapItem) { + var group = groups.find(function (group) { return group.target === loadMapItem.target; }); + if (!group) { + group = { target: loadMapItem.target, ids: [] }; + groups.push(group); + } + group.ids.push(loadMapItem.id); + }); + return groups; + }; + return LoadMap; +}()); +/** + * Transforms plain old javascript object + * Entity is constructed based on its entity metadata. + */ +var PlainObjectToDatabaseEntityTransformer_PlainObjectToDatabaseEntityTransformer = /** @class */ (function () { + function PlainObjectToDatabaseEntityTransformer(manager) { + this.manager = manager; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + PlainObjectToDatabaseEntityTransformer.prototype.transform = function (plainObject, metadata) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var loadMap, fillLoadMap; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + // if plain object does not have id then nothing to load really + if (!metadata.hasAllPrimaryKeys(plainObject)) + return [2 /*return*/, Promise.reject("Given object does not have a primary column, cannot transform it to database entity.")]; + loadMap = new LoadMap(); + fillLoadMap = function (entity, entityMetadata, parentLoadMapItem, relation) { + var item = new LoadMapItem(entity, entityMetadata, parentLoadMapItem, relation); + loadMap.addLoadMap(item); + entityMetadata + .extractRelationValuesFromEntity(entity, metadata.relations) + .filter(function (value) { return value !== null && value !== undefined; }) + .forEach(function (_a) { + var _b = Object(tslib_es6["e" /* __read */])(_a, 3), relation = _b[0], value = _b[1], inverseEntityMetadata = _b[2]; + return fillLoadMap(value, inverseEntityMetadata, item, relation); + }); + }; + fillLoadMap(plainObject, metadata); + // load all entities and store them in the load map + return [4 /*yield*/, Promise.all(loadMap.groupByTargetIds().map(function (targetWithIds) { + return _this.manager + .findByIds(targetWithIds.target, targetWithIds.ids) + .then(function (entities) { return loadMap.fillEntities(targetWithIds.target, entities); }); + }))]; + case 1: + // load all entities and store them in the load map + _a.sent(); + // go through each item in the load map and set their entity relationship using metadata stored in load map + loadMap.loadMapItems.forEach(function (loadMapItem) { + if (!loadMapItem.relation || + !loadMapItem.entity || + !loadMapItem.parentLoadMapItem || + !loadMapItem.parentLoadMapItem.entity) + return; + if (loadMapItem.relation.isManyToMany || loadMapItem.relation.isOneToMany) { + if (!loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName]) + loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = []; + loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName].push(loadMapItem.entity); + } + else { + loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = loadMapItem.entity; + } + }); + return [2 /*return*/, loadMap.mainLoadMapItem ? loadMap.mainLoadMapItem.entity : undefined]; + } + }); + }); + }; + return PlainObjectToDatabaseEntityTransformer; +}()); + + +//# sourceMappingURL=PlainObjectToDatabaseEntityTransformer.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js + +/** + * Thrown if custom repository was not found. + */ +var CustomRepositoryNotFoundError_CustomRepositoryNotFoundError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CustomRepositoryNotFoundError, _super); + function CustomRepositoryNotFoundError(repository) { + var _this = _super.call(this) || this; + _this.name = "CustomRepositoryNotFoundError"; + Object.setPrototypeOf(_this, CustomRepositoryNotFoundError.prototype); + _this.message = "Custom repository " + (repository instanceof Function ? repository.name : repository.constructor.name) + " was not found. " + + "Did you forgot to put @EntityRepository decorator on it?"; + return _this; + } + return CustomRepositoryNotFoundError; +}(Error)); + + +//# sourceMappingURL=CustomRepositoryNotFoundError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CustomRepositoryDoesNotHaveEntityError.js + +/** + * Thrown if custom repositories that extend AbstractRepository classes does not have managed entity. + */ +var CustomRepositoryDoesNotHaveEntityError_CustomRepositoryDoesNotHaveEntityError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CustomRepositoryDoesNotHaveEntityError, _super); + function CustomRepositoryDoesNotHaveEntityError(repository) { + var _this = _super.call(this) || this; + _this.name = "CustomRepositoryDoesNotHaveEntityError"; + Object.setPrototypeOf(_this, CustomRepositoryDoesNotHaveEntityError.prototype); + _this.message = "Custom repository " + (repository instanceof Function ? repository.name : repository.constructor.name) + " does not have managed entity. " + + "Did you forget to specify entity for it @EntityRepository(MyEntity)? "; + return _this; + } + return CustomRepositoryDoesNotHaveEntityError; +}(Error)); + + +//# sourceMappingURL=CustomRepositoryDoesNotHaveEntityError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/repository/AbstractRepository.js + + + +/** + * Provides abstract class for custom repositories that do not inherit from original orm Repository. + * Contains all most-necessary methods to simplify code in the custom repository. + * All methods are protected thus not exposed and it allows to create encapsulated custom repository. + * + * @experimental + */ +var AbstractRepository_AbstractRepository = /** @class */ (function () { + function AbstractRepository() { + } + Object.defineProperty(AbstractRepository.prototype, "repository", { + // ------------------------------------------------------------------------- + // Protected Accessors + // ------------------------------------------------------------------------- + /** + * Gets the original ORM repository for the entity that is managed by this repository. + * If current repository does not manage any entity, then exception will be thrown. + */ + get: function () { + var target = this.getCustomRepositoryTarget(this); + if (!target) + throw new CustomRepositoryDoesNotHaveEntityError_CustomRepositoryDoesNotHaveEntityError(this.constructor); + return this.manager.getRepository(target); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AbstractRepository.prototype, "treeRepository", { + /** + * Gets the original ORM tree repository for the entity that is managed by this repository. + * If current repository does not manage any entity, then exception will be thrown. + */ + get: function () { + var target = this.getCustomRepositoryTarget(this); + if (!target) + throw new CustomRepositoryDoesNotHaveEntityError_CustomRepositoryDoesNotHaveEntityError(this.constructor); + return this.manager.getTreeRepository(target); + }, + enumerable: false, + configurable: true + }); + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates a new query builder for the repository's entity that can be used to build a sql query. + * If current repository does not manage any entity, then exception will be thrown. + */ + AbstractRepository.prototype.createQueryBuilder = function (alias) { + var target = this.getCustomRepositoryTarget(this.constructor); + if (!target) + throw new CustomRepositoryDoesNotHaveEntityError_CustomRepositoryDoesNotHaveEntityError(this.constructor); + return this.manager.getRepository(target).createQueryBuilder(alias); + }; + /** + * Creates a new query builder for the given entity that can be used to build a sql query. + */ + AbstractRepository.prototype.createQueryBuilderFor = function (entity, alias) { + return this.getRepositoryFor(entity).createQueryBuilder(alias); + }; + /** + * Gets the original ORM repository for the given entity class. + */ + AbstractRepository.prototype.getRepositoryFor = function (entity) { + return this.manager.getRepository(entity); + }; + /** + * Gets the original ORM tree repository for the given entity class. + */ + AbstractRepository.prototype.getTreeRepositoryFor = function (entity) { + return this.manager.getTreeRepository(entity); + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + /** + * Gets custom repository's managed entity. + * If given custom repository does not manage any entity then undefined will be returned. + */ + AbstractRepository.prototype.getCustomRepositoryTarget = function (customRepository) { + var entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find(function (repository) { + return repository.target === (customRepository instanceof Function ? customRepository : customRepository.constructor); + }); + if (!entityRepositoryMetadataArgs) + throw new CustomRepositoryNotFoundError_CustomRepositoryNotFoundError(customRepository); + return entityRepositoryMetadataArgs.entity; + }; + return AbstractRepository; +}()); + + +//# sourceMappingURL=AbstractRepository.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CustomRepositoryCannotInheritRepositoryError.js + +/** + * Thrown if custom repository inherits Repository class however entity is not set in @EntityRepository decorator. + */ +var CustomRepositoryCannotInheritRepositoryError_CustomRepositoryCannotInheritRepositoryError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CustomRepositoryCannotInheritRepositoryError, _super); + function CustomRepositoryCannotInheritRepositoryError(repository) { + var _this = _super.call(this) || this; + _this.name = "CustomRepositoryCannotInheritRepositoryError"; + Object.setPrototypeOf(_this, CustomRepositoryCannotInheritRepositoryError.prototype); + _this.message = "Custom entity repository " + (repository instanceof Function ? repository.name : repository.constructor.name) + " " + + " cannot inherit Repository class without entity being set in the @EntityRepository decorator."; + return _this; + } + return CustomRepositoryCannotInheritRepositoryError; +}(Error)); + + +//# sourceMappingURL=CustomRepositoryCannotInheritRepositoryError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/RepositoryNotFoundError.js + + +/** + * Thrown when repository for the given class is not found. + */ +var RepositoryNotFoundError_RepositoryNotFoundError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(RepositoryNotFoundError, _super); + function RepositoryNotFoundError(connectionName, entityClass) { + var _this = _super.call(this) || this; + _this.name = "RepositoryNotFoundError"; + Object.setPrototypeOf(_this, RepositoryNotFoundError.prototype); + var targetName; + if (entityClass instanceof EntitySchema["a" /* EntitySchema */]) { + targetName = entityClass.options.name; + } + else if (typeof entityClass === "function") { + targetName = entityClass.name; + } + else if (typeof entityClass === "object" && "name" in entityClass) { + targetName = entityClass.name; + } + else { + targetName = entityClass; + } + _this.message = "No repository for \"" + targetName + "\" was found. Looks like this entity is not registered in " + + ("current \"" + connectionName + "\" connection?"); + return _this; + } + return RepositoryNotFoundError; +}(Error)); + + +//# sourceMappingURL=RepositoryNotFoundError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/RepositoryNotTreeError.js + + +/** + * Thrown when repository for the given class is not found. + */ +var RepositoryNotTreeError_RepositoryNotTreeError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(RepositoryNotTreeError, _super); + function RepositoryNotTreeError(entityClass) { + var _this = _super.call(this) || this; + _this.name = "RepositoryNotTreeError"; + Object.setPrototypeOf(_this, RepositoryNotTreeError.prototype); + var targetName; + if (entityClass instanceof EntitySchema["a" /* EntitySchema */]) { + targetName = entityClass.options.name; + } + else if (typeof entityClass === "function") { + targetName = entityClass.name; + } + else if (typeof entityClass === "object" && "name" in entityClass) { + targetName = entityClass.name; + } + else { + targetName = entityClass; + } + _this.message = "Repository of the \"" + targetName + "\" class is not a TreeRepository. Try to apply @Tree decorator on your entity."; + return _this; + } + return RepositoryNotTreeError; +}(Error)); + + +//# sourceMappingURL=RepositoryNotTreeError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/repository/RepositoryFactory.js + + + + +/** + * Factory used to create different types of repositories. + */ +var RepositoryFactory_RepositoryFactory = /** @class */ (function () { + function RepositoryFactory() { + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a repository. + */ + RepositoryFactory.prototype.create = function (manager, metadata, queryRunner) { + if (metadata.treeType) { + // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed, + // however we need these properties for internal work of the class + var repository = new TreeRepository_TreeRepository(); + Object.assign(repository, { + manager: manager, + metadata: metadata, + queryRunner: queryRunner, + }); + return repository; + } + else { + // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed, + // however we need these properties for internal work of the class + var repository = void 0; + if (manager.connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */]) { + repository = new BrowserDisabledDriversDummy["h" /* MongoRepository */](); + } + else { + repository = new Repository_Repository(); + } + Object.assign(repository, { + manager: manager, + metadata: metadata, + queryRunner: queryRunner, + }); + return repository; + } + }; + return RepositoryFactory; +}()); + + +//# sourceMappingURL=RepositoryFactory.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/TreeRepositoryNotSupportedError.js + +var TreeRepositoryNotSupportedError_TreeRepositoryNotSupportedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(TreeRepositoryNotSupportedError, _super); + function TreeRepositoryNotSupportedError(driver) { + var _this = _super.call(this) || this; + _this.name = "TreeRepositoryNotSupportedError"; + Object.setPrototypeOf(_this, TreeRepositoryNotSupportedError.prototype); + _this.message = "Tree repositories are not supported in " + driver.options.type + " driver."; + return _this; + } + return TreeRepositoryNotSupportedError; +}(Error)); + + +//# sourceMappingURL=TreeRepositoryNotSupportedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/MustBeEntityError.js + +/** + * Thrown when method expects entity but instead something else is given. + */ +var MustBeEntityError_MustBeEntityError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(MustBeEntityError, _super); + function MustBeEntityError(operation, wrongValue) { + var _this = _super.call(this) || this; + _this.name = "MustBeEntityError"; + Object.setPrototypeOf(_this, MustBeEntityError.prototype); + _this.message = "Cannot " + operation + ", given value must be an entity, instead \"" + wrongValue + "\" is given."; + return _this; + } + return MustBeEntityError; +}(Error)); + + +//# sourceMappingURL=MustBeEntityError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/SubjectTopoligicalSorter.js + +/** + * Orders insert or remove subjects in proper order (using topological sorting) + * to make sure insert or remove operations are executed in a proper order. + */ +var SubjectTopoligicalSorter_SubjectTopoligicalSorter = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function SubjectTopoligicalSorter(subjects) { + this.subjects = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(subjects)); // copy subjects to prevent changing of sent array + this.metadatas = this.getUniqueMetadatas(this.subjects); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Sorts (orders) subjects in their topological order. + */ + SubjectTopoligicalSorter.prototype.sort = function (direction) { + var _this = this; + // if there are no metadatas it probably mean there is no subjects... we don't have to do anything here + if (!this.metadatas.length) + return this.subjects; + var sortedSubjects = []; + // first if we sort for deletion all junction subjects + // junction subjects are subjects without entity and database entity set + if (direction === "delete") { + var junctionSubjects = this.subjects.filter(function (subject) { return !subject.entity && !subject.databaseEntity; }); + sortedSubjects.push.apply(sortedSubjects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(junctionSubjects))); + this.removeAlreadySorted(junctionSubjects); + } + // next we always insert entities with non-nullable relations, sort them first + var nonNullableDependencies = this.getNonNullableDependencies(); + var sortedNonNullableEntityTargets = this.toposort(nonNullableDependencies); + if (direction === "insert") + sortedNonNullableEntityTargets = sortedNonNullableEntityTargets.reverse(); + // so we have a sorted entity targets + // go thought each of them and find all subjects with sorted entity target + // add those sorted targets and remove them from original array of targets + sortedNonNullableEntityTargets.forEach(function (sortedEntityTarget) { + var entityTargetSubjects = _this.subjects.filter(function (subject) { return subject.metadata.targetName === sortedEntityTarget; }); + sortedSubjects.push.apply(sortedSubjects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(entityTargetSubjects))); + _this.removeAlreadySorted(entityTargetSubjects); + }); + // next sort all other entities + // same process as in above but with other entities + var otherDependencies = this.getDependencies(); + var sortedOtherEntityTargets = this.toposort(otherDependencies); + if (direction === "insert") + sortedOtherEntityTargets = sortedOtherEntityTargets.reverse(); + sortedOtherEntityTargets.forEach(function (sortedEntityTarget) { + var entityTargetSubjects = _this.subjects.filter(function (subject) { return subject.metadata.targetName === sortedEntityTarget; }); + sortedSubjects.push.apply(sortedSubjects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(entityTargetSubjects))); + _this.removeAlreadySorted(entityTargetSubjects); + }); + // if we have something left in the subjects add them as well + sortedSubjects.push.apply(sortedSubjects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.subjects))); + return sortedSubjects; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Removes already sorted subjects from this.subjects list of subjects. + */ + SubjectTopoligicalSorter.prototype.removeAlreadySorted = function (subjects) { + var _this = this; + subjects.forEach(function (subject) { + _this.subjects.splice(_this.subjects.indexOf(subject), 1); + }); + }; + /** + * Extracts all unique metadatas from the given subjects. + */ + SubjectTopoligicalSorter.prototype.getUniqueMetadatas = function (subjects) { + var metadatas = []; + subjects.forEach(function (subject) { + if (metadatas.indexOf(subject.metadata) === -1) + metadatas.push(subject.metadata); + }); + return metadatas; + }; + /** + * Gets dependency tree for all entity metadatas with non-nullable relations. + * We need to execute insertions first for entities which non-nullable relations. + */ + SubjectTopoligicalSorter.prototype.getNonNullableDependencies = function () { + return this.metadatas.reduce(function (dependencies, metadata) { + metadata.relationsWithJoinColumns.forEach(function (relation) { + if (relation.isNullable) + return; + dependencies.push([metadata.targetName, relation.inverseEntityMetadata.targetName]); + }); + return dependencies; + }, []); + }; + /** + * Gets dependency tree for all entity metadatas with non-nullable relations. + * We need to execute insertions first for entities which non-nullable relations. + */ + SubjectTopoligicalSorter.prototype.getDependencies = function () { + return this.metadatas.reduce(function (dependencies, metadata) { + metadata.relationsWithJoinColumns.forEach(function (relation) { + // if relation is self-referenced we skip it + if (relation.inverseEntityMetadata === metadata) + return; + dependencies.push([metadata.targetName, relation.inverseEntityMetadata.targetName]); + }); + return dependencies; + }, []); + }; + /** + * Sorts given graph using topological sorting algorithm. + * + * Algorithm is kindly taken from https://github.com/marcelklehr/toposort repository. + */ + SubjectTopoligicalSorter.prototype.toposort = function (edges) { + function uniqueNodes(arr) { + var res = []; + for (var i_1 = 0, len = arr.length; i_1 < len; i_1++) { + var edge = arr[i_1]; + if (res.indexOf(edge[0]) < 0) + res.push(edge[0]); + if (res.indexOf(edge[1]) < 0) + res.push(edge[1]); + } + return res; + } + var nodes = uniqueNodes(edges); + var cursor = nodes.length, sorted = new Array(cursor), visited = {}, i = cursor; + while (i--) { + if (!visited[i]) + visit(nodes[i], i, []); + } + function visit(node, i, predecessors) { + if (predecessors.indexOf(node) >= 0) { + throw new Error("Cyclic dependency: " + JSON.stringify(node)); // todo: better error + } + if (!~nodes.indexOf(node)) { + throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: " + JSON.stringify(node)); + } + if (visited[i]) + return; + visited[i] = true; + // outgoing edges + var outgoing = edges.filter(function (edge) { + return edge[0] === node; + }); + if (i = outgoing.length) { + var preds = predecessors.concat(node); + do { + var child = outgoing[--i][1]; + visit(child, nodes.indexOf(child), preds); + } while (i); + } + sorted[--cursor] = node; + } + return sorted; + }; + return SubjectTopoligicalSorter; +}()); + + +//# sourceMappingURL=SubjectTopoligicalSorter.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/DateUtils.js +var DateUtils = __webpack_require__(21); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/OrmUtils.js +var OrmUtils = __webpack_require__(6); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/ApplyValueTransformers.js +var ApplyValueTransformers = __webpack_require__(60); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/SubjectChangedColumnsComputer.js + + + +/** + * Finds what columns are changed in the subject entities. + */ +var SubjectChangedColumnsComputer_SubjectChangedColumnsComputer = /** @class */ (function () { + function SubjectChangedColumnsComputer() { + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Finds what columns are changed in the subject entities. + */ + SubjectChangedColumnsComputer.prototype.compute = function (subjects) { + var _this = this; + subjects.forEach(function (subject) { + _this.computeDiffColumns(subject); + _this.computeDiffRelationalColumns(subjects, subject); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Differentiate columns from the updated entity and entity stored in the database. + */ + SubjectChangedColumnsComputer.prototype.computeDiffColumns = function (subject) { + // if there is no persisted entity then nothing to compute changed in it + if (!subject.entity) + return; + subject.metadata.columns.forEach(function (column) { + // ignore special columns + if (column.isVirtual || + column.isDiscriminator // || + // column.isUpdateDate || + // column.isVersion || + // column.isCreateDate + ) + return; + var changeMap = subject.changeMaps.find(function (changeMap) { return changeMap.column === column; }); + if (changeMap) { + subject.changeMaps.splice(subject.changeMaps.indexOf(changeMap), 1); + } + // get user provided value - column value from the user provided persisted entity + var entityValue = column.getEntityValue(subject.entity); + // we don't perform operation over undefined properties (but we DO need null properties!) + if (entityValue === undefined) + return; + // if there is no database entity then all columns are treated as new, e.g. changed + if (subject.databaseEntity) { + // skip transform database value for json / jsonb for comparison later on + var shouldTransformDatabaseEntity = column.type !== "json" && column.type !== "jsonb"; + // get database value of the column + var databaseValue = column.getEntityValue(subject.databaseEntity, shouldTransformDatabaseEntity); + // filter out "relational columns" only in the case if there is a relation object in entity + if (column.relationMetadata) { + var value = column.relationMetadata.getEntityValue(subject.entity); + if (value !== null && value !== undefined) + return; + } + var normalizedValue = entityValue; + // normalize special values to make proper comparision + if (entityValue !== null) { + switch (column.type) { + case "date": + normalizedValue = DateUtils["a" /* DateUtils */].mixedDateToDateString(entityValue); + break; + case "time": + case "time with time zone": + case "time without time zone": + case "timetz": + normalizedValue = DateUtils["a" /* DateUtils */].mixedDateToTimeString(entityValue); + break; + case "datetime": + case "datetime2": + case Date: + case "timestamp": + case "timestamp without time zone": + case "timestamp with time zone": + case "timestamp with local time zone": + case "timestamptz": + normalizedValue = DateUtils["a" /* DateUtils */].mixedDateToUtcDatetimeString(entityValue); + databaseValue = DateUtils["a" /* DateUtils */].mixedDateToUtcDatetimeString(databaseValue); + break; + case "json": + case "jsonb": + // JSON.stringify doesn't work because postgresql sorts jsonb before save. + // If you try to save json '[{"messages": "", "attribute Key": "", "level":""}] ' as jsonb, + // then postgresql will save it as '[{"level": "", "message":"", "attributeKey": ""}]' + if (OrmUtils["a" /* OrmUtils */].deepCompare(entityValue, databaseValue)) + return; + break; + case "simple-array": + normalizedValue = DateUtils["a" /* DateUtils */].simpleArrayToString(entityValue); + databaseValue = DateUtils["a" /* DateUtils */].simpleArrayToString(databaseValue); + break; + case "simple-enum": + normalizedValue = DateUtils["a" /* DateUtils */].simpleEnumToString(entityValue); + databaseValue = DateUtils["a" /* DateUtils */].simpleEnumToString(databaseValue); + break; + case "simple-json": + normalizedValue = DateUtils["a" /* DateUtils */].simpleJsonToString(entityValue); + databaseValue = DateUtils["a" /* DateUtils */].simpleJsonToString(databaseValue); + break; + } + if (column.transformer) { + normalizedValue = ApplyValueTransformers["a" /* ApplyValueTransformers */].transformTo(column.transformer, entityValue); + } + } + // if value is not changed - then do nothing + if (normalizedValue === databaseValue) + return; + } + subject.diffColumns.push(column); + subject.changeMaps.push({ + column: column, + value: entityValue + }); + }); + }; + /** + * Difference columns of the owning one-to-one and many-to-one columns. + */ + SubjectChangedColumnsComputer.prototype.computeDiffRelationalColumns = function (allSubjects, subject) { + // if there is no persisted entity then nothing to compute changed in it + if (!subject.entity) + return; + subject.metadata.relationsWithJoinColumns.forEach(function (relation) { + // get the related entity from the persisted entity + var relatedEntity = relation.getEntityValue(subject.entity); + // we don't perform operation over undefined properties (but we DO need null properties!) + if (relatedEntity === undefined) + return; + // if there is no database entity then all relational columns are treated as new, e.g. changed + if (subject.databaseEntity) { + // here we cover two scenarios: + // 1. related entity can be another entity which is natural way + // 2. related entity can be just an entity id + // if relation entity is just a relation id set (for example post.tag = 1) + // then we create an id map from it to make a proper comparision + var relatedEntityRelationIdMap = relatedEntity; + if (relatedEntityRelationIdMap !== null && relatedEntityRelationIdMap instanceof Object) + relatedEntityRelationIdMap = relation.getRelationIdMap(relatedEntityRelationIdMap); + // get database related entity. Since loadRelationIds are used on databaseEntity + // related entity will contain only its relation ids + var databaseRelatedEntityRelationIdMap = relation.getEntityValue(subject.databaseEntity); + // if relation ids are equal then we don't need to update anything + var areRelatedIdsEqual = OrmUtils["a" /* OrmUtils */].compareIds(relatedEntityRelationIdMap, databaseRelatedEntityRelationIdMap); + if (areRelatedIdsEqual) { + return; + } + else { + subject.diffRelations.push(relation); + } + } + // if there is an inserted subject for the related entity of the persisted entity then use it as related entity + // this code is used for related entities without ids to be properly inserted (and then updated if needed) + var valueSubject = allSubjects.find(function (subject) { return subject.mustBeInserted && subject.entity === relatedEntity; }); + if (valueSubject) + relatedEntity = valueSubject; + // find if there is already a relation to be changed + var changeMap = subject.changeMaps.find(function (changeMap) { return changeMap.relation === relation; }); + if (changeMap) { // and update its value if it was found + changeMap.value = relatedEntity; + } + else { // if it wasn't found add a new relation for change + subject.changeMaps.push({ + relation: relation, + value: relatedEntity + }); + } + }); + }; + return SubjectChangedColumnsComputer; +}()); + + +//# sourceMappingURL=SubjectChangedColumnsComputer.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/SubjectWithoutIdentifierError.js + +/** + * Thrown when operation is going to be executed on a subject without identifier. + * This error should never be thrown, however it still presents to prevent user from updation or removing the whole table. + * If this error occurs still, it most probably is an ORM internal problem which must be reported and fixed. + */ +var SubjectWithoutIdentifierError_SubjectWithoutIdentifierError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(SubjectWithoutIdentifierError, _super); + function SubjectWithoutIdentifierError(subject) { + var _this = _super.call(this) || this; + _this.name = "SubjectWithoutIdentifierError"; + Object.setPrototypeOf(_this, SubjectWithoutIdentifierError.prototype); + _this.message = "Internal error. Subject " + subject.metadata.targetName + " must have an identifier to perform operation. " + + "Please report a github issue if you face this error."; + return _this; + } + return SubjectWithoutIdentifierError; +}(Error)); + + +//# sourceMappingURL=SubjectWithoutIdentifierError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/SubjectRemovedAndUpdatedError.js + +/** + * Thrown when same object is scheduled for remove and updation at the same time. + */ +var SubjectRemovedAndUpdatedError_SubjectRemovedAndUpdatedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(SubjectRemovedAndUpdatedError, _super); + function SubjectRemovedAndUpdatedError(subject) { + var _this = _super.call(this) || this; + _this.name = "SubjectRemovedAndUpdatedError"; + Object.setPrototypeOf(_this, SubjectRemovedAndUpdatedError.prototype); + _this.message = "Removed entity \"" + subject.metadata.name + "\" is also scheduled for update operation. " + + "Make sure you are not updating and removing same object (note that update or remove may be executed by cascade operations)."; + return _this; + } + return SubjectRemovedAndUpdatedError; +}(Error)); + + +//# sourceMappingURL=SubjectRemovedAndUpdatedError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/subscriber/BroadcasterResult.js +var BroadcasterResult = __webpack_require__(8); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/tree/NestedSetSubjectExecutor.js + + +/** + * Executes subject operations for nested set tree entities. + */ +var NestedSetSubjectExecutor_NestedSetSubjectExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function NestedSetSubjectExecutor(queryRunner) { + this.queryRunner = queryRunner; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Executes operations when subject is being inserted. + */ + NestedSetSubjectExecutor.prototype.insert = function (subject) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var escape, tableName, leftColumnName, rightColumnName, parent, parentId, parentNsRight; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + escape = function (alias) { return _this.queryRunner.connection.driver.escape(alias); }; + tableName = this.getTableName(subject.metadata.tablePath); + leftColumnName = escape(subject.metadata.nestedSetLeftColumn.databaseName); + rightColumnName = escape(subject.metadata.nestedSetRightColumn.databaseName); + parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); + if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children + parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity; + parentId = subject.metadata.getEntityIdMap(parent); + parentNsRight = undefined; + if (!parentId) return [3 /*break*/, 2]; + return [4 /*yield*/, this.queryRunner.manager + .createQueryBuilder() + .select(subject.metadata.targetName + "." + subject.metadata.nestedSetRightColumn.propertyPath, "right") + .from(subject.metadata.target, subject.metadata.targetName) + .whereInIds(parentId) + .getRawOne() + .then(function (result) { + var value = result ? result["right"] : undefined; + // CockroachDB returns numeric types as string + return typeof value === "string" ? parseInt(value) : value; + })]; + case 1: + parentNsRight = _a.sent(); + _a.label = 2; + case 2: + if (!(parentNsRight !== undefined)) return [3 /*break*/, 4]; + return [4 /*yield*/, this.queryRunner.query("UPDATE " + tableName + " SET " + + (leftColumnName + " = CASE WHEN " + leftColumnName + " > " + parentNsRight + " THEN " + leftColumnName + " + 2 ELSE " + leftColumnName + " END,") + + (rightColumnName + " = " + rightColumnName + " + 2 ") + + ("WHERE " + rightColumnName + " >= " + parentNsRight))]; + case 3: + _a.sent(); + OrmUtils["a" /* OrmUtils */].mergeDeep(subject.insertedValueSet, subject.metadata.nestedSetLeftColumn.createValueMap(parentNsRight), subject.metadata.nestedSetRightColumn.createValueMap(parentNsRight + 1)); + return [3 /*break*/, 5]; + case 4: + OrmUtils["a" /* OrmUtils */].mergeDeep(subject.insertedValueSet, subject.metadata.nestedSetLeftColumn.createValueMap(1), subject.metadata.nestedSetRightColumn.createValueMap(2)); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom + * schema name, otherwise returns escaped table name. + */ + NestedSetSubjectExecutor.prototype.getTableName = function (tablePath) { + var _this = this; + return tablePath.split(".") + .map(function (i) { + // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string + if (i === "") + return i; + return _this.queryRunner.connection.driver.escape(i); + }).join("."); + }; + return NestedSetSubjectExecutor; +}()); + + +//# sourceMappingURL=NestedSetSubjectExecutor.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CannotAttachTreeChildrenEntityError.js + +/** + * Thrown when user saves tree children entity but its parent is not saved yet. +*/ +var CannotAttachTreeChildrenEntityError_CannotAttachTreeChildrenEntityError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CannotAttachTreeChildrenEntityError, _super); + function CannotAttachTreeChildrenEntityError(entityName) { + var _this = _super.call(this) || this; + _this.name = "CannotAttachTreeChildrenEntityError"; + Object.setPrototypeOf(_this, CannotAttachTreeChildrenEntityError.prototype); + _this.message = "Cannot attach entity \"" + entityName + "\" to its parent. Please make sure parent is saved in the database before saving children nodes."; + return _this; + } + return CannotAttachTreeChildrenEntityError; +}(Error)); + + +//# sourceMappingURL=CannotAttachTreeChildrenEntityError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/tree/ClosureSubjectExecutor.js + + +/** + * Executes subject operations for closure entities. + */ +var ClosureSubjectExecutor_ClosureSubjectExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ClosureSubjectExecutor(queryRunner) { + this.queryRunner = queryRunner; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Removes all children of the given subject's entity. + + async deleteChildrenOf(subject: Subject) { + // const relationValue = subject.metadata.treeParentRelation.getEntityValue(subject.databaseEntity); + // console.log("relationValue: ", relationValue); + // this.queryRunner.manager + // .createQueryBuilder() + // .from(subject.metadata.closureJunctionTable.target, "tree") + // .where("tree."); + }*/ + /** + * Executes operations when subject is being inserted. + */ + ClosureSubjectExecutor.prototype.insert = function (subject) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var closureJunctionInsertMap, parent, escape_1, tableName, ancestorColumnNames, descendantColumnNames, firstQueryParameters_1, childEntityIdValues_1, childEntityIds1, whereCondition; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + closureJunctionInsertMap = {}; + subject.metadata.closureJunctionTable.ancestorColumns.forEach(function (column) { + closureJunctionInsertMap[column.databaseName] = subject.identifier; + }); + subject.metadata.closureJunctionTable.descendantColumns.forEach(function (column) { + closureJunctionInsertMap[column.databaseName] = subject.identifier; + }); + // insert values into the closure junction table + return [4 /*yield*/, this.queryRunner + .manager + .createQueryBuilder() + .insert() + .into(subject.metadata.closureJunctionTable.tablePath) + .values(closureJunctionInsertMap) + .updateEntity(false) + .callListeners(false) + .execute()]; + case 1: + // insert values into the closure junction table + _a.sent(); + parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); + if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children + parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity; + if (!parent) return [3 /*break*/, 3]; + escape_1 = function (alias) { return _this.queryRunner.connection.driver.escape(alias); }; + tableName = this.getTableName(subject.metadata.closureJunctionTable.tablePath); + ancestorColumnNames = subject.metadata.closureJunctionTable.ancestorColumns.map(function (column) { + return escape_1(column.databaseName); + }); + descendantColumnNames = subject.metadata.closureJunctionTable.descendantColumns.map(function (column) { + return escape_1(column.databaseName); + }); + firstQueryParameters_1 = []; + childEntityIdValues_1 = subject.metadata.primaryColumns.map(function (column) { return column.getEntityValue(subject.insertedValueSet); }); + childEntityIds1 = subject.metadata.primaryColumns.map(function (column, index) { + firstQueryParameters_1.push(childEntityIdValues_1[index]); + return _this.queryRunner.connection.driver.createParameter("child_entity_" + column.databaseName, firstQueryParameters_1.length - 1); + }); + whereCondition = subject.metadata.closureJunctionTable.descendantColumns.map(function (column) { + var columnName = escape_1(column.databaseName); + var parentId = column.referencedColumn.getEntityValue(parent); + if (!parentId) + throw new CannotAttachTreeChildrenEntityError_CannotAttachTreeChildrenEntityError(subject.metadata.name); + firstQueryParameters_1.push(parentId); + var parameterName = _this.queryRunner.connection.driver.createParameter("parent_entity_" + column.referencedColumn.databaseName, firstQueryParameters_1.length - 1); + return columnName + " = " + parameterName; + }).join(", "); + return [4 /*yield*/, this.queryRunner.query("INSERT INTO " + tableName + " (" + Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(ancestorColumnNames)), Object(tslib_es6["e" /* __read */])(descendantColumnNames)).join(", ") + ") " + + ("SELECT " + ancestorColumnNames.join(", ") + ", " + childEntityIds1.join(", ") + " FROM " + tableName + " WHERE " + whereCondition), firstQueryParameters_1)]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [2 /*return*/]; + } + }); + }); + }; + /** + * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom + * schema name, otherwise returns escaped table name. + */ + ClosureSubjectExecutor.prototype.getTableName = function (tablePath) { + var _this = this; + return tablePath.split(".") + .map(function (i) { + // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string + if (i === "") + return i; + return _this.queryRunner.connection.driver.escape(i); + }).join("."); + }; + return ClosureSubjectExecutor; +}()); + + +//# sourceMappingURL=ClosureSubjectExecutor.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/tree/MaterializedPathSubjectExecutor.js + +/** + * Executes subject operations for materialized-path tree entities. + */ +var MaterializedPathSubjectExecutor_MaterializedPathSubjectExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function MaterializedPathSubjectExecutor(queryRunner) { + this.queryRunner = queryRunner; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Executes operations when subject is being inserted. + */ + MaterializedPathSubjectExecutor.prototype.insert = function (subject) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var parent, parentId, parentPath, insertedEntityId; + var _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); + if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children + parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity; + parentId = subject.metadata.getEntityIdMap(parent); + parentPath = ""; + if (!parentId) return [3 /*break*/, 2]; + return [4 /*yield*/, this.queryRunner.manager + .createQueryBuilder() + .select(subject.metadata.targetName + "." + subject.metadata.materializedPathColumn.propertyPath, "path") + .from(subject.metadata.target, subject.metadata.targetName) + .whereInIds(parentId) + .getRawOne() + .then(function (result) { return result ? result["path"] : undefined; })]; + case 1: + parentPath = _b.sent(); + _b.label = 2; + case 2: + insertedEntityId = subject.metadata.treeParentRelation.joinColumns.map(function (joinColumn) { + return joinColumn.referencedColumn.getEntityValue(subject.insertedValueSet); + }).join("_"); + return [4 /*yield*/, this.queryRunner.manager + .createQueryBuilder() + .update(subject.metadata.target) + .set((_a = {}, + _a[subject.metadata.materializedPathColumn.propertyPath] = parentPath + insertedEntityId + ".", + _a)) + .where(subject.identifier) + .execute()]; + case 3: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + return MaterializedPathSubjectExecutor; +}()); + + +//# sourceMappingURL=MaterializedPathSubjectExecutor.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/SubjectExecutor.js + + + + + + + + + + + + + + +/** + * Executes all database operations (inserts, updated, deletes) that must be executed + * with given persistence subjects. + */ +var SubjectExecutor_SubjectExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function SubjectExecutor(queryRunner, subjects, options) { + // ------------------------------------------------------------------------- + // Public Properties + // ------------------------------------------------------------------------- + /** + * Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed). + */ + this.hasExecutableOperations = false; + /** + * Subjects that must be inserted. + */ + this.insertSubjects = []; + /** + * Subjects that must be updated. + */ + this.updateSubjects = []; + /** + * Subjects that must be removed. + */ + this.removeSubjects = []; + /** + * Subjects that must be soft-removed. + */ + this.softRemoveSubjects = []; + /** + * Subjects that must be recovered. + */ + this.recoverSubjects = []; + this.queryRunner = queryRunner; + this.allSubjects = subjects; + this.options = options; + this.validate(); + this.recompute(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Executes all operations over given array of subjects. + * Executes queries using given query runner. + */ + SubjectExecutor.prototype.execute = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var broadcasterResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + broadcasterResult = undefined; + if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 2]; + // console.time(".broadcastBeforeEventsForAll"); + broadcasterResult = this.broadcastBeforeEventsForAll(); + if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(broadcasterResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + // since event listeners and subscribers can call save methods and/or trigger entity changes we need to recompute operational subjects + // recompute only in the case if any listener or subscriber was really executed + if (broadcasterResult && broadcasterResult.count > 0) { + // console.time(".recompute"); + this.insertSubjects.forEach(function (subject) { return subject.recompute(); }); + this.updateSubjects.forEach(function (subject) { return subject.recompute(); }); + this.removeSubjects.forEach(function (subject) { return subject.recompute(); }); + this.softRemoveSubjects.forEach(function (subject) { return subject.recompute(); }); + this.recoverSubjects.forEach(function (subject) { return subject.recompute(); }); + this.recompute(); + // console.timeEnd(".recompute"); + } + // make sure our insert subjects are sorted (using topological sorting) to make cascade inserts work properly + // console.timeEnd("prepare"); + // execute all insert operations + // console.time(".insertion"); + this.insertSubjects = new SubjectTopoligicalSorter_SubjectTopoligicalSorter(this.insertSubjects).sort("insert"); + return [4 /*yield*/, this.executeInsertOperations()]; + case 3: + _a.sent(); + // console.timeEnd(".insertion"); + // recompute update operations since insertion can create updation operations for the + // properties it wasn't able to handle on its own (referenced columns) + this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; }); + // execute update operations + // console.time(".updation"); + return [4 /*yield*/, this.executeUpdateOperations()]; + case 4: + // execute update operations + // console.time(".updation"); + _a.sent(); + // console.timeEnd(".updation"); + // make sure our remove subjects are sorted (using topological sorting) when multiple entities are passed for the removal + // console.time(".removal"); + this.removeSubjects = new SubjectTopoligicalSorter_SubjectTopoligicalSorter(this.removeSubjects).sort("delete"); + return [4 /*yield*/, this.executeRemoveOperations()]; + case 5: + _a.sent(); + // console.timeEnd(".removal"); + // recompute soft-remove operations + this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; }); + // execute soft-remove operations + return [4 /*yield*/, this.executeSoftRemoveOperations()]; + case 6: + // execute soft-remove operations + _a.sent(); + // recompute recover operations + this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; }); + // execute recover operations + return [4 /*yield*/, this.executeRecoverOperations()]; + case 7: + // execute recover operations + _a.sent(); + // update all special columns in persisted entities, like inserted id or remove ids from the removed entities + // console.time(".updateSpecialColumnsInPersistedEntities"); + return [4 /*yield*/, this.updateSpecialColumnsInPersistedEntities()]; + case 8: + // update all special columns in persisted entities, like inserted id or remove ids from the removed entities + // console.time(".updateSpecialColumnsInPersistedEntities"); + _a.sent(); + if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 10]; + // console.time(".broadcastAfterEventsForAll"); + broadcasterResult = this.broadcastAfterEventsForAll(); + if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 10]; + return [4 /*yield*/, Promise.all(broadcasterResult.promises)]; + case 9: + _a.sent(); + _a.label = 10; + case 10: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Validates all given subjects. + */ + SubjectExecutor.prototype.validate = function () { + this.allSubjects.forEach(function (subject) { + if (subject.mustBeUpdated && subject.mustBeRemoved) + throw new SubjectRemovedAndUpdatedError_SubjectRemovedAndUpdatedError(subject); + }); + }; + /** + * Performs entity re-computations - finds changed columns, re-builds insert/update/remove subjects. + */ + SubjectExecutor.prototype.recompute = function () { + new SubjectChangedColumnsComputer_SubjectChangedColumnsComputer().compute(this.allSubjects); + this.insertSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeInserted; }); + this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; }); + this.removeSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRemoved; }); + this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; }); + this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; }); + this.hasExecutableOperations = this.insertSubjects.length > 0 || this.updateSubjects.length > 0 || this.removeSubjects.length > 0 || this.softRemoveSubjects.length > 0 || this.recoverSubjects.length > 0; + }; + /** + * Broadcasts "BEFORE_INSERT", "BEFORE_UPDATE", "BEFORE_REMOVE" events for all given subjects. + */ + SubjectExecutor.prototype.broadcastBeforeEventsForAll = function () { + var _this = this; + var result = new BroadcasterResult["a" /* BroadcasterResult */](); + if (this.insertSubjects.length) + this.insertSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity); }); + if (this.updateSubjects.length) + this.updateSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); }); + if (this.removeSubjects.length) + this.removeSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity); }); + if (this.softRemoveSubjects.length) + this.softRemoveSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); }); + if (this.recoverSubjects.length) + this.recoverSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); }); + return result; + }; + /** + * Broadcasts "AFTER_INSERT", "AFTER_UPDATE", "AFTER_REMOVE" events for all given subjects. + * Returns void if there wasn't any listener or subscriber executed. + * Note: this method has a performance-optimized code organization. + */ + SubjectExecutor.prototype.broadcastAfterEventsForAll = function () { + var _this = this; + var result = new BroadcasterResult["a" /* BroadcasterResult */](); + if (this.insertSubjects.length) + this.insertSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity); }); + if (this.updateSubjects.length) + this.updateSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); }); + if (this.removeSubjects.length) + this.removeSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity); }); + if (this.softRemoveSubjects.length) + this.softRemoveSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); }); + if (this.recoverSubjects.length) + this.recoverSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); }); + return result; + }; + /** + * Executes insert operations. + */ + SubjectExecutor.prototype.executeInsertOperations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a, groupedInsertSubjects, groupedInsertSubjectKeys, _loop_1, this_1, groupedInsertSubjectKeys_1, groupedInsertSubjectKeys_1_1, groupName, e_1_1; + var e_1, _b; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_c) { + switch (_c.label) { + case 0: + _a = Object(tslib_es6["e" /* __read */])(this.groupBulkSubjects(this.insertSubjects, "insert"), 2), groupedInsertSubjects = _a[0], groupedInsertSubjectKeys = _a[1]; + _loop_1 = function (groupName) { + var subjects, bulkInsertMaps, bulkInsertSubjects, singleInsertSubjects, manager, insertResult_1, insertResult_2, _loop_2, singleInsertSubjects_1, singleInsertSubjects_1_1, subject, e_2_1; + var e_2, _d; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + subjects = groupedInsertSubjects[groupName]; + bulkInsertMaps = []; + bulkInsertSubjects = []; + singleInsertSubjects = []; + if (this_1.queryRunner.connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */]) { + subjects.forEach(function (subject) { + if (subject.metadata.createDateColumn && subject.entity) { + subject.entity[subject.metadata.createDateColumn.databaseName] = new Date(); + } + if (subject.metadata.updateDateColumn && subject.entity) { + subject.entity[subject.metadata.updateDateColumn.databaseName] = new Date(); + } + subject.createValueSetAndPopChangeMap(); + bulkInsertSubjects.push(subject); + bulkInsertMaps.push(subject.entity); + }); + } + else if (this_1.queryRunner.connection.driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */]) { + subjects.forEach(function (subject) { + singleInsertSubjects.push(subject); + }); + } + else { + subjects.forEach(function (subject) { + // we do not insert in bulk in following cases: + // - when there is no values in insert (only defaults are inserted), since we cannot use DEFAULT VALUES expression for multiple inserted rows + // - when entity is a tree table, since tree tables require extra operation per each inserted row + // - when oracle is used, since oracle's bulk insertion is very bad + if (subject.changeMaps.length === 0 || + subject.metadata.treeType || + _this.queryRunner.connection.driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */] || + _this.queryRunner.connection.driver instanceof BrowserDisabledDriversDummy["l" /* SapDriver */]) { + singleInsertSubjects.push(subject); + } + else { + bulkInsertSubjects.push(subject); + bulkInsertMaps.push(subject.createValueSetAndPopChangeMap()); + } + }); + } + if (!(this_1.queryRunner instanceof BrowserDisabledDriversDummy["g" /* MongoQueryRunner */])) return [3 /*break*/, 2]; + manager = this_1.queryRunner.manager; + return [4 /*yield*/, manager.insert(subjects[0].metadata.target, bulkInsertMaps)]; + case 1: + insertResult_1 = _e.sent(); + subjects.forEach(function (subject, index) { + subject.identifier = insertResult_1.identifiers[index]; + subject.generatedMap = insertResult_1.generatedMaps[index]; + subject.insertedValueSet = bulkInsertMaps[index]; + }); + return [3 /*break*/, 12]; + case 2: + if (!(bulkInsertMaps.length > 0)) return [3 /*break*/, 4]; + return [4 /*yield*/, this_1.queryRunner + .manager + .createQueryBuilder() + .insert() + .into(subjects[0].metadata.target) + .values(bulkInsertMaps) + .updateEntity(this_1.options && this_1.options.reload === false ? false : true) + .callListeners(false) + .execute()]; + case 3: + insertResult_2 = _e.sent(); + bulkInsertSubjects.forEach(function (subject, index) { + subject.identifier = insertResult_2.identifiers[index]; + subject.generatedMap = insertResult_2.generatedMaps[index]; + subject.insertedValueSet = bulkInsertMaps[index]; + }); + _e.label = 4; + case 4: + if (!(singleInsertSubjects.length > 0)) return [3 /*break*/, 12]; + _loop_2 = function (subject) { + return Object(tslib_es6["d" /* __generator */])(this, function (_f) { + switch (_f.label) { + case 0: + subject.insertedValueSet = subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it + if (!(subject.metadata.treeType === "nested-set")) return [3 /*break*/, 2]; + return [4 /*yield*/, new NestedSetSubjectExecutor_NestedSetSubjectExecutor(this_1.queryRunner).insert(subject)]; + case 1: + _f.sent(); + _f.label = 2; + case 2: return [4 /*yield*/, this_1.queryRunner + .manager + .createQueryBuilder() + .insert() + .into(subject.metadata.target) + .values(subject.insertedValueSet) + .updateEntity(this_1.options && this_1.options.reload === false ? false : true) + .callListeners(false) + .execute() + .then(function (insertResult) { + subject.identifier = insertResult.identifiers[0]; + subject.generatedMap = insertResult.generatedMaps[0]; + })]; + case 3: + _f.sent(); + if (!(subject.metadata.treeType === "closure-table")) return [3 /*break*/, 5]; + return [4 /*yield*/, new ClosureSubjectExecutor_ClosureSubjectExecutor(this_1.queryRunner).insert(subject)]; + case 4: + _f.sent(); + return [3 /*break*/, 7]; + case 5: + if (!(subject.metadata.treeType === "materialized-path")) return [3 /*break*/, 7]; + return [4 /*yield*/, new MaterializedPathSubjectExecutor_MaterializedPathSubjectExecutor(this_1.queryRunner).insert(subject)]; + case 6: + _f.sent(); + _f.label = 7; + case 7: return [2 /*return*/]; + } + }); + }; + _e.label = 5; + case 5: + _e.trys.push([5, 10, 11, 12]); + singleInsertSubjects_1 = (e_2 = void 0, Object(tslib_es6["g" /* __values */])(singleInsertSubjects)), singleInsertSubjects_1_1 = singleInsertSubjects_1.next(); + _e.label = 6; + case 6: + if (!!singleInsertSubjects_1_1.done) return [3 /*break*/, 9]; + subject = singleInsertSubjects_1_1.value; + return [5 /*yield**/, _loop_2(subject)]; + case 7: + _e.sent(); + _e.label = 8; + case 8: + singleInsertSubjects_1_1 = singleInsertSubjects_1.next(); + return [3 /*break*/, 6]; + case 9: return [3 /*break*/, 12]; + case 10: + e_2_1 = _e.sent(); + e_2 = { error: e_2_1 }; + return [3 /*break*/, 12]; + case 11: + try { + if (singleInsertSubjects_1_1 && !singleInsertSubjects_1_1.done && (_d = singleInsertSubjects_1.return)) _d.call(singleInsertSubjects_1); + } + finally { if (e_2) throw e_2.error; } + return [7 /*endfinally*/]; + case 12: + subjects.forEach(function (subject) { + if (subject.generatedMap) { + subject.metadata.columns.forEach(function (column) { + var value = column.getEntityValue(subject.generatedMap); + if (value !== undefined && value !== null) { + var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column); + column.setEntityValue(subject.generatedMap, preparedValue); + } + }); + } + }); + return [2 /*return*/]; + } + }); + }; + this_1 = this; + _c.label = 1; + case 1: + _c.trys.push([1, 6, 7, 8]); + groupedInsertSubjectKeys_1 = Object(tslib_es6["g" /* __values */])(groupedInsertSubjectKeys), groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next(); + _c.label = 2; + case 2: + if (!!groupedInsertSubjectKeys_1_1.done) return [3 /*break*/, 5]; + groupName = groupedInsertSubjectKeys_1_1.value; + return [5 /*yield**/, _loop_1(groupName)]; + case 3: + _c.sent(); + _c.label = 4; + case 4: + groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_1_1 = _c.sent(); + e_1 = { error: e_1_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (groupedInsertSubjectKeys_1_1 && !groupedInsertSubjectKeys_1_1.done && (_b = groupedInsertSubjectKeys_1.return)) _b.call(groupedInsertSubjectKeys_1); + } + finally { if (e_1) throw e_1.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + /** + * Updates all given subjects in the database. + */ + SubjectExecutor.prototype.executeUpdateOperations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, Promise.all(this.updateSubjects.map(function (subject) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var partialEntity, manager, updateMap, updateQueryBuilder, updateResult, updateGeneratedMap_1; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!subject.identifier) + throw new SubjectWithoutIdentifierError_SubjectWithoutIdentifierError(subject); + if (!(this.queryRunner instanceof BrowserDisabledDriversDummy["g" /* MongoQueryRunner */])) return [3 /*break*/, 2]; + partialEntity = OrmUtils["a" /* OrmUtils */].mergeDeep({}, subject.entity); + if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) { + delete partialEntity[subject.metadata.objectIdColumn.propertyName]; + } + if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) { + delete partialEntity[subject.metadata.createDateColumn.propertyName]; + } + if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) { + partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date(); + } + manager = this.queryRunner.manager; + return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: + updateMap = subject.createValueSetAndPopChangeMap(); + updateQueryBuilder = this.queryRunner + .manager + .createQueryBuilder() + .update(subject.metadata.target) + .set(updateMap) + .updateEntity(this.options && this.options.reload === false ? false : true) + .callListeners(false); + if (subject.entity) { + updateQueryBuilder.whereEntity(subject.identifier); + } + else { // in this case identifier is just conditions object to update by + updateQueryBuilder.where(subject.identifier); + } + return [4 /*yield*/, updateQueryBuilder.execute()]; + case 3: + updateResult = _a.sent(); + updateGeneratedMap_1 = updateResult.generatedMaps[0]; + if (updateGeneratedMap_1) { + subject.metadata.columns.forEach(function (column) { + var value = column.getEntityValue(updateGeneratedMap_1); + if (value !== undefined && value !== null) { + var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column); + column.setEntityValue(updateGeneratedMap_1, preparedValue); + } + }); + if (!subject.generatedMap) { + subject.generatedMap = {}; + } + Object.assign(subject.generatedMap, updateGeneratedMap_1); + } + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); }))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Removes all given subjects from the database. + * + * todo: we need to apply topological sort here as well + */ + SubjectExecutor.prototype.executeRemoveOperations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a, groupedRemoveSubjects, groupedRemoveSubjectKeys, groupedRemoveSubjectKeys_1, groupedRemoveSubjectKeys_1_1, groupName, subjects, deleteMaps, manager, e_3_1; + var e_3, _b; + return Object(tslib_es6["d" /* __generator */])(this, function (_c) { + switch (_c.label) { + case 0: + _a = Object(tslib_es6["e" /* __read */])(this.groupBulkSubjects(this.removeSubjects, "delete"), 2), groupedRemoveSubjects = _a[0], groupedRemoveSubjectKeys = _a[1]; + _c.label = 1; + case 1: + _c.trys.push([1, 8, 9, 10]); + groupedRemoveSubjectKeys_1 = Object(tslib_es6["g" /* __values */])(groupedRemoveSubjectKeys), groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next(); + _c.label = 2; + case 2: + if (!!groupedRemoveSubjectKeys_1_1.done) return [3 /*break*/, 7]; + groupName = groupedRemoveSubjectKeys_1_1.value; + subjects = groupedRemoveSubjects[groupName]; + deleteMaps = subjects.map(function (subject) { + if (!subject.identifier) + throw new SubjectWithoutIdentifierError_SubjectWithoutIdentifierError(subject); + return subject.identifier; + }); + if (!(this.queryRunner instanceof BrowserDisabledDriversDummy["g" /* MongoQueryRunner */])) return [3 /*break*/, 4]; + manager = this.queryRunner.manager; + return [4 /*yield*/, manager.delete(subjects[0].metadata.target, deleteMaps)]; + case 3: + _c.sent(); + return [3 /*break*/, 6]; + case 4: + // here we execute our deletion query + // we don't need to specify entities and set update entity to true since the only thing query builder + // will do for use is a primary keys deletion which is handled by us later once persistence is finished + // also, we disable listeners because we call them on our own in persistence layer + return [4 /*yield*/, this.queryRunner + .manager + .createQueryBuilder() + .delete() + .from(subjects[0].metadata.target) + .where(deleteMaps) + .callListeners(false) + .execute()]; + case 5: + // here we execute our deletion query + // we don't need to specify entities and set update entity to true since the only thing query builder + // will do for use is a primary keys deletion which is handled by us later once persistence is finished + // also, we disable listeners because we call them on our own in persistence layer + _c.sent(); + _c.label = 6; + case 6: + groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next(); + return [3 /*break*/, 2]; + case 7: return [3 /*break*/, 10]; + case 8: + e_3_1 = _c.sent(); + e_3 = { error: e_3_1 }; + return [3 /*break*/, 10]; + case 9: + try { + if (groupedRemoveSubjectKeys_1_1 && !groupedRemoveSubjectKeys_1_1.done && (_b = groupedRemoveSubjectKeys_1.return)) _b.call(groupedRemoveSubjectKeys_1); + } + finally { if (e_3) throw e_3.error; } + return [7 /*endfinally*/]; + case 10: return [2 /*return*/]; + } + }); + }); + }; + /** + * Soft-removes all given subjects in the database. + */ + SubjectExecutor.prototype.executeSoftRemoveOperations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, Promise.all(this.softRemoveSubjects.map(function (subject) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var partialEntity, manager, softDeleteQueryBuilder, updateResult; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!subject.identifier) + throw new SubjectWithoutIdentifierError_SubjectWithoutIdentifierError(subject); + if (!(this.queryRunner instanceof BrowserDisabledDriversDummy["g" /* MongoQueryRunner */])) return [3 /*break*/, 2]; + partialEntity = OrmUtils["a" /* OrmUtils */].mergeDeep({}, subject.entity); + if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) { + delete partialEntity[subject.metadata.objectIdColumn.propertyName]; + } + if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) { + delete partialEntity[subject.metadata.createDateColumn.propertyName]; + } + if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) { + partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date(); + } + if (subject.metadata.deleteDateColumn && subject.metadata.deleteDateColumn.propertyName) { + partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date(); + } + manager = this.queryRunner.manager; + return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: + softDeleteQueryBuilder = this.queryRunner + .manager + .createQueryBuilder() + .softDelete() + .from(subject.metadata.target) + .updateEntity(this.options && this.options.reload === false ? false : true) + .callListeners(false); + if (subject.entity) { + softDeleteQueryBuilder.whereEntity(subject.identifier); + } + else { // in this case identifier is just conditions object to update by + softDeleteQueryBuilder.where(subject.identifier); + } + return [4 /*yield*/, softDeleteQueryBuilder.execute()]; + case 3: + updateResult = _a.sent(); + subject.generatedMap = updateResult.generatedMaps[0]; + if (subject.generatedMap) { + subject.metadata.columns.forEach(function (column) { + var value = column.getEntityValue(subject.generatedMap); + if (value !== undefined && value !== null) { + var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column); + column.setEntityValue(subject.generatedMap, preparedValue); + } + }); + } + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); }))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Recovers all given subjects in the database. + */ + SubjectExecutor.prototype.executeRecoverOperations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, Promise.all(this.recoverSubjects.map(function (subject) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var partialEntity, manager, softDeleteQueryBuilder, updateResult; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!subject.identifier) + throw new SubjectWithoutIdentifierError_SubjectWithoutIdentifierError(subject); + if (!(this.queryRunner instanceof BrowserDisabledDriversDummy["g" /* MongoQueryRunner */])) return [3 /*break*/, 2]; + partialEntity = OrmUtils["a" /* OrmUtils */].mergeDeep({}, subject.entity); + if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) { + delete partialEntity[subject.metadata.objectIdColumn.propertyName]; + } + if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) { + delete partialEntity[subject.metadata.createDateColumn.propertyName]; + } + if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) { + partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date(); + } + if (subject.metadata.deleteDateColumn && subject.metadata.deleteDateColumn.propertyName) { + partialEntity[subject.metadata.deleteDateColumn.propertyName] = null; + } + manager = this.queryRunner.manager; + return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: + softDeleteQueryBuilder = this.queryRunner + .manager + .createQueryBuilder() + .restore() + .from(subject.metadata.target) + .updateEntity(this.options && this.options.reload === false ? false : true) + .callListeners(false); + if (subject.entity) { + softDeleteQueryBuilder.whereEntity(subject.identifier); + } + else { // in this case identifier is just conditions object to update by + softDeleteQueryBuilder.where(subject.identifier); + } + return [4 /*yield*/, softDeleteQueryBuilder.execute()]; + case 3: + updateResult = _a.sent(); + subject.generatedMap = updateResult.generatedMaps[0]; + if (subject.generatedMap) { + subject.metadata.columns.forEach(function (column) { + var value = column.getEntityValue(subject.generatedMap); + if (value !== undefined && value !== null) { + var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column); + column.setEntityValue(subject.generatedMap, preparedValue); + } + }); + } + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); }))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Updates all special columns of the saving entities (create date, update date, version, etc.). + * Also updates nullable columns and columns with default values. + */ + SubjectExecutor.prototype.updateSpecialColumnsInPersistedEntities = function () { + var _this = this; + // update inserted entity properties + if (this.insertSubjects.length) + this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.insertSubjects); + // update updated entity properties + if (this.updateSubjects.length) + this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.updateSubjects); + // update soft-removed entity properties + if (this.updateSubjects.length) + this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.softRemoveSubjects); + // update recovered entity properties + if (this.updateSubjects.length) + this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.recoverSubjects); + // remove ids from the entities that were removed + if (this.removeSubjects.length) { + this.removeSubjects.forEach(function (subject) { + if (!subject.entity) + return; + subject.metadata.primaryColumns.forEach(function (primaryColumn) { + primaryColumn.setEntityValue(subject.entity, undefined); + }); + }); + } + // other post-persist updations + this.allSubjects.forEach(function (subject) { + if (!subject.entity) + return; + subject.metadata.relationIds.forEach(function (relationId) { + relationId.setValue(subject.entity); + }); + // mongo _id remove + if (_this.queryRunner instanceof BrowserDisabledDriversDummy["g" /* MongoQueryRunner */]) { + if (subject.metadata.objectIdColumn + && subject.metadata.objectIdColumn.databaseName + && subject.metadata.objectIdColumn.databaseName !== subject.metadata.objectIdColumn.propertyName) { + delete subject.entity[subject.metadata.objectIdColumn.databaseName]; + } + } + }); + }; + /** + * Updates all special columns of the saving entities (create date, update date, version, etc.). + * Also updates nullable columns and columns with default values. + */ + SubjectExecutor.prototype.updateSpecialColumnsInInsertedAndUpdatedEntities = function (subjects) { + var _this = this; + subjects.forEach(function (subject) { + if (!subject.entity) + return; + // set values to "null" for nullable columns that did not have values + subject.metadata.columns.forEach(function (column) { + // if table inheritance is used make sure this column is not child's column + if (subject.metadata.childEntityMetadatas.length > 0 && subject.metadata.childEntityMetadatas.map(function (metadata) { return metadata.target; }).indexOf(column.target) !== -1) + return; + // entities does not have virtual columns + if (column.isVirtual) + return; + // update nullable columns + if (column.isNullable) { + var columnValue = column.getEntityValue(subject.entity); + if (columnValue === undefined) + column.setEntityValue(subject.entity, null); + } + // update relational columns + if (subject.updatedRelationMaps.length > 0) { + subject.updatedRelationMaps.forEach(function (updatedRelationMap) { + updatedRelationMap.relation.joinColumns.forEach(function (column) { + if (column.isVirtual === true) + return; + column.setEntityValue(subject.entity, updatedRelationMap.value instanceof Object ? column.referencedColumn.getEntityValue(updatedRelationMap.value) : updatedRelationMap.value); + }); + }); + } + }); + // merge into entity all generated values returned by a database + if (subject.generatedMap) + _this.queryRunner.manager.merge(subject.metadata.target, subject.entity, subject.generatedMap); + }); + }; + /** + * Groups subjects by metadata names (by tables) to make bulk insertions and deletions possible. + * However there are some limitations with bulk insertions of data into tables with generated (increment) columns + * in some drivers. Some drivers like mysql and sqlite does not support returning multiple generated columns + * after insertion and can only return a single generated column value, that's why its not possible to do bulk insertion, + * because it breaks insertion result's generatedMap and leads to problems when this subject is used in other subjects saves. + * That's why we only support bulking in junction tables for those drivers. + * + * Other drivers like postgres and sql server support RETURNING / OUTPUT statement which allows to return generated + * id for each inserted row, that's why bulk insertion is not limited to junction tables in there. + */ + SubjectExecutor.prototype.groupBulkSubjects = function (subjects, type) { + var group = {}; + var keys = []; + var groupingAllowed = type === "delete" || this.queryRunner.connection.driver.isReturningSqlSupported(); + subjects.forEach(function (subject, index) { + var key = groupingAllowed || subject.metadata.isJunction ? subject.metadata.name : subject.metadata.name + "_" + index; + if (!group[key]) { + group[key] = [subject]; + keys.push(key); + } + else { + group[key].push(subject); + } + }); + return [group, keys]; + }; + return SubjectExecutor; +}()); + + +//# sourceMappingURL=SubjectExecutor.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CannotDetermineEntityError.js + +/** + * Thrown when user tries to save/remove/etc. constructor-less object (object literal) instead of entity. + */ +var CannotDetermineEntityError_CannotDetermineEntityError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CannotDetermineEntityError, _super); + function CannotDetermineEntityError(operation) { + var _this = _super.call(this) || this; + _this.name = "CannotDetermineEntityError"; + Object.setPrototypeOf(_this, CannotDetermineEntityError.prototype); + _this.message = "Cannot " + operation + ", given value must be instance of entity class, instead object literal is given. Or you must specify an entity target to method call."; + return _this; + } + return CannotDetermineEntityError; +}(Error)); + + +//# sourceMappingURL=CannotDetermineEntityError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/Subject.js + + +/** + * Subject is a subject of persistence. + * It holds information about each entity that needs to be persisted: + * - what entity should be persisted + * - what is database representation of the persisted entity + * - what entity metadata of the persisted entity + * - what is allowed to with persisted entity (insert/update/remove) + * + * Having this collection of subjects we can perform database queries. + */ +var Subject_Subject = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function Subject(options) { + var _a; + /** + * Subject identifier. + * This identifier is not limited to table entity primary columns. + * This can be entity id or ids as well as some unique entity properties, like name or title. + * Insert / Update / Remove operation will be executed by a given identifier. + */ + this.identifier = undefined; + /** + * Copy of entity but with relational ids fulfilled. + */ + this.entityWithFulfilledIds = undefined; + /** + * Indicates if database entity was loaded. + * No matter if it was found or not, it indicates the fact of loading. + */ + this.databaseEntityLoaded = false; + /** + * Changes needs to be applied in the database for the given subject. + */ + this.changeMaps = []; + /** + * Indicates if this subject can be inserted into the database. + * This means that this subject either is newly persisted, either can be inserted by cascades. + */ + this.canBeInserted = false; + /** + * Indicates if this subject can be updated in the database. + * This means that this subject either was persisted, either can be updated by cascades. + */ + this.canBeUpdated = false; + /** + * Indicates if this subject MUST be removed from the database. + * This means that this subject either was removed, either was removed by cascades. + */ + this.mustBeRemoved = false; + /** + * Indicates if this subject can be soft-removed from the database. + * This means that this subject either was soft-removed, either was soft-removed by cascades. + */ + this.canBeSoftRemoved = false; + /** + * Indicates if this subject can be recovered from the database. + * This means that this subject either was recovered, either was recovered by cascades. + */ + this.canBeRecovered = false; + /** + * Relations updated by the change maps. + */ + this.updatedRelationMaps = []; + /** + * List of updated columns + */ + this.diffColumns = []; + /** + * List of updated relations + */ + this.diffRelations = []; + this.metadata = options.metadata; + this.entity = options.entity; + this.parentSubject = options.parentSubject; + if (options.canBeInserted !== undefined) + this.canBeInserted = options.canBeInserted; + if (options.canBeUpdated !== undefined) + this.canBeUpdated = options.canBeUpdated; + if (options.mustBeRemoved !== undefined) + this.mustBeRemoved = options.mustBeRemoved; + if (options.canBeSoftRemoved !== undefined) + this.canBeSoftRemoved = options.canBeSoftRemoved; + if (options.canBeRecovered !== undefined) + this.canBeRecovered = options.canBeRecovered; + if (options.identifier !== undefined) + this.identifier = options.identifier; + if (options.changeMaps !== undefined) + (_a = this.changeMaps).push.apply(_a, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(options.changeMaps))); + this.recompute(); + } + Object.defineProperty(Subject.prototype, "mustBeInserted", { + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Checks if this subject must be inserted into the database. + * Subject can be inserted into the database if it is allowed to be inserted (explicitly persisted or by cascades) + * and if it does not have database entity set. + */ + get: function () { + return this.canBeInserted && !this.databaseEntity; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Subject.prototype, "mustBeUpdated", { + /** + * Checks if this subject must be updated into the database. + * Subject can be updated in the database if it is allowed to be updated (explicitly persisted or by cascades) + * and if it does have differentiated columns or relations. + */ + get: function () { + return this.canBeUpdated && + this.identifier && + (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity)) && + // ((this.entity && this.databaseEntity) || (!this.entity && !this.databaseEntity)) && + this.changeMaps.length > 0; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Subject.prototype, "mustBeSoftRemoved", { + /** + * Checks if this subject must be soft-removed into the database. + * Subject can be updated in the database if it is allowed to be soft-removed (explicitly persisted or by cascades) + * and if it does have differentiated columns or relations. + */ + get: function () { + return this.canBeSoftRemoved && + this.identifier && + (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity)); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Subject.prototype, "mustBeRecovered", { + /** + * Checks if this subject must be recovered into the database. + * Subject can be updated in the database if it is allowed to be recovered (explicitly persisted or by cascades) + * and if it does have differentiated columns or relations. + */ + get: function () { + return this.canBeRecovered && + this.identifier && + (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity)); + }, + enumerable: false, + configurable: true + }); + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a value set needs to be inserted / updated in the database. + * Value set is based on the entity and change maps of the subject. + * Important note: this method pops data from this subject's change maps. + */ + Subject.prototype.createValueSetAndPopChangeMap = function () { + var _this = this; + var changeMapsWithoutValues = []; + var changeSet = this.changeMaps.reduce(function (updateMap, changeMap) { + var value = changeMap.value; + if (value instanceof Subject) { + // referenced columns can refer on values both which were just inserted and which were present in the model + // if entity was just inserted valueSets must contain all values from the entity and values just inserted in the database + // so, here we check if we have a value set then we simply use it as value to get our reference column values + // otherwise simply use an entity which cannot be just inserted at the moment and have all necessary data + value = value.insertedValueSet ? value.insertedValueSet : value.entity; + } + // value = changeMap.valueFactory ? changeMap.valueFactory(value) : changeMap.column.createValueMap(value); + var valueMap; + if (_this.metadata.isJunction && changeMap.column) { + valueMap = changeMap.column.createValueMap(changeMap.column.referencedColumn.getEntityValue(value)); + } + else if (changeMap.column) { + valueMap = changeMap.column.createValueMap(value); + } + else if (changeMap.relation) { + // value can be a related object, for example: post.question = { id: 1 } + // or value can be a null or direct relation id, e.g. post.question = 1 + // if its a direction relation id then we just set it to the valueMap, + // however if its an object then we need to extract its relation id map and set it to the valueMap + if (value instanceof Object) { + // get relation id, e.g. referenced column name and its value, + // for example: { id: 1 } which then will be set to relation, e.g. post.category = { id: 1 } + var relationId = changeMap.relation.getRelationIdMap(value); + // but relation id can be empty, for example in the case when you insert a new post with category + // and both post and category are newly inserted objects (by cascades) and in this case category will not have id + // this means we need to insert post without question id and update post's questionId once question be inserted + // that's why we create a new changeMap operation for future updation of the post entity + if (relationId === undefined) { + changeMapsWithoutValues.push(changeMap); + _this.canBeUpdated = true; + return updateMap; + } + valueMap = changeMap.relation.createValueMap(relationId); + _this.updatedRelationMaps.push({ relation: changeMap.relation, value: relationId }); + } + else { // value can be "null" or direct relation id here + valueMap = changeMap.relation.createValueMap(value); + _this.updatedRelationMaps.push({ relation: changeMap.relation, value: value }); + } + } + OrmUtils["a" /* OrmUtils */].mergeDeep(updateMap, valueMap); + return updateMap; + }, {}); + this.changeMaps = changeMapsWithoutValues; + return changeSet; + }; + /** + * Recomputes entityWithFulfilledIds and identifier when entity changes. + */ + Subject.prototype.recompute = function () { + var _this = this; + if (this.entity) { + this.entityWithFulfilledIds = Object.assign({}, this.entity); + if (this.parentSubject) { + this.metadata.primaryColumns.forEach(function (primaryColumn) { + if (primaryColumn.relationMetadata && primaryColumn.relationMetadata.inverseEntityMetadata === _this.parentSubject.metadata) { + var value = primaryColumn.referencedColumn.getEntityValue(_this.parentSubject.entity); + primaryColumn.setEntityValue(_this.entityWithFulfilledIds, value); + } + }); + } + this.identifier = this.metadata.getEntityIdMap(this.entityWithFulfilledIds); + } + else if (this.databaseEntity) { + this.identifier = this.metadata.getEntityIdMap(this.databaseEntity); + } + }; + return Subject; +}()); + + +//# sourceMappingURL=Subject.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/metadata/EntityMetadata.js +var EntityMetadata = __webpack_require__(35); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/subject-builder/OneToManySubjectBuilder.js + + + +/** + * Builds operations needs to be executed for one-to-many relations of the given subjects. + * + * by example: post contains one-to-many relation with category in the property called "categories", e.g. + * @OneToMany(type => Category, category => category.post) categories: Category[] + * If user adds categories into the post and saves post we need to bind them. + * This operation requires updation of category table since its owner of the relation and contains a join column. + * + * note: this class shares lot of things with OneToOneInverseSideOperationBuilder, so when you change this class + * make sure to reflect changes there as well. + */ +var OneToManySubjectBuilder_OneToManySubjectBuilder = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function OneToManySubjectBuilder(subjects) { + this.subjects = subjects; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Builds all required operations. + */ + OneToManySubjectBuilder.prototype.build = function () { + var _this = this; + this.subjects.forEach(function (subject) { + subject.metadata.oneToManyRelations.forEach(function (relation) { + // skip relations for which persistence is disabled + if (relation.persistenceEnabled === false) + return; + _this.buildForSubjectRelation(subject, relation); + }); + }); + }; + // --------------------------------------------------------------------- + // Protected Methods + // --------------------------------------------------------------------- + /** + * Builds operations for a given subject and relation. + * + * by example: subject is "post" entity we are saving here and relation is "categories" inside it here. + */ + OneToManySubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) { + var _this = this; + // prepare objects (relation id maps) for the database entity + // note: subject.databaseEntity contains relations with loaded relation ids only + // by example: since subject is a post, we are expecting to get all post's categories saved in the database here, + // particularly their relation ids, e.g. category ids stored in the database + var relatedEntityDatabaseRelationIds = []; + if (subject.databaseEntity) { // related entities in the database can exist only if this entity (post) is saved + relatedEntityDatabaseRelationIds = relation.getEntityValue(subject.databaseEntity); + } + // get related entities of persisted entity + // by example: get categories from the passed to persist post entity + var relatedEntities = relation.getEntityValue(subject.entity); + if (relatedEntities === null) // we treat relations set to null as removed, so we don't skip it + relatedEntities = []; + if (relatedEntities === undefined) // if relation is undefined then nothing to update + return; + // extract only relation ids from the related entities, since we only need them for comparision + // by example: extract from categories only relation ids (category id, or let's say category title, depend on join column options) + var relatedPersistedEntityRelationIds = []; + relatedEntities.forEach(function (relatedEntity) { + var relationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); // by example: relationIdMap is category.id map here, e.g. { id: ... } + // try to find a subject of this related entity, maybe it was loaded or was marked for persistence + var relatedEntitySubject = _this.subjects.find(function (subject) { + return subject.entity === relatedEntity; + }); + // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved + if (relatedEntitySubject) + relationIdMap = relatedEntitySubject.identifier; + // if relationIdMap is undefined then it means user binds object which is not saved in the database yet + // by example: if post contains categories which does not have ids yet (because they are new) + // it means they are always newly inserted and relation update operation always must be created for them + // it does not make sense to perform difference operation for them for both add and remove actions + if (!relationIdMap) { + // we decided to remove this error because it brings complications when saving object with non-saved entities + // if (!relatedEntitySubject) + // throw new Error(`One-to-many relation "${relation.entityMetadata.name}.${relation.propertyPath}" contains ` + + // `entities which do not exist in the database yet, thus they cannot be bind in the database. ` + + // `Please setup cascade insertion or save entities before binding it.`); + if (!relatedEntitySubject) + return; + // okay, so related subject exist and its marked for insertion, then add a new change map + // by example: this will tell category to insert into its post relation our post we are working with + // relatedEntitySubject is newly inserted CategorySubject + // relation.inverseRelation is ManyToOne relation inside Category + // subject is Post needs to be inserted into Category + relatedEntitySubject.changeMaps.push({ + relation: relation.inverseRelation, + value: subject + }); + return; + } + // check if this binding really exist in the database + // by example: find our category if its already bind in the database + var relationIdInDatabaseSubjectRelation = relatedEntityDatabaseRelationIds.find(function (relatedDatabaseEntityRelationId) { + return OrmUtils["a" /* OrmUtils */].compareIds(relationIdMap, relatedDatabaseEntityRelationId); + }); + // if relationIdMap DOES NOT exist in the subject's relation in the database it means its a new relation and we need to "bind" them + // by example: this will tell category to insert into its post relation our post we are working with + // relatedEntitySubject is newly inserted CategorySubject + // relation.inverseRelation is ManyToOne relation inside Category + // subject is Post needs to be inserted into Category + if (!relationIdInDatabaseSubjectRelation) { + // if there is no relatedEntitySubject then it means "category" wasn't persisted, + // but since we are going to update "category" table (since its an owning side of relation with join column) + // we create a new subject here: + if (!relatedEntitySubject) { + relatedEntitySubject = new Subject_Subject({ + metadata: relation.inverseEntityMetadata, + parentSubject: subject, + canBeUpdated: true, + identifier: relationIdMap + }); + _this.subjects.push(relatedEntitySubject); + } + relatedEntitySubject.changeMaps.push({ + relation: relation.inverseRelation, + value: subject + }); + } + // if related entity has relation id then we add it to the list of relation ids + // this list will be used later to compare with database relation ids to find a difference + // what exist in this array and does not exist in the database are newly inserted relations + // what does not exist in this array, but exist in the database are removed relations + // removed relations are set to null from inverse side of relation + relatedPersistedEntityRelationIds.push(relationIdMap); + }); + // find what related entities were added and what were removed based on difference between what we save and what database has + EntityMetadata["a" /* EntityMetadata */] + .difference(relatedEntityDatabaseRelationIds, relatedPersistedEntityRelationIds) + .forEach(function (removedRelatedEntityRelationId) { + // todo: probably we can improve this in the future by finding entity with column those values, + // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns + // we create a new subject which operations will be executed in subject operation executor + var removedRelatedEntitySubject = new Subject_Subject({ + metadata: relation.inverseEntityMetadata, + parentSubject: subject, + identifier: removedRelatedEntityRelationId, + }); + if (!relation.inverseRelation || relation.inverseRelation.orphanedRowAction === "nullify") { + removedRelatedEntitySubject.canBeUpdated = true; + removedRelatedEntitySubject.changeMaps = [{ + relation: relation.inverseRelation, + value: null + }]; + } + else if (relation.inverseRelation.orphanedRowAction === "delete") { + removedRelatedEntitySubject.mustBeRemoved = true; + } + _this.subjects.push(removedRelatedEntitySubject); + }); + }; + return OneToManySubjectBuilder; +}()); + + +//# sourceMappingURL=OneToManySubjectBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js + + +/** + * Builds operations needs to be executed for one-to-one non-owner relations of the given subjects. + * + * by example: post contains one-to-one non-owner relation with category in the property called "category", e.g. + * @OneToOne(type => Category, category => category.post) category: Category + * If user sets a category into the post and saves post we need to bind them. + * This operation requires updation of category table since its owner of the relation and contains a join column. + * + * note: this class shares lot of things with OneToManyUpdateBuilder, so when you change this class + * make sure to reflect changes there as well. + */ +var OneToOneInverseSideSubjectBuilder_OneToOneInverseSideSubjectBuilder = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function OneToOneInverseSideSubjectBuilder(subjects) { + this.subjects = subjects; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Builds all required operations. + */ + OneToOneInverseSideSubjectBuilder.prototype.build = function () { + var _this = this; + this.subjects.forEach(function (subject) { + subject.metadata.oneToOneRelations.forEach(function (relation) { + // we don't need owning relations, this operation is only for inverse side of one-to-one relations + // skip relations for which persistence is disabled + if (relation.isOwning || relation.persistenceEnabled === false) + return; + _this.buildForSubjectRelation(subject, relation); + }); + }); + }; + // --------------------------------------------------------------------- + // Protected Methods + // --------------------------------------------------------------------- + /** + * Builds operations for a given subject and relation. + * + * by example: subject is "post" entity we are saving here and relation is "category" inside it here. + */ + OneToOneInverseSideSubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) { + // prepare objects (relation id map) for the database entity + // note: subject.databaseEntity contains relation with loaded relation id only (id map) + // by example: since subject is a post, we are expecting to get post's category saved in the database here, + // particularly its relation id, e.g. category id stored in the database + var relatedEntityDatabaseRelationId = undefined; + if (subject.databaseEntity) // related entity in the database can exist only if this entity (post) is saved + relatedEntityDatabaseRelationId = relation.getEntityValue(subject.databaseEntity); + // get related entities of persisted entity + // by example: get category from the passed to persist post entity + var relatedEntity = relation.getEntityValue(subject.entity); // by example: relatedEntity is a category here + if (relatedEntity === undefined) // if relation is undefined then nothing to update + return; + // if related entity is null then we need to check if there a bind in the database and unset it + // if there is no bind in the entity then we don't need to do anything + // by example: if post.category = null and category has this post in the database then we unset it + if (relatedEntity === null) { + // it makes sense to update database only there is a previously set value in the database + if (relatedEntityDatabaseRelationId) { + // todo: probably we can improve this in the future by finding entity with column those values, + // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns + // we create a new subject which operations will be executed in subject operation executor + var removedRelatedEntitySubject = new Subject_Subject({ + metadata: relation.inverseEntityMetadata, + parentSubject: subject, + canBeUpdated: true, + identifier: relatedEntityDatabaseRelationId, + changeMaps: [{ + relation: relation.inverseRelation, + value: null + }] + }); + this.subjects.push(removedRelatedEntitySubject); + } + return; + } // else means entity is bind in the database + // extract only relation id from the related entities, since we only need it for comparision + // by example: extract from category only relation id (category id, or let's say category title, depend on join column options) + var relationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); // by example: relationIdMap is category.id map here, e.g. { id: ... } + // try to find a subject of this related entity, maybe it was loaded or was marked for persistence + var relatedEntitySubject = this.subjects.find(function (operateSubject) { + return !!operateSubject.entity && operateSubject.entity === relatedEntity; + }); + // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved + if (relatedEntitySubject) + relationIdMap = relatedEntitySubject.identifier; + // if relationIdMap is undefined then it means user binds object which is not saved in the database yet + // by example: if post contains category which does not have id(s) yet (because its a new category) + // it means its always newly inserted and relation update operation always must be created for it + // it does not make sense to perform difference operation for it for both add and remove actions + if (!relationIdMap) { + // we decided to remove this error because it brings complications when saving object with non-saved entities + // if related entity does not have a subject then it means user tries to bind entity which wasn't saved + // in this persistence because he didn't pass this entity for save or he did not set cascades + // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here + // if (!relatedEntitySubject) + // throw new Error(`One-to-one inverse relation "${relation.entityMetadata.name}.${relation.propertyPath}" contains ` + + // `entity which does not exist in the database yet, thus cannot be bind in the database. ` + + // `Please setup cascade insertion or save entity before binding it.`); + if (!relatedEntitySubject) + return; + // okay, so related subject exist and its marked for insertion, then add a new change map + // by example: this will tell category to insert into its post relation our post we are working with + // relatedEntitySubject is newly inserted CategorySubject + // relation.inverseRelation is OneToOne owner relation inside Category + // subject is Post needs to be inserted into Category + relatedEntitySubject.changeMaps.push({ + relation: relation.inverseRelation, + value: subject + }); + } + // check if this binding really exist in the database + // by example: find our post if its already bind to category in the database and its not equal to what user tries to set + var areRelatedIdEqualWithDatabase = relatedEntityDatabaseRelationId && OrmUtils["a" /* OrmUtils */].compareIds(relationIdMap, relatedEntityDatabaseRelationId); + // if they aren't equal it means its a new relation and we need to "bind" them + // by example: this will tell category to insert into its post relation our post we are working with + // relatedEntitySubject is newly inserted CategorySubject + // relation.inverseRelation is ManyToOne relation inside Category + // subject is Post needs to be inserted into Category + if (!areRelatedIdEqualWithDatabase) { + // if there is no relatedEntitySubject then it means "category" wasn't persisted, + // but since we are going to update "category" table (since its an owning side of relation with join column) + // we create a new subject here: + if (!relatedEntitySubject) { + relatedEntitySubject = new Subject_Subject({ + metadata: relation.inverseEntityMetadata, + canBeUpdated: true, + identifier: relationIdMap + }); + this.subjects.push(relatedEntitySubject); + } + relatedEntitySubject.changeMaps.push({ + relation: relation.inverseRelation, + value: subject + }); + } + }; + return OneToOneInverseSideSubjectBuilder; +}()); + + +//# sourceMappingURL=OneToOneInverseSideSubjectBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/subject-builder/ManyToManySubjectBuilder.js + + +/** + * Builds operations needs to be executed for many-to-many relations of the given subjects. + * + * by example: post contains owner many-to-many relation with categories in the property called "categories", e.g. + * @ManyToMany(type => Category, category => category.posts) categories: Category[] + * If user adds categories into the post and saves post we need to bind them. + * This operation requires updation of junction table. + */ +var ManyToManySubjectBuilder_ManyToManySubjectBuilder = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function ManyToManySubjectBuilder(subjects) { + this.subjects = subjects; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Builds operations for any changes in the many-to-many relations of the subjects. + */ + ManyToManySubjectBuilder.prototype.build = function () { + var _this = this; + this.subjects.forEach(function (subject) { + // if subject doesn't have entity then no need to find something that should be inserted or removed + if (!subject.entity) + return; + // go through all persistence enabled many-to-many relations and build subject operations for them + subject.metadata.manyToManyRelations.forEach(function (relation) { + // skip relations for which persistence is disabled + if (relation.persistenceEnabled === false) + return; + _this.buildForSubjectRelation(subject, relation); + }); + }); + }; + /** + * Builds operations for removal of all many-to-many records of all many-to-many relations of the given subject. + */ + ManyToManySubjectBuilder.prototype.buildForAllRemoval = function (subject) { + var _this = this; + // if subject does not have a database entity then it means it does not exist in the database + // if it does not exist in the database then we don't have anything for deletion + if (!subject.databaseEntity) + return; + // go through all persistence enabled many-to-many relations and build subject operations for them + subject.metadata.manyToManyRelations.forEach(function (relation) { + // skip relations for which persistence is disabled + if (relation.persistenceEnabled === false) + return; + // get all related entities (actually related entity relation ids) bind to this subject entity + // by example: returns category ids of the post we are currently working with (subject.entity is post) + var relatedEntityRelationIdsInDatabase = relation.getEntityValue(subject.databaseEntity); + // go through all related entities and create a new junction subject for each row in junction table + relatedEntityRelationIdsInDatabase.forEach(function (relationId) { + var junctionSubject = new Subject_Subject({ + metadata: relation.junctionEntityMetadata, + parentSubject: subject, + mustBeRemoved: true, + identifier: _this.buildJunctionIdentifier(subject, relation, relationId) + }); + // we use unshift because we need to perform those operations before post deletion is performed + // but post deletion was already added as an subject + // this is temporary solution, later we need to implement proper sorting of subjects before their removal + _this.subjects.push(junctionSubject); + }); + }); + }; + // --------------------------------------------------------------------- + // Protected Methods + // --------------------------------------------------------------------- + /** + * Builds operations for a given subject and relation. + * + * by example: subject is "post" entity we are saving here and relation is "categories" inside it here. + */ + ManyToManySubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) { + var _this = this; + // load from db all relation ids of inverse entities that are "bind" to the subject's entity + // this way we gonna check which relation ids are missing and which are new (e.g. inserted or removed) + var databaseRelatedEntityIds = []; + // if subject don't have database entity it means all related entities in persisted subject are new and must be bind + // and we don't need to remove something that is not exist + if (subject.databaseEntity) + databaseRelatedEntityIds = relation.getEntityValue(subject.databaseEntity); + // extract entity's relation value + // by example: categories inside our post (subject.entity is post) + var relatedEntities = relation.getEntityValue(subject.entity); + if (relatedEntities === null) // if value set to null its equal if we set it to empty array - all items must be removed from the database + relatedEntities = []; + if (!(Array.isArray(relatedEntities))) + return; + // from all related entities find only those which aren't found in the db - for them we will create operation subjects + relatedEntities.forEach(function (relatedEntity) { + // todo: check how it will work for entities which are saved by cascades, but aren't saved in the database yet + // extract only relation id from the related entities, since we only need it for comparision + // by example: extract from category only relation id (category id, or let's say category title, depend on join column options) + var relatedEntityRelationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); + // try to find a subject of this related entity, maybe it was loaded or was marked for persistence + var relatedEntitySubject = _this.subjects.find(function (subject) { + return subject.entity === relatedEntity; + }); + // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved + if (relatedEntitySubject) + relatedEntityRelationIdMap = relatedEntitySubject.identifier; + // if related entity relation id map is empty it means related entity is newly persisted + if (!relatedEntityRelationIdMap) { + // we decided to remove this error because it brings complications when saving object with non-saved entities + // if related entity does not have a subject then it means user tries to bind entity which wasn't saved + // in this persistence because he didn't pass this entity for save or he did not set cascades + // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here + // we decided to remove this error because it brings complications when saving object with non-saved entities + // if (!relatedEntitySubject) + // throw new Error(`Many-to-many relation "${relation.entityMetadata.name}.${relation.propertyPath}" contains ` + + // `entities which do not exist in the database yet, thus they cannot be bind in the database. ` + + // `Please setup cascade insertion or save entities before binding it.`); + if (!relatedEntitySubject) + return; + } + // try to find related entity in the database + // by example: find post's category in the database post's categories + var relatedEntityExistInDatabase = databaseRelatedEntityIds.find(function (databaseRelatedEntityRelationId) { + return OrmUtils["a" /* OrmUtils */].compareIds(databaseRelatedEntityRelationId, relatedEntityRelationIdMap); + }); + // if entity is found then don't do anything - it means binding in junction table already exist, we don't need to add anything + if (relatedEntityExistInDatabase) + return; + var ownerValue = relation.isOwning ? subject : (relatedEntitySubject || relatedEntity); // by example: ownerEntityMap is post from subject here + var inverseValue = relation.isOwning ? (relatedEntitySubject || relatedEntity) : subject; // by example: inverseEntityMap is category from categories array here + // create a new subject for insert operation of junction rows + var junctionSubject = new Subject_Subject({ + metadata: relation.junctionEntityMetadata, + parentSubject: subject, + canBeInserted: true, + }); + _this.subjects.push(junctionSubject); + relation.junctionEntityMetadata.ownerColumns.forEach(function (column) { + junctionSubject.changeMaps.push({ + column: column, + value: ownerValue, + // valueFactory: (value) => column.referencedColumn!.getEntityValue(value) // column.referencedColumn!.getEntityValue(ownerEntityMap), + }); + }); + relation.junctionEntityMetadata.inverseColumns.forEach(function (column) { + junctionSubject.changeMaps.push({ + column: column, + value: inverseValue, + // valueFactory: (value) => column.referencedColumn!.getEntityValue(value) // column.referencedColumn!.getEntityValue(inverseEntityMap), + }); + }); + }); + // get all inverse entities relation ids that are "bind" to the currently persisted entity + var changedInverseEntityRelationIds = []; + relatedEntities.forEach(function (relatedEntity) { + // relation.inverseEntityMetadata!.getEntityIdMap(relatedEntity) + var relatedEntityRelationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); + // try to find a subject of this related entity, maybe it was loaded or was marked for persistence + var relatedEntitySubject = _this.subjects.find(function (subject) { + return subject.entity === relatedEntity; + }); + // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved + if (relatedEntitySubject) + relatedEntityRelationIdMap = relatedEntitySubject.identifier; + if (relatedEntityRelationIdMap !== undefined && relatedEntityRelationIdMap !== null) + changedInverseEntityRelationIds.push(relatedEntityRelationIdMap); + }); + // now from all entities in the persisted entity find only those which aren't found in the db + var removedJunctionEntityIds = databaseRelatedEntityIds.filter(function (existRelationId) { + return !changedInverseEntityRelationIds.find(function (changedRelationId) { + return OrmUtils["a" /* OrmUtils */].compareIds(changedRelationId, existRelationId); + }); + }); + // finally create a new junction remove operations for missing related entities + removedJunctionEntityIds.forEach(function (removedEntityRelationId) { + var junctionSubject = new Subject_Subject({ + metadata: relation.junctionEntityMetadata, + parentSubject: subject, + mustBeRemoved: true, + identifier: _this.buildJunctionIdentifier(subject, relation, removedEntityRelationId) + }); + _this.subjects.push(junctionSubject); + }); + }; + /** + * Creates identifiers for junction table. + * Example: { postId: 1, categoryId: 2 } + */ + ManyToManySubjectBuilder.prototype.buildJunctionIdentifier = function (subject, relation, relationId) { + var ownerEntityMap = relation.isOwning ? subject.entity : relationId; + var inverseEntityMap = relation.isOwning ? relationId : subject.entity; + var identifier = {}; + relation.junctionEntityMetadata.ownerColumns.forEach(function (column) { + OrmUtils["a" /* OrmUtils */].mergeDeep(identifier, column.createValueMap(column.referencedColumn.getEntityValue(ownerEntityMap))); + }); + relation.junctionEntityMetadata.inverseColumns.forEach(function (column) { + OrmUtils["a" /* OrmUtils */].mergeDeep(identifier, column.createValueMap(column.referencedColumn.getEntityValue(inverseEntityMap))); + }); + return identifier; + }; + return ManyToManySubjectBuilder; +}()); + + +//# sourceMappingURL=ManyToManySubjectBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/SubjectDatabaseEntityLoader.js + +/** + * Loads database entities for all operate subjects which do not have database entity set. + * All entities that we load database entities for are marked as updated or inserted. + * To understand which of them really needs to be inserted or updated we need to load + * their original representations from the database. + */ +var SubjectDatabaseEntityLoader_SubjectDatabaseEntityLoader = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function SubjectDatabaseEntityLoader(queryRunner, subjects) { + this.queryRunner = queryRunner; + this.subjects = subjects; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Loads database entities for all subjects. + * + * loadAllRelations flag is used to load all relation ids of the object, no matter if they present in subject entity or not. + * This option is used for deletion. + */ + SubjectDatabaseEntityLoader.prototype.load = function (operationType) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + promises = this.groupByEntityTargets().map(function (subjectGroup) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var allIds, allSubjects, loadRelationPropertyPaths, findOptions, entities, allSubjects_1, allSubjects_1_1, subject; + var e_1, _a; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + allIds = []; + allSubjects = []; + subjectGroup.subjects.forEach(function (subject) { + // we don't load if subject already has a database entity loaded + if (subject.databaseEntity || !subject.identifier) + return; + allIds.push(subject.identifier); + allSubjects.push(subject); + }); + // if there no ids found (means all entities are new and have generated ids) - then nothing to load there + if (!allIds.length) + return [2 /*return*/]; + loadRelationPropertyPaths = []; + // for the save, soft-remove and recover operation + // extract all property paths of the relations we need to load relation ids for + // this is for optimization purpose - this way we don't load relation ids for entities + // whose relations are undefined, and since they are undefined its really pointless to + // load something for them, since undefined properties are skipped by the orm + if (operationType === "save" || operationType === "soft-remove" || operationType === "recover") { + subjectGroup.subjects.forEach(function (subject) { + // gets all relation property paths that exist in the persisted entity. + subject.metadata.relations.forEach(function (relation) { + var value = relation.getEntityValue(subject.entityWithFulfilledIds); + if (value === undefined) + return; + if (loadRelationPropertyPaths.indexOf(relation.propertyPath) === -1) + loadRelationPropertyPaths.push(relation.propertyPath); + }); + }); + } + else { // remove + // for remove operation + // we only need to load junction relation ids since only they are removed by cascades + loadRelationPropertyPaths.push.apply(// remove + loadRelationPropertyPaths, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(subjectGroup.subjects[0].metadata.manyToManyRelations.map(function (relation) { return relation.propertyPath; })))); + } + findOptions = { + loadEagerRelations: false, + loadRelationIds: { + relations: loadRelationPropertyPaths, + disableMixedMap: true + }, + // the soft-deleted entities should be included in the loaded entities for recover operation + withDeleted: true + }; + return [4 /*yield*/, this.queryRunner.manager + .getRepository(subjectGroup.target) + .findByIds(allIds, findOptions)]; + case 1: + entities = _b.sent(); + // now when we have entities we need to find subject of each entity + // and insert that entity into database entity of the found subjects + entities.forEach(function (entity) { + var subjects = _this.findByPersistEntityLike(subjectGroup.target, entity); + subjects.forEach(function (subject) { + subject.databaseEntity = entity; + if (!subject.identifier) + subject.identifier = subject.metadata.hasAllPrimaryKeys(entity) ? subject.metadata.getEntityIdMap(entity) : undefined; + }); + }); + try { + // this way we tell what subjects we tried to load database entities of + for (allSubjects_1 = Object(tslib_es6["g" /* __values */])(allSubjects), allSubjects_1_1 = allSubjects_1.next(); !allSubjects_1_1.done; allSubjects_1_1 = allSubjects_1.next()) { + subject = allSubjects_1_1.value; + subject.databaseEntityLoaded = true; + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (allSubjects_1_1 && !allSubjects_1_1.done && (_a = allSubjects_1.return)) _a.call(allSubjects_1); + } + finally { if (e_1) throw e_1.error; } + } + return [2 /*return*/]; + } + }); + }); }); + return [4 /*yield*/, Promise.all(promises)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + // --------------------------------------------------------------------- + // Protected Methods + // --------------------------------------------------------------------- + /** + * Finds subjects where entity like given subject's entity. + * Comparision made by entity id. + * Multiple subjects may be returned if duplicates are present in the subject array. + * This will likely result in the same row being updated multiple times during a transaction. + */ + SubjectDatabaseEntityLoader.prototype.findByPersistEntityLike = function (entityTarget, entity) { + return this.subjects.filter(function (subject) { + if (!subject.entity) + return false; + if (subject.entity === entity) + return true; + return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds, entity); + }); + }; + /** + * Groups given Subject objects into groups separated by entity targets. + */ + SubjectDatabaseEntityLoader.prototype.groupByEntityTargets = function () { + return this.subjects.reduce(function (groups, operatedEntity) { + var group = groups.find(function (group) { return group.target === operatedEntity.metadata.target; }); + if (!group) { + group = { target: operatedEntity.metadata.target, subjects: [] }; + groups.push(group); + } + group.subjects.push(operatedEntity); + return groups; + }, []); + }; + return SubjectDatabaseEntityLoader; +}()); + + +//# sourceMappingURL=SubjectDatabaseEntityLoader.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/subject-builder/CascadesSubjectBuilder.js + + +/** + * Finds all cascade operations of the given subject and cascade operations of the found cascaded subjects, + * e.g. builds a cascade tree and creates a subjects for them. + */ +var CascadesSubjectBuilder_CascadesSubjectBuilder = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function CascadesSubjectBuilder(allSubjects) { + this.allSubjects = allSubjects; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Builds a cascade subjects tree and pushes them in into the given array of subjects. + */ + CascadesSubjectBuilder.prototype.build = function (subject, operationType) { + var _this = this; + subject.metadata + .extractRelationValuesFromEntity(subject.entity, subject.metadata.relations) // todo: we can create EntityMetadata.cascadeRelations + .forEach(function (_a) { + var _b = Object(tslib_es6["e" /* __read */])(_a, 3), relation = _b[0], relationEntity = _b[1], relationEntityMetadata = _b[2]; + // we need only defined values and insert, update, soft-remove or recover cascades of the relation should be set + if (relationEntity === undefined || + relationEntity === null || + (!relation.isCascadeInsert && !relation.isCascadeUpdate && !relation.isCascadeSoftRemove && !relation.isCascadeRecover)) + return; + // if relation entity is just a relation id set (for example post.tag = 1) + // then we don't really need to check cascades since there is no object to insert or update + if (!(relationEntity instanceof Object)) + return; + // if we already has this entity in list of operated subjects then skip it to avoid recursion + var alreadyExistRelationEntitySubject = _this.findByPersistEntityLike(relationEntityMetadata.target, relationEntity); + if (alreadyExistRelationEntitySubject) { + if (alreadyExistRelationEntitySubject.canBeInserted === false) // if its not marked for insertion yet + alreadyExistRelationEntitySubject.canBeInserted = relation.isCascadeInsert === true && operationType === "save"; + if (alreadyExistRelationEntitySubject.canBeUpdated === false) // if its not marked for update yet + alreadyExistRelationEntitySubject.canBeUpdated = relation.isCascadeUpdate === true && operationType === "save"; + if (alreadyExistRelationEntitySubject.canBeSoftRemoved === false) // if its not marked for removal yet + alreadyExistRelationEntitySubject.canBeSoftRemoved = relation.isCascadeSoftRemove === true && operationType === "soft-remove"; + if (alreadyExistRelationEntitySubject.canBeRecovered === false) // if its not marked for recovery yet + alreadyExistRelationEntitySubject.canBeRecovered = relation.isCascadeRecover === true && operationType === "recover"; + return; + } + // mark subject with what we can do with it + // and add to the array of subjects to load only if there is no same entity there already + var relationEntitySubject = new Subject_Subject({ + metadata: relationEntityMetadata, + parentSubject: subject, + entity: relationEntity, + canBeInserted: relation.isCascadeInsert === true && operationType === "save", + canBeUpdated: relation.isCascadeUpdate === true && operationType === "save", + canBeSoftRemoved: relation.isCascadeSoftRemove === true && operationType === "soft-remove", + canBeRecovered: relation.isCascadeRecover === true && operationType === "recover" + }); + _this.allSubjects.push(relationEntitySubject); + // go recursively and find other entities we need to insert/update + _this.build(relationEntitySubject, operationType); + }); + }; + // --------------------------------------------------------------------- + // Protected Methods + // --------------------------------------------------------------------- + /** + * Finds subject where entity like given subject's entity. + * Comparision made by entity id. + */ + CascadesSubjectBuilder.prototype.findByPersistEntityLike = function (entityTarget, entity) { + return this.allSubjects.find(function (subject) { + if (!subject.entity) + return false; + if (subject.entity === entity) + return true; + return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds, entity); + }); + }; + return CascadesSubjectBuilder; +}()); + + +//# sourceMappingURL=CascadesSubjectBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/persistence/EntityPersistExecutor.js + + + + + + + + + + + +/** + * Persists a single entity or multiple entities - saves or removes them. + */ +var EntityPersistExecutor_EntityPersistExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function EntityPersistExecutor(connection, queryRunner, mode, target, entity, options) { + this.connection = connection; + this.queryRunner = queryRunner; + this.mode = mode; + this.target = target; + this.entity = entity; + this.options = options; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Executes persistence operation ob given entity or entities. + */ + EntityPersistExecutor.prototype.execute = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, entities, entitiesInChunks, executors, executorsWithExecutableOperations, isTransactionStartedByUs, executorsWithExecutableOperations_1, executorsWithExecutableOperations_1_1, executor, e_1_1, error_1, rollbackError_1; + var e_1, _a; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + // check if entity we are going to save is valid and is an object + if (!this.entity || typeof this.entity !== "object") + return [2 /*return*/, Promise.reject(new MustBeEntityError_MustBeEntityError(this.mode, this.entity))]; + // we MUST call "fake" resolve here to make sure all properties of lazily loaded relations are resolved + return [4 /*yield*/, Promise.resolve()]; + case 1: + // we MUST call "fake" resolve here to make sure all properties of lazily loaded relations are resolved + _b.sent(); + queryRunner = this.queryRunner || this.connection.createQueryRunner(); + // save data in the query runner - this is useful functionality to share data from outside of the world + // with third classes - like subscribers and listener methods + if (this.options && this.options.data) + queryRunner.data = this.options.data; + _b.label = 2; + case 2: + _b.trys.push([2, , 22, 25]); + entities = Array.isArray(this.entity) ? this.entity : [this.entity]; + entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils["a" /* OrmUtils */].chunk(entities, this.options.chunk) : [entities]; + return [4 /*yield*/, Promise.all(entitiesInChunks.map(function (entities) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var subjects, cascadesSubjectBuilder; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + subjects = []; + // create subjects for all entities we received for the persistence + entities.forEach(function (entity) { + var entityTarget = _this.target ? _this.target : entity.constructor; + if (entityTarget === Object) + throw new CannotDetermineEntityError_CannotDetermineEntityError(_this.mode); + subjects.push(new Subject_Subject({ + metadata: _this.connection.getMetadata(entityTarget), + entity: entity, + canBeInserted: _this.mode === "save", + canBeUpdated: _this.mode === "save", + mustBeRemoved: _this.mode === "remove", + canBeSoftRemoved: _this.mode === "soft-remove", + canBeRecovered: _this.mode === "recover" + })); + }); + cascadesSubjectBuilder = new CascadesSubjectBuilder_CascadesSubjectBuilder(subjects); + subjects.forEach(function (subject) { + // next step we build list of subjects we will operate with + // these subjects are subjects that we need to insert or update alongside with main persisted entity + cascadesSubjectBuilder.build(subject, _this.mode); + }); + // console.timeEnd("building cascades..."); + // load database entities for all subjects we have + // next step is to load database entities for all operate subjects + // console.time("loading..."); + return [4 /*yield*/, new SubjectDatabaseEntityLoader_SubjectDatabaseEntityLoader(queryRunner, subjects).load(this.mode)]; + case 1: + // console.timeEnd("building cascades..."); + // load database entities for all subjects we have + // next step is to load database entities for all operate subjects + // console.time("loading..."); + _a.sent(); + // console.timeEnd("loading..."); + // console.time("other subjects..."); + // build all related subjects and change maps + if (this.mode === "save" || this.mode === "soft-remove" || this.mode === "recover") { + new OneToManySubjectBuilder_OneToManySubjectBuilder(subjects).build(); + new OneToOneInverseSideSubjectBuilder_OneToOneInverseSideSubjectBuilder(subjects).build(); + new ManyToManySubjectBuilder_ManyToManySubjectBuilder(subjects).build(); + } + else { + subjects.forEach(function (subject) { + if (subject.mustBeRemoved) { + new ManyToManySubjectBuilder_ManyToManySubjectBuilder(subjects).buildForAllRemoval(subject); + } + }); + } + // console.timeEnd("other subjects..."); + // console.timeEnd("building subjects..."); + // console.log("subjects", subjects); + // create a subject executor + return [2 /*return*/, new SubjectExecutor_SubjectExecutor(queryRunner, subjects, this.options)]; + } + }); + }); }))]; + case 3: + executors = _b.sent(); + executorsWithExecutableOperations = executors.filter(function (executor) { return executor.hasExecutableOperations; }); + if (executorsWithExecutableOperations.length === 0) + return [2 /*return*/]; + isTransactionStartedByUs = false; + _b.label = 4; + case 4: + _b.trys.push([4, 16, , 21]); + if (!!queryRunner.isTransactionActive) return [3 /*break*/, 6]; + if (!(!this.options || this.options.transaction !== false)) return [3 /*break*/, 6]; + isTransactionStartedByUs = true; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 5: + _b.sent(); + _b.label = 6; + case 6: + _b.trys.push([6, 11, 12, 13]); + executorsWithExecutableOperations_1 = Object(tslib_es6["g" /* __values */])(executorsWithExecutableOperations), executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next(); + _b.label = 7; + case 7: + if (!!executorsWithExecutableOperations_1_1.done) return [3 /*break*/, 10]; + executor = executorsWithExecutableOperations_1_1.value; + return [4 /*yield*/, executor.execute()]; + case 8: + _b.sent(); + _b.label = 9; + case 9: + executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next(); + return [3 /*break*/, 7]; + case 10: return [3 /*break*/, 13]; + case 11: + e_1_1 = _b.sent(); + e_1 = { error: e_1_1 }; + return [3 /*break*/, 13]; + case 12: + try { + if (executorsWithExecutableOperations_1_1 && !executorsWithExecutableOperations_1_1.done && (_a = executorsWithExecutableOperations_1.return)) _a.call(executorsWithExecutableOperations_1); + } + finally { if (e_1) throw e_1.error; } + return [7 /*endfinally*/]; + case 13: + if (!(isTransactionStartedByUs === true)) return [3 /*break*/, 15]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 14: + _b.sent(); + _b.label = 15; + case 15: return [3 /*break*/, 21]; + case 16: + error_1 = _b.sent(); + if (!isTransactionStartedByUs) return [3 /*break*/, 20]; + _b.label = 17; + case 17: + _b.trys.push([17, 19, , 20]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 18: + _b.sent(); + return [3 /*break*/, 20]; + case 19: + rollbackError_1 = _b.sent(); + return [3 /*break*/, 20]; + case 20: throw error_1; + case 21: return [3 /*break*/, 25]; + case 22: + if (!!this.queryRunner) return [3 /*break*/, 24]; + return [4 /*yield*/, queryRunner.release()]; + case 23: + _b.sent(); + _b.label = 24; + case 24: return [7 /*endfinally*/]; + case 25: return [2 /*return*/]; + } + }); + }); + }; + return EntityPersistExecutor; +}()); + + +//# sourceMappingURL=EntityPersistExecutor.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/ObjectUtils.js +var ObjectUtils = __webpack_require__(24); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/entity-manager/EntityManager.js + + + + + + + + + + + + + + + + + + + + +/** + * Entity manager supposed to work with any entity, automatically find its repository and call its methods, + * whatever entity type are you passing. + */ +var EntityManager_EntityManager = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function EntityManager(connection, queryRunner) { + // ------------------------------------------------------------------------- + // Protected Properties + // ------------------------------------------------------------------------- + /** + * Once created and then reused by en repositories. + */ + this.repositories = []; + /** + * Plain to object transformer used in create and merge operations. + */ + this.plainObjectToEntityTransformer = new PlainObjectToNewEntityTransformer(); + this.connection = connection; + if (queryRunner) { + this.queryRunner = queryRunner; + // dynamic: this.queryRunner = manager; + ObjectUtils["a" /* ObjectUtils */].assign(this.queryRunner, { manager: this }); + } + } + /** + * Wraps given function execution (and all operations made there) in a transaction. + * All database operations must be executed using provided entity manager. + */ + EntityManager.prototype.transaction = function (isolationOrRunInTransaction, runInTransactionParam) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var isolation, runInTransaction, queryRunner, result, err_1, rollbackError_1; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + isolation = typeof isolationOrRunInTransaction === "string" ? isolationOrRunInTransaction : undefined; + runInTransaction = typeof isolationOrRunInTransaction === "function" ? isolationOrRunInTransaction : runInTransactionParam; + if (!runInTransaction) { + throw new Error("Transaction method requires callback in second paramter if isolation level is supplied."); + } + if (this.connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */]) + throw new Error("Transactions aren't supported by MongoDB."); + if (this.queryRunner && this.queryRunner.isReleased) + throw new QueryRunnerProviderAlreadyReleasedError_QueryRunnerProviderAlreadyReleasedError(); + if (this.queryRunner && this.queryRunner.isTransactionActive) + throw new Error("Cannot start transaction because its already started"); + queryRunner = this.queryRunner || this.connection.createQueryRunner(); + _a.label = 1; + case 1: + _a.trys.push([1, 8, 13, 16]); + if (!isolation) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction(isolation)]; + case 2: + _a.sent(); + return [3 /*break*/, 5]; + case 3: return [4 /*yield*/, queryRunner.startTransaction()]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [4 /*yield*/, runInTransaction(queryRunner.manager)]; + case 6: + result = _a.sent(); + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 7: + _a.sent(); + return [2 /*return*/, result]; + case 8: + err_1 = _a.sent(); + _a.label = 9; + case 9: + _a.trys.push([9, 11, , 12]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 10: + _a.sent(); + return [3 /*break*/, 12]; + case 11: + rollbackError_1 = _a.sent(); + return [3 /*break*/, 12]; + case 12: throw err_1; + case 13: + if (!!this.queryRunner) return [3 /*break*/, 15]; + return [4 /*yield*/, queryRunner.release()]; + case 14: + _a.sent(); + _a.label = 15; + case 15: return [7 /*endfinally*/]; + case 16: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes raw SQL query and returns raw database results. + */ + EntityManager.prototype.query = function (query, parameters) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.connection.query(query, parameters, this.queryRunner)]; + }); + }); + }; + /** + * Creates a new query builder that can be used to build a sql query. + */ + EntityManager.prototype.createQueryBuilder = function (entityClass, alias, queryRunner) { + if (alias) { + return this.connection.createQueryBuilder(entityClass, alias, queryRunner || this.queryRunner); + } + else { + return this.connection.createQueryBuilder(entityClass || queryRunner || this.queryRunner); + } + }; + /** + * Checks if entity has an id by its Function type or schema name. + */ + EntityManager.prototype.hasId = function (targetOrEntity, maybeEntity) { + var target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor; + var entity = arguments.length === 2 ? maybeEntity : targetOrEntity; + var metadata = this.connection.getMetadata(target); + return metadata.hasId(entity); + }; + /** + * Gets entity mixed id. + */ + EntityManager.prototype.getId = function (targetOrEntity, maybeEntity) { + var target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor; + var entity = arguments.length === 2 ? maybeEntity : targetOrEntity; + var metadata = this.connection.getMetadata(target); + return metadata.getEntityIdMixedMap(entity); + }; + /** + * Creates a new entity instance or instances. + * Can copy properties from the given object into new entities. + */ + EntityManager.prototype.create = function (entityClass, plainObjectOrObjects) { + var _this = this; + var metadata = this.connection.getMetadata(entityClass); + if (!plainObjectOrObjects) + return metadata.create(this.queryRunner); + if (Array.isArray(plainObjectOrObjects)) + return plainObjectOrObjects.map(function (plainEntityLike) { return _this.create(entityClass, plainEntityLike); }); + var mergeIntoEntity = metadata.create(this.queryRunner); + this.plainObjectToEntityTransformer.transform(mergeIntoEntity, plainObjectOrObjects, metadata, true); + return mergeIntoEntity; + }; + /** + * Merges two entities into one new entity. + */ + EntityManager.prototype.merge = function (entityClass, mergeIntoEntity) { + var _this = this; + var entityLikes = []; + for (var _i = 2; _i < arguments.length; _i++) { + entityLikes[_i - 2] = arguments[_i]; + } + var metadata = this.connection.getMetadata(entityClass); + entityLikes.forEach(function (object) { return _this.plainObjectToEntityTransformer.transform(mergeIntoEntity, object, metadata); }); + return mergeIntoEntity; + }; + /** + * Creates a new entity from the given plain javascript object. If entity already exist in the database, then + * it loads it (and everything related to it), replaces all values with the new ones from the given object + * and returns this new entity. This new entity is actually a loaded from the db entity with all properties + * replaced from the new object. + */ + EntityManager.prototype.preload = function (entityClass, entityLike) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, plainObjectToDatabaseEntityTransformer, transformedEntity; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + metadata = this.connection.getMetadata(entityClass); + plainObjectToDatabaseEntityTransformer = new PlainObjectToDatabaseEntityTransformer_PlainObjectToDatabaseEntityTransformer(this.connection.manager); + return [4 /*yield*/, plainObjectToDatabaseEntityTransformer.transform(entityLike, metadata)]; + case 1: + transformedEntity = _a.sent(); + if (transformedEntity) + return [2 /*return*/, this.merge(entityClass, transformedEntity, entityLike)]; + return [2 /*return*/, undefined]; + } + }); + }); + }; + /** + * Saves a given entity in the database. + */ + EntityManager.prototype.save = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) { + // normalize mixed parameters + var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof EntitySchema["a" /* EntitySchema */] || typeof targetOrEntity === "string")) ? targetOrEntity : undefined; + var entity = target ? maybeEntityOrOptions : targetOrEntity; + var options = target ? maybeOptions : maybeEntityOrOptions; + if (target instanceof EntitySchema["a" /* EntitySchema */]) + target = target.options.name; + // if user passed empty array of entities then we don't need to do anything + if (Array.isArray(entity) && entity.length === 0) + return Promise.resolve(entity); + // execute save operation + return new EntityPersistExecutor_EntityPersistExecutor(this.connection, this.queryRunner, "save", target, entity, options) + .execute() + .then(function () { return entity; }); + }; + /** + * Removes a given entity from the database. + */ + EntityManager.prototype.remove = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) { + // normalize mixed parameters + var target = (arguments.length > 1 && (targetOrEntity instanceof Function || typeof targetOrEntity === "string")) ? targetOrEntity : undefined; + var entity = target ? maybeEntityOrOptions : targetOrEntity; + var options = target ? maybeOptions : maybeEntityOrOptions; + // if user passed empty array of entities then we don't need to do anything + if (Array.isArray(entity) && entity.length === 0) + return Promise.resolve(entity); + // execute save operation + return new EntityPersistExecutor_EntityPersistExecutor(this.connection, this.queryRunner, "remove", target, entity, options) + .execute() + .then(function () { return entity; }); + }; + /** + * Records the delete date of one or many given entities. + */ + EntityManager.prototype.softRemove = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) { + // normalize mixed parameters + var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof EntitySchema["a" /* EntitySchema */] || typeof targetOrEntity === "string")) ? targetOrEntity : undefined; + var entity = target ? maybeEntityOrOptions : targetOrEntity; + var options = target ? maybeOptions : maybeEntityOrOptions; + if (target instanceof EntitySchema["a" /* EntitySchema */]) + target = target.options.name; + // if user passed empty array of entities then we don't need to do anything + if (Array.isArray(entity) && entity.length === 0) + return Promise.resolve(entity); + // execute soft-remove operation + return new EntityPersistExecutor_EntityPersistExecutor(this.connection, this.queryRunner, "soft-remove", target, entity, options) + .execute() + .then(function () { return entity; }); + }; + /** + * Recovers one or many given entities. + */ + EntityManager.prototype.recover = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) { + // normalize mixed parameters + var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof EntitySchema["a" /* EntitySchema */] || typeof targetOrEntity === "string")) ? targetOrEntity : undefined; + var entity = target ? maybeEntityOrOptions : targetOrEntity; + var options = target ? maybeOptions : maybeEntityOrOptions; + if (target instanceof EntitySchema["a" /* EntitySchema */]) + target = target.options.name; + // if user passed empty array of entities then we don't need to do anything + if (Array.isArray(entity) && entity.length === 0) + return Promise.resolve(entity); + // execute recover operation + return new EntityPersistExecutor_EntityPersistExecutor(this.connection, this.queryRunner, "recover", target, entity, options) + .execute() + .then(function () { return entity; }); + }; + /** + * Inserts a given entity into the database. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient INSERT query. + * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted. + * You can execute bulk inserts using this method. + */ + EntityManager.prototype.insert = function (target, entity) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.createQueryBuilder() + .insert() + .into(target) + .values(entity) + .execute()]; + }); + }); + }; + /** + * Updates entity partially. Entity can be found by a given condition(s). + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient UPDATE query. + * Does not check if entity exist in the database. + * Condition(s) cannot be empty. + */ + EntityManager.prototype.update = function (target, criteria, partialEntity) { + // if user passed empty criteria or empty list of criterias, then throw an error + if (criteria === undefined || + criteria === null || + criteria === "" || + (Array.isArray(criteria) && criteria.length === 0)) { + return Promise.reject(new Error("Empty criteria(s) are not allowed for the update method.")); + } + if (typeof criteria === "string" || + typeof criteria === "number" || + criteria instanceof Date || + Array.isArray(criteria)) { + return this.createQueryBuilder() + .update(target) + .set(partialEntity) + .whereInIds(criteria) + .execute(); + } + else { + return this.createQueryBuilder() + .update(target) + .set(partialEntity) + .where(criteria) + .execute(); + } + }; + /** + * Deletes entities by a given condition(s). + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient DELETE query. + * Does not check if entity exist in the database. + * Condition(s) cannot be empty. + */ + EntityManager.prototype.delete = function (targetOrEntity, criteria) { + // if user passed empty criteria or empty list of criterias, then throw an error + if (criteria === undefined || + criteria === null || + criteria === "" || + (Array.isArray(criteria) && criteria.length === 0)) { + return Promise.reject(new Error("Empty criteria(s) are not allowed for the delete method.")); + } + if (typeof criteria === "string" || + typeof criteria === "number" || + criteria instanceof Date || + Array.isArray(criteria)) { + return this.createQueryBuilder() + .delete() + .from(targetOrEntity) + .whereInIds(criteria) + .execute(); + } + else { + return this.createQueryBuilder() + .delete() + .from(targetOrEntity) + .where(criteria) + .execute(); + } + }; + /** + * Records the delete date of entities by a given condition(s). + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient DELETE query. + * Does not check if entity exist in the database. + * Condition(s) cannot be empty. + */ + EntityManager.prototype.softDelete = function (targetOrEntity, criteria) { + // if user passed empty criteria or empty list of criterias, then throw an error + if (criteria === undefined || + criteria === null || + criteria === "" || + (Array.isArray(criteria) && criteria.length === 0)) { + return Promise.reject(new Error("Empty criteria(s) are not allowed for the delete method.")); + } + if (typeof criteria === "string" || + typeof criteria === "number" || + criteria instanceof Date || + Array.isArray(criteria)) { + return this.createQueryBuilder() + .softDelete() + .from(targetOrEntity) + .whereInIds(criteria) + .execute(); + } + else { + return this.createQueryBuilder() + .softDelete() + .from(targetOrEntity) + .where(criteria) + .execute(); + } + }; + /** + * Restores entities by a given condition(s). + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient DELETE query. + * Does not check if entity exist in the database. + * Condition(s) cannot be empty. + */ + EntityManager.prototype.restore = function (targetOrEntity, criteria) { + // if user passed empty criteria or empty list of criterias, then throw an error + if (criteria === undefined || + criteria === null || + criteria === "" || + (Array.isArray(criteria) && criteria.length === 0)) { + return Promise.reject(new Error("Empty criteria(s) are not allowed for the delete method.")); + } + if (typeof criteria === "string" || + typeof criteria === "number" || + criteria instanceof Date || + Array.isArray(criteria)) { + return this.createQueryBuilder() + .restore() + .from(targetOrEntity) + .whereInIds(criteria) + .execute(); + } + else { + return this.createQueryBuilder() + .restore() + .from(targetOrEntity) + .where(criteria) + .execute(); + } + }; + /** + * Counts entities that match given find options or conditions. + * Useful for pagination. + */ + EntityManager.prototype.count = function (entityClass, optionsOrConditions) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, qb; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + metadata = this.connection.getMetadata(entityClass); + qb = this.createQueryBuilder(entityClass, FindOptionsUtils_FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name); + return [2 /*return*/, FindOptionsUtils_FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getCount()]; + }); + }); + }; + /** + * Finds entities that match given find options or conditions. + */ + EntityManager.prototype.find = function (entityClass, optionsOrConditions) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, qb; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + metadata = this.connection.getMetadata(entityClass); + qb = this.createQueryBuilder(entityClass, FindOptionsUtils_FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name); + if (!FindOptionsUtils_FindOptionsUtils.isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false) + FindOptionsUtils_FindOptionsUtils.joinEagerRelations(qb, qb.alias, metadata); + return [2 /*return*/, FindOptionsUtils_FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getMany()]; + }); + }); + }; + /** + * Finds entities that match given find options and conditions. + * Also counts all entities that match given conditions, + * but ignores pagination settings (from and take options). + */ + EntityManager.prototype.findAndCount = function (entityClass, optionsOrConditions) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, qb; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + metadata = this.connection.getMetadata(entityClass); + qb = this.createQueryBuilder(entityClass, FindOptionsUtils_FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name); + if (!FindOptionsUtils_FindOptionsUtils.isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false) + FindOptionsUtils_FindOptionsUtils.joinEagerRelations(qb, qb.alias, metadata); + return [2 /*return*/, FindOptionsUtils_FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getManyAndCount()]; + }); + }); + }; + /** + * Finds entities with ids. + * Optionally find options or conditions can be applied. + */ + EntityManager.prototype.findByIds = function (entityClass, ids, optionsOrConditions) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, qb; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + // if no ids passed, no need to execute a query - just return an empty array of values + if (!ids.length) + return [2 /*return*/, Promise.resolve([])]; + metadata = this.connection.getMetadata(entityClass); + qb = this.createQueryBuilder(entityClass, FindOptionsUtils_FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name); + FindOptionsUtils_FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions); + if (!FindOptionsUtils_FindOptionsUtils.isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false) + FindOptionsUtils_FindOptionsUtils.joinEagerRelations(qb, qb.alias, metadata); + return [2 /*return*/, qb.andWhereInIds(ids).getMany()]; + }); + }); + }; + /** + * Finds first entity that matches given conditions. + */ + EntityManager.prototype.findOne = function (entityClass, idOrOptionsOrConditions, maybeOptions) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var findOptions, options, metadata, alias, qb, passedId; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + findOptions = undefined; + if (FindOptionsUtils_FindOptionsUtils.isFindOneOptions(idOrOptionsOrConditions)) { + findOptions = idOrOptionsOrConditions; + } + else if (maybeOptions && FindOptionsUtils_FindOptionsUtils.isFindOneOptions(maybeOptions)) { + findOptions = maybeOptions; + } + options = undefined; + if (idOrOptionsOrConditions instanceof Object && !FindOptionsUtils_FindOptionsUtils.isFindOneOptions(idOrOptionsOrConditions)) + options = idOrOptionsOrConditions; + metadata = this.connection.getMetadata(entityClass); + alias = metadata.name; + if (findOptions && findOptions.join) { + alias = findOptions.join.alias; + } + else if (maybeOptions && FindOptionsUtils_FindOptionsUtils.isFindOneOptions(maybeOptions) && maybeOptions.join) { + alias = maybeOptions.join.alias; + } + qb = this.createQueryBuilder(entityClass, alias); + if (!findOptions || findOptions.loadEagerRelations !== false) + FindOptionsUtils_FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata); + passedId = typeof idOrOptionsOrConditions === "string" || typeof idOrOptionsOrConditions === "number" || idOrOptionsOrConditions instanceof Date; + if (!passedId) { + findOptions = Object(tslib_es6["a" /* __assign */])(Object(tslib_es6["a" /* __assign */])({}, (findOptions || {})), { take: 1 }); + } + FindOptionsUtils_FindOptionsUtils.applyOptionsToQueryBuilder(qb, findOptions); + if (options) { + qb.where(options); + } + else if (passedId) { + qb.andWhereInIds(metadata.ensureEntityIdMap(idOrOptionsOrConditions)); + } + return [2 /*return*/, qb.getOne()]; + }); + }); + }; + /** + * Finds first entity that matches given conditions or rejects the returned promise on error. + */ + EntityManager.prototype.findOneOrFail = function (entityClass, idOrOptionsOrConditions, maybeOptions) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.findOne(entityClass, idOrOptionsOrConditions, maybeOptions).then(function (value) { + if (value === undefined) { + return Promise.reject(new EntityNotFoundError["a" /* EntityNotFoundError */](entityClass, idOrOptionsOrConditions)); + } + return Promise.resolve(value); + })]; + }); + }); + }; + /** + * Clears all the data from the given table (truncates/drops it). + * + * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms. + * @see https://stackoverflow.com/a/5972738/925151 + */ + EntityManager.prototype.clear = function (entityClass) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, queryRunner; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + metadata = this.connection.getMetadata(entityClass); + queryRunner = this.queryRunner || this.connection.createQueryRunner(); + _a.label = 1; + case 1: + _a.trys.push([1, , 3, 6]); + return [4 /*yield*/, queryRunner.clearTable(metadata.tablePath)]; + case 2: return [2 /*return*/, _a.sent()]; // await is needed here because we are using finally + case 3: + if (!!this.queryRunner) return [3 /*break*/, 5]; + return [4 /*yield*/, queryRunner.release()]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [7 /*endfinally*/]; + case 6: return [2 /*return*/]; + } + }); + }); + }; + /** + * Increments some column by provided value of the entities matched given conditions. + */ + EntityManager.prototype.increment = function (entityClass, conditions, propertyPath, value) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, column, values; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + metadata = this.connection.getMetadata(entityClass); + column = metadata.findColumnWithPropertyPath(propertyPath); + if (!column) + throw new Error("Column " + propertyPath + " was not found in " + metadata.targetName + " entity."); + if (isNaN(Number(value))) + throw new Error("Value \"" + value + "\" is not a number."); + values = propertyPath + .split(".") + .reduceRight(function (value, key) { + var _a; + return (_a = {}, _a[key] = value, _a); + }, function () { return _this.connection.driver.escape(column.databaseName) + " + " + value; }); + return [2 /*return*/, this + .createQueryBuilder(entityClass, "entity") + .update(entityClass) + .set(values) + .where(conditions) + .execute()]; + }); + }); + }; + /** + * Decrements some column by provided value of the entities matched given conditions. + */ + EntityManager.prototype.decrement = function (entityClass, conditions, propertyPath, value) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, column, values; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + metadata = this.connection.getMetadata(entityClass); + column = metadata.findColumnWithPropertyPath(propertyPath); + if (!column) + throw new Error("Column " + propertyPath + " was not found in " + metadata.targetName + " entity."); + if (isNaN(Number(value))) + throw new Error("Value \"" + value + "\" is not a number."); + values = propertyPath + .split(".") + .reduceRight(function (value, key) { + var _a; + return (_a = {}, _a[key] = value, _a); + }, function () { return _this.connection.driver.escape(column.databaseName) + " - " + value; }); + return [2 /*return*/, this + .createQueryBuilder(entityClass, "entity") + .update(entityClass) + .set(values) + .where(conditions) + .execute()]; + }); + }); + }; + /** + * Gets repository for the given entity class or name. + * If single database connection mode is used, then repository is obtained from the + * repository aggregator, where each repository is individually created for this entity manager. + * When single database connection is not used, repository is being obtained from the connection. + */ + EntityManager.prototype.getRepository = function (target) { + // throw exception if there is no repository with this target registered + if (!this.connection.hasMetadata(target)) + throw new RepositoryNotFoundError_RepositoryNotFoundError(this.connection.name, target); + // find already created repository instance and return it if found + var metadata = this.connection.getMetadata(target); + var repository = this.repositories.find(function (repository) { return repository.metadata === metadata; }); + if (repository) + return repository; + // if repository was not found then create it, store its instance and return it + var newRepository = new RepositoryFactory_RepositoryFactory().create(this, metadata, this.queryRunner); + this.repositories.push(newRepository); + return newRepository; + }; + /** + * Gets tree repository for the given entity class or name. + * If single database connection mode is used, then repository is obtained from the + * repository aggregator, where each repository is individually created for this entity manager. + * When single database connection is not used, repository is being obtained from the connection. + */ + EntityManager.prototype.getTreeRepository = function (target) { + // tree tables aren't supported by some drivers (mongodb) + if (this.connection.driver.treeSupport === false) + throw new TreeRepositoryNotSupportedError_TreeRepositoryNotSupportedError(this.connection.driver); + // check if repository is real tree repository + var repository = this.getRepository(target); + if (!(repository instanceof TreeRepository_TreeRepository)) + throw new RepositoryNotTreeError_RepositoryNotTreeError(target); + return repository; + }; + /** + * Gets mongodb repository for the given entity class. + */ + EntityManager.prototype.getMongoRepository = function (target) { + return this.connection.getMongoRepository(target); + }; + /** + * Gets custom entity repository marked with @EntityRepository decorator. + */ + EntityManager.prototype.getCustomRepository = function (customRepository) { + var entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find(function (repository) { + return repository.target === (customRepository instanceof Function ? customRepository : customRepository.constructor); + }); + if (!entityRepositoryMetadataArgs) + throw new CustomRepositoryNotFoundError_CustomRepositoryNotFoundError(customRepository); + var entityMetadata = entityRepositoryMetadataArgs.entity ? this.connection.getMetadata(entityRepositoryMetadataArgs.entity) : undefined; + var entityRepositoryInstance = new entityRepositoryMetadataArgs.target(this, entityMetadata); + // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed, + // however we need these properties for internal work of the class + if (entityRepositoryInstance instanceof AbstractRepository_AbstractRepository) { + if (!entityRepositoryInstance["manager"]) + entityRepositoryInstance["manager"] = this; + } + if (entityRepositoryInstance instanceof Repository_Repository) { + if (!entityMetadata) + throw new CustomRepositoryCannotInheritRepositoryError_CustomRepositoryCannotInheritRepositoryError(customRepository); + entityRepositoryInstance["manager"] = this; + entityRepositoryInstance["metadata"] = entityMetadata; + } + return entityRepositoryInstance; + }; + /** + * Releases all resources used by entity manager. + * This is used when entity manager is created with a single query runner, + * and this single query runner needs to be released after job with entity manager is done. + */ + EntityManager.prototype.release = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + if (!this.queryRunner) + throw new NoNeedToReleaseEntityManagerError_NoNeedToReleaseEntityManagerError(); + return [2 /*return*/, this.queryRunner.release()]; + }); + }); + }; + return EntityManager; +}()); + + +//# sourceMappingURL=EntityManager.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/entity-manager/SqljsEntityManager.js + + +/** + * A special EntityManager that includes import/export and load/save function + * that are unique to Sql.js. + */ +var SqljsEntityManager_SqljsEntityManager = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(SqljsEntityManager, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function SqljsEntityManager(connection, queryRunner) { + var _this = _super.call(this, connection, queryRunner) || this; + _this.driver = connection.driver; + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Loads either the definition from a file (Node.js) or localstorage (browser) + * or uses the given definition to open a new database. + */ + SqljsEntityManager.prototype.loadDatabase = function (fileNameOrLocalStorageOrData) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.driver.load(fileNameOrLocalStorageOrData)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Saves the current database to a file (Node.js) or localstorage (browser) + * if fileNameOrLocalStorage is not set options.location is used. + */ + SqljsEntityManager.prototype.saveDatabase = function (fileNameOrLocalStorage) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.driver.save(fileNameOrLocalStorage)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Returns the current database definition. + */ + SqljsEntityManager.prototype.exportDatabase = function () { + return this.driver.export(); + }; + return SqljsEntityManager; +}(EntityManager_EntityManager)); + + +//# sourceMappingURL=SqljsEntityManager.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js +var SqljsDriver = __webpack_require__(41); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/entity-manager/EntityManagerFactory.js + + + + + +/** + * Helps to create entity managers. + */ +var EntityManagerFactory_EntityManagerFactory = /** @class */ (function () { + function EntityManagerFactory() { + } + /** + * Creates a new entity manager depend on a given connection's driver. + */ + EntityManagerFactory.prototype.create = function (connection, queryRunner) { + if (connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */]) + return new BrowserDisabledDriversDummy["f" /* MongoEntityManager */](connection); + if (connection.driver instanceof SqljsDriver["a" /* SqljsDriver */]) + return new SqljsEntityManager_SqljsEntityManager(connection, queryRunner); + return new EntityManager_EntityManager(connection, queryRunner); + }; + return EntityManagerFactory; +}()); + + +//# sourceMappingURL=EntityManagerFactory.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/MissingDriverError.js + +/** + * Thrown when consumer specifies driver type that does not exist or supported. + */ +var MissingDriverError_MissingDriverError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(MissingDriverError, _super); + function MissingDriverError(driverType) { + var _this = _super.call(this) || this; + _this.name = "MissingDriverError"; + Object.setPrototypeOf(_this, MissingDriverError.prototype); + _this.message = "Wrong driver: \"" + driverType + "\" given. Supported drivers are: \"cordova\", \"expo\", \"mariadb\", \"mongodb\", \"mssql\", \"mysql\", \"oracle\", \"postgres\", \"sqlite\", \"better-sqlite3\", \"sqljs\", \"react-native\", \"aurora-data-api\", \"aurora-data-api-pg\"."; + return _this; + } + return MissingDriverError; +}(Error)); + + +//# sourceMappingURL=MissingDriverError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js +var QueryRunnerAlreadyReleasedError = __webpack_require__(34); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/QueryFailedError.js +var QueryFailedError = __webpack_require__(39); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +var AbstractSqliteQueryRunner = __webpack_require__(73); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/subscriber/Broadcaster.js +var Broadcaster = __webpack_require__(54); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/cordova/CordovaQueryRunner.js + + + + + +/** + * Runs queries on a single sqlite database connection. + */ +var CordovaQueryRunner_CordovaQueryRunner = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CordovaQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function CordovaQueryRunner(driver) { + var _this = _super.call(this) || this; + _this.driver = driver; + _this.connection = driver.connection; + _this.broadcaster = new Broadcaster["a" /* Broadcaster */](_this); + return _this; + } + /** + * Executes a given SQL query. + */ + CordovaQueryRunner.prototype.query = function (query, parameters) { + var _this = this; + if (this.isReleased) + throw new QueryRunnerAlreadyReleasedError["a" /* QueryRunnerAlreadyReleasedError */](); + return new Promise(function (ok, fail) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var databaseConnection, queryStartTime; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.connect()]; + case 1: + databaseConnection = _a.sent(); + this.driver.connection.logger.logQuery(query, parameters, this); + queryStartTime = +new Date(); + databaseConnection.executeSql(query, parameters, function (result) { + // log slow queries if maxQueryExecution time is set + var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime; + var queryEndTime = +new Date(); + var queryExecutionTime = queryEndTime - queryStartTime; + if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) + _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this); + if (query.substr(0, 11) === "INSERT INTO") { + ok(result.insertId); + } + else { + var resultSet = []; + for (var i = 0; i < result.rows.length; i++) { + resultSet.push(result.rows.item(i)); + } + ok(resultSet); + } + }, function (err) { + _this.driver.connection.logger.logQueryError(err, query, parameters, _this); + fail(new QueryFailedError["a" /* QueryFailedError */](query, parameters, err)); + }); + return [2 /*return*/]; + } + }); + }); }); + }; + /** + * Insert a new row with given values into the given table. + * Returns value of the generated column if given and generate column exist in the table. + // todo: implement new syntax + async insert(tableName: string, keyValues: ObjectLiteral): Promise { + const keys = Object.keys(keyValues); + const columns = keys.map(key => `"${key}"`).join(", "); + const values = keys.map(key => "?").join(","); + const generatedColumns = this.connection.hasMetadata(tableName) ? this.connection.getMetadata(tableName).generatedColumns : []; + const sql = columns.length > 0 ? (`INSERT INTO "${tableName}"(${columns}) VALUES (${values})`) : `INSERT INTO "${tableName}" DEFAULT VALUES`; + const parameters = keys.map(key => keyValues[key]); + + return new Promise(async (ok, fail) => { + this.driver.connection.logger.logQuery(sql, parameters, this); + const __this = this; + const databaseConnection = await this.connect(); + databaseConnection.executeSql(sql, parameters, (resultSet: any) => { + const generatedMap = generatedColumns.reduce((map, generatedColumn) => { + const value = generatedColumn.isPrimary && generatedColumn.generationStrategy === "increment" && resultSet.insertId ? resultSet.insertId : keyValues[generatedColumn.databaseName]; + if (!value) return map; + return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value)); + }, {} as ObjectLiteral); + + ok({ + result: undefined, + generatedMap: Object.keys(generatedMap).length > 0 ? generatedMap : undefined + }); + }, (err: any) => { + __this.driver.connection.logger.logQueryError(err, sql, parameters, this); + fail(err); + }); + }); + }*/ + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Parametrizes given object of values. Used to create column=value queries. + */ + CordovaQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) { + if (startIndex === void 0) { startIndex = 0; } + return Object.keys(objectLiteral).map(function (key, index) { return "\"" + key + "\"" + "=?"; }); + }; + return CordovaQueryRunner; +}(AbstractSqliteQueryRunner["a" /* AbstractSqliteQueryRunner */])); + + +//# sourceMappingURL=CordovaQueryRunner.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/DriverOptionNotSetError.js +var DriverOptionNotSetError = __webpack_require__(37); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js +var DriverPackageNotInstalledError = __webpack_require__(71); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/cordova/CordovaDriver.js + + + + + +var CordovaDriver_CordovaDriver = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CordovaDriver, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function CordovaDriver(connection) { + var _this = _super.call(this, connection) || this; + // this.connection = connection; + // this.options = connection.options as CordovaConnectionOptions; + _this.database = _this.options.database; + // validate options to make sure everything is set + if (!_this.options.database) + throw new DriverOptionNotSetError["a" /* DriverOptionNotSetError */]("database"); + if (!_this.options.location) + throw new DriverOptionNotSetError["a" /* DriverOptionNotSetError */]("location"); + // load sqlite package + _this.loadDependencies(); + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Closes connection with database. + */ + CordovaDriver.prototype.disconnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + _this.queryRunner = undefined; + _this.databaseConnection.close(ok, fail); + })]; + }); + }); + }; + /** + * Creates a query runner used to execute database queries. + */ + CordovaDriver.prototype.createQueryRunner = function (mode) { + if (!this.queryRunner) + this.queryRunner = new CordovaQueryRunner_CordovaQueryRunner(this); + return this.queryRunner; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates connection with the database. + */ + CordovaDriver.prototype.createDatabaseConnection = function () { + var _this = this; + return new Promise(function (ok, fail) { + var options = Object.assign({}, { + name: _this.options.database, + location: _this.options.location, + }, _this.options.extra || {}); + _this.sqlite.openDatabase(options, function (db) { + var databaseConnection = db; + // we need to enable foreign keys in sqlite to make sure all foreign key related features + // working properly. this also makes onDelete to work with sqlite. + databaseConnection.executeSql("PRAGMA foreign_keys = ON;", [], function (result) { + ok(databaseConnection); + }, function (error) { + fail(error); + }); + }, function (error) { + fail(error); + }); + }); + }; + /** + * If driver dependency is not given explicitly, then try to load it via "require". + */ + CordovaDriver.prototype.loadDependencies = function () { + try { + this.sqlite = window.sqlitePlugin; + } + catch (e) { + throw new DriverPackageNotInstalledError["a" /* DriverPackageNotInstalledError */]("Cordova-SQLite", "cordova-sqlite-storage"); + } + }; + return CordovaDriver; +}(AbstractSqliteDriver["a" /* AbstractSqliteDriver */])); + + +//# sourceMappingURL=CordovaDriver.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/react-native/ReactNativeQueryRunner.js + + + + + +/** + * Runs queries on a single sqlite database connection. + */ +var ReactNativeQueryRunner_ReactNativeQueryRunner = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(ReactNativeQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ReactNativeQueryRunner(driver) { + var _this = _super.call(this) || this; + _this.driver = driver; + _this.connection = driver.connection; + _this.broadcaster = new Broadcaster["a" /* Broadcaster */](_this); + return _this; + } + /** + * Executes a given SQL query. + */ + ReactNativeQueryRunner.prototype.query = function (query, parameters) { + var _this = this; + if (this.isReleased) + throw new QueryRunnerAlreadyReleasedError["a" /* QueryRunnerAlreadyReleasedError */](); + return new Promise(function (ok, fail) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var databaseConnection, queryStartTime; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.connect()]; + case 1: + databaseConnection = _a.sent(); + this.driver.connection.logger.logQuery(query, parameters, this); + queryStartTime = +new Date(); + databaseConnection.executeSql(query, parameters, function (result) { + // log slow queries if maxQueryExecution time is set + var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime; + var queryEndTime = +new Date(); + var queryExecutionTime = queryEndTime - queryStartTime; + if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) + _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this); + // return id of inserted row, if query was insert statement. + if (query.substr(0, 11) === "INSERT INTO") { + ok(result.insertId); + } + else { + var resultSet = []; + for (var i = 0; i < result.rows.length; i++) { + resultSet.push(result.rows.item(i)); + } + ok(resultSet); + } + }, function (err) { + _this.driver.connection.logger.logQueryError(err, query, parameters, _this); + fail(new QueryFailedError["a" /* QueryFailedError */](query, parameters, err)); + }); + return [2 /*return*/]; + } + }); + }); }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Parametrizes given object of values. Used to create column=value queries. + */ + ReactNativeQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) { + if (startIndex === void 0) { startIndex = 0; } + return Object.keys(objectLiteral).map(function (key, index) { return "\"" + key + "\"" + "=?"; }); + }; + return ReactNativeQueryRunner; +}(AbstractSqliteQueryRunner["a" /* AbstractSqliteQueryRunner */])); + + +//# sourceMappingURL=ReactNativeQueryRunner.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/react-native/ReactNativeDriver.js + + + + + +var ReactNativeDriver_ReactNativeDriver = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(ReactNativeDriver, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ReactNativeDriver(connection) { + var _this = _super.call(this, connection) || this; + _this.database = _this.options.database; + // validate options to make sure everything is set + if (!_this.options.database) + throw new DriverOptionNotSetError["a" /* DriverOptionNotSetError */]("database"); + if (!_this.options.location) + throw new DriverOptionNotSetError["a" /* DriverOptionNotSetError */]("location"); + // load sqlite package + _this.loadDependencies(); + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Closes connection with database. + */ + ReactNativeDriver.prototype.disconnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + _this.queryRunner = undefined; + _this.databaseConnection.close(ok, fail); + })]; + }); + }); + }; + /** + * Creates a query runner used to execute database queries. + */ + ReactNativeDriver.prototype.createQueryRunner = function (mode) { + if (!this.queryRunner) + this.queryRunner = new ReactNativeQueryRunner_ReactNativeQueryRunner(this); + return this.queryRunner; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates connection with the database. + */ + ReactNativeDriver.prototype.createDatabaseConnection = function () { + var _this = this; + return new Promise(function (ok, fail) { + var options = Object.assign({}, { + name: _this.options.database, + location: _this.options.location, + }, _this.options.extra || {}); + _this.sqlite.openDatabase(options, function (db) { + var databaseConnection = db; + // we need to enable foreign keys in sqlite to make sure all foreign key related features + // working properly. this also makes onDelete work with sqlite. + databaseConnection.executeSql("PRAGMA foreign_keys = ON;", [], function (result) { + ok(databaseConnection); + }, function (error) { + fail(error); + }); + }, function (error) { + fail(error); + }); + }); + }; + /** + * If driver dependency is not given explicitly, then try to load it via "require". + */ + ReactNativeDriver.prototype.loadDependencies = function () { + try { + this.sqlite = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module 'react-native-sqlite-storage'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); + } + catch (e) { + throw new DriverPackageNotInstalledError["a" /* DriverPackageNotInstalledError */]("React-Native", "react-native-sqlite-storage"); + } + }; + return ReactNativeDriver; +}(AbstractSqliteDriver["a" /* AbstractSqliteDriver */])); + + +//# sourceMappingURL=ReactNativeDriver.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/nativescript/NativescriptDriver.js +var NativescriptDriver = __webpack_require__(284); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js +var TransactionAlreadyStartedError = __webpack_require__(70); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/TransactionNotStartedError.js +var TransactionNotStartedError = __webpack_require__(44); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/expo/ExpoQueryRunner.js + + + + + + + + +/** + * Runs queries on a single sqlite database connection. + */ +var ExpoQueryRunner_ExpoQueryRunner = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(ExpoQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ExpoQueryRunner(driver) { + var _this = _super.call(this) || this; + _this.driver = driver; + _this.connection = driver.connection; + _this.broadcaster = new Broadcaster["a" /* Broadcaster */](_this); + return _this; + } + /** + * Starts transaction. Within Expo, all database operations happen in a + * transaction context, so issuing a `BEGIN TRANSACTION` command is + * redundant and will result in the following error: + * + * `Error: Error code 1: cannot start a transaction within a transaction` + * + * Instead, we keep track of a `Transaction` object in `this.transaction` + * and continue using the same object until we wish to commit the + * transaction. + */ + ExpoQueryRunner.prototype.startTransaction = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isTransactionActive && typeof this.transaction !== "undefined") + throw new TransactionAlreadyStartedError["a" /* TransactionAlreadyStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + this.isTransactionActive = true; + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); + }; + /** + * Commits transaction. + * Error will be thrown if transaction was not started. + * Since Expo will automatically commit the transaction once all the + * callbacks of the transaction object have been completed, "committing" a + * transaction in this driver's context means that we delete the transaction + * object and set the stage for the next transaction. + */ + ExpoQueryRunner.prototype.commitTransaction = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive && typeof this.transaction === "undefined") + throw new TransactionNotStartedError["a" /* TransactionNotStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + this.isTransactionActive = false; + this.transaction = undefined; + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); + }; + /** + * Rollbacks transaction. + * Error will be thrown if transaction was not started. + * This method's functionality is identical to `commitTransaction()` because + * the transaction lifecycle is handled within the Expo transaction object. + * Issuing separate statements for `COMMIT` or `ROLLBACK` aren't necessary. + */ + ExpoQueryRunner.prototype.rollbackTransaction = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive && typeof this.transaction === "undefined") + throw new TransactionNotStartedError["a" /* TransactionNotStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + this.isTransactionActive = false; + this.transaction = undefined; + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes a given SQL query. + */ + ExpoQueryRunner.prototype.query = function (query, parameters) { + var _this = this; + if (this.isReleased) + throw new QueryRunnerAlreadyReleasedError["a" /* QueryRunnerAlreadyReleasedError */](); + return new Promise(function (ok, fail) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var databaseConnection, queryStartTime; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.connect()]; + case 1: + databaseConnection = _a.sent(); + this.driver.connection.logger.logQuery(query, parameters, this); + queryStartTime = +new Date(); + // All Expo SQL queries are executed in a transaction context + databaseConnection.transaction(function (transaction) { + if (typeof _this.transaction === "undefined") { + _this.startTransaction(); + _this.transaction = transaction; + } + _this.transaction.executeSql(query, parameters, function (t, result) { + // log slow queries if maxQueryExecution time is set + var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime; + var queryEndTime = +new Date(); + var queryExecutionTime = queryEndTime - queryStartTime; + if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) { + _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this); + } + // return id of inserted row, if query was insert statement. + if (query.substr(0, 11) === "INSERT INTO") { + ok(result.insertId); + } + else { + var resultSet = []; + for (var i = 0; i < result.rows.length; i++) { + resultSet.push(result.rows.item(i)); + } + ok(resultSet); + } + }, function (t, err) { + _this.driver.connection.logger.logQueryError(err, query, parameters, _this); + fail(new QueryFailedError["a" /* QueryFailedError */](query, parameters, err)); + }); + }, function (err) { + _this.rollbackTransaction(); + }, function () { + _this.isTransactionActive = false; + _this.transaction = undefined; + }); + return [2 /*return*/]; + } + }); + }); }); + }; + return ExpoQueryRunner; +}(AbstractSqliteQueryRunner["a" /* AbstractSqliteQueryRunner */])); + + +//# sourceMappingURL=ExpoQueryRunner.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/expo/ExpoDriver.js + + + + +var ExpoDriver_ExpoDriver = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(ExpoDriver, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ExpoDriver(connection) { + var _this = _super.call(this, connection) || this; + _this.database = _this.options.database; + // validate options to make sure everything is set + if (!_this.options.database) + throw new DriverOptionNotSetError["a" /* DriverOptionNotSetError */]("database"); + if (!_this.options.driver) + throw new DriverOptionNotSetError["a" /* DriverOptionNotSetError */]("driver"); + // load sqlite package + _this.sqlite = _this.options.driver; + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Closes connection with database. + */ + ExpoDriver.prototype.disconnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + try { + _this.queryRunner = undefined; + _this.databaseConnection._db.close(); + _this.databaseConnection = undefined; + ok(); + } + catch (error) { + fail(error); + } + })]; + }); + }); + }; + /** + * Creates a query runner used to execute database queries. + */ + ExpoDriver.prototype.createQueryRunner = function (mode) { + if (!this.queryRunner) + this.queryRunner = new ExpoQueryRunner_ExpoQueryRunner(this); + return this.queryRunner; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates connection with the database. + */ + ExpoDriver.prototype.createDatabaseConnection = function () { + var _this = this; + return new Promise(function (ok, fail) { + try { + var databaseConnection_1 = _this.sqlite.openDatabase(_this.options.database); + /* + // we need to enable foreign keys in sqlite to make sure all foreign key related features + // working properly. this also makes onDelete work with sqlite. + */ + databaseConnection_1.transaction(function (tsx) { + tsx.executeSql("PRAGMA foreign_keys = ON;", [], function (t, result) { + ok(databaseConnection_1); + }, function (t, err) { + fail({ transaction: t, error: err }); + }); + }, function (err) { + fail(err); + }); + } + catch (error) { + fail(error); + } + }); + }; + return ExpoDriver; +}(AbstractSqliteDriver["a" /* AbstractSqliteDriver */])); + + +//# sourceMappingURL=ExpoDriver.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/platform/BrowserPlatformTools.js +var BrowserPlatformTools = __webpack_require__(10); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js + 1 modules +var BaseQueryRunner = __webpack_require__(163); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableCheck.js +var TableCheck = __webpack_require__(43); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableColumn.js +var TableColumn = __webpack_require__(25); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js +var TableExclusion = __webpack_require__(59); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js +var TableForeignKey = __webpack_require__(48); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableIndex.js +var TableIndex = __webpack_require__(38); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/table/TableUnique.js +var TableUnique = __webpack_require__(30); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/schema-builder/view/View.js +var View = __webpack_require__(56); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/Query.js +var Query = __webpack_require__(2); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/postgres/PostgresQueryRunner.js + + + + + + + + + + + + + + + + + + +/** + * Runs queries on a single postgres database connection. + */ +var PostgresQueryRunner_PostgresQueryRunner = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(PostgresQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function PostgresQueryRunner(driver, mode) { + var _this = _super.call(this) || this; + _this.driver = driver; + _this.connection = driver.connection; + _this.mode = mode; + _this.broadcaster = new Broadcaster["a" /* Broadcaster */](_this); + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates/uses database connection from the connection pool to perform further operations. + * Returns obtained database connection. + */ + PostgresQueryRunner.prototype.connect = function () { + var _this = this; + if (this.databaseConnection) + return Promise.resolve(this.databaseConnection); + if (this.databaseConnectionPromise) + return this.databaseConnectionPromise; + if (this.mode === "slave" && this.driver.isReplicated) { + this.databaseConnectionPromise = this.driver.obtainSlaveConnection().then(function (_a) { + var _b = Object(tslib_es6["e" /* __read */])(_a, 2), connection = _b[0], release = _b[1]; + _this.driver.connectedQueryRunners.push(_this); + _this.databaseConnection = connection; + var onErrorCallback = function () { return _this.release(); }; + _this.releaseCallback = function () { + _this.databaseConnection.removeListener("error", onErrorCallback); + release(); + }; + _this.databaseConnection.on("error", onErrorCallback); + return _this.databaseConnection; + }); + } + else { // master + this.databaseConnectionPromise = this.driver.obtainMasterConnection().then(function (_a) { + var _b = Object(tslib_es6["e" /* __read */])(_a, 2), connection = _b[0], release = _b[1]; + _this.driver.connectedQueryRunners.push(_this); + _this.databaseConnection = connection; + var onErrorCallback = function () { return _this.release(); }; + _this.releaseCallback = function () { + _this.databaseConnection.removeListener("error", onErrorCallback); + release(); + }; + _this.databaseConnection.on("error", onErrorCallback); + return _this.databaseConnection; + }); + } + return this.databaseConnectionPromise; + }; + /** + * Releases used database connection. + * You cannot use query runner methods once its released. + */ + PostgresQueryRunner.prototype.release = function () { + if (this.isReleased) { + return Promise.resolve(); + } + this.isReleased = true; + if (this.releaseCallback) + this.releaseCallback(); + var index = this.driver.connectedQueryRunners.indexOf(this); + if (index !== -1) + this.driver.connectedQueryRunners.splice(index); + return Promise.resolve(); + }; + /** + * Starts transaction. + */ + PostgresQueryRunner.prototype.startTransaction = function (isolationLevel) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isTransactionActive) + throw new TransactionAlreadyStartedError["a" /* TransactionAlreadyStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + this.isTransactionActive = true; + return [4 /*yield*/, this.query("START TRANSACTION")]; + case 3: + _a.sent(); + if (!isolationLevel) return [3 /*break*/, 5]; + return [4 /*yield*/, this.query("SET TRANSACTION ISOLATION LEVEL " + isolationLevel)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 7]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 6: + _a.sent(); + _a.label = 7; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Commits transaction. + * Error will be thrown if transaction was not started. + */ + PostgresQueryRunner.prototype.commitTransaction = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive) + throw new TransactionNotStartedError["a" /* TransactionNotStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: return [4 /*yield*/, this.query("COMMIT")]; + case 3: + _a.sent(); + this.isTransactionActive = false; + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Rollbacks transaction. + * Error will be thrown if transaction was not started. + */ + PostgresQueryRunner.prototype.rollbackTransaction = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive) + throw new TransactionNotStartedError["a" /* TransactionNotStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: return [4 /*yield*/, this.query("ROLLBACK")]; + case 3: + _a.sent(); + this.isTransactionActive = false; + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes a given SQL query. + */ + PostgresQueryRunner.prototype.query = function (query, parameters) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var databaseConnection, queryStartTime, result, maxQueryExecutionTime, queryEndTime, queryExecutionTime, err_1; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isReleased) + throw new QueryRunnerAlreadyReleasedError["a" /* QueryRunnerAlreadyReleasedError */](); + return [4 /*yield*/, this.connect()]; + case 1: + databaseConnection = _a.sent(); + this.driver.connection.logger.logQuery(query, parameters, this); + _a.label = 2; + case 2: + _a.trys.push([2, 4, , 5]); + queryStartTime = +new Date(); + return [4 /*yield*/, databaseConnection.query(query, parameters)]; + case 3: + result = _a.sent(); + maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime; + queryEndTime = +new Date(); + queryExecutionTime = queryEndTime - queryStartTime; + if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) + this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this); + switch (result.command) { + case "DELETE": + case "UPDATE": + // for UPDATE and DELETE query additionally return number of affected rows + return [2 /*return*/, [result.rows, result.rowCount]]; + break; + default: + return [2 /*return*/, result.rows]; + } + return [3 /*break*/, 5]; + case 4: + err_1 = _a.sent(); + this.driver.connection.logger.logQueryError(err_1, query, parameters, this); + throw new QueryFailedError["a" /* QueryFailedError */](query, parameters, err_1); + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Returns raw data stream. + */ + PostgresQueryRunner.prototype.stream = function (query, parameters, onEnd, onError) { + var _this = this; + var QueryStream = this.driver.loadStreamDependency(); + if (this.isReleased) + throw new QueryRunnerAlreadyReleasedError["a" /* QueryRunnerAlreadyReleasedError */](); + return new Promise(function (ok, fail) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var databaseConnection, stream, err_2; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, this.connect()]; + case 1: + databaseConnection = _a.sent(); + this.driver.connection.logger.logQuery(query, parameters, this); + stream = databaseConnection.query(new QueryStream(query, parameters)); + if (onEnd) + stream.on("end", onEnd); + if (onError) + stream.on("error", onError); + ok(stream); + return [3 /*break*/, 3]; + case 2: + err_2 = _a.sent(); + fail(err_2); + return [3 /*break*/, 3]; + case 3: return [2 /*return*/]; + } + }); + }); }); + }; + /** + * Returns all available database names including system databases. + */ + PostgresQueryRunner.prototype.getDatabases = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, Promise.resolve([])]; + }); + }); + }; + /** + * Returns all available schema names including system schemas. + * If database parameter specified, returns schemas of that database. + */ + PostgresQueryRunner.prototype.getSchemas = function (database) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, Promise.resolve([])]; + }); + }); + }; + /** + * Checks if database with the given name exist. + */ + PostgresQueryRunner.prototype.hasDatabase = function (database) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, Promise.resolve(false)]; + }); + }); + }; + /** + * Checks if schema with the given name exist. + */ + PostgresQueryRunner.prototype.hasSchema = function (schema) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var result; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.query("SELECT * FROM \"information_schema\".\"schemata\" WHERE \"schema_name\" = '" + schema + "'")]; + case 1: + result = _a.sent(); + return [2 /*return*/, result.length ? true : false]; + } + }); + }); + }; + /** + * Checks if table with the given name exist in the database. + */ + PostgresQueryRunner.prototype.hasTable = function (tableOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var parsedTableName, sql, result; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + parsedTableName = this.parseTableName(tableOrName); + sql = "SELECT * FROM \"information_schema\".\"tables\" WHERE \"table_schema\" = " + parsedTableName.schema + " AND \"table_name\" = " + parsedTableName.tableName; + return [4 /*yield*/, this.query(sql)]; + case 1: + result = _a.sent(); + return [2 /*return*/, result.length ? true : false]; + } + }); + }); + }; + /** + * Checks if column with the given name exist in the given table. + */ + PostgresQueryRunner.prototype.hasColumn = function (tableOrName, columnName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var parsedTableName, sql, result; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + parsedTableName = this.parseTableName(tableOrName); + sql = "SELECT * FROM \"information_schema\".\"columns\" WHERE \"table_schema\" = " + parsedTableName.schema + " AND \"table_name\" = " + parsedTableName.tableName + " AND \"column_name\" = '" + columnName + "'"; + return [4 /*yield*/, this.query(sql)]; + case 1: + result = _a.sent(); + return [2 /*return*/, result.length ? true : false]; + } + }); + }); + }; + /** + * Creates a new database. + * Postgres does not supports database creation inside a transaction block. + */ + PostgresQueryRunner.prototype.createDatabase = function (database, ifNotExist) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, Promise.resolve()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops database. + * Postgres does not supports database drop inside a transaction block. + */ + PostgresQueryRunner.prototype.dropDatabase = function (database, ifExist) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, Promise.resolve()]; + }); + }); + }; + /** + * Creates a new table schema. + */ + PostgresQueryRunner.prototype.createSchema = function (schema, ifNotExist) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + up = ifNotExist ? "CREATE SCHEMA IF NOT EXISTS \"" + schema + "\"" : "CREATE SCHEMA \"" + schema + "\""; + down = "DROP SCHEMA \"" + schema + "\" CASCADE"; + return [4 /*yield*/, this.executeQueries(new Query["a" /* Query */](up), new Query["a" /* Query */](down))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops table schema. + */ + PostgresQueryRunner.prototype.dropSchema = function (schemaPath, ifExist, isCascade) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var schema, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + schema = schemaPath.indexOf(".") === -1 ? schemaPath : schemaPath.split(".")[0]; + up = ifExist ? "DROP SCHEMA IF EXISTS \"" + schema + "\" " + (isCascade ? "CASCADE" : "") : "DROP SCHEMA \"" + schema + "\" " + (isCascade ? "CASCADE" : ""); + down = "CREATE SCHEMA \"" + schema + "\""; + return [4 /*yield*/, this.executeQueries(new Query["a" /* Query */](up), new Query["a" /* Query */](down))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new table. + */ + PostgresQueryRunner.prototype.createTable = function (table, ifNotExist, createForeignKeys, createIndices) { + if (ifNotExist === void 0) { ifNotExist = false; } + if (createForeignKeys === void 0) { createForeignKeys = true; } + if (createIndices === void 0) { createIndices = true; } + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var isTableExist, upQueries, downQueries, enumColumns, createdEnumTypes, enumColumns_1, enumColumns_1_1, column, hasEnum, enumName, e_1_1; + var e_1, _a; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!ifNotExist) return [3 /*break*/, 2]; + return [4 /*yield*/, this.hasTable(table)]; + case 1: + isTableExist = _b.sent(); + if (isTableExist) + return [2 /*return*/, Promise.resolve()]; + _b.label = 2; + case 2: + upQueries = []; + downQueries = []; + enumColumns = table.columns.filter(function (column) { return column.type === "enum" || column.type === "simple-enum"; }); + createdEnumTypes = []; + _b.label = 3; + case 3: + _b.trys.push([3, 8, 9, 10]); + enumColumns_1 = Object(tslib_es6["g" /* __values */])(enumColumns), enumColumns_1_1 = enumColumns_1.next(); + _b.label = 4; + case 4: + if (!!enumColumns_1_1.done) return [3 /*break*/, 7]; + column = enumColumns_1_1.value; + return [4 /*yield*/, this.hasEnumType(table, column)]; + case 5: + hasEnum = _b.sent(); + enumName = this.buildEnumName(table, column); + // if enum with the same "enumName" is defined more then once, me must prevent double creation + if (!hasEnum && createdEnumTypes.indexOf(enumName) === -1) { + createdEnumTypes.push(enumName); + upQueries.push(this.createEnumTypeSql(table, column, enumName)); + downQueries.push(this.dropEnumTypeSql(table, column, enumName)); + } + _b.label = 6; + case 6: + enumColumns_1_1 = enumColumns_1.next(); + return [3 /*break*/, 4]; + case 7: return [3 /*break*/, 10]; + case 8: + e_1_1 = _b.sent(); + e_1 = { error: e_1_1 }; + return [3 /*break*/, 10]; + case 9: + try { + if (enumColumns_1_1 && !enumColumns_1_1.done && (_a = enumColumns_1.return)) _a.call(enumColumns_1); + } + finally { if (e_1) throw e_1.error; } + return [7 /*endfinally*/]; + case 10: + upQueries.push(this.createTableSql(table, createForeignKeys)); + downQueries.push(this.dropTableSql(table)); + // if createForeignKeys is true, we must drop created foreign keys in down query. + // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation. + if (createForeignKeys) + table.foreignKeys.forEach(function (foreignKey) { return downQueries.push(_this.dropForeignKeySql(table, foreignKey)); }); + if (createIndices) { + table.indices.forEach(function (index) { + // new index may be passed without name. In this case we generate index name manually. + if (!index.name) + index.name = _this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where); + upQueries.push(_this.createIndexSql(table, index)); + downQueries.push(_this.dropIndexSql(table, index)); + }); + } + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 11: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops the table. + */ + PostgresQueryRunner.prototype.dropTable = function (target, ifExist, dropForeignKeys, dropIndices) { + if (dropForeignKeys === void 0) { dropForeignKeys = true; } + if (dropIndices === void 0) { dropIndices = true; } + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var isTableExist, createForeignKeys, tableName, table, upQueries, downQueries; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!ifExist) return [3 /*break*/, 2]; + return [4 /*yield*/, this.hasTable(target)]; + case 1: + isTableExist = _a.sent(); + if (!isTableExist) + return [2 /*return*/, Promise.resolve()]; + _a.label = 2; + case 2: + createForeignKeys = dropForeignKeys; + tableName = target instanceof Table["a" /* Table */] ? target.name : target; + return [4 /*yield*/, this.getCachedTable(tableName)]; + case 3: + table = _a.sent(); + upQueries = []; + downQueries = []; + if (dropIndices) { + table.indices.forEach(function (index) { + upQueries.push(_this.dropIndexSql(table, index)); + downQueries.push(_this.createIndexSql(table, index)); + }); + } + if (dropForeignKeys) + table.foreignKeys.forEach(function (foreignKey) { return upQueries.push(_this.dropForeignKeySql(table, foreignKey)); }); + upQueries.push(this.dropTableSql(table)); + downQueries.push(this.createTableSql(table, createForeignKeys)); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new view. + */ + PostgresQueryRunner.prototype.createView = function (view) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var upQueries, downQueries, _a, _b, _c, _d; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + upQueries = []; + downQueries = []; + upQueries.push(this.createViewSql(view)); + _b = (_a = upQueries).push; + return [4 /*yield*/, this.insertViewDefinitionSql(view)]; + case 1: + _b.apply(_a, [_e.sent()]); + downQueries.push(this.dropViewSql(view)); + _d = (_c = downQueries).push; + return [4 /*yield*/, this.deleteViewDefinitionSql(view)]; + case 2: + _d.apply(_c, [_e.sent()]); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 3: + _e.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops the view. + */ + PostgresQueryRunner.prototype.dropView = function (target) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var viewName, view, upQueries, downQueries, _a, _b, _c, _d; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + viewName = target instanceof View["a" /* View */] ? target.name : target; + return [4 /*yield*/, this.getCachedView(viewName)]; + case 1: + view = _e.sent(); + upQueries = []; + downQueries = []; + _b = (_a = upQueries).push; + return [4 /*yield*/, this.deleteViewDefinitionSql(view)]; + case 2: + _b.apply(_a, [_e.sent()]); + upQueries.push(this.dropViewSql(view)); + _d = (_c = downQueries).push; + return [4 /*yield*/, this.insertViewDefinitionSql(view)]; + case 3: + _d.apply(_c, [_e.sent()]); + downQueries.push(this.createViewSql(view)); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 4: + _e.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Renames the given table. + */ + PostgresQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var upQueries, downQueries, oldTable, _a, newTable, oldTableName, schemaName, columnNames, oldPkName, newPkName, enumColumns, enumColumns_2, enumColumns_2_1, column, oldEnumType, e_2_1; + var e_2, _b; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_c) { + switch (_c.label) { + case 0: + upQueries = []; + downQueries = []; + if (!(oldTableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = oldTableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(oldTableOrName)]; + case 2: + _a = _c.sent(); + _c.label = 3; + case 3: + oldTable = _a; + newTable = oldTable.clone(); + oldTableName = oldTable.name.indexOf(".") === -1 ? oldTable.name : oldTable.name.split(".")[1]; + schemaName = oldTable.name.indexOf(".") === -1 ? undefined : oldTable.name.split(".")[0]; + newTable.name = schemaName ? schemaName + "." + newTableName : newTableName; + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(oldTable) + " RENAME TO \"" + newTableName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(newTable) + " RENAME TO \"" + oldTableName + "\"")); + // rename column primary key constraint + if (newTable.primaryColumns.length > 0) { + columnNames = newTable.primaryColumns.map(function (column) { return column.name; }); + oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames); + newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(newTable) + " RENAME CONSTRAINT \"" + oldPkName + "\" TO \"" + newPkName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(newTable) + " RENAME CONSTRAINT \"" + newPkName + "\" TO \"" + oldPkName + "\"")); + } + // rename sequences + newTable.columns.map(function (col) { + if (col.isGenerated && col.generationStrategy === "increment") { + var seqName = _this.buildSequenceName(oldTable, col.name, undefined, true, true); + var newSeqName = _this.buildSequenceName(newTable, col.name, undefined, true, true); + var up = schemaName ? "ALTER SEQUENCE \"" + schemaName + "\".\"" + seqName + "\" RENAME TO \"" + newSeqName + "\"" : "ALTER SEQUENCE \"" + seqName + "\" RENAME TO \"" + newSeqName + "\""; + var down = schemaName ? "ALTER SEQUENCE \"" + schemaName + "\".\"" + newSeqName + "\" RENAME TO \"" + seqName + "\"" : "ALTER SEQUENCE \"" + newSeqName + "\" RENAME TO \"" + seqName + "\""; + upQueries.push(new Query["a" /* Query */](up)); + downQueries.push(new Query["a" /* Query */](down)); + } + }); + // rename unique constraints + newTable.uniques.forEach(function (unique) { + // build new constraint name + var newUniqueName = _this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames); + // build queries + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(newTable) + " RENAME CONSTRAINT \"" + unique.name + "\" TO \"" + newUniqueName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(newTable) + " RENAME CONSTRAINT \"" + newUniqueName + "\" TO \"" + unique.name + "\"")); + // replace constraint name + unique.name = newUniqueName; + }); + // rename index constraints + newTable.indices.forEach(function (index) { + // build new constraint name + var schema = _this.extractSchema(newTable); + var newIndexName = _this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where); + // build queries + var up = schema ? "ALTER INDEX \"" + schema + "\".\"" + index.name + "\" RENAME TO \"" + newIndexName + "\"" : "ALTER INDEX \"" + index.name + "\" RENAME TO \"" + newIndexName + "\""; + var down = schema ? "ALTER INDEX \"" + schema + "\".\"" + newIndexName + "\" RENAME TO \"" + index.name + "\"" : "ALTER INDEX \"" + newIndexName + "\" RENAME TO \"" + index.name + "\""; + upQueries.push(new Query["a" /* Query */](up)); + downQueries.push(new Query["a" /* Query */](down)); + // replace constraint name + index.name = newIndexName; + }); + // rename foreign key constraints + newTable.foreignKeys.forEach(function (foreignKey) { + // build new constraint name + var newForeignKeyName = _this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames); + // build queries + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(newTable) + " RENAME CONSTRAINT \"" + foreignKey.name + "\" TO \"" + newForeignKeyName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(newTable) + " RENAME CONSTRAINT \"" + newForeignKeyName + "\" TO \"" + foreignKey.name + "\"")); + // replace constraint name + foreignKey.name = newForeignKeyName; + }); + enumColumns = newTable.columns.filter(function (column) { return column.type === "enum" || column.type === "simple-enum"; }); + _c.label = 4; + case 4: + _c.trys.push([4, 9, 10, 11]); + enumColumns_2 = Object(tslib_es6["g" /* __values */])(enumColumns), enumColumns_2_1 = enumColumns_2.next(); + _c.label = 5; + case 5: + if (!!enumColumns_2_1.done) return [3 /*break*/, 8]; + column = enumColumns_2_1.value; + return [4 /*yield*/, this.getEnumTypeName(oldTable, column)]; + case 6: + oldEnumType = _c.sent(); + upQueries.push(new Query["a" /* Query */]("ALTER TYPE \"" + oldEnumType.enumTypeSchema + "\".\"" + oldEnumType.enumTypeName + "\" RENAME TO " + this.buildEnumName(newTable, column, false))); + downQueries.push(new Query["a" /* Query */]("ALTER TYPE " + this.buildEnumName(newTable, column) + " RENAME TO \"" + oldEnumType.enumTypeName + "\"")); + _c.label = 7; + case 7: + enumColumns_2_1 = enumColumns_2.next(); + return [3 /*break*/, 5]; + case 8: return [3 /*break*/, 11]; + case 9: + e_2_1 = _c.sent(); + e_2 = { error: e_2_1 }; + return [3 /*break*/, 11]; + case 10: + try { + if (enumColumns_2_1 && !enumColumns_2_1.done && (_b = enumColumns_2.return)) _b.call(enumColumns_2); + } + finally { if (e_2) throw e_2.error; } + return [7 /*endfinally*/]; + case 11: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 12: + _c.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new column from the column in the table. + */ + PostgresQueryRunner.prototype.addColumn = function (tableOrName, column) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, clonedTable, upQueries, downQueries, hasEnum, primaryColumns, pkName_1, columnNames_1, pkName, columnNames, columnIndex, uniqueConstraint; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + clonedTable = table.clone(); + upQueries = []; + downQueries = []; + if (!(column.type === "enum" || column.type === "simple-enum")) return [3 /*break*/, 5]; + return [4 /*yield*/, this.hasEnumType(table, column)]; + case 4: + hasEnum = _b.sent(); + if (!hasEnum) { + upQueries.push(this.createEnumTypeSql(table, column)); + downQueries.push(this.dropEnumTypeSql(table, column)); + } + _b.label = 5; + case 5: + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD " + this.buildCreateColumnSql(table, column))); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP COLUMN \"" + column.name + "\"")); + // create or update primary key constraint + if (column.isPrimary) { + primaryColumns = clonedTable.primaryColumns; + // if table already have primary key, me must drop it and recreate again + if (primaryColumns.length > 0) { + pkName_1 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; })); + columnNames_1 = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + pkName_1 + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + pkName_1 + "\" PRIMARY KEY (" + columnNames_1 + ")")); + } + primaryColumns.push(column); + pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; })); + columnNames = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + pkName + "\" PRIMARY KEY (" + columnNames + ")")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + pkName + "\"")); + } + columnIndex = clonedTable.indices.find(function (index) { return index.columnNames.length === 1 && index.columnNames[0] === column.name; }); + if (columnIndex) { + upQueries.push(this.createIndexSql(table, columnIndex)); + downQueries.push(this.dropIndexSql(table, columnIndex)); + } + // create unique constraint + if (column.isUnique) { + uniqueConstraint = new TableUnique["a" /* TableUnique */]({ + name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]), + columnNames: [column.name] + }); + clonedTable.uniques.push(uniqueConstraint); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + uniqueConstraint.name + "\" UNIQUE (\"" + column.name + "\")")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + uniqueConstraint.name + "\"")); + } + // create column's comment + if (column.comment) { + upQueries.push(new Query["a" /* Query */]("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment))); + downQueries.push(new Query["a" /* Query */]("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment))); + } + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 6: + _b.sent(); + clonedTable.addColumn(column); + this.replaceCachedTable(table, clonedTable); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new columns from the column in the table. + */ + PostgresQueryRunner.prototype.addColumns = function (tableOrName, columns) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var columns_1, columns_1_1, column, e_3_1; + var e_3, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + columns_1 = Object(tslib_es6["g" /* __values */])(columns), columns_1_1 = columns_1.next(); + _b.label = 1; + case 1: + if (!!columns_1_1.done) return [3 /*break*/, 4]; + column = columns_1_1.value; + return [4 /*yield*/, this.addColumn(tableOrName, column)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + columns_1_1 = columns_1.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_3_1 = _b.sent(); + e_3 = { error: e_3_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1); + } + finally { if (e_3) throw e_3.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Renames column in the given table. + */ + PostgresQueryRunner.prototype.renameColumn = function (tableOrName, oldTableColumnOrName, newTableColumnOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, oldColumn, newColumn; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + oldColumn = oldTableColumnOrName instanceof TableColumn["a" /* TableColumn */] ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; }); + if (!oldColumn) + throw new Error("Column \"" + oldTableColumnOrName + "\" was not found in the \"" + table.name + "\" table."); + if (newTableColumnOrName instanceof TableColumn["a" /* TableColumn */]) { + newColumn = newTableColumnOrName; + } + else { + newColumn = oldColumn.clone(); + newColumn.name = newTableColumnOrName; + } + return [2 /*return*/, this.changeColumn(table, oldColumn, newColumn)]; + } + }); + }); + }; + /** + * Changes a column in the table. + */ + PostgresQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, clonedTable, upQueries, downQueries, defaultValueChanged, oldColumn, oldEnumType, primaryColumns, columnNames, oldPkName, newPkName, schema, seqName, newSeqName, up, down, oldTableColumn, arraySuffix, newEnumName, oldEnumName, oldEnumNameWithoutSchema, oldEnumNameWithSchema_old, oldEnumNameWithoutSchema_old, upType, downType, primaryColumns, pkName, columnNames, column, pkName, columnNames, primaryColumn, column, pkName, columnNames, uniqueConstraint, uniqueConstraint; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + clonedTable = table.clone(); + upQueries = []; + downQueries = []; + defaultValueChanged = false; + oldColumn = oldTableColumnOrName instanceof TableColumn["a" /* TableColumn */] + ? oldTableColumnOrName + : table.columns.find(function (column) { return column.name === oldTableColumnOrName; }); + if (!oldColumn) + throw new Error("Column \"" + oldTableColumnOrName + "\" was not found in the \"" + table.name + "\" table."); + if (!(oldColumn.type !== newColumn.type || oldColumn.length !== newColumn.length || newColumn.isArray !== oldColumn.isArray)) return [3 /*break*/, 6]; + // To avoid data conversion, we just recreate column + return [4 /*yield*/, this.dropColumn(table, oldColumn)]; + case 4: + // To avoid data conversion, we just recreate column + _b.sent(); + return [4 /*yield*/, this.addColumn(table, newColumn)]; + case 5: + _b.sent(); + // update cloned table + clonedTable = table.clone(); + return [3 /*break*/, 10]; + case 6: + if (!(oldColumn.name !== newColumn.name)) return [3 /*break*/, 9]; + // rename column + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " RENAME COLUMN \"" + oldColumn.name + "\" TO \"" + newColumn.name + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " RENAME COLUMN \"" + newColumn.name + "\" TO \"" + oldColumn.name + "\"")); + if (!(oldColumn.type === "enum" || oldColumn.type === "simple-enum")) return [3 /*break*/, 8]; + return [4 /*yield*/, this.getEnumTypeName(table, oldColumn)]; + case 7: + oldEnumType = _b.sent(); + upQueries.push(new Query["a" /* Query */]("ALTER TYPE \"" + oldEnumType.enumTypeSchema + "\".\"" + oldEnumType.enumTypeName + "\" RENAME TO " + this.buildEnumName(table, newColumn, false))); + downQueries.push(new Query["a" /* Query */]("ALTER TYPE " + this.buildEnumName(table, newColumn) + " RENAME TO \"" + oldEnumType.enumTypeName + "\"")); + _b.label = 8; + case 8: + // rename column primary key constraint + if (oldColumn.isPrimary === true) { + primaryColumns = clonedTable.primaryColumns; + columnNames = primaryColumns.map(function (column) { return column.name; }); + oldPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames); + // replace old column name with new column name + columnNames.splice(columnNames.indexOf(oldColumn.name), 1); + columnNames.push(newColumn.name); + newPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " RENAME CONSTRAINT \"" + oldPkName + "\" TO \"" + newPkName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " RENAME CONSTRAINT \"" + newPkName + "\" TO \"" + oldPkName + "\"")); + } + // rename column sequence + if (oldColumn.isGenerated === true && newColumn.generationStrategy === "increment") { + schema = this.extractSchema(table); + seqName = this.buildSequenceName(table, oldColumn.name, undefined, true, true); + newSeqName = this.buildSequenceName(table, newColumn.name, undefined, true, true); + up = schema ? "ALTER SEQUENCE \"" + schema + "\".\"" + seqName + "\" RENAME TO \"" + newSeqName + "\"" : "ALTER SEQUENCE \"" + seqName + "\" RENAME TO \"" + newSeqName + "\""; + down = schema ? "ALTER SEQUENCE \"" + schema + "\".\"" + newSeqName + "\" RENAME TO \"" + seqName + "\"" : "ALTER SEQUENCE \"" + newSeqName + "\" RENAME TO \"" + seqName + "\""; + upQueries.push(new Query["a" /* Query */](up)); + downQueries.push(new Query["a" /* Query */](down)); + } + // rename unique constraints + clonedTable.findColumnUniques(oldColumn).forEach(function (unique) { + // build new constraint name + unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1); + unique.columnNames.push(newColumn.name); + var newUniqueName = _this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames); + // build queries + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(table) + " RENAME CONSTRAINT \"" + unique.name + "\" TO \"" + newUniqueName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(table) + " RENAME CONSTRAINT \"" + newUniqueName + "\" TO \"" + unique.name + "\"")); + // replace constraint name + unique.name = newUniqueName; + }); + // rename index constraints + clonedTable.findColumnIndices(oldColumn).forEach(function (index) { + // build new constraint name + index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1); + index.columnNames.push(newColumn.name); + var schema = _this.extractSchema(table); + var newIndexName = _this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where); + // build queries + var up = schema ? "ALTER INDEX \"" + schema + "\".\"" + index.name + "\" RENAME TO \"" + newIndexName + "\"" : "ALTER INDEX \"" + index.name + "\" RENAME TO \"" + newIndexName + "\""; + var down = schema ? "ALTER INDEX \"" + schema + "\".\"" + newIndexName + "\" RENAME TO \"" + index.name + "\"" : "ALTER INDEX \"" + newIndexName + "\" RENAME TO \"" + index.name + "\""; + upQueries.push(new Query["a" /* Query */](up)); + downQueries.push(new Query["a" /* Query */](down)); + // replace constraint name + index.name = newIndexName; + }); + // rename foreign key constraints + clonedTable.findColumnForeignKeys(oldColumn).forEach(function (foreignKey) { + // build new constraint name + foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1); + foreignKey.columnNames.push(newColumn.name); + var newForeignKeyName = _this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames); + // build queries + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(table) + " RENAME CONSTRAINT \"" + foreignKey.name + "\" TO \"" + newForeignKeyName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + _this.escapePath(table) + " RENAME CONSTRAINT \"" + newForeignKeyName + "\" TO \"" + foreignKey.name + "\"")); + // replace constraint name + foreignKey.name = newForeignKeyName; + }); + oldTableColumn = clonedTable.columns.find(function (column) { return column.name === oldColumn.name; }); + clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn)].name = newColumn.name; + oldColumn.name = newColumn.name; + _b.label = 9; + case 9: + if (newColumn.precision !== oldColumn.precision || newColumn.scale !== oldColumn.scale) { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(newColumn))); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(oldColumn))); + } + if ((newColumn.type === "enum" || newColumn.type === "simple-enum") + && (oldColumn.type === "enum" || oldColumn.type === "simple-enum") + && (!OrmUtils["a" /* OrmUtils */].isArraysEqual(newColumn.enum, oldColumn.enum) || newColumn.enumName !== oldColumn.enumName)) { + arraySuffix = newColumn.isArray ? "[]" : ""; + newEnumName = this.buildEnumName(table, newColumn); + oldEnumName = this.buildEnumName(table, oldColumn); + oldEnumNameWithoutSchema = this.buildEnumName(table, oldColumn, false); + oldEnumNameWithSchema_old = this.buildEnumName(table, oldColumn, true, false, true); + oldEnumNameWithoutSchema_old = this.buildEnumName(table, oldColumn, false, false, true); + // rename old ENUM + upQueries.push(new Query["a" /* Query */]("ALTER TYPE " + oldEnumName + " RENAME TO " + oldEnumNameWithoutSchema_old)); + downQueries.push(new Query["a" /* Query */]("ALTER TYPE " + oldEnumNameWithSchema_old + " RENAME TO " + oldEnumNameWithoutSchema)); + // create new ENUM + upQueries.push(this.createEnumTypeSql(table, newColumn, newEnumName)); + downQueries.push(this.dropEnumTypeSql(table, newColumn, newEnumName)); + // if column have default value, we must drop it to avoid issues with type casting + if (oldColumn.default !== null && oldColumn.default !== undefined) { + // mark default as changed to prevent double update + defaultValueChanged = true; + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + oldColumn.name + "\" DROP DEFAULT")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + oldColumn.name + "\" SET DEFAULT " + oldColumn.default)); + } + upType = "" + newEnumName + arraySuffix + " USING \"" + newColumn.name + "\"::\"text\"::" + newEnumName + arraySuffix; + downType = "" + oldEnumNameWithSchema_old + arraySuffix + " USING \"" + newColumn.name + "\"::\"text\"::" + oldEnumNameWithSchema_old + arraySuffix; + // update column to use new type + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + upType)); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + downType)); + // restore column default or create new one + if (newColumn.default !== null && newColumn.default !== undefined) { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" SET DEFAULT " + newColumn.default)); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" DROP DEFAULT")); + } + // remove old ENUM + upQueries.push(this.dropEnumTypeSql(table, oldColumn, oldEnumNameWithSchema_old)); + downQueries.push(this.createEnumTypeSql(table, oldColumn, oldEnumNameWithSchema_old)); + } + if (oldColumn.isNullable !== newColumn.isNullable) { + if (newColumn.isNullable) { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + oldColumn.name + "\" DROP NOT NULL")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + oldColumn.name + "\" SET NOT NULL")); + } + else { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + oldColumn.name + "\" SET NOT NULL")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + oldColumn.name + "\" DROP NOT NULL")); + } + } + if (oldColumn.comment !== newColumn.comment) { + upQueries.push(new Query["a" /* Query */]("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + oldColumn.name + "\" IS " + this.escapeComment(newColumn.comment))); + downQueries.push(new Query["a" /* Query */]("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + newColumn.name + "\" IS " + this.escapeComment(oldColumn.comment))); + } + if (newColumn.isPrimary !== oldColumn.isPrimary) { + primaryColumns = clonedTable.primaryColumns; + // if primary column state changed, we must always drop existed constraint. + if (primaryColumns.length > 0) { + pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; })); + columnNames = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + pkName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + pkName + "\" PRIMARY KEY (" + columnNames + ")")); + } + if (newColumn.isPrimary === true) { + primaryColumns.push(newColumn); + column = clonedTable.columns.find(function (column) { return column.name === newColumn.name; }); + column.isPrimary = true; + pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; })); + columnNames = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + pkName + "\" PRIMARY KEY (" + columnNames + ")")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + pkName + "\"")); + } + else { + primaryColumn = primaryColumns.find(function (c) { return c.name === newColumn.name; }); + primaryColumns.splice(primaryColumns.indexOf(primaryColumn), 1); + column = clonedTable.columns.find(function (column) { return column.name === newColumn.name; }); + column.isPrimary = false; + // if we have another primary keys, we must recreate constraint. + if (primaryColumns.length > 0) { + pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; })); + columnNames = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + pkName + "\" PRIMARY KEY (" + columnNames + ")")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + pkName + "\"")); + } + } + } + if (newColumn.isUnique !== oldColumn.isUnique) { + if (newColumn.isUnique === true) { + uniqueConstraint = new TableUnique["a" /* TableUnique */]({ + name: this.connection.namingStrategy.uniqueConstraintName(table.name, [newColumn.name]), + columnNames: [newColumn.name] + }); + clonedTable.uniques.push(uniqueConstraint); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + uniqueConstraint.name + "\" UNIQUE (\"" + newColumn.name + "\")")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + uniqueConstraint.name + "\"")); + } + else { + uniqueConstraint = clonedTable.uniques.find(function (unique) { + return unique.columnNames.length === 1 && !!unique.columnNames.find(function (columnName) { return columnName === newColumn.name; }); + }); + clonedTable.uniques.splice(clonedTable.uniques.indexOf(uniqueConstraint), 1); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + uniqueConstraint.name + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + uniqueConstraint.name + "\" UNIQUE (\"" + newColumn.name + "\")")); + } + } + if (oldColumn.isGenerated !== newColumn.isGenerated && newColumn.generationStrategy !== "uuid") { + if (newColumn.isGenerated === true) { + upQueries.push(new Query["a" /* Query */]("CREATE SEQUENCE " + this.buildSequenceName(table, newColumn) + " OWNED BY " + this.escapePath(table) + ".\"" + newColumn.name + "\"")); + downQueries.push(new Query["a" /* Query */]("DROP SEQUENCE " + this.buildSequenceName(table, newColumn))); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" SET DEFAULT nextval('" + this.buildSequenceName(table, newColumn, undefined, true) + "')")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" DROP DEFAULT")); + } + else { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" DROP DEFAULT")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" SET DEFAULT nextval('" + this.buildSequenceName(table, newColumn, undefined, true) + "')")); + upQueries.push(new Query["a" /* Query */]("DROP SEQUENCE " + this.buildSequenceName(table, newColumn))); + downQueries.push(new Query["a" /* Query */]("CREATE SEQUENCE " + this.buildSequenceName(table, newColumn) + " OWNED BY " + this.escapePath(table) + ".\"" + newColumn.name + "\"")); + } + } + // the default might have changed when the enum changed + if (newColumn.default !== oldColumn.default && !defaultValueChanged) { + if (newColumn.default !== null && newColumn.default !== undefined) { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" SET DEFAULT " + newColumn.default)); + if (oldColumn.default !== null && oldColumn.default !== undefined) { + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" SET DEFAULT " + oldColumn.default)); + } + else { + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" DROP DEFAULT")); + } + } + else if (oldColumn.default !== null && oldColumn.default !== undefined) { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" DROP DEFAULT")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" SET DEFAULT " + oldColumn.default)); + } + } + if ((newColumn.spatialFeatureType || "").toLowerCase() !== (oldColumn.spatialFeatureType || "").toLowerCase() || newColumn.srid !== oldColumn.srid) { + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(newColumn))); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(oldColumn))); + } + _b.label = 10; + case 10: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 11: + _b.sent(); + this.replaceCachedTable(table, clonedTable); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Changes a column in the table. + */ + PostgresQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn, e_4_1; + var e_4, _b; + return Object(tslib_es6["d" /* __generator */])(this, function (_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 5, 6, 7]); + changedColumns_1 = Object(tslib_es6["g" /* __values */])(changedColumns), changedColumns_1_1 = changedColumns_1.next(); + _c.label = 1; + case 1: + if (!!changedColumns_1_1.done) return [3 /*break*/, 4]; + _a = changedColumns_1_1.value, oldColumn = _a.oldColumn, newColumn = _a.newColumn; + return [4 /*yield*/, this.changeColumn(tableOrName, oldColumn, newColumn)]; + case 2: + _c.sent(); + _c.label = 3; + case 3: + changedColumns_1_1 = changedColumns_1.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_4_1 = _c.sent(); + e_4 = { error: e_4_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (changedColumns_1_1 && !changedColumns_1_1.done && (_b = changedColumns_1.return)) _b.call(changedColumns_1); + } + finally { if (e_4) throw e_4.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops column in the table. + */ + PostgresQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, column, clonedTable, upQueries, downQueries, pkName, columnNames, tableColumn, pkName_2, columnNames_2, columnIndex, columnCheck, columnUnique, hasEnum, enumType, escapedEnumName; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + column = columnOrName instanceof TableColumn["a" /* TableColumn */] ? columnOrName : table.findColumnByName(columnOrName); + if (!column) + throw new Error("Column \"" + columnOrName + "\" was not found in table \"" + table.name + "\""); + clonedTable = table.clone(); + upQueries = []; + downQueries = []; + // drop primary key constraint + if (column.isPrimary) { + pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(function (column) { return column.name; })); + columnNames = clonedTable.primaryColumns.map(function (primaryColumn) { return "\"" + primaryColumn.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(clonedTable) + " DROP CONSTRAINT \"" + pkName + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(clonedTable) + " ADD CONSTRAINT \"" + pkName + "\" PRIMARY KEY (" + columnNames + ")")); + tableColumn = clonedTable.findColumnByName(column.name); + tableColumn.isPrimary = false; + // if primary key have multiple columns, we must recreate it without dropped column + if (clonedTable.primaryColumns.length > 0) { + pkName_2 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(function (column) { return column.name; })); + columnNames_2 = clonedTable.primaryColumns.map(function (primaryColumn) { return "\"" + primaryColumn.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(clonedTable) + " ADD CONSTRAINT \"" + pkName_2 + "\" PRIMARY KEY (" + columnNames_2 + ")")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(clonedTable) + " DROP CONSTRAINT \"" + pkName_2 + "\"")); + } + } + columnIndex = clonedTable.indices.find(function (index) { return index.columnNames.length === 1 && index.columnNames[0] === column.name; }); + if (columnIndex) { + clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1); + upQueries.push(this.dropIndexSql(table, columnIndex)); + downQueries.push(this.createIndexSql(table, columnIndex)); + } + columnCheck = clonedTable.checks.find(function (check) { return !!check.columnNames && check.columnNames.length === 1 && check.columnNames[0] === column.name; }); + if (columnCheck) { + clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1); + upQueries.push(this.dropCheckConstraintSql(table, columnCheck)); + downQueries.push(this.createCheckConstraintSql(table, columnCheck)); + } + columnUnique = clonedTable.uniques.find(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; }); + if (columnUnique) { + clonedTable.uniques.splice(clonedTable.uniques.indexOf(columnUnique), 1); + upQueries.push(this.dropUniqueConstraintSql(table, columnUnique)); + downQueries.push(this.createUniqueConstraintSql(table, columnUnique)); + } + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP COLUMN \"" + column.name + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD " + this.buildCreateColumnSql(table, column))); + if (!(column.type === "enum" || column.type === "simple-enum")) return [3 /*break*/, 6]; + return [4 /*yield*/, this.hasEnumType(table, column)]; + case 4: + hasEnum = _b.sent(); + if (!hasEnum) return [3 /*break*/, 6]; + return [4 /*yield*/, this.getEnumTypeName(table, column)]; + case 5: + enumType = _b.sent(); + escapedEnumName = "\"" + enumType.enumTypeSchema + "\".\"" + enumType.enumTypeName + "\""; + upQueries.push(this.dropEnumTypeSql(table, column, escapedEnumName)); + downQueries.push(this.createEnumTypeSql(table, column, escapedEnumName)); + _b.label = 6; + case 6: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 7: + _b.sent(); + clonedTable.removeColumn(column); + this.replaceCachedTable(table, clonedTable); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops the columns in the table. + */ + PostgresQueryRunner.prototype.dropColumns = function (tableOrName, columns) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var columns_2, columns_2_1, column, e_5_1; + var e_5, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + columns_2 = Object(tslib_es6["g" /* __values */])(columns), columns_2_1 = columns_2.next(); + _b.label = 1; + case 1: + if (!!columns_2_1.done) return [3 /*break*/, 4]; + column = columns_2_1.value; + return [4 /*yield*/, this.dropColumn(tableOrName, column)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + columns_2_1 = columns_2.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_5_1 = _b.sent(); + e_5 = { error: e_5_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2); + } + finally { if (e_5) throw e_5.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new primary key. + */ + PostgresQueryRunner.prototype.createPrimaryKey = function (tableOrName, columnNames) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, clonedTable, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + clonedTable = table.clone(); + up = this.createPrimaryKeySql(table, columnNames); + // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names. + clonedTable.columns.forEach(function (column) { + if (columnNames.find(function (columnName) { return columnName === column.name; })) + column.isPrimary = true; + }); + down = this.dropPrimaryKeySql(clonedTable); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + this.replaceCachedTable(table, clonedTable); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Updates composite primary keys. + */ + PostgresQueryRunner.prototype.updatePrimaryKeys = function (tableOrName, columns) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, clonedTable, columnNames, upQueries, downQueries, primaryColumns, pkName_3, columnNamesString_1, pkName, columnNamesString; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + clonedTable = table.clone(); + columnNames = columns.map(function (column) { return column.name; }); + upQueries = []; + downQueries = []; + primaryColumns = clonedTable.primaryColumns; + if (primaryColumns.length > 0) { + pkName_3 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; })); + columnNamesString_1 = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + pkName_3 + "\"")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + pkName_3 + "\" PRIMARY KEY (" + columnNamesString_1 + ")")); + } + // update columns in table. + clonedTable.columns + .filter(function (column) { return columnNames.indexOf(column.name) !== -1; }) + .forEach(function (column) { return column.isPrimary = true; }); + pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, columnNames); + columnNamesString = columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + upQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + pkName + "\" PRIMARY KEY (" + columnNamesString + ")")); + downQueries.push(new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + pkName + "\"")); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 4: + _b.sent(); + this.replaceCachedTable(table, clonedTable); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops a primary key. + */ + PostgresQueryRunner.prototype.dropPrimaryKey = function (tableOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + up = this.dropPrimaryKeySql(table); + down = this.createPrimaryKeySql(table, table.primaryColumns.map(function (column) { return column.name; })); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.primaryColumns.forEach(function (column) { + column.isPrimary = false; + }); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new unique constraint. + */ + PostgresQueryRunner.prototype.createUniqueConstraint = function (tableOrName, uniqueConstraint) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + // new unique constraint may be passed without name. In this case we generate unique name manually. + if (!uniqueConstraint.name) + uniqueConstraint.name = this.connection.namingStrategy.uniqueConstraintName(table.name, uniqueConstraint.columnNames); + up = this.createUniqueConstraintSql(table, uniqueConstraint); + down = this.dropUniqueConstraintSql(table, uniqueConstraint); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.addUniqueConstraint(uniqueConstraint); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new unique constraints. + */ + PostgresQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var uniqueConstraints_1, uniqueConstraints_1_1, uniqueConstraint, e_6_1; + var e_6, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + uniqueConstraints_1 = Object(tslib_es6["g" /* __values */])(uniqueConstraints), uniqueConstraints_1_1 = uniqueConstraints_1.next(); + _b.label = 1; + case 1: + if (!!uniqueConstraints_1_1.done) return [3 /*break*/, 4]; + uniqueConstraint = uniqueConstraints_1_1.value; + return [4 /*yield*/, this.createUniqueConstraint(tableOrName, uniqueConstraint)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + uniqueConstraints_1_1 = uniqueConstraints_1.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_6_1 = _b.sent(); + e_6 = { error: e_6_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (uniqueConstraints_1_1 && !uniqueConstraints_1_1.done && (_a = uniqueConstraints_1.return)) _a.call(uniqueConstraints_1); + } + finally { if (e_6) throw e_6.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops unique constraint. + */ + PostgresQueryRunner.prototype.dropUniqueConstraint = function (tableOrName, uniqueOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, uniqueConstraint, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + uniqueConstraint = uniqueOrName instanceof TableUnique["a" /* TableUnique */] ? uniqueOrName : table.uniques.find(function (u) { return u.name === uniqueOrName; }); + if (!uniqueConstraint) + throw new Error("Supplied unique constraint was not found in table " + table.name); + up = this.dropUniqueConstraintSql(table, uniqueConstraint); + down = this.createUniqueConstraintSql(table, uniqueConstraint); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.removeUniqueConstraint(uniqueConstraint); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops unique constraints. + */ + PostgresQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var uniqueConstraints_2, uniqueConstraints_2_1, uniqueConstraint, e_7_1; + var e_7, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + uniqueConstraints_2 = Object(tslib_es6["g" /* __values */])(uniqueConstraints), uniqueConstraints_2_1 = uniqueConstraints_2.next(); + _b.label = 1; + case 1: + if (!!uniqueConstraints_2_1.done) return [3 /*break*/, 4]; + uniqueConstraint = uniqueConstraints_2_1.value; + return [4 /*yield*/, this.dropUniqueConstraint(tableOrName, uniqueConstraint)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + uniqueConstraints_2_1 = uniqueConstraints_2.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_7_1 = _b.sent(); + e_7 = { error: e_7_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (uniqueConstraints_2_1 && !uniqueConstraints_2_1.done && (_a = uniqueConstraints_2.return)) _a.call(uniqueConstraints_2); + } + finally { if (e_7) throw e_7.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new check constraint. + */ + PostgresQueryRunner.prototype.createCheckConstraint = function (tableOrName, checkConstraint) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + // new unique constraint may be passed without name. In this case we generate unique name manually. + if (!checkConstraint.name) + checkConstraint.name = this.connection.namingStrategy.checkConstraintName(table.name, checkConstraint.expression); + up = this.createCheckConstraintSql(table, checkConstraint); + down = this.dropCheckConstraintSql(table, checkConstraint); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.addCheckConstraint(checkConstraint); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new check constraints. + */ + PostgresQueryRunner.prototype.createCheckConstraints = function (tableOrName, checkConstraints) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + promises = checkConstraints.map(function (checkConstraint) { return _this.createCheckConstraint(tableOrName, checkConstraint); }); + return [4 /*yield*/, Promise.all(promises)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops check constraint. + */ + PostgresQueryRunner.prototype.dropCheckConstraint = function (tableOrName, checkOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, checkConstraint, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + checkConstraint = checkOrName instanceof TableCheck["a" /* TableCheck */] ? checkOrName : table.checks.find(function (c) { return c.name === checkOrName; }); + if (!checkConstraint) + throw new Error("Supplied check constraint was not found in table " + table.name); + up = this.dropCheckConstraintSql(table, checkConstraint); + down = this.createCheckConstraintSql(table, checkConstraint); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.removeCheckConstraint(checkConstraint); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops check constraints. + */ + PostgresQueryRunner.prototype.dropCheckConstraints = function (tableOrName, checkConstraints) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + promises = checkConstraints.map(function (checkConstraint) { return _this.dropCheckConstraint(tableOrName, checkConstraint); }); + return [4 /*yield*/, Promise.all(promises)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new exclusion constraint. + */ + PostgresQueryRunner.prototype.createExclusionConstraint = function (tableOrName, exclusionConstraint) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + // new unique constraint may be passed without name. In this case we generate unique name manually. + if (!exclusionConstraint.name) + exclusionConstraint.name = this.connection.namingStrategy.exclusionConstraintName(table.name, exclusionConstraint.expression); + up = this.createExclusionConstraintSql(table, exclusionConstraint); + down = this.dropExclusionConstraintSql(table, exclusionConstraint); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.addExclusionConstraint(exclusionConstraint); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new exclusion constraints. + */ + PostgresQueryRunner.prototype.createExclusionConstraints = function (tableOrName, exclusionConstraints) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + promises = exclusionConstraints.map(function (exclusionConstraint) { return _this.createExclusionConstraint(tableOrName, exclusionConstraint); }); + return [4 /*yield*/, Promise.all(promises)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops exclusion constraint. + */ + PostgresQueryRunner.prototype.dropExclusionConstraint = function (tableOrName, exclusionOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, exclusionConstraint, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + exclusionConstraint = exclusionOrName instanceof TableExclusion["a" /* TableExclusion */] ? exclusionOrName : table.exclusions.find(function (c) { return c.name === exclusionOrName; }); + if (!exclusionConstraint) + throw new Error("Supplied exclusion constraint was not found in table " + table.name); + up = this.dropExclusionConstraintSql(table, exclusionConstraint); + down = this.createExclusionConstraintSql(table, exclusionConstraint); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.removeExclusionConstraint(exclusionConstraint); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops exclusion constraints. + */ + PostgresQueryRunner.prototype.dropExclusionConstraints = function (tableOrName, exclusionConstraints) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + promises = exclusionConstraints.map(function (exclusionConstraint) { return _this.dropExclusionConstraint(tableOrName, exclusionConstraint); }); + return [4 /*yield*/, Promise.all(promises)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new foreign key. + */ + PostgresQueryRunner.prototype.createForeignKey = function (tableOrName, foreignKey) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + // new FK may be passed without name. In this case we generate FK name manually. + if (!foreignKey.name) + foreignKey.name = this.connection.namingStrategy.foreignKeyName(table.name, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames); + up = this.createForeignKeySql(table, foreignKey); + down = this.dropForeignKeySql(table, foreignKey); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.addForeignKey(foreignKey); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new foreign keys. + */ + PostgresQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var foreignKeys_1, foreignKeys_1_1, foreignKey, e_8_1; + var e_8, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + foreignKeys_1 = Object(tslib_es6["g" /* __values */])(foreignKeys), foreignKeys_1_1 = foreignKeys_1.next(); + _b.label = 1; + case 1: + if (!!foreignKeys_1_1.done) return [3 /*break*/, 4]; + foreignKey = foreignKeys_1_1.value; + return [4 /*yield*/, this.createForeignKey(tableOrName, foreignKey)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + foreignKeys_1_1 = foreignKeys_1.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_8_1 = _b.sent(); + e_8 = { error: e_8_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (foreignKeys_1_1 && !foreignKeys_1_1.done && (_a = foreignKeys_1.return)) _a.call(foreignKeys_1); + } + finally { if (e_8) throw e_8.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops a foreign key from the table. + */ + PostgresQueryRunner.prototype.dropForeignKey = function (tableOrName, foreignKeyOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, foreignKey, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + foreignKey = foreignKeyOrName instanceof TableForeignKey["a" /* TableForeignKey */] ? foreignKeyOrName : table.foreignKeys.find(function (fk) { return fk.name === foreignKeyOrName; }); + if (!foreignKey) + throw new Error("Supplied foreign key was not found in table " + table.name); + up = this.dropForeignKeySql(table, foreignKey); + down = this.createForeignKeySql(table, foreignKey); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.removeForeignKey(foreignKey); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops a foreign keys from the table. + */ + PostgresQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var foreignKeys_2, foreignKeys_2_1, foreignKey, e_9_1; + var e_9, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + foreignKeys_2 = Object(tslib_es6["g" /* __values */])(foreignKeys), foreignKeys_2_1 = foreignKeys_2.next(); + _b.label = 1; + case 1: + if (!!foreignKeys_2_1.done) return [3 /*break*/, 4]; + foreignKey = foreignKeys_2_1.value; + return [4 /*yield*/, this.dropForeignKey(tableOrName, foreignKey)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + foreignKeys_2_1 = foreignKeys_2.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_9_1 = _b.sent(); + e_9 = { error: e_9_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (foreignKeys_2_1 && !foreignKeys_2_1.done && (_a = foreignKeys_2.return)) _a.call(foreignKeys_2); + } + finally { if (e_9) throw e_9.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new index. + */ + PostgresQueryRunner.prototype.createIndex = function (tableOrName, index) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + // new index may be passed without name. In this case we generate index name manually. + if (!index.name) + index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where); + up = this.createIndexSql(table, index); + down = this.dropIndexSql(table, index); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.addIndex(index); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new indices + */ + PostgresQueryRunner.prototype.createIndices = function (tableOrName, indices) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var indices_1, indices_1_1, index, e_10_1; + var e_10, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + indices_1 = Object(tslib_es6["g" /* __values */])(indices), indices_1_1 = indices_1.next(); + _b.label = 1; + case 1: + if (!!indices_1_1.done) return [3 /*break*/, 4]; + index = indices_1_1.value; + return [4 /*yield*/, this.createIndex(tableOrName, index)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + indices_1_1 = indices_1.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_10_1 = _b.sent(); + e_10 = { error: e_10_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1); + } + finally { if (e_10) throw e_10.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops an index from the table. + */ + PostgresQueryRunner.prototype.dropIndex = function (tableOrName, indexOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, _a, index, up, down; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof Table["a" /* Table */])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + index = indexOrName instanceof TableIndex["a" /* TableIndex */] ? indexOrName : table.indices.find(function (i) { return i.name === indexOrName; }); + if (!index) + throw new Error("Supplied index was not found in table " + table.name); + up = this.dropIndexSql(table, index); + down = this.createIndexSql(table, index); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.removeIndex(index); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops an indices from the table. + */ + PostgresQueryRunner.prototype.dropIndices = function (tableOrName, indices) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var indices_2, indices_2_1, index, e_11_1; + var e_11, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 7]); + indices_2 = Object(tslib_es6["g" /* __values */])(indices), indices_2_1 = indices_2.next(); + _b.label = 1; + case 1: + if (!!indices_2_1.done) return [3 /*break*/, 4]; + index = indices_2_1.value; + return [4 /*yield*/, this.dropIndex(tableOrName, index)]; + case 2: + _b.sent(); + _b.label = 3; + case 3: + indices_2_1 = indices_2.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_11_1 = _b.sent(); + e_11 = { error: e_11_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (indices_2_1 && !indices_2_1.done && (_a = indices_2.return)) _a.call(indices_2); + } + finally { if (e_11) throw e_11.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Clears all table contents. + * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions. + */ + PostgresQueryRunner.prototype.clearTable = function (tableName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.query("TRUNCATE TABLE " + this.escapePath(tableName))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Removes all tables from the currently connected database. + */ + PostgresQueryRunner.prototype.clearDatabase = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var schemas, schemaNamesString, selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + schemas = []; + this.connection.entityMetadatas + .filter(function (metadata) { return metadata.schema; }) + .forEach(function (metadata) { + var isSchemaExist = !!schemas.find(function (schema) { return schema === metadata.schema; }); + if (!isSchemaExist) + schemas.push(metadata.schema); + }); + schemas.push(this.driver.options.schema || "current_schema()"); + schemaNamesString = schemas.map(function (name) { + return name === "current_schema()" ? name : "'" + name + "'"; + }).join(", "); + return [4 /*yield*/, this.startTransaction()]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + _a.trys.push([2, 9, , 14]); + selectViewDropsQuery = "SELECT 'DROP VIEW IF EXISTS \"' || schemaname || '\".\"' || viewname || '\" CASCADE;' as \"query\" " + + ("FROM \"pg_views\" WHERE \"schemaname\" IN (" + schemaNamesString + ") AND \"viewname\" NOT IN ('geography_columns', 'geometry_columns', 'raster_columns', 'raster_overviews')"); + return [4 /*yield*/, this.query(selectViewDropsQuery)]; + case 3: + dropViewQueries = _a.sent(); + return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q["query"]); }))]; + case 4: + _a.sent(); + selectTableDropsQuery = "SELECT 'DROP TABLE IF EXISTS \"' || schemaname || '\".\"' || tablename || '\" CASCADE;' as \"query\" FROM \"pg_tables\" WHERE \"schemaname\" IN (" + schemaNamesString + ") AND \"tablename\" NOT IN ('spatial_ref_sys')"; + return [4 /*yield*/, this.query(selectTableDropsQuery)]; + case 5: + dropTableQueries = _a.sent(); + return [4 /*yield*/, Promise.all(dropTableQueries.map(function (q) { return _this.query(q["query"]); }))]; + case 6: + _a.sent(); + return [4 /*yield*/, this.dropEnumTypes(schemaNamesString)]; + case 7: + _a.sent(); + return [4 /*yield*/, this.commitTransaction()]; + case 8: + _a.sent(); + return [3 /*break*/, 14]; + case 9: + error_1 = _a.sent(); + _a.label = 10; + case 10: + _a.trys.push([10, 12, , 13]); + return [4 /*yield*/, this.rollbackTransaction()]; + case 11: + _a.sent(); + return [3 /*break*/, 13]; + case 12: + rollbackError_1 = _a.sent(); + return [3 /*break*/, 13]; + case 13: throw error_1; + case 14: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + PostgresQueryRunner.prototype.loadViews = function (viewNames) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var hasTable, currentSchemaQuery, currentSchema, viewsCondition, query, dbViews; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.hasTable(this.getTypeormMetadataTableName())]; + case 1: + hasTable = _a.sent(); + if (!hasTable) + return [2 /*return*/, Promise.resolve([])]; + return [4 /*yield*/, this.query("SELECT * FROM current_schema()")]; + case 2: + currentSchemaQuery = _a.sent(); + currentSchema = currentSchemaQuery[0]["current_schema"]; + viewsCondition = viewNames.map(function (viewName) { + var _a = Object(tslib_es6["e" /* __read */])(viewName.split("."), 2), schema = _a[0], name = _a[1]; + if (!name) { + name = schema; + schema = _this.driver.options.schema || currentSchema; + } + return "(\"t\".\"schema\" = '" + schema + "' AND \"t\".\"name\" = '" + name + "')"; + }).join(" OR "); + query = "SELECT \"t\".*, \"v\".\"check_option\" FROM " + this.escapePath(this.getTypeormMetadataTableName()) + " \"t\" " + + ("INNER JOIN \"information_schema\".\"views\" \"v\" ON \"v\".\"table_schema\" = \"t\".\"schema\" AND \"v\".\"table_name\" = \"t\".\"name\" WHERE \"t\".\"type\" = 'VIEW' " + (viewsCondition ? "AND (" + viewsCondition + ")" : "")); + return [4 /*yield*/, this.query(query)]; + case 3: + dbViews = _a.sent(); + return [2 /*return*/, dbViews.map(function (dbView) { + var view = new View["a" /* View */](); + var schema = dbView["schema"] === currentSchema && !_this.driver.options.schema ? undefined : dbView["schema"]; + view.name = _this.driver.buildTableName(dbView["name"], schema); + view.expression = dbView["value"]; + return view; + })]; + } + }); + }); + }; + /** + * Loads all tables (with given names) from the database and creates a Table from them. + */ + PostgresQueryRunner.prototype.loadTables = function (tableNames) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var currentSchemaQuery, currentSchema, tablesCondition, tablesSql, columnsSql, constraintsCondition, constraintsSql, indicesSql, foreignKeysCondition, hasRelispartitionColumn, isPartitionCondition, foreignKeysSql, _a, dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + // if no tables given then no need to proceed + if (!tableNames || !tableNames.length) + return [2 /*return*/, []]; + return [4 /*yield*/, this.query("SELECT * FROM current_schema()")]; + case 1: + currentSchemaQuery = _b.sent(); + currentSchema = currentSchemaQuery[0]["current_schema"]; + tablesCondition = tableNames.map(function (tableName) { + var _a = Object(tslib_es6["e" /* __read */])(tableName.split("."), 2), schema = _a[0], name = _a[1]; + if (!name) { + name = schema; + schema = _this.driver.options.schema || currentSchema; + } + return "(\"table_schema\" = '" + schema + "' AND \"table_name\" = '" + name + "')"; + }).join(" OR "); + tablesSql = "SELECT * FROM \"information_schema\".\"tables\" WHERE " + tablesCondition; + columnsSql = "\n SELECT columns.*,\n pg_catalog.col_description(('\"' || table_catalog || '\".\"' || table_schema || '\".\"' || table_name || '\"')::regclass::oid, ordinal_position) AS description,\n ('\"' || \"udt_schema\" || '\".\"' || \"udt_name\" || '\"')::\"regtype\" AS \"regtype\",\n pg_catalog.format_type(\"col_attr\".\"atttypid\", \"col_attr\".\"atttypmod\") AS \"format_type\"\n FROM \"information_schema\".\"columns\"\n LEFT JOIN \"pg_catalog\".\"pg_attribute\" AS \"col_attr\"\n ON \"col_attr\".\"attname\" = \"columns\".\"column_name\"\n AND \"col_attr\".\"attrelid\" = (\n SELECT\n \"cls\".\"oid\" FROM \"pg_catalog\".\"pg_class\" AS \"cls\"\n LEFT JOIN \"pg_catalog\".\"pg_namespace\" AS \"ns\"\n ON \"ns\".\"oid\" = \"cls\".\"relnamespace\"\n WHERE \"cls\".\"relname\" = \"columns\".\"table_name\"\n AND \"ns\".\"nspname\" = \"columns\".\"table_schema\"\n )\n WHERE\n " + tablesCondition; + constraintsCondition = tableNames.map(function (tableName) { + var _a = Object(tslib_es6["e" /* __read */])(tableName.split("."), 2), schema = _a[0], name = _a[1]; + if (!name) { + name = schema; + schema = _this.driver.options.schema || currentSchema; + } + return "(\"ns\".\"nspname\" = '" + schema + "' AND \"t\".\"relname\" = '" + name + "')"; + }).join(" OR "); + constraintsSql = "SELECT \"ns\".\"nspname\" AS \"table_schema\", \"t\".\"relname\" AS \"table_name\", \"cnst\".\"conname\" AS \"constraint_name\", " + + "pg_get_constraintdef(\"cnst\".\"oid\") AS \"expression\", " + + "CASE \"cnst\".\"contype\" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS \"constraint_type\", \"a\".\"attname\" AS \"column_name\" " + + "FROM \"pg_constraint\" \"cnst\" " + + "INNER JOIN \"pg_class\" \"t\" ON \"t\".\"oid\" = \"cnst\".\"conrelid\" " + + "INNER JOIN \"pg_namespace\" \"ns\" ON \"ns\".\"oid\" = \"cnst\".\"connamespace\" " + + "LEFT JOIN \"pg_attribute\" \"a\" ON \"a\".\"attrelid\" = \"cnst\".\"conrelid\" AND \"a\".\"attnum\" = ANY (\"cnst\".\"conkey\") " + + ("WHERE \"t\".\"relkind\" IN ('r', 'p') AND (" + constraintsCondition + ")"); + indicesSql = "SELECT \"ns\".\"nspname\" AS \"table_schema\", \"t\".\"relname\" AS \"table_name\", \"i\".\"relname\" AS \"constraint_name\", \"a\".\"attname\" AS \"column_name\", " + + "CASE \"ix\".\"indisunique\" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS \"is_unique\", pg_get_expr(\"ix\".\"indpred\", \"ix\".\"indrelid\") AS \"condition\", " + + "\"types\".\"typname\" AS \"type_name\" " + + "FROM \"pg_class\" \"t\" " + + "INNER JOIN \"pg_index\" \"ix\" ON \"ix\".\"indrelid\" = \"t\".\"oid\" " + + "INNER JOIN \"pg_attribute\" \"a\" ON \"a\".\"attrelid\" = \"t\".\"oid\" AND \"a\".\"attnum\" = ANY (\"ix\".\"indkey\") " + + "INNER JOIN \"pg_namespace\" \"ns\" ON \"ns\".\"oid\" = \"t\".\"relnamespace\" " + + "INNER JOIN \"pg_class\" \"i\" ON \"i\".\"oid\" = \"ix\".\"indexrelid\" " + + "INNER JOIN \"pg_type\" \"types\" ON \"types\".\"oid\" = \"a\".\"atttypid\" " + + "LEFT JOIN \"pg_constraint\" \"cnst\" ON \"cnst\".\"conname\" = \"i\".\"relname\" " + + ("WHERE \"t\".\"relkind\" IN ('r', 'p') AND \"cnst\".\"contype\" IS NULL AND (" + constraintsCondition + ")"); + foreignKeysCondition = tableNames.map(function (tableName) { + var _a = Object(tslib_es6["e" /* __read */])(tableName.split("."), 2), schema = _a[0], name = _a[1]; + if (!name) { + name = schema; + schema = _this.driver.options.schema || currentSchema; + } + return "(\"ns\".\"nspname\" = '" + schema + "' AND \"cl\".\"relname\" = '" + name + "')"; + }).join(" OR "); + return [4 /*yield*/, this.hasSupportForPartitionedTables()]; + case 2: + hasRelispartitionColumn = _b.sent(); + isPartitionCondition = hasRelispartitionColumn ? " AND \"cl\".\"relispartition\" = 'f'" : ""; + foreignKeysSql = "SELECT \"con\".\"conname\" AS \"constraint_name\", \"con\".\"nspname\" AS \"table_schema\", \"con\".\"relname\" AS \"table_name\", \"att2\".\"attname\" AS \"column_name\", " + + "\"ns\".\"nspname\" AS \"referenced_table_schema\", \"cl\".\"relname\" AS \"referenced_table_name\", \"att\".\"attname\" AS \"referenced_column_name\", \"con\".\"confdeltype\" AS \"on_delete\", " + + "\"con\".\"confupdtype\" AS \"on_update\", \"con\".\"condeferrable\" AS \"deferrable\", \"con\".\"condeferred\" AS \"deferred\" " + + "FROM ( " + + "SELECT UNNEST (\"con1\".\"conkey\") AS \"parent\", UNNEST (\"con1\".\"confkey\") AS \"child\", \"con1\".\"confrelid\", \"con1\".\"conrelid\", \"con1\".\"conname\", \"con1\".\"contype\", \"ns\".\"nspname\", " + + "\"cl\".\"relname\", \"con1\".\"condeferrable\", " + + "CASE WHEN \"con1\".\"condeferred\" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, " + + "CASE \"con1\".\"confdeltype\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \"confdeltype\", " + + "CASE \"con1\".\"confupdtype\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \"confupdtype\" " + + "FROM \"pg_class\" \"cl\" " + + "INNER JOIN \"pg_namespace\" \"ns\" ON \"cl\".\"relnamespace\" = \"ns\".\"oid\" " + + "INNER JOIN \"pg_constraint\" \"con1\" ON \"con1\".\"conrelid\" = \"cl\".\"oid\" " + + ("WHERE \"con1\".\"contype\" = 'f' AND (" + foreignKeysCondition + ") ") + + ") \"con\" " + + "INNER JOIN \"pg_attribute\" \"att\" ON \"att\".\"attrelid\" = \"con\".\"confrelid\" AND \"att\".\"attnum\" = \"con\".\"child\" " + + ("INNER JOIN \"pg_class\" \"cl\" ON \"cl\".\"oid\" = \"con\".\"confrelid\" " + isPartitionCondition) + + "INNER JOIN \"pg_namespace\" \"ns\" ON \"cl\".\"relnamespace\" = \"ns\".\"oid\" " + + "INNER JOIN \"pg_attribute\" \"att2\" ON \"att2\".\"attrelid\" = \"con\".\"conrelid\" AND \"att2\".\"attnum\" = \"con\".\"parent\""; + return [4 /*yield*/, Promise.all([ + this.query(tablesSql), + this.query(columnsSql), + this.query(constraintsSql), + this.query(indicesSql), + this.query(foreignKeysSql), + ])]; + case 3: + _a = tslib_es6["e" /* __read */].apply(void 0, [_b.sent(), 5]), dbTables = _a[0], dbColumns = _a[1], dbConstraints = _a[2], dbIndices = _a[3], dbForeignKeys = _a[4]; + // if tables were not found in the db, no need to proceed + if (!dbTables.length) + return [2 /*return*/, []]; + // create tables for loaded tables + return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var table, getSchemaFromKey, schema, tableFullName, _a, tableUniqueConstraints, tableCheckConstraints, tableExclusionConstraints, tableForeignKeyConstraints, tableIndexConstraints; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + table = new Table["a" /* Table */](); + getSchemaFromKey = function (dbObject, key) { return dbObject[key] === currentSchema && !_this.driver.options.schema ? undefined : dbObject[key]; }; + schema = getSchemaFromKey(dbTable, "table_schema"); + table.name = this.driver.buildTableName(dbTable["table_name"], schema); + tableFullName = this.driver.buildTableName(dbTable["table_name"], dbTable["table_schema"]); + // create columns from the loaded columns + _a = table; + return [4 /*yield*/, Promise.all(dbColumns + .filter(function (dbColumn) { return _this.driver.buildTableName(dbColumn["table_name"], dbColumn["table_schema"]) === tableFullName; }) + .map(function (dbColumn) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var columnConstraints, tableColumn, type, enumTypeName, builtEnumName, sql, results, geometryColumnSql, results, geographyColumnSql, results, length_1, match, uniqueConstraint, isConstraintComposite; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + columnConstraints = dbConstraints.filter(function (dbConstraint) { + return _this.driver.buildTableName(dbConstraint["table_name"], dbConstraint["table_schema"]) === tableFullName && dbConstraint["column_name"] === dbColumn["column_name"]; + }); + tableColumn = new TableColumn["a" /* TableColumn */](); + tableColumn.name = dbColumn["column_name"]; + tableColumn.type = dbColumn["regtype"].toLowerCase(); + if (tableColumn.type === "numeric" || tableColumn.type === "decimal" || tableColumn.type === "float") { + // If one of these properties was set, and another was not, Postgres sets '0' in to unspecified property + // we set 'undefined' in to unspecified property to avoid changing column on sync + if (dbColumn["numeric_precision"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["numeric_precision"])) { + tableColumn.precision = dbColumn["numeric_precision"]; + } + else if (dbColumn["numeric_scale"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn["numeric_scale"])) { + tableColumn.precision = undefined; + } + if (dbColumn["numeric_scale"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn["numeric_scale"])) { + tableColumn.scale = dbColumn["numeric_scale"]; + } + else if (dbColumn["numeric_precision"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["numeric_precision"])) { + tableColumn.scale = undefined; + } + } + if (dbColumn["data_type"].toLowerCase() === "array") { + tableColumn.isArray = true; + type = tableColumn.type.replace("[]", ""); + tableColumn.type = this.connection.driver.normalizeType({ type: type }); + } + if (tableColumn.type === "interval" + || tableColumn.type === "time without time zone" + || tableColumn.type === "time with time zone" + || tableColumn.type === "timestamp without time zone" + || tableColumn.type === "timestamp with time zone") { + tableColumn.precision = !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["datetime_precision"]) ? dbColumn["datetime_precision"] : undefined; + } + if (!(tableColumn.type.indexOf("enum") !== -1)) return [3 /*break*/, 3]; + return [4 /*yield*/, this.getEnumTypeName(table, tableColumn)]; + case 1: + enumTypeName = (_a.sent()).enumTypeName; + builtEnumName = this.buildEnumName(table, tableColumn, false, true); + if (builtEnumName !== enumTypeName) + tableColumn.enumName = enumTypeName; + tableColumn.type = "enum"; + sql = "SELECT \"e\".\"enumlabel\" AS \"value\" FROM \"pg_enum\" \"e\" " + + "INNER JOIN \"pg_type\" \"t\" ON \"t\".\"oid\" = \"e\".\"enumtypid\" " + + "INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" " + + ("WHERE \"n\".\"nspname\" = '" + dbTable["table_schema"] + "' AND \"t\".\"typname\" = '" + this.buildEnumName(table, tableColumn, false, true) + "'"); + return [4 /*yield*/, this.query(sql)]; + case 2: + results = _a.sent(); + tableColumn.enum = results.map(function (result) { return result["value"]; }); + _a.label = 3; + case 3: + if (!(tableColumn.type === "geometry")) return [3 /*break*/, 5]; + geometryColumnSql = "SELECT * FROM (\n SELECT\n \"f_table_schema\" \"table_schema\",\n \"f_table_name\" \"table_name\",\n \"f_geometry_column\" \"column_name\",\n \"srid\",\n \"type\"\n FROM \"geometry_columns\"\n ) AS _\n WHERE (" + tablesCondition + ") AND \"column_name\" = '" + tableColumn.name + "' AND \"table_name\" = '" + dbTable["table_name"] + "'"; + return [4 /*yield*/, this.query(geometryColumnSql)]; + case 4: + results = _a.sent(); + tableColumn.spatialFeatureType = results[0].type; + tableColumn.srid = results[0].srid; + _a.label = 5; + case 5: + if (!(tableColumn.type === "geography")) return [3 /*break*/, 7]; + geographyColumnSql = "SELECT * FROM (\n SELECT\n \"f_table_schema\" \"table_schema\",\n \"f_table_name\" \"table_name\",\n \"f_geography_column\" \"column_name\",\n \"srid\",\n \"type\"\n FROM \"geography_columns\"\n ) AS _\n WHERE (" + tablesCondition + ") AND \"column_name\" = '" + tableColumn.name + "' AND \"table_name\" = '" + dbTable["table_name"] + "'"; + return [4 /*yield*/, this.query(geographyColumnSql)]; + case 6: + results = _a.sent(); + tableColumn.spatialFeatureType = results[0].type; + tableColumn.srid = results[0].srid; + _a.label = 7; + case 7: + // check only columns that have length property + if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1) { + if (tableColumn.isArray) { + match = /\((\d+)\)/.exec(dbColumn["format_type"]); + length_1 = match ? match[1] : undefined; + } + else if (dbColumn["character_maximum_length"]) { + length_1 = dbColumn["character_maximum_length"].toString(); + } + if (length_1) { + tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length_1) ? length_1 : ""; + } + } + tableColumn.isNullable = dbColumn["is_nullable"] === "YES"; + tableColumn.isPrimary = !!columnConstraints.find(function (constraint) { return constraint["constraint_type"] === "PRIMARY"; }); + uniqueConstraint = columnConstraints.find(function (constraint) { return constraint["constraint_type"] === "UNIQUE"; }); + isConstraintComposite = uniqueConstraint + ? !!dbConstraints.find(function (dbConstraint) { return dbConstraint["constraint_type"] === "UNIQUE" + && dbConstraint["constraint_name"] === uniqueConstraint["constraint_name"] + && dbConstraint["column_name"] !== dbColumn["column_name"]; }) + : false; + tableColumn.isUnique = !!uniqueConstraint && !isConstraintComposite; + if (dbColumn["column_default"] !== null && dbColumn["column_default"] !== undefined) { + if (dbColumn["column_default"].replace(/"/gi, "") === "nextval('" + this.buildSequenceName(table, dbColumn["column_name"], currentSchema, true) + "'::regclass)") { + tableColumn.isGenerated = true; + tableColumn.generationStrategy = "increment"; + } + else if (dbColumn["column_default"] === "gen_random_uuid()" || /^uuid_generate_v\d\(\)/.test(dbColumn["column_default"])) { + tableColumn.isGenerated = true; + tableColumn.generationStrategy = "uuid"; + } + else { + tableColumn.default = dbColumn["column_default"].replace(/::.*/, ""); + tableColumn.default = tableColumn.default.replace(/^(-?\d+)$/, "'$1'"); + } + } + tableColumn.comment = dbColumn["description"] ? dbColumn["description"] : undefined; + if (dbColumn["character_set_name"]) + tableColumn.charset = dbColumn["character_set_name"]; + if (dbColumn["collation_name"]) + tableColumn.collation = dbColumn["collation_name"]; + return [2 /*return*/, tableColumn]; + } + }); + }); }))]; + case 1: + // create columns from the loaded columns + _a.columns = _b.sent(); + tableUniqueConstraints = OrmUtils["a" /* OrmUtils */].uniq(dbConstraints.filter(function (dbConstraint) { + return _this.driver.buildTableName(dbConstraint["table_name"], dbConstraint["table_schema"]) === tableFullName + && dbConstraint["constraint_type"] === "UNIQUE"; + }), function (dbConstraint) { return dbConstraint["constraint_name"]; }); + table.uniques = tableUniqueConstraints.map(function (constraint) { + var uniques = dbConstraints.filter(function (dbC) { return dbC["constraint_name"] === constraint["constraint_name"]; }); + return new TableUnique["a" /* TableUnique */]({ + name: constraint["constraint_name"], + columnNames: uniques.map(function (u) { return u["column_name"]; }) + }); + }); + tableCheckConstraints = OrmUtils["a" /* OrmUtils */].uniq(dbConstraints.filter(function (dbConstraint) { + return _this.driver.buildTableName(dbConstraint["table_name"], dbConstraint["table_schema"]) === tableFullName + && dbConstraint["constraint_type"] === "CHECK"; + }), function (dbConstraint) { return dbConstraint["constraint_name"]; }); + table.checks = tableCheckConstraints.map(function (constraint) { + var checks = dbConstraints.filter(function (dbC) { return dbC["constraint_name"] === constraint["constraint_name"]; }); + return new TableCheck["a" /* TableCheck */]({ + name: constraint["constraint_name"], + columnNames: checks.map(function (c) { return c["column_name"]; }), + expression: constraint["expression"].replace(/^\s*CHECK\s*\((.*)\)\s*$/i, "$1") + }); + }); + tableExclusionConstraints = OrmUtils["a" /* OrmUtils */].uniq(dbConstraints.filter(function (dbConstraint) { + return _this.driver.buildTableName(dbConstraint["table_name"], dbConstraint["table_schema"]) === tableFullName + && dbConstraint["constraint_type"] === "EXCLUDE"; + }), function (dbConstraint) { return dbConstraint["constraint_name"]; }); + table.exclusions = tableExclusionConstraints.map(function (constraint) { + return new TableExclusion["a" /* TableExclusion */]({ + name: constraint["constraint_name"], + expression: constraint["expression"].substring(8) // trim EXCLUDE from start of expression + }); + }); + tableForeignKeyConstraints = OrmUtils["a" /* OrmUtils */].uniq(dbForeignKeys.filter(function (dbForeignKey) { + return _this.driver.buildTableName(dbForeignKey["table_name"], dbForeignKey["table_schema"]) === tableFullName; + }), function (dbForeignKey) { return dbForeignKey["constraint_name"]; }); + table.foreignKeys = tableForeignKeyConstraints.map(function (dbForeignKey) { + var foreignKeys = dbForeignKeys.filter(function (dbFk) { return dbFk["constraint_name"] === dbForeignKey["constraint_name"]; }); + // if referenced table located in currently used schema, we don't need to concat schema name to table name. + var schema = getSchemaFromKey(dbForeignKey, "referenced_table_schema"); + var referencedTableName = _this.driver.buildTableName(dbForeignKey["referenced_table_name"], schema); + return new TableForeignKey["a" /* TableForeignKey */]({ + name: dbForeignKey["constraint_name"], + columnNames: foreignKeys.map(function (dbFk) { return dbFk["column_name"]; }), + referencedTableName: referencedTableName, + referencedColumnNames: foreignKeys.map(function (dbFk) { return dbFk["referenced_column_name"]; }), + onDelete: dbForeignKey["on_delete"], + onUpdate: dbForeignKey["on_update"], + deferrable: dbForeignKey["deferrable"] ? dbForeignKey["deferred"] : undefined, + }); + }); + tableIndexConstraints = OrmUtils["a" /* OrmUtils */].uniq(dbIndices.filter(function (dbIndex) { + return _this.driver.buildTableName(dbIndex["table_name"], dbIndex["table_schema"]) === tableFullName; + }), function (dbIndex) { return dbIndex["constraint_name"]; }); + table.indices = tableIndexConstraints.map(function (constraint) { + var indices = dbIndices.filter(function (index) { + return index["table_schema"] === constraint["table_schema"] + && index["table_name"] === constraint["table_name"] + && index["constraint_name"] === constraint["constraint_name"]; + }); + return new TableIndex["a" /* TableIndex */]({ + table: table, + name: constraint["constraint_name"], + columnNames: indices.map(function (i) { return i["column_name"]; }), + isUnique: constraint["is_unique"] === "TRUE", + where: constraint["condition"], + isSpatial: indices.every(function (i) { return _this.driver.spatialTypes.indexOf(i["type_name"]) >= 0; }), + isFulltext: false + }); + }); + return [2 /*return*/, table]; + } + }); + }); }))]; + } + }); + }); + }; + /** + * Builds create table sql. + */ + PostgresQueryRunner.prototype.createTableSql = function (table, createForeignKeys) { + var _this = this; + var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(table, column); }).join(", "); + var sql = "CREATE TABLE " + this.escapePath(table) + " (" + columnDefinitions; + table.columns + .filter(function (column) { return column.isUnique; }) + .forEach(function (column) { + var isUniqueExist = table.uniques.some(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; }); + if (!isUniqueExist) + table.uniques.push(new TableUnique["a" /* TableUnique */]({ + name: _this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]), + columnNames: [column.name] + })); + }); + if (table.uniques.length > 0) { + var uniquesSql = table.uniques.map(function (unique) { + var uniqueName = unique.name ? unique.name : _this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames); + var columnNames = unique.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + return "CONSTRAINT \"" + uniqueName + "\" UNIQUE (" + columnNames + ")"; + }).join(", "); + sql += ", " + uniquesSql; + } + if (table.checks.length > 0) { + var checksSql = table.checks.map(function (check) { + var checkName = check.name ? check.name : _this.connection.namingStrategy.checkConstraintName(table.name, check.expression); + return "CONSTRAINT \"" + checkName + "\" CHECK (" + check.expression + ")"; + }).join(", "); + sql += ", " + checksSql; + } + if (table.exclusions.length > 0) { + var exclusionsSql = table.exclusions.map(function (exclusion) { + var exclusionName = exclusion.name ? exclusion.name : _this.connection.namingStrategy.exclusionConstraintName(table.name, exclusion.expression); + return "CONSTRAINT \"" + exclusionName + "\" EXCLUDE " + exclusion.expression; + }).join(", "); + sql += ", " + exclusionsSql; + } + if (table.foreignKeys.length > 0 && createForeignKeys) { + var foreignKeysSql = table.foreignKeys.map(function (fk) { + var columnNames = fk.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + if (!fk.name) + fk.name = _this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames); + var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + var constraint = "CONSTRAINT \"" + fk.name + "\" FOREIGN KEY (" + columnNames + ") REFERENCES " + _this.escapePath(fk.referencedTableName) + " (" + referencedColumnNames + ")"; + if (fk.onDelete) + constraint += " ON DELETE " + fk.onDelete; + if (fk.onUpdate) + constraint += " ON UPDATE " + fk.onUpdate; + if (fk.deferrable) + constraint += " DEFERRABLE " + fk.deferrable; + return constraint; + }).join(", "); + sql += ", " + foreignKeysSql; + } + var primaryColumns = table.columns.filter(function (column) { return column.isPrimary; }); + if (primaryColumns.length > 0) { + var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, primaryColumns.map(function (column) { return column.name; })); + var columnNames = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + sql += ", CONSTRAINT \"" + primaryKeyName + "\" PRIMARY KEY (" + columnNames + ")"; + } + sql += ")"; + table.columns + .filter(function (it) { return it.comment; }) + .forEach(function (it) { return sql += "; COMMENT ON COLUMN " + _this.escapePath(table) + ".\"" + it.name + "\" IS " + _this.escapeComment(it.comment); }); + return new Query["a" /* Query */](sql); + }; + /** + * Builds drop table sql. + */ + PostgresQueryRunner.prototype.dropTableSql = function (tableOrPath) { + return new Query["a" /* Query */]("DROP TABLE " + this.escapePath(tableOrPath)); + }; + PostgresQueryRunner.prototype.createViewSql = function (view) { + var materializedClause = view.materialized ? "MATERIALIZED " : ""; + var viewName = this.escapePath(view); + if (typeof view.expression === "string") { + return new Query["a" /* Query */]("CREATE " + materializedClause + "VIEW " + viewName + " AS " + view.expression); + } + else { + return new Query["a" /* Query */]("CREATE " + materializedClause + "VIEW " + viewName + " AS " + view.expression(this.connection).getQuery()); + } + }; + PostgresQueryRunner.prototype.insertViewDefinitionSql = function (view) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var currentSchemaQuery, currentSchema, splittedName, schema, name, expression, _a, query, parameters; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, this.query("SELECT * FROM current_schema()")]; + case 1: + currentSchemaQuery = _b.sent(); + currentSchema = currentSchemaQuery[0]["current_schema"]; + splittedName = view.name.split("."); + schema = this.driver.options.schema || currentSchema; + name = view.name; + if (splittedName.length === 2) { + schema = splittedName[0]; + name = splittedName[1]; + } + expression = typeof view.expression === "string" ? view.expression.trim() : view.expression(this.connection).getQuery(); + _a = Object(tslib_es6["e" /* __read */])(this.connection.createQueryBuilder() + .insert() + .into(this.getTypeormMetadataTableName()) + .values({ type: "VIEW", schema: schema, name: name, value: expression }) + .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1]; + return [2 /*return*/, new Query["a" /* Query */](query, parameters)]; + } + }); + }); + }; + /** + * Builds drop view sql. + */ + PostgresQueryRunner.prototype.dropViewSql = function (viewOrPath) { + return new Query["a" /* Query */]("DROP VIEW " + this.escapePath(viewOrPath)); + }; + /** + * Builds remove view sql. + */ + PostgresQueryRunner.prototype.deleteViewDefinitionSql = function (viewOrPath) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var currentSchemaQuery, currentSchema, viewName, splittedName, schema, name, qb, _a, query, parameters; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, this.query("SELECT * FROM current_schema()")]; + case 1: + currentSchemaQuery = _b.sent(); + currentSchema = currentSchemaQuery[0]["current_schema"]; + viewName = viewOrPath instanceof View["a" /* View */] ? viewOrPath.name : viewOrPath; + splittedName = viewName.split("."); + schema = this.driver.options.schema || currentSchema; + name = viewName; + if (splittedName.length === 2) { + schema = splittedName[0]; + name = splittedName[1]; + } + qb = this.connection.createQueryBuilder(); + _a = Object(tslib_es6["e" /* __read */])(qb.delete() + .from(this.getTypeormMetadataTableName()) + .where(qb.escape("type") + " = 'VIEW'") + .andWhere(qb.escape("schema") + " = :schema", { schema: schema }) + .andWhere(qb.escape("name") + " = :name", { name: name }) + .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1]; + return [2 /*return*/, new Query["a" /* Query */](query, parameters)]; + } + }); + }); + }; + /** + * Extracts schema name from given Table object or table name string. + */ + PostgresQueryRunner.prototype.extractSchema = function (target) { + var tableName = target instanceof Table["a" /* Table */] ? target.name : target; + return tableName.indexOf(".") === -1 ? this.driver.options.schema : tableName.split(".")[0]; + }; + /** + * Drops ENUM type from given schemas. + */ + PostgresQueryRunner.prototype.dropEnumTypes = function (schemaNames) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var selectDropsQuery, dropQueries; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + selectDropsQuery = "SELECT 'DROP TYPE IF EXISTS \"' || n.nspname || '\".\"' || t.typname || '\" CASCADE;' as \"query\" FROM \"pg_type\" \"t\" " + + "INNER JOIN \"pg_enum\" \"e\" ON \"e\".\"enumtypid\" = \"t\".\"oid\" " + + "INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" " + + ("WHERE \"n\".\"nspname\" IN (" + schemaNames + ") GROUP BY \"n\".\"nspname\", \"t\".\"typname\""); + return [4 /*yield*/, this.query(selectDropsQuery)]; + case 1: + dropQueries = _a.sent(); + return [4 /*yield*/, Promise.all(dropQueries.map(function (q) { return _this.query(q["query"]); }))]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Checks if enum with the given name exist in the database. + */ + PostgresQueryRunner.prototype.hasEnumType = function (table, column) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var schema, enumName, sql, result; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + schema = this.parseTableName(table).schema; + enumName = this.buildEnumName(table, column, false, true); + sql = "SELECT \"n\".\"nspname\", \"t\".\"typname\" FROM \"pg_type\" \"t\" " + + "INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" " + + ("WHERE \"n\".\"nspname\" = " + schema + " AND \"t\".\"typname\" = '" + enumName + "'"); + return [4 /*yield*/, this.query(sql)]; + case 1: + result = _a.sent(); + return [2 /*return*/, result.length ? true : false]; + } + }); + }); + }; + /** + * Builds create ENUM type sql. + */ + PostgresQueryRunner.prototype.createEnumTypeSql = function (table, column, enumName) { + if (!enumName) + enumName = this.buildEnumName(table, column); + var enumValues = column.enum.map(function (value) { return "'" + value.replace("'", "''") + "'"; }).join(", "); + return new Query["a" /* Query */]("CREATE TYPE " + enumName + " AS ENUM(" + enumValues + ")"); + }; + /** + * Builds create ENUM type sql. + */ + PostgresQueryRunner.prototype.dropEnumTypeSql = function (table, column, enumName) { + if (!enumName) + enumName = this.buildEnumName(table, column); + return new Query["a" /* Query */]("DROP TYPE " + enumName); + }; + /** + * Builds create index sql. + */ + PostgresQueryRunner.prototype.createIndexSql = function (table, index) { + var columns = index.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + return new Query["a" /* Query */]("CREATE " + (index.isUnique ? "UNIQUE " : "") + "INDEX \"" + index.name + "\" ON " + this.escapePath(table) + " " + (index.isSpatial ? "USING GiST " : "") + "(" + columns + ") " + (index.where ? "WHERE " + index.where : "")); + }; + /** + * Builds drop index sql. + */ + PostgresQueryRunner.prototype.dropIndexSql = function (table, indexOrName) { + var indexName = indexOrName instanceof TableIndex["a" /* TableIndex */] ? indexOrName.name : indexOrName; + var schema = this.extractSchema(table); + return schema ? new Query["a" /* Query */]("DROP INDEX \"" + schema + "\".\"" + indexName + "\"") : new Query["a" /* Query */]("DROP INDEX \"" + indexName + "\""); + }; + /** + * Builds create primary key sql. + */ + PostgresQueryRunner.prototype.createPrimaryKeySql = function (table, columnNames) { + var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames); + var columnNamesString = columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + primaryKeyName + "\" PRIMARY KEY (" + columnNamesString + ")"); + }; + /** + * Builds drop primary key sql. + */ + PostgresQueryRunner.prototype.dropPrimaryKeySql = function (table) { + var columnNames = table.primaryColumns.map(function (column) { return column.name; }); + var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames); + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + primaryKeyName + "\""); + }; + /** + * Builds create unique constraint sql. + */ + PostgresQueryRunner.prototype.createUniqueConstraintSql = function (table, uniqueConstraint) { + var columnNames = uniqueConstraint.columnNames.map(function (column) { return "\"" + column + "\""; }).join(", "); + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + uniqueConstraint.name + "\" UNIQUE (" + columnNames + ")"); + }; + /** + * Builds drop unique constraint sql. + */ + PostgresQueryRunner.prototype.dropUniqueConstraintSql = function (table, uniqueOrName) { + var uniqueName = uniqueOrName instanceof TableUnique["a" /* TableUnique */] ? uniqueOrName.name : uniqueOrName; + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + uniqueName + "\""); + }; + /** + * Builds create check constraint sql. + */ + PostgresQueryRunner.prototype.createCheckConstraintSql = function (table, checkConstraint) { + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + checkConstraint.name + "\" CHECK (" + checkConstraint.expression + ")"); + }; + /** + * Builds drop check constraint sql. + */ + PostgresQueryRunner.prototype.dropCheckConstraintSql = function (table, checkOrName) { + var checkName = checkOrName instanceof TableCheck["a" /* TableCheck */] ? checkOrName.name : checkOrName; + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + checkName + "\""); + }; + /** + * Builds create exclusion constraint sql. + */ + PostgresQueryRunner.prototype.createExclusionConstraintSql = function (table, exclusionConstraint) { + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + exclusionConstraint.name + "\" EXCLUDE " + exclusionConstraint.expression); + }; + /** + * Builds drop exclusion constraint sql. + */ + PostgresQueryRunner.prototype.dropExclusionConstraintSql = function (table, exclusionOrName) { + var exclusionName = exclusionOrName instanceof TableExclusion["a" /* TableExclusion */] ? exclusionOrName.name : exclusionOrName; + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + exclusionName + "\""); + }; + /** + * Builds create foreign key sql. + */ + PostgresQueryRunner.prototype.createForeignKeySql = function (table, foreignKey) { + var columnNames = foreignKey.columnNames.map(function (column) { return "\"" + column + "\""; }).join(", "); + var referencedColumnNames = foreignKey.referencedColumnNames.map(function (column) { return "\"" + column + "\""; }).join(","); + var sql = "ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + foreignKey.name + "\" FOREIGN KEY (" + columnNames + ") " + + ("REFERENCES " + this.escapePath(foreignKey.referencedTableName) + "(" + referencedColumnNames + ")"); + if (foreignKey.onDelete) + sql += " ON DELETE " + foreignKey.onDelete; + if (foreignKey.onUpdate) + sql += " ON UPDATE " + foreignKey.onUpdate; + if (foreignKey.deferrable) + sql += " DEFERRABLE " + foreignKey.deferrable; + return new Query["a" /* Query */](sql); + }; + /** + * Builds drop foreign key sql. + */ + PostgresQueryRunner.prototype.dropForeignKeySql = function (table, foreignKeyOrName) { + var foreignKeyName = foreignKeyOrName instanceof TableForeignKey["a" /* TableForeignKey */] ? foreignKeyOrName.name : foreignKeyOrName; + return new Query["a" /* Query */]("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + foreignKeyName + "\""); + }; + /** + * Builds sequence name from given table and column. + */ + PostgresQueryRunner.prototype.buildSequenceName = function (table, columnOrName, currentSchema, disableEscape, skipSchema) { + var columnName = columnOrName instanceof TableColumn["a" /* TableColumn */] ? columnOrName.name : columnOrName; + var schema = undefined; + var tableName = undefined; + if (table.name.indexOf(".") === -1) { + tableName = table.name; + } + else { + schema = table.name.split(".")[0]; + tableName = table.name.split(".")[1]; + } + var seqName = tableName + "_" + columnName + "_seq"; + if (seqName.length > this.connection.driver.maxAliasLength) // note doesn't yet handle corner cases where .length differs from number of UTF-8 bytes + seqName = tableName.substring(0, 29) + "_" + columnName.substring(0, Math.max(29, 63 - tableName.length - 5)) + "_seq"; + if (schema && schema !== currentSchema && !skipSchema) { + return disableEscape ? schema + "." + seqName : "\"" + schema + "\".\"" + seqName + "\""; + } + else { + return disableEscape ? "" + seqName : "\"" + seqName + "\""; + } + }; + /** + * Builds ENUM type name from given table and column. + */ + PostgresQueryRunner.prototype.buildEnumName = function (table, column, withSchema, disableEscape, toOld) { + if (withSchema === void 0) { withSchema = true; } + var schema = table.name.indexOf(".") === -1 ? this.driver.options.schema : table.name.split(".")[0]; + var tableName = table.name.indexOf(".") === -1 ? table.name : table.name.split(".")[1]; + var enumName = column.enumName ? column.enumName : tableName + "_" + column.name.toLowerCase() + "_enum"; + if (schema && withSchema) + enumName = schema + "." + enumName; + if (toOld) + enumName = enumName + "_old"; + return enumName.split(".").map(function (i) { + return disableEscape ? i : "\"" + i + "\""; + }).join("."); + }; + PostgresQueryRunner.prototype.getEnumTypeName = function (table, column) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var currentSchemaQuery, currentSchema, _a, schema, name, result, udtName; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, this.query("SELECT * FROM current_schema()")]; + case 1: + currentSchemaQuery = _b.sent(); + currentSchema = currentSchemaQuery[0]["current_schema"]; + _a = Object(tslib_es6["e" /* __read */])(table.name.split("."), 2), schema = _a[0], name = _a[1]; + if (!name) { + name = schema; + schema = this.driver.options.schema || currentSchema; + } + return [4 /*yield*/, this.query("SELECT \"udt_schema\", \"udt_name\" " + + ("FROM \"information_schema\".\"columns\" WHERE \"table_schema\" = '" + schema + "' AND \"table_name\" = '" + name + "' AND \"column_name\"='" + column.name + "'"))]; + case 2: + result = _b.sent(); + udtName = result[0]["udt_name"]; + if (udtName.indexOf("_") === 0) { + udtName = udtName.substr(1, udtName.length); + } + return [2 /*return*/, { + enumTypeSchema: result[0]["udt_schema"], + enumTypeName: udtName + }]; + } + }); + }); + }; + /** + * Escapes a given comment so it's safe to include in a query. + */ + PostgresQueryRunner.prototype.escapeComment = function (comment) { + if (!comment || comment.length === 0) { + return "NULL"; + } + comment = comment + .replace(/'/g, "''") + .replace("\0", ""); // Null bytes aren't allowed in comments + return "'" + comment + "'"; + }; + /** + * Escapes given table or view path. + */ + PostgresQueryRunner.prototype.escapePath = function (target, disableEscape) { + var tableName = target instanceof Table["a" /* Table */] || target instanceof View["a" /* View */] ? target.name : target; + tableName = tableName.indexOf(".") === -1 && this.driver.options.schema ? this.driver.options.schema + "." + tableName : tableName; + return tableName.split(".").map(function (i) { + return disableEscape ? i : "\"" + i + "\""; + }).join("."); + }; + /** + * Returns object with table schema and table name. + */ + PostgresQueryRunner.prototype.parseTableName = function (target) { + var tableName = target instanceof Table["a" /* Table */] ? target.name : target; + if (tableName.indexOf(".") === -1) { + return { + schema: this.driver.options.schema ? "'" + this.driver.options.schema + "'" : "current_schema()", + tableName: "'" + tableName + "'" + }; + } + else { + return { + schema: "'" + tableName.split(".")[0] + "'", + tableName: "'" + tableName.split(".")[1] + "'" + }; + } + }; + /** + * Builds a query for create column. + */ + PostgresQueryRunner.prototype.buildCreateColumnSql = function (table, column) { + var c = "\"" + column.name + "\""; + if (column.isGenerated === true && column.generationStrategy !== "uuid") { + if (column.type === "integer" || column.type === "int" || column.type === "int4") + c += " SERIAL"; + if (column.type === "smallint" || column.type === "int2") + c += " SMALLSERIAL"; + if (column.type === "bigint" || column.type === "int8") + c += " BIGSERIAL"; + } + if (column.type === "enum" || column.type === "simple-enum") { + c += " " + this.buildEnumName(table, column); + if (column.isArray) + c += " array"; + } + else if (!column.isGenerated || column.type === "uuid") { + c += " " + this.connection.driver.createFullType(column); + } + if (column.charset) + c += " CHARACTER SET \"" + column.charset + "\""; + if (column.collation) + c += " COLLATE \"" + column.collation + "\""; + if (column.isNullable !== true) + c += " NOT NULL"; + if (column.default !== undefined && column.default !== null) + c += " DEFAULT " + column.default; + if (column.isGenerated && column.generationStrategy === "uuid" && !column.default) + c += " DEFAULT " + this.driver.uuidGenerator; + return c; + }; + /** + * Checks if the PostgreSQL server has support for partitioned tables + */ + PostgresQueryRunner.prototype.hasSupportForPartitionedTables = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var result; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.query("SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition'")]; + case 1: + result = _a.sent(); + return [2 /*return*/, result.length ? true : false]; + } + }); + }); + }; + return PostgresQueryRunner; +}(BaseQueryRunner["a" /* BaseQueryRunner */])); + + +//# sourceMappingURL=PostgresQueryRunner.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js + + + + + + +var AuroraDataApiPostgresQueryRunner_PostgresQueryRunnerWrapper = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(PostgresQueryRunnerWrapper, _super); + function PostgresQueryRunnerWrapper(driver, mode) { + return _super.call(this, driver, mode) || this; + } + return PostgresQueryRunnerWrapper; +}(PostgresQueryRunner_PostgresQueryRunner)); +/** + * Runs queries on a single postgres database connection. + */ +var AuroraDataApiPostgresQueryRunner_AuroraDataApiPostgresQueryRunner = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(AuroraDataApiPostgresQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function AuroraDataApiPostgresQueryRunner(driver, client, mode) { + var _this = _super.call(this, driver, mode) || this; + _this.client = client; + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates/uses database connection from the connection pool to perform further operations. + * Returns obtained database connection. + */ + AuroraDataApiPostgresQueryRunner.prototype.connect = function () { + var _this = this; + if (this.databaseConnection) + return Promise.resolve(this.databaseConnection); + if (this.databaseConnectionPromise) + return this.databaseConnectionPromise; + if (this.mode === "slave" && this.driver.isReplicated) { + this.databaseConnectionPromise = this.driver.obtainSlaveConnection().then(function (_a) { + var _b = Object(tslib_es6["e" /* __read */])(_a, 2), connection = _b[0], release = _b[1]; + _this.driver.connectedQueryRunners.push(_this); + _this.databaseConnection = connection; + _this.releaseCallback = release; + return _this.databaseConnection; + }); + } + else { // master + this.databaseConnectionPromise = this.driver.obtainMasterConnection().then(function (_a) { + var _b = Object(tslib_es6["e" /* __read */])(_a, 2), connection = _b[0], release = _b[1]; + _this.driver.connectedQueryRunners.push(_this); + _this.databaseConnection = connection; + _this.releaseCallback = release; + return _this.databaseConnection; + }); + } + return this.databaseConnectionPromise; + }; + /** + * Starts transaction on the current connection. + */ + AuroraDataApiPostgresQueryRunner.prototype.startTransaction = function (isolationLevel) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isTransactionActive) + throw new TransactionAlreadyStartedError["a" /* TransactionAlreadyStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + this.isTransactionActive = true; + return [4 /*yield*/, this.client.startTransaction()]; + case 3: + _a.sent(); + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Commits transaction. + * Error will be thrown if transaction was not started. + */ + AuroraDataApiPostgresQueryRunner.prototype.commitTransaction = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive) + throw new TransactionNotStartedError["a" /* TransactionNotStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: return [4 /*yield*/, this.client.commitTransaction()]; + case 3: + _a.sent(); + this.isTransactionActive = false; + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Rollbacks transaction. + * Error will be thrown if transaction was not started. + */ + AuroraDataApiPostgresQueryRunner.prototype.rollbackTransaction = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive) + throw new TransactionNotStartedError["a" /* TransactionNotStartedError */](); + beforeBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: return [4 /*yield*/, this.client.rollbackTransaction()]; + case 3: + _a.sent(); + afterBroadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes a given SQL query. + */ + AuroraDataApiPostgresQueryRunner.prototype.query = function (query, parameters) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var result; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isReleased) + throw new QueryRunnerAlreadyReleasedError["a" /* QueryRunnerAlreadyReleasedError */](); + return [4 /*yield*/, this.client.query(query, parameters)]; + case 1: + result = _a.sent(); + if (result.records) { + return [2 /*return*/, result.records]; + } + return [2 /*return*/, result]; + } + }); + }); + }; + return AuroraDataApiPostgresQueryRunner; +}(AuroraDataApiPostgresQueryRunner_PostgresQueryRunnerWrapper)); + + +//# sourceMappingURL=AuroraDataApiPostgresQueryRunner.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js + + + + + +var AuroraDataApiPostgresDriver_PostgresWrapper = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(PostgresWrapper, _super); + function PostgresWrapper() { + return _super !== null && _super.apply(this, arguments) || this; + } + return PostgresWrapper; +}(BrowserDisabledDriversDummy["k" /* PostgresDriver */])); +var AuroraDataApiPostgresDriver_AuroraDataApiPostgresDriver = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(AuroraDataApiPostgresDriver, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function AuroraDataApiPostgresDriver(connection) { + var _this = _super.call(this) || this; + _this.connection = connection; + _this.options = connection.options; + _this.isReplicated = false; + // load data-api package + _this.loadDependencies(); + _this.client = new _this.DataApiDriver(_this.options.region, _this.options.secretArn, _this.options.resourceArn, _this.options.database, function (query, parameters) { return _this.connection.logger.logQuery(query, parameters); }, _this.options.serviceConfigOptions, _this.options.formatOptions); + return _this; + } + // ------------------------------------------------------------------------- + // Public Implemented Methods + // ------------------------------------------------------------------------- + /** + * Performs connection to the database. + * Based on pooling options, it can either create connection immediately, + * either create a pool and create connection when needed. + */ + AuroraDataApiPostgresDriver.prototype.connect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/]; + }); + }); + }; + /** + * Closes connection with database. + */ + AuroraDataApiPostgresDriver.prototype.disconnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/]; + }); + }); + }; + /** + * Creates a query runner used to execute database queries. + */ + AuroraDataApiPostgresDriver.prototype.createQueryRunner = function (mode) { + var _this = this; + return new AuroraDataApiPostgresQueryRunner_AuroraDataApiPostgresQueryRunner(this, new this.DataApiDriver(this.options.region, this.options.secretArn, this.options.resourceArn, this.options.database, function (query, parameters) { return _this.connection.logger.logQuery(query, parameters); }, this.options.serviceConfigOptions, this.options.formatOptions), mode); + }; + /** + * Prepares given value to a value to be persisted, based on its column type and metadata. + */ + AuroraDataApiPostgresDriver.prototype.preparePersistentValue = function (value, columnMetadata) { + if (this.options.formatOptions && this.options.formatOptions.castParameters === false) { + return _super.prototype.preparePersistentValue.call(this, value, columnMetadata); + } + if (columnMetadata.transformer) + value = ApplyValueTransformers["a" /* ApplyValueTransformers */].transformTo(columnMetadata.transformer, value); + return this.client.preparePersistentValue(value, columnMetadata); + }; + /** + * Prepares given value to a value to be persisted, based on its column type and metadata. + */ + AuroraDataApiPostgresDriver.prototype.prepareHydratedValue = function (value, columnMetadata) { + if (this.options.formatOptions && this.options.formatOptions.castParameters === false) { + return _super.prototype.prepareHydratedValue.call(this, value, columnMetadata); + } + if (columnMetadata.transformer) + value = ApplyValueTransformers["a" /* ApplyValueTransformers */].transformFrom(columnMetadata.transformer, value); + return this.client.prepareHydratedValue(value, columnMetadata); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * If driver dependency is not given explicitly, then try to load it via "require". + */ + AuroraDataApiPostgresDriver.prototype.loadDependencies = function () { + var pg = BrowserPlatformTools["a" /* PlatformTools */].load("typeorm-aurora-data-api-driver").pg; + this.DataApiDriver = pg; + }; + /** + * Executes given query. + */ + AuroraDataApiPostgresDriver.prototype.executeQuery = function (connection, query) { + return this.connection.query(query); + }; + /** + * Makes any action after connection (e.g. create extensions in Postgres driver). + */ + AuroraDataApiPostgresDriver.prototype.afterConnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var extensionsMetadata; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.checkMetadataForExtensions()]; + case 1: + extensionsMetadata = _a.sent(); + if (!extensionsMetadata.hasExtensions) return [3 /*break*/, 3]; + return [4 /*yield*/, this.enableExtensions(extensionsMetadata, this.connection)]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [2 /*return*/, Promise.resolve()]; + } + }); + }); + }; + return AuroraDataApiPostgresDriver; +}(AuroraDataApiPostgresDriver_PostgresWrapper)); + + +//# sourceMappingURL=AuroraDataApiPostgresDriver.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/DriverFactory.js + + + + + + + + + + + + + + + + + +/** + * Helps to create drivers. + */ +var DriverFactory_DriverFactory = /** @class */ (function () { + function DriverFactory() { + } + /** + * Creates a new driver depend on a given connection's driver type. + */ + DriverFactory.prototype.create = function (connection) { + var type = connection.options.type; + switch (type) { + case "mysql": + return new BrowserDisabledDriversDummy["i" /* MysqlDriver */](connection); + case "postgres": + return new BrowserDisabledDriversDummy["k" /* PostgresDriver */](connection); + case "cockroachdb": + return new BrowserDisabledDriversDummy["d" /* CockroachDriver */](connection); + case "sap": + return new BrowserDisabledDriversDummy["l" /* SapDriver */](connection); + case "mariadb": + return new BrowserDisabledDriversDummy["i" /* MysqlDriver */](connection); + case "sqlite": + return new BrowserDisabledDriversDummy["n" /* SqliteDriver */](connection); + case "better-sqlite3": + return new BrowserDisabledDriversDummy["c" /* BetterSqlite3Driver */](connection); + case "cordova": + return new CordovaDriver_CordovaDriver(connection); + case "nativescript": + return new NativescriptDriver["a" /* NativescriptDriver */](connection); + case "react-native": + return new ReactNativeDriver_ReactNativeDriver(connection); + case "sqljs": + return new SqljsDriver["a" /* SqljsDriver */](connection); + case "oracle": + return new BrowserDisabledDriversDummy["j" /* OracleDriver */](connection); + case "mssql": + return new BrowserDisabledDriversDummy["m" /* SqlServerDriver */](connection); + case "mongodb": + return new BrowserDisabledDriversDummy["e" /* MongoDriver */](connection); + case "expo": + return new ExpoDriver_ExpoDriver(connection); + case "aurora-data-api": + return new BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */](connection); + case "aurora-data-api-pg": + return new AuroraDataApiPostgresDriver_AuroraDataApiPostgresDriver(connection); + default: + throw new MissingDriverError_MissingDriverError(type); + } + }; + return DriverFactory; +}()); + + +//# sourceMappingURL=DriverFactory.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/platform/BrowserDirectoryExportedClassesLoader.js +/** + * Dummy functions for replacement via `package.json` in browser builds. + * + * If we don't include these functions typeorm will throw an error on runtime + * as well as during webpack builds. + */ +/** + * Loads all exported classes from the given directory. + */ +function importClassesFromDirectories(logger, directories, formats) { + if (formats === void 0) { formats = [".js", ".cjs", ".ts"]; } + return []; +} +/** + * Loads all json files from the given directory. + */ +function importJsonsFromDirectories(directories, format) { + if (format === void 0) { format = ".json"; } + return []; +} + +//# sourceMappingURL=BrowserDirectoryExportedClassesLoader.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/container.js +/** + * Container to be used by this library for inversion control. If container was not implicitly set then by default + * container simply creates a new instance of the given class. + */ +var defaultContainer = new (/** @class */ (function () { + function class_1() { + this.instances = []; + } + class_1.prototype.get = function (someClass) { + var instance = this.instances.find(function (i) { return i.type === someClass; }); + if (!instance) { + instance = { type: someClass, object: new someClass() }; + this.instances.push(instance); + } + return instance.object; + }; + return class_1; +}()))(); +var userContainer; +var userContainerOptions; +/** + * Sets container to be used by this library. + */ +function useContainer(iocContainer, options) { + userContainer = iocContainer; + userContainerOptions = options; +} +/** + * Gets the IOC container used by this library. + */ +function getFromContainer(someClass) { + if (userContainer) { + try { + var instance = userContainer.get(someClass); + if (instance) + return instance; + if (!userContainerOptions || !userContainerOptions.fallback) + return instance; + } + catch (error) { + if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) + throw error; + } + } + return defaultContainer.get(someClass); +} + +//# sourceMappingURL=container.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/metadata/ColumnMetadata.js +var ColumnMetadata = __webpack_require__(31); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/IndexMetadata.js +/** + * Index metadata contains all information about table's index. + */ +var IndexMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function IndexMetadata(options) { + /** + * Indicates if this index must be unique. + */ + this.isUnique = false; + /** + * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values. + * Works only in MySQL. + */ + this.isSpatial = false; + /** + * The FULLTEXT modifier indexes the entire column and does not allow prefixing. + * Works only in MySQL. + */ + this.isFulltext = false; + /** + * Indicates if this index must synchronize with database index. + */ + this.synchronize = true; + /** + * Indexed columns. + */ + this.columns = []; + /** + * Map of column names with order set. + * Used only by MongoDB driver. + */ + this.columnNamesWithOrderingMap = {}; + this.entityMetadata = options.entityMetadata; + this.embeddedMetadata = options.embeddedMetadata; + if (options.columns) + this.columns = options.columns; + if (options.args) { + this.target = options.args.target; + if (options.args.synchronize !== null && options.args.synchronize !== undefined) + this.synchronize = options.args.synchronize; + this.isUnique = !!options.args.unique; + this.isSpatial = !!options.args.spatial; + this.isFulltext = !!options.args.fulltext; + this.parser = options.args.parser; + this.where = options.args.where; + this.isSparse = options.args.sparse; + this.isBackground = options.args.background; + this.expireAfterSeconds = options.args.expireAfterSeconds; + this.givenName = options.args.name; + this.givenColumnNames = options.args.columns; + } + } + // --------------------------------------------------------------------- + // Public Build Methods + // --------------------------------------------------------------------- + /** + * Builds some depend index properties. + * Must be called after all entity metadata's properties map, columns and relations are built. + */ + IndexMetadata.prototype.build = function (namingStrategy) { + var _this = this; + if (this.synchronize === false) { + this.name = this.givenName; + return this; + } + var map = {}; + // if columns already an array of string then simply return it + if (this.givenColumnNames) { + var columnPropertyPaths = []; + if (Array.isArray(this.givenColumnNames)) { + columnPropertyPaths = this.givenColumnNames.map(function (columnName) { + if (_this.embeddedMetadata) + return _this.embeddedMetadata.propertyPath + "." + columnName; + return columnName; + }); + columnPropertyPaths.forEach(function (propertyPath) { return map[propertyPath] = 1; }); + } + else { // todo: indices in embeds are not implemented in this syntax. deprecate this syntax? + // if columns is a function that returns array of field names then execute it and get columns names from it + var columnsFnResult_1 = this.givenColumnNames(this.entityMetadata.propertiesMap); + if (Array.isArray(columnsFnResult_1)) { + columnPropertyPaths = columnsFnResult_1.map(function (i) { return String(i); }); + columnPropertyPaths.forEach(function (name) { return map[name] = 1; }); + } + else { + columnPropertyPaths = Object.keys(columnsFnResult_1).map(function (i) { return String(i); }); + Object.keys(columnsFnResult_1).forEach(function (columnName) { return map[columnName] = columnsFnResult_1[columnName]; }); + } + } + this.columns = columnPropertyPaths.map(function (propertyPath) { + var columnWithSameName = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === propertyPath; }); + if (columnWithSameName) { + return [columnWithSameName]; + } + var relationWithSameName = _this.entityMetadata.relations.find(function (relation) { return relation.isWithJoinColumn && relation.propertyName === propertyPath; }); + if (relationWithSameName) { + return relationWithSameName.joinColumns; + } + var indexName = _this.givenName ? "\"" + _this.givenName + "\" " : ""; + var entityName = _this.entityMetadata.targetName; + throw new Error("Index " + indexName + "contains column that is missing in the entity (" + entityName + "): " + propertyPath); + }) + .reduce(function (a, b) { return a.concat(b); }); + } + this.columnNamesWithOrderingMap = Object.keys(map).reduce(function (updatedMap, key) { + var column = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === key; }); + if (column) + updatedMap[column.databasePath] = map[key]; + return updatedMap; + }, {}); + this.name = this.givenName ? this.givenName : namingStrategy.indexName(this.entityMetadata.tablePath, this.columns.map(function (column) { return column.databaseName; }), this.where); + return this; + }; + return IndexMetadata; +}()); + + +//# sourceMappingURL=IndexMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/RelationMetadata.js + + +/** + * Contains all information about some entity's relation. + */ +var RelationMetadata_RelationMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function RelationMetadata(options) { + /** + * Indicates if this is a parent (can be only many-to-one relation) relation in the tree tables. + */ + this.isTreeParent = false; + /** + * Indicates if this is a children (can be only one-to-many relation) relation in the tree tables. + */ + this.isTreeChildren = false; + /** + * Indicates if this relation's column is a primary key. + * Can be used only for many-to-one and owner one-to-one relations. + */ + this.isPrimary = false; + /** + * Indicates if this relation is lazily loaded. + */ + this.isLazy = false; + /** + * Indicates if this relation is eagerly loaded. + */ + this.isEager = false; + /** + * Indicates if persistence is enabled for the relation. + * By default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it. + * If its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality. + * This is useful for performance optimization since its disabling avoid multiple extra queries during entity save. + */ + this.persistenceEnabled = true; + /** + * If set to true then related objects are allowed to be inserted to the database. + */ + this.isCascadeInsert = false; + /** + * If set to true then related objects are allowed to be updated in the database. + */ + this.isCascadeUpdate = false; + /** + * If set to true then related objects are allowed to be remove from the database. + */ + this.isCascadeRemove = false; + /** + * If set to true then related objects are allowed to be soft-removed from the database. + */ + this.isCascadeSoftRemove = false; + /** + * If set to true then related objects are allowed to be recovered from the database. + */ + this.isCascadeRecover = false; + /** + * Indicates if relation column value can be nullable or not. + */ + this.isNullable = true; + /** + * Indicates whether foreign key constraints will be created for join columns. + * Can be used only for many-to-one and owner one-to-one relations. + * Defaults to true. + */ + this.createForeignKeyConstraints = true; + /** + * Indicates if this side is an owner of this relation. + */ + this.isOwning = false; + /** + * Checks if this relation's type is "one-to-one". + */ + this.isOneToOne = false; + /** + * Checks if this relation is owner side of the "one-to-one" relation. + * Owner side means this side of relation has a join column in the table. + */ + this.isOneToOneOwner = false; + /** + * Checks if this relation has a join column (e.g. is it many-to-one or one-to-one owner side). + */ + this.isWithJoinColumn = false; + /** + * Checks if this relation is NOT owner side of the "one-to-one" relation. + * NOT owner side means this side of relation does not have a join column in the table. + */ + this.isOneToOneNotOwner = false; + /** + * Checks if this relation's type is "one-to-many". + */ + this.isOneToMany = false; + /** + * Checks if this relation's type is "many-to-one". + */ + this.isManyToOne = false; + /** + * Checks if this relation's type is "many-to-many". + */ + this.isManyToMany = false; + /** + * Checks if this relation's type is "many-to-many", and is owner side of the relationship. + * Owner side means this side of relation has a join table. + */ + this.isManyToManyOwner = false; + /** + * Checks if this relation's type is "many-to-many", and is NOT owner side of the relationship. + * Not owner side means this side of relation does not have a join table. + */ + this.isManyToManyNotOwner = false; + /** + * Foreign keys created for this relation. + */ + this.foreignKeys = []; + /** + * Join table columns. + * Join columns can be obtained only from owner side of the relation. + * From non-owner side of the relation join columns will be empty. + * If this relation is a many-to-one/one-to-one then it takes join columns from the current entity. + * If this relation is many-to-many then it takes all owner join columns from the junction entity. + */ + this.joinColumns = []; + /** + * Inverse join table columns. + * Inverse join columns are supported only for many-to-many relations + * and can be obtained only from owner side of the relation. + * From non-owner side of the relation join columns will be undefined. + */ + this.inverseJoinColumns = []; + this.entityMetadata = options.entityMetadata; + this.embeddedMetadata = options.embeddedMetadata; + var args = options.args; + this.target = args.target; + this.propertyName = args.propertyName; + this.relationType = args.relationType; + if (args.inverseSideProperty) + this.givenInverseSidePropertyFactory = args.inverseSideProperty; + this.isLazy = args.isLazy || false; + // this.isCascadeInsert = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf("insert") !== -1); + // this.isCascadeUpdate = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf("update") !== -1); + // this.isCascadeRemove = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf("remove") !== -1); + // this.isCascadeSoftRemove = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf("soft-remove") !== -1); + // this.isCascadeRecover = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf("recover") !== -1); + this.isCascadeInsert = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf("insert") !== -1); + this.isCascadeUpdate = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf("update") !== -1); + this.isCascadeRemove = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf("remove") !== -1); + this.isCascadeSoftRemove = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf("soft-remove") !== -1); + this.isCascadeRecover = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf("recover") !== -1); + this.isPrimary = args.options.primary || false; + this.isNullable = args.options.nullable === false || this.isPrimary ? false : true; + this.onDelete = args.options.onDelete; + this.onUpdate = args.options.onUpdate; + this.deferrable = args.options.deferrable; + this.createForeignKeyConstraints = args.options.createForeignKeyConstraints === false ? false : true; + this.isEager = args.options.eager || false; + this.persistenceEnabled = args.options.persistence === false ? false : true; + this.orphanedRowAction = args.options.orphanedRowAction || "nullify"; + this.isTreeParent = args.isTreeParent || false; + this.isTreeChildren = args.isTreeChildren || false; + this.type = args.type instanceof Function ? args.type() : args.type; + this.isOneToOne = this.relationType === "one-to-one"; + this.isOneToMany = this.relationType === "one-to-many"; + this.isManyToOne = this.relationType === "many-to-one"; + this.isManyToMany = this.relationType === "many-to-many"; + this.isOneToOneNotOwner = this.isOneToOne ? true : false; + this.isManyToManyNotOwner = this.isManyToMany ? true : false; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Creates join column ids map from the given related entity ids array. + */ + RelationMetadata.prototype.getRelationIdMap = function (entity) { + var joinColumns = this.isOwning ? this.joinColumns : this.inverseRelation.joinColumns; + var referencedColumns = joinColumns.map(function (joinColumn) { return joinColumn.referencedColumn; }); + // console.log("entity", entity); + // console.log("referencedColumns", referencedColumns); + return EntityMetadata["a" /* EntityMetadata */].getValueMap(entity, referencedColumns); + }; + /** + * Ensures that given object is an entity id map. + * If given id is an object then it means its already id map. + * If given id isn't an object then it means its a value of the id column + * and it creates a new id map with this value and name of the primary column. + */ + RelationMetadata.prototype.ensureRelationIdMap = function (id) { + if (id instanceof Object) + return id; + var joinColumns = this.isOwning ? this.joinColumns : this.inverseRelation.joinColumns; + var referencedColumns = joinColumns.map(function (joinColumn) { return joinColumn.referencedColumn; }); + if (referencedColumns.length > 1) + throw new Error("Cannot create relation id map for a single value because relation contains multiple referenced columns."); + return referencedColumns[0].createValueMap(id); + }; + /** + * Extracts column value from the given entity. + * If column is in embedded (or recursive embedded) it extracts its value from there. + */ + RelationMetadata.prototype.getEntityValue = function (entity, getLazyRelationsPromiseValue) { + if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; } + if (entity === null || entity === undefined) + return undefined; + // extract column value from embeddeds of entity if column is in embedded + if (this.embeddedMetadata) { + // example: post[data][information][counters].id where "data", "information" and "counters" are embeddeds + // we need to get value of "id" column from the post real entity object + // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters] + var propertyNames = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.embeddedMetadata.parentPropertyNames)); + // next we need to access post[data][information][counters][this.propertyName] to get column value from the counters + // this recursive function takes array of generated property names and gets the post[data][information][counters] embed + var extractEmbeddedColumnValue_1 = function (propertyNames, value) { + var propertyName = propertyNames.shift(); + if (propertyName) { + if (value[propertyName]) { + return extractEmbeddedColumnValue_1(propertyNames, value[propertyName]); + } + return undefined; + } + return value; + }; + // once we get nested embed object we get its column, e.g. post[data][information][counters][this.propertyName] + var embeddedObject = extractEmbeddedColumnValue_1(propertyNames, entity); + if (this.isLazy) { + if (embeddedObject["__" + this.propertyName + "__"] !== undefined) + return embeddedObject["__" + this.propertyName + "__"]; + if (getLazyRelationsPromiseValue === true) + return embeddedObject[this.propertyName]; + return undefined; + } + return embeddedObject ? embeddedObject[this.isLazy ? "__" + this.propertyName + "__" : this.propertyName] : undefined; + } + else { // no embeds - no problems. Simply return column name by property name of the entity + if (this.isLazy) { + if (entity["__" + this.propertyName + "__"] !== undefined) + return entity["__" + this.propertyName + "__"]; + if (getLazyRelationsPromiseValue === true) + return entity[this.propertyName]; + return undefined; + } + return entity[this.propertyName]; + } + }; + /** + * Sets given entity's relation's value. + * Using of this method helps to set entity relation's value of the lazy and non-lazy relations. + * + * If merge is set to true, it merges given value into currently + */ + RelationMetadata.prototype.setEntityValue = function (entity, value) { + var propertyName = this.isLazy ? "__" + this.propertyName + "__" : this.propertyName; + if (this.embeddedMetadata) { + // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters] + var extractEmbeddedColumnValue_2 = function (embeddedMetadatas, map) { + // if (!object[embeddedMetadata.propertyName]) + // object[embeddedMetadata.propertyName] = embeddedMetadata.create(); + var embeddedMetadata = embeddedMetadatas.shift(); + if (embeddedMetadata) { + if (!map[embeddedMetadata.propertyName]) + map[embeddedMetadata.propertyName] = embeddedMetadata.create(); + extractEmbeddedColumnValue_2(embeddedMetadatas, map[embeddedMetadata.propertyName]); + return map; + } + map[propertyName] = value; + return map; + }; + return extractEmbeddedColumnValue_2(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.embeddedMetadata.embeddedMetadataTree)), entity); + } + else { + entity[propertyName] = value; + } + }; + /** + * Creates entity id map from the given entity ids array. + */ + RelationMetadata.prototype.createValueMap = function (value) { + var _a; + var _this = this; + // extract column value from embeds of entity if column is in embedded + if (this.embeddedMetadata) { + // example: post[data][information][counters].id where "data", "information" and "counters" are embeddeds + // we need to get value of "id" column from the post real entity object and return it in a + // { data: { information: { counters: { id: ... } } } } format + // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters] + var propertyNames = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.embeddedMetadata.parentPropertyNames)); + // now need to access post[data][information][counters] to get column value from the counters + // and on each step we need to create complex literal object, e.g. first { data }, + // then { data: { information } }, then { data: { information: { counters } } }, + // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } } + // this recursive function helps doing that + var extractEmbeddedColumnValue_3 = function (propertyNames, map) { + var propertyName = propertyNames.shift(); + if (propertyName) { + map[propertyName] = {}; + extractEmbeddedColumnValue_3(propertyNames, map[propertyName]); + return map; + } + map[_this.propertyName] = value; + return map; + }; + return extractEmbeddedColumnValue_3(propertyNames, {}); + } + else { // no embeds - no problems. Simply return column property name and its value of the entity + return _a = {}, _a[this.propertyName] = value, _a; + } + }; + // --------------------------------------------------------------------- + // Builder Methods + // --------------------------------------------------------------------- + /** + * Builds some depend relation metadata properties. + * This builder method should be used only after embedded metadata tree was build. + */ + RelationMetadata.prototype.build = function () { + this.propertyPath = this.buildPropertyPath(); + }; + /** + * Registers given foreign keys in the relation. + * This builder method should be used to register foreign key in the relation. + */ + RelationMetadata.prototype.registerForeignKeys = function () { + var _a; + var foreignKeys = []; + for (var _i = 0; _i < arguments.length; _i++) { + foreignKeys[_i] = arguments[_i]; + } + (_a = this.foreignKeys).push.apply(_a, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(foreignKeys))); + }; + /** + * Registers given join columns in the relation. + * This builder method should be used to register join column in the relation. + */ + RelationMetadata.prototype.registerJoinColumns = function (joinColumns, inverseJoinColumns) { + if (joinColumns === void 0) { joinColumns = []; } + if (inverseJoinColumns === void 0) { inverseJoinColumns = []; } + this.joinColumns = joinColumns; + this.inverseJoinColumns = inverseJoinColumns; + this.isOwning = this.isManyToOne || ((this.isManyToMany || this.isOneToOne) && this.joinColumns.length > 0); + this.isOneToOneOwner = this.isOneToOne && this.isOwning; + this.isOneToOneNotOwner = this.isOneToOne && !this.isOwning; + this.isManyToManyOwner = this.isManyToMany && this.isOwning; + this.isManyToManyNotOwner = this.isManyToMany && !this.isOwning; + this.isWithJoinColumn = this.isManyToOne || this.isOneToOneOwner; + }; + /** + * Registers a given junction entity metadata. + * This builder method can be called after junction entity metadata for the many-to-many relation was created. + */ + RelationMetadata.prototype.registerJunctionEntityMetadata = function (junctionEntityMetadata) { + this.junctionEntityMetadata = junctionEntityMetadata; + this.joinTableName = junctionEntityMetadata.tableName; + if (this.inverseRelation) { + this.inverseRelation.junctionEntityMetadata = junctionEntityMetadata; + this.joinTableName = junctionEntityMetadata.tableName; + } + }; + /** + * Builds inverse side property path based on given inverse side property factory. + * This builder method should be used only after properties map of the inverse entity metadata was build. + */ + RelationMetadata.prototype.buildInverseSidePropertyPath = function () { + if (this.givenInverseSidePropertyFactory) { + var ownerEntityPropertiesMap = this.inverseEntityMetadata.propertiesMap; + if (typeof this.givenInverseSidePropertyFactory === "function") + return this.givenInverseSidePropertyFactory(ownerEntityPropertiesMap); + if (typeof this.givenInverseSidePropertyFactory === "string") + return this.givenInverseSidePropertyFactory; + } + else if (this.isTreeParent && this.entityMetadata.treeChildrenRelation) { + return this.entityMetadata.treeChildrenRelation.propertyName; + } + else if (this.isTreeChildren && this.entityMetadata.treeParentRelation) { + return this.entityMetadata.treeParentRelation.propertyName; + } + return ""; + }; + /** + * Builds relation's property path based on its embedded tree. + */ + RelationMetadata.prototype.buildPropertyPath = function () { + if (!this.embeddedMetadata || !this.embeddedMetadata.parentPropertyNames.length) + return this.propertyName; + return this.embeddedMetadata.parentPropertyNames.join(".") + "." + this.propertyName; + }; + return RelationMetadata; +}()); + + +//# sourceMappingURL=RelationMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/EmbeddedMetadata.js + + +/** + * Contains all information about entity's embedded property. + */ +var EmbeddedMetadata_EmbeddedMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function EmbeddedMetadata(options) { + /** + * Columns inside this embed. + */ + this.columns = []; + /** + * Relations inside this embed. + */ + this.relations = []; + /** + * Entity listeners inside this embed. + */ + this.listeners = []; + /** + * Indices applied to the embed columns. + */ + this.indices = []; + /** + * Uniques applied to the embed columns. + */ + this.uniques = []; + /** + * Relation ids inside this embed. + */ + this.relationIds = []; + /** + * Relation counts inside this embed. + */ + this.relationCounts = []; + /** + * Nested embeddable in this embeddable (which has current embedded as parent embedded). + */ + this.embeddeds = []; + /** + * Indicates if this embedded is in array mode. + * + * This option works only in mongodb. + */ + this.isArray = false; + /** + * Returns array of property names of current embed and all its parent embeds. + * + * example: post[data][information][counters].id where "data", "information" and "counters" are embeds + * we need to get value of "id" column from the post real entity object. + * this method will return ["data", "information", "counters"] + */ + this.parentPropertyNames = []; + /** + * Returns array of prefixes of current embed and all its parent embeds. + */ + this.parentPrefixes = []; + /** + * Returns embed metadatas from all levels of the parent tree. + * + * example: post[data][information][counters].id where "data", "information" and "counters" are embeds + * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters] + */ + this.embeddedMetadataTree = []; + /** + * Embed metadatas from all levels of the parent tree. + * + * example: post[data][information][counters].id where "data", "information" and "counters" are embeds + * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters] + */ + this.columnsFromTree = []; + /** + * Relations of this embed and all relations from its child embeds. + */ + this.relationsFromTree = []; + /** + * Relations of this embed and all relations from its child embeds. + */ + this.listenersFromTree = []; + /** + * Indices of this embed and all indices from its child embeds. + */ + this.indicesFromTree = []; + /** + * Uniques of this embed and all uniques from its child embeds. + */ + this.uniquesFromTree = []; + /** + * Relation ids of this embed and all relation ids from its child embeds. + */ + this.relationIdsFromTree = []; + /** + * Relation counts of this embed and all relation counts from its child embeds. + */ + this.relationCountsFromTree = []; + this.entityMetadata = options.entityMetadata; + this.type = options.args.type(); + this.propertyName = options.args.propertyName; + this.customPrefix = options.args.prefix; + this.isArray = options.args.isArray; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Creates a new embedded object. + */ + EmbeddedMetadata.prototype.create = function () { + return new this.type; + }; + // --------------------------------------------------------------------- + // Builder Methods + // --------------------------------------------------------------------- + EmbeddedMetadata.prototype.build = function (connection) { + this.embeddeds.forEach(function (embedded) { return embedded.build(connection); }); + this.prefix = this.buildPrefix(connection); + this.parentPropertyNames = this.buildParentPropertyNames(); + this.parentPrefixes = this.buildParentPrefixes(); + this.propertyPath = this.parentPropertyNames.join("."); + this.embeddedMetadataTree = this.buildEmbeddedMetadataTree(); + this.columnsFromTree = this.buildColumnsFromTree(); + this.relationsFromTree = this.buildRelationsFromTree(); + this.listenersFromTree = this.buildListenersFromTree(); + this.indicesFromTree = this.buildIndicesFromTree(); + this.uniquesFromTree = this.buildUniquesFromTree(); + this.relationIdsFromTree = this.buildRelationIdsFromTree(); + this.relationCountsFromTree = this.buildRelationCountsFromTree(); + return this; + }; + // --------------------------------------------------------------------- + // Protected Methods + // --------------------------------------------------------------------- + EmbeddedMetadata.prototype.buildPartialPrefix = function () { + // if prefix option was not set or explicitly set to true - default prefix + if (this.customPrefix === undefined || this.customPrefix === true) { + return [this.propertyName]; + } + // if prefix option was set to empty string or explicity set to false - disable prefix + if (this.customPrefix === "" || this.customPrefix === false) { + return []; + } + // use custom prefix + if (typeof this.customPrefix === "string") { + return [this.customPrefix]; + } + throw new Error("Invalid prefix option given for " + this.entityMetadata.targetName + "#" + this.propertyName); + }; + EmbeddedMetadata.prototype.buildPrefix = function (connection) { + if (connection.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */]) + return this.propertyName; + var prefixes = []; + if (this.parentEmbeddedMetadata) + prefixes.push(this.parentEmbeddedMetadata.buildPrefix(connection)); + prefixes.push.apply(prefixes, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.buildPartialPrefix()))); + return prefixes.join("_"); // todo: use naming strategy instead of "_" !!! + }; + EmbeddedMetadata.prototype.buildParentPropertyNames = function () { + return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPropertyNames().concat(this.propertyName) : [this.propertyName]; + }; + EmbeddedMetadata.prototype.buildParentPrefixes = function () { + return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPrefixes().concat(this.buildPartialPrefix()) : this.buildPartialPrefix(); + }; + EmbeddedMetadata.prototype.buildEmbeddedMetadataTree = function () { + return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildEmbeddedMetadataTree().concat(this) : [this]; + }; + EmbeddedMetadata.prototype.buildColumnsFromTree = function () { + return this.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.buildColumnsFromTree()); }, this.columns); + }; + EmbeddedMetadata.prototype.buildRelationsFromTree = function () { + return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationsFromTree()); }, this.relations); + }; + EmbeddedMetadata.prototype.buildListenersFromTree = function () { + return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildListenersFromTree()); }, this.listeners); + }; + EmbeddedMetadata.prototype.buildIndicesFromTree = function () { + return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildIndicesFromTree()); }, this.indices); + }; + EmbeddedMetadata.prototype.buildUniquesFromTree = function () { + return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildUniquesFromTree()); }, this.uniques); + }; + EmbeddedMetadata.prototype.buildRelationIdsFromTree = function () { + return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationIdsFromTree()); }, this.relationIds); + }; + EmbeddedMetadata.prototype.buildRelationCountsFromTree = function () { + return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationCountsFromTree()); }, this.relationCounts); + }; + return EmbeddedMetadata; +}()); + + +//# sourceMappingURL=EmbeddedMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/RelationIdMetadata.js +/** + * Contains all information about entity's relation count. + */ +var RelationIdMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function RelationIdMetadata(options) { + this.entityMetadata = options.entityMetadata; + this.target = options.args.target; + this.propertyName = options.args.propertyName; + this.relationNameOrFactory = options.args.relation; + this.alias = options.args.alias; + this.queryBuilderFactory = options.args.queryBuilderFactory; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Sets relation id value from the given entity. + * + * todo: make it to work in embeds as well. + */ + RelationIdMetadata.prototype.setValue = function (entity) { + var _this = this; + var inverseEntity = this.relation.getEntityValue(entity); + if (Array.isArray(inverseEntity)) { + entity[this.propertyName] = inverseEntity.map(function (item) { + return _this.relation.inverseEntityMetadata.getEntityIdMixedMap(item); + }).filter(function (item) { return item !== null && item !== undefined; }); + } + else { + var value = this.relation.inverseEntityMetadata.getEntityIdMixedMap(inverseEntity); + if (value !== undefined) + entity[this.propertyName] = value; + } + }; + // --------------------------------------------------------------------- + // Public Builder Methods + // --------------------------------------------------------------------- + /** + * Builds some depend relation id properties. + * This builder method should be used only after entity metadata, its properties map and all relations are build. + */ + RelationIdMetadata.prototype.build = function () { + var propertyPath = this.relationNameOrFactory instanceof Function ? this.relationNameOrFactory(this.entityMetadata.propertiesMap) : this.relationNameOrFactory; + var relation = this.entityMetadata.findRelationWithPropertyPath(propertyPath); + if (!relation) + throw new Error("Cannot find relation " + propertyPath + ". Wrong relation specified for @RelationId decorator."); + this.relation = relation; + }; + return RelationIdMetadata; +}()); + + +//# sourceMappingURL=RelationIdMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/RelationCountMetadata.js +/** + * Contains all information about entity's relation count. + */ +var RelationCountMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function RelationCountMetadata(options) { + this.entityMetadata = options.entityMetadata; + this.target = options.args.target; + this.propertyName = options.args.propertyName; + this.relationNameOrFactory = options.args.relation; + this.alias = options.args.alias; + this.queryBuilderFactory = options.args.queryBuilderFactory; + } + // --------------------------------------------------------------------- + // Public Builder Methods + // --------------------------------------------------------------------- + /** + * Builds some depend relation count metadata properties. + * This builder method should be used only after entity metadata, its properties map and all relations are build. + */ + RelationCountMetadata.prototype.build = function () { + var propertyPath = this.relationNameOrFactory instanceof Function ? this.relationNameOrFactory(this.entityMetadata.propertiesMap) : this.relationNameOrFactory; + var relation = this.entityMetadata.findRelationWithPropertyPath(propertyPath); + if (!relation) + throw new Error("Cannot find relation " + propertyPath + ". Wrong relation specified for @RelationCount decorator."); + this.relation = relation; + }; + return RelationCountMetadata; +}()); + + +//# sourceMappingURL=RelationCountMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js +/** + * Provides a constants for each entity listener type. + */ +var EventListenerTypes = /** @class */ (function () { + function EventListenerTypes() { + } + EventListenerTypes.AFTER_LOAD = "after-load"; + EventListenerTypes.BEFORE_INSERT = "before-insert"; + EventListenerTypes.AFTER_INSERT = "after-insert"; + EventListenerTypes.BEFORE_UPDATE = "before-update"; + EventListenerTypes.AFTER_UPDATE = "after-update"; + EventListenerTypes.BEFORE_REMOVE = "before-remove"; + EventListenerTypes.AFTER_REMOVE = "after-remove"; + return EventListenerTypes; +}()); + + +//# sourceMappingURL=EventListenerTypes.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata-builder/MetadataUtils.js +/** + * Metadata args utility functions. + */ +var MetadataUtils = /** @class */ (function () { + function MetadataUtils() { + } + /** + * Gets given's entity all inherited classes. + * Gives in order from parents to children. + * For example Post extends ContentModel which extends Unit it will give + * [Unit, ContentModel, Post] + */ + MetadataUtils.getInheritanceTree = function (entity) { + var tree = [entity]; + var getPrototypeOf = function (object) { + var proto = Object.getPrototypeOf(object); + if (proto && proto.name) { + tree.push(proto); + getPrototypeOf(proto); + } + }; + getPrototypeOf(entity); + return tree; + }; + /** + * Checks if this table is inherited from another table. + */ + MetadataUtils.isInherited = function (target1, target2) { + return target1.prototype instanceof target2; + }; + /** + * Filters given array of targets by a given classes. + * If classes are not given, then it returns array itself. + */ + MetadataUtils.filterByTarget = function (array, classes) { + if (!classes) + return array; + return array.filter(function (item) { return item.target && classes.indexOf(item.target) !== -1; }); + }; + return MetadataUtils; +}()); + + +//# sourceMappingURL=MetadataUtils.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js +/** + * Contains all information about entity's foreign key. + */ +var ForeignKeyMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function ForeignKeyMetadata(options) { + /** + * Array of columns of this foreign key. + */ + this.columns = []; + /** + * Array of referenced columns. + */ + this.referencedColumns = []; + /** + * Gets array of column names. + */ + this.columnNames = []; + /** + * Gets array of referenced column names. + */ + this.referencedColumnNames = []; + this.entityMetadata = options.entityMetadata; + this.referencedEntityMetadata = options.referencedEntityMetadata; + this.columns = options.columns; + this.referencedColumns = options.referencedColumns; + this.onDelete = options.onDelete || "NO ACTION"; + this.onUpdate = options.onUpdate || "NO ACTION"; + this.deferrable = options.deferrable; + if (options.namingStrategy) + this.build(options.namingStrategy); + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Builds some depend foreign key properties. + * Must be called after all entity metadatas and their columns are built. + */ + ForeignKeyMetadata.prototype.build = function (namingStrategy) { + this.columnNames = this.columns.map(function (column) { return column.databaseName; }); + this.referencedColumnNames = this.referencedColumns.map(function (column) { return column.databaseName; }); + this.referencedTablePath = this.referencedEntityMetadata.tablePath; + this.name = namingStrategy.foreignKeyName(this.entityMetadata.tablePath, this.columnNames, this.referencedTablePath, this.referencedColumnNames); + }; + return ForeignKeyMetadata; +}()); + + +//# sourceMappingURL=ForeignKeyMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata-builder/JunctionEntityMetadataBuilder.js + + + + + + + +/** + * Creates EntityMetadata for junction tables. + * Junction tables are tables generated by many-to-many relations. + */ +var JunctionEntityMetadataBuilder_JunctionEntityMetadataBuilder = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function JunctionEntityMetadataBuilder(connection) { + this.connection = connection; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Builds EntityMetadata for the junction of the given many-to-many relation. + */ + JunctionEntityMetadataBuilder.prototype.build = function (relation, joinTable) { + var _this = this; + var referencedColumns = this.collectReferencedColumns(relation, joinTable); + var inverseReferencedColumns = this.collectInverseReferencedColumns(relation, joinTable); + var joinTableName = joinTable.name || this.connection.namingStrategy.joinTableName(relation.entityMetadata.tableNameWithoutPrefix, relation.inverseEntityMetadata.tableNameWithoutPrefix, relation.propertyPath, relation.inverseRelation ? relation.inverseRelation.propertyName : ""); + var entityMetadata = new EntityMetadata["a" /* EntityMetadata */]({ + connection: this.connection, + args: { + target: "", + name: joinTableName, + type: "junction", + database: joinTable.database || relation.entityMetadata.database, + schema: joinTable.schema || relation.entityMetadata.schema, + } + }); + entityMetadata.build(); + // create original side junction columns + var junctionColumns = referencedColumns.map(function (referencedColumn) { + var joinColumn = joinTable.joinColumns ? joinTable.joinColumns.find(function (joinColumnArgs) { + return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === referencedColumn.propertyName) && + !!joinColumnArgs.name; + }) : undefined; + var columnName = joinColumn && joinColumn.name ? joinColumn.name + : _this.connection.namingStrategy.joinTableColumnName(relation.entityMetadata.tableNameWithoutPrefix, referencedColumn.propertyName, referencedColumn.databaseName); + return new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: _this.connection, + entityMetadata: entityMetadata, + referencedColumn: referencedColumn, + args: { + target: "", + mode: "virtual", + propertyName: columnName, + options: { + name: columnName, + length: !referencedColumn.length + && (_this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || _this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) + && (referencedColumn.generationStrategy === "uuid" || referencedColumn.type === "uuid") + ? "36" + : referencedColumn.length, + width: referencedColumn.width, + type: referencedColumn.type, + precision: referencedColumn.precision, + scale: referencedColumn.scale, + charset: referencedColumn.charset, + collation: referencedColumn.collation, + zerofill: referencedColumn.zerofill, + unsigned: referencedColumn.zerofill ? true : referencedColumn.unsigned, + enum: referencedColumn.enum, + enumName: referencedColumn.enumName, + nullable: false, + primary: true, + } + } + }); + }); + // create inverse side junction columns + var inverseJunctionColumns = inverseReferencedColumns.map(function (inverseReferencedColumn) { + var joinColumn = joinTable.inverseJoinColumns ? joinTable.inverseJoinColumns.find(function (joinColumnArgs) { + return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === inverseReferencedColumn.propertyName) && + !!joinColumnArgs.name; + }) : undefined; + var columnName = joinColumn && joinColumn.name ? joinColumn.name + : _this.connection.namingStrategy.joinTableInverseColumnName(relation.inverseEntityMetadata.tableNameWithoutPrefix, inverseReferencedColumn.propertyName, inverseReferencedColumn.databaseName); + return new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: _this.connection, + entityMetadata: entityMetadata, + referencedColumn: inverseReferencedColumn, + args: { + target: "", + mode: "virtual", + propertyName: columnName, + options: { + length: !inverseReferencedColumn.length + && (_this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || _this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) + && (inverseReferencedColumn.generationStrategy === "uuid" || inverseReferencedColumn.type === "uuid") + ? "36" + : inverseReferencedColumn.length, + width: inverseReferencedColumn.width, + type: inverseReferencedColumn.type, + precision: inverseReferencedColumn.precision, + scale: inverseReferencedColumn.scale, + charset: inverseReferencedColumn.charset, + collation: inverseReferencedColumn.collation, + zerofill: inverseReferencedColumn.zerofill, + unsigned: inverseReferencedColumn.zerofill ? true : inverseReferencedColumn.unsigned, + enum: inverseReferencedColumn.enum, + enumName: inverseReferencedColumn.enumName, + name: columnName, + nullable: false, + primary: true, + } + } + }); + }); + this.changeDuplicatedColumnNames(junctionColumns, inverseJunctionColumns); + // set junction table columns + entityMetadata.ownerColumns = junctionColumns; + entityMetadata.inverseColumns = inverseJunctionColumns; + entityMetadata.ownColumns = Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(junctionColumns)), Object(tslib_es6["e" /* __read */])(inverseJunctionColumns)); + entityMetadata.ownColumns.forEach(function (column) { return column.relationMetadata = relation; }); + // create junction table foreign keys + entityMetadata.foreignKeys = relation.createForeignKeyConstraints ? [ + new ForeignKeyMetadata({ + entityMetadata: entityMetadata, + referencedEntityMetadata: relation.entityMetadata, + columns: junctionColumns, + referencedColumns: referencedColumns, + onDelete: relation.onDelete || "CASCADE" + }), + new ForeignKeyMetadata({ + entityMetadata: entityMetadata, + referencedEntityMetadata: relation.inverseEntityMetadata, + columns: inverseJunctionColumns, + referencedColumns: inverseReferencedColumns, + onDelete: relation.onDelete || "CASCADE" + }), + ] : []; + // create junction table indices + entityMetadata.ownIndices = [ + new IndexMetadata({ + entityMetadata: entityMetadata, + columns: junctionColumns, + args: { + target: entityMetadata.target, + synchronize: true + } + }), + new IndexMetadata({ + entityMetadata: entityMetadata, + columns: inverseJunctionColumns, + args: { + target: entityMetadata.target, + synchronize: true + } + }) + ]; + // finally return entity metadata + return entityMetadata; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Collects referenced columns from the given join column args. + */ + JunctionEntityMetadataBuilder.prototype.collectReferencedColumns = function (relation, joinTable) { + var hasAnyReferencedColumnName = joinTable.joinColumns ? joinTable.joinColumns.find(function (joinColumn) { return !!joinColumn.referencedColumnName; }) : false; + if (!joinTable.joinColumns || (joinTable.joinColumns && !hasAnyReferencedColumnName)) { + return relation.entityMetadata.columns.filter(function (column) { return column.isPrimary; }); + } + else { + return joinTable.joinColumns.map(function (joinColumn) { + var referencedColumn = relation.entityMetadata.columns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; }); + if (!referencedColumn) + throw new Error("Referenced column " + joinColumn.referencedColumnName + " was not found in entity " + relation.entityMetadata.name); + return referencedColumn; + }); + } + }; + /** + * Collects inverse referenced columns from the given join column args. + */ + JunctionEntityMetadataBuilder.prototype.collectInverseReferencedColumns = function (relation, joinTable) { + var hasInverseJoinColumns = !!joinTable.inverseJoinColumns; + var hasAnyInverseReferencedColumnName = hasInverseJoinColumns ? joinTable.inverseJoinColumns.find(function (joinColumn) { return !!joinColumn.referencedColumnName; }) : false; + if (!hasInverseJoinColumns || (hasInverseJoinColumns && !hasAnyInverseReferencedColumnName)) { + return relation.inverseEntityMetadata.primaryColumns; + } + else { + return joinTable.inverseJoinColumns.map(function (joinColumn) { + var referencedColumn = relation.inverseEntityMetadata.ownColumns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; }); + if (!referencedColumn) + throw new Error("Referenced column " + joinColumn.referencedColumnName + " was not found in entity " + relation.inverseEntityMetadata.name); + return referencedColumn; + }); + } + }; + JunctionEntityMetadataBuilder.prototype.changeDuplicatedColumnNames = function (junctionColumns, inverseJunctionColumns) { + var _this = this; + junctionColumns.forEach(function (junctionColumn) { + inverseJunctionColumns.forEach(function (inverseJunctionColumn) { + if (junctionColumn.givenDatabaseName === inverseJunctionColumn.givenDatabaseName) { + var junctionColumnName = _this.connection.namingStrategy.joinTableColumnDuplicationPrefix(junctionColumn.propertyName, 1); + junctionColumn.propertyName = junctionColumnName; + junctionColumn.givenDatabaseName = junctionColumnName; + var inverseJunctionColumnName = _this.connection.namingStrategy.joinTableColumnDuplicationPrefix(inverseJunctionColumn.propertyName, 2); + inverseJunctionColumn.propertyName = inverseJunctionColumnName; + inverseJunctionColumn.givenDatabaseName = inverseJunctionColumnName; + } + }); + }); + }; + return JunctionEntityMetadataBuilder; +}()); + + +//# sourceMappingURL=JunctionEntityMetadataBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js + + + + +/** + * Creates EntityMetadata for junction tables of the closure entities. + * Closure junction tables are tables generated by closure entities. + */ +var ClosureJunctionEntityMetadataBuilder_ClosureJunctionEntityMetadataBuilder = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ClosureJunctionEntityMetadataBuilder(connection) { + this.connection = connection; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Builds EntityMetadata for the closure junction of the given closure entity. + */ + ClosureJunctionEntityMetadataBuilder.prototype.build = function (parentClosureEntityMetadata) { + var _this = this; + // create entity metadata itself + var entityMetadata = new EntityMetadata["a" /* EntityMetadata */]({ + parentClosureEntityMetadata: parentClosureEntityMetadata, + connection: this.connection, + args: { + target: "", + name: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.closureTableName ? parentClosureEntityMetadata.treeOptions.closureTableName : parentClosureEntityMetadata.tableNameWithoutPrefix, + type: "closure-junction" + } + }); + entityMetadata.build(); + // create ancestor and descendant columns for new closure junction table + parentClosureEntityMetadata.primaryColumns.forEach(function (primaryColumn) { + entityMetadata.ownColumns.push(new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: _this.connection, + entityMetadata: entityMetadata, + closureType: "ancestor", + referencedColumn: primaryColumn, + args: { + target: "", + mode: "virtual", + propertyName: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.ancestorColumnName ? parentClosureEntityMetadata.treeOptions.ancestorColumnName(primaryColumn) : primaryColumn.propertyName + "_ancestor", + options: { + primary: true, + length: primaryColumn.length, + type: primaryColumn.type + } + } + })); + entityMetadata.ownColumns.push(new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: _this.connection, + entityMetadata: entityMetadata, + closureType: "descendant", + referencedColumn: primaryColumn, + args: { + target: "", + mode: "virtual", + propertyName: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.descendantColumnName ? parentClosureEntityMetadata.treeOptions.descendantColumnName(primaryColumn) : primaryColumn.propertyName + "_descendant", + options: { + primary: true, + length: primaryColumn.length, + type: primaryColumn.type, + } + } + })); + }); + entityMetadata.ownIndices = [ + new IndexMetadata({ + entityMetadata: entityMetadata, + columns: [entityMetadata.ownColumns[0]], + args: { + target: entityMetadata.target, + synchronize: true + } + }), + new IndexMetadata({ + entityMetadata: entityMetadata, + columns: [entityMetadata.ownColumns[1]], + args: { + target: entityMetadata.target, + synchronize: true + } + }) + ]; + // if tree level column was defined by a closure entity then add it to the junction columns as well + if (parentClosureEntityMetadata.treeLevelColumn) { + entityMetadata.ownColumns.push(new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: this.connection, + entityMetadata: entityMetadata, + args: { + target: "", + mode: "virtual", + propertyName: "level", + options: { + type: this.connection.driver.mappedDataTypes.treeLevel, + } + } + })); + } + // create junction table foreign keys + entityMetadata.foreignKeys = [ + new ForeignKeyMetadata({ + entityMetadata: entityMetadata, + referencedEntityMetadata: parentClosureEntityMetadata, + columns: [entityMetadata.ownColumns[0]], + referencedColumns: parentClosureEntityMetadata.primaryColumns, + // onDelete: "CASCADE" // todo: does not work in mssql for some reason + }), + new ForeignKeyMetadata({ + entityMetadata: entityMetadata, + referencedEntityMetadata: parentClosureEntityMetadata, + columns: [entityMetadata.ownColumns[1]], + referencedColumns: parentClosureEntityMetadata.primaryColumns, + // onDelete: "CASCADE" // todo: does not work in mssql for some reason + }), + ]; + return entityMetadata; + }; + return ClosureJunctionEntityMetadataBuilder; +}()); + + +//# sourceMappingURL=ClosureJunctionEntityMetadataBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/UniqueMetadata.js +/** + * Unique metadata contains all information about table's unique constraints. + */ +var UniqueMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function UniqueMetadata(options) { + /** + * Unique columns. + */ + this.columns = []; + /** + * Map of column names with order set. + * Used only by MongoDB driver. + */ + this.columnNamesWithOrderingMap = {}; + this.entityMetadata = options.entityMetadata; + this.embeddedMetadata = options.embeddedMetadata; + if (options.columns) + this.columns = options.columns; + if (options.args) { + this.target = options.args.target; + this.givenName = options.args.name; + this.givenColumnNames = options.args.columns; + } + } + // --------------------------------------------------------------------- + // Public Build Methods + // --------------------------------------------------------------------- + /** + * Builds some depend unique constraint properties. + * Must be called after all entity metadata's properties map, columns and relations are built. + */ + UniqueMetadata.prototype.build = function (namingStrategy) { + var _this = this; + var map = {}; + // if columns already an array of string then simply return it + if (this.givenColumnNames) { + var columnPropertyPaths = []; + if (Array.isArray(this.givenColumnNames)) { + columnPropertyPaths = this.givenColumnNames.map(function (columnName) { + if (_this.embeddedMetadata) + return _this.embeddedMetadata.propertyPath + "." + columnName; + return columnName; + }); + columnPropertyPaths.forEach(function (propertyPath) { return map[propertyPath] = 1; }); + } + else { + // if columns is a function that returns array of field names then execute it and get columns names from it + var columnsFnResult_1 = this.givenColumnNames(this.entityMetadata.propertiesMap); + if (Array.isArray(columnsFnResult_1)) { + columnPropertyPaths = columnsFnResult_1.map(function (i) { return String(i); }); + columnPropertyPaths.forEach(function (name) { return map[name] = 1; }); + } + else { + columnPropertyPaths = Object.keys(columnsFnResult_1).map(function (i) { return String(i); }); + Object.keys(columnsFnResult_1).forEach(function (columnName) { return map[columnName] = columnsFnResult_1[columnName]; }); + } + } + this.columns = columnPropertyPaths.map(function (propertyName) { + var columnWithSameName = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === propertyName; }); + if (columnWithSameName) { + return [columnWithSameName]; + } + var relationWithSameName = _this.entityMetadata.relations.find(function (relation) { return relation.isWithJoinColumn && relation.propertyName === propertyName; }); + if (relationWithSameName) { + return relationWithSameName.joinColumns; + } + var indexName = _this.givenName ? "\"" + _this.givenName + "\" " : ""; + var entityName = _this.entityMetadata.targetName; + throw new Error("Unique constraint " + indexName + "contains column that is missing in the entity (" + entityName + "): " + propertyName); + }) + .reduce(function (a, b) { return a.concat(b); }); + } + this.columnNamesWithOrderingMap = Object.keys(map).reduce(function (updatedMap, key) { + var column = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === key; }); + if (column) + updatedMap[column.databasePath] = map[key]; + return updatedMap; + }, {}); + this.name = this.givenName ? this.givenName : namingStrategy.uniqueConstraintName(this.entityMetadata.tablePath, this.columns.map(function (column) { return column.databaseName; })); + return this; + }; + return UniqueMetadata; +}()); + + +//# sourceMappingURL=UniqueMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata-builder/RelationJoinColumnBuilder.js + + + + + + +/** + * Builds join column for the many-to-one and one-to-one owner relations. + * + * Cases it should cover: + * 1. when join column is set with custom name and without referenced column name + * we need automatically set referenced column name - primary ids by default + * @JoinColumn({ name: "custom_name" }) + * + * 2. when join column is set with only referenced column name + * we need automatically set join column name - relation name + referenced column name + * @JoinColumn({ referencedColumnName: "title" }) + * + * 3. when join column is set without both referenced column name and join column name + * we need to automatically set both of them + * @JoinColumn() + * + * 4. when join column is not set at all (as in case of @ManyToOne relation) + * we need to create join column for it with proper referenced column name and join column name + * + * 5. when multiple join columns set none of referencedColumnName and name can be optional + * both options are required + * @JoinColumn([ + * { name: "category_title", referencedColumnName: "type" }, + * { name: "category_title", referencedColumnName: "name" }, + * ]) + * + * Since for many-to-one relations having JoinColumn decorator is not required, + * we need to go thought each many-to-one relation without join column decorator set + * and create join column metadata args for them. + */ +var RelationJoinColumnBuilder_RelationJoinColumnBuilder = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationJoinColumnBuilder(connection) { + this.connection = connection; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Builds a foreign key of the many-to-one or one-to-one owner relations. + */ + RelationJoinColumnBuilder.prototype.build = function (joinColumns, relation) { + var referencedColumns = this.collectReferencedColumns(joinColumns, relation); + var columns = this.collectColumns(joinColumns, relation, referencedColumns); + if (!referencedColumns.length || !relation.createForeignKeyConstraints) + return { foreignKey: undefined, columns: columns, uniqueConstraint: undefined }; // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false + var foreignKey = new ForeignKeyMetadata({ + entityMetadata: relation.entityMetadata, + referencedEntityMetadata: relation.inverseEntityMetadata, + namingStrategy: this.connection.namingStrategy, + columns: columns, + referencedColumns: referencedColumns, + onDelete: relation.onDelete, + onUpdate: relation.onUpdate, + deferrable: relation.deferrable, + }); + // Oracle does not allow both primary and unique constraints on the same column + if (this.connection.driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */] && columns.every(function (column) { return column.isPrimary; })) + return { foreignKey: foreignKey, columns: columns, uniqueConstraint: undefined }; + // CockroachDB requires UNIQUE constraints on referenced columns + if (referencedColumns.length > 0 && relation.isOneToOne) { + var uniqueConstraint = new UniqueMetadata({ + entityMetadata: relation.entityMetadata, + columns: foreignKey.columns, + args: { + name: this.connection.namingStrategy.relationConstraintName(relation.entityMetadata.tablePath, foreignKey.columns.map(function (c) { return c.databaseName; })), + target: relation.entityMetadata.target, + } + }); + uniqueConstraint.build(this.connection.namingStrategy); + return { foreignKey: foreignKey, columns: columns, uniqueConstraint: uniqueConstraint }; + } + return { foreignKey: foreignKey, columns: columns, uniqueConstraint: undefined }; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Collects referenced columns from the given join column args. + */ + RelationJoinColumnBuilder.prototype.collectReferencedColumns = function (joinColumns, relation) { + var hasAnyReferencedColumnName = joinColumns.find(function (joinColumnArgs) { return !!joinColumnArgs.referencedColumnName; }); + var manyToOneWithoutJoinColumn = joinColumns.length === 0 && relation.isManyToOne; + var hasJoinColumnWithoutAnyReferencedColumnName = joinColumns.length > 0 && !hasAnyReferencedColumnName; + if (manyToOneWithoutJoinColumn || hasJoinColumnWithoutAnyReferencedColumnName) { // covers case3 and case1 + return relation.inverseEntityMetadata.primaryColumns; + } + else { // cases with referenced columns defined + return joinColumns.map(function (joinColumn) { + var referencedColumn = relation.inverseEntityMetadata.ownColumns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; }); // todo: can we also search in relations? + if (!referencedColumn) + throw new Error("Referenced column " + joinColumn.referencedColumnName + " was not found in entity " + relation.inverseEntityMetadata.name); + return referencedColumn; + }); + } + }; + /** + * Collects columns from the given join column args. + */ + RelationJoinColumnBuilder.prototype.collectColumns = function (joinColumns, relation, referencedColumns) { + var _this = this; + return referencedColumns.map(function (referencedColumn) { + // in the case if relation has join column with only name set we need this check + var joinColumnMetadataArg = joinColumns.find(function (joinColumn) { + return (!joinColumn.referencedColumnName || joinColumn.referencedColumnName === referencedColumn.propertyName) && + !!joinColumn.name; + }); + var joinColumnName = joinColumnMetadataArg ? joinColumnMetadataArg.name : _this.connection.namingStrategy.joinColumnName(relation.propertyName, referencedColumn.propertyName); + var relationalColumn = relation.entityMetadata.ownColumns.find(function (column) { return column.databaseName === joinColumnName; }); + if (!relationalColumn) { + relationalColumn = new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: _this.connection, + entityMetadata: relation.entityMetadata, + args: { + target: "", + mode: "virtual", + propertyName: relation.propertyName, + options: { + name: joinColumnName, + type: referencedColumn.type, + length: !referencedColumn.length + && (_this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || _this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) + && (referencedColumn.generationStrategy === "uuid" || referencedColumn.type === "uuid") + ? "36" + : referencedColumn.length, + width: referencedColumn.width, + charset: referencedColumn.charset, + collation: referencedColumn.collation, + precision: referencedColumn.precision, + scale: referencedColumn.scale, + zerofill: referencedColumn.zerofill, + unsigned: referencedColumn.unsigned, + comment: referencedColumn.comment, + enum: referencedColumn.enum, + enumName: referencedColumn.enumName, + primary: relation.isPrimary, + nullable: relation.isNullable, + } + } + }); + relation.entityMetadata.registerColumn(relationalColumn); + } + relationalColumn.referencedColumn = referencedColumn; // its important to set it here because we need to set referenced column for user defined join column + relationalColumn.type = referencedColumn.type; // also since types of relational column and join column must be equal we override user defined column type + relationalColumn.relationMetadata = relation; + relationalColumn.build(_this.connection); + return relationalColumn; + }); + }; + return RelationJoinColumnBuilder; +}()); + + +//# sourceMappingURL=RelationJoinColumnBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/EntityListenerMetadata.js +/** + * This metadata contains all information about entity's listeners. + */ +var EntityListenerMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function EntityListenerMetadata(options) { + this.entityMetadata = options.entityMetadata; + this.embeddedMetadata = options.embeddedMetadata; + this.target = options.args.target; + this.propertyName = options.args.propertyName; + this.type = options.args.type; + } + // --------------------------------------------------------------------- + // Public Methods + // --------------------------------------------------------------------- + /** + * Checks if entity listener is allowed to be executed on the given entity. + */ + EntityListenerMetadata.prototype.isAllowed = function (entity) { + return this.entityMetadata.target === entity.constructor || // todo: .constructor won't work for entity schemas, but there are no entity listeners in schemas since there are no objects, right? + (this.entityMetadata.target instanceof Function && entity.constructor.prototype instanceof this.entityMetadata.target); // todo: also need to implement entity schema inheritance + }; + /** + * Executes listener method of the given entity. + */ + EntityListenerMetadata.prototype.execute = function (entity) { + if (!this.embeddedMetadata) + return entity[this.propertyName](); + this.callEntityEmbeddedMethod(entity, this.embeddedMetadata.propertyPath.split(".")); + }; + // --------------------------------------------------------------------- + // Protected Methods + // --------------------------------------------------------------------- + /** + * Calls embedded entity listener method no matter how nested it is. + */ + EntityListenerMetadata.prototype.callEntityEmbeddedMethod = function (entity, propertyPaths) { + var propertyPath = propertyPaths.shift(); + if (!propertyPath || !entity[propertyPath]) + return; + if (propertyPaths.length === 0) { + entity[propertyPath][this.propertyName](); + } + else { + if (entity[propertyPath]) + this.callEntityEmbeddedMethod(entity[propertyPath], propertyPaths); + } + }; + return EntityListenerMetadata; +}()); + + +//# sourceMappingURL=EntityListenerMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/CheckMetadata.js +/** + * Check metadata contains all information about table's check constraints. + */ +var CheckMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function CheckMetadata(options) { + this.entityMetadata = options.entityMetadata; + if (options.args) { + this.target = options.args.target; + this.expression = options.args.expression; + this.givenName = options.args.name; + } + } + // --------------------------------------------------------------------- + // Public Build Methods + // --------------------------------------------------------------------- + /** + * Builds some depend check constraint properties. + * Must be called after all entity metadata's properties map, columns and relations are built. + */ + CheckMetadata.prototype.build = function (namingStrategy) { + this.name = this.givenName ? this.givenName : namingStrategy.checkConstraintName(this.entityMetadata.tablePath, this.expression); + return this; + }; + return CheckMetadata; +}()); + + +//# sourceMappingURL=CheckMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata/ExclusionMetadata.js +/** + * Exclusion metadata contains all information about table's exclusion constraints. + */ +var ExclusionMetadata = /** @class */ (function () { + // --------------------------------------------------------------------- + // Constructor + // --------------------------------------------------------------------- + function ExclusionMetadata(options) { + this.entityMetadata = options.entityMetadata; + if (options.args) { + this.target = options.args.target; + this.expression = options.args.expression; + this.givenName = options.args.name; + } + } + // --------------------------------------------------------------------- + // Public Build Methods + // --------------------------------------------------------------------- + /** + * Builds some depend exclusion constraint properties. + * Must be called after all entity metadata's properties map, columns and relations are built. + */ + ExclusionMetadata.prototype.build = function (namingStrategy) { + this.name = this.givenName ? this.givenName : namingStrategy.exclusionConstraintName(this.entityMetadata.tablePath, this.expression); + return this; + }; + return ExclusionMetadata; +}()); + + +//# sourceMappingURL=ExclusionMetadata.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata-builder/EntityMetadataBuilder.js + + + + + + + + + + + + + + + + + + + + + + + +/** + * Builds EntityMetadata objects and all its sub-metadatas. + */ +var EntityMetadataBuilder_EntityMetadataBuilder = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function EntityMetadataBuilder(connection, metadataArgsStorage) { + this.connection = connection; + this.metadataArgsStorage = metadataArgsStorage; + this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder_JunctionEntityMetadataBuilder(connection); + this.closureJunctionEntityMetadataBuilder = new ClosureJunctionEntityMetadataBuilder_ClosureJunctionEntityMetadataBuilder(connection); + this.relationJoinColumnBuilder = new RelationJoinColumnBuilder_RelationJoinColumnBuilder(connection); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Builds a complete entity metadatas for the given entity classes. + */ + EntityMetadataBuilder.prototype.build = function (entityClasses) { + var _this = this; + // if entity classes to filter entities by are given then do filtering, otherwise use all + var allTables = entityClasses ? this.metadataArgsStorage.filterTables(entityClasses) : this.metadataArgsStorage.tables; + // filter out table metadata args for those we really create entity metadatas and tables in the db + var realTables = allTables.filter(function (table) { return table.type === "regular" || table.type === "closure" || table.type === "entity-child" || table.type === "view"; }); + // create entity metadatas for a user defined entities (marked with @Entity decorator or loaded from entity schemas) + var entityMetadatas = realTables.map(function (tableArgs) { return _this.createEntityMetadata(tableArgs); }); + // compute parent entity metadatas for table inheritance + entityMetadatas.forEach(function (entityMetadata) { return _this.computeParentEntityMetadata(entityMetadatas, entityMetadata); }); + // after all metadatas created we set child entity metadatas for table inheritance + entityMetadatas.forEach(function (metadata) { + metadata.childEntityMetadatas = entityMetadatas.filter(function (childMetadata) { + return metadata.target instanceof Function + && childMetadata.target instanceof Function + && MetadataUtils.isInherited(childMetadata.target, metadata.target); + }); + }); + // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant) + entityMetadatas + .filter(function (entityMetadata) { return entityMetadata.tableType !== "entity-child"; }) + .forEach(function (entityMetadata) { return entityMetadata.build(); }); + // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant) + entityMetadatas + .filter(function (entityMetadata) { return entityMetadata.tableType === "entity-child"; }) + .forEach(function (entityMetadata) { return entityMetadata.build(); }); + // compute entity metadata columns, relations, etc. first for the regular, non-single-table-inherited entity metadatas + entityMetadatas + .filter(function (entityMetadata) { return entityMetadata.tableType !== "entity-child"; }) + .forEach(function (entityMetadata) { return _this.computeEntityMetadataStep1(entityMetadatas, entityMetadata); }); + // then do it for single table inheritance children (since they are depend on their parents to be built) + entityMetadatas + .filter(function (entityMetadata) { return entityMetadata.tableType === "entity-child"; }) + .forEach(function (entityMetadata) { return _this.computeEntityMetadataStep1(entityMetadatas, entityMetadata); }); + // calculate entity metadata computed properties and all its sub-metadatas + entityMetadatas.forEach(function (entityMetadata) { return _this.computeEntityMetadataStep2(entityMetadata); }); + // calculate entity metadata's inverse properties + entityMetadatas.forEach(function (entityMetadata) { return _this.computeInverseProperties(entityMetadata, entityMetadatas); }); + // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations + entityMetadatas + .filter(function (entityMetadata) { return entityMetadata.tableType !== "entity-child"; }) + .forEach(function (entityMetadata) { + // create entity's relations join columns (for many-to-one and one-to-one owner) + entityMetadata.relations.filter(function (relation) { return relation.isOneToOne || relation.isManyToOne; }).forEach(function (relation) { + var joinColumns = _this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName); + var _a = _this.relationJoinColumnBuilder.build(joinColumns, relation), foreignKey = _a.foreignKey, columns = _a.columns, uniqueConstraint = _a.uniqueConstraint; // create a foreign key based on its metadata args + if (foreignKey) { + relation.registerForeignKeys(foreignKey); // push it to the relation and thus register there a join column + entityMetadata.foreignKeys.push(foreignKey); + } + if (columns) { + relation.registerJoinColumns(columns); + } + if (uniqueConstraint) { + if (_this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || _this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */] + || _this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */] || _this.connection.driver instanceof BrowserDisabledDriversDummy["l" /* SapDriver */]) { + var index = new IndexMetadata({ + entityMetadata: uniqueConstraint.entityMetadata, + columns: uniqueConstraint.columns, + args: { + target: uniqueConstraint.target, + name: uniqueConstraint.name, + unique: true, + synchronize: true + } + }); + if (_this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + index.where = index.columns.map(function (column) { + return _this.connection.driver.escape(column.databaseName) + " IS NOT NULL"; + }).join(" AND "); + } + if (relation.embeddedMetadata) { + relation.embeddedMetadata.indices.push(index); + } + else { + relation.entityMetadata.ownIndices.push(index); + } + _this.computeEntityMetadataStep2(entityMetadata); + } + else { + if (relation.embeddedMetadata) { + relation.embeddedMetadata.uniques.push(uniqueConstraint); + } + else { + relation.entityMetadata.ownUniques.push(uniqueConstraint); + } + _this.computeEntityMetadataStep2(entityMetadata); + } + } + if (foreignKey && _this.connection.driver instanceof BrowserDisabledDriversDummy["d" /* CockroachDriver */]) { + var index = new IndexMetadata({ + entityMetadata: relation.entityMetadata, + columns: foreignKey.columns, + args: { + target: relation.entityMetadata.target, + synchronize: true + } + }); + if (relation.embeddedMetadata) { + relation.embeddedMetadata.indices.push(index); + } + else { + relation.entityMetadata.ownIndices.push(index); + } + _this.computeEntityMetadataStep2(entityMetadata); + } + }); + // create junction entity metadatas for entity many-to-many relations + entityMetadata.relations.filter(function (relation) { return relation.isManyToMany; }).forEach(function (relation) { + var joinTable = _this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName); + if (!joinTable) + return; // no join table set - no need to do anything (it means this is many-to-many inverse side) + // here we create a junction entity metadata for a new junction table of many-to-many relation + var junctionEntityMetadata = _this.junctionEntityMetadataBuilder.build(relation, joinTable); + relation.registerForeignKeys.apply(relation, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(junctionEntityMetadata.foreignKeys))); + relation.registerJoinColumns(junctionEntityMetadata.ownIndices[0].columns, junctionEntityMetadata.ownIndices[1].columns); + relation.registerJunctionEntityMetadata(junctionEntityMetadata); + // compute new entity metadata properties and push it to entity metadatas pool + _this.computeEntityMetadataStep2(junctionEntityMetadata); + _this.computeInverseProperties(junctionEntityMetadata, entityMetadatas); + entityMetadatas.push(junctionEntityMetadata); + }); + }); + // update entity metadata depend properties + entityMetadatas + .forEach(function (entityMetadata) { + entityMetadata.relationsWithJoinColumns = entityMetadata.relations.filter(function (relation) { return relation.isWithJoinColumn; }); + entityMetadata.hasNonNullableRelations = entityMetadata.relationsWithJoinColumns.some(function (relation) { return !relation.isNullable || relation.isPrimary; }); + }); + // generate closure junction tables for all closure tables + entityMetadatas + .filter(function (metadata) { return metadata.treeType === "closure-table"; }) + .forEach(function (entityMetadata) { + var closureJunctionEntityMetadata = _this.closureJunctionEntityMetadataBuilder.build(entityMetadata); + entityMetadata.closureJunctionTable = closureJunctionEntityMetadata; + _this.computeEntityMetadataStep2(closureJunctionEntityMetadata); + _this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas); + entityMetadatas.push(closureJunctionEntityMetadata); + }); + // generate keys for tables with single-table inheritance + entityMetadatas + .filter(function (metadata) { return metadata.inheritancePattern === "STI" && metadata.discriminatorColumn; }) + .forEach(function (entityMetadata) { return _this.createKeysForTableInheritance(entityMetadata); }); + // build all indices (need to do it after relations and their join columns are built) + entityMetadatas.forEach(function (entityMetadata) { + entityMetadata.indices.forEach(function (index) { return index.build(_this.connection.namingStrategy); }); + }); + // build all unique constraints (need to do it after relations and their join columns are built) + entityMetadatas.forEach(function (entityMetadata) { + entityMetadata.uniques.forEach(function (unique) { return unique.build(_this.connection.namingStrategy); }); + }); + // build all check constraints + entityMetadatas.forEach(function (entityMetadata) { + entityMetadata.checks.forEach(function (check) { return check.build(_this.connection.namingStrategy); }); + }); + // build all exclusion constraints + entityMetadatas.forEach(function (entityMetadata) { + entityMetadata.exclusions.forEach(function (exclusion) { return exclusion.build(_this.connection.namingStrategy); }); + }); + // add lazy initializer for entity relations + entityMetadatas + .filter(function (metadata) { return metadata.target instanceof Function; }) + .forEach(function (entityMetadata) { + entityMetadata.relations + .filter(function (relation) { return relation.isLazy; }) + .forEach(function (relation) { + _this.connection.relationLoader.enableLazyLoad(relation, entityMetadata.target.prototype); + }); + }); + entityMetadatas.forEach(function (entityMetadata) { + entityMetadata.columns.forEach(function (column) { + // const target = column.embeddedMetadata ? column.embeddedMetadata.type : column.target; + var generated = _this.metadataArgsStorage.findGenerated(column.target, column.propertyName); + if (generated) { + column.isGenerated = true; + column.generationStrategy = generated.strategy; + if (generated.strategy === "uuid") { + column.type = "uuid"; + } + else if (generated.strategy === "rowid") { + column.type = "int"; + } + else { + column.type = column.type || Number; + } + column.build(_this.connection); + _this.computeEntityMetadataStep2(entityMetadata); + } + }); + }); + return entityMetadatas; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates entity metadata from the given table args. + * Creates column, relation, etc. metadatas for everything this entity metadata owns. + */ + EntityMetadataBuilder.prototype.createEntityMetadata = function (tableArgs) { + // we take all "inheritance tree" from a target entity to collect all stored metadata args + // (by decorators or inside entity schemas). For example for target Post < ContentModel < Unit + // it will be an array of [Post, ContentModel, Unit] and we can then get all metadata args of those classes + var inheritanceTree = tableArgs.target instanceof Function + ? MetadataUtils.getInheritanceTree(tableArgs.target) + : [tableArgs.target]; // todo: implement later here inheritance for string-targets + var tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target); + var tableTree = this.metadataArgsStorage.findTree(tableArgs.target); + // if single table inheritance used, we need to copy all children columns in to parent table + var singleTableChildrenTargets; + if ((tableInheritance && tableInheritance.pattern === "STI") || tableArgs.type === "entity-child") { + singleTableChildrenTargets = this.metadataArgsStorage + .filterSingleTableChildren(tableArgs.target) + .map(function (args) { return args.target; }) + .filter(function (target) { return target instanceof Function; }); + inheritanceTree.push.apply(inheritanceTree, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(singleTableChildrenTargets))); + } + return new EntityMetadata["a" /* EntityMetadata */]({ + connection: this.connection, + args: tableArgs, + inheritanceTree: inheritanceTree, + tableTree: tableTree, + inheritancePattern: tableInheritance ? tableInheritance.pattern : undefined + }); + }; + EntityMetadataBuilder.prototype.computeParentEntityMetadata = function (allEntityMetadatas, entityMetadata) { + // after all metadatas created we set parent entity metadata for table inheritance + if (entityMetadata.tableType === "entity-child") { + entityMetadata.parentEntityMetadata = allEntityMetadatas.find(function (allEntityMetadata) { + return allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target) !== -1 && allEntityMetadata.inheritancePattern === "STI"; + }); + } + }; + EntityMetadataBuilder.prototype.computeEntityMetadataStep1 = function (allEntityMetadatas, entityMetadata) { + var _a, _b, _c; + var _this = this; + var entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target); + var discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target); + if (typeof discriminatorValue !== "undefined") { + entityMetadata.discriminatorValue = discriminatorValue.value; + } + else { + entityMetadata.discriminatorValue = entityMetadata.target.name; + } + // if single table inheritance is used, we need to mark all embedded columns as nullable + entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree)) + .map(function (embedded) { + if (entityMetadata.inheritancePattern === "STI") { + embedded.columns = embedded.columns.map(function (column) { + column.isNullable = true; + return column; + }); + } + return embedded; + }); + entityMetadata.ownColumns = this.metadataArgsStorage + .filterColumns(entityMetadata.inheritanceTree) + .map(function (args) { + // for single table children we reuse columns created for their parents + if (entityMetadata.tableType === "entity-child") + return entityMetadata.parentEntityMetadata.ownColumns.find(function (column) { return column.propertyName === args.propertyName; }); + var column = new ColumnMetadata["a" /* ColumnMetadata */]({ connection: _this.connection, entityMetadata: entityMetadata, args: args }); + // if single table inheritance used, we need to mark all inherit table columns as nullable + var columnInSingleTableInheritedChild = allEntityMetadatas.find(function (otherEntityMetadata) { return otherEntityMetadata.tableType === "entity-child" && otherEntityMetadata.target === args.target; }); + if (columnInSingleTableInheritedChild) + column.isNullable = true; + return column; + }); + // for table inheritance we need to add a discriminator column + // + if (entityInheritance && entityInheritance.column) { + var discriminatorColumnName_1 = entityInheritance.column && entityInheritance.column.name ? entityInheritance.column.name : "type"; + var discriminatorColumn = entityMetadata.ownColumns.find(function (column) { return column.propertyName === discriminatorColumnName_1; }); + if (!discriminatorColumn) { + discriminatorColumn = new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: this.connection, + entityMetadata: entityMetadata, + args: { + target: entityMetadata.target, + mode: "virtual", + propertyName: discriminatorColumnName_1, + options: entityInheritance.column || { + name: discriminatorColumnName_1, + type: "varchar", + nullable: false + } + } + }); + discriminatorColumn.isVirtual = true; + discriminatorColumn.isDiscriminator = true; + entityMetadata.ownColumns.push(discriminatorColumn); + } + else { + discriminatorColumn.isDiscriminator = true; + } + } + // add discriminator column to the child entity metadatas + // discriminator column will not be there automatically since we are creating it in the code above + if (entityMetadata.tableType === "entity-child") { + var discriminatorColumn_1 = entityMetadata.parentEntityMetadata.ownColumns.find(function (column) { return column.isDiscriminator; }); + if (discriminatorColumn_1 && !entityMetadata.ownColumns.find(function (column) { return column === discriminatorColumn_1; })) { + entityMetadata.ownColumns.push(discriminatorColumn_1); + } + } + var namingStrategy = this.connection.namingStrategy; + // check if tree is used then we need to add extra columns for specific tree types + if (entityMetadata.treeType === "materialized-path") { + entityMetadata.ownColumns.push(new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: this.connection, + entityMetadata: entityMetadata, + materializedPath: true, + args: { + target: entityMetadata.target, + mode: "virtual", + propertyName: "mpath", + options: /*tree.column || */ { + name: namingStrategy.materializedPathColumnName, + type: "varchar", + nullable: true, + default: "" + } + } + })); + } + else if (entityMetadata.treeType === "nested-set") { + var _d = namingStrategy.nestedSetColumnNames, left = _d.left, right = _d.right; + entityMetadata.ownColumns.push(new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: this.connection, + entityMetadata: entityMetadata, + nestedSetLeft: true, + args: { + target: entityMetadata.target, + mode: "virtual", + propertyName: left, + options: /*tree.column || */ { + name: left, + type: "integer", + nullable: false, + default: 1 + } + } + })); + entityMetadata.ownColumns.push(new ColumnMetadata["a" /* ColumnMetadata */]({ + connection: this.connection, + entityMetadata: entityMetadata, + nestedSetRight: true, + args: { + target: entityMetadata.target, + mode: "virtual", + propertyName: right, + options: /*tree.column || */ { + name: right, + type: "integer", + nullable: false, + default: 2 + } + } + })); + } + entityMetadata.ownRelations = this.metadataArgsStorage.filterRelations(entityMetadata.inheritanceTree).map(function (args) { + // for single table children we reuse relations created for their parents + if (entityMetadata.tableType === "entity-child") + return entityMetadata.parentEntityMetadata.ownRelations.find(function (relation) { return relation.propertyName === args.propertyName; }); + return new RelationMetadata_RelationMetadata({ entityMetadata: entityMetadata, args: args }); + }); + entityMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(entityMetadata.inheritanceTree).map(function (args) { + // for single table children we reuse relation ids created for their parents + if (entityMetadata.tableType === "entity-child") + return entityMetadata.parentEntityMetadata.relationIds.find(function (relationId) { return relationId.propertyName === args.propertyName; }); + return new RelationIdMetadata({ entityMetadata: entityMetadata, args: args }); + }); + entityMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(entityMetadata.inheritanceTree).map(function (args) { + // for single table children we reuse relation counts created for their parents + if (entityMetadata.tableType === "entity-child") + return entityMetadata.parentEntityMetadata.relationCounts.find(function (relationCount) { return relationCount.propertyName === args.propertyName; }); + return new RelationCountMetadata({ entityMetadata: entityMetadata, args: args }); + }); + entityMetadata.ownListeners = this.metadataArgsStorage.filterListeners(entityMetadata.inheritanceTree).map(function (args) { + return new EntityListenerMetadata({ entityMetadata: entityMetadata, args: args }); + }); + entityMetadata.checks = this.metadataArgsStorage.filterChecks(entityMetadata.inheritanceTree).map(function (args) { + return new CheckMetadata({ entityMetadata: entityMetadata, args: args }); + }); + // Only PostgreSQL supports exclusion constraints. + if (this.connection.driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) { + entityMetadata.exclusions = this.metadataArgsStorage.filterExclusions(entityMetadata.inheritanceTree).map(function (args) { + return new ExclusionMetadata({ entityMetadata: entityMetadata, args: args }); + }); + } + if (this.connection.driver instanceof BrowserDisabledDriversDummy["d" /* CockroachDriver */]) { + entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree) + .filter(function (args) { return !args.unique; }) + .map(function (args) { + return new IndexMetadata({ entityMetadata: entityMetadata, args: args }); + }); + var uniques = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree) + .filter(function (args) { return args.unique; }) + .map(function (args) { + return new UniqueMetadata({ + entityMetadata: entityMetadata, + args: { + target: args.target, + name: args.name, + columns: args.columns, + } + }); + }); + (_a = entityMetadata.ownUniques).push.apply(_a, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(uniques))); + } + else { + entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree).map(function (args) { + return new IndexMetadata({ entityMetadata: entityMetadata, args: args }); + }); + } + // Mysql and SAP HANA stores unique constraints as unique indices. + if (this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */] || this.connection.driver instanceof BrowserDisabledDriversDummy["l" /* SapDriver */]) { + var indices = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(function (args) { + return new IndexMetadata({ + entityMetadata: entityMetadata, + args: { + target: args.target, + name: args.name, + columns: args.columns, + unique: true, + synchronize: true + } + }); + }); + (_b = entityMetadata.ownIndices).push.apply(_b, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(indices))); + } + else { + var uniques = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(function (args) { + return new UniqueMetadata({ entityMetadata: entityMetadata, args: args }); + }); + (_c = entityMetadata.ownUniques).push.apply(_c, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(uniques))); + } + }; + /** + * Creates from the given embedded metadata args real embedded metadatas with its columns and relations, + * and does the same for all its sub-embeddeds (goes recursively). + */ + EntityMetadataBuilder.prototype.createEmbeddedsRecursively = function (entityMetadata, embeddedArgs) { + var _this = this; + return embeddedArgs.map(function (embeddedArgs) { + var embeddedMetadata = new EmbeddedMetadata_EmbeddedMetadata({ entityMetadata: entityMetadata, args: embeddedArgs }); + var targets = MetadataUtils.getInheritanceTree(embeddedMetadata.type); + embeddedMetadata.columns = _this.metadataArgsStorage.filterColumns(targets).map(function (args) { + return new ColumnMetadata["a" /* ColumnMetadata */]({ connection: _this.connection, entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args }); + }); + embeddedMetadata.relations = _this.metadataArgsStorage.filterRelations(targets).map(function (args) { + return new RelationMetadata_RelationMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args }); + }); + embeddedMetadata.listeners = _this.metadataArgsStorage.filterListeners(targets).map(function (args) { + return new EntityListenerMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args }); + }); + embeddedMetadata.indices = _this.metadataArgsStorage.filterIndices(targets).map(function (args) { + return new IndexMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args }); + }); + embeddedMetadata.uniques = _this.metadataArgsStorage.filterUniques(targets).map(function (args) { + return new UniqueMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args }); + }); + embeddedMetadata.relationIds = _this.metadataArgsStorage.filterRelationIds(targets).map(function (args) { + return new RelationIdMetadata({ entityMetadata: entityMetadata, args: args }); + }); + embeddedMetadata.relationCounts = _this.metadataArgsStorage.filterRelationCounts(targets).map(function (args) { + return new RelationCountMetadata({ entityMetadata: entityMetadata, args: args }); + }); + embeddedMetadata.embeddeds = _this.createEmbeddedsRecursively(entityMetadata, _this.metadataArgsStorage.filterEmbeddeds(targets)); + embeddedMetadata.embeddeds.forEach(function (subEmbedded) { return subEmbedded.parentEmbeddedMetadata = embeddedMetadata; }); + entityMetadata.allEmbeddeds.push(embeddedMetadata); + return embeddedMetadata; + }); + }; + /** + * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc). + */ + EntityMetadataBuilder.prototype.computeEntityMetadataStep2 = function (entityMetadata) { + var _this = this; + entityMetadata.embeddeds.forEach(function (embedded) { return embedded.build(_this.connection); }); + entityMetadata.embeddeds.forEach(function (embedded) { + embedded.columnsFromTree.forEach(function (column) { return column.build(_this.connection); }); + embedded.relationsFromTree.forEach(function (relation) { return relation.build(); }); + }); + entityMetadata.ownColumns.forEach(function (column) { return column.build(_this.connection); }); + entityMetadata.ownRelations.forEach(function (relation) { return relation.build(); }); + entityMetadata.relations = entityMetadata.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.relationsFromTree); }, entityMetadata.ownRelations); + entityMetadata.eagerRelations = entityMetadata.relations.filter(function (relation) { return relation.isEager; }); + entityMetadata.lazyRelations = entityMetadata.relations.filter(function (relation) { return relation.isLazy; }); + entityMetadata.oneToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToOne; }); + entityMetadata.oneToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToMany; }); + entityMetadata.manyToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToOne; }); + entityMetadata.manyToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToMany; }); + entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToOneOwner; }); + entityMetadata.ownerManyToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToManyOwner; }); + entityMetadata.treeParentRelation = entityMetadata.relations.find(function (relation) { return relation.isTreeParent; }); + entityMetadata.treeChildrenRelation = entityMetadata.relations.find(function (relation) { return relation.isTreeChildren; }); + entityMetadata.columns = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.columnsFromTree); }, entityMetadata.ownColumns); + entityMetadata.listeners = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.listenersFromTree); }, entityMetadata.ownListeners); + entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_LOAD; }); + entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_INSERT; }); + entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_UPDATE; }); + entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_REMOVE; }); + entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.BEFORE_INSERT; }); + entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.BEFORE_UPDATE; }); + entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.BEFORE_REMOVE; }); + entityMetadata.indices = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.indicesFromTree); }, entityMetadata.ownIndices); + entityMetadata.uniques = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.uniquesFromTree); }, entityMetadata.ownUniques); + entityMetadata.primaryColumns = entityMetadata.columns.filter(function (column) { return column.isPrimary; }); + entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(function (column) { return !column.isVirtual; }); + entityMetadata.ancestorColumns = entityMetadata.columns.filter(function (column) { return column.closureType === "ancestor"; }); + entityMetadata.descendantColumns = entityMetadata.columns.filter(function (column) { return column.closureType === "descendant"; }); + entityMetadata.hasMultiplePrimaryKeys = entityMetadata.primaryColumns.length > 1; + entityMetadata.generatedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated || column.isObjectId; }); + entityMetadata.hasUUIDGeneratedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated || column.generationStrategy === "uuid"; }).length > 0; + entityMetadata.createDateColumn = entityMetadata.columns.find(function (column) { return column.isCreateDate; }); + entityMetadata.updateDateColumn = entityMetadata.columns.find(function (column) { return column.isUpdateDate; }); + entityMetadata.deleteDateColumn = entityMetadata.columns.find(function (column) { return column.isDeleteDate; }); + entityMetadata.versionColumn = entityMetadata.columns.find(function (column) { return column.isVersion; }); + entityMetadata.discriminatorColumn = entityMetadata.columns.find(function (column) { return column.isDiscriminator; }); + entityMetadata.treeLevelColumn = entityMetadata.columns.find(function (column) { return column.isTreeLevel; }); + entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(function (column) { return column.isNestedSetLeft; }); + entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(function (column) { return column.isNestedSetRight; }); + entityMetadata.materializedPathColumn = entityMetadata.columns.find(function (column) { return column.isMaterializedPath; }); + entityMetadata.objectIdColumn = entityMetadata.columns.find(function (column) { return column.isObjectId; }); + entityMetadata.foreignKeys.forEach(function (foreignKey) { return foreignKey.build(_this.connection.namingStrategy); }); + entityMetadata.propertiesMap = entityMetadata.createPropertiesMap(); + entityMetadata.relationIds.forEach(function (relationId) { return relationId.build(); }); + entityMetadata.relationCounts.forEach(function (relationCount) { return relationCount.build(); }); + entityMetadata.embeddeds.forEach(function (embedded) { + embedded.relationIdsFromTree.forEach(function (relationId) { return relationId.build(); }); + embedded.relationCountsFromTree.forEach(function (relationCount) { return relationCount.build(); }); + }); + }; + /** + * Computes entity metadata's relations inverse side properties. + */ + EntityMetadataBuilder.prototype.computeInverseProperties = function (entityMetadata, entityMetadatas) { + entityMetadata.relations.forEach(function (relation) { + // compute inverse side (related) entity metadatas for all relation metadatas + var inverseEntityMetadata = entityMetadatas.find(function (m) { return m.target === relation.type || (typeof relation.type === "string" && (m.targetName === relation.type || m.givenTableName === relation.type)); }); + if (!inverseEntityMetadata) + throw new Error("Entity metadata for " + entityMetadata.name + "#" + relation.propertyPath + " was not found. Check if you specified a correct entity object and if it's connected in the connection options."); + relation.inverseEntityMetadata = inverseEntityMetadata; + relation.inverseSidePropertyPath = relation.buildInverseSidePropertyPath(); + // and compute inverse relation and mark if it has such + relation.inverseRelation = inverseEntityMetadata.relations.find(function (foundRelation) { return foundRelation.propertyPath === relation.inverseSidePropertyPath; }); + }); + }; + /** + * Creates indices for the table of single table inheritance. + */ + EntityMetadataBuilder.prototype.createKeysForTableInheritance = function (entityMetadata) { + entityMetadata.indices.push(new IndexMetadata({ + entityMetadata: entityMetadata, + columns: [entityMetadata.discriminatorColumn], + args: { + target: entityMetadata.target, + unique: false + } + })); + }; + return EntityMetadataBuilder; +}()); + + +//# sourceMappingURL=EntityMetadataBuilder.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/metadata-args/MetadataArgsStorage.js + +/** + * Storage all metadatas args of all available types: tables, columns, subscribers, relations, etc. + * Each metadata args represents some specifications of what it represents. + * MetadataArgs used to create a real Metadata objects. + */ +var MetadataArgsStorage_MetadataArgsStorage = /** @class */ (function () { + function MetadataArgsStorage() { + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this.tables = []; + this.trees = []; + this.entityRepositories = []; + this.transactionEntityManagers = []; + this.transactionRepositories = []; + this.namingStrategies = []; + this.entitySubscribers = []; + this.indices = []; + this.uniques = []; + this.checks = []; + this.exclusions = []; + this.columns = []; + this.generations = []; + this.relations = []; + this.joinColumns = []; + this.joinTables = []; + this.entityListeners = []; + this.relationCounts = []; + this.relationIds = []; + this.embeddeds = []; + this.inheritances = []; + this.discriminatorValues = []; + } + MetadataArgsStorage.prototype.filterTables = function (target) { + return this.filterByTarget(this.tables, target); + }; + MetadataArgsStorage.prototype.filterColumns = function (target) { + return this.filterByTargetAndWithoutDuplicateProperties(this.columns, target); + }; + MetadataArgsStorage.prototype.findGenerated = function (target, propertyName) { + return this.generations.find(function (generated) { + return (Array.isArray(target) ? target.indexOf(generated.target) !== -1 : generated.target === target) && generated.propertyName === propertyName; + }); + }; + MetadataArgsStorage.prototype.findTree = function (target) { + return this.trees.find(function (tree) { + return (Array.isArray(target) ? target.indexOf(tree.target) !== -1 : tree.target === target); + }); + }; + MetadataArgsStorage.prototype.filterRelations = function (target) { + return this.filterByTargetAndWithoutDuplicateProperties(this.relations, target); + }; + MetadataArgsStorage.prototype.filterRelationIds = function (target) { + return this.filterByTargetAndWithoutDuplicateProperties(this.relationIds, target); + }; + MetadataArgsStorage.prototype.filterRelationCounts = function (target) { + return this.filterByTargetAndWithoutDuplicateProperties(this.relationCounts, target); + }; + MetadataArgsStorage.prototype.filterIndices = function (target) { + // todo: implement parent-entity overrides? + return this.indices.filter(function (index) { + return Array.isArray(target) ? target.indexOf(index.target) !== -1 : index.target === target; + }); + }; + MetadataArgsStorage.prototype.filterUniques = function (target) { + return this.uniques.filter(function (unique) { + return Array.isArray(target) ? target.indexOf(unique.target) !== -1 : unique.target === target; + }); + }; + MetadataArgsStorage.prototype.filterChecks = function (target) { + return this.checks.filter(function (check) { + return Array.isArray(target) ? target.indexOf(check.target) !== -1 : check.target === target; + }); + }; + MetadataArgsStorage.prototype.filterExclusions = function (target) { + return this.exclusions.filter(function (exclusion) { + return Array.isArray(target) ? target.indexOf(exclusion.target) !== -1 : exclusion.target === target; + }); + }; + MetadataArgsStorage.prototype.filterListeners = function (target) { + return this.filterByTarget(this.entityListeners, target); + }; + MetadataArgsStorage.prototype.filterEmbeddeds = function (target) { + return this.filterByTargetAndWithoutDuplicateEmbeddedProperties(this.embeddeds, target); + }; + MetadataArgsStorage.prototype.findJoinTable = function (target, propertyName) { + return this.joinTables.find(function (joinTable) { + return joinTable.target === target && joinTable.propertyName === propertyName; + }); + }; + MetadataArgsStorage.prototype.filterJoinColumns = function (target, propertyName) { + // todo: implement parent-entity overrides? + return this.joinColumns.filter(function (joinColumn) { + return joinColumn.target === target && joinColumn.propertyName === propertyName; + }); + }; + MetadataArgsStorage.prototype.filterSubscribers = function (target) { + return this.filterByTarget(this.entitySubscribers, target); + }; + MetadataArgsStorage.prototype.filterNamingStrategies = function (target) { + return this.filterByTarget(this.namingStrategies, target); + }; + MetadataArgsStorage.prototype.filterTransactionEntityManagers = function (target, propertyName) { + return this.transactionEntityManagers.filter(function (transactionEm) { + return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName; + }); + }; + MetadataArgsStorage.prototype.filterTransactionRepository = function (target, propertyName) { + return this.transactionRepositories.filter(function (transactionEm) { + return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName; + }); + }; + MetadataArgsStorage.prototype.filterSingleTableChildren = function (target) { + return this.tables.filter(function (table) { + return table.target instanceof Function + && target instanceof Function + && MetadataUtils.isInherited(table.target, target) + && table.type === "entity-child"; + }); + }; + MetadataArgsStorage.prototype.findInheritanceType = function (target) { + return this.inheritances.find(function (inheritance) { return inheritance.target === target; }); + }; + MetadataArgsStorage.prototype.findDiscriminatorValue = function (target) { + return this.discriminatorValues.find(function (discriminatorValue) { return discriminatorValue.target === target; }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Filters given array by a given target or targets. + */ + MetadataArgsStorage.prototype.filterByTarget = function (array, target) { + return array.filter(function (table) { + return Array.isArray(target) ? target.indexOf(table.target) !== -1 : table.target === target; + }); + }; + /** + * Filters given array by a given target or targets and prevents duplicate property names. + */ + MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateProperties = function (array, target) { + var newArray = []; + array.forEach(function (item) { + var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target; + if (sameTarget) { + if (!newArray.find(function (newItem) { return newItem.propertyName === item.propertyName; })) + newArray.push(item); + } + }); + return newArray; + }; + /** + * Filters given array by a given target or targets and prevents duplicate embedded property names. + */ + MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateEmbeddedProperties = function (array, target) { + var newArray = []; + array.forEach(function (item) { + var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target; + if (sameTarget) { + var isDuplicateEmbeddedProperty = newArray.find(function (newItem) { + return newItem.prefix === item.prefix && newItem.propertyName === item.propertyName; + }); + if (!isDuplicateEmbeddedProperty) + newArray.push(item); + } + }); + return newArray; + }; + return MetadataArgsStorage; +}()); + + +//# sourceMappingURL=MetadataArgsStorage.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/entity-schema/EntitySchemaTransformer.js + + +/** + * Transforms entity schema into metadata args storage. + * The result will be just like entities read from decorators. + */ +var EntitySchemaTransformer_EntitySchemaTransformer = /** @class */ (function () { + function EntitySchemaTransformer() { + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Transforms entity schema into new metadata args storage object. + */ + EntitySchemaTransformer.prototype.transform = function (schemas) { + var metadataArgsStorage = new MetadataArgsStorage_MetadataArgsStorage(); + schemas.forEach(function (entitySchema) { + var options = entitySchema.options; + // add table metadata args from the schema + var tableMetadata = { + target: options.target || options.name, + name: options.tableName, + database: options.database, + schema: options.schema, + type: options.type || "regular", + orderBy: options.orderBy, + synchronize: options.synchronize, + expression: options.expression + }; + metadataArgsStorage.tables.push(tableMetadata); + // add columns metadata args from the schema + Object.keys(options.columns).forEach(function (columnName) { + var column = options.columns[columnName]; + var mode = "regular"; + if (column.createDate) + mode = "createDate"; + if (column.updateDate) + mode = "updateDate"; + if (column.deleteDate) + mode = "deleteDate"; + if (column.version) + mode = "version"; + if (column.treeChildrenCount) + mode = "treeChildrenCount"; + if (column.treeLevel) + mode = "treeLevel"; + if (column.objectId) + mode = "objectId"; + var columnAgrs = { + target: options.target || options.name, + mode: mode, + propertyName: columnName, + options: { + type: column.type, + name: column.objectId ? "_id" : column.name, + length: column.length, + width: column.width, + nullable: column.nullable, + readonly: column.readonly, + update: column.update, + select: column.select, + insert: column.insert, + primary: column.primary, + unique: column.unique, + comment: column.comment, + default: column.default, + onUpdate: column.onUpdate, + precision: column.precision, + scale: column.scale, + zerofill: column.zerofill, + unsigned: column.unsigned, + charset: column.charset, + collation: column.collation, + enum: column.enum, + asExpression: column.asExpression, + generatedType: column.generatedType, + hstoreType: column.hstoreType, + array: column.array, + transformer: column.transformer, + spatialFeatureType: column.spatialFeatureType, + srid: column.srid + } + }; + metadataArgsStorage.columns.push(columnAgrs); + if (column.generated) { + var generationArgs = { + target: options.target || options.name, + propertyName: columnName, + strategy: typeof column.generated === "string" ? column.generated : "increment" + }; + metadataArgsStorage.generations.push(generationArgs); + } + if (column.unique) + metadataArgsStorage.uniques.push({ target: options.target || options.name, columns: [columnName] }); + }); + // add relation metadata args from the schema + if (options.relations) { + Object.keys(options.relations).forEach(function (relationName) { + var e_1, _a; + var relationSchema = options.relations[relationName]; + var relation = { + target: options.target || options.name, + propertyName: relationName, + relationType: relationSchema.type, + isLazy: relationSchema.lazy || false, + type: relationSchema.target, + inverseSideProperty: relationSchema.inverseSide, + isTreeParent: relationSchema.treeParent, + isTreeChildren: relationSchema.treeChildren, + options: { + eager: relationSchema.eager || false, + cascade: relationSchema.cascade, + nullable: relationSchema.nullable, + onDelete: relationSchema.onDelete, + onUpdate: relationSchema.onUpdate, + deferrable: relationSchema.deferrable, + primary: relationSchema.primary, + persistence: relationSchema.persistence + } + }; + metadataArgsStorage.relations.push(relation); + // add join column + if (relationSchema.joinColumn) { + if (typeof relationSchema.joinColumn === "boolean") { + var joinColumn = { + target: options.target || options.name, + propertyName: relationName + }; + metadataArgsStorage.joinColumns.push(joinColumn); + } + else { + var joinColumnsOptions = Array.isArray(relationSchema.joinColumn) ? relationSchema.joinColumn : [relationSchema.joinColumn]; + try { + for (var joinColumnsOptions_1 = Object(tslib_es6["g" /* __values */])(joinColumnsOptions), joinColumnsOptions_1_1 = joinColumnsOptions_1.next(); !joinColumnsOptions_1_1.done; joinColumnsOptions_1_1 = joinColumnsOptions_1.next()) { + var joinColumnOption = joinColumnsOptions_1_1.value; + var joinColumn = { + target: options.target || options.name, + propertyName: relationName, + name: joinColumnOption.name, + referencedColumnName: joinColumnOption.referencedColumnName + }; + metadataArgsStorage.joinColumns.push(joinColumn); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (joinColumnsOptions_1_1 && !joinColumnsOptions_1_1.done && (_a = joinColumnsOptions_1.return)) _a.call(joinColumnsOptions_1); + } + finally { if (e_1) throw e_1.error; } + } + } + } + // add join table + if (relationSchema.joinTable) { + if (typeof relationSchema.joinTable === "boolean") { + var joinTable = { + target: options.target || options.name, + propertyName: relationName + }; + metadataArgsStorage.joinTables.push(joinTable); + } + else { + var joinTable = { + target: options.target || options.name, + propertyName: relationName, + name: relationSchema.joinTable.name, + database: relationSchema.joinTable.database, + schema: relationSchema.joinTable.schema, + joinColumns: (relationSchema.joinTable.joinColumn ? [relationSchema.joinTable.joinColumn] : relationSchema.joinTable.joinColumns), + inverseJoinColumns: (relationSchema.joinTable.inverseJoinColumn ? [relationSchema.joinTable.inverseJoinColumn] : relationSchema.joinTable.inverseJoinColumns), + }; + metadataArgsStorage.joinTables.push(joinTable); + } + } + }); + } + // add index metadata args from the schema + if (options.indices) { + options.indices.forEach(function (index) { + var indexAgrs = { + target: options.target || options.name, + name: index.name, + unique: index.unique === true ? true : false, + spatial: index.spatial === true ? true : false, + fulltext: index.fulltext === true ? true : false, + parser: index.parser, + synchronize: index.synchronize === false ? false : true, + where: index.where, + sparse: index.sparse, + columns: index.columns + }; + metadataArgsStorage.indices.push(indexAgrs); + }); + } + // add unique metadata args from the schema + if (options.uniques) { + options.uniques.forEach(function (unique) { + var uniqueAgrs = { + target: options.target || options.name, + name: unique.name, + columns: unique.columns + }; + metadataArgsStorage.uniques.push(uniqueAgrs); + }); + } + // add check metadata args from the schema + if (options.checks) { + options.checks.forEach(function (check) { + var checkAgrs = { + target: options.target || options.name, + name: check.name, + expression: check.expression + }; + metadataArgsStorage.checks.push(checkAgrs); + }); + } + // add exclusion metadata args from the schema + if (options.exclusions) { + options.exclusions.forEach(function (exclusion) { + var exclusionArgs = { + target: options.target || options.name, + name: exclusion.name, + expression: exclusion.expression + }; + metadataArgsStorage.exclusions.push(exclusionArgs); + }); + } + }); + return metadataArgsStorage; + }; + return EntitySchemaTransformer; +}()); + + +//# sourceMappingURL=EntitySchemaTransformer.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/entity-schema/EntitySchema.js +var EntitySchema = __webpack_require__(74); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/connection/ConnectionMetadataBuilder.js + + + + + + + + +/** + * Builds migration instances, subscriber instances and entity metadatas for the given classes. + */ +var ConnectionMetadataBuilder_ConnectionMetadataBuilder = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ConnectionMetadataBuilder(connection) { + this.connection = connection; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Builds migration instances for the given classes or directories. + */ + ConnectionMetadataBuilder.prototype.buildMigrations = function (migrations) { + var _a = Object(tslib_es6["e" /* __read */])(OrmUtils["a" /* OrmUtils */].splitClassesAndStrings(migrations), 2), migrationClasses = _a[0], migrationDirectories = _a[1]; + var allMigrationClasses = Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(migrationClasses)), Object(tslib_es6["e" /* __read */])(importClassesFromDirectories(this.connection.logger, migrationDirectories))); + return allMigrationClasses.map(function (migrationClass) { return getFromContainer(migrationClass); }); + }; + /** + * Builds subscriber instances for the given classes or directories. + */ + ConnectionMetadataBuilder.prototype.buildSubscribers = function (subscribers) { + var _a = Object(tslib_es6["e" /* __read */])(OrmUtils["a" /* OrmUtils */].splitClassesAndStrings(subscribers || []), 2), subscriberClasses = _a[0], subscriberDirectories = _a[1]; + var allSubscriberClasses = Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(subscriberClasses)), Object(tslib_es6["e" /* __read */])(importClassesFromDirectories(this.connection.logger, subscriberDirectories))); + return getMetadataArgsStorage() + .filterSubscribers(allSubscriberClasses) + .map(function (metadata) { return getFromContainer(metadata.target); }); + }; + /** + * Builds entity metadatas for the given classes or directories. + */ + ConnectionMetadataBuilder.prototype.buildEntityMetadatas = function (entities) { + // todo: instead we need to merge multiple metadata args storages + var _a = Object(tslib_es6["e" /* __read */])(OrmUtils["a" /* OrmUtils */].splitClassesAndStrings(entities || []), 2), entityClassesOrSchemas = _a[0], entityDirectories = _a[1]; + var entityClasses = entityClassesOrSchemas.filter(function (entityClass) { return (entityClass instanceof EntitySchema["a" /* EntitySchema */]) === false; }); + var entitySchemas = entityClassesOrSchemas.filter(function (entityClass) { return entityClass instanceof EntitySchema["a" /* EntitySchema */]; }); + var allEntityClasses = Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(entityClasses)), Object(tslib_es6["e" /* __read */])(importClassesFromDirectories(this.connection.logger, entityDirectories))); + allEntityClasses.forEach(function (entityClass) { + if (entityClass instanceof EntitySchema["a" /* EntitySchema */]) { + entitySchemas.push(entityClass); + allEntityClasses.slice(allEntityClasses.indexOf(entityClass), 1); + } + }); + var decoratorEntityMetadatas = new EntityMetadataBuilder_EntityMetadataBuilder(this.connection, getMetadataArgsStorage()).build(allEntityClasses); + var metadataArgsStorageFromSchema = new EntitySchemaTransformer_EntitySchemaTransformer().transform(entitySchemas); + var schemaEntityMetadatas = new EntityMetadataBuilder_EntityMetadataBuilder(this.connection, metadataArgsStorageFromSchema).build(); + return Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(decoratorEntityMetadatas)), Object(tslib_es6["e" /* __read */])(schemaEntityMetadatas)); + }; + return ConnectionMetadataBuilder; +}()); + + +//# sourceMappingURL=ConnectionMetadataBuilder.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js + 4 modules +var SelectQueryBuilder = __webpack_require__(117); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/logger/SimpleConsoleLogger.js +/** + * Performs logging of the events in TypeORM. + * This version of logger uses console to log events and does not use syntax highlighting. + */ +var SimpleConsoleLogger = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function SimpleConsoleLogger(options) { + this.options = options; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Logs query and parameters used in it. + */ + SimpleConsoleLogger.prototype.logQuery = function (query, parameters, queryRunner) { + if (this.options === "all" || this.options === true || (Array.isArray(this.options) && this.options.indexOf("query") !== -1)) { + var sql = query + (parameters && parameters.length ? " -- PARAMETERS: " + this.stringifyParams(parameters) : ""); + console.log("query" + ": " + sql); + } + }; + /** + * Logs query that is failed. + */ + SimpleConsoleLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) { + if (this.options === "all" || this.options === true || (Array.isArray(this.options) && this.options.indexOf("error") !== -1)) { + var sql = query + (parameters && parameters.length ? " -- PARAMETERS: " + this.stringifyParams(parameters) : ""); + console.log("query failed: " + sql); + console.log("error:", error); + } + }; + /** + * Logs query that is slow. + */ + SimpleConsoleLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) { + var sql = query + (parameters && parameters.length ? " -- PARAMETERS: " + this.stringifyParams(parameters) : ""); + console.log("query is slow: " + sql); + console.log("execution time: " + time); + }; + /** + * Logs events from the schema build process. + */ + SimpleConsoleLogger.prototype.logSchemaBuild = function (message, queryRunner) { + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("schema") !== -1)) { + console.log(message); + } + }; + /** + * Logs events from the migrations run process. + */ + SimpleConsoleLogger.prototype.logMigration = function (message, queryRunner) { + console.log(message); + }; + /** + * Perform logging using given logger, or by default to the console. + * Log has its own level and message. + */ + SimpleConsoleLogger.prototype.log = function (level, message, queryRunner) { + switch (level) { + case "log": + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("log") !== -1)) + console.log(message); + break; + case "info": + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("info") !== -1)) + console.info(message); + break; + case "warn": + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("warn") !== -1)) + console.warn(message); + break; + } + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Converts parameters to a string. + * Sometimes parameters can have circular objects and therefor we are handle this case too. + */ + SimpleConsoleLogger.prototype.stringifyParams = function (parameters) { + try { + return JSON.stringify(parameters); + } + catch (error) { // most probably circular objects in parameters + return parameters; + } + }; + return SimpleConsoleLogger; +}()); + + +//# sourceMappingURL=SimpleConsoleLogger.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/logger/AdvancedConsoleLogger.js + +/** + * Performs logging of the events in TypeORM. + * This version of logger uses console to log events and use syntax highlighting. + */ +var AdvancedConsoleLogger_AdvancedConsoleLogger = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function AdvancedConsoleLogger(options) { + this.options = options; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Logs query and parameters used in it. + */ + AdvancedConsoleLogger.prototype.logQuery = function (query, parameters, queryRunner) { + if (this.options === "all" || this.options === true || (Array.isArray(this.options) && this.options.indexOf("query") !== -1)) { + var sql = query + (parameters && parameters.length ? " -- PARAMETERS: " + this.stringifyParams(parameters) : ""); + BrowserPlatformTools["a" /* PlatformTools */].logInfo("query:", BrowserPlatformTools["a" /* PlatformTools */].highlightSql(sql)); + } + }; + /** + * Logs query that is failed. + */ + AdvancedConsoleLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) { + if (this.options === "all" || this.options === true || (Array.isArray(this.options) && this.options.indexOf("error") !== -1)) { + var sql = query + (parameters && parameters.length ? " -- PARAMETERS: " + this.stringifyParams(parameters) : ""); + BrowserPlatformTools["a" /* PlatformTools */].logError("query failed:", BrowserPlatformTools["a" /* PlatformTools */].highlightSql(sql)); + BrowserPlatformTools["a" /* PlatformTools */].logError("error:", error); + } + }; + /** + * Logs query that is slow. + */ + AdvancedConsoleLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) { + var sql = query + (parameters && parameters.length ? " -- PARAMETERS: " + this.stringifyParams(parameters) : ""); + BrowserPlatformTools["a" /* PlatformTools */].logWarn("query is slow:", BrowserPlatformTools["a" /* PlatformTools */].highlightSql(sql)); + BrowserPlatformTools["a" /* PlatformTools */].logWarn("execution time:", time); + }; + /** + * Logs events from the schema build process. + */ + AdvancedConsoleLogger.prototype.logSchemaBuild = function (message, queryRunner) { + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("schema") !== -1)) { + BrowserPlatformTools["a" /* PlatformTools */].log(message); + } + }; + /** + * Logs events from the migration run process. + */ + AdvancedConsoleLogger.prototype.logMigration = function (message, queryRunner) { + BrowserPlatformTools["a" /* PlatformTools */].log(message); + }; + /** + * Perform logging using given logger, or by default to the console. + * Log has its own level and message. + */ + AdvancedConsoleLogger.prototype.log = function (level, message, queryRunner) { + switch (level) { + case "log": + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("log") !== -1)) + BrowserPlatformTools["a" /* PlatformTools */].log(message); + break; + case "info": + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("info") !== -1)) + BrowserPlatformTools["a" /* PlatformTools */].logInfo("INFO:", message); + break; + case "warn": + if (this.options === "all" || (Array.isArray(this.options) && this.options.indexOf("warn") !== -1)) + console.warn(BrowserPlatformTools["a" /* PlatformTools */].warn(message)); + break; + } + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Converts parameters to a string. + * Sometimes parameters can have circular objects and therefor we are handle this case too. + */ + AdvancedConsoleLogger.prototype.stringifyParams = function (parameters) { + try { + return JSON.stringify(parameters); + } + catch (error) { // most probably circular objects in parameters + return parameters; + } + }; + return AdvancedConsoleLogger; +}()); + + +//# sourceMappingURL=AdvancedConsoleLogger.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/platform/BrowserFileLoggerDummy.js + +/** + * Performs logging of the events in TypeORM. + * This version of logger logs everything into ormlogs.log file. + */ +var DummyLogger = /** @class */ (function () { + function DummyLogger() { + } + /** + * Logs query and parameters used in it. + */ + DummyLogger.prototype.logQuery = function () { + throw new Error('This logger is not applicable in a browser context'); + }; + /** + * Logs query that is failed. + */ + DummyLogger.prototype.logQueryError = function () { + throw new Error('This logger is not applicable in a browser context'); + }; + /** + * Logs query that is slow. + */ + DummyLogger.prototype.logQuerySlow = function () { + throw new Error('This logger is not applicable in a browser context'); + }; + /** + * Logs events from the schema build process. + */ + DummyLogger.prototype.logSchemaBuild = function () { + throw new Error('This logger is not applicable in a browser context'); + }; + /** + * Logs events from the migrations run process. + */ + DummyLogger.prototype.logMigration = function () { + throw new Error('This logger is not applicable in a browser context'); + }; + /** + * Perform logging using given logger, or by default to the console. + * Log has its own level and message. + */ + DummyLogger.prototype.log = function () { + throw new Error('This logger is not applicable in a browser context'); + }; + return DummyLogger; +}()); + +var BrowserFileLoggerDummy_FileLogger = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(FileLogger, _super); + function FileLogger() { + return _super !== null && _super.apply(this, arguments) || this; + } + return FileLogger; +}(DummyLogger)); + + +//# sourceMappingURL=BrowserFileLoggerDummy.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/node_modules/debug/src/browser.js +var browser = __webpack_require__(81); +var browser_default = /*#__PURE__*/__webpack_require__.n(browser); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/logger/DebugLogger.js + + +/** + * Performs logging of the events in TypeORM via debug library. + */ +var DebugLogger_DebugLogger = /** @class */ (function () { + function DebugLogger() { + this.debugQueryLog = browser_default()("typeorm:query:log"); + this.debugQueryError = browser_default()("typeorm:query:error"); + this.debugQuerySlow = browser_default()("typeorm:query:slow"); + this.debugSchemaBuild = browser_default()("typeorm:schema"); + this.debugMigration = browser_default()("typeorm:migration"); + this.debugLog = browser_default()("typeorm:log"); + this.debugInfo = browser_default()("typeorm:info"); + this.debugWarn = browser_default()("typeorm:warn"); + } + /** + * Logs query and parameters used in it. + */ + DebugLogger.prototype.logQuery = function (query, parameters, queryRunner) { + if (this.debugQueryLog.enabled) { + this.debugQueryLog(BrowserPlatformTools["a" /* PlatformTools */].highlightSql(query) + ";"); + if (parameters && parameters.length) { + this.debugQueryLog("parameters:", parameters); + } + } + }; + /** + * Logs query that failed. + */ + DebugLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) { + if (this.debugQueryError.enabled) { + this.debugQueryError(BrowserPlatformTools["a" /* PlatformTools */].highlightSql(query) + ";"); + if (parameters && parameters.length) { + this.debugQueryError("parameters:", parameters); + } + this.debugQueryError("error: ", error); + } + }; + /** + * Logs query that is slow. + */ + DebugLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) { + if (this.debugQuerySlow.enabled) { + this.debugQuerySlow(BrowserPlatformTools["a" /* PlatformTools */].highlightSql(query) + ";"); + if (parameters && parameters.length) { + this.debugQuerySlow("parameters:", parameters); + } + this.debugQuerySlow("execution time:", time); + } + }; + /** + * Logs events from the schema build process. + */ + DebugLogger.prototype.logSchemaBuild = function (message, queryRunner) { + if (this.debugSchemaBuild.enabled) { + this.debugSchemaBuild(message); + } + }; + /** + * Logs events from the migration run process. + */ + DebugLogger.prototype.logMigration = function (message, queryRunner) { + if (this.debugMigration.enabled) { + this.debugMigration(message); + } + }; + /** + * Perform logging using given logger. + * Log has its own level and message. + */ + DebugLogger.prototype.log = function (level, message, queryRunner) { + switch (level) { + case "log": + if (this.debugLog.enabled) { + this.debugLog(message); + } + break; + case "info": + if (this.debugInfo.enabled) { + this.debugInfo(message); + } + break; + case "warn": + if (this.debugWarn.enabled) { + this.debugWarn(message); + } + break; + } + }; + return DebugLogger; +}()); + + +//# sourceMappingURL=DebugLogger.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/logger/LoggerFactory.js + + + + +/** + * Helps to create logger instances. + */ +var LoggerFactory_LoggerFactory = /** @class */ (function () { + function LoggerFactory() { + } + /** + * Creates a new logger depend on a given connection's driver. + */ + LoggerFactory.prototype.create = function (logger, options) { + if (logger instanceof Object) + return logger; + if (logger) { + switch (logger) { + case "simple-console": + return new SimpleConsoleLogger(options); + case "file": + return new BrowserFileLoggerDummy_FileLogger(options); + case "advanced-console": + return new AdvancedConsoleLogger_AdvancedConsoleLogger(options); + case "debug": + return new DebugLogger_DebugLogger(); + } + } + return new AdvancedConsoleLogger_AdvancedConsoleLogger(options); + }; + return LoggerFactory; +}()); + + +//# sourceMappingURL=LoggerFactory.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/cache/RedisQueryResultCache.js + + +/** + * Caches query result into Redis database. + */ +var RedisQueryResultCache_RedisQueryResultCache = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RedisQueryResultCache(connection, clientType) { + this.connection = connection; + this.clientType = clientType; + this.redis = this.loadRedis(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a connection with given cache provider. + */ + RedisQueryResultCache.prototype.connect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var cacheOptions; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + cacheOptions = this.connection.options.cache; + if (this.clientType === "redis") { + if (cacheOptions && cacheOptions.options) { + this.client = this.redis.createClient(cacheOptions.options); + } + else { + this.client = this.redis.createClient(); + } + } + else if (this.clientType === "ioredis") { + if (cacheOptions && cacheOptions.options) { + this.client = new this.redis(cacheOptions.options); + } + else { + this.client = new this.redis(); + } + } + else if (this.clientType === "ioredis/cluster") { + if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) { + this.client = new this.redis.Cluster(cacheOptions.options); + } + else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) { + this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options); + } + else { + throw new Error("options.startupNodes required for " + this.clientType + "."); + } + } + return [2 /*return*/]; + }); + }); + }; + /** + * Disconnects the connection + */ + RedisQueryResultCache.prototype.disconnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + _this.client.quit(function (err, result) { + if (err) + return fail(err); + ok(); + _this.client = undefined; + }); + })]; + }); + }); + }; + /** + * Creates table for storing cache if it does not exist yet. + */ + RedisQueryResultCache.prototype.synchronize = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/]; + }); + }); + }; + /** + * Caches given query result. + * Returns cache result if found. + * Returns undefined if result is not cached. + */ + RedisQueryResultCache.prototype.getFromCache = function (options, queryRunner) { + var _this = this; + return new Promise(function (ok, fail) { + if (options.identifier) { + _this.client.get(options.identifier, function (err, result) { + if (err) + return fail(err); + ok(JSON.parse(result)); + }); + } + else if (options.query) { + _this.client.get(options.query, function (err, result) { + if (err) + return fail(err); + ok(JSON.parse(result)); + }); + } + else { + ok(undefined); + } + }); + }; + /** + * Checks if cache is expired or not. + */ + RedisQueryResultCache.prototype.isExpired = function (savedCache) { + return (savedCache.time + savedCache.duration) < new Date().getTime(); + }; + /** + * Stores given query result in the cache. + */ + RedisQueryResultCache.prototype.storeInCache = function (options, savedCache, queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + if (options.identifier) { + _this.client.set(options.identifier, JSON.stringify(options), "PX", options.duration, function (err, result) { + if (err) + return fail(err); + ok(); + }); + } + else if (options.query) { + _this.client.set(options.query, JSON.stringify(options), "PX", options.duration, function (err, result) { + if (err) + return fail(err); + ok(); + }); + } + })]; + }); + }); + }; + /** + * Clears everything stored in the cache. + */ + RedisQueryResultCache.prototype.clear = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + _this.client.flushdb(function (err, result) { + if (err) + return fail(err); + ok(); + }); + })]; + }); + }); + }; + /** + * Removes all cached results by given identifiers from cache. + */ + RedisQueryResultCache.prototype.remove = function (identifiers, queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, Promise.all(identifiers.map(function (identifier) { + return _this.deleteKey(identifier); + }))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Removes a single key from redis database. + */ + RedisQueryResultCache.prototype.deleteKey = function (key) { + var _this = this; + return new Promise(function (ok, fail) { + _this.client.del(key, function (err, result) { + if (err) + return fail(err); + ok(); + }); + }); + }; + /** + * Loads redis dependency. + */ + RedisQueryResultCache.prototype.loadRedis = function () { + try { + if (this.clientType === "ioredis/cluster") { + return BrowserPlatformTools["a" /* PlatformTools */].load("ioredis"); + } + else { + return BrowserPlatformTools["a" /* PlatformTools */].load(this.clientType); + } + } + catch (e) { + throw new Error("Cannot use cache because " + this.clientType + " is not installed. Please run \"npm i " + this.clientType + " --save\"."); + } + }; + return RedisQueryResultCache; +}()); + + +//# sourceMappingURL=RedisQueryResultCache.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/cache/DbQueryResultCache.js + + + + + +/** + * Caches query result into current database, into separate table called "query-result-cache". + */ +var DbQueryResultCache_DbQueryResultCache = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function DbQueryResultCache(connection) { + this.connection = connection; + var options = this.connection.driver.options; + var cacheOptions = typeof this.connection.options.cache === "object" ? this.connection.options.cache : {}; + var cacheTableName = cacheOptions.tableName || "query-result-cache"; + this.queryResultCacheTable = this.connection.driver.buildTableName(cacheTableName, options.schema, options.database); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a connection with given cache provider. + */ + DbQueryResultCache.prototype.connect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/]; + }); + }); + }; + /** + * Disconnects with given cache provider. + */ + DbQueryResultCache.prototype.disconnect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/]; + }); + }); + }; + /** + * Creates table for storing cache if it does not exist yet. + */ + DbQueryResultCache.prototype.synchronize = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var driver, tableExist; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + queryRunner = this.getQueryRunner(queryRunner); + driver = this.connection.driver; + return [4 /*yield*/, queryRunner.hasTable(this.queryResultCacheTable)]; + case 1: + tableExist = _a.sent(); + if (tableExist) + return [2 /*return*/]; + return [4 /*yield*/, queryRunner.createTable(new Table["a" /* Table */]({ + name: this.queryResultCacheTable, + columns: [ + { + name: "id", + isPrimary: true, + isNullable: false, + type: driver.normalizeType({ type: driver.mappedDataTypes.cacheId }), + generationStrategy: "increment", + isGenerated: true + }, + { + name: "identifier", + type: driver.normalizeType({ type: driver.mappedDataTypes.cacheIdentifier }), + isNullable: true + }, + { + name: "time", + type: driver.normalizeType({ type: driver.mappedDataTypes.cacheTime }), + isPrimary: false, + isNullable: false + }, + { + name: "duration", + type: driver.normalizeType({ type: driver.mappedDataTypes.cacheDuration }), + isPrimary: false, + isNullable: false + }, + { + name: "query", + type: driver.normalizeType({ type: driver.mappedDataTypes.cacheQuery }), + isPrimary: false, + isNullable: false + }, + { + name: "result", + type: driver.normalizeType({ type: driver.mappedDataTypes.cacheResult }), + isNullable: false + }, + ] + }))]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Caches given query result. + * Returns cache result if found. + * Returns undefined if result is not cached. + */ + DbQueryResultCache.prototype.getFromCache = function (options, queryRunner) { + queryRunner = this.getQueryRunner(queryRunner); + var qb = this.connection + .createQueryBuilder(queryRunner) + .select() + .from(this.queryResultCacheTable, "cache"); + if (options.identifier) { + return qb + .where(qb.escape("cache") + "." + qb.escape("identifier") + " = :identifier") + .setParameters({ identifier: this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */] ? new MssqlParameter(options.identifier, "nvarchar") : options.identifier }) + .getRawOne(); + } + else if (options.query) { + if (this.connection.driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */]) { + return qb + .where("dbms_lob.compare(" + qb.escape("cache") + "." + qb.escape("query") + ", :query) = 0", { query: options.query }) + .getRawOne(); + } + return qb + .where(qb.escape("cache") + "." + qb.escape("query") + " = :query") + .setParameters({ query: this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */] ? new MssqlParameter(options.query, "nvarchar") : options.query }) + .getRawOne(); + } + return Promise.resolve(undefined); + }; + /** + * Checks if cache is expired or not. + */ + DbQueryResultCache.prototype.isExpired = function (savedCache) { + var duration = typeof savedCache.duration === "string" ? parseInt(savedCache.duration) : savedCache.duration; + return ((typeof savedCache.time === "string" ? parseInt(savedCache.time) : savedCache.time) + duration) < new Date().getTime(); + }; + /** + * Stores given query result in the cache. + */ + DbQueryResultCache.prototype.storeInCache = function (options, savedCache, queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var insertedValues, qb, qb; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + queryRunner = this.getQueryRunner(queryRunner); + insertedValues = options; + if (this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table + insertedValues = { + identifier: new MssqlParameter(options.identifier, "nvarchar"), + time: new MssqlParameter(options.time, "bigint"), + duration: new MssqlParameter(options.duration, "int"), + query: new MssqlParameter(options.query, "nvarchar"), + result: new MssqlParameter(options.result, "nvarchar"), + }; + } + if (!(savedCache && savedCache.identifier)) return [3 /*break*/, 2]; + qb = queryRunner.manager + .createQueryBuilder() + .update(this.queryResultCacheTable) + .set(insertedValues); + qb.where(qb.escape("identifier") + " = :condition", { condition: insertedValues.identifier }); + return [4 /*yield*/, qb.execute()]; + case 1: + _a.sent(); + return [3 /*break*/, 6]; + case 2: + if (!(savedCache && savedCache.query)) return [3 /*break*/, 4]; + qb = queryRunner.manager + .createQueryBuilder() + .update(this.queryResultCacheTable) + .set(insertedValues); + if (this.connection.driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */]) { + qb.where("dbms_lob.compare(\"query\", :condition) = 0", { condition: insertedValues.query }); + } + else { + qb.where(qb.escape("query") + " = :condition", { condition: insertedValues.query }); + } + return [4 /*yield*/, qb.execute()]; + case 3: + _a.sent(); + return [3 /*break*/, 6]; + case 4: // otherwise insert + return [4 /*yield*/, queryRunner.manager + .createQueryBuilder() + .insert() + .into(this.queryResultCacheTable) + .values(insertedValues) + .execute()]; + case 5: + _a.sent(); + _a.label = 6; + case 6: return [2 /*return*/]; + } + }); + }); + }; + /** + * Clears everything stored in the cache. + */ + DbQueryResultCache.prototype.clear = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.getQueryRunner(queryRunner).clearTable(this.queryResultCacheTable)]; + }); + }); + }; + /** + * Removes all cached results by given identifiers from cache. + */ + DbQueryResultCache.prototype.remove = function (identifiers, queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, Promise.all(identifiers.map(function (identifier) { + var qb = _this.getQueryRunner(queryRunner).manager.createQueryBuilder(); + return qb.delete() + .from(_this.queryResultCacheTable) + .where(qb.escape("identifier") + " = :identifier", { identifier: identifier }) + .execute(); + }))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Gets a query runner to work with. + */ + DbQueryResultCache.prototype.getQueryRunner = function (queryRunner) { + if (queryRunner) + return queryRunner; + return this.connection.createQueryRunner(); + }; + return DbQueryResultCache; +}()); + + +//# sourceMappingURL=DbQueryResultCache.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/cache/QueryResultCacheFactory.js + + +/** + * Caches query result into Redis database. + */ +var QueryResultCacheFactory_QueryResultCacheFactory = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function QueryResultCacheFactory(connection) { + this.connection = connection; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new query result cache based on connection options. + */ + QueryResultCacheFactory.prototype.create = function () { + if (!this.connection.options.cache) + throw new Error("To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }"); + var cache = this.connection.options.cache; + if (cache.provider && typeof cache.provider === "function") { + return cache.provider(this.connection); + } + if (cache.type === "redis" || cache.type === "ioredis" || cache.type === "ioredis/cluster") { + return new RedisQueryResultCache_RedisQueryResultCache(this.connection, cache.type); + } + else { + return new DbQueryResultCache_DbQueryResultCache(this.connection); + } + }; + return QueryResultCacheFactory; +}()); + + +//# sourceMappingURL=QueryResultCacheFactory.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/RelationLoader.js + +/** + * Wraps entities and creates getters/setters for their relations + * to be able to lazily load relations when accessing these relations. + */ +var RelationLoader_RelationLoader = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationLoader(connection) { + this.connection = connection; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Loads relation data for the given entity and its relation. + */ + RelationLoader.prototype.load = function (relation, entityOrEntities, queryRunner) { + if (queryRunner && queryRunner.isReleased) + queryRunner = undefined; // get new one if already closed + if (relation.isManyToOne || relation.isOneToOneOwner) { + return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner); + } + else if (relation.isOneToMany || relation.isOneToOneNotOwner) { + return this.loadOneToManyOrOneToOneNotOwner(relation, entityOrEntities, queryRunner); + } + else if (relation.isManyToManyOwner) { + return this.loadManyToManyOwner(relation, entityOrEntities, queryRunner); + } + else { // many-to-many non owner + return this.loadManyToManyNotOwner(relation, entityOrEntities, queryRunner); + } + }; + /** + * Loads data for many-to-one and one-to-one owner relations. + * + * (ow) post.category<=>category.post + * loaded: category from post + * example: SELECT category.id AS category_id, category.name AS category_name FROM category category + * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1 + */ + RelationLoader.prototype.loadManyToOneOrOneToOneOwner = function (relation, entityOrEntities, queryRunner) { + var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities]; + var columns = relation.entityMetadata.primaryColumns; + var joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation.joinColumns; + var conditions = joinColumns.map(function (joinColumn) { + return relation.entityMetadata.name + "." + joinColumn.propertyName + " = " + relation.propertyName + "." + joinColumn.referencedColumn.propertyName; + }).join(" AND "); + var joinAliasName = relation.entityMetadata.name; + var qb = this.connection + .createQueryBuilder(queryRunner) + .select(relation.propertyName) // category + .from(relation.type, relation.propertyName) // Category, category + .innerJoin(relation.entityMetadata.target, joinAliasName, conditions); + if (columns.length === 1) { + qb.where(joinAliasName + "." + columns[0].propertyPath + " IN (:..." + (joinAliasName + "_" + columns[0].propertyName) + ")"); + qb.setParameter(joinAliasName + "_" + columns[0].propertyName, entities.map(function (entity) { return columns[0].getEntityValue(entity); })); + } + else { + var condition = entities.map(function (entity, entityIndex) { + return columns.map(function (column, columnIndex) { + var paramName = joinAliasName + "_entity_" + entityIndex + "_" + columnIndex; + qb.setParameter(paramName, column.getEntityValue(entity)); + return joinAliasName + "." + column.propertyPath + " = :" + paramName; + }).join(" AND "); + }).map(function (condition) { return "(" + condition + ")"; }).join(" OR "); + qb.where(condition); + } + return qb.getMany(); + // return qb.getOne(); todo: fix all usages + }; + /** + * Loads data for one-to-many and one-to-one not owner relations. + * + * SELECT post + * FROM post post + * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn] + */ + RelationLoader.prototype.loadOneToManyOrOneToOneNotOwner = function (relation, entityOrEntities, queryRunner) { + var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities]; + var aliasName = relation.propertyName; + var columns = relation.inverseRelation.joinColumns; + var qb = this.connection + .createQueryBuilder(queryRunner) + .select(aliasName) + .from(relation.inverseRelation.entityMetadata.target, aliasName); + if (columns.length === 1) { + qb.where(aliasName + "." + columns[0].propertyPath + " IN (:..." + (aliasName + "_" + columns[0].propertyName) + ")"); + qb.setParameter(aliasName + "_" + columns[0].propertyName, entities.map(function (entity) { return columns[0].referencedColumn.getEntityValue(entity); })); + } + else { + var condition = entities.map(function (entity, entityIndex) { + return columns.map(function (column, columnIndex) { + var paramName = aliasName + "_entity_" + entityIndex + "_" + columnIndex; + qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity)); + return aliasName + "." + column.propertyPath + " = :" + paramName; + }).join(" AND "); + }).map(function (condition) { return "(" + condition + ")"; }).join(" OR "); + qb.where(condition); + } + return qb.getMany(); + // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages + }; + /** + * Loads data for many-to-many owner relations. + * + * SELECT category + * FROM category category + * INNER JOIN post_categories post_categories + * ON post_categories.postId = :postId + * AND post_categories.categoryId = category.id + */ + RelationLoader.prototype.loadManyToManyOwner = function (relation, entityOrEntities, queryRunner) { + var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities]; + var mainAlias = relation.propertyName; + var joinAlias = relation.junctionEntityMetadata.tableName; + var joinColumnConditions = relation.joinColumns.map(function (joinColumn) { + return joinAlias + "." + joinColumn.propertyName + " IN (:..." + joinColumn.propertyName + ")"; + }); + var inverseJoinColumnConditions = relation.inverseJoinColumns.map(function (inverseJoinColumn) { + return joinAlias + "." + inverseJoinColumn.propertyName + "=" + mainAlias + "." + inverseJoinColumn.referencedColumn.propertyName; + }); + var parameters = relation.joinColumns.reduce(function (parameters, joinColumn) { + parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); }); + return parameters; + }, {}); + return this.connection + .createQueryBuilder(queryRunner) + .select(mainAlias) + .from(relation.type, mainAlias) + .innerJoin(joinAlias, joinAlias, Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(joinColumnConditions)), Object(tslib_es6["e" /* __read */])(inverseJoinColumnConditions)).join(" AND ")) + .setParameters(parameters) + .getMany(); + }; + /** + * Loads data for many-to-many not owner relations. + * + * SELECT post + * FROM post post + * INNER JOIN post_categories post_categories + * ON post_categories.postId = post.id + * AND post_categories.categoryId = post_categories.categoryId + */ + RelationLoader.prototype.loadManyToManyNotOwner = function (relation, entityOrEntities, queryRunner) { + var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities]; + var mainAlias = relation.propertyName; + var joinAlias = relation.junctionEntityMetadata.tableName; + var joinColumnConditions = relation.inverseRelation.joinColumns.map(function (joinColumn) { + return joinAlias + "." + joinColumn.propertyName + " = " + mainAlias + "." + joinColumn.referencedColumn.propertyName; + }); + var inverseJoinColumnConditions = relation.inverseRelation.inverseJoinColumns.map(function (inverseJoinColumn) { + return joinAlias + "." + inverseJoinColumn.propertyName + " IN (:..." + inverseJoinColumn.propertyName + ")"; + }); + var parameters = relation.inverseRelation.inverseJoinColumns.reduce(function (parameters, joinColumn) { + parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); }); + return parameters; + }, {}); + return this.connection + .createQueryBuilder(queryRunner) + .select(mainAlias) + .from(relation.type, mainAlias) + .innerJoin(joinAlias, joinAlias, Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(joinColumnConditions)), Object(tslib_es6["e" /* __read */])(inverseJoinColumnConditions)).join(" AND ")) + .setParameters(parameters) + .getMany(); + }; + /** + * Wraps given entity and creates getters/setters for its given relation + * to be able to lazily load data when accessing this relation. + */ + RelationLoader.prototype.enableLazyLoad = function (relation, entity, queryRunner) { + var relationLoader = this; + var dataIndex = "__" + relation.propertyName + "__"; // in what property of the entity loaded data will be stored + var promiseIndex = "__promise_" + relation.propertyName + "__"; // in what property of the entity loading promise will be stored + var resolveIndex = "__has_" + relation.propertyName + "__"; // indicates if relation data already was loaded or not, we need this flag if loaded data is empty + var setData = function (entity, value) { + entity[dataIndex] = value; + entity[resolveIndex] = true; + delete entity[promiseIndex]; + return value; + }; + var setPromise = function (entity, value) { + delete entity[resolveIndex]; + delete entity[dataIndex]; + entity[promiseIndex] = value; + value.then( + // ensure different value is not assigned yet + function (result) { return entity[promiseIndex] === value ? setData(entity, result) : result; }); + return value; + }; + Object.defineProperty(entity, relation.propertyName, { + get: function () { + if (this[resolveIndex] === true || this[dataIndex] !== undefined) // if related data already was loaded then simply return it + return Promise.resolve(this[dataIndex]); + if (this[promiseIndex]) // if related data is loading then return a promise relationLoader loads it + return this[promiseIndex]; + // nothing is loaded yet, load relation data and save it in the model once they are loaded + var loader = relationLoader.load(relation, this, queryRunner).then(function (result) { return relation.isOneToOne || relation.isManyToOne ? (result.length === 0 ? null : result[0]) : result; }); + return setPromise(this, loader); + }, + set: function (value) { + if (value instanceof Promise) { // if set data is a promise then wait for its resolve and save in the object + setPromise(this, value); + } + else { // if its direct data set (non promise, probably not safe-typed) + setData(this, value); + } + }, + configurable: true + }); + }; + return RelationLoader; +}()); + + +//# sourceMappingURL=RelationLoader.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/RelationIdLoader.js + + +/** + * Loads relation ids for the given entities. + */ +var RelationIdLoader_RelationIdLoader = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationIdLoader(connection) { + this.connection = connection; + } + /** + * Loads relation ids of the given entity or entities. + */ + RelationIdLoader.prototype.load = function (relationOrTarget, relationNameOrEntities, entitiesOrRelatedEntities, maybeRelatedEntities) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var relation, entities, relatedEntities, entityMetadata; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + if (relationOrTarget instanceof RelationMetadata_RelationMetadata) { + relation = relationOrTarget; + entities = Array.isArray(relationNameOrEntities) ? relationNameOrEntities : [relationNameOrEntities]; + relatedEntities = Array.isArray(entitiesOrRelatedEntities) ? entitiesOrRelatedEntities : (entitiesOrRelatedEntities ? [entitiesOrRelatedEntities] : undefined); + } + else { + entityMetadata = this.connection.getMetadata(relationOrTarget); + relation = entityMetadata.findRelationWithPropertyPath(relationNameOrEntities); + if (!relation) + throw new Error("Relation \"" + relation + "\" was not found in \"" + entityMetadata.name + "\"."); + entities = Array.isArray(entitiesOrRelatedEntities) ? entitiesOrRelatedEntities : [entitiesOrRelatedEntities]; + relatedEntities = Array.isArray(maybeRelatedEntities) ? maybeRelatedEntities : (maybeRelatedEntities ? [maybeRelatedEntities] : undefined); + } + // load relation ids depend of relation type + if (relation.isManyToMany) { + return [2 /*return*/, this.loadForManyToMany(relation, entities, relatedEntities)]; + } + else if (relation.isManyToOne || relation.isOneToOneOwner) { + return [2 /*return*/, this.loadForManyToOneAndOneToOneOwner(relation, entities, relatedEntities)]; + } + else { // if (relation.isOneToMany || relation.isOneToOneNotOwner) { + return [2 /*return*/, this.loadForOneToManyAndOneToOneNotOwner(relation, entities, relatedEntities)]; + } + return [2 /*return*/]; + }); + }); + }; + /** + * Loads relation ids of the given entities and groups them into the object with parent and children. + * + * todo: extract this method? + */ + RelationIdLoader.prototype.loadManyToManyRelationIdsAndGroup = function (relation, entitiesOrEntities, relatedEntityOrEntities) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var isMany, entities, relationIds, relatedEntities, columns, inverseColumns; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + isMany = relation.isManyToMany || relation.isOneToMany; + entities = Array.isArray(entitiesOrEntities) ? entitiesOrEntities : [entitiesOrEntities]; + if (!!relatedEntityOrEntities) return [3 /*break*/, 2]; + return [4 /*yield*/, this.connection.relationLoader.load(relation, entitiesOrEntities)]; + case 1: + relatedEntityOrEntities = _a.sent(); + if (!relatedEntityOrEntities.length) + return [2 /*return*/, entities.map(function (entity) { return ({ entity: entity, related: isMany ? [] : undefined }); })]; + _a.label = 2; + case 2: return [4 /*yield*/, this.load(relation, entitiesOrEntities, relatedEntityOrEntities)]; + case 3: + relationIds = _a.sent(); + relatedEntities = Array.isArray(relatedEntityOrEntities) ? relatedEntityOrEntities : [relatedEntityOrEntities]; + if (relation.isManyToManyOwner) { + columns = relation.junctionEntityMetadata.inverseColumns.map(function (column) { return column.referencedColumn; }); + inverseColumns = relation.junctionEntityMetadata.ownerColumns.map(function (column) { return column.referencedColumn; }); + } + else if (relation.isManyToManyNotOwner) { + columns = relation.junctionEntityMetadata.ownerColumns.map(function (column) { return column.referencedColumn; }); + inverseColumns = relation.junctionEntityMetadata.inverseColumns.map(function (column) { return column.referencedColumn; }); + } + else if (relation.isManyToOne || relation.isOneToOneOwner) { + columns = relation.joinColumns.map(function (column) { return column.referencedColumn; }); + inverseColumns = relation.entityMetadata.primaryColumns; + } + else if (relation.isOneToMany || relation.isOneToOneNotOwner) { + columns = relation.inverseRelation.entityMetadata.primaryColumns; + inverseColumns = relation.inverseRelation.joinColumns.map(function (column) { return column.referencedColumn; }); + } + else { + } + return [2 /*return*/, entities.map(function (entity) { + var group = { entity: entity, related: isMany ? [] : undefined }; + relationIds.forEach(function (relationId) { + var entityMatched = inverseColumns.every(function (column) { + return column.getEntityValue(entity) === relationId[column.entityMetadata.name + "_" + column.propertyPath.replace(".", "_")]; + }); + if (entityMatched) { + relatedEntities.forEach(function (relatedEntity) { + var relatedEntityMatched = columns.every(function (column) { + return column.getEntityValue(relatedEntity) === relationId[column.entityMetadata.name + "_" + relation.propertyPath.replace(".", "_") + "_" + column.propertyPath.replace(".", "_")]; + }); + if (relatedEntityMatched) { + if (isMany) { + group.related.push(relatedEntity); + } + else { + group.related = relatedEntity; + } + } + }); + } + }); + return group; + })]; + } + }); + }); + }; + /** + * Loads relation ids of the given entities and maps them into the given entity property. + + async loadManyToManyRelationIdsAndMap( + relation: RelationMetadata, + entityOrEntities: ObjectLiteral|ObjectLiteral[], + mapToEntityOrEntities: ObjectLiteral|ObjectLiteral[], + propertyName: string + ): Promise { + + const relationIds = await this.loadManyToManyRelationIds(relation, entityOrEntities, mapToEntityOrEntities); + const mapToEntities = mapToEntityOrEntities instanceof Array ? mapToEntityOrEntities : [mapToEntityOrEntities]; + const junctionMetadata = relation.junctionEntityMetadata!; + const mainAlias = junctionMetadata.name; + const columns = relation.isOwning ? junctionMetadata.inverseColumns : junctionMetadata.ownerColumns; + const inverseColumns = relation.isOwning ? junctionMetadata.ownerColumns : junctionMetadata.inverseColumns; + + mapToEntities.forEach(mapToEntity => { + mapToEntity[propertyName] = []; + relationIds.forEach(relationId => { + const match = inverseColumns.every(column => { + return column.referencedColumn!.getEntityValue(mapToEntity) === relationId[mainAlias + "_" + column.propertyName]; + }); + if (match) { + if (columns.length === 1) { + mapToEntity[propertyName].push(relationId[mainAlias + "_" + columns[0].propertyName]); + + } else { + const value = {}; + columns.forEach(column => { + column.referencedColumn!.setEntityValue(value, relationId[mainAlias + "_" + column.propertyName]); + }); + mapToEntity[propertyName].push(value); + } + } + }); + }); + }*/ + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Loads relation ids for the many-to-many relation. + */ + RelationIdLoader.prototype.loadForManyToMany = function (relation, entities, relatedEntities) { + var junctionMetadata = relation.junctionEntityMetadata; + var mainAlias = junctionMetadata.name; + var columns = relation.isOwning ? junctionMetadata.ownerColumns : junctionMetadata.inverseColumns; + var inverseColumns = relation.isOwning ? junctionMetadata.inverseColumns : junctionMetadata.ownerColumns; + var qb = this.connection.createQueryBuilder(); + // select all columns from junction table + junctionMetadata.ownerColumns.forEach(function (column) { + var columnName = column.referencedColumn.entityMetadata.name + "_" + column.referencedColumn.propertyPath.replace(".", "_"); + qb.addSelect(mainAlias + "." + column.propertyPath, columnName); + }); + junctionMetadata.inverseColumns.forEach(function (column) { + var columnName = column.referencedColumn.entityMetadata.name + "_" + relation.propertyPath.replace(".", "_") + "_" + column.referencedColumn.propertyPath.replace(".", "_"); + qb.addSelect(mainAlias + "." + column.propertyPath, columnName); + }); + // add conditions for the given entities + var condition1 = ""; + if (columns.length === 1) { + qb.setParameter("values1", entities.map(function (entity) { return columns[0].referencedColumn.getEntityValue(entity); })); + condition1 = mainAlias + "." + columns[0].propertyPath + " IN (:...values1)"; // todo: use ANY for postgres + } + else { + condition1 = "(" + entities.map(function (entity, entityIndex) { + return columns.map(function (column) { + var paramName = "entity1_" + entityIndex + "_" + column.propertyName; + qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity)); + return mainAlias + "." + column.propertyPath + " = :" + paramName; + }).join(" AND "); + }).map(function (condition) { return "(" + condition + ")"; }).join(" OR ") + ")"; + } + // add conditions for the given inverse entities + var condition2 = ""; + if (relatedEntities) { + if (inverseColumns.length === 1) { + qb.setParameter("values2", relatedEntities.map(function (entity) { return inverseColumns[0].referencedColumn.getEntityValue(entity); })); + condition2 = mainAlias + "." + inverseColumns[0].propertyPath + " IN (:...values2)"; // todo: use ANY for postgres + } + else { + condition2 = "(" + relatedEntities.map(function (entity, entityIndex) { + return inverseColumns.map(function (column) { + var paramName = "entity2_" + entityIndex + "_" + column.propertyName; + qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity)); + return mainAlias + "." + column.propertyPath + " = :" + paramName; + }).join(" AND "); + }).map(function (condition) { return "(" + condition + ")"; }).join(" OR ") + ")"; + } + } + // execute query + return qb + .from(junctionMetadata.target, mainAlias) + .where(condition1 + (condition2 ? " AND " + condition2 : "")) + .getRawMany(); + }; + /** + * Loads relation ids for the many-to-one and one-to-one owner relations. + */ + RelationIdLoader.prototype.loadForManyToOneAndOneToOneOwner = function (relation, entities, relatedEntities) { + var mainAlias = relation.entityMetadata.targetName; + // select all columns we need + var qb = this.connection.createQueryBuilder(); + relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) { + var columnName = primaryColumn.entityMetadata.name + "_" + primaryColumn.propertyPath.replace(".", "_"); + qb.addSelect(mainAlias + "." + primaryColumn.propertyPath, columnName); + }); + relation.joinColumns.forEach(function (column) { + var columnName = column.referencedColumn.entityMetadata.name + "_" + relation.propertyPath.replace(".", "_") + "_" + column.referencedColumn.propertyPath.replace(".", "_"); + qb.addSelect(mainAlias + "." + column.propertyPath, columnName); + }); + // add condition for entities + var condition = ""; + if (relation.entityMetadata.primaryColumns.length === 1) { + qb.setParameter("values", entities.map(function (entity) { return relation.entityMetadata.primaryColumns[0].getEntityValue(entity); })); + condition = mainAlias + "." + relation.entityMetadata.primaryColumns[0].propertyPath + " IN (:...values)"; + } + else { + condition = entities.map(function (entity, entityIndex) { + return relation.entityMetadata.primaryColumns.map(function (column, columnIndex) { + var paramName = "entity" + entityIndex + "_" + columnIndex; + qb.setParameter(paramName, column.getEntityValue(entity)); + return mainAlias + "." + column.propertyPath + " = :" + paramName; + }).join(" AND "); + }).map(function (condition) { return "(" + condition + ")"; }).join(" OR "); + } + // execute query + return qb.from(relation.entityMetadata.target, mainAlias) + .where(condition) + .getRawMany(); + }; + /** + * Loads relation ids for the one-to-many and one-to-one not owner relations. + */ + RelationIdLoader.prototype.loadForOneToManyAndOneToOneNotOwner = function (relation, entities, relatedEntities) { + relation = relation.inverseRelation; + var mainAlias = relation.entityMetadata.targetName; + // select all columns we need + var qb = this.connection.createQueryBuilder(); + relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) { + var columnName = primaryColumn.entityMetadata.name + "_" + relation.inverseRelation.propertyPath.replace(".", "_") + "_" + primaryColumn.propertyPath.replace(".", "_"); + qb.addSelect(mainAlias + "." + primaryColumn.propertyPath, columnName); + }); + relation.joinColumns.forEach(function (column) { + var columnName = column.referencedColumn.entityMetadata.name + "_" + column.referencedColumn.propertyPath.replace(".", "_"); + qb.addSelect(mainAlias + "." + column.propertyPath, columnName); + }); + // add condition for entities + var condition = ""; + if (relation.joinColumns.length === 1) { + qb.setParameter("values", entities.map(function (entity) { return relation.joinColumns[0].referencedColumn.getEntityValue(entity); })); + condition = mainAlias + "." + relation.joinColumns[0].propertyPath + " IN (:...values)"; + } + else { + condition = entities.map(function (entity, entityIndex) { + return relation.joinColumns.map(function (joinColumn, joinColumnIndex) { + var paramName = "entity" + entityIndex + "_" + joinColumnIndex; + qb.setParameter(paramName, joinColumn.referencedColumn.getEntityValue(entity)); + return mainAlias + "." + joinColumn.propertyPath + " = :" + paramName; + }).join(" AND "); + }).map(function (condition) { return "(" + condition + ")"; }).join(" OR "); + } + // execute query + return qb.from(relation.entityMetadata.target, mainAlias) + .where(condition) + .getRawMany(); + }; + return RelationIdLoader; +}()); + + +//# sourceMappingURL=RelationIdLoader.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/DriverUtils.js +var DriverUtils = __webpack_require__(20); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/connection/Connection.js + + + + + + + + + + + + + + + + + + + + + + + + + +/** + * Connection is a single database ORM connection to a specific database. + * Its not required to be a database connection, depend on database type it can create connection pool. + * You can have multiple connections to multiple databases in your application. + */ +var Connection_Connection = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function Connection(options) { + /** + * Migration instances that are registered for this connection. + */ + this.migrations = []; + /** + * Entity subscriber instances that are registered for this connection. + */ + this.subscribers = []; + /** + * All entity metadatas that are registered for this connection. + */ + this.entityMetadatas = []; + this.name = options.name || "default"; + this.options = options; + this.logger = new LoggerFactory_LoggerFactory().create(this.options.logger, this.options.logging); + this.driver = new DriverFactory_DriverFactory().create(this); + this.manager = this.createEntityManager(); + this.namingStrategy = options.namingStrategy || new DefaultNamingStrategy_DefaultNamingStrategy(); + this.queryResultCache = options.cache ? new QueryResultCacheFactory_QueryResultCacheFactory(this).create() : undefined; + this.relationLoader = new RelationLoader_RelationLoader(this); + this.relationIdLoader = new RelationIdLoader_RelationIdLoader(this); + this.isConnected = false; + } + Object.defineProperty(Connection.prototype, "mongoManager", { + // ------------------------------------------------------------------------- + // Public Accessors + // ------------------------------------------------------------------------- + /** + * Gets the mongodb entity manager that allows to perform mongodb-specific repository operations + * with any entity in this connection. + * + * Available only in mongodb connections. + */ + get: function () { + if (!(this.manager instanceof BrowserDisabledDriversDummy["f" /* MongoEntityManager */])) + throw new Error("MongoEntityManager is only available for MongoDB databases."); + return this.manager; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Connection.prototype, "sqljsManager", { + /** + * Gets a sql.js specific Entity Manager that allows to perform special load and save operations + * + * Available only in connection with the sqljs driver. + */ + get: function () { + if (!(this.manager instanceof SqljsEntityManager_SqljsEntityManager)) + throw new Error("SqljsEntityManager is only available for Sqljs databases."); + return this.manager; + }, + enumerable: false, + configurable: true + }); + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Performs connection to the database. + * This method should be called once on application bootstrap. + * This method not necessarily creates database connection (depend on database type), + * but it also can setup a connection pool with database to use. + */ + Connection.prototype.connect = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var error_1; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isConnected) + throw new CannotConnectAlreadyConnectedError_CannotConnectAlreadyConnectedError(this.name); + // connect to the database via its driver + return [4 /*yield*/, this.driver.connect()]; + case 1: + // connect to the database via its driver + _a.sent(); + if (!this.queryResultCache) return [3 /*break*/, 3]; + return [4 /*yield*/, this.queryResultCache.connect()]; + case 2: + _a.sent(); + _a.label = 3; + case 3: + // set connected status for the current connection + ObjectUtils["a" /* ObjectUtils */].assign(this, { isConnected: true }); + _a.label = 4; + case 4: + _a.trys.push([4, 12, , 14]); + // build all metadatas registered in the current connection + this.buildMetadatas(); + return [4 /*yield*/, this.driver.afterConnect()]; + case 5: + _a.sent(); + if (!this.options.dropSchema) return [3 /*break*/, 7]; + return [4 /*yield*/, this.dropDatabase()]; + case 6: + _a.sent(); + _a.label = 7; + case 7: + if (!this.options.synchronize) return [3 /*break*/, 9]; + return [4 /*yield*/, this.synchronize()]; + case 8: + _a.sent(); + _a.label = 9; + case 9: + if (!this.options.migrationsRun) return [3 /*break*/, 11]; + return [4 /*yield*/, this.runMigrations({ transaction: this.options.migrationsTransactionMode })]; + case 10: + _a.sent(); + _a.label = 11; + case 11: return [3 /*break*/, 14]; + case 12: + error_1 = _a.sent(); + // if for some reason build metadata fail (for example validation error during entity metadata check) + // connection needs to be closed + return [4 /*yield*/, this.close()]; + case 13: + // if for some reason build metadata fail (for example validation error during entity metadata check) + // connection needs to be closed + _a.sent(); + throw error_1; + case 14: return [2 /*return*/, this]; + } + }); + }); + }; + /** + * Closes connection with the database. + * Once connection is closed, you cannot use repositories or perform any operations except opening connection again. + */ + Connection.prototype.close = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isConnected) + throw new CannotExecuteNotConnectedError_CannotExecuteNotConnectedError(this.name); + return [4 /*yield*/, this.driver.disconnect()]; + case 1: + _a.sent(); + if (!this.queryResultCache) return [3 /*break*/, 3]; + return [4 /*yield*/, this.queryResultCache.disconnect()]; + case 2: + _a.sent(); + _a.label = 3; + case 3: + ObjectUtils["a" /* ObjectUtils */].assign(this, { isConnected: false }); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates database schema for all entities registered in this connection. + * Can be used only after connection to the database is established. + * + * @param dropBeforeSync If set to true then it drops the database with all its tables and data + */ + Connection.prototype.synchronize = function (dropBeforeSync) { + if (dropBeforeSync === void 0) { dropBeforeSync = false; } + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var schemaBuilder; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isConnected) + throw new CannotExecuteNotConnectedError_CannotExecuteNotConnectedError(this.name); + if (!dropBeforeSync) return [3 /*break*/, 2]; + return [4 /*yield*/, this.dropDatabase()]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + schemaBuilder = this.driver.createSchemaBuilder(); + return [4 /*yield*/, schemaBuilder.build()]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops the database and all its data. + * Be careful with this method on production since this method will erase all your database tables and their data. + * Can be used only after connection to the database is established. + */ + // TODO rename + Connection.prototype.dropDatabase = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, databases_2, databases_1, databases_1_1, database, e_1_1; + var e_1, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + queryRunner = this.createQueryRunner(); + _b.label = 1; + case 1: + _b.trys.push([1, , 13, 15]); + if (!(this.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */] || this.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || this.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */])) return [3 /*break*/, 10]; + databases_2 = this.driver.database ? [this.driver.database] : []; + this.entityMetadatas.forEach(function (metadata) { + if (metadata.database && databases_2.indexOf(metadata.database) === -1) + databases_2.push(metadata.database); + }); + _b.label = 2; + case 2: + _b.trys.push([2, 7, 8, 9]); + databases_1 = Object(tslib_es6["g" /* __values */])(databases_2), databases_1_1 = databases_1.next(); + _b.label = 3; + case 3: + if (!!databases_1_1.done) return [3 /*break*/, 6]; + database = databases_1_1.value; + return [4 /*yield*/, queryRunner.clearDatabase(database)]; + case 4: + _b.sent(); + _b.label = 5; + case 5: + databases_1_1 = databases_1.next(); + return [3 /*break*/, 3]; + case 6: return [3 /*break*/, 9]; + case 7: + e_1_1 = _b.sent(); + e_1 = { error: e_1_1 }; + return [3 /*break*/, 9]; + case 8: + try { + if (databases_1_1 && !databases_1_1.done && (_a = databases_1.return)) _a.call(databases_1); + } + finally { if (e_1) throw e_1.error; } + return [7 /*endfinally*/]; + case 9: return [3 /*break*/, 12]; + case 10: return [4 /*yield*/, queryRunner.clearDatabase()]; + case 11: + _b.sent(); + _b.label = 12; + case 12: return [3 /*break*/, 15]; + case 13: return [4 /*yield*/, queryRunner.release()]; + case 14: + _b.sent(); + return [7 /*endfinally*/]; + case 15: return [2 /*return*/]; + } + }); + }); + }; + /** + * Runs all pending migrations. + * Can be used only after connection to the database is established. + */ + Connection.prototype.runMigrations = function (options) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var migrationExecutor, successMigrations; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isConnected) + throw new CannotExecuteNotConnectedError_CannotExecuteNotConnectedError(this.name); + migrationExecutor = new MigrationExecutor_MigrationExecutor(this); + migrationExecutor.transaction = (options && options.transaction) || "all"; + return [4 /*yield*/, migrationExecutor.executePendingMigrations()]; + case 1: + successMigrations = _a.sent(); + return [2 /*return*/, successMigrations]; + } + }); + }); + }; + /** + * Reverts last executed migration. + * Can be used only after connection to the database is established. + */ + Connection.prototype.undoLastMigration = function (options) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var migrationExecutor; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isConnected) + throw new CannotExecuteNotConnectedError_CannotExecuteNotConnectedError(this.name); + migrationExecutor = new MigrationExecutor_MigrationExecutor(this); + migrationExecutor.transaction = (options && options.transaction) || "all"; + return [4 /*yield*/, migrationExecutor.undoLastMigration()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Lists all migrations and whether they have been run. + * Returns true if there are pending migrations + */ + Connection.prototype.showMigrations = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var migrationExecutor; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isConnected) { + throw new CannotExecuteNotConnectedError_CannotExecuteNotConnectedError(this.name); + } + migrationExecutor = new MigrationExecutor_MigrationExecutor(this); + return [4 /*yield*/, migrationExecutor.showMigrations()]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); + }; + /** + * Checks if entity metadata exist for the given entity class, target name or table name. + */ + Connection.prototype.hasMetadata = function (target) { + return !!this.findMetadata(target); + }; + /** + * Gets entity metadata for the given entity class or schema name. + */ + Connection.prototype.getMetadata = function (target) { + var metadata = this.findMetadata(target); + if (!metadata) + throw new EntityMetadataNotFoundError_EntityMetadataNotFoundError(target); + return metadata; + }; + /** + * Gets repository for the given entity. + */ + Connection.prototype.getRepository = function (target) { + return this.manager.getRepository(target); + }; + /** + * Gets tree repository for the given entity class or name. + * Only tree-type entities can have a TreeRepository, like ones decorated with @Tree decorator. + */ + Connection.prototype.getTreeRepository = function (target) { + return this.manager.getTreeRepository(target); + }; + /** + * Gets mongodb-specific repository for the given entity class or name. + * Works only if connection is mongodb-specific. + */ + Connection.prototype.getMongoRepository = function (target) { + if (!(this.driver instanceof BrowserDisabledDriversDummy["e" /* MongoDriver */])) + throw new Error("You can use getMongoRepository only for MongoDB connections."); + return this.manager.getRepository(target); + }; + /** + * Gets custom entity repository marked with @EntityRepository decorator. + */ + Connection.prototype.getCustomRepository = function (customRepository) { + return this.manager.getCustomRepository(customRepository); + }; + Connection.prototype.transaction = function (isolationOrRunInTransaction, runInTransactionParam) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.manager.transaction(isolationOrRunInTransaction, runInTransactionParam)]; + }); + }); + }; + /** + * Executes raw SQL query and returns raw database results. + */ + Connection.prototype.query = function (query, parameters, queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var usedQueryRunner; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this instanceof BrowserDisabledDriversDummy["f" /* MongoEntityManager */]) + throw new Error("Queries aren't supported by MongoDB."); + if (queryRunner && queryRunner.isReleased) + throw new QueryRunnerProviderAlreadyReleasedError_QueryRunnerProviderAlreadyReleasedError(); + usedQueryRunner = queryRunner || this.createQueryRunner(); + _a.label = 1; + case 1: + _a.trys.push([1, , 3, 6]); + return [4 /*yield*/, usedQueryRunner.query(query, parameters)]; + case 2: return [2 /*return*/, _a.sent()]; // await is needed here because we are using finally + case 3: + if (!!queryRunner) return [3 /*break*/, 5]; + return [4 /*yield*/, usedQueryRunner.release()]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [7 /*endfinally*/]; + case 6: return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new query builder that can be used to build a sql query. + */ + Connection.prototype.createQueryBuilder = function (entityOrRunner, alias, queryRunner) { + if (this instanceof BrowserDisabledDriversDummy["f" /* MongoEntityManager */]) + throw new Error("Query Builder is not supported by MongoDB."); + if (alias) { + var metadata = this.getMetadata(entityOrRunner); + return new SelectQueryBuilder["SelectQueryBuilder"](this, queryRunner) + .select(alias) + .from(metadata.target, alias); + } + else { + return new SelectQueryBuilder["SelectQueryBuilder"](this, entityOrRunner); + } + }; + /** + * Creates a query runner used for perform queries on a single database connection. + * Using query runners you can control your queries to execute using single database connection and + * manually control your database transaction. + * + * Mode is used in replication mode and indicates whatever you want to connect + * to master database or any of slave databases. + * If you perform writes you must use master database, + * if you perform reads you can use slave databases. + */ + Connection.prototype.createQueryRunner = function (mode) { + if (mode === void 0) { mode = "master"; } + var queryRunner = this.driver.createQueryRunner(mode); + var manager = this.createEntityManager(queryRunner); + Object.assign(queryRunner, { manager: manager }); + return queryRunner; + }; + /** + * Gets entity metadata of the junction table (many-to-many table). + */ + Connection.prototype.getManyToManyMetadata = function (entityTarget, relationPropertyPath) { + var relationMetadata = this.getMetadata(entityTarget).findRelationWithPropertyPath(relationPropertyPath); + if (!relationMetadata) + throw new Error("Relation \"" + relationPropertyPath + "\" was not found in " + entityTarget + " entity."); + if (!relationMetadata.isManyToMany) + throw new Error("Relation \"" + entityTarget + "#" + relationPropertyPath + "\" does not have a many-to-many relationship." + + "You can use this method only on many-to-many relations."); + return relationMetadata.junctionEntityMetadata; + }; + /** + * Creates an Entity Manager for the current connection with the help of the EntityManagerFactory. + */ + Connection.prototype.createEntityManager = function (queryRunner) { + return new EntityManagerFactory_EntityManagerFactory().create(this, queryRunner); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Finds exist entity metadata by the given entity class, target name or table name. + */ + Connection.prototype.findMetadata = function (target) { + return this.entityMetadatas.find(function (metadata) { + if (metadata.target === target) + return true; + if (target instanceof EntitySchema["a" /* EntitySchema */]) { + return metadata.name === target.options.name; + } + if (typeof target === "string") { + if (target.indexOf(".") !== -1) { + return metadata.tablePath === target; + } + else { + return metadata.name === target || metadata.tableName === target; + } + } + return false; + }); + }; + /** + * Builds metadatas for all registered classes inside this connection. + */ + Connection.prototype.buildMetadatas = function () { + var connectionMetadataBuilder = new ConnectionMetadataBuilder_ConnectionMetadataBuilder(this); + var entityMetadataValidator = new EntityMetadataValidator_EntityMetadataValidator(); + // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process) + var subscribers = connectionMetadataBuilder.buildSubscribers(this.options.subscribers || []); + ObjectUtils["a" /* ObjectUtils */].assign(this, { subscribers: subscribers }); + // build entity metadatas + var entityMetadatas = connectionMetadataBuilder.buildEntityMetadatas(this.options.entities || []); + ObjectUtils["a" /* ObjectUtils */].assign(this, { entityMetadatas: entityMetadatas }); + // create migration instances + var migrations = connectionMetadataBuilder.buildMigrations(this.options.migrations || []); + ObjectUtils["a" /* ObjectUtils */].assign(this, { migrations: migrations }); + this.driver.database = this.getDatabaseName(); + // validate all created entity metadatas to make sure user created entities are valid and correct + entityMetadataValidator.validateMany(this.entityMetadatas.filter(function (metadata) { return metadata.tableType !== "view"; }), this.driver); + }; + // This database name property is nested for replication configs. + Connection.prototype.getDatabaseName = function () { + var options = this.options; + switch (options.type) { + case "mysql": + case "mariadb": + case "postgres": + case "cockroachdb": + case "mssql": + case "oracle": + return DriverUtils["a" /* DriverUtils */].buildDriverOptions(options.replication ? options.replication.master : options).database; + case "mongodb": + return DriverUtils["a" /* DriverUtils */].buildMongoDBDriverOptions(options).database; + default: + return DriverUtils["a" /* DriverUtils */].buildDriverOptions(options).database; + } + }; + return Connection; +}()); + + +//# sourceMappingURL=Connection.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/ConnectionNotFoundError.js + +/** + * Thrown when consumer tries to get connection that does not exist. + */ +var ConnectionNotFoundError_ConnectionNotFoundError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(ConnectionNotFoundError, _super); + function ConnectionNotFoundError(name) { + var _this = _super.call(this) || this; + _this.name = "ConnectionNotFoundError"; + Object.setPrototypeOf(_this, ConnectionNotFoundError.prototype); + _this.message = "Connection \"" + name + "\" was not found."; + return _this; + } + return ConnectionNotFoundError; +}(Error)); + + +//# sourceMappingURL=ConnectionNotFoundError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/AlreadyHasActiveConnectionError.js + +/** + * Thrown when consumer tries to recreate connection with the same name, but previous connection was not closed yet. + */ +var AlreadyHasActiveConnectionError_AlreadyHasActiveConnectionError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(AlreadyHasActiveConnectionError, _super); + function AlreadyHasActiveConnectionError(connectionName) { + var _this = _super.call(this) || this; + _this.name = "AlreadyHasActiveConnectionError"; + Object.setPrototypeOf(_this, AlreadyHasActiveConnectionError.prototype); + _this.message = "Cannot create a new connection named \"" + connectionName + "\", because connection with such name " + + "already exist and it now has an active connection session."; + return _this; + } + return AlreadyHasActiveConnectionError; +}(Error)); + + +//# sourceMappingURL=AlreadyHasActiveConnectionError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/connection/ConnectionManager.js + + + +/** + * ConnectionManager is used to store and manage multiple orm connections. + * It also provides useful factory methods to simplify connection creation. + */ +var ConnectionManager_ConnectionManager = /** @class */ (function () { + function ConnectionManager() { + // ------------------------------------------------------------------------- + // Protected Properties + // ------------------------------------------------------------------------- + /** + * List of connections registered in this connection manager. + */ + this.connections = []; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Checks if connection with the given name exist in the manager. + */ + ConnectionManager.prototype.has = function (name) { + return !!this.connections.find(function (connection) { return connection.name === name; }); + }; + /** + * Gets registered connection with the given name. + * If connection name is not given then it will get a default connection. + * Throws error if connection with the given name was not found. + */ + ConnectionManager.prototype.get = function (name) { + if (name === void 0) { name = "default"; } + var connection = this.connections.find(function (connection) { return connection.name === name; }); + if (!connection) + throw new ConnectionNotFoundError_ConnectionNotFoundError(name); + return connection; + }; + /** + * Creates a new connection based on the given connection options and registers it in the manager. + * Connection won't be established, you'll need to manually call connect method to establish connection. + */ + ConnectionManager.prototype.create = function (options) { + // check if such connection is already registered + var existConnection = this.connections.find(function (connection) { return connection.name === (options.name || "default"); }); + if (existConnection) { + // if connection is registered and its not closed then throw an error + if (existConnection.isConnected) + throw new AlreadyHasActiveConnectionError_AlreadyHasActiveConnectionError(options.name || "default"); + // if its registered but closed then simply remove it from the manager + this.connections.splice(this.connections.indexOf(existConnection), 1); + } + // create a new connection + var connection = new Connection_Connection(options); + this.connections.push(connection); + return connection; + }; + return ConnectionManager; +}()); + + +//# sourceMappingURL=ConnectionManager.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/platform/BrowserConnectionOptionsReaderDummy.js + +/** + * Dummy class for replacement via `package.json` in browser builds. + * + * If we don't include these functions typeorm will throw an error on runtime + * as well as during webpack builds. + */ +var BrowserConnectionOptionsReaderDummy_ConnectionOptionsEnvReader = /** @class */ (function () { + function ConnectionOptionsEnvReader() { + } + ConnectionOptionsEnvReader.prototype.read = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + throw new Error("Cannot read connection options in a browser context."); + }); + }); + }; + return ConnectionOptionsEnvReader; +}()); + +/** + * Dummy class for replacement via `package.json` in browser builds. + * + * If we don't include these functions typeorm will throw an error on runtime + * as well as during webpack builds. + */ +var BrowserConnectionOptionsReaderDummy_ConnectionOptionsXmlReader = /** @class */ (function () { + function ConnectionOptionsXmlReader() { + } + ConnectionOptionsXmlReader.prototype.read = function (path) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + throw new Error("Cannot read connection options in a browser context."); + }); + }); + }; + return ConnectionOptionsXmlReader; +}()); + +/** + * Dummy class for replacement via `package.json` in browser builds. + * + * If we don't include these functions typeorm will throw an error on runtime + * as well as during webpack builds. + */ +var BrowserConnectionOptionsReaderDummy_ConnectionOptionsYmlReader = /** @class */ (function () { + function ConnectionOptionsYmlReader() { + } + ConnectionOptionsYmlReader.prototype.read = function (path) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + throw new Error("Cannot read connection options in a browser context."); + }); + }); + }; + return ConnectionOptionsYmlReader; +}()); + +/** + * Dummy class for replacement via `package.json` in browser builds. + * + * If we don't include these functions typeorm will throw an error on runtime + * as well as during webpack builds. + */ +var BrowserConnectionOptionsReaderDummy_ConnectionOptionsReader = /** @class */ (function () { + function ConnectionOptionsReader() { + } + ConnectionOptionsReader.prototype.all = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + throw new Error("Cannot read connection options in a browser context."); + }); + }); + }; + ConnectionOptionsReader.prototype.get = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + throw new Error("Cannot read connection options in a browser context."); + }); + }); + }; + ConnectionOptionsReader.prototype.has = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + throw new Error("Cannot read connection options in a browser context."); + }); + }); + }; + return ConnectionOptionsReader; +}()); + + +//# sourceMappingURL=BrowserConnectionOptionsReaderDummy.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/common/EntityTarget.js + + +//# sourceMappingURL=EntityTarget.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/common/ObjectType.js + + +//# sourceMappingURL=ObjectType.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/common/ObjectLiteral.js + + +//# sourceMappingURL=ObjectLiteral.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/common/DeepPartial.js + + +//# sourceMappingURL=DeepPartial.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CannotReflectMethodParameterTypeError.js + +/** + * Thrown when ORM cannot get method parameter's type. + * Basically, when reflect-metadata is not available or tsconfig is not properly setup. + */ +var CannotReflectMethodParameterTypeError_CannotReflectMethodParameterTypeError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CannotReflectMethodParameterTypeError, _super); + function CannotReflectMethodParameterTypeError(target, methodName) { + var _this = _super.call(this) || this; + _this.name = "CannotReflectMethodParameterTypeError"; + Object.setPrototypeOf(_this, CannotReflectMethodParameterTypeError.prototype); + _this.message = "Cannot get reflected type for a \"" + methodName + "\" method's parameter of \"" + target.name + "\" class. " + + "Make sure you have turned on an \"emitDecoratorMetadata\": true option in tsconfig.json. " + + "Also make sure you have imported \"reflect-metadata\" on top of the main entry file in your application."; + return _this; + } + return CannotReflectMethodParameterTypeError; +}(Error)); + + +//# sourceMappingURL=CannotReflectMethodParameterTypeError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js +var LockNotSupportedOnGivenDriverError = __webpack_require__(85); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/ConnectionIsNotSetError.js + +/** + * Thrown when user tries to execute operation that requires connection to be established. + */ +var ConnectionIsNotSetError_ConnectionIsNotSetError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(ConnectionIsNotSetError, _super); + function ConnectionIsNotSetError(dbType) { + var _this = _super.call(this) || this; + _this.name = "ConnectionIsNotSetError"; + Object.setPrototypeOf(_this, ConnectionIsNotSetError.prototype); + _this.message = "Connection with " + dbType + " database is not established. Check connection configuration."; + return _this; + } + return ConnectionIsNotSetError; +}(Error)); + + +//# sourceMappingURL=ConnectionIsNotSetError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/CannotCreateEntityIdMapError.js +var CannotCreateEntityIdMapError = __webpack_require__(151); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/MetadataAlreadyExistsError.js + +/** + */ +var MetadataAlreadyExistsError_MetadataAlreadyExistsError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(MetadataAlreadyExistsError, _super); + function MetadataAlreadyExistsError(metadataType, constructor, propertyName) { + var _this = _super.call(this) || this; + _this.name = "MetadataAlreadyExistsError"; + Object.setPrototypeOf(_this, MetadataAlreadyExistsError.prototype); + _this.message = metadataType + " metadata already exists for the class constructor " + JSON.stringify(constructor) + + (propertyName ? " on property " + propertyName : ". If you previously renamed or moved entity class, make sure" + + " that compiled version of old entity class source wasn't left in the compiler output directory."); + return _this; + } + return MetadataAlreadyExistsError; +}(Error)); + + +//# sourceMappingURL=MetadataAlreadyExistsError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/UpdateValuesMissingError.js +var UpdateValuesMissingError = __webpack_require__(100); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js +var OptimisticLockVersionMismatchError = __webpack_require__(130); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js +var LimitOnUpdateNotSupportedError = __webpack_require__(116); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/PrimaryColumnCannotBeNullableError.js + +var PrimaryColumnCannotBeNullableError_PrimaryColumnCannotBeNullableError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(PrimaryColumnCannotBeNullableError, _super); + function PrimaryColumnCannotBeNullableError(object, propertyName) { + var _this = _super.call(this) || this; + _this.name = "PrimaryColumnCannotBeNullableError"; + Object.setPrototypeOf(_this, PrimaryColumnCannotBeNullableError.prototype); + _this.message = "Primary column " + object.constructor.name + "#" + propertyName + " cannot be nullable. " + + "Its not allowed for primary keys. Try to remove nullable option."; + return _this; + } + return PrimaryColumnCannotBeNullableError; +}(Error)); + + +//# sourceMappingURL=PrimaryColumnCannotBeNullableError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/MissingDeleteDateColumnError.js +var MissingDeleteDateColumnError = __webpack_require__(158); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/NoConnectionForRepositoryError.js + +/** + * Thrown when consumer tries to access repository before connection is established. + */ +var NoConnectionForRepositoryError_NoConnectionForRepositoryError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(NoConnectionForRepositoryError, _super); + function NoConnectionForRepositoryError(connectionName) { + var _this = _super.call(this) || this; + _this.name = "NoConnectionForRepositoryError"; + Object.setPrototypeOf(_this, NoConnectionForRepositoryError.prototype); + _this.message = "Cannot get a Repository for \"" + connectionName + " connection, because connection with the database " + + "is not established yet. Call connection#connect method to establish connection."; + return _this; + } + return NoConnectionForRepositoryError; +}(Error)); + + +//# sourceMappingURL=NoConnectionForRepositoryError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js +var ReturningStatementNotSupportedError = __webpack_require__(72); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/UsingJoinTableIsNotAllowedError.js + +/** + */ +var UsingJoinTableIsNotAllowedError_UsingJoinTableIsNotAllowedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(UsingJoinTableIsNotAllowedError, _super); + function UsingJoinTableIsNotAllowedError(entityMetadata, relation) { + var _this = _super.call(this) || this; + _this.name = "UsingJoinTableIsNotAllowedError"; + Object.setPrototypeOf(_this, UsingJoinTableIsNotAllowedError.prototype); + _this.message = "Using JoinTable on " + entityMetadata.name + "#" + relation.propertyName + " is wrong. " + + (entityMetadata.name + "#" + relation.propertyName + " has " + relation.relationType + " relation, ") + + "however you can use JoinTable only on many-to-many relations."; + return _this; + } + return UsingJoinTableIsNotAllowedError; +}(Error)); + + +//# sourceMappingURL=UsingJoinTableIsNotAllowedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/MissingJoinColumnError.js + +/** + */ +var MissingJoinColumnError_MissingJoinColumnError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(MissingJoinColumnError, _super); + function MissingJoinColumnError(entityMetadata, relation) { + var _this = _super.call(this) || this; + _this.name = "MissingJoinColumnError"; + Object.setPrototypeOf(_this, MissingJoinColumnError.prototype); + if (relation.inverseRelation) { + _this.message = "JoinColumn is missing on both sides of " + entityMetadata.name + "#" + relation.propertyName + " and " + + (relation.inverseEntityMetadata.name + "#" + relation.inverseRelation.propertyName + " one-to-one relationship. ") + + "You need to put JoinColumn decorator on one of the sides."; + } + else { + _this.message = "JoinColumn is missing on " + entityMetadata.name + "#" + relation.propertyName + " one-to-one relationship. " + + "You need to put JoinColumn decorator on it."; + } + return _this; + } + return MissingJoinColumnError; +}(Error)); + + +//# sourceMappingURL=MissingJoinColumnError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/EntityColumnNotFound.js +var EntityColumnNotFound = __webpack_require__(114); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/CannotGetEntityManagerNotConnectedError.js + +/** + * Thrown when consumer tries to access entity manager before connection is established. + */ +var CannotGetEntityManagerNotConnectedError_CannotGetEntityManagerNotConnectedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(CannotGetEntityManagerNotConnectedError, _super); + function CannotGetEntityManagerNotConnectedError(connectionName) { + var _this = _super.call(this) || this; + _this.name = "CannotGetEntityManagerNotConnectedError"; + Object.setPrototypeOf(_this, CannotGetEntityManagerNotConnectedError.prototype); + _this.message = "Cannot get entity manager for \"" + connectionName + "\" connection because connection is not yet established."; + return _this; + } + return CannotGetEntityManagerNotConnectedError; +}(Error)); + + +//# sourceMappingURL=CannotGetEntityManagerNotConnectedError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js +var NoVersionOrUpdateDateColumnError = __webpack_require__(153); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/InsertValuesMissingError.js +var InsertValuesMissingError = __webpack_require__(156); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js +var OptimisticLockCanNotBeUsedError = __webpack_require__(102); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/MetadataWithSuchNameAlreadyExistsError.js + +/** + */ +var MetadataWithSuchNameAlreadyExistsError_MetadataWithSuchNameAlreadyExistsError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(MetadataWithSuchNameAlreadyExistsError, _super); + function MetadataWithSuchNameAlreadyExistsError(metadataType, name) { + var _this = _super.call(this) || this; + _this.name = "MetadataWithSuchNameAlreadyExistsError"; + Object.setPrototypeOf(_this, MetadataWithSuchNameAlreadyExistsError.prototype); + _this.message = metadataType + " metadata with such name " + name + " already exists. " + + "Do you apply decorator twice? Or maybe try to change a name?"; + return _this; + } + return MetadataWithSuchNameAlreadyExistsError; +}(Error)); + + +//# sourceMappingURL=MetadataWithSuchNameAlreadyExistsError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/NamingStrategyNotFoundError.js + +/** + * Thrown when consumer tries to use naming strategy that does not exist. + */ +var NamingStrategyNotFoundError_NamingStrategyNotFoundError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(NamingStrategyNotFoundError, _super); + function NamingStrategyNotFoundError(strategyName, connectionName) { + var _this = _super.call(this) || this; + _this.name = "NamingStrategyNotFoundError"; + Object.setPrototypeOf(_this, NamingStrategyNotFoundError.prototype); + var name = strategyName instanceof Function ? strategyName.name : strategyName; + _this.message = "Naming strategy \"" + name + "\" was not found. Looks like this naming strategy does not " + + ("exist or it was not registered in current \"" + connectionName + "\" connection?"); + return _this; + } + return NamingStrategyNotFoundError; +}(Error)); + + +//# sourceMappingURL=NamingStrategyNotFoundError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js +var PessimisticLockTransactionRequiredError = __webpack_require__(152); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/MissingJoinTableError.js + +/** + */ +var MissingJoinTableError_MissingJoinTableError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(MissingJoinTableError, _super); + function MissingJoinTableError(entityMetadata, relation) { + var _this = _super.call(this) || this; + _this.name = "MissingJoinTableError"; + Object.setPrototypeOf(_this, MissingJoinTableError.prototype); + if (relation.inverseRelation) { + _this.message = "JoinTable is missing on both sides of " + entityMetadata.name + "#" + relation.propertyName + " and " + + (relation.inverseEntityMetadata.name + "#" + relation.inverseRelation.propertyName + " many-to-many relationship. ") + + "You need to put decorator decorator on one of the sides."; + } + else { + _this.message = "JoinTable is missing on " + entityMetadata.name + "#" + relation.propertyName + " many-to-many relationship. " + + "You need to put JoinTable decorator on it."; + } + return _this; + } + return MissingJoinTableError; +}(Error)); + + +//# sourceMappingURL=MissingJoinTableError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js + +/** + */ +var UsingJoinColumnOnlyOnOneSideAllowedError_UsingJoinColumnOnlyOnOneSideAllowedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(UsingJoinColumnOnlyOnOneSideAllowedError, _super); + function UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation) { + var _this = _super.call(this) || this; + _this.name = "UsingJoinColumnOnlyOnOneSideAllowedError"; + Object.setPrototypeOf(_this, UsingJoinColumnOnlyOnOneSideAllowedError.prototype); + _this.message = "Using JoinColumn is allowed only on one side of the one-to-one relationship. " + + ("Both " + entityMetadata.name + "#" + relation.propertyName + " and " + relation.inverseEntityMetadata.name + "#" + relation.inverseRelation.propertyName + " ") + + "has JoinTable decorators. Choose one of them and left JoinTable decorator only on it."; + return _this; + } + return UsingJoinColumnOnlyOnOneSideAllowedError; +}(Error)); + + +//# sourceMappingURL=UsingJoinColumnOnlyOnOneSideAllowedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js + +/** + */ +var UsingJoinTableOnlyOnOneSideAllowedError_UsingJoinTableOnlyOnOneSideAllowedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(UsingJoinTableOnlyOnOneSideAllowedError, _super); + function UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation) { + var _this = _super.call(this) || this; + _this.name = "UsingJoinTableOnlyOnOneSideAllowedError"; + Object.setPrototypeOf(_this, UsingJoinTableOnlyOnOneSideAllowedError.prototype); + _this.message = "Using JoinTable is allowed only on one side of the many-to-many relationship. " + + ("Both " + entityMetadata.name + "#" + relation.propertyName + " and " + relation.inverseEntityMetadata.name + "#" + relation.inverseRelation.propertyName + " ") + + "has JoinTable decorators. Choose one of them and left JoinColumn decorator only on it."; + return _this; + } + return UsingJoinTableOnlyOnOneSideAllowedError; +}(Error)); + + +//# sourceMappingURL=UsingJoinTableOnlyOnOneSideAllowedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/PersistedEntityNotFoundError.js + +/** + * Thrown . Theoretically can't be thrown. + */ +var PersistedEntityNotFoundError_PersistedEntityNotFoundError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(PersistedEntityNotFoundError, _super); + function PersistedEntityNotFoundError() { + var _this = _super.call(this) || this; + _this.name = "PersistedEntityNotFoundError"; + Object.setPrototypeOf(_this, PersistedEntityNotFoundError.prototype); + _this.message = "Internal error. Persisted entity was not found in the list of prepared operated entities."; + return _this; + } + return PersistedEntityNotFoundError; +}(Error)); + + +//# sourceMappingURL=PersistedEntityNotFoundError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/UsingJoinColumnIsNotAllowedError.js + +/** + */ +var UsingJoinColumnIsNotAllowedError_UsingJoinColumnIsNotAllowedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(UsingJoinColumnIsNotAllowedError, _super); + function UsingJoinColumnIsNotAllowedError(entityMetadata, relation) { + var _this = _super.call(this) || this; + _this.name = "UsingJoinColumnIsNotAllowedError"; + Object.setPrototypeOf(_this, UsingJoinColumnIsNotAllowedError.prototype); + _this.message = "Using JoinColumn on " + entityMetadata.name + "#" + relation.propertyName + " is wrong. " + + "You can use JoinColumn only on one-to-one and many-to-one relations."; + return _this; + } + return UsingJoinColumnIsNotAllowedError; +}(Error)); + + +//# sourceMappingURL=UsingJoinColumnIsNotAllowedError.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js + +/** + * Thrown when ORM cannot get column's type automatically. + * Basically, when reflect-metadata is not available or tsconfig is not properly setup. + */ +var ColumnTypeUndefinedError_ColumnTypeUndefinedError = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(ColumnTypeUndefinedError, _super); + function ColumnTypeUndefinedError(object, propertyName) { + var _this = _super.call(this) || this; + _this.name = "ColumnTypeUndefinedError"; + Object.setPrototypeOf(_this, ColumnTypeUndefinedError.prototype); + _this.message = "Column type for " + object.constructor.name + "#" + propertyName + " is not defined and cannot be guessed. " + + "Make sure you have turned on an \"emitDecoratorMetadata\": true option in tsconfig.json. " + + "Also make sure you have imported \"reflect-metadata\" on top of the main entry file in your application (before any entity imported)." + + "If you are using JavaScript instead of TypeScript you must explicitly provide a column type."; + return _this; + } + return ColumnTypeUndefinedError; +}(Error)); + + +//# sourceMappingURL=ColumnTypeUndefinedError.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js +var OffsetWithoutLimitNotSupportedError = __webpack_require__(159); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/error/index.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//# sourceMappingURL=index.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/Column.js + + +/** + * Column decorator is used to mark a specific class property as a table column. + * Only properties decorated with this decorator will be persisted to the database when entity be saved. + */ +function Column(typeOrOptions, options) { + return function (object, propertyName) { + // normalize parameters + var type; + if (typeof typeOrOptions === "string" || typeOrOptions instanceof Function) { + type = typeOrOptions; + } + else if (typeOrOptions) { + options = typeOrOptions; + type = typeOrOptions.type; + } + if (!options) + options = {}; + // if type is not given explicitly then try to guess it + var reflectMetadataType = Reflect && Reflect.getMetadata ? Reflect.getMetadata("design:type", object, propertyName) : undefined; + if (!type && reflectMetadataType) // if type is not given explicitly then try to guess it + type = reflectMetadataType; + // check if there is no type in column options then set type from first function argument, or guessed one + if (!options.type && type) + options.type = type; + // specify HSTORE type if column is HSTORE + if (options.type === "hstore" && !options.hstoreType) + options.hstoreType = reflectMetadataType === Object ? "object" : "string"; + if (typeOrOptions instanceof Function) { // register an embedded + getMetadataArgsStorage().embeddeds.push({ + target: object.constructor, + propertyName: propertyName, + isArray: reflectMetadataType === Array || options.array === true, + prefix: options.prefix !== undefined ? options.prefix : undefined, + type: typeOrOptions + }); + } + else { // register a regular column + // if we still don't have a type then we need to give error to user that type is required + if (!options.type) + throw new ColumnTypeUndefinedError_ColumnTypeUndefinedError(object, propertyName); + // create unique + if (options.unique === true) + getMetadataArgsStorage().uniques.push({ target: object.constructor, columns: [propertyName] }); + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "regular", + options: options + }); + if (options.generated) { + getMetadataArgsStorage().generations.push({ + target: object.constructor, + propertyName: propertyName, + strategy: typeof options.generated === "string" ? options.generated : "increment" + }); + } + } + }; +} + +//# sourceMappingURL=Column.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/CreateDateColumn.js + +/** + * This column will store a creation date of the inserted object. + * Creation date is generated and inserted only once, + * at the first time when you create an object, the value is inserted into the table, and is never touched again. + */ +function CreateDateColumn(options) { + return function (object, propertyName) { + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "createDate", + options: options || {} + }); + }; +} + +//# sourceMappingURL=CreateDateColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/DeleteDateColumn.js + +/** + * This column will store a delete date of the soft-deleted object. + * This date is being updated each time you soft-delete the object. + */ +function DeleteDateColumn(options) { + return function (object, propertyName) { + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "deleteDate", + options: options || {} + }); + }; +} + +//# sourceMappingURL=DeleteDateColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/PrimaryGeneratedColumn.js + +/** + * Column decorator is used to mark a specific class property as a table column. + * Only properties decorated with this decorator will be persisted to the database when entity be saved. + * This column creates an integer PRIMARY COLUMN with generated set to true. + */ +function PrimaryGeneratedColumn(strategyOrOptions, maybeOptions) { + // normalize parameters + var options = {}; + var strategy; + if (strategyOrOptions) { + if (typeof strategyOrOptions === "string") + strategy = strategyOrOptions; + if (strategyOrOptions instanceof Object) { + strategy = "increment"; + Object.assign(options, strategyOrOptions); + } + } + else { + strategy = "increment"; + } + if (maybeOptions instanceof Object) + Object.assign(options, maybeOptions); + return function (object, propertyName) { + // if column type is not explicitly set then determine it based on generation strategy + if (!options.type) { + if (strategy === "increment") { + options.type = Number; + } + else if (strategy === "uuid") { + options.type = "uuid"; + } + else if (strategy === "rowid") { + options.type = "int"; + } + } + // explicitly set a primary and generated to column options + options.primary = true; + // register column metadata args + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "regular", + options: options + }); + // register generated metadata args + getMetadataArgsStorage().generations.push({ + target: object.constructor, + propertyName: propertyName, + strategy: strategy + }); + }; +} + +//# sourceMappingURL=PrimaryGeneratedColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/PrimaryColumn.js + + + +/** + * Column decorator is used to mark a specific class property as a table column. + * Only properties decorated with this decorator will be persisted to the database when entity be saved. + * Primary columns also creates a PRIMARY KEY for this column in a db. + */ +function PrimaryColumn(typeOrOptions, options) { + return function (object, propertyName) { + // normalize parameters + var type; + if (typeof typeOrOptions === "string") { + type = typeOrOptions; + } + else { + options = Object.assign({}, typeOrOptions); + } + if (!options) + options = {}; + // if type is not given explicitly then try to guess it + var reflectMetadataType = Reflect && Reflect.getMetadata ? Reflect.getMetadata("design:type", object, propertyName) : undefined; + if (!type && reflectMetadataType) + type = reflectMetadataType; + // check if there is no type in column options then set type from first function argument, or guessed one + if (!options.type && type) + options.type = type; + // if we still don't have a type then we need to give error to user that type is required + if (!options.type) + throw new ColumnTypeUndefinedError_ColumnTypeUndefinedError(object, propertyName); + // check if column is not nullable, because we cannot allow a primary key to be nullable + if (options.nullable) + throw new PrimaryColumnCannotBeNullableError_PrimaryColumnCannotBeNullableError(object, propertyName); + // explicitly set a primary to column options + options.primary = true; + // create and register a new column metadata + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "regular", + options: options + }); + if (options.generated) { + getMetadataArgsStorage().generations.push({ + target: object.constructor, + propertyName: propertyName, + strategy: typeof options.generated === "string" ? options.generated : "increment" + }); + } + }; +} + +//# sourceMappingURL=PrimaryColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/UpdateDateColumn.js + +/** + * This column will store an update date of the updated object. + * This date is being updated each time you persist the object. + */ +function UpdateDateColumn(options) { + return function (object, propertyName) { + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "updateDate", + options: options ? options : {} + }); + }; +} + +//# sourceMappingURL=UpdateDateColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/VersionColumn.js + +/** + * This column will store a number - version of the entity. + * Every time your entity will be persisted, this number will be increased by one - + * so you can organize visioning and update strategies of your entity. + */ +function VersionColumn(options) { + return function (object, propertyName) { + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "version", + options: options || {} + }); + }; +} + +//# sourceMappingURL=VersionColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/ViewColumn.js + +/** + * ViewColumn decorator is used to mark a specific class property as a view column. + */ +function ViewColumn(options) { + return function (object, propertyName) { + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "regular", + options: options || {} + }); + }; +} + +//# sourceMappingURL=ViewColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/columns/ObjectIdColumn.js + +/** + * Special type of column that is available only for MongoDB database. + * Marks your entity's column to be an object id. + */ +function ObjectIdColumn(options) { + return function (object, propertyName) { + // if column options are not given then create a new empty options + if (!options) + options = {}; + options.primary = true; + if (!options.name) + options.name = "_id"; + // create and register a new column metadata + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "objectId", + options: options + }); + }; +} + +//# sourceMappingURL=ObjectIdColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/AfterInsert.js + + +/** + * Calls a method on which this decorator is applied after this entity insertion. + */ +function AfterInsert() { + return function (object, propertyName) { + getMetadataArgsStorage().entityListeners.push({ + target: object.constructor, + propertyName: propertyName, + type: EventListenerTypes.AFTER_INSERT + }); + }; +} + +//# sourceMappingURL=AfterInsert.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/AfterLoad.js + + +/** + * Calls a method on which this decorator is applied after entity is loaded. + */ +function AfterLoad() { + return function (object, propertyName) { + getMetadataArgsStorage().entityListeners.push({ + target: object.constructor, + propertyName: propertyName, + type: EventListenerTypes.AFTER_LOAD + }); + }; +} + +//# sourceMappingURL=AfterLoad.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/AfterRemove.js + + +/** + * Calls a method on which this decorator is applied after this entity removal. + */ +function AfterRemove() { + return function (object, propertyName) { + getMetadataArgsStorage().entityListeners.push({ + target: object.constructor, + propertyName: propertyName, + type: EventListenerTypes.AFTER_REMOVE + }); + }; +} + +//# sourceMappingURL=AfterRemove.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/AfterUpdate.js + + +/** + * Calls a method on which this decorator is applied after this entity update. + */ +function AfterUpdate() { + return function (object, propertyName) { + getMetadataArgsStorage().entityListeners.push({ + target: object.constructor, + propertyName: propertyName, + type: EventListenerTypes.AFTER_UPDATE + }); + }; +} + +//# sourceMappingURL=AfterUpdate.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/BeforeInsert.js + + +/** + * Calls a method on which this decorator is applied before this entity insertion. + */ +function BeforeInsert() { + return function (object, propertyName) { + getMetadataArgsStorage().entityListeners.push({ + target: object.constructor, + propertyName: propertyName, + type: EventListenerTypes.BEFORE_INSERT + }); + }; +} + +//# sourceMappingURL=BeforeInsert.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/BeforeRemove.js + + +/** + * Calls a method on which this decorator is applied before this entity removal. + */ +function BeforeRemove() { + return function (object, propertyName) { + getMetadataArgsStorage().entityListeners.push({ + target: object.constructor, + propertyName: propertyName, + type: EventListenerTypes.BEFORE_REMOVE + }); + }; +} + +//# sourceMappingURL=BeforeRemove.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/BeforeUpdate.js + + +/** + * Calls a method on which this decorator is applied before this entity update. + */ +function BeforeUpdate() { + return function (object, propertyName) { + getMetadataArgsStorage().entityListeners.push({ + target: object.constructor, + propertyName: propertyName, + type: EventListenerTypes.BEFORE_UPDATE + }); + }; +} + +//# sourceMappingURL=BeforeUpdate.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/listeners/EventSubscriber.js + +/** + * Classes decorated with this decorator will listen to ORM events and their methods will be triggered when event + * occurs. Those classes must implement EventSubscriberInterface interface. + */ +function EventSubscriber() { + return function (target) { + getMetadataArgsStorage().entitySubscribers.push({ + target: target + }); + }; +} + +//# sourceMappingURL=EventSubscriber.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/options/ColumnOptions.js + + +//# sourceMappingURL=ColumnOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/options/IndexOptions.js + + +//# sourceMappingURL=IndexOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/options/JoinColumnOptions.js + + +//# sourceMappingURL=JoinColumnOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/options/JoinTableOptions.js + + +//# sourceMappingURL=JoinTableOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/options/RelationOptions.js + + +//# sourceMappingURL=RelationOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/options/EntityOptions.js + + +//# sourceMappingURL=EntityOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/options/ValueTransformer.js + + +//# sourceMappingURL=ValueTransformer.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/JoinColumn.js + +/** + * JoinColumn decorator used on one-to-one relations to specify owner side of relationship. + * It also can be used on both one-to-one and many-to-one relations to specify custom column name + * or custom referenced column. + */ +function JoinColumn(optionsOrOptionsArray) { + return function (object, propertyName) { + var options = Array.isArray(optionsOrOptionsArray) ? optionsOrOptionsArray : [optionsOrOptionsArray || {}]; + options.forEach(function (options) { + getMetadataArgsStorage().joinColumns.push({ + target: object.constructor, + propertyName: propertyName, + name: options.name, + referencedColumnName: options.referencedColumnName + }); + }); + }; +} + +//# sourceMappingURL=JoinColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/JoinTable.js + +/** + * JoinTable decorator is used in many-to-many relationship to specify owner side of relationship. + * Its also used to set a custom junction table's name, column names and referenced columns. + */ +function JoinTable(options) { + return function (object, propertyName) { + options = options || {}; + getMetadataArgsStorage().joinTables.push({ + target: object.constructor, + propertyName: propertyName, + name: options.name, + joinColumns: (options && options.joinColumn ? [options.joinColumn] : options.joinColumns), + inverseJoinColumns: (options && options.inverseJoinColumn ? [options.inverseJoinColumn] : options.inverseJoinColumns), + schema: options && options.schema ? options.schema : undefined, + database: options && options.database ? options.database : undefined, + }); + }; +} + +//# sourceMappingURL=JoinTable.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/ManyToMany.js + +/** + * Many-to-many is a type of relationship when Entity1 can have multiple instances of Entity2, and Entity2 can have + * multiple instances of Entity1. To achieve it, this type of relation creates a junction table, where it storage + * entity1 and entity2 ids. This is owner side of the relationship. + */ +function ManyToMany(typeFunctionOrTarget, inverseSideOrOptions, options) { + // normalize parameters + var inverseSideProperty; + if (typeof inverseSideOrOptions === "object") { + options = inverseSideOrOptions; + } + else { + inverseSideProperty = inverseSideOrOptions; + } + return function (object, propertyName) { + if (!options) + options = {}; + // now try to determine it its lazy relation + var isLazy = options.lazy === true; + if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination + var reflectedType = Reflect.getMetadata("design:type", object, propertyName); + if (reflectedType && typeof reflectedType.name === "string" && reflectedType.name.toLowerCase() === "promise") + isLazy = true; + } + getMetadataArgsStorage().relations.push({ + target: object.constructor, + propertyName: propertyName, + // propertyType: reflectedType, + relationType: "many-to-many", + isLazy: isLazy, + type: typeFunctionOrTarget, + inverseSideProperty: inverseSideProperty, + options: options + }); + }; +} + +//# sourceMappingURL=ManyToMany.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/ManyToOne.js + +/** + * A many-to-one relation allows creating the type of relation where Entity1 can have a single instance of Entity2, but + * Entity2 can have multiple instances of Entity1. Entity1 is the owner of the relationship, and stores the id of + * Entity2 on its side of the relation. + */ +function ManyToOne(typeFunctionOrTarget, inverseSideOrOptions, options) { + // Normalize parameters. + var inverseSideProperty; + if (typeof inverseSideOrOptions === "object") { + options = inverseSideOrOptions; + } + else { + inverseSideProperty = inverseSideOrOptions; + } + return function (object, propertyName) { + if (!options) + options = {}; + // Now try to determine if it is a lazy relation. + var isLazy = options && options.lazy === true ? true : false; + if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination + var reflectedType = Reflect.getMetadata("design:type", object, propertyName); + if (reflectedType && typeof reflectedType.name === "string" && reflectedType.name.toLowerCase() === "promise") + isLazy = true; + } + getMetadataArgsStorage().relations.push({ + target: object.constructor, + propertyName: propertyName, + // propertyType: reflectedType, + relationType: "many-to-one", + isLazy: isLazy, + type: typeFunctionOrTarget, + inverseSideProperty: inverseSideProperty, + options: options + }); + }; +} + +//# sourceMappingURL=ManyToOne.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/OneToMany.js + +/** + * A one-to-many relation allows creating the type of relation where Entity1 can have multiple instances of Entity2, + * but Entity2 has only one Entity1. Entity2 is the owner of the relationship, and stores the id of Entity1 on its + * side of the relation. + */ +function OneToMany(typeFunctionOrTarget, inverseSide, options) { + return function (object, propertyName) { + if (!options) + options = {}; + // Now try to determine if it is a lazy relation. + var isLazy = options && options.lazy === true ? true : false; + if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination + var reflectedType = Reflect.getMetadata("design:type", object, propertyName); + if (reflectedType && typeof reflectedType.name === "string" && reflectedType.name.toLowerCase() === "promise") + isLazy = true; + } + getMetadataArgsStorage().relations.push({ + target: object.constructor, + propertyName: propertyName, + // propertyType: reflectedType, + isLazy: isLazy, + relationType: "one-to-many", + type: typeFunctionOrTarget, + inverseSideProperty: inverseSide, + options: options + }); + }; +} + +//# sourceMappingURL=OneToMany.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/OneToOne.js + +/** + * One-to-one relation allows to create direct relation between two entities. Entity1 have only one Entity2. + * Entity1 is an owner of the relationship, and storages Entity1 id on its own side. + */ +function OneToOne(typeFunctionOrTarget, inverseSideOrOptions, options) { + // normalize parameters + var inverseSideProperty; + if (typeof inverseSideOrOptions === "object") { + options = inverseSideOrOptions; + } + else { + inverseSideProperty = inverseSideOrOptions; + } + return function (object, propertyName) { + if (!options) + options = {}; + // now try to determine it its lazy relation + var isLazy = options && options.lazy === true ? true : false; + if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination + var reflectedType = Reflect.getMetadata("design:type", object, propertyName); + if (reflectedType && typeof reflectedType.name === "string" && reflectedType.name.toLowerCase() === "promise") + isLazy = true; + } + getMetadataArgsStorage().relations.push({ + target: object.constructor, + propertyName: propertyName, + // propertyType: reflectedType, + isLazy: isLazy, + relationType: "one-to-one", + type: typeFunctionOrTarget, + inverseSideProperty: inverseSideProperty, + options: options + }); + }; +} + +//# sourceMappingURL=OneToOne.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/RelationCount.js + +/** + * Holds a number of children in the closure table of the column. + * + * @deprecated Do not use this decorator, it may be removed in the future versions + */ +function RelationCount(relation, alias, queryBuilderFactory) { + return function (object, propertyName) { + getMetadataArgsStorage().relationCounts.push({ + target: object.constructor, + propertyName: propertyName, + relation: relation, + alias: alias, + queryBuilderFactory: queryBuilderFactory + }); + }; +} + +//# sourceMappingURL=RelationCount.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/relations/RelationId.js + +/** + * Special decorator used to extract relation id into separate entity property. + * + * @experimental + */ +function RelationId(relation, alias, queryBuilderFactory) { + return function (object, propertyName) { + getMetadataArgsStorage().relationIds.push({ + target: object.constructor, + propertyName: propertyName, + relation: relation, + alias: alias, + queryBuilderFactory: queryBuilderFactory + }); + }; +} + +//# sourceMappingURL=RelationId.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/entity/Entity.js + +/** + * This decorator is used to mark classes that will be an entity (table or document depend on database type). + * Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it. + */ +function Entity(nameOrOptions, maybeOptions) { + var options = (typeof nameOrOptions === "object" ? nameOrOptions : maybeOptions) || {}; + var name = typeof nameOrOptions === "string" ? nameOrOptions : options.name; + return function (target) { + getMetadataArgsStorage().tables.push({ + target: target, + name: name, + type: "regular", + orderBy: options.orderBy ? options.orderBy : undefined, + engine: options.engine ? options.engine : undefined, + database: options.database ? options.database : undefined, + schema: options.schema ? options.schema : undefined, + synchronize: options.synchronize, + withoutRowid: options.withoutRowid + }); + }; +} + +//# sourceMappingURL=Entity.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/entity/ChildEntity.js + +/** + * Special type of the table used in the single-table inherited tables. + */ +function ChildEntity(discriminatorValue) { + return function (target) { + // register a table metadata + getMetadataArgsStorage().tables.push({ + target: target, + type: "entity-child", + }); + // register discriminator value if it was provided + if (typeof discriminatorValue !== 'undefined') { + getMetadataArgsStorage().discriminatorValues.push({ + target: target, + value: discriminatorValue + }); + } + }; +} + +//# sourceMappingURL=ChildEntity.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/entity/TableInheritance.js + +/** + * Sets for entity to use table inheritance pattern. + */ +function TableInheritance(options) { + return function (target) { + getMetadataArgsStorage().inheritances.push({ + target: target, + pattern: options && options.pattern ? options.pattern : "STI", + column: options && options.column ? typeof options.column === "string" ? { name: options.column } : options.column : undefined + }); + }; +} + +//# sourceMappingURL=TableInheritance.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/entity-view/ViewEntity.js + +/** + * This decorator is used to mark classes that will be an entity view. + * Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it. + */ +function ViewEntity(nameOrOptions, maybeOptions) { + var options = (typeof nameOrOptions === "object" ? nameOrOptions : maybeOptions) || {}; + var name = typeof nameOrOptions === "string" ? nameOrOptions : options.name; + return function (target) { + getMetadataArgsStorage().tables.push({ + target: target, + name: name, + expression: options.expression, + type: "view", + database: options.database ? options.database : undefined, + schema: options.schema ? options.schema : undefined, + synchronize: options.synchronize === false ? false : true, + materialized: !!options.materialized + }); + }; +} + +//# sourceMappingURL=ViewEntity.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/transaction/Transaction.js + + +function Transaction(connectionOrOptions) { + return function (target, methodName, descriptor) { + // save original method - we gonna need it + var originalMethod = descriptor.value; + // override method descriptor with proxy method + descriptor.value = function () { + var _this = this; + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var connectionName = "default"; + var isolationLevel = undefined; + if (connectionOrOptions) { + if (typeof connectionOrOptions === "string") { + connectionName = connectionOrOptions; + } + else { + if (connectionOrOptions.connectionName) { + connectionName = connectionOrOptions.connectionName; + } + if (connectionOrOptions.isolation) { + isolationLevel = connectionOrOptions.isolation; + } + } + } + var transactionCallback = function (entityManager) { + var argsWithInjectedTransactionManagerAndRepositories; + // filter all @TransactionManager() and @TransactionRepository() decorator usages for this method + var transactionEntityManagerMetadatas = getMetadataArgsStorage() + .filterTransactionEntityManagers(target.constructor, methodName) + .reverse(); + var transactionRepositoryMetadatas = getMetadataArgsStorage() + .filterTransactionRepository(target.constructor, methodName) + .reverse(); + // if there are @TransactionManager() decorator usages the inject them + if (transactionEntityManagerMetadatas.length > 0) { + argsWithInjectedTransactionManagerAndRepositories = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(args)); + // replace method params with injection of transactionEntityManager + transactionEntityManagerMetadatas.forEach(function (metadata) { + argsWithInjectedTransactionManagerAndRepositories.splice(metadata.index, 0, entityManager); + }); + } + else if (transactionRepositoryMetadatas.length === 0) { // otherwise if there's no transaction repositories in use, inject it as a first parameter + argsWithInjectedTransactionManagerAndRepositories = Object(tslib_es6["f" /* __spreadArray */])([entityManager], Object(tslib_es6["e" /* __read */])(args)); + } + else { + argsWithInjectedTransactionManagerAndRepositories = Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(args)); + } + // for every usage of @TransactionRepository decorator + transactionRepositoryMetadatas.forEach(function (metadata) { + var repositoryInstance; + // detect type of the repository and get instance from transaction entity manager + switch (metadata.repositoryType) { + case Repository_Repository: + repositoryInstance = entityManager.getRepository(metadata.entityType); + break; + case BrowserDisabledDriversDummy["h" /* MongoRepository */]: + repositoryInstance = entityManager.getMongoRepository(metadata.entityType); + break; + case TreeRepository_TreeRepository: + repositoryInstance = entityManager.getTreeRepository(metadata.entityType); + break; + // if not the TypeORM's ones, there must be custom repository classes + default: + repositoryInstance = entityManager.getCustomRepository(metadata.repositoryType); + } + // replace method param with injection of repository instance + argsWithInjectedTransactionManagerAndRepositories.splice(metadata.index, 0, repositoryInstance); + }); + return originalMethod.apply(_this, argsWithInjectedTransactionManagerAndRepositories); + }; + if (isolationLevel) { + return getConnection(connectionName).manager.transaction(isolationLevel, transactionCallback); + } + else { + return getConnection(connectionName).manager.transaction(transactionCallback); + } + }; + }; +} + +//# sourceMappingURL=Transaction.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/transaction/TransactionManager.js + +/** + * Injects transaction's entity manager into the method wrapped with @Transaction decorator. + */ +function TransactionManager() { + return function (object, methodName, index) { + getMetadataArgsStorage().transactionEntityManagers.push({ + target: object.constructor, + methodName: methodName, + index: index, + }); + }; +} + +//# sourceMappingURL=TransactionManager.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/transaction/TransactionRepository.js + + +/** + * Injects transaction's repository into the method wrapped with @Transaction decorator. + */ +function TransactionRepository(entityType) { + return function (object, methodName, index) { + // get repository type + var repositoryType; + try { + repositoryType = Reflect.getOwnMetadata("design:paramtypes", object, methodName)[index]; + } + catch (err) { + throw new CannotReflectMethodParameterTypeError_CannotReflectMethodParameterTypeError(object.constructor, methodName); + } + getMetadataArgsStorage().transactionRepositories.push({ + target: object.constructor, + methodName: methodName, + index: index, + repositoryType: repositoryType, + entityType: entityType, + }); + }; +} + +//# sourceMappingURL=TransactionRepository.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/tree/TreeLevelColumn.js + +/** + * Creates a "level"/"length" column to the table that holds a closure table. + */ +function TreeLevelColumn() { + return function (object, propertyName) { + getMetadataArgsStorage().columns.push({ + target: object.constructor, + propertyName: propertyName, + mode: "treeLevel", + options: {} + }); + }; +} + +//# sourceMappingURL=TreeLevelColumn.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/tree/TreeParent.js + +/** + * Marks a entity property as a parent of the tree. + * "Tree parent" indicates who owns (is a parent) of this entity in tree structure. + */ +function TreeParent() { + return function (object, propertyName) { + // now try to determine it its lazy relation + var reflectedType = Reflect && Reflect.getMetadata ? Reflect.getMetadata("design:type", object, propertyName) : undefined; + var isLazy = (reflectedType && typeof reflectedType.name === "string" && reflectedType.name.toLowerCase() === "promise") || false; + getMetadataArgsStorage().relations.push({ + isTreeParent: true, + target: object.constructor, + propertyName: propertyName, + isLazy: isLazy, + relationType: "many-to-one", + type: function () { return object.constructor; }, + options: {} + }); + }; +} + +//# sourceMappingURL=TreeParent.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/tree/TreeChildren.js + +/** + * Marks a entity property as a children of the tree. + * "Tree children" will contain all children (bind) of this entity. + */ +function TreeChildren(options) { + return function (object, propertyName) { + if (!options) + options = {}; + // now try to determine it its lazy relation + var reflectedType = Reflect && Reflect.getMetadata ? Reflect.getMetadata("design:type", object, propertyName) : undefined; + var isLazy = (reflectedType && typeof reflectedType.name === "string" && reflectedType.name.toLowerCase() === "promise") || false; + // add one-to-many relation for this + getMetadataArgsStorage().relations.push({ + isTreeChildren: true, + target: object.constructor, + propertyName: propertyName, + isLazy: isLazy, + relationType: "one-to-many", + type: function () { return object.constructor; }, + options: options + }); + }; +} + +//# sourceMappingURL=TreeChildren.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/tree/Tree.js + +/** + * Marks entity to work like a tree. + * Tree pattern that will be used for the tree entity should be specified. + * @TreeParent decorator must be used in tree entities. + * TreeRepository can be used to manipulate with tree entities. + */ +function Tree(type, options) { + return function (target) { + getMetadataArgsStorage().trees.push({ + target: target, + type: type, + options: type === "closure-table" ? options : undefined + }); + }; +} + +//# sourceMappingURL=Tree.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/Index.js + +/** + * Creates a database index. + * Can be used on entity property or on entity. + * Can create indices with composite columns when used on entity. + */ +function Index(nameOrFieldsOrOptions, maybeFieldsOrOptions, maybeOptions) { + // normalize parameters + var name = typeof nameOrFieldsOrOptions === "string" ? nameOrFieldsOrOptions : undefined; + var fields = typeof nameOrFieldsOrOptions === "string" ? maybeFieldsOrOptions : nameOrFieldsOrOptions; + var options = (typeof nameOrFieldsOrOptions === "object" && !Array.isArray(nameOrFieldsOrOptions)) ? nameOrFieldsOrOptions : maybeOptions; + if (!options) + options = (typeof maybeFieldsOrOptions === "object" && !Array.isArray(maybeFieldsOrOptions)) ? maybeFieldsOrOptions : maybeOptions; + return function (clsOrObject, propertyName) { + getMetadataArgsStorage().indices.push({ + target: propertyName ? clsOrObject.constructor : clsOrObject, + name: name, + columns: propertyName ? [propertyName] : fields, + synchronize: options && options.synchronize === false ? false : true, + where: options ? options.where : undefined, + unique: options && options.unique ? true : false, + spatial: options && options.spatial ? true : false, + fulltext: options && options.fulltext ? true : false, + parser: options ? options.parser : undefined, + sparse: options && options.sparse ? true : false, + background: options && options.background ? true : false, + expireAfterSeconds: options ? options.expireAfterSeconds : undefined + }); + }; +} + +//# sourceMappingURL=Index.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/Unique.js + +/** + * Composite unique constraint must be set on entity classes and must specify entity's fields to be unique. + */ +function Unique(nameOrFields, maybeFields) { + var name = typeof nameOrFields === "string" ? nameOrFields : undefined; + var fields = typeof nameOrFields === "string" ? maybeFields : nameOrFields; + return function (clsOrObject, propertyName) { + var columns = fields; + if (propertyName !== undefined) { + switch (typeof (propertyName)) { + case "string": + columns = [propertyName]; + break; + case "symbol": + columns = [propertyName.toString()]; + break; + } + } + var args = { + target: propertyName ? clsOrObject.constructor : clsOrObject, + name: name, + columns: columns, + }; + getMetadataArgsStorage().uniques.push(args); + }; +} + +//# sourceMappingURL=Unique.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/Check.js + +/** + * Creates a database check. + * Can be used on entity property or on entity. + * Can create checks with composite columns when used on entity. + */ +function Check(nameOrExpression, maybeExpression) { + var name = maybeExpression ? nameOrExpression : undefined; + var expression = maybeExpression ? maybeExpression : nameOrExpression; + if (!expression) + throw new Error("Check expression is required"); + return function (clsOrObject, propertyName) { + getMetadataArgsStorage().checks.push({ + target: propertyName ? clsOrObject.constructor : clsOrObject, + name: name, + expression: expression + }); + }; +} + +//# sourceMappingURL=Check.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/Exclusion.js + +/** + * Creates a database exclusion. + * Can be used on entity. + * Can create exclusions with composite columns when used on entity. + */ +function Exclusion(nameOrExpression, maybeExpression) { + var name = maybeExpression ? nameOrExpression : undefined; + var expression = maybeExpression ? maybeExpression : nameOrExpression; + if (!expression) + throw new Error("Exclusion expression is required"); + return function (clsOrObject, propertyName) { + getMetadataArgsStorage().exclusions.push({ + target: propertyName ? clsOrObject.constructor : clsOrObject, + name: name, + expression: expression + }); + }; +} + +//# sourceMappingURL=Exclusion.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/Generated.js + +/** + * Marks a column to generate a value on entity insertion. + * There are three types of generation strategy - increment, uuid and rowid (cockroachdb only). + * Increment uses a number which increases by one on each insertion. + * Uuid generates a special UUID token. + * Rowid supports only in CockroachDB and uses `unique_rowid()` function + * + * Note, some databases do not support non-primary generation columns. + */ +function Generated(strategy) { + if (strategy === void 0) { strategy = "increment"; } + return function (object, propertyName) { + getMetadataArgsStorage().generations.push({ + target: object.constructor, + propertyName: propertyName, + strategy: strategy + }); + }; +} + +//# sourceMappingURL=Generated.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/decorator/EntityRepository.js + +/** + * Used to declare a class as a custom repository. + * Custom repository can manage some specific entity or just be generic. + * Custom repository optionally can extend AbstractRepository, Repository or TreeRepository. + */ +function EntityRepository(entity) { + return function (target) { + getMetadataArgsStorage().entityRepositories.push({ + target: target, + entity: entity, + }); + }; +} + +//# sourceMappingURL=EntityRepository.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/find-options/FindOperator.js +var FindOperator = __webpack_require__(9); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/Any.js + +/** + * Find Options Operator. + * Example: { someField: Any([...]) } + */ +function Any(value) { + return new FindOperator["a" /* FindOperator */]("any", value); +} + +//# sourceMappingURL=Any.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/Between.js + +/** + * Find Options Operator. + * Example: { someField: Between(x, y) } + */ +function Between(from, to) { + return new FindOperator["a" /* FindOperator */]("between", [from, to], true, true); +} + +//# sourceMappingURL=Between.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/Equal.js + +/** + * Find Options Operator. + * Example: { someField: Equal("value") } + */ +function Equal(value) { + return new FindOperator["a" /* FindOperator */]("equal", value); +} + +//# sourceMappingURL=Equal.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/find-options/operator/In.js +var In = __webpack_require__(155); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/IsNull.js + +/** + * Find Options Operator. + * Example: { someField: IsNull() } + */ +function IsNull() { + return new FindOperator["a" /* FindOperator */]("isNull", undefined, false); +} + +//# sourceMappingURL=IsNull.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/LessThan.js + +/** + * Find Options Operator. + * Example: { someField: LessThan(10) } + */ +function LessThan(value) { + return new FindOperator["a" /* FindOperator */]("lessThan", value); +} + +//# sourceMappingURL=LessThan.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/LessThanOrEqual.js + +/** + * Find Options Operator. + * Example: { someField: LessThanOrEqual(10) } + */ +function LessThanOrEqual(value) { + return new FindOperator["a" /* FindOperator */]("lessThanOrEqual", value); +} + +//# sourceMappingURL=LessThanOrEqual.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/ILike.js + +/** + * Find Options Operator. + * Example: { someField: ILike("%SOME string%") } + */ +function ILike(value) { + return new FindOperator["a" /* FindOperator */]("ilike", value); +} + +//# sourceMappingURL=ILike.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/Like.js + +/** + * Find Options Operator. + * Example: { someField: Like("%some sting%") } + */ +function Like(value) { + return new FindOperator["a" /* FindOperator */]("like", value); +} + +//# sourceMappingURL=Like.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/MoreThan.js + +/** + * Find Options Operator. + * Example: { someField: MoreThan(10) } + */ +function MoreThan(value) { + return new FindOperator["a" /* FindOperator */]("moreThan", value); +} + +//# sourceMappingURL=MoreThan.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/MoreThanOrEqual.js + +/** + * Find Options Operator. + * Example: { someField: MoreThanOrEqual(10) } + */ +function MoreThanOrEqual(value) { + return new FindOperator["a" /* FindOperator */]("moreThanOrEqual", value); +} + +//# sourceMappingURL=MoreThanOrEqual.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/Not.js + +/** + * Find Options Operator. + * Used to negotiate expression. + * Example: { title: not("hello") } will return entities where title not equal to "hello". + */ +function Not(value) { + return new FindOperator["a" /* FindOperator */]("not", value); +} + +//# sourceMappingURL=Not.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/operator/Raw.js + +function Raw(valueOrSqlGenerator, sqlGeneratorParameters) { + if (typeof valueOrSqlGenerator !== 'function') { + return new FindOperator["a" /* FindOperator */]("raw", valueOrSqlGenerator, false); + } + return new FindOperator["a" /* FindOperator */]("raw", [], true, true, valueOrSqlGenerator, sqlGeneratorParameters); +} + +//# sourceMappingURL=Raw.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/FindConditions.js + + +//# sourceMappingURL=FindConditions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/FindManyOptions.js + + +//# sourceMappingURL=FindManyOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/FindOneOptions.js + + +//# sourceMappingURL=FindOneOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/FindOperatorType.js + + +//# sourceMappingURL=FindOperatorType.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/JoinOptions.js + + +//# sourceMappingURL=JoinOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/find-options/OrderByCondition.js + + +//# sourceMappingURL=OrderByCondition.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/logger/Logger.js + + +//# sourceMappingURL=Logger.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/logger/LoggerOptions.js + + +//# sourceMappingURL=LoggerOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/repository/BaseEntity.js + + + +/** + * Base abstract entity for all entities, used in ActiveRecord patterns. + */ +var BaseEntity_BaseEntity = /** @class */ (function () { + function BaseEntity() { + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Checks if entity has an id. + * If entity composite compose ids, it will check them all. + */ + BaseEntity.prototype.hasId = function () { + return this.constructor.getRepository().hasId(this); + }; + /** + * Saves current entity in the database. + * If entity does not exist in the database then inserts, otherwise updates. + */ + BaseEntity.prototype.save = function (options) { + return this.constructor.getRepository().save(this, options); + }; + /** + * Removes current entity from the database. + */ + BaseEntity.prototype.remove = function (options) { + return this.constructor.getRepository().remove(this, options); + }; + /** + * Records the delete date of current entity. + */ + BaseEntity.prototype.softRemove = function (options) { + return this.constructor.getRepository().softRemove(this, options); + }; + /** + * Recovers a given entity in the database. + */ + BaseEntity.prototype.recover = function (options) { + return this.constructor.getRepository().recover(this, options); + }; + /** + * Reloads entity data from the database. + */ + BaseEntity.prototype.reload = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var base, newestEntity; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + base = this.constructor; + return [4 /*yield*/, base.getRepository().findOneOrFail(base.getId(this))]; + case 1: + newestEntity = _a.sent(); + ObjectUtils["a" /* ObjectUtils */].assign(this, newestEntity); + return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Public Static Methods + // ------------------------------------------------------------------------- + /** + * Sets connection to be used by entity. + */ + BaseEntity.useConnection = function (connection) { + this.usedConnection = connection; + }; + /** + * Gets current entity's Repository. + */ + BaseEntity.getRepository = function () { + var connection = this.usedConnection || getConnection(); + return connection.getRepository(this); + }; + Object.defineProperty(BaseEntity, "target", { + /** + * Returns object that is managed by this repository. + * If this repository manages entity from schema, + * then it returns a name of that schema instead. + */ + get: function () { + return this.getRepository().target; + }, + enumerable: false, + configurable: true + }); + /** + * Checks entity has an id. + * If entity composite compose ids, it will check them all. + */ + BaseEntity.hasId = function (entity) { + return this.getRepository().hasId(entity); + }; + /** + * Gets entity mixed id. + */ + BaseEntity.getId = function (entity) { + return this.getRepository().getId(entity); + }; + /** + * Creates a new query builder that can be used to build a sql query. + */ + BaseEntity.createQueryBuilder = function (alias) { + return this.getRepository().createQueryBuilder(alias); + }; + /** + * Creates a new entity instance and copies all entity properties from this object into a new entity. + * Note that it copies only properties that present in entity schema. + */ + BaseEntity.create = function (entityOrEntities) { + return this.getRepository().create(entityOrEntities); + }; + /** + * Merges multiple entities (or entity-like objects) into a given entity. + */ + BaseEntity.merge = function (mergeIntoEntity) { + var _a; + var entityLikes = []; + for (var _i = 1; _i < arguments.length; _i++) { + entityLikes[_i - 1] = arguments[_i]; + } + return (_a = this.getRepository()).merge.apply(_a, Object(tslib_es6["f" /* __spreadArray */])([mergeIntoEntity], Object(tslib_es6["e" /* __read */])(entityLikes))); + }; + /** + * Creates a new entity from the given plain javascript object. If entity already exist in the database, then + * it loads it (and everything related to it), replaces all values with the new ones from the given object + * and returns this new entity. This new entity is actually a loaded from the db entity with all properties + * replaced from the new object. + * + * Note that given entity-like object must have an entity id / primary key to find entity by. + * Returns undefined if entity with given id was not found. + */ + BaseEntity.preload = function (entityLike) { + return this.getRepository().preload(entityLike); + }; + /** + * Saves one or many given entities. + */ + BaseEntity.save = function (entityOrEntities, options) { + return this.getRepository().save(entityOrEntities, options); + }; + /** + * Removes one or many given entities. + */ + BaseEntity.remove = function (entityOrEntities, options) { + return this.getRepository().remove(entityOrEntities, options); + }; + /** + * Records the delete date of one or many given entities. + */ + BaseEntity.softRemove = function (entityOrEntities, options) { + return this.getRepository().softRemove(entityOrEntities, options); + }; + /** + * Inserts a given entity into the database. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient INSERT query. + * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted. + */ + BaseEntity.insert = function (entity, options) { + return this.getRepository().insert(entity, options); + }; + /** + * Updates entity partially. Entity can be found by a given conditions. + * Unlike save method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient UPDATE query. + * Does not check if entity exist in the database. + */ + BaseEntity.update = function (criteria, partialEntity, options) { + return this.getRepository().update(criteria, partialEntity, options); + }; + /** + * Deletes entities by a given criteria. + * Unlike remove method executes a primitive operation without cascades, relations and other operations included. + * Executes fast and efficient DELETE query. + * Does not check if entity exist in the database. + */ + BaseEntity.delete = function (criteria, options) { + return this.getRepository().delete(criteria, options); + }; + /** + * Counts entities that match given find options or conditions. + */ + BaseEntity.count = function (optionsOrConditions) { + return this.getRepository().count(optionsOrConditions); + }; + /** + * Finds entities that match given find options or conditions. + */ + BaseEntity.find = function (optionsOrConditions) { + return this.getRepository().find(optionsOrConditions); + }; + /** + * Finds entities that match given find options or conditions. + * Also counts all entities that match given conditions, + * but ignores pagination settings (from and take options). + */ + BaseEntity.findAndCount = function (optionsOrConditions) { + return this.getRepository().findAndCount(optionsOrConditions); + }; + /** + * Finds entities by ids. + * Optionally find options can be applied. + */ + BaseEntity.findByIds = function (ids, optionsOrConditions) { + return this.getRepository().findByIds(ids, optionsOrConditions); + }; + /** + * Finds first entity that matches given conditions. + */ + BaseEntity.findOne = function (optionsOrConditions, maybeOptions) { + return this.getRepository().findOne(optionsOrConditions, maybeOptions); + }; + /** + * Finds first entity that matches given conditions. + */ + BaseEntity.findOneOrFail = function (optionsOrConditions, maybeOptions) { + return this.getRepository().findOneOrFail(optionsOrConditions, maybeOptions); + }; + /** + * Executes a raw SQL query and returns a raw database results. + * Raw query execution is supported only by relational databases (MongoDB is not supported). + */ + BaseEntity.query = function (query, parameters) { + return this.getRepository().query(query, parameters); + }; + /** + * Clears all the data from the given table/collection (truncates/drops it). + */ + BaseEntity.clear = function () { + return this.getRepository().clear(); + }; + return BaseEntity; +}()); + + +//# sourceMappingURL=BaseEntity.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/repository/RemoveOptions.js + + +//# sourceMappingURL=RemoveOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/repository/SaveOptions.js + + +//# sourceMappingURL=SaveOptions.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/mongodb/typings.js + + +//# sourceMappingURL=typings.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/types/DatabaseType.js + + +//# sourceMappingURL=DatabaseType.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/types/ReplicationMode.js + + +//# sourceMappingURL=ReplicationMode.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/QueryBuilder.js + 2 modules +var QueryBuilder = __webpack_require__(40); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/DeleteQueryBuilder.js +var DeleteQueryBuilder = __webpack_require__(196); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/InsertQueryBuilder.js +var InsertQueryBuilder = __webpack_require__(194); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/UpdateQueryBuilder.js +var UpdateQueryBuilder = __webpack_require__(195); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js + 2 modules +var RelationQueryBuilder = __webpack_require__(207); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/Brackets.js +var Brackets = __webpack_require__(154); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/result/InsertResult.js +var InsertResult = __webpack_require__(131); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/result/UpdateResult.js +var UpdateResult = __webpack_require__(115); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/result/DeleteResult.js +var DeleteResult = __webpack_require__(157); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/index.js + +/*! + */ + + + + + + +// ------------------------------------------------------------------------- +// Commonly Used exports +// ------------------------------------------------------------------------- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// ------------------------------------------------------------------------- +// Deprecated +// ------------------------------------------------------------------------- +// ------------------------------------------------------------------------- +// Commonly used functionality +// ------------------------------------------------------------------------- +/** + * Gets metadata args storage. + */ +function getMetadataArgsStorage() { + // we should store metadata storage in a global variable otherwise it brings too much problems + // one of the problem is that if any entity (or any other) will be imported before consumer will call + // useContainer method with his own container implementation, that entity will be registered in the + // old old container (default one post probably) and consumer will his entity. + // calling useContainer before he imports any entity (or any other) is not always convenient. + // another reason is that when we run migrations typeorm is being called from a global package + // and it may load entities which register decorators in typeorm of local package + // this leads to impossibility of usage of entities in migrations and cli related operations + var globalScope = BrowserPlatformTools["a" /* PlatformTools */].getGlobalVariable(); + if (!globalScope.typeormMetadataArgsStorage) + globalScope.typeormMetadataArgsStorage = new MetadataArgsStorage_MetadataArgsStorage(); + return globalScope.typeormMetadataArgsStorage; +} +/** + * Reads connection options stored in ormconfig configuration file. + */ +function getConnectionOptions(connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, new BrowserConnectionOptionsReaderDummy_ConnectionOptionsReader().get(connectionName)]; + }); + }); +} +/** + * Gets a ConnectionManager which creates connections. + */ +function getConnectionManager() { + return getFromContainer(ConnectionManager_ConnectionManager); +} +/** + * Creates a new connection and registers it in the manager. + * + * If connection options were not specified, then it will try to create connection automatically, + * based on content of ormconfig (json/js/yml/xml/env) file or environment variables. + * Only one connection from ormconfig will be created (name "default" or connection without name). + */ +function createConnection(optionsOrName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var connectionName, options, _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + connectionName = typeof optionsOrName === "string" ? optionsOrName : "default"; + if (!(optionsOrName instanceof Object)) return [3 /*break*/, 1]; + _a = optionsOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, getConnectionOptions(connectionName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + options = _a; + return [2 /*return*/, getConnectionManager().create(options).connect()]; + } + }); + }); +} +/** + * Creates new connections and registers them in the manager. + * + * If connection options were not specified, then it will try to create connection automatically, + * based on content of ormconfig (json/js/yml/xml/env) file or environment variables. + * All connections from the ormconfig will be created. + */ +function createConnections(options) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var connections; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!!options) return [3 /*break*/, 2]; + return [4 /*yield*/, new BrowserConnectionOptionsReaderDummy_ConnectionOptionsReader().all()]; + case 1: + options = _a.sent(); + _a.label = 2; + case 2: + connections = options.map(function (options) { return getConnectionManager().create(options); }); + return [2 /*return*/, Promise.all(connections.map(function (connection) { return connection.connect(); }))]; + } + }); + }); +} +/** + * Gets connection from the connection manager. + * If connection name wasn't specified, then "default" connection will be retrieved. + */ +function getConnection(connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName); +} +/** + * Gets entity manager from the connection. + * If connection name wasn't specified, then "default" connection will be retrieved. + */ +function getManager(connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName).manager; +} +/** + * Gets MongoDB entity manager from the connection. + * If connection name wasn't specified, then "default" connection will be retrieved. + */ +function getMongoManager(connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName).manager; +} +/** + * Gets Sqljs entity manager from connection name. + * "default" connection is used, when no name is specified. + * Only works when Sqljs driver is used. + */ +function getSqljsManager(connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName).manager; +} +/** + * Gets repository for the given entity class. + */ +function getRepository(entityClass, connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName).getRepository(entityClass); +} +/** + * Gets tree repository for the given entity class. + */ +function getTreeRepository(entityClass, connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName).getTreeRepository(entityClass); +} +/** + * Gets tree repository for the given entity class. + */ +function getCustomRepository(customRepository, connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName).getCustomRepository(customRepository); +} +/** + * Gets mongodb repository for the given entity class or name. + */ +function getMongoRepository(entityClass, connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + return getConnectionManager().get(connectionName).getMongoRepository(entityClass); +} +/** + * Creates a new query builder. + */ +function createQueryBuilder(entityClass, alias, connectionName) { + if (connectionName === void 0) { connectionName = "default"; } + if (entityClass) { + return getRepository(entityClass, connectionName).createQueryBuilder(alias); + } + return getConnection(connectionName).createQueryBuilder(); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), +/* 48 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TableForeignKey; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Foreign key from the database stored in this class. + */ +var TableForeignKey = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TableForeignKey(options) { + /** + * Column names which included by this foreign key. + */ + this.columnNames = []; + /** + * Column names which included by this foreign key. + */ + this.referencedColumnNames = []; + this.name = options.name; + this.columnNames = options.columnNames; + this.referencedColumnNames = options.referencedColumnNames; + this.referencedTableName = options.referencedTableName; + this.onDelete = options.onDelete; + this.onUpdate = options.onUpdate; + this.deferrable = options.deferrable; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new copy of this foreign key with exactly same properties. + */ + TableForeignKey.prototype.clone = function () { + return new TableForeignKey({ + name: this.name, + columnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.columnNames)), + referencedColumnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.referencedColumnNames)), + referencedTableName: this.referencedTableName, + onDelete: this.onDelete, + onUpdate: this.onUpdate, + deferrable: this.deferrable, + }); + }; + // ------------------------------------------------------------------------- + // Static Methods + // ------------------------------------------------------------------------- + /** + * Creates a new table foreign key from the given foreign key metadata. + */ + TableForeignKey.create = function (metadata) { + return new TableForeignKey({ + name: metadata.name, + columnNames: metadata.columnNames, + referencedColumnNames: metadata.referencedColumnNames, + referencedTableName: metadata.referencedTablePath, + onDelete: metadata.onDelete, + onUpdate: metadata.onUpdate, + deferrable: metadata.deferrable, + }); + }; + return TableForeignKey; +}()); + + +//# sourceMappingURL=TableForeignKey.js.map + + +/***/ }), +/* 49 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return camelCase; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return snakeCase; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return titleCase; }); +/* unused harmony export abbreviate */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return shorten; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return hash; }); +/* harmony import */ var sha_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(282); +/* harmony import */ var sha_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(sha_js__WEBPACK_IMPORTED_MODULE_0__); + +/** + * Converts string into camelCase. + * + * @see http://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case + */ +function camelCase(str, firstCapital) { + if (firstCapital === void 0) { firstCapital = false; } + return str.replace(/^([A-Z])|[\s-_](\w)/g, function (match, p1, p2, offset) { + if (firstCapital === true && offset === 0) + return p1; + if (p2) + return p2.toUpperCase(); + return p1.toLowerCase(); + }); +} +/** + * Converts string into snake_case. + * + * @see https://regex101.com/r/QeSm2I/1 + */ +function snakeCase(str) { + return str.replace(/(?:([a-z])([A-Z]))|(?:((?!^)[A-Z])([a-z]))/g, "$1_$3$2$4").toLowerCase(); +} +/** + * Converts string into Title Case. + * + * @see http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript + */ +function titleCase(str) { + return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); +} +/** + * Builds abbreviated string from given string; + */ +function abbreviate(str, abbrLettersCount) { + if (abbrLettersCount === void 0) { abbrLettersCount = 1; } + var words = str.replace(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g, "$1 $2").split(" "); + return words.reduce(function (res, word) { + res += word.substr(0, abbrLettersCount); + return res; + }, ""); +} +/** + * Shorten a given `input`. Useful for RDBMS imposing a limit on the + * maximum length of aliases and column names in SQL queries. + * + * @param input String to be shortened. + * @param options Default to `4` for segments length, `2` for terms length, `'__'` as a separator. + * + * @return Shortened `input`. + * + * @example + * // returns: "UsShCa__orde__mark__dire" + * shorten('UserShoppingCart__order__market__director') + * + * // returns: "cat_wit_ver_lon_nam_pos_wit_ver_lon_nam_pos_wit_ver_lon_nam" + * shorten( + * 'category_with_very_long_name_posts_with_very_long_name_post_with_very_long_name', + * { separator: '_', segmentLength: 3 } + * ) + * + * // equals: UsShCa__orde__mark_market_id + * `${shorten('UserShoppingCart__order__market')}_market_id` + */ +function shorten(input, options) { + if (options === void 0) { options = {}; } + var _a = options.segmentLength, segmentLength = _a === void 0 ? 4 : _a, _b = options.separator, separator = _b === void 0 ? "__" : _b, _c = options.termLength, termLength = _c === void 0 ? 2 : _c; + var segments = input.split(separator); + var shortSegments = segments.reduce(function (acc, val) { + // split the given segment into many terms based on an eventual camel cased name + var segmentTerms = val.replace(/([a-z\xE0-\xFF])([A-Z\xC0-\xDF])/g, "$1 $2").split(" "); + // "OrderItemList" becomes "OrItLi", while "company" becomes "comp" + var length = segmentTerms.length > 1 ? termLength : segmentLength; + var shortSegment = segmentTerms.map(function (term) { return term.substr(0, length); }).join(""); + acc.push(shortSegment); + return acc; + }, []); + return shortSegments.join(separator); +} +/** + * Returns a hashed input. + * + * @param input String to be hashed. + * @param options.length Optionally, shorten the output to desired length. + */ +function hash(input, options) { + if (options === void 0) { options = {}; } + var hashFunction = sha_js__WEBPACK_IMPORTED_MODULE_0___default()("sha256"); + hashFunction.update(input, "utf8"); + var hashedInput = hashFunction.digest("hex"); + if (options.length) { + return hashedInput.slice(0, options.length); + } + return hashedInput; +} + +//# sourceMappingURL=StringUtils.js.map + + +/***/ }), +/* 50 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueryBuilderUtils; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Helper utility functions for QueryBuilder. + */ +var QueryBuilderUtils = /** @class */ (function () { + function QueryBuilderUtils() { + } + /** + * Checks if given value is a string representation of alias property, + * e.g. "post.category" or "post.id". + */ + QueryBuilderUtils.isAliasProperty = function (str) { + // alias property must be a string and must have a dot separator + if (typeof str !== "string" || str.indexOf(".") === -1) + return false; + // extra alias and its property relation + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(str.split("."), 2), aliasName = _a[0], propertyName = _a[1]; // todo: what about relations in embedded? + if (!aliasName || !propertyName) + return false; + // alias and property must be represented in a special format + // const aliasNameRegexp = /^[a-zA-Z0-9_-]+$/; + // if (!aliasNameRegexp.test(aliasName) || !aliasNameRegexp.test(propertyName)) + // return false; + // make sure string is not a subquery + if (str.indexOf("(") !== -1 || str.indexOf(")") !== -1) + return false; + return true; + }; + return QueryBuilderUtils; +}()); + + +//# sourceMappingURL=QueryBuilderUtils.js.map + + +/***/ }), +/* 51 */ /***/ (function(module, exports) { -eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack:///./node_modules/process/browser.js?"); +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + /***/ }), - -/***/ "./node_modules/reflect-metadata/Reflect.js": -/*!**************************************************!*\ - !*** ./node_modules/reflect-metadata/Reflect.js ***! - \**************************************************/ -/*! no static exports found */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { -eval("/* WEBPACK VAR INJECTION */(function(process, global) {/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/reflect-metadata/Reflect.js?"); +var dP = __webpack_require__(29); +var createDesc = __webpack_require__(86); +module.exports = __webpack_require__(28) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + /***/ }), - -/***/ "./node_modules/safe-buffer/index.js": -/*!*******************************************!*\ - !*** ./node_modules/safe-buffer/index.js ***! - \*******************************************/ -/*! no static exports found */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { -eval("/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\")\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n//# sourceURL=webpack:///./node_modules/safe-buffer/index.js?"); +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__(122); +var defined = __webpack_require__(76); +module.exports = function (it) { + return IObject(defined(it)); +}; + /***/ }), +/* 54 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./node_modules/sha.js/hash.js": -/*!*************************************!*\ - !*** ./node_modules/sha.js/hash.js ***! - \*************************************/ -/*! no static exports found */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Broadcaster; }); +/** + * Broadcaster provides a helper methods to broadcast events to the subscribers. + */ +var Broadcaster = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function Broadcaster(queryRunner) { + this.queryRunner = queryRunner; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Broadcasts "BEFORE_INSERT" event. + * Before insert event is executed before entity is being inserted to the database for the first time. + * All subscribers and entity listeners who listened to this event will be executed at this point. + * Subscribers and entity listeners can return promises, it will wait until they are resolved. + * + * Note: this method has a performance-optimized code organization, do not change code structure. + */ + Broadcaster.prototype.broadcastBeforeInsertEvent = function (result, metadata, entity) { + var _this = this; + if (entity && metadata.beforeInsertListeners.length) { + metadata.beforeInsertListeners.forEach(function (listener) { + if (listener.isAllowed(entity)) { + var executionResult = listener.execute(entity); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeInsert) { + var executionResult = subscriber.beforeInsert({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + entity: entity, + metadata: metadata + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "BEFORE_UPDATE" event. + * Before update event is executed before entity is being updated in the database. + * All subscribers and entity listeners who listened to this event will be executed at this point. + * Subscribers and entity listeners can return promises, it will wait until they are resolved. + * + * Note: this method has a performance-optimized code organization, do not change code structure. + */ + Broadcaster.prototype.broadcastBeforeUpdateEvent = function (result, metadata, entity, databaseEntity, updatedColumns, updatedRelations) { + var _this = this; + if (entity && metadata.beforeUpdateListeners.length) { + metadata.beforeUpdateListeners.forEach(function (listener) { + if (listener.isAllowed(entity)) { + var executionResult = listener.execute(entity); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeUpdate) { + var executionResult = subscriber.beforeUpdate({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + entity: entity, + metadata: metadata, + databaseEntity: databaseEntity, + updatedColumns: updatedColumns || [], + updatedRelations: updatedRelations || [] + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "BEFORE_REMOVE" event. + * Before remove event is executed before entity is being removed from the database. + * All subscribers and entity listeners who listened to this event will be executed at this point. + * Subscribers and entity listeners can return promises, it will wait until they are resolved. + * + * Note: this method has a performance-optimized code organization, do not change code structure. + */ + Broadcaster.prototype.broadcastBeforeRemoveEvent = function (result, metadata, entity, databaseEntity) { + var _this = this; + if (entity && metadata.beforeRemoveListeners.length) { + metadata.beforeRemoveListeners.forEach(function (listener) { + if (listener.isAllowed(entity)) { + var executionResult = listener.execute(entity); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeRemove) { + var executionResult = subscriber.beforeRemove({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + entity: entity, + metadata: metadata, + databaseEntity: databaseEntity, + entityId: metadata.getEntityIdMixedMap(databaseEntity) + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "AFTER_INSERT" event. + * After insert event is executed after entity is being persisted to the database for the first time. + * All subscribers and entity listeners who listened to this event will be executed at this point. + * Subscribers and entity listeners can return promises, it will wait until they are resolved. + * + * Note: this method has a performance-optimized code organization, do not change code structure. + */ + Broadcaster.prototype.broadcastAfterInsertEvent = function (result, metadata, entity) { + var _this = this; + if (entity && metadata.afterInsertListeners.length) { + metadata.afterInsertListeners.forEach(function (listener) { + if (listener.isAllowed(entity)) { + var executionResult = listener.execute(entity); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterInsert) { + var executionResult = subscriber.afterInsert({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + entity: entity, + metadata: metadata + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "BEFORE_TRANSACTION_START" event. + */ + Broadcaster.prototype.broadcastBeforeTransactionStartEvent = function (result) { + var _this = this; + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (subscriber.beforeTransactionStart) { + var executionResult = subscriber.beforeTransactionStart({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "AFTER_TRANSACTION_START" event. + */ + Broadcaster.prototype.broadcastAfterTransactionStartEvent = function (result) { + var _this = this; + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (subscriber.afterTransactionStart) { + var executionResult = subscriber.afterTransactionStart({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "BEFORE_TRANSACTION_COMMIT" event. + */ + Broadcaster.prototype.broadcastBeforeTransactionCommitEvent = function (result) { + var _this = this; + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (subscriber.beforeTransactionCommit) { + var executionResult = subscriber.beforeTransactionCommit({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "AFTER_TRANSACTION_COMMIT" event. + */ + Broadcaster.prototype.broadcastAfterTransactionCommitEvent = function (result) { + var _this = this; + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (subscriber.afterTransactionCommit) { + var executionResult = subscriber.afterTransactionCommit({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "BEFORE_TRANSACTION_ROLLBACK" event. + */ + Broadcaster.prototype.broadcastBeforeTransactionRollbackEvent = function (result) { + var _this = this; + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (subscriber.beforeTransactionRollback) { + var executionResult = subscriber.beforeTransactionRollback({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "AFTER_TRANSACTION_ROLLBACK" event. + */ + Broadcaster.prototype.broadcastAfterTransactionRollbackEvent = function (result) { + var _this = this; + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (subscriber.afterTransactionRollback) { + var executionResult = subscriber.afterTransactionRollback({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "AFTER_UPDATE" event. + * After update event is executed after entity is being updated in the database. + * All subscribers and entity listeners who listened to this event will be executed at this point. + * Subscribers and entity listeners can return promises, it will wait until they are resolved. + * + * Note: this method has a performance-optimized code organization, do not change code structure. + */ + Broadcaster.prototype.broadcastAfterUpdateEvent = function (result, metadata, entity, databaseEntity, updatedColumns, updatedRelations) { + var _this = this; + if (entity && metadata.afterUpdateListeners.length) { + metadata.afterUpdateListeners.forEach(function (listener) { + if (listener.isAllowed(entity)) { + var executionResult = listener.execute(entity); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterUpdate) { + var executionResult = subscriber.afterUpdate({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + entity: entity, + metadata: metadata, + databaseEntity: databaseEntity, + updatedColumns: updatedColumns || [], + updatedRelations: updatedRelations || [] + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "AFTER_REMOVE" event. + * After remove event is executed after entity is being removed from the database. + * All subscribers and entity listeners who listened to this event will be executed at this point. + * Subscribers and entity listeners can return promises, it will wait until they are resolved. + * + * Note: this method has a performance-optimized code organization, do not change code structure. + */ + Broadcaster.prototype.broadcastAfterRemoveEvent = function (result, metadata, entity, databaseEntity) { + var _this = this; + if (entity && metadata.afterRemoveListeners.length) { + metadata.afterRemoveListeners.forEach(function (listener) { + if (listener.isAllowed(entity)) { + var executionResult = listener.execute(entity); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + if (this.queryRunner.connection.subscribers.length) { + this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterRemove) { + var executionResult = subscriber.afterRemove({ + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + entity: entity, + metadata: metadata, + databaseEntity: databaseEntity, + entityId: metadata.getEntityIdMixedMap(databaseEntity) + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }; + /** + * Broadcasts "AFTER_LOAD" event for all given entities, and their sub-entities. + * After load event is executed after entity has been loaded from the database. + * All subscribers and entity listeners who listened to this event will be executed at this point. + * Subscribers and entity listeners can return promises, it will wait until they are resolved. + * + * Note: this method has a performance-optimized code organization, do not change code structure. + */ + Broadcaster.prototype.broadcastLoadEventsForAll = function (result, metadata, entities) { + var _this = this; + entities.forEach(function (entity) { + if (entity instanceof Promise) // todo: check why need this? + return; + // collect load events for all children entities that were loaded with the main entity + if (metadata.relations.length) { + metadata.relations.forEach(function (relation) { + // in lazy relations we cannot simply access to entity property because it will cause a getter and a database query + if (relation.isLazy && !entity.hasOwnProperty(relation.propertyName)) + return; + var value = relation.getEntityValue(entity); + if (value instanceof Object) + _this.broadcastLoadEventsForAll(result, relation.inverseEntityMetadata, Array.isArray(value) ? value : [value]); + }); + } + if (metadata.afterLoadListeners.length) { + metadata.afterLoadListeners.forEach(function (listener) { + if (listener.isAllowed(entity)) { + var executionResult = listener.execute(entity); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + if (_this.queryRunner.connection.subscribers.length) { + _this.queryRunner.connection.subscribers.forEach(function (subscriber) { + if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterLoad) { + var executionResult = subscriber.afterLoad(entity, { + connection: _this.queryRunner.connection, + queryRunner: _this.queryRunner, + manager: _this.queryRunner.manager, + entity: entity, + metadata: metadata + }); + if (executionResult instanceof Promise) + result.promises.push(executionResult); + result.count++; + } + }); + } + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Checks if subscriber's methods can be executed by checking if its don't listen to the particular entity, + * or listens our entity. + */ + Broadcaster.prototype.isAllowedSubscriber = function (subscriber, target) { + return !subscriber.listenTo || + !subscriber.listenTo() || + subscriber.listenTo() === Object || + subscriber.listenTo() === target || + subscriber.listenTo().isPrototypeOf(target); + }; + return Broadcaster; +}()); + + +//# sourceMappingURL=Broadcaster.js.map + + +/***/ }), +/* 55 */ /***/ (function(module, exports, __webpack_require__) { -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/hash.js?"); +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Matomo = void 0; + +var js_helper_1 = __webpack_require__(22); + +var NativeStoragePromise_1 = __webpack_require__(42); + +var Matomo = /*#__PURE__*/function () { + function Matomo() { + _classCallCheck(this, Matomo); + } + + _createClass(Matomo, null, [{ + key: "init", + value: function init() { + var _this = this; + + Matomo.isTrackingPromise = new Promise(function (resolve) { + return __awaiter(_this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var shouldTrack; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return NativeStoragePromise_1.NativeStoragePromise.getItem(Matomo.LOCAL_STORAGE_KEY, "1"); + + case 2: + shouldTrack = _context.sent; + + if (!js_helper_1.Helper.isNull(shouldTrack)) { + _context.next = 11; + break; + } + + _context.next = 6; + return Matomo._askIsTracking(); + + case 6: + shouldTrack = _context.sent; + _context.next = 9; + return NativeStoragePromise_1.NativeStoragePromise.setItem(Matomo.LOCAL_STORAGE_KEY, shouldTrack); + + case 9: + _context.next = 14; + break; + + case 11: + shouldTrack = shouldTrack === "1"; + _context.next = 14; + return Matomo.setTrack(shouldTrack); + + case 14: + resolve(shouldTrack); + + case 15: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + }); + Matomo.isTrackingPromise.then(function () { + Matomo.push(['trackPageView'], true); + Matomo.push(['enableLinkTracking'], true); + Matomo.push(['setTrackerUrl', Matomo.TRACK_SITE + '/piwik.php'], true); + Matomo.push(['setSiteId', Matomo.SIDE_ID + ""], true); + var d = document, + g = d.createElement('script'), + s = d.getElementsByTagName('head')[0]; + g.type = 'text/javascript'; + g.async = true; + g.defer = true; + g.src = Matomo.TRACK_SITE + '/piwik.js'; + s.appendChild(g); + }); + } + }, { + key: "update", + value: function update(title) { + if (js_helper_1.Helper.nonNull(Matomo.currentUrl)) { + Matomo.push(['setReferrerUrl', Matomo.currentUrl]); + } + + Matomo.currentUrl = window.location.pathname + window.location.search; + Matomo.push(['setCustomUrl', Matomo.currentUrl]); + Matomo.push(['setDocumentTitle', title]); // remove all previously assigned custom variables, requires Matomo (formerly Piwik) 3.0.2 + + Matomo.push(['deleteCustomVariables', 'page']); + Matomo.push(['setGenerationTimeMs', 0]); + Matomo.push(['trackPageView']); // make Matomo aware of newly added content + + var content = document.getElementById('site-content'); + Matomo.push(['MediaAnalytics::scanForMedia', content]); + Matomo.push(['FormAnalytics::scanForForms', content]); + Matomo.push(['trackContentImpressionsWithinNode', content]); + Matomo.push(['enableLinkTracking']); + } + }, { + key: "_askIsTracking", + value: function _askIsTracking() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + Matomo.isTrackingPromise = new Promise(function (resolve) { + Matomo.push([function () { + resolve(!this["isUserOptedOut"]()); + }]); + }); + return _context2.abrupt("return", Matomo.isTrackingPromise); + + case 2: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + }, { + key: "query", + value: function query(method) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt("return", fetch(Matomo.TRACK_SITE + Matomo.BASE_PATH + method, { + "mode": "cors", + "credentials": "include" + }).then(function (res) { + return res.text(); + }).then(function (text) { + return new window["DOMParser"]().parseFromString(text, "text/xml"); + })); + + case 1: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + } + }, { + key: "getTrackingPromise", + value: function getTrackingPromise() { + return Matomo.isTrackingPromise; + } + }, { + key: "setTrack", + value: function setTrack(shouldTrack) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + Matomo.isTrackingPromise = Promise.resolve(shouldTrack); + _context4.next = 3; + return NativeStoragePromise_1.NativeStoragePromise.setItem(Matomo.LOCAL_STORAGE_KEY, shouldTrack === true ? "1" : "0"); + + case 3: + if (!shouldTrack) { + _context4.next = 8; + break; + } + + _context4.next = 6; + return Matomo.push(["forgetUserOptOut"], true); + + case 6: + _context4.next = 10; + break; + + case 8: + _context4.next = 10; + return Matomo.push(["optUserOut"], true); + + case 10: + case "end": + return _context4.stop(); + } + } + }, _callee4); + })); + } + }, { + key: "trackEvent", + value: function trackEvent(event, name, label, value) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var ev; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + ev = ["trackEvent", event, name]; + + if (js_helper_1.Helper.isNotNull(label)) { + ev.push(label); + } + + if (js_helper_1.Helper.isNotNull(value) && !isNaN(parseFloat(value)) && isFinite(value)) { + ev.push(value); + } + + return _context5.abrupt("return", this.push(ev)); + + case 4: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } //TODO Matomo + + }, { + key: "push", + value: function push(arr, force) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + case "end": + return _context6.stop(); + } + } + }, _callee6); + })); + } + }]); + + return Matomo; +}(); + +exports.Matomo = Matomo; +Matomo.LOCAL_STORAGE_KEY = "matomoShouldTrack"; +Matomo.TRACK_SITE = ""; +Matomo.BASE_PATH = ""; +Matomo.SIDE_ID = "1"; +Matomo.currentUrl = null; +Matomo.isTrackingPromise = null; /***/ }), +/* 56 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./node_modules/sha.js/index.js": -/*!**************************************!*\ - !*** ./node_modules/sha.js/index.js ***! - \**************************************/ -/*! no static exports found */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return View; }); +/** + * View in the database represented in this class. + */ +var View = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function View(options) { + if (options) { + this.name = options.name; + this.expression = options.expression; + this.materialized = !!options.materialized; + } + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Clones this table to a new table with all properties cloned. + */ + View.prototype.clone = function () { + return new View({ + name: this.name, + expression: this.expression, + materialized: this.materialized, + }); + }; + // ------------------------------------------------------------------------- + // Static Methods + // ------------------------------------------------------------------------- + /** + * Creates view from a given entity metadata. + */ + View.create = function (entityMetadata, driver) { + var options = { + name: driver.buildTableName(entityMetadata.tableName, entityMetadata.schema, entityMetadata.database), + expression: entityMetadata.expression, + materialized: entityMetadata.tableMetadataArgs.materialized + }; + return new View(options); + }; + return View; +}()); + + +//# sourceMappingURL=View.js.map + + +/***/ }), +/* 57 */ /***/ (function(module, exports, __webpack_require__) { -eval("var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = __webpack_require__(/*! ./sha */ \"./node_modules/sha.js/sha.js\")\nexports.sha1 = __webpack_require__(/*! ./sha1 */ \"./node_modules/sha.js/sha1.js\")\nexports.sha224 = __webpack_require__(/*! ./sha224 */ \"./node_modules/sha.js/sha224.js\")\nexports.sha256 = __webpack_require__(/*! ./sha256 */ \"./node_modules/sha.js/sha256.js\")\nexports.sha384 = __webpack_require__(/*! ./sha384 */ \"./node_modules/sha.js/sha384.js\")\nexports.sha512 = __webpack_require__(/*! ./sha512 */ \"./node_modules/sha.js/sha512.js\")\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/index.js?"); +"use strict"; + +var fails = __webpack_require__(12); + +module.exports = function (method, arg) { + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call + arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); + }); +}; + /***/ }), - -/***/ "./node_modules/sha.js/sha.js": -/*!************************************!*\ - !*** ./node_modules/sha.js/sha.js ***! - \************************************/ -/*! no static exports found */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { -eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\")\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/sha.js?"); +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ViewInflater = void 0; + +var client_1 = __webpack_require__(197); + +var shared_1 = __webpack_require__(22); + +var DataManager_1 = __webpack_require__(68); +/** + * Singleton-Klasse genutzt zum laden von Views + */ + + +var ViewInflater = /*#__PURE__*/function () { + function ViewInflater() { + _classCallCheck(this, ViewInflater); + + this.loadingPromises = {}; + } + /** + * Statische Funktion, um die Singleton-Instanz zu holen + * + * @returns {ViewInflater} + */ + + + _createClass(ViewInflater, [{ + key: "load", + value: + /** + * Lädt asynchron eine View anhand einer URL und lädt ebenso alle child-views + * + * Extra nicht async, damit Promise sofort in LoadingPromise hinzugefügt werden kann + * + * @param viewUrl + * @param parentUrls + * @returns {*} + */ + function load(viewUrl, parentUrls) { + var _this = this; + + //Kopiere Elemente, damit originale parentURLS nicht verändert werden + parentUrls = shared_1.JsonHelper.deepCopy(shared_1.Helper.nonNull(parentUrls, [])); //Detektiert eine Schleife in den Views + + if (parentUrls.indexOf(viewUrl) !== -1) { + //Return Promise.reject => da View vorher schon einmal geladen, wird das Resultat ebenfalls in loadingPromises gespeichert für diese View + return Promise.reject("views are in a circuit! cannot resolve view for url " + parentUrls[0] + "! url " + viewUrl + " is in stack before!"); + } + + parentUrls.push(viewUrl); //Shortcut, falls die View schon geladen wurde. Muss nach Schleifenüberprüfung aufgerufen werden + + if (shared_1.Helper.isNotNull(this.loadingPromises[viewUrl])) { + return this.loadingPromises[viewUrl].then(function (view) { + return view.cloneNode(true); + }); + } + + var t; + var resultPromise = Promise.resolve(t); + + if (viewUrl instanceof Element) { + resultPromise = Promise.resolve(viewUrl); + } else { + resultPromise = DataManager_1.DataManager.loadAsset(viewUrl).then(function (htmlText) { + var doc = new DOMParser().parseFromString(htmlText, "text/html"); //Parsing hat nicht geklappt, also per innerHTML + + if (shared_1.Helper.isNull(doc)) { + doc = document.implementation.createHTMLDocument(''); + doc.body.innerHTML = htmlText; + } //Wrappe Elemente mit einem Span + + + var spanElem = document.createElement("span"); + spanElem.classList.add("injected-span"); + return ViewInflater.moveChildren(doc.body, spanElem); + }); + } + + this.loadingPromises[viewUrl] = resultPromise.then(function (parentElement) { + var promises = []; + var childViews = parentElement.querySelectorAll("[data-view]"); //lade Kinder-Views + + childViews.forEach(function (childView) { + promises.push(ViewInflater.getInstance().load(childView.dataset["view"], parentUrls).then(function (element) { + childView.replaceWith(element); + ViewInflater.replaceWithChildren(element); + })); + }); + return Promise.all(promises).then(function () { + return parentElement; + }); + }).catch(function (e) { + console.error(e); + _this.loadingPromises[viewUrl] = null; + throw e; + }); + return this.loadingPromises[viewUrl].then(function (view) { + return view.cloneNode(true); + }); + } + /** + * Statische Funktion, um Elemente aus einem String zu kreieren + * + * @param string + * @returns {NodeListOf} + */ + + }], [{ + key: "getInstance", + value: function getInstance() { + if (shared_1.Helper.isNull(ViewInflater.instance)) { + ViewInflater.instance = new ViewInflater(); + } + + return ViewInflater.instance; + } + }, { + key: "inflateElementsFromString", + value: function inflateElementsFromString(string) { + var template = document.createElement('template'); + template.innerHTML = string; + return template.content.childNodes; + } + /** + * Kreiert ein Ladesymbol. Evtl entfernen + * + * @returns {HTMLDivElement} + */ + + }, { + key: "createLoadingSymbol", + value: function createLoadingSymbol(loaderClass) { + var svgNS = "http://www.w3.org/2000/svg"; + var loader = document.createElement("div"); + loader.classList.add('loader'); //LoaderClass darf nicht leer sein, da sonst HTML einen Felher schmeißt + + if (loaderClass) { + loader.classList.add(loaderClass); + } + + var svg = document.createElementNS(svgNS, "svg"); + svg.setAttribute('viewBox', "0 0 32 32"); + svg.setAttribute("width", "32"); + svg.setAttribute("height", "32"); + var circle = document.createElementNS(svgNS, "circle"); + circle.setAttribute("class", "spinner"); + circle.setAttribute("cx", "16"); + circle.setAttribute("cy", "16"); + circle.setAttribute("r", "14"); + circle.setAttribute("fill", "none"); + svg.appendChild(circle); + loader.appendChild(svg); // let loader = document.createElement("div"); + // loader.appendChild(document.createTextNode("LOADING...")); + + return loader; + } + /** + * Moves the child-Nodes from one element to another + * @param from + * @param to + * @returns {*} + */ + + }, { + key: "moveChildren", + value: function moveChildren(from, to) { + return client_1.ViewHelper.moveChildren(from, to); + } + /** + * Ersetzt ein Element durch seine Kinder (entfernt das Element ohne die Kinder zu entfernen) + * @param element + */ + + }, { + key: "replaceWithChildren", + value: function replaceWithChildren(element) { + var children = []; //Zwischenspeichern der Children, da removeChild die forEach-Schleife durcheinander bringt + + element.childNodes.forEach(function (child) { + children.push(child); + }); + var parent = element.parentElement; + children.forEach(function (child) { + element.removeChild(child); + parent.insertBefore(child, element); + }); + element.remove(); + } + }]); + + return ViewInflater; +}(); + +exports.ViewInflater = ViewInflater; +ViewInflater.instance = null; /***/ }), +/* 59 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./node_modules/sha.js/sha1.js": -/*!*************************************!*\ - !*** ./node_modules/sha.js/sha1.js ***! - \*************************************/ -/*! no static exports found */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TableExclusion; }); +/** + * Database's table exclusion constraint stored in this class. + */ +var TableExclusion = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TableExclusion(options) { + this.name = options.name; + this.expression = options.expression; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a new copy of this constraint with exactly same properties. + */ + TableExclusion.prototype.clone = function () { + return new TableExclusion({ + name: this.name, + expression: this.expression, + }); + }; + // ------------------------------------------------------------------------- + // Static Methods + // ------------------------------------------------------------------------- + /** + * Creates exclusions from the exclusion metadata object. + */ + TableExclusion.create = function (exclusionMetadata) { + return new TableExclusion({ + name: exclusionMetadata.name, + expression: exclusionMetadata.expression + }); + }; + return TableExclusion; +}()); + + +//# sourceMappingURL=TableExclusion.js.map + + +/***/ }), +/* 60 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ApplyValueTransformers; }); +var ApplyValueTransformers = /** @class */ (function () { + function ApplyValueTransformers() { + } + ApplyValueTransformers.transformFrom = function (transformer, databaseValue) { + if (Array.isArray(transformer)) { + var reverseTransformers = transformer.slice().reverse(); + return reverseTransformers.reduce(function (transformedValue, _transformer) { + return _transformer.from(transformedValue); + }, databaseValue); + } + return transformer.from(databaseValue); + }; + ApplyValueTransformers.transformTo = function (transformer, entityValue) { + if (Array.isArray(transformer)) { + return transformer.reduce(function (transformedValue, _transformer) { + return _transformer.to(transformedValue); + }, entityValue); + } + return transformer.to(entityValue); + }; + return ApplyValueTransformers; +}()); + + +//# sourceMappingURL=ApplyValueTransformers.js.map + + +/***/ }), +/* 61 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return RandomGenerator; }); +var RandomGenerator = /** @class */ (function () { + function RandomGenerator() { + } + /** + * discuss at: http://locutus.io/php/sha1/ + * original by: Webtoolkit.info (http://www.webtoolkit.info/) + * improved by: Michael White (http://getsprink.com) + * improved by: Kevin van Zonneveld (http://kvz.io) + * input by: Brett Zamir (http://brett-zamir.me) + * note 1: Keep in mind that in accordance with PHP, the whole string is buffered and then + * note 1: hashed. If available, we'd recommend using Node's native crypto modules directly + * note 1: in a steaming fashion for faster and more efficient hashing + * example 1: sha1('Kevin van Zonneveld') + * returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897' + */ + RandomGenerator.sha1 = function (str) { + var _rotLeft = function (n, s) { + var t4 = (n << s) | (n >>> (32 - s)); + return t4; + }; + var _cvtHex = function (val) { + var str = ""; + var i; + var v; + for (i = 7; i >= 0; i--) { + v = (val >>> (i * 4)) & 0x0f; + str += v.toString(16); + } + return str; + }; + var blockstart; + var i, j; + var W = new Array(80); + var H0 = 0x67452301; + var H1 = 0xEFCDAB89; + var H2 = 0x98BADCFE; + var H3 = 0x10325476; + var H4 = 0xC3D2E1F0; + var A, B, C, D, E; + var temp; + // utf8_encode + str = /*unescape*/ (encodeURIComponent(str)); + var strLen = str.length; + var wordArray = []; + for (i = 0; i < strLen - 3; i += 4) { + j = str.charCodeAt(i) << 24 | + str.charCodeAt(i + 1) << 16 | + str.charCodeAt(i + 2) << 8 | + str.charCodeAt(i + 3); + wordArray.push(j); + } + switch (strLen % 4) { + case 0: + i = 0x080000000; + break; + case 1: + i = str.charCodeAt(strLen - 1) << 24 | 0x0800000; + break; + case 2: + i = str.charCodeAt(strLen - 2) << 24 | str.charCodeAt(strLen - 1) << 16 | 0x08000; + break; + case 3: + i = str.charCodeAt(strLen - 3) << 24 | + str.charCodeAt(strLen - 2) << 16 | + str.charCodeAt(strLen - 1) << + 8 | 0x80; + break; + } + wordArray.push(i); + while ((wordArray.length % 16) !== 14) { + wordArray.push(0); + } + wordArray.push(strLen >>> 29); + wordArray.push((strLen << 3) & 0x0ffffffff); + for (blockstart = 0; blockstart < wordArray.length; blockstart += 16) { + for (i = 0; i < 16; i++) { + W[i] = wordArray[blockstart + i]; + } + for (i = 16; i <= 79; i++) { + W[i] = _rotLeft(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); + } + A = H0; + B = H1; + C = H2; + D = H3; + E = H4; + for (i = 0; i <= 19; i++) { + temp = (_rotLeft(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff; + E = D; + D = C; + C = _rotLeft(B, 30); + B = A; + A = temp; + } + for (i = 20; i <= 39; i++) { + temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff; + E = D; + D = C; + C = _rotLeft(B, 30); + B = A; + A = temp; + } + for (i = 40; i <= 59; i++) { + temp = (_rotLeft(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff; + E = D; + D = C; + C = _rotLeft(B, 30); + B = A; + A = temp; + } + for (i = 60; i <= 79; i++) { + temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff; + E = D; + D = C; + C = _rotLeft(B, 30); + B = A; + A = temp; + } + H0 = (H0 + A) & 0x0ffffffff; + H1 = (H1 + B) & 0x0ffffffff; + H2 = (H2 + C) & 0x0ffffffff; + H3 = (H3 + D) & 0x0ffffffff; + H4 = (H4 + E) & 0x0ffffffff; + } + temp = _cvtHex(H0) + _cvtHex(H1) + _cvtHex(H2) + _cvtHex(H3) + _cvtHex(H4); + return temp.toLowerCase(); + }; + /** + * RFC4122 compliant UUID v4 generator. + */ + RandomGenerator.uuid4 = function () { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c === "x" ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); + }; + return RandomGenerator; +}()); + + +//# sourceMappingURL=RandomGenerator.js.map + + +/***/ }), +/* 62 */ /***/ (function(module, exports, __webpack_require__) { -eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\")\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/sha1.js?"); - -/***/ }), - -/***/ "./node_modules/sha.js/sha224.js": -/*!***************************************!*\ - !*** ./node_modules/sha.js/sha224.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Sha256 = __webpack_require__(/*! ./sha256 */ \"./node_modules/sha.js/sha256.js\")\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\")\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/sha224.js?"); - -/***/ }), - -/***/ "./node_modules/sha.js/sha256.js": -/*!***************************************!*\ - !*** ./node_modules/sha.js/sha256.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\")\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/sha256.js?"); - -/***/ }), - -/***/ "./node_modules/sha.js/sha384.js": -/*!***************************************!*\ - !*** ./node_modules/sha.js/sha384.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar SHA512 = __webpack_require__(/*! ./sha512 */ \"./node_modules/sha.js/sha512.js\")\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\")\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/sha384.js?"); - -/***/ }), - -/***/ "./node_modules/sha.js/sha512.js": -/*!***************************************!*\ - !*** ./node_modules/sha.js/sha512.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\")\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n\n\n//# sourceURL=webpack:///./node_modules/sha.js/sha512.js?"); - -/***/ }), - -/***/ "./node_modules/tslib/tslib.es6.js": -/*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ -/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__extends\", function() { return __extends; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__assign\", function() { return __assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__rest\", function() { return __rest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__decorate\", function() { return __decorate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__param\", function() { return __param; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__metadata\", function() { return __metadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__awaiter\", function() { return __awaiter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__generator\", function() { return __generator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__createBinding\", function() { return __createBinding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__exportStar\", function() { return __exportStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__values\", function() { return __values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__read\", function() { return __read; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spread\", function() { return __spread; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spreadArrays\", function() { return __spreadArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spreadArray\", function() { return __spreadArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__await\", function() { return __await; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function() { return __asyncGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function() { return __asyncDelegator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function() { return __asyncValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function() { return __makeTemplateObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importStar\", function() { return __importStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importDefault\", function() { return __importDefault; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldGet\", function() { return __classPrivateFieldGet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldSet\", function() { return __classPrivateFieldSet; });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nvar __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nfunction __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nfunction __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\n\n//# sourceURL=webpack:///./node_modules/tslib/tslib.es6.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/cache/DbQueryResultCache.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/cache/DbQueryResultCache.js ***! - \******************************************************************/ -/*! exports provided: DbQueryResultCache */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DbQueryResultCache\", function() { return DbQueryResultCache; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/oracle/OracleDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../driver/sqlserver/MssqlParameter */ \"./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js\");\n/* harmony import */ var _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../schema-builder/table/Table */ \"./node_modules/typeorm/browser/schema-builder/table/Table.js\");\n\n\n\n\n\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nvar DbQueryResultCache = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function DbQueryResultCache(connection) {\n this.connection = connection;\n var options = this.connection.driver.options;\n var cacheOptions = typeof this.connection.options.cache === \"object\" ? this.connection.options.cache : {};\n var cacheTableName = cacheOptions.tableName || \"query-result-cache\";\n this.queryResultCacheTable = this.connection.driver.buildTableName(cacheTableName, options.schema, options.database);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a connection with given cache provider.\n */\n DbQueryResultCache.prototype.connect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Disconnects with given cache provider.\n */\n DbQueryResultCache.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n DbQueryResultCache.prototype.synchronize = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var driver, tableExist;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.getQueryRunner(queryRunner);\n driver = this.connection.driver;\n return [4 /*yield*/, queryRunner.hasTable(this.queryResultCacheTable)];\n case 1:\n tableExist = _a.sent();\n if (tableExist)\n return [2 /*return*/];\n return [4 /*yield*/, queryRunner.createTable(new _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"]({\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheId }),\n generationStrategy: \"increment\",\n isGenerated: true\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheIdentifier }),\n isNullable: true\n },\n {\n name: \"time\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheTime }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"duration\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheDuration }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"query\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheQuery }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"result\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheResult }),\n isNullable: false\n },\n ]\n }))];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n DbQueryResultCache.prototype.getFromCache = function (options, queryRunner) {\n queryRunner = this.getQueryRunner(queryRunner);\n var qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\");\n if (options.identifier) {\n return qb\n .where(qb.escape(\"cache\") + \".\" + qb.escape(\"identifier\") + \" = :identifier\")\n .setParameters({ identifier: this.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"] ? new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__[\"MssqlParameter\"](options.identifier, \"nvarchar\") : options.identifier })\n .getRawOne();\n }\n else if (options.query) {\n if (this.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) {\n return qb\n .where(\"dbms_lob.compare(\" + qb.escape(\"cache\") + \".\" + qb.escape(\"query\") + \", :query) = 0\", { query: options.query })\n .getRawOne();\n }\n return qb\n .where(qb.escape(\"cache\") + \".\" + qb.escape(\"query\") + \" = :query\")\n .setParameters({ query: this.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"] ? new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__[\"MssqlParameter\"](options.query, \"nvarchar\") : options.query })\n .getRawOne();\n }\n return Promise.resolve(undefined);\n };\n /**\n * Checks if cache is expired or not.\n */\n DbQueryResultCache.prototype.isExpired = function (savedCache) {\n var duration = typeof savedCache.duration === \"string\" ? parseInt(savedCache.duration) : savedCache.duration;\n return ((typeof savedCache.time === \"string\" ? parseInt(savedCache.time) : savedCache.time) + duration) < new Date().getTime();\n };\n /**\n * Stores given query result in the cache.\n */\n DbQueryResultCache.prototype.storeInCache = function (options, savedCache, queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var insertedValues, qb, qb;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.getQueryRunner(queryRunner);\n insertedValues = options;\n if (this.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) { // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__[\"MssqlParameter\"](options.identifier, \"nvarchar\"),\n time: new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__[\"MssqlParameter\"](options.time, \"bigint\"),\n duration: new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__[\"MssqlParameter\"](options.duration, \"int\"),\n query: new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__[\"MssqlParameter\"](options.query, \"nvarchar\"),\n result: new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_2__[\"MssqlParameter\"](options.result, \"nvarchar\"),\n };\n }\n if (!(savedCache && savedCache.identifier)) return [3 /*break*/, 2];\n qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n qb.where(qb.escape(\"identifier\") + \" = :condition\", { condition: insertedValues.identifier });\n return [4 /*yield*/, qb.execute()];\n case 1:\n _a.sent();\n return [3 /*break*/, 6];\n case 2:\n if (!(savedCache && savedCache.query)) return [3 /*break*/, 4];\n qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n if (this.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) {\n qb.where(\"dbms_lob.compare(\\\"query\\\", :condition) = 0\", { condition: insertedValues.query });\n }\n else {\n qb.where(qb.escape(\"query\") + \" = :condition\", { condition: insertedValues.query });\n }\n return [4 /*yield*/, qb.execute()];\n case 3:\n _a.sent();\n return [3 /*break*/, 6];\n case 4: // otherwise insert\n return [4 /*yield*/, queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Clears everything stored in the cache.\n */\n DbQueryResultCache.prototype.clear = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.getQueryRunner(queryRunner).clearTable(this.queryResultCacheTable)];\n });\n });\n };\n /**\n * Removes all cached results by given identifiers from cache.\n */\n DbQueryResultCache.prototype.remove = function (identifiers, queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(identifiers.map(function (identifier) {\n var qb = _this.getQueryRunner(queryRunner).manager.createQueryBuilder();\n return qb.delete()\n .from(_this.queryResultCacheTable)\n .where(qb.escape(\"identifier\") + \" = :identifier\", { identifier: identifier })\n .execute();\n }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Gets a query runner to work with.\n */\n DbQueryResultCache.prototype.getQueryRunner = function (queryRunner) {\n if (queryRunner)\n return queryRunner;\n return this.connection.createQueryRunner();\n };\n return DbQueryResultCache;\n}());\n\n\n//# sourceMappingURL=DbQueryResultCache.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/cache/DbQueryResultCache.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/cache/QueryResultCacheFactory.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/cache/QueryResultCacheFactory.js ***! - \***********************************************************************/ -/*! exports provided: QueryResultCacheFactory */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryResultCacheFactory\", function() { return QueryResultCacheFactory; });\n/* harmony import */ var _RedisQueryResultCache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RedisQueryResultCache */ \"./node_modules/typeorm/browser/cache/RedisQueryResultCache.js\");\n/* harmony import */ var _DbQueryResultCache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DbQueryResultCache */ \"./node_modules/typeorm/browser/cache/DbQueryResultCache.js\");\n\n\n/**\n * Caches query result into Redis database.\n */\nvar QueryResultCacheFactory = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function QueryResultCacheFactory(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new query result cache based on connection options.\n */\n QueryResultCacheFactory.prototype.create = function () {\n if (!this.connection.options.cache)\n throw new Error(\"To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }\");\n var cache = this.connection.options.cache;\n if (cache.provider && typeof cache.provider === \"function\") {\n return cache.provider(this.connection);\n }\n if (cache.type === \"redis\" || cache.type === \"ioredis\" || cache.type === \"ioredis/cluster\") {\n return new _RedisQueryResultCache__WEBPACK_IMPORTED_MODULE_0__[\"RedisQueryResultCache\"](this.connection, cache.type);\n }\n else {\n return new _DbQueryResultCache__WEBPACK_IMPORTED_MODULE_1__[\"DbQueryResultCache\"](this.connection);\n }\n };\n return QueryResultCacheFactory;\n}());\n\n\n//# sourceMappingURL=QueryResultCacheFactory.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/cache/QueryResultCacheFactory.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/cache/RedisQueryResultCache.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/cache/RedisQueryResultCache.js ***! - \*********************************************************************/ -/*! exports provided: RedisQueryResultCache */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RedisQueryResultCache\", function() { return RedisQueryResultCache; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/PlatformTools */ \"./node_modules/typeorm/browser/platform/BrowserPlatformTools.js\");\n\n\n/**\n * Caches query result into Redis database.\n */\nvar RedisQueryResultCache = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RedisQueryResultCache(connection, clientType) {\n this.connection = connection;\n this.clientType = clientType;\n this.redis = this.loadRedis();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a connection with given cache provider.\n */\n RedisQueryResultCache.prototype.connect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var cacheOptions;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n cacheOptions = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n if (cacheOptions && cacheOptions.options) {\n this.client = this.redis.createClient(cacheOptions.options);\n }\n else {\n this.client = this.redis.createClient();\n }\n }\n else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options);\n }\n else {\n this.client = new this.redis();\n }\n }\n else if (this.clientType === \"ioredis/cluster\") {\n if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n }\n else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n }\n else {\n throw new Error(\"options.startupNodes required for \" + this.clientType + \".\");\n }\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Disconnects the connection\n */\n RedisQueryResultCache.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.client.quit(function (err, result) {\n if (err)\n return fail(err);\n ok();\n _this.client = undefined;\n });\n })];\n });\n });\n };\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n RedisQueryResultCache.prototype.synchronize = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n RedisQueryResultCache.prototype.getFromCache = function (options, queryRunner) {\n var _this = this;\n return new Promise(function (ok, fail) {\n if (options.identifier) {\n _this.client.get(options.identifier, function (err, result) {\n if (err)\n return fail(err);\n ok(JSON.parse(result));\n });\n }\n else if (options.query) {\n _this.client.get(options.query, function (err, result) {\n if (err)\n return fail(err);\n ok(JSON.parse(result));\n });\n }\n else {\n ok(undefined);\n }\n });\n };\n /**\n * Checks if cache is expired or not.\n */\n RedisQueryResultCache.prototype.isExpired = function (savedCache) {\n return (savedCache.time + savedCache.duration) < new Date().getTime();\n };\n /**\n * Stores given query result in the cache.\n */\n RedisQueryResultCache.prototype.storeInCache = function (options, savedCache, queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n if (options.identifier) {\n _this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n }\n else if (options.query) {\n _this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n }\n })];\n });\n });\n };\n /**\n * Clears everything stored in the cache.\n */\n RedisQueryResultCache.prototype.clear = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.client.flushdb(function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n })];\n });\n });\n };\n /**\n * Removes all cached results by given identifiers from cache.\n */\n RedisQueryResultCache.prototype.remove = function (identifiers, queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(identifiers.map(function (identifier) {\n return _this.deleteKey(identifier);\n }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Removes a single key from redis database.\n */\n RedisQueryResultCache.prototype.deleteKey = function (key) {\n var _this = this;\n return new Promise(function (ok, fail) {\n _this.client.del(key, function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n });\n };\n /**\n * Loads redis dependency.\n */\n RedisQueryResultCache.prototype.loadRedis = function () {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_1__[\"PlatformTools\"].load(\"ioredis\");\n }\n else {\n return _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_1__[\"PlatformTools\"].load(this.clientType);\n }\n }\n catch (e) {\n throw new Error(\"Cannot use cache because \" + this.clientType + \" is not installed. Please run \\\"npm i \" + this.clientType + \" --save\\\".\");\n }\n };\n return RedisQueryResultCache;\n}());\n\n\n//# sourceMappingURL=RedisQueryResultCache.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/cache/RedisQueryResultCache.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/common/DeepPartial.js": -/*!************************************************************!*\ - !*** ./node_modules/typeorm/browser/common/DeepPartial.js ***! - \************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=DeepPartial.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/common/DeepPartial.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/common/EntityTarget.js": -/*!*************************************************************!*\ - !*** ./node_modules/typeorm/browser/common/EntityTarget.js ***! - \*************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=EntityTarget.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/common/EntityTarget.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/common/ObjectLiteral.js": -/*!**************************************************************!*\ - !*** ./node_modules/typeorm/browser/common/ObjectLiteral.js ***! - \**************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=ObjectLiteral.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/common/ObjectLiteral.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/common/ObjectType.js": -/*!***********************************************************!*\ - !*** ./node_modules/typeorm/browser/common/ObjectType.js ***! - \***********************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=ObjectType.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/common/ObjectType.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/connection/Connection.js": -/*!***************************************************************!*\ - !*** ./node_modules/typeorm/browser/connection/Connection.js ***! - \***************************************************************/ -/*! exports provided: Connection */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Connection\", function() { return Connection; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _naming_strategy_DefaultNamingStrategy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../naming-strategy/DefaultNamingStrategy */ \"./node_modules/typeorm/browser/naming-strategy/DefaultNamingStrategy.js\");\n/* harmony import */ var _error_CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../error/CannotExecuteNotConnectedError */ \"./node_modules/typeorm/browser/error/CannotExecuteNotConnectedError.js\");\n/* harmony import */ var _error_CannotConnectAlreadyConnectedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/CannotConnectAlreadyConnectedError */ \"./node_modules/typeorm/browser/error/CannotConnectAlreadyConnectedError.js\");\n/* harmony import */ var _error_EntityMetadataNotFoundError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/EntityMetadataNotFoundError */ \"./node_modules/typeorm/browser/error/EntityMetadataNotFoundError.js\");\n/* harmony import */ var _migration_MigrationExecutor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../migration/MigrationExecutor */ \"./node_modules/typeorm/browser/migration/MigrationExecutor.js\");\n/* harmony import */ var _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../driver/mongodb/MongoDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _metadata_builder_EntityMetadataValidator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../metadata-builder/EntityMetadataValidator */ \"./node_modules/typeorm/browser/metadata-builder/EntityMetadataValidator.js\");\n/* harmony import */ var _error_QueryRunnerProviderAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../error/QueryRunnerProviderAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js\");\n/* harmony import */ var _entity_manager_EntityManagerFactory__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../entity-manager/EntityManagerFactory */ \"./node_modules/typeorm/browser/entity-manager/EntityManagerFactory.js\");\n/* harmony import */ var _driver_DriverFactory__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../driver/DriverFactory */ \"./node_modules/typeorm/browser/driver/DriverFactory.js\");\n/* harmony import */ var _ConnectionMetadataBuilder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ConnectionMetadataBuilder */ \"./node_modules/typeorm/browser/connection/ConnectionMetadataBuilder.js\");\n/* harmony import */ var _query_builder_SelectQueryBuilder__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../query-builder/SelectQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js\");\n/* harmony import */ var _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../logger/LoggerFactory */ \"./node_modules/typeorm/browser/logger/LoggerFactory.js\");\n/* harmony import */ var _cache_QueryResultCacheFactory__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../cache/QueryResultCacheFactory */ \"./node_modules/typeorm/browser/cache/QueryResultCacheFactory.js\");\n/* harmony import */ var _entity_manager_SqljsEntityManager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../entity-manager/SqljsEntityManager */ \"./node_modules/typeorm/browser/entity-manager/SqljsEntityManager.js\");\n/* harmony import */ var _query_builder_RelationLoader__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../query-builder/RelationLoader */ \"./node_modules/typeorm/browser/query-builder/RelationLoader.js\");\n/* harmony import */ var _query_builder_RelationIdLoader__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../query-builder/RelationIdLoader */ \"./node_modules/typeorm/browser/query-builder/RelationIdLoader.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n/* harmony import */ var _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../driver/DriverUtils */ \"./node_modules/typeorm/browser/driver/DriverUtils.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Connection is a single database ORM connection to a specific database.\n * Its not required to be a database connection, depend on database type it can create connection pool.\n * You can have multiple connections to multiple databases in your application.\n */\nvar Connection = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Connection(options) {\n /**\n * Migration instances that are registered for this connection.\n */\n this.migrations = [];\n /**\n * Entity subscriber instances that are registered for this connection.\n */\n this.subscribers = [];\n /**\n * All entity metadatas that are registered for this connection.\n */\n this.entityMetadatas = [];\n this.name = options.name || \"default\";\n this.options = options;\n this.logger = new _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_13__[\"LoggerFactory\"]().create(this.options.logger, this.options.logging);\n this.driver = new _driver_DriverFactory__WEBPACK_IMPORTED_MODULE_10__[\"DriverFactory\"]().create(this);\n this.manager = this.createEntityManager();\n this.namingStrategy = options.namingStrategy || new _naming_strategy_DefaultNamingStrategy__WEBPACK_IMPORTED_MODULE_1__[\"DefaultNamingStrategy\"]();\n this.queryResultCache = options.cache ? new _cache_QueryResultCacheFactory__WEBPACK_IMPORTED_MODULE_14__[\"QueryResultCacheFactory\"](this).create() : undefined;\n this.relationLoader = new _query_builder_RelationLoader__WEBPACK_IMPORTED_MODULE_16__[\"RelationLoader\"](this);\n this.relationIdLoader = new _query_builder_RelationIdLoader__WEBPACK_IMPORTED_MODULE_17__[\"RelationIdLoader\"](this);\n this.isConnected = false;\n }\n Object.defineProperty(Connection.prototype, \"mongoManager\", {\n // -------------------------------------------------------------------------\n // Public Accessors\n // -------------------------------------------------------------------------\n /**\n * Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\n * with any entity in this connection.\n *\n * Available only in mongodb connections.\n */\n get: function () {\n if (!(this.manager instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__[\"MongoEntityManager\"]))\n throw new Error(\"MongoEntityManager is only available for MongoDB databases.\");\n return this.manager;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"sqljsManager\", {\n /**\n * Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n *\n * Available only in connection with the sqljs driver.\n */\n get: function () {\n if (!(this.manager instanceof _entity_manager_SqljsEntityManager__WEBPACK_IMPORTED_MODULE_15__[\"SqljsEntityManager\"]))\n throw new Error(\"SqljsEntityManager is only available for Sqljs databases.\");\n return this.manager;\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n */\n Connection.prototype.connect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var error_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isConnected)\n throw new _error_CannotConnectAlreadyConnectedError__WEBPACK_IMPORTED_MODULE_3__[\"CannotConnectAlreadyConnectedError\"](this.name);\n // connect to the database via its driver\n return [4 /*yield*/, this.driver.connect()];\n case 1:\n // connect to the database via its driver\n _a.sent();\n if (!this.queryResultCache) return [3 /*break*/, 3];\n return [4 /*yield*/, this.queryResultCache.connect()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n // set connected status for the current connection\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__[\"ObjectUtils\"].assign(this, { isConnected: true });\n _a.label = 4;\n case 4:\n _a.trys.push([4, 12, , 14]);\n // build all metadatas registered in the current connection\n this.buildMetadatas();\n return [4 /*yield*/, this.driver.afterConnect()];\n case 5:\n _a.sent();\n if (!this.options.dropSchema) return [3 /*break*/, 7];\n return [4 /*yield*/, this.dropDatabase()];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7:\n if (!this.options.synchronize) return [3 /*break*/, 9];\n return [4 /*yield*/, this.synchronize()];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9:\n if (!this.options.migrationsRun) return [3 /*break*/, 11];\n return [4 /*yield*/, this.runMigrations({ transaction: this.options.migrationsTransactionMode })];\n case 10:\n _a.sent();\n _a.label = 11;\n case 11: return [3 /*break*/, 14];\n case 12:\n error_1 = _a.sent();\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n return [4 /*yield*/, this.close()];\n case 13:\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n _a.sent();\n throw error_1;\n case 14: return [2 /*return*/, this];\n }\n });\n });\n };\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n */\n Connection.prototype.close = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new _error_CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_2__[\"CannotExecuteNotConnectedError\"](this.name);\n return [4 /*yield*/, this.driver.disconnect()];\n case 1:\n _a.sent();\n if (!this.queryResultCache) return [3 /*break*/, 3];\n return [4 /*yield*/, this.queryResultCache.disconnect()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__[\"ObjectUtils\"].assign(this, { isConnected: false });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates database schema for all entities registered in this connection.\n * Can be used only after connection to the database is established.\n *\n * @param dropBeforeSync If set to true then it drops the database with all its tables and data\n */\n Connection.prototype.synchronize = function (dropBeforeSync) {\n if (dropBeforeSync === void 0) { dropBeforeSync = false; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var schemaBuilder;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new _error_CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_2__[\"CannotExecuteNotConnectedError\"](this.name);\n if (!dropBeforeSync) return [3 /*break*/, 2];\n return [4 /*yield*/, this.dropDatabase()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n schemaBuilder = this.driver.createSchemaBuilder();\n return [4 /*yield*/, schemaBuilder.build()];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the database and all its data.\n * Be careful with this method on production since this method will erase all your database tables and their data.\n * Can be used only after connection to the database is established.\n */\n // TODO rename\n Connection.prototype.dropDatabase = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, databases_2, databases_1, databases_1_1, database, e_1_1;\n var e_1, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.createQueryRunner();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 13, 15]);\n if (!(this.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__[\"SqlServerDriver\"] || this.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__[\"MysqlDriver\"] || this.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__[\"AuroraDataApiDriver\"])) return [3 /*break*/, 10];\n databases_2 = this.driver.database ? [this.driver.database] : [];\n this.entityMetadatas.forEach(function (metadata) {\n if (metadata.database && databases_2.indexOf(metadata.database) === -1)\n databases_2.push(metadata.database);\n });\n _b.label = 2;\n case 2:\n _b.trys.push([2, 7, 8, 9]);\n databases_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(databases_2), databases_1_1 = databases_1.next();\n _b.label = 3;\n case 3:\n if (!!databases_1_1.done) return [3 /*break*/, 6];\n database = databases_1_1.value;\n return [4 /*yield*/, queryRunner.clearDatabase(database)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n databases_1_1 = databases_1.next();\n return [3 /*break*/, 3];\n case 6: return [3 /*break*/, 9];\n case 7:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 9];\n case 8:\n try {\n if (databases_1_1 && !databases_1_1.done && (_a = databases_1.return)) _a.call(databases_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 9: return [3 /*break*/, 12];\n case 10: return [4 /*yield*/, queryRunner.clearDatabase()];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [3 /*break*/, 15];\n case 13: return [4 /*yield*/, queryRunner.release()];\n case 14:\n _b.sent();\n return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Runs all pending migrations.\n * Can be used only after connection to the database is established.\n */\n Connection.prototype.runMigrations = function (options) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var migrationExecutor, successMigrations;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new _error_CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_2__[\"CannotExecuteNotConnectedError\"](this.name);\n migrationExecutor = new _migration_MigrationExecutor__WEBPACK_IMPORTED_MODULE_5__[\"MigrationExecutor\"](this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n return [4 /*yield*/, migrationExecutor.executePendingMigrations()];\n case 1:\n successMigrations = _a.sent();\n return [2 /*return*/, successMigrations];\n }\n });\n });\n };\n /**\n * Reverts last executed migration.\n * Can be used only after connection to the database is established.\n */\n Connection.prototype.undoLastMigration = function (options) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var migrationExecutor;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new _error_CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_2__[\"CannotExecuteNotConnectedError\"](this.name);\n migrationExecutor = new _migration_MigrationExecutor__WEBPACK_IMPORTED_MODULE_5__[\"MigrationExecutor\"](this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n return [4 /*yield*/, migrationExecutor.undoLastMigration()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Lists all migrations and whether they have been run.\n * Returns true if there are pending migrations\n */\n Connection.prototype.showMigrations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var migrationExecutor;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected) {\n throw new _error_CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_2__[\"CannotExecuteNotConnectedError\"](this.name);\n }\n migrationExecutor = new _migration_MigrationExecutor__WEBPACK_IMPORTED_MODULE_5__[\"MigrationExecutor\"](this);\n return [4 /*yield*/, migrationExecutor.showMigrations()];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Checks if entity metadata exist for the given entity class, target name or table name.\n */\n Connection.prototype.hasMetadata = function (target) {\n return !!this.findMetadata(target);\n };\n /**\n * Gets entity metadata for the given entity class or schema name.\n */\n Connection.prototype.getMetadata = function (target) {\n var metadata = this.findMetadata(target);\n if (!metadata)\n throw new _error_EntityMetadataNotFoundError__WEBPACK_IMPORTED_MODULE_4__[\"EntityMetadataNotFoundError\"](target);\n return metadata;\n };\n /**\n * Gets repository for the given entity.\n */\n Connection.prototype.getRepository = function (target) {\n return this.manager.getRepository(target);\n };\n /**\n * Gets tree repository for the given entity class or name.\n * Only tree-type entities can have a TreeRepository, like ones decorated with @Tree decorator.\n */\n Connection.prototype.getTreeRepository = function (target) {\n return this.manager.getTreeRepository(target);\n };\n /**\n * Gets mongodb-specific repository for the given entity class or name.\n * Works only if connection is mongodb-specific.\n */\n Connection.prototype.getMongoRepository = function (target) {\n if (!(this.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__[\"MongoDriver\"]))\n throw new Error(\"You can use getMongoRepository only for MongoDB connections.\");\n return this.manager.getRepository(target);\n };\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n */\n Connection.prototype.getCustomRepository = function (customRepository) {\n return this.manager.getCustomRepository(customRepository);\n };\n Connection.prototype.transaction = function (isolationOrRunInTransaction, runInTransactionParam) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.manager.transaction(isolationOrRunInTransaction, runInTransactionParam)];\n });\n });\n };\n /**\n * Executes raw SQL query and returns raw database results.\n */\n Connection.prototype.query = function (query, parameters, queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var usedQueryRunner;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__[\"MongoEntityManager\"])\n throw new Error(\"Queries aren't supported by MongoDB.\");\n if (queryRunner && queryRunner.isReleased)\n throw new _error_QueryRunnerProviderAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_8__[\"QueryRunnerProviderAlreadyReleasedError\"]();\n usedQueryRunner = queryRunner || this.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 6]);\n return [4 /*yield*/, usedQueryRunner.query(query, parameters)];\n case 2: return [2 /*return*/, _a.sent()]; // await is needed here because we are using finally\n case 3:\n if (!!queryRunner) return [3 /*break*/, 5];\n return [4 /*yield*/, usedQueryRunner.release()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n Connection.prototype.createQueryBuilder = function (entityOrRunner, alias, queryRunner) {\n if (this instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_6__[\"MongoEntityManager\"])\n throw new Error(\"Query Builder is not supported by MongoDB.\");\n if (alias) {\n var metadata = this.getMetadata(entityOrRunner);\n return new _query_builder_SelectQueryBuilder__WEBPACK_IMPORTED_MODULE_12__[\"SelectQueryBuilder\"](this, queryRunner)\n .select(alias)\n .from(metadata.target, alias);\n }\n else {\n return new _query_builder_SelectQueryBuilder__WEBPACK_IMPORTED_MODULE_12__[\"SelectQueryBuilder\"](this, entityOrRunner);\n }\n };\n /**\n * Creates a query runner used for perform queries on a single database connection.\n * Using query runners you can control your queries to execute using single database connection and\n * manually control your database transaction.\n *\n * Mode is used in replication mode and indicates whatever you want to connect\n * to master database or any of slave databases.\n * If you perform writes you must use master database,\n * if you perform reads you can use slave databases.\n */\n Connection.prototype.createQueryRunner = function (mode) {\n if (mode === void 0) { mode = \"master\"; }\n var queryRunner = this.driver.createQueryRunner(mode);\n var manager = this.createEntityManager(queryRunner);\n Object.assign(queryRunner, { manager: manager });\n return queryRunner;\n };\n /**\n * Gets entity metadata of the junction table (many-to-many table).\n */\n Connection.prototype.getManyToManyMetadata = function (entityTarget, relationPropertyPath) {\n var relationMetadata = this.getMetadata(entityTarget).findRelationWithPropertyPath(relationPropertyPath);\n if (!relationMetadata)\n throw new Error(\"Relation \\\"\" + relationPropertyPath + \"\\\" was not found in \" + entityTarget + \" entity.\");\n if (!relationMetadata.isManyToMany)\n throw new Error(\"Relation \\\"\" + entityTarget + \"#\" + relationPropertyPath + \"\\\" does not have a many-to-many relationship.\" +\n \"You can use this method only on many-to-many relations.\");\n return relationMetadata.junctionEntityMetadata;\n };\n /**\n * Creates an Entity Manager for the current connection with the help of the EntityManagerFactory.\n */\n Connection.prototype.createEntityManager = function (queryRunner) {\n return new _entity_manager_EntityManagerFactory__WEBPACK_IMPORTED_MODULE_9__[\"EntityManagerFactory\"]().create(this, queryRunner);\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Finds exist entity metadata by the given entity class, target name or table name.\n */\n Connection.prototype.findMetadata = function (target) {\n return this.entityMetadatas.find(function (metadata) {\n if (metadata.target === target)\n return true;\n if (target instanceof ___WEBPACK_IMPORTED_MODULE_18__[\"EntitySchema\"]) {\n return metadata.name === target.options.name;\n }\n if (typeof target === \"string\") {\n if (target.indexOf(\".\") !== -1) {\n return metadata.tablePath === target;\n }\n else {\n return metadata.name === target || metadata.tableName === target;\n }\n }\n return false;\n });\n };\n /**\n * Builds metadatas for all registered classes inside this connection.\n */\n Connection.prototype.buildMetadatas = function () {\n var connectionMetadataBuilder = new _ConnectionMetadataBuilder__WEBPACK_IMPORTED_MODULE_11__[\"ConnectionMetadataBuilder\"](this);\n var entityMetadataValidator = new _metadata_builder_EntityMetadataValidator__WEBPACK_IMPORTED_MODULE_7__[\"EntityMetadataValidator\"]();\n // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process)\n var subscribers = connectionMetadataBuilder.buildSubscribers(this.options.subscribers || []);\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__[\"ObjectUtils\"].assign(this, { subscribers: subscribers });\n // build entity metadatas\n var entityMetadatas = connectionMetadataBuilder.buildEntityMetadatas(this.options.entities || []);\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__[\"ObjectUtils\"].assign(this, { entityMetadatas: entityMetadatas });\n // create migration instances\n var migrations = connectionMetadataBuilder.buildMigrations(this.options.migrations || []);\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__[\"ObjectUtils\"].assign(this, { migrations: migrations });\n this.driver.database = this.getDatabaseName();\n // validate all created entity metadatas to make sure user created entities are valid and correct\n entityMetadataValidator.validateMany(this.entityMetadatas.filter(function (metadata) { return metadata.tableType !== \"view\"; }), this.driver);\n };\n // This database name property is nested for replication configs.\n Connection.prototype.getDatabaseName = function () {\n var options = this.options;\n switch (options.type) {\n case \"mysql\":\n case \"mariadb\":\n case \"postgres\":\n case \"cockroachdb\":\n case \"mssql\":\n case \"oracle\":\n return _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildDriverOptions(options.replication ? options.replication.master : options).database;\n case \"mongodb\":\n return _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildMongoDBDriverOptions(options).database;\n default:\n return _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildDriverOptions(options).database;\n }\n };\n return Connection;\n}());\n\n\n//# sourceMappingURL=Connection.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/connection/Connection.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/connection/ConnectionManager.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/connection/ConnectionManager.js ***! - \**********************************************************************/ -/*! exports provided: ConnectionManager */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionManager\", function() { return ConnectionManager; });\n/* harmony import */ var _Connection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Connection */ \"./node_modules/typeorm/browser/connection/Connection.js\");\n/* harmony import */ var _error_ConnectionNotFoundError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/ConnectionNotFoundError */ \"./node_modules/typeorm/browser/error/ConnectionNotFoundError.js\");\n/* harmony import */ var _error_AlreadyHasActiveConnectionError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../error/AlreadyHasActiveConnectionError */ \"./node_modules/typeorm/browser/error/AlreadyHasActiveConnectionError.js\");\n\n\n\n/**\n * ConnectionManager is used to store and manage multiple orm connections.\n * It also provides useful factory methods to simplify connection creation.\n */\nvar ConnectionManager = /** @class */ (function () {\n function ConnectionManager() {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n /**\n * List of connections registered in this connection manager.\n */\n this.connections = [];\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if connection with the given name exist in the manager.\n */\n ConnectionManager.prototype.has = function (name) {\n return !!this.connections.find(function (connection) { return connection.name === name; });\n };\n /**\n * Gets registered connection with the given name.\n * If connection name is not given then it will get a default connection.\n * Throws error if connection with the given name was not found.\n */\n ConnectionManager.prototype.get = function (name) {\n if (name === void 0) { name = \"default\"; }\n var connection = this.connections.find(function (connection) { return connection.name === name; });\n if (!connection)\n throw new _error_ConnectionNotFoundError__WEBPACK_IMPORTED_MODULE_1__[\"ConnectionNotFoundError\"](name);\n return connection;\n };\n /**\n * Creates a new connection based on the given connection options and registers it in the manager.\n * Connection won't be established, you'll need to manually call connect method to establish connection.\n */\n ConnectionManager.prototype.create = function (options) {\n // check if such connection is already registered\n var existConnection = this.connections.find(function (connection) { return connection.name === (options.name || \"default\"); });\n if (existConnection) {\n // if connection is registered and its not closed then throw an error\n if (existConnection.isConnected)\n throw new _error_AlreadyHasActiveConnectionError__WEBPACK_IMPORTED_MODULE_2__[\"AlreadyHasActiveConnectionError\"](options.name || \"default\");\n // if its registered but closed then simply remove it from the manager\n this.connections.splice(this.connections.indexOf(existConnection), 1);\n }\n // create a new connection\n var connection = new _Connection__WEBPACK_IMPORTED_MODULE_0__[\"Connection\"](options);\n this.connections.push(connection);\n return connection;\n };\n return ConnectionManager;\n}());\n\n\n//# sourceMappingURL=ConnectionManager.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/connection/ConnectionManager.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/connection/ConnectionMetadataBuilder.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/connection/ConnectionMetadataBuilder.js ***! - \******************************************************************************/ -/*! exports provided: ConnectionMetadataBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionMetadataBuilder\", function() { return ConnectionMetadataBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_DirectoryExportedClassesLoader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/DirectoryExportedClassesLoader */ \"./node_modules/typeorm/browser/platform/BrowserDirectoryExportedClassesLoader.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../container */ \"./node_modules/typeorm/browser/container.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_builder_EntityMetadataBuilder__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../metadata-builder/EntityMetadataBuilder */ \"./node_modules/typeorm/browser/metadata-builder/EntityMetadataBuilder.js\");\n/* harmony import */ var _entity_schema_EntitySchemaTransformer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../entity-schema/EntitySchemaTransformer */ \"./node_modules/typeorm/browser/entity-schema/EntitySchemaTransformer.js\");\n/* harmony import */ var _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../entity-schema/EntitySchema */ \"./node_modules/typeorm/browser/entity-schema/EntitySchema.js\");\n\n\n\n\n\n\n\n\n/**\n * Builds migration instances, subscriber instances and entity metadatas for the given classes.\n */\nvar ConnectionMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ConnectionMetadataBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds migration instances for the given classes or directories.\n */\n ConnectionMetadataBuilder.prototype.buildMigrations = function (migrations) {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_util_OrmUtils__WEBPACK_IMPORTED_MODULE_2__[\"OrmUtils\"].splitClassesAndStrings(migrations), 2), migrationClasses = _a[0], migrationDirectories = _a[1];\n var allMigrationClasses = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(migrationClasses)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(Object(_util_DirectoryExportedClassesLoader__WEBPACK_IMPORTED_MODULE_1__[\"importClassesFromDirectories\"])(this.connection.logger, migrationDirectories)));\n return allMigrationClasses.map(function (migrationClass) { return Object(_container__WEBPACK_IMPORTED_MODULE_3__[\"getFromContainer\"])(migrationClass); });\n };\n /**\n * Builds subscriber instances for the given classes or directories.\n */\n ConnectionMetadataBuilder.prototype.buildSubscribers = function (subscribers) {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_util_OrmUtils__WEBPACK_IMPORTED_MODULE_2__[\"OrmUtils\"].splitClassesAndStrings(subscribers || []), 2), subscriberClasses = _a[0], subscriberDirectories = _a[1];\n var allSubscriberClasses = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(subscriberClasses)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(Object(_util_DirectoryExportedClassesLoader__WEBPACK_IMPORTED_MODULE_1__[\"importClassesFromDirectories\"])(this.connection.logger, subscriberDirectories)));\n return Object(_index__WEBPACK_IMPORTED_MODULE_4__[\"getMetadataArgsStorage\"])()\n .filterSubscribers(allSubscriberClasses)\n .map(function (metadata) { return Object(_container__WEBPACK_IMPORTED_MODULE_3__[\"getFromContainer\"])(metadata.target); });\n };\n /**\n * Builds entity metadatas for the given classes or directories.\n */\n ConnectionMetadataBuilder.prototype.buildEntityMetadatas = function (entities) {\n // todo: instead we need to merge multiple metadata args storages\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_util_OrmUtils__WEBPACK_IMPORTED_MODULE_2__[\"OrmUtils\"].splitClassesAndStrings(entities || []), 2), entityClassesOrSchemas = _a[0], entityDirectories = _a[1];\n var entityClasses = entityClassesOrSchemas.filter(function (entityClass) { return (entityClass instanceof _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_7__[\"EntitySchema\"]) === false; });\n var entitySchemas = entityClassesOrSchemas.filter(function (entityClass) { return entityClass instanceof _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_7__[\"EntitySchema\"]; });\n var allEntityClasses = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(entityClasses)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(Object(_util_DirectoryExportedClassesLoader__WEBPACK_IMPORTED_MODULE_1__[\"importClassesFromDirectories\"])(this.connection.logger, entityDirectories)));\n allEntityClasses.forEach(function (entityClass) {\n if (entityClass instanceof _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_7__[\"EntitySchema\"]) {\n entitySchemas.push(entityClass);\n allEntityClasses.slice(allEntityClasses.indexOf(entityClass), 1);\n }\n });\n var decoratorEntityMetadatas = new _metadata_builder_EntityMetadataBuilder__WEBPACK_IMPORTED_MODULE_5__[\"EntityMetadataBuilder\"](this.connection, Object(_index__WEBPACK_IMPORTED_MODULE_4__[\"getMetadataArgsStorage\"])()).build(allEntityClasses);\n var metadataArgsStorageFromSchema = new _entity_schema_EntitySchemaTransformer__WEBPACK_IMPORTED_MODULE_6__[\"EntitySchemaTransformer\"]().transform(entitySchemas);\n var schemaEntityMetadatas = new _metadata_builder_EntityMetadataBuilder__WEBPACK_IMPORTED_MODULE_5__[\"EntityMetadataBuilder\"](this.connection, metadataArgsStorageFromSchema).build();\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(decoratorEntityMetadatas)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(schemaEntityMetadatas));\n };\n return ConnectionMetadataBuilder;\n}());\n\n\n//# sourceMappingURL=ConnectionMetadataBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/connection/ConnectionMetadataBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/container.js": -/*!***************************************************!*\ - !*** ./node_modules/typeorm/browser/container.js ***! - \***************************************************/ -/*! exports provided: useContainer, getFromContainer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useContainer\", function() { return useContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFromContainer\", function() { return getFromContainer; });\n/**\n * Container to be used by this library for inversion control. If container was not implicitly set then by default\n * container simply creates a new instance of the given class.\n */\nvar defaultContainer = new (/** @class */ (function () {\n function class_1() {\n this.instances = [];\n }\n class_1.prototype.get = function (someClass) {\n var instance = this.instances.find(function (i) { return i.type === someClass; });\n if (!instance) {\n instance = { type: someClass, object: new someClass() };\n this.instances.push(instance);\n }\n return instance.object;\n };\n return class_1;\n}()))();\nvar userContainer;\nvar userContainerOptions;\n/**\n * Sets container to be used by this library.\n */\nfunction useContainer(iocContainer, options) {\n userContainer = iocContainer;\n userContainerOptions = options;\n}\n/**\n * Gets the IOC container used by this library.\n */\nfunction getFromContainer(someClass) {\n if (userContainer) {\n try {\n var instance = userContainer.get(someClass);\n if (instance)\n return instance;\n if (!userContainerOptions || !userContainerOptions.fallback)\n return instance;\n }\n catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors)\n throw error;\n }\n }\n return defaultContainer.get(someClass);\n}\n\n//# sourceMappingURL=container.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/container.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/Check.js": -/*!*********************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/Check.js ***! - \*********************************************************/ -/*! exports provided: Check */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Check\", function() { return Check; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nfunction Check(nameOrExpression, maybeExpression) {\n var name = maybeExpression ? nameOrExpression : undefined;\n var expression = maybeExpression ? maybeExpression : nameOrExpression;\n if (!expression)\n throw new Error(\"Check expression is required\");\n return function (clsOrObject, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().checks.push({\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n expression: expression\n });\n };\n}\n\n//# sourceMappingURL=Check.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/Check.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/EntityRepository.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/EntityRepository.js ***! - \********************************************************************/ -/*! exports provided: EntityRepository */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityRepository\", function() { return EntityRepository; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Used to declare a class as a custom repository.\n * Custom repository can manage some specific entity or just be generic.\n * Custom repository optionally can extend AbstractRepository, Repository or TreeRepository.\n */\nfunction EntityRepository(entity) {\n return function (target) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityRepositories.push({\n target: target,\n entity: entity,\n });\n };\n}\n\n//# sourceMappingURL=EntityRepository.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/EntityRepository.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/Exclusion.js": -/*!*************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/Exclusion.js ***! - \*************************************************************/ -/*! exports provided: Exclusion */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Exclusion\", function() { return Exclusion; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Creates a database exclusion.\n * Can be used on entity.\n * Can create exclusions with composite columns when used on entity.\n */\nfunction Exclusion(nameOrExpression, maybeExpression) {\n var name = maybeExpression ? nameOrExpression : undefined;\n var expression = maybeExpression ? maybeExpression : nameOrExpression;\n if (!expression)\n throw new Error(\"Exclusion expression is required\");\n return function (clsOrObject, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().exclusions.push({\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n expression: expression\n });\n };\n}\n\n//# sourceMappingURL=Exclusion.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/Exclusion.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/Generated.js": -/*!*************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/Generated.js ***! - \*************************************************************/ -/*! exports provided: Generated */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Generated\", function() { return Generated; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Marks a column to generate a value on entity insertion.\n * There are three types of generation strategy - increment, uuid and rowid (cockroachdb only).\n * Increment uses a number which increases by one on each insertion.\n * Uuid generates a special UUID token.\n * Rowid supports only in CockroachDB and uses `unique_rowid()` function\n *\n * Note, some databases do not support non-primary generation columns.\n */\nfunction Generated(strategy) {\n if (strategy === void 0) { strategy = \"increment\"; }\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: strategy\n });\n };\n}\n\n//# sourceMappingURL=Generated.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/Generated.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/Index.js": -/*!*********************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/Index.js ***! - \*********************************************************/ -/*! exports provided: Index */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Index\", function() { return Index; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Creates a database index.\n * Can be used on entity property or on entity.\n * Can create indices with composite columns when used on entity.\n */\nfunction Index(nameOrFieldsOrOptions, maybeFieldsOrOptions, maybeOptions) {\n // normalize parameters\n var name = typeof nameOrFieldsOrOptions === \"string\" ? nameOrFieldsOrOptions : undefined;\n var fields = typeof nameOrFieldsOrOptions === \"string\" ? maybeFieldsOrOptions : nameOrFieldsOrOptions;\n var options = (typeof nameOrFieldsOrOptions === \"object\" && !Array.isArray(nameOrFieldsOrOptions)) ? nameOrFieldsOrOptions : maybeOptions;\n if (!options)\n options = (typeof maybeFieldsOrOptions === \"object\" && !Array.isArray(maybeFieldsOrOptions)) ? maybeFieldsOrOptions : maybeOptions;\n return function (clsOrObject, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().indices.push({\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n columns: propertyName ? [propertyName] : fields,\n synchronize: options && options.synchronize === false ? false : true,\n where: options ? options.where : undefined,\n unique: options && options.unique ? true : false,\n spatial: options && options.spatial ? true : false,\n fulltext: options && options.fulltext ? true : false,\n parser: options ? options.parser : undefined,\n sparse: options && options.sparse ? true : false,\n background: options && options.background ? true : false,\n expireAfterSeconds: options ? options.expireAfterSeconds : undefined\n });\n };\n}\n\n//# sourceMappingURL=Index.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/Index.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/Unique.js": -/*!**********************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/Unique.js ***! - \**********************************************************/ -/*! exports provided: Unique */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Unique\", function() { return Unique; });\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Composite unique constraint must be set on entity classes and must specify entity's fields to be unique.\n */\nfunction Unique(nameOrFields, maybeFields) {\n var name = typeof nameOrFields === \"string\" ? nameOrFields : undefined;\n var fields = typeof nameOrFields === \"string\" ? maybeFields : nameOrFields;\n return function (clsOrObject, propertyName) {\n var columns = fields;\n if (propertyName !== undefined) {\n switch (typeof (propertyName)) {\n case \"string\":\n columns = [propertyName];\n break;\n case \"symbol\":\n columns = [propertyName.toString()];\n break;\n }\n }\n var args = {\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n columns: columns,\n };\n Object(_index__WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().uniques.push(args);\n };\n}\n\n//# sourceMappingURL=Unique.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/Unique.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/Column.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/Column.js ***! - \******************************************************************/ -/*! exports provided: Column */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Column\", function() { return Column; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _error_ColumnTypeUndefinedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/ColumnTypeUndefinedError */ \"./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js\");\n\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nfunction Column(typeOrOptions, options) {\n return function (object, propertyName) {\n // normalize parameters\n var type;\n if (typeof typeOrOptions === \"string\" || typeOrOptions instanceof Function) {\n type = typeOrOptions;\n }\n else if (typeOrOptions) {\n options = typeOrOptions;\n type = typeOrOptions.type;\n }\n if (!options)\n options = {};\n // if type is not given explicitly then try to guess it\n var reflectMetadataType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n if (!type && reflectMetadataType) // if type is not given explicitly then try to guess it\n type = reflectMetadataType;\n // check if there is no type in column options then set type from first function argument, or guessed one\n if (!options.type && type)\n options.type = type;\n // specify HSTORE type if column is HSTORE\n if (options.type === \"hstore\" && !options.hstoreType)\n options.hstoreType = reflectMetadataType === Object ? \"object\" : \"string\";\n if (typeOrOptions instanceof Function) { // register an embedded\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().embeddeds.push({\n target: object.constructor,\n propertyName: propertyName,\n isArray: reflectMetadataType === Array || options.array === true,\n prefix: options.prefix !== undefined ? options.prefix : undefined,\n type: typeOrOptions\n });\n }\n else { // register a regular column\n // if we still don't have a type then we need to give error to user that type is required\n if (!options.type)\n throw new _error_ColumnTypeUndefinedError__WEBPACK_IMPORTED_MODULE_1__[\"ColumnTypeUndefinedError\"](object, propertyName);\n // create unique\n if (options.unique === true)\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().uniques.push({ target: object.constructor, columns: [propertyName] });\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options\n });\n if (options.generated) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: typeof options.generated === \"string\" ? options.generated : \"increment\"\n });\n }\n }\n };\n}\n\n//# sourceMappingURL=Column.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/Column.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/CreateDateColumn.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/CreateDateColumn.js ***! - \****************************************************************************/ -/*! exports provided: CreateDateColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CreateDateColumn\", function() { return CreateDateColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * This column will store a creation date of the inserted object.\n * Creation date is generated and inserted only once,\n * at the first time when you create an object, the value is inserted into the table, and is never touched again.\n */\nfunction CreateDateColumn(options) {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"createDate\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=CreateDateColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/CreateDateColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/DeleteDateColumn.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/DeleteDateColumn.js ***! - \****************************************************************************/ -/*! exports provided: DeleteDateColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DeleteDateColumn\", function() { return DeleteDateColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * This column will store a delete date of the soft-deleted object.\n * This date is being updated each time you soft-delete the object.\n */\nfunction DeleteDateColumn(options) {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"deleteDate\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=DeleteDateColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/DeleteDateColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/ObjectIdColumn.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/ObjectIdColumn.js ***! - \**************************************************************************/ -/*! exports provided: ObjectIdColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObjectIdColumn\", function() { return ObjectIdColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Special type of column that is available only for MongoDB database.\n * Marks your entity's column to be an object id.\n */\nfunction ObjectIdColumn(options) {\n return function (object, propertyName) {\n // if column options are not given then create a new empty options\n if (!options)\n options = {};\n options.primary = true;\n if (!options.name)\n options.name = \"_id\";\n // create and register a new column metadata\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"objectId\",\n options: options\n });\n };\n}\n\n//# sourceMappingURL=ObjectIdColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/ObjectIdColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/PrimaryColumn.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/PrimaryColumn.js ***! - \*************************************************************************/ -/*! exports provided: PrimaryColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PrimaryColumn\", function() { return PrimaryColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _error_ColumnTypeUndefinedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/ColumnTypeUndefinedError */ \"./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js\");\n/* harmony import */ var _error_PrimaryColumnCannotBeNullableError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/PrimaryColumnCannotBeNullableError */ \"./node_modules/typeorm/browser/error/PrimaryColumnCannotBeNullableError.js\");\n\n\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n * Primary columns also creates a PRIMARY KEY for this column in a db.\n */\nfunction PrimaryColumn(typeOrOptions, options) {\n return function (object, propertyName) {\n // normalize parameters\n var type;\n if (typeof typeOrOptions === \"string\") {\n type = typeOrOptions;\n }\n else {\n options = Object.assign({}, typeOrOptions);\n }\n if (!options)\n options = {};\n // if type is not given explicitly then try to guess it\n var reflectMetadataType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n if (!type && reflectMetadataType)\n type = reflectMetadataType;\n // check if there is no type in column options then set type from first function argument, or guessed one\n if (!options.type && type)\n options.type = type;\n // if we still don't have a type then we need to give error to user that type is required\n if (!options.type)\n throw new _error_ColumnTypeUndefinedError__WEBPACK_IMPORTED_MODULE_1__[\"ColumnTypeUndefinedError\"](object, propertyName);\n // check if column is not nullable, because we cannot allow a primary key to be nullable\n if (options.nullable)\n throw new _error_PrimaryColumnCannotBeNullableError__WEBPACK_IMPORTED_MODULE_2__[\"PrimaryColumnCannotBeNullableError\"](object, propertyName);\n // explicitly set a primary to column options\n options.primary = true;\n // create and register a new column metadata\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options\n });\n if (options.generated) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: typeof options.generated === \"string\" ? options.generated : \"increment\"\n });\n }\n };\n}\n\n//# sourceMappingURL=PrimaryColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/PrimaryColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/PrimaryGeneratedColumn.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/PrimaryGeneratedColumn.js ***! - \**********************************************************************************/ -/*! exports provided: PrimaryGeneratedColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PrimaryGeneratedColumn\", function() { return PrimaryGeneratedColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n * This column creates an integer PRIMARY COLUMN with generated set to true.\n */\nfunction PrimaryGeneratedColumn(strategyOrOptions, maybeOptions) {\n // normalize parameters\n var options = {};\n var strategy;\n if (strategyOrOptions) {\n if (typeof strategyOrOptions === \"string\")\n strategy = strategyOrOptions;\n if (strategyOrOptions instanceof Object) {\n strategy = \"increment\";\n Object.assign(options, strategyOrOptions);\n }\n }\n else {\n strategy = \"increment\";\n }\n if (maybeOptions instanceof Object)\n Object.assign(options, maybeOptions);\n return function (object, propertyName) {\n // if column type is not explicitly set then determine it based on generation strategy\n if (!options.type) {\n if (strategy === \"increment\") {\n options.type = Number;\n }\n else if (strategy === \"uuid\") {\n options.type = \"uuid\";\n }\n else if (strategy === \"rowid\") {\n options.type = \"int\";\n }\n }\n // explicitly set a primary and generated to column options\n options.primary = true;\n // register column metadata args\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options\n });\n // register generated metadata args\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: strategy\n });\n };\n}\n\n//# sourceMappingURL=PrimaryGeneratedColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/PrimaryGeneratedColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/UpdateDateColumn.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/UpdateDateColumn.js ***! - \****************************************************************************/ -/*! exports provided: UpdateDateColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UpdateDateColumn\", function() { return UpdateDateColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * This column will store an update date of the updated object.\n * This date is being updated each time you persist the object.\n */\nfunction UpdateDateColumn(options) {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"updateDate\",\n options: options ? options : {}\n });\n };\n}\n\n//# sourceMappingURL=UpdateDateColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/UpdateDateColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/VersionColumn.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/VersionColumn.js ***! - \*************************************************************************/ -/*! exports provided: VersionColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VersionColumn\", function() { return VersionColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * This column will store a number - version of the entity.\n * Every time your entity will be persisted, this number will be increased by one -\n * so you can organize visioning and update strategies of your entity.\n */\nfunction VersionColumn(options) {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"version\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=VersionColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/VersionColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/columns/ViewColumn.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/columns/ViewColumn.js ***! - \**********************************************************************/ -/*! exports provided: ViewColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ViewColumn\", function() { return ViewColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * ViewColumn decorator is used to mark a specific class property as a view column.\n */\nfunction ViewColumn(options) {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=ViewColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/columns/ViewColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/entity-view/ViewEntity.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/entity-view/ViewEntity.js ***! - \**************************************************************************/ -/*! exports provided: ViewEntity */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ViewEntity\", function() { return ViewEntity; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * This decorator is used to mark classes that will be an entity view.\n * Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it.\n */\nfunction ViewEntity(nameOrOptions, maybeOptions) {\n var options = (typeof nameOrOptions === \"object\" ? nameOrOptions : maybeOptions) || {};\n var name = typeof nameOrOptions === \"string\" ? nameOrOptions : options.name;\n return function (target) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().tables.push({\n target: target,\n name: name,\n expression: options.expression,\n type: \"view\",\n database: options.database ? options.database : undefined,\n schema: options.schema ? options.schema : undefined,\n synchronize: options.synchronize === false ? false : true,\n materialized: !!options.materialized\n });\n };\n}\n\n//# sourceMappingURL=ViewEntity.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/entity-view/ViewEntity.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/entity/ChildEntity.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/entity/ChildEntity.js ***! - \**********************************************************************/ -/*! exports provided: ChildEntity */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChildEntity\", function() { return ChildEntity; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Special type of the table used in the single-table inherited tables.\n */\nfunction ChildEntity(discriminatorValue) {\n return function (target) {\n // register a table metadata\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().tables.push({\n target: target,\n type: \"entity-child\",\n });\n // register discriminator value if it was provided\n if (typeof discriminatorValue !== 'undefined') {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().discriminatorValues.push({\n target: target,\n value: discriminatorValue\n });\n }\n };\n}\n\n//# sourceMappingURL=ChildEntity.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/entity/ChildEntity.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/entity/Entity.js": -/*!*****************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/entity/Entity.js ***! - \*****************************************************************/ -/*! exports provided: Entity */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Entity\", function() { return Entity; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * This decorator is used to mark classes that will be an entity (table or document depend on database type).\n * Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it.\n */\nfunction Entity(nameOrOptions, maybeOptions) {\n var options = (typeof nameOrOptions === \"object\" ? nameOrOptions : maybeOptions) || {};\n var name = typeof nameOrOptions === \"string\" ? nameOrOptions : options.name;\n return function (target) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().tables.push({\n target: target,\n name: name,\n type: \"regular\",\n orderBy: options.orderBy ? options.orderBy : undefined,\n engine: options.engine ? options.engine : undefined,\n database: options.database ? options.database : undefined,\n schema: options.schema ? options.schema : undefined,\n synchronize: options.synchronize,\n withoutRowid: options.withoutRowid\n });\n };\n}\n\n//# sourceMappingURL=Entity.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/entity/Entity.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/entity/TableInheritance.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/entity/TableInheritance.js ***! - \***************************************************************************/ -/*! exports provided: TableInheritance */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableInheritance\", function() { return TableInheritance; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Sets for entity to use table inheritance pattern.\n */\nfunction TableInheritance(options) {\n return function (target) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().inheritances.push({\n target: target,\n pattern: options && options.pattern ? options.pattern : \"STI\",\n column: options && options.column ? typeof options.column === \"string\" ? { name: options.column } : options.column : undefined\n });\n };\n}\n\n//# sourceMappingURL=TableInheritance.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/entity/TableInheritance.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/AfterInsert.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/AfterInsert.js ***! - \*************************************************************************/ -/*! exports provided: AfterInsert */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AfterInsert\", function() { return AfterInsert; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n\n\n/**\n * Calls a method on which this decorator is applied after this entity insertion.\n */\nfunction AfterInsert() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__[\"EventListenerTypes\"].AFTER_INSERT\n });\n };\n}\n\n//# sourceMappingURL=AfterInsert.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterInsert.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/AfterLoad.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/AfterLoad.js ***! - \***********************************************************************/ -/*! exports provided: AfterLoad */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AfterLoad\", function() { return AfterLoad; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n\n\n/**\n * Calls a method on which this decorator is applied after entity is loaded.\n */\nfunction AfterLoad() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__[\"EventListenerTypes\"].AFTER_LOAD\n });\n };\n}\n\n//# sourceMappingURL=AfterLoad.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterLoad.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/AfterRemove.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/AfterRemove.js ***! - \*************************************************************************/ -/*! exports provided: AfterRemove */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AfterRemove\", function() { return AfterRemove; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n\n\n/**\n * Calls a method on which this decorator is applied after this entity removal.\n */\nfunction AfterRemove() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__[\"EventListenerTypes\"].AFTER_REMOVE\n });\n };\n}\n\n//# sourceMappingURL=AfterRemove.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterRemove.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/AfterUpdate.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/AfterUpdate.js ***! - \*************************************************************************/ -/*! exports provided: AfterUpdate */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AfterUpdate\", function() { return AfterUpdate; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n\n\n/**\n * Calls a method on which this decorator is applied after this entity update.\n */\nfunction AfterUpdate() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__[\"EventListenerTypes\"].AFTER_UPDATE\n });\n };\n}\n\n//# sourceMappingURL=AfterUpdate.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterUpdate.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/BeforeInsert.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/BeforeInsert.js ***! - \**************************************************************************/ -/*! exports provided: BeforeInsert */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BeforeInsert\", function() { return BeforeInsert; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n\n\n/**\n * Calls a method on which this decorator is applied before this entity insertion.\n */\nfunction BeforeInsert() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__[\"EventListenerTypes\"].BEFORE_INSERT\n });\n };\n}\n\n//# sourceMappingURL=BeforeInsert.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/BeforeInsert.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/BeforeRemove.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/BeforeRemove.js ***! - \**************************************************************************/ -/*! exports provided: BeforeRemove */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BeforeRemove\", function() { return BeforeRemove; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n\n\n/**\n * Calls a method on which this decorator is applied before this entity removal.\n */\nfunction BeforeRemove() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__[\"EventListenerTypes\"].BEFORE_REMOVE\n });\n };\n}\n\n//# sourceMappingURL=BeforeRemove.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/BeforeRemove.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/BeforeUpdate.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/BeforeUpdate.js ***! - \**************************************************************************/ -/*! exports provided: BeforeUpdate */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BeforeUpdate\", function() { return BeforeUpdate; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n\n\n/**\n * Calls a method on which this decorator is applied before this entity update.\n */\nfunction BeforeUpdate() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_1__[\"EventListenerTypes\"].BEFORE_UPDATE\n });\n };\n}\n\n//# sourceMappingURL=BeforeUpdate.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/BeforeUpdate.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/listeners/EventSubscriber.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/listeners/EventSubscriber.js ***! - \*****************************************************************************/ -/*! exports provided: EventSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventSubscriber\", function() { return EventSubscriber; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Classes decorated with this decorator will listen to ORM events and their methods will be triggered when event\n * occurs. Those classes must implement EventSubscriberInterface interface.\n */\nfunction EventSubscriber() {\n return function (target) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().entitySubscribers.push({\n target: target\n });\n };\n}\n\n//# sourceMappingURL=EventSubscriber.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/listeners/EventSubscriber.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/options/ColumnOptions.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/options/ColumnOptions.js ***! - \*************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=ColumnOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/options/ColumnOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/options/EntityOptions.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/options/EntityOptions.js ***! - \*************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=EntityOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/options/EntityOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/options/IndexOptions.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/options/IndexOptions.js ***! - \************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=IndexOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/options/IndexOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/options/JoinColumnOptions.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/options/JoinColumnOptions.js ***! - \*****************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=JoinColumnOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/options/JoinColumnOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/options/JoinTableOptions.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/options/JoinTableOptions.js ***! - \****************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=JoinTableOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/options/JoinTableOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/options/RelationOptions.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/options/RelationOptions.js ***! - \***************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=RelationOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/options/RelationOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/options/ValueTransformer.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/options/ValueTransformer.js ***! - \****************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=ValueTransformer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/options/ValueTransformer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/JoinColumn.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/JoinColumn.js ***! - \************************************************************************/ -/*! exports provided: JoinColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JoinColumn\", function() { return JoinColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * JoinColumn decorator used on one-to-one relations to specify owner side of relationship.\n * It also can be used on both one-to-one and many-to-one relations to specify custom column name\n * or custom referenced column.\n */\nfunction JoinColumn(optionsOrOptionsArray) {\n return function (object, propertyName) {\n var options = Array.isArray(optionsOrOptionsArray) ? optionsOrOptionsArray : [optionsOrOptionsArray || {}];\n options.forEach(function (options) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().joinColumns.push({\n target: object.constructor,\n propertyName: propertyName,\n name: options.name,\n referencedColumnName: options.referencedColumnName\n });\n });\n };\n}\n\n//# sourceMappingURL=JoinColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/JoinColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/JoinTable.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/JoinTable.js ***! - \***********************************************************************/ -/*! exports provided: JoinTable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JoinTable\", function() { return JoinTable; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * JoinTable decorator is used in many-to-many relationship to specify owner side of relationship.\n * Its also used to set a custom junction table's name, column names and referenced columns.\n */\nfunction JoinTable(options) {\n return function (object, propertyName) {\n options = options || {};\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().joinTables.push({\n target: object.constructor,\n propertyName: propertyName,\n name: options.name,\n joinColumns: (options && options.joinColumn ? [options.joinColumn] : options.joinColumns),\n inverseJoinColumns: (options && options.inverseJoinColumn ? [options.inverseJoinColumn] : options.inverseJoinColumns),\n schema: options && options.schema ? options.schema : undefined,\n database: options && options.database ? options.database : undefined,\n });\n };\n}\n\n//# sourceMappingURL=JoinTable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/JoinTable.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/ManyToMany.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/ManyToMany.js ***! - \************************************************************************/ -/*! exports provided: ManyToMany */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ManyToMany\", function() { return ManyToMany; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Many-to-many is a type of relationship when Entity1 can have multiple instances of Entity2, and Entity2 can have\n * multiple instances of Entity1. To achieve it, this type of relation creates a junction table, where it storage\n * entity1 and entity2 ids. This is owner side of the relationship.\n */\nfunction ManyToMany(typeFunctionOrTarget, inverseSideOrOptions, options) {\n // normalize parameters\n var inverseSideProperty;\n if (typeof inverseSideOrOptions === \"object\") {\n options = inverseSideOrOptions;\n }\n else {\n inverseSideProperty = inverseSideOrOptions;\n }\n return function (object, propertyName) {\n if (!options)\n options = {};\n // now try to determine it its lazy relation\n var isLazy = options.lazy === true;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n relationType: \"many-to-many\",\n isLazy: isLazy,\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSideProperty,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=ManyToMany.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/ManyToMany.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/ManyToOne.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/ManyToOne.js ***! - \***********************************************************************/ -/*! exports provided: ManyToOne */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ManyToOne\", function() { return ManyToOne; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * A many-to-one relation allows creating the type of relation where Entity1 can have a single instance of Entity2, but\n * Entity2 can have multiple instances of Entity1. Entity1 is the owner of the relationship, and stores the id of\n * Entity2 on its side of the relation.\n */\nfunction ManyToOne(typeFunctionOrTarget, inverseSideOrOptions, options) {\n // Normalize parameters.\n var inverseSideProperty;\n if (typeof inverseSideOrOptions === \"object\") {\n options = inverseSideOrOptions;\n }\n else {\n inverseSideProperty = inverseSideOrOptions;\n }\n return function (object, propertyName) {\n if (!options)\n options = {};\n // Now try to determine if it is a lazy relation.\n var isLazy = options && options.lazy === true ? true : false;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n relationType: \"many-to-one\",\n isLazy: isLazy,\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSideProperty,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=ManyToOne.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/ManyToOne.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/OneToMany.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/OneToMany.js ***! - \***********************************************************************/ -/*! exports provided: OneToMany */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OneToMany\", function() { return OneToMany; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * A one-to-many relation allows creating the type of relation where Entity1 can have multiple instances of Entity2,\n * but Entity2 has only one Entity1. Entity2 is the owner of the relationship, and stores the id of Entity1 on its\n * side of the relation.\n */\nfunction OneToMany(typeFunctionOrTarget, inverseSide, options) {\n return function (object, propertyName) {\n if (!options)\n options = {};\n // Now try to determine if it is a lazy relation.\n var isLazy = options && options.lazy === true ? true : false;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n isLazy: isLazy,\n relationType: \"one-to-many\",\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSide,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=OneToMany.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/OneToMany.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/OneToOne.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/OneToOne.js ***! - \**********************************************************************/ -/*! exports provided: OneToOne */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OneToOne\", function() { return OneToOne; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * One-to-one relation allows to create direct relation between two entities. Entity1 have only one Entity2.\n * Entity1 is an owner of the relationship, and storages Entity1 id on its own side.\n */\nfunction OneToOne(typeFunctionOrTarget, inverseSideOrOptions, options) {\n // normalize parameters\n var inverseSideProperty;\n if (typeof inverseSideOrOptions === \"object\") {\n options = inverseSideOrOptions;\n }\n else {\n inverseSideProperty = inverseSideOrOptions;\n }\n return function (object, propertyName) {\n if (!options)\n options = {};\n // now try to determine it its lazy relation\n var isLazy = options && options.lazy === true ? true : false;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n isLazy: isLazy,\n relationType: \"one-to-one\",\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSideProperty,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=OneToOne.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/OneToOne.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/RelationCount.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/RelationCount.js ***! - \***************************************************************************/ -/*! exports provided: RelationCount */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationCount\", function() { return RelationCount; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Holds a number of children in the closure table of the column.\n *\n * @deprecated Do not use this decorator, it may be removed in the future versions\n */\nfunction RelationCount(relation, alias, queryBuilderFactory) {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relationCounts.push({\n target: object.constructor,\n propertyName: propertyName,\n relation: relation,\n alias: alias,\n queryBuilderFactory: queryBuilderFactory\n });\n };\n}\n\n//# sourceMappingURL=RelationCount.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/RelationCount.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/relations/RelationId.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/relations/RelationId.js ***! - \************************************************************************/ -/*! exports provided: RelationId */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationId\", function() { return RelationId; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Special decorator used to extract relation id into separate entity property.\n *\n * @experimental\n */\nfunction RelationId(relation, alias, queryBuilderFactory) {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relationIds.push({\n target: object.constructor,\n propertyName: propertyName,\n relation: relation,\n alias: alias,\n queryBuilderFactory: queryBuilderFactory\n });\n };\n}\n\n//# sourceMappingURL=RelationId.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/relations/RelationId.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/transaction/Transaction.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/transaction/Transaction.js ***! - \***************************************************************************/ -/*! exports provided: Transaction */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transaction\", function() { return Transaction; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n\nfunction Transaction(connectionOrOptions) {\n return function (target, methodName, descriptor) {\n // save original method - we gonna need it\n var originalMethod = descriptor.value;\n // override method descriptor with proxy method\n descriptor.value = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var connectionName = \"default\";\n var isolationLevel = undefined;\n if (connectionOrOptions) {\n if (typeof connectionOrOptions === \"string\") {\n connectionName = connectionOrOptions;\n }\n else {\n if (connectionOrOptions.connectionName) {\n connectionName = connectionOrOptions.connectionName;\n }\n if (connectionOrOptions.isolation) {\n isolationLevel = connectionOrOptions.isolation;\n }\n }\n }\n var transactionCallback = function (entityManager) {\n var argsWithInjectedTransactionManagerAndRepositories;\n // filter all @TransactionManager() and @TransactionRepository() decorator usages for this method\n var transactionEntityManagerMetadatas = Object(___WEBPACK_IMPORTED_MODULE_1__[\"getMetadataArgsStorage\"])()\n .filterTransactionEntityManagers(target.constructor, methodName)\n .reverse();\n var transactionRepositoryMetadatas = Object(___WEBPACK_IMPORTED_MODULE_1__[\"getMetadataArgsStorage\"])()\n .filterTransactionRepository(target.constructor, methodName)\n .reverse();\n // if there are @TransactionManager() decorator usages the inject them\n if (transactionEntityManagerMetadatas.length > 0) {\n argsWithInjectedTransactionManagerAndRepositories = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(args));\n // replace method params with injection of transactionEntityManager\n transactionEntityManagerMetadatas.forEach(function (metadata) {\n argsWithInjectedTransactionManagerAndRepositories.splice(metadata.index, 0, entityManager);\n });\n }\n else if (transactionRepositoryMetadatas.length === 0) { // otherwise if there's no transaction repositories in use, inject it as a first parameter\n argsWithInjectedTransactionManagerAndRepositories = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([entityManager], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(args));\n }\n else {\n argsWithInjectedTransactionManagerAndRepositories = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(args));\n }\n // for every usage of @TransactionRepository decorator\n transactionRepositoryMetadatas.forEach(function (metadata) {\n var repositoryInstance;\n // detect type of the repository and get instance from transaction entity manager\n switch (metadata.repositoryType) {\n case ___WEBPACK_IMPORTED_MODULE_1__[\"Repository\"]:\n repositoryInstance = entityManager.getRepository(metadata.entityType);\n break;\n case ___WEBPACK_IMPORTED_MODULE_1__[\"MongoRepository\"]:\n repositoryInstance = entityManager.getMongoRepository(metadata.entityType);\n break;\n case ___WEBPACK_IMPORTED_MODULE_1__[\"TreeRepository\"]:\n repositoryInstance = entityManager.getTreeRepository(metadata.entityType);\n break;\n // if not the TypeORM's ones, there must be custom repository classes\n default:\n repositoryInstance = entityManager.getCustomRepository(metadata.repositoryType);\n }\n // replace method param with injection of repository instance\n argsWithInjectedTransactionManagerAndRepositories.splice(metadata.index, 0, repositoryInstance);\n });\n return originalMethod.apply(_this, argsWithInjectedTransactionManagerAndRepositories);\n };\n if (isolationLevel) {\n return Object(___WEBPACK_IMPORTED_MODULE_1__[\"getConnection\"])(connectionName).manager.transaction(isolationLevel, transactionCallback);\n }\n else {\n return Object(___WEBPACK_IMPORTED_MODULE_1__[\"getConnection\"])(connectionName).manager.transaction(transactionCallback);\n }\n };\n };\n}\n\n//# sourceMappingURL=Transaction.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/transaction/Transaction.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/transaction/TransactionManager.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/transaction/TransactionManager.js ***! - \**********************************************************************************/ -/*! exports provided: TransactionManager */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransactionManager\", function() { return TransactionManager; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Injects transaction's entity manager into the method wrapped with @Transaction decorator.\n */\nfunction TransactionManager() {\n return function (object, methodName, index) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().transactionEntityManagers.push({\n target: object.constructor,\n methodName: methodName,\n index: index,\n });\n };\n}\n\n//# sourceMappingURL=TransactionManager.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/transaction/TransactionManager.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/transaction/TransactionRepository.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/transaction/TransactionRepository.js ***! - \*************************************************************************************/ -/*! exports provided: TransactionRepository */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransactionRepository\", function() { return TransactionRepository; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _error_CannotReflectMethodParameterTypeError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/CannotReflectMethodParameterTypeError */ \"./node_modules/typeorm/browser/error/CannotReflectMethodParameterTypeError.js\");\n\n\n/**\n * Injects transaction's repository into the method wrapped with @Transaction decorator.\n */\nfunction TransactionRepository(entityType) {\n return function (object, methodName, index) {\n // get repository type\n var repositoryType;\n try {\n repositoryType = Reflect.getOwnMetadata(\"design:paramtypes\", object, methodName)[index];\n }\n catch (err) {\n throw new _error_CannotReflectMethodParameterTypeError__WEBPACK_IMPORTED_MODULE_1__[\"CannotReflectMethodParameterTypeError\"](object.constructor, methodName);\n }\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().transactionRepositories.push({\n target: object.constructor,\n methodName: methodName,\n index: index,\n repositoryType: repositoryType,\n entityType: entityType,\n });\n };\n}\n\n//# sourceMappingURL=TransactionRepository.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/transaction/TransactionRepository.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/tree/Tree.js": -/*!*************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/tree/Tree.js ***! - \*************************************************************/ -/*! exports provided: Tree */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Tree\", function() { return Tree; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Marks entity to work like a tree.\n * Tree pattern that will be used for the tree entity should be specified.\n * @TreeParent decorator must be used in tree entities.\n * TreeRepository can be used to manipulate with tree entities.\n */\nfunction Tree(type, options) {\n return function (target) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().trees.push({\n target: target,\n type: type,\n options: type === \"closure-table\" ? options : undefined\n });\n };\n}\n\n//# sourceMappingURL=Tree.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/tree/Tree.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/tree/TreeChildren.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/tree/TreeChildren.js ***! - \*********************************************************************/ -/*! exports provided: TreeChildren */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TreeChildren\", function() { return TreeChildren; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Marks a entity property as a children of the tree.\n * \"Tree children\" will contain all children (bind) of this entity.\n */\nfunction TreeChildren(options) {\n return function (object, propertyName) {\n if (!options)\n options = {};\n // now try to determine it its lazy relation\n var reflectedType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n var isLazy = (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\") || false;\n // add one-to-many relation for this\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relations.push({\n isTreeChildren: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"one-to-many\",\n type: function () { return object.constructor; },\n options: options\n });\n };\n}\n\n//# sourceMappingURL=TreeChildren.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/tree/TreeChildren.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/tree/TreeLevelColumn.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/tree/TreeLevelColumn.js ***! - \************************************************************************/ -/*! exports provided: TreeLevelColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TreeLevelColumn\", function() { return TreeLevelColumn; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Creates a \"level\"/\"length\" column to the table that holds a closure table.\n */\nfunction TreeLevelColumn() {\n return function (object, propertyName) {\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"treeLevel\",\n options: {}\n });\n };\n}\n\n//# sourceMappingURL=TreeLevelColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/tree/TreeLevelColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/decorator/tree/TreeParent.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/decorator/tree/TreeParent.js ***! - \*******************************************************************/ -/*! exports provided: TreeParent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TreeParent\", function() { return TreeParent; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ */ \"./node_modules/typeorm/browser/index.js\");\n\n/**\n * Marks a entity property as a parent of the tree.\n * \"Tree parent\" indicates who owns (is a parent) of this entity in tree structure.\n */\nfunction TreeParent() {\n return function (object, propertyName) {\n // now try to determine it its lazy relation\n var reflectedType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n var isLazy = (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\") || false;\n Object(___WEBPACK_IMPORTED_MODULE_0__[\"getMetadataArgsStorage\"])().relations.push({\n isTreeParent: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"many-to-one\",\n type: function () { return object.constructor; },\n options: {}\n });\n };\n}\n\n//# sourceMappingURL=TreeParent.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/decorator/tree/TreeParent.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/DriverFactory.js": -/*!**************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/DriverFactory.js ***! - \**************************************************************/ -/*! exports provided: DriverFactory */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DriverFactory\", function() { return DriverFactory; });\n/* harmony import */ var _error_MissingDriverError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/MissingDriverError */ \"./node_modules/typeorm/browser/error/MissingDriverError.js\");\n/* harmony import */ var _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cockroachdb/CockroachDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _cordova_CordovaDriver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cordova/CordovaDriver */ \"./node_modules/typeorm/browser/driver/cordova/CordovaDriver.js\");\n/* harmony import */ var _react_native_ReactNativeDriver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./react-native/ReactNativeDriver */ \"./node_modules/typeorm/browser/driver/react-native/ReactNativeDriver.js\");\n/* harmony import */ var _nativescript_NativescriptDriver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nativescript/NativescriptDriver */ \"./node_modules/typeorm/browser/driver/nativescript/NativescriptDriver.js\");\n/* harmony import */ var _sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sqljs/SqljsDriver */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js\");\n/* harmony import */ var _expo_ExpoDriver__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./expo/ExpoDriver */ \"./node_modules/typeorm/browser/driver/expo/ExpoDriver.js\");\n/* harmony import */ var _aurora_data_api_pg_AuroraDataApiPostgresDriver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./aurora-data-api-pg/AuroraDataApiPostgresDriver */ \"./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Helps to create drivers.\n */\nvar DriverFactory = /** @class */ (function () {\n function DriverFactory() {\n }\n /**\n * Creates a new driver depend on a given connection's driver type.\n */\n DriverFactory.prototype.create = function (connection) {\n var type = connection.options.type;\n switch (type) {\n case \"mysql\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"](connection);\n case \"postgres\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"](connection);\n case \"cockroachdb\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"](connection);\n case \"sap\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"](connection);\n case \"mariadb\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"](connection);\n case \"sqlite\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqliteDriver\"](connection);\n case \"better-sqlite3\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"BetterSqlite3Driver\"](connection);\n case \"cordova\":\n return new _cordova_CordovaDriver__WEBPACK_IMPORTED_MODULE_2__[\"CordovaDriver\"](connection);\n case \"nativescript\":\n return new _nativescript_NativescriptDriver__WEBPACK_IMPORTED_MODULE_4__[\"NativescriptDriver\"](connection);\n case \"react-native\":\n return new _react_native_ReactNativeDriver__WEBPACK_IMPORTED_MODULE_3__[\"ReactNativeDriver\"](connection);\n case \"sqljs\":\n return new _sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_5__[\"SqljsDriver\"](connection);\n case \"oracle\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"](connection);\n case \"mssql\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"](connection);\n case \"mongodb\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoDriver\"](connection);\n case \"expo\":\n return new _expo_ExpoDriver__WEBPACK_IMPORTED_MODULE_6__[\"ExpoDriver\"](connection);\n case \"aurora-data-api\":\n return new _cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"](connection);\n case \"aurora-data-api-pg\":\n return new _aurora_data_api_pg_AuroraDataApiPostgresDriver__WEBPACK_IMPORTED_MODULE_7__[\"AuroraDataApiPostgresDriver\"](connection);\n default:\n throw new _error_MissingDriverError__WEBPACK_IMPORTED_MODULE_0__[\"MissingDriverError\"](type);\n }\n };\n return DriverFactory;\n}());\n\n\n//# sourceMappingURL=DriverFactory.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/DriverFactory.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/DriverUtils.js": -/*!************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/DriverUtils.js ***! - \************************************************************/ -/*! exports provided: DriverUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DriverUtils\", function() { return DriverUtils; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_StringUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/StringUtils */ \"./node_modules/typeorm/browser/util/StringUtils.js\");\n\n\n/**\n * Common driver utility functions.\n */\nvar DriverUtils = /** @class */ (function () {\n function DriverUtils() {\n }\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Normalizes and builds a new driver options.\n * Extracts settings from connection url and sets to a new options object.\n */\n DriverUtils.buildDriverOptions = function (options, buildOptions) {\n var e_1, _a;\n if (options.url) {\n var urlDriverOptions = this.parseConnectionUrl(options.url);\n if (buildOptions && buildOptions.useSid && urlDriverOptions.database) {\n urlDriverOptions.sid = urlDriverOptions.database;\n }\n try {\n for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(Object.keys(urlDriverOptions)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof urlDriverOptions[key] === \"undefined\") {\n delete urlDriverOptions[key];\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return Object.assign({}, options, urlDriverOptions);\n }\n return Object.assign({}, options);\n };\n /**\n * buildDriverOptions for MongodDB only to support replica set\n */\n DriverUtils.buildMongoDBDriverOptions = function (options, buildOptions) {\n var e_2, _a;\n if (options.url) {\n var urlDriverOptions = this.parseMongoDBConnectionUrl(options.url);\n if (buildOptions && buildOptions.useSid && urlDriverOptions.database) {\n urlDriverOptions.sid = urlDriverOptions.database;\n }\n try {\n for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(Object.keys(urlDriverOptions)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof urlDriverOptions[key] === \"undefined\") {\n delete urlDriverOptions[key];\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return Object.assign({}, options, urlDriverOptions);\n }\n return Object.assign({}, options);\n };\n /**\n * Builds column alias from given alias name and column name.\n *\n * If alias length is greater than the limit (if any) allowed by the current\n * driver, replaces it with a hashed string.\n *\n * @param driver Current `Driver`.\n * @param alias Alias part.\n * @param column Name of the column to be concatened to `alias`.\n *\n * @return An alias allowing to select/transform the target `column`.\n */\n DriverUtils.buildColumnAlias = function (_a, alias, column) {\n var maxAliasLength = _a.maxAliasLength;\n var columnAliasName = alias + \"_\" + column;\n if (maxAliasLength && maxAliasLength > 0 && columnAliasName.length > maxAliasLength) {\n return Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_1__[\"hash\"])(columnAliasName, { length: maxAliasLength });\n }\n return columnAliasName;\n };\n // -------------------------------------------------------------------------\n // Private Static Methods\n // -------------------------------------------------------------------------\n /**\n * Extracts connection data from the connection url.\n */\n DriverUtils.parseConnectionUrl = function (url) {\n var type = url.split(\":\")[0];\n var firstSlashes = url.indexOf(\"//\");\n var preBase = url.substr(firstSlashes + 2);\n var secondSlash = preBase.indexOf(\"/\");\n var base = (secondSlash !== -1) ? preBase.substr(0, secondSlash) : preBase;\n var afterBase = (secondSlash !== -1) ? preBase.substr(secondSlash + 1) : undefined;\n // remove mongodb query params\n if (afterBase && afterBase.indexOf(\"?\") !== -1) {\n afterBase = afterBase.substr(0, afterBase.indexOf(\"?\"));\n }\n var lastAtSign = base.lastIndexOf(\"@\");\n var usernameAndPassword = base.substr(0, lastAtSign);\n var hostAndPort = base.substr(lastAtSign + 1);\n var username = usernameAndPassword;\n var password = \"\";\n var firstColon = usernameAndPassword.indexOf(\":\");\n if (firstColon !== -1) {\n username = usernameAndPassword.substr(0, firstColon);\n password = usernameAndPassword.substr(firstColon + 1);\n }\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(hostAndPort.split(\":\"), 2), host = _a[0], port = _a[1];\n return {\n type: type,\n host: host,\n username: decodeURIComponent(username),\n password: decodeURIComponent(password),\n port: port ? parseInt(port) : undefined,\n database: afterBase || undefined\n };\n };\n /**\n * Extracts connection data from the connection url for MongoDB to support replica set.\n */\n DriverUtils.parseMongoDBConnectionUrl = function (url) {\n var _a;\n var type = url.split(\":\")[0];\n var firstSlashes = url.indexOf(\"//\");\n var preBase = url.substr(firstSlashes + 2);\n var secondSlash = preBase.indexOf(\"/\");\n var base = (secondSlash !== -1) ? preBase.substr(0, secondSlash) : preBase;\n var afterBase = (secondSlash !== -1) ? preBase.substr(secondSlash + 1) : undefined;\n var afterQuestionMark = \"\";\n var host = undefined;\n var port = undefined;\n var hostReplicaSet = undefined;\n var replicaSet = undefined;\n // remove mongodb query params\n if (afterBase && afterBase.indexOf(\"?\") !== -1) {\n // split params to get replica set\n afterQuestionMark = afterBase.substr((afterBase.indexOf(\"?\") + 1), afterBase.length);\n replicaSet = afterQuestionMark.split(\"=\")[1];\n afterBase = afterBase.substr(0, afterBase.indexOf(\"?\"));\n }\n var lastAtSign = base.lastIndexOf(\"@\");\n var usernameAndPassword = base.substr(0, lastAtSign);\n var hostAndPort = base.substr(lastAtSign + 1);\n var username = usernameAndPassword;\n var password = \"\";\n var firstColon = usernameAndPassword.indexOf(\":\");\n if (firstColon !== -1) {\n username = usernameAndPassword.substr(0, firstColon);\n password = usernameAndPassword.substr(firstColon + 1);\n }\n if (replicaSet) {\n hostReplicaSet = hostAndPort;\n }\n else {\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(hostAndPort.split(\":\"), 2), host = _a[0], port = _a[1];\n }\n return {\n type: type,\n host: host,\n hostReplicaSet: hostReplicaSet,\n username: decodeURIComponent(username),\n password: decodeURIComponent(password),\n port: port ? parseInt(port) : undefined,\n database: afterBase || undefined,\n replicaSet: replicaSet || undefined\n };\n };\n return DriverUtils;\n}());\n\n\n//# sourceMappingURL=DriverUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/DriverUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/Query.js": -/*!******************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/Query.js ***! - \******************************************************/ -/*! exports provided: Query */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Query\", function() { return Query; });\n/**\n * This class stores query and its parameters\n */\nvar Query = /** @class */ (function () {\n function Query(query, parameters) {\n this.query = query;\n this.parameters = parameters;\n }\n return Query;\n}());\n\n\n//# sourceMappingURL=Query.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/Query.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/SqlInMemory.js": -/*!************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/SqlInMemory.js ***! - \************************************************************/ -/*! exports provided: SqlInMemory */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SqlInMemory\", function() { return SqlInMemory; });\n/**\n * This class stores up and down queries needed for migrations functionality.\n */\nvar SqlInMemory = /** @class */ (function () {\n function SqlInMemory() {\n this.upQueries = [];\n this.downQueries = [];\n }\n return SqlInMemory;\n}());\n\n\n//# sourceMappingURL=SqlInMemory.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/SqlInMemory.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js ***! - \***********************************************************************************************/ -/*! exports provided: AuroraDataApiPostgresDriver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AuroraDataApiPostgresDriver\", function() { return AuroraDataApiPostgresDriver; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../postgres/PostgresDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../platform/PlatformTools */ \"./node_modules/typeorm/browser/platform/BrowserPlatformTools.js\");\n/* harmony import */ var _aurora_data_api_pg_AuroraDataApiPostgresQueryRunner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../aurora-data-api-pg/AuroraDataApiPostgresQueryRunner */ \"./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js\");\n/* harmony import */ var _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/ApplyValueTransformers */ \"./node_modules/typeorm/browser/util/ApplyValueTransformers.js\");\n\n\n\n\n\nvar PostgresWrapper = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PostgresWrapper, _super);\n function PostgresWrapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PostgresWrapper;\n}(_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]));\nvar AuroraDataApiPostgresDriver = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AuroraDataApiPostgresDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AuroraDataApiPostgresDriver(connection) {\n var _this = _super.call(this) || this;\n _this.connection = connection;\n _this.options = connection.options;\n _this.isReplicated = false;\n // load data-api package\n _this.loadDependencies();\n _this.client = new _this.DataApiDriver(_this.options.region, _this.options.secretArn, _this.options.resourceArn, _this.options.database, function (query, parameters) { return _this.connection.logger.logQuery(query, parameters); }, _this.options.serviceConfigOptions, _this.options.formatOptions);\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n * Based on pooling options, it can either create connection immediately,\n * either create a pool and create connection when needed.\n */\n AuroraDataApiPostgresDriver.prototype.connect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Closes connection with database.\n */\n AuroraDataApiPostgresDriver.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n AuroraDataApiPostgresDriver.prototype.createQueryRunner = function (mode) {\n var _this = this;\n return new _aurora_data_api_pg_AuroraDataApiPostgresQueryRunner__WEBPACK_IMPORTED_MODULE_3__[\"AuroraDataApiPostgresQueryRunner\"](this, new this.DataApiDriver(this.options.region, this.options.secretArn, this.options.resourceArn, this.options.database, function (query, parameters) { return _this.connection.logger.logQuery(query, parameters); }, this.options.serviceConfigOptions, this.options.formatOptions), mode);\n };\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n AuroraDataApiPostgresDriver.prototype.preparePersistentValue = function (value, columnMetadata) {\n if (this.options.formatOptions && this.options.formatOptions.castParameters === false) {\n return _super.prototype.preparePersistentValue.call(this, value, columnMetadata);\n }\n if (columnMetadata.transformer)\n value = _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__[\"ApplyValueTransformers\"].transformTo(columnMetadata.transformer, value);\n return this.client.preparePersistentValue(value, columnMetadata);\n };\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n AuroraDataApiPostgresDriver.prototype.prepareHydratedValue = function (value, columnMetadata) {\n if (this.options.formatOptions && this.options.formatOptions.castParameters === false) {\n return _super.prototype.prepareHydratedValue.call(this, value, columnMetadata);\n }\n if (columnMetadata.transformer)\n value = _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__[\"ApplyValueTransformers\"].transformFrom(columnMetadata.transformer, value);\n return this.client.prepareHydratedValue(value, columnMetadata);\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n AuroraDataApiPostgresDriver.prototype.loadDependencies = function () {\n var pg = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_2__[\"PlatformTools\"].load(\"typeorm-aurora-data-api-driver\").pg;\n this.DataApiDriver = pg;\n };\n /**\n * Executes given query.\n */\n AuroraDataApiPostgresDriver.prototype.executeQuery = function (connection, query) {\n return this.connection.query(query);\n };\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n AuroraDataApiPostgresDriver.prototype.afterConnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var extensionsMetadata;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.checkMetadataForExtensions()];\n case 1:\n extensionsMetadata = _a.sent();\n if (!extensionsMetadata.hasExtensions) return [3 /*break*/, 3];\n return [4 /*yield*/, this.enableExtensions(extensionsMetadata, this.connection)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/, Promise.resolve()];\n }\n });\n });\n };\n return AuroraDataApiPostgresDriver;\n}(PostgresWrapper));\n\n\n//# sourceMappingURL=AuroraDataApiPostgresDriver.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js ***! - \****************************************************************************************************/ -/*! exports provided: AuroraDataApiPostgresQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AuroraDataApiPostgresQueryRunner\", function() { return AuroraDataApiPostgresQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony import */ var _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/TransactionAlreadyStartedError */ \"./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js\");\n/* harmony import */ var _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/TransactionNotStartedError */ \"./node_modules/typeorm/browser/error/TransactionNotStartedError.js\");\n/* harmony import */ var _postgres_PostgresQueryRunner__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../postgres/PostgresQueryRunner */ \"./node_modules/typeorm/browser/driver/postgres/PostgresQueryRunner.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n\n\n\n\n\n\nvar PostgresQueryRunnerWrapper = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PostgresQueryRunnerWrapper, _super);\n function PostgresQueryRunnerWrapper(driver, mode) {\n return _super.call(this, driver, mode) || this;\n }\n return PostgresQueryRunnerWrapper;\n}(_postgres_PostgresQueryRunner__WEBPACK_IMPORTED_MODULE_4__[\"PostgresQueryRunner\"]));\n/**\n * Runs queries on a single postgres database connection.\n */\nvar AuroraDataApiPostgresQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AuroraDataApiPostgresQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AuroraDataApiPostgresQueryRunner(driver, client, mode) {\n var _this = _super.call(this, driver, mode) || this;\n _this.client = client;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n AuroraDataApiPostgresQueryRunner.prototype.connect = function () {\n var _this = this;\n if (this.databaseConnection)\n return Promise.resolve(this.databaseConnection);\n if (this.databaseConnectionPromise)\n return this.databaseConnectionPromise;\n if (this.mode === \"slave\" && this.driver.isReplicated) {\n this.databaseConnectionPromise = this.driver.obtainSlaveConnection().then(function (_a) {\n var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n _this.releaseCallback = release;\n return _this.databaseConnection;\n });\n }\n else { // master\n this.databaseConnectionPromise = this.driver.obtainMasterConnection().then(function (_a) {\n var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n _this.releaseCallback = release;\n return _this.databaseConnection;\n });\n }\n return this.databaseConnectionPromise;\n };\n /**\n * Starts transaction on the current connection.\n */\n AuroraDataApiPostgresQueryRunner.prototype.startTransaction = function (isolationLevel) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive)\n throw new _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_2__[\"TransactionAlreadyStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_5__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = true;\n return [4 /*yield*/, this.client.startTransaction()];\n case 3:\n _a.sent();\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_5__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n AuroraDataApiPostgresQueryRunner.prototype.commitTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_3__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_5__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.client.commitTransaction()];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_5__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n AuroraDataApiPostgresQueryRunner.prototype.rollbackTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_3__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_5__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.client.rollbackTransaction()];\n case 3:\n _a.sent();\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_5__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n AuroraDataApiPostgresQueryRunner.prototype.query = function (query, parameters) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[\"QueryRunnerAlreadyReleasedError\"]();\n return [4 /*yield*/, this.client.query(query, parameters)];\n case 1:\n result = _a.sent();\n if (result.records) {\n return [2 /*return*/, result.records];\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n return AuroraDataApiPostgresQueryRunner;\n}(PostgresQueryRunnerWrapper));\n\n\n//# sourceMappingURL=AuroraDataApiPostgresQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/cordova/CordovaDriver.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/cordova/CordovaDriver.js ***! - \**********************************************************************/ -/*! exports provided: CordovaDriver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CordovaDriver\", function() { return CordovaDriver; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _CordovaQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CordovaQueryRunner */ \"./node_modules/typeorm/browser/driver/cordova/CordovaQueryRunner.js\");\n/* harmony import */ var _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/DriverOptionNotSetError */ \"./node_modules/typeorm/browser/error/DriverOptionNotSetError.js\");\n/* harmony import */ var _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/DriverPackageNotInstalledError */ \"./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js\");\n\n\n\n\n\nvar CordovaDriver = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CordovaDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function CordovaDriver(connection) {\n var _this = _super.call(this, connection) || this;\n // this.connection = connection;\n // this.options = connection.options as CordovaConnectionOptions;\n _this.database = _this.options.database;\n // validate options to make sure everything is set\n if (!_this.options.database)\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[\"DriverOptionNotSetError\"](\"database\");\n if (!_this.options.location)\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[\"DriverOptionNotSetError\"](\"location\");\n // load sqlite package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n CordovaDriver.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close(ok, fail);\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n CordovaDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new _CordovaQueryRunner__WEBPACK_IMPORTED_MODULE_2__[\"CordovaQueryRunner\"](this);\n return this.queryRunner;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n CordovaDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n var options = Object.assign({}, {\n name: _this.options.database,\n location: _this.options.location,\n }, _this.options.extra || {});\n _this.sqlite.openDatabase(options, function (db) {\n var databaseConnection = db;\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n databaseConnection.executeSql(\"PRAGMA foreign_keys = ON;\", [], function (result) {\n ok(databaseConnection);\n }, function (error) {\n fail(error);\n });\n }, function (error) {\n fail(error);\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n CordovaDriver.prototype.loadDependencies = function () {\n try {\n this.sqlite = window.sqlitePlugin;\n }\n catch (e) {\n throw new _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__[\"DriverPackageNotInstalledError\"](\"Cordova-SQLite\", \"cordova-sqlite-storage\");\n }\n };\n return CordovaDriver;\n}(_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__[\"AbstractSqliteDriver\"]));\n\n\n//# sourceMappingURL=CordovaDriver.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/cordova/CordovaDriver.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/cordova/CordovaQueryRunner.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/cordova/CordovaQueryRunner.js ***! - \***************************************************************************/ -/*! exports provided: CordovaQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CordovaQueryRunner\", function() { return CordovaQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/QueryFailedError */ \"./node_modules/typeorm/browser/error/QueryFailedError.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteQueryRunner */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js\");\n/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../subscriber/Broadcaster */ \"./node_modules/typeorm/browser/subscriber/Broadcaster.js\");\n\n\n\n\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar CordovaQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CordovaQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function CordovaQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__[\"Broadcaster\"](_this);\n return _this;\n }\n /**\n * Executes a given SQL query.\n */\n CordovaQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[\"QueryRunnerAlreadyReleasedError\"]();\n return new Promise(function (ok, fail) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n databaseConnection.executeSql(query, parameters, function (result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);\n if (query.substr(0, 11) === \"INSERT INTO\") {\n ok(result.insertId);\n }\n else {\n var resultSet = [];\n for (var i = 0; i < result.rows.length; i++) {\n resultSet.push(result.rows.item(i));\n }\n ok(resultSet);\n }\n }, function (err) {\n _this.driver.connection.logger.logQueryError(err, query, parameters, _this);\n fail(new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__[\"QueryFailedError\"](query, parameters, err));\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Insert a new row with given values into the given table.\n * Returns value of the generated column if given and generate column exist in the table.\n // todo: implement new syntax\n async insert(tableName: string, keyValues: ObjectLiteral): Promise {\n const keys = Object.keys(keyValues);\n const columns = keys.map(key => `\"${key}\"`).join(\", \");\n const values = keys.map(key => \"?\").join(\",\");\n const generatedColumns = this.connection.hasMetadata(tableName) ? this.connection.getMetadata(tableName).generatedColumns : [];\n const sql = columns.length > 0 ? (`INSERT INTO \"${tableName}\"(${columns}) VALUES (${values})`) : `INSERT INTO \"${tableName}\" DEFAULT VALUES`;\n const parameters = keys.map(key => keyValues[key]);\n\n return new Promise(async (ok, fail) => {\n this.driver.connection.logger.logQuery(sql, parameters, this);\n const __this = this;\n const databaseConnection = await this.connect();\n databaseConnection.executeSql(sql, parameters, (resultSet: any) => {\n const generatedMap = generatedColumns.reduce((map, generatedColumn) => {\n const value = generatedColumn.isPrimary && generatedColumn.generationStrategy === \"increment\" && resultSet.insertId ? resultSet.insertId : keyValues[generatedColumn.databaseName];\n if (!value) return map;\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n ok({\n result: undefined,\n generatedMap: Object.keys(generatedMap).length > 0 ? generatedMap : undefined\n });\n }, (err: any) => {\n __this.driver.connection.logger.logQueryError(err, sql, parameters, this);\n fail(err);\n });\n });\n }*/\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n CordovaQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n return Object.keys(objectLiteral).map(function (key, index) { return \"\\\"\" + key + \"\\\"\" + \"=?\"; });\n };\n return CordovaQueryRunner;\n}(_sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__[\"AbstractSqliteQueryRunner\"]));\n\n\n//# sourceMappingURL=CordovaQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/cordova/CordovaQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/expo/ExpoDriver.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/expo/ExpoDriver.js ***! - \****************************************************************/ -/*! exports provided: ExpoDriver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExpoDriver\", function() { return ExpoDriver; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _ExpoQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ExpoQueryRunner */ \"./node_modules/typeorm/browser/driver/expo/ExpoQueryRunner.js\");\n/* harmony import */ var _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/DriverOptionNotSetError */ \"./node_modules/typeorm/browser/error/DriverOptionNotSetError.js\");\n\n\n\n\nvar ExpoDriver = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ExpoDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ExpoDriver(connection) {\n var _this = _super.call(this, connection) || this;\n _this.database = _this.options.database;\n // validate options to make sure everything is set\n if (!_this.options.database)\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[\"DriverOptionNotSetError\"](\"database\");\n if (!_this.options.driver)\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[\"DriverOptionNotSetError\"](\"driver\");\n // load sqlite package\n _this.sqlite = _this.options.driver;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n ExpoDriver.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n try {\n _this.queryRunner = undefined;\n _this.databaseConnection._db.close();\n _this.databaseConnection = undefined;\n ok();\n }\n catch (error) {\n fail(error);\n }\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n ExpoDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new _ExpoQueryRunner__WEBPACK_IMPORTED_MODULE_2__[\"ExpoQueryRunner\"](this);\n return this.queryRunner;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n ExpoDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n try {\n var databaseConnection_1 = _this.sqlite.openDatabase(_this.options.database);\n /*\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n */\n databaseConnection_1.transaction(function (tsx) {\n tsx.executeSql(\"PRAGMA foreign_keys = ON;\", [], function (t, result) {\n ok(databaseConnection_1);\n }, function (t, err) {\n fail({ transaction: t, error: err });\n });\n }, function (err) {\n fail(err);\n });\n }\n catch (error) {\n fail(error);\n }\n });\n };\n return ExpoDriver;\n}(_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__[\"AbstractSqliteDriver\"]));\n\n\n//# sourceMappingURL=ExpoDriver.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/expo/ExpoDriver.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/expo/ExpoQueryRunner.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/expo/ExpoQueryRunner.js ***! - \*********************************************************************/ -/*! exports provided: ExpoQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExpoQueryRunner\", function() { return ExpoQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/QueryFailedError */ \"./node_modules/typeorm/browser/error/QueryFailedError.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteQueryRunner */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js\");\n/* harmony import */ var _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/TransactionAlreadyStartedError */ \"./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js\");\n/* harmony import */ var _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../error/TransactionNotStartedError */ \"./node_modules/typeorm/browser/error/TransactionNotStartedError.js\");\n/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../subscriber/Broadcaster */ \"./node_modules/typeorm/browser/subscriber/Broadcaster.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n\n\n\n\n\n\n\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar ExpoQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ExpoQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ExpoQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_6__[\"Broadcaster\"](_this);\n return _this;\n }\n /**\n * Starts transaction. Within Expo, all database operations happen in a\n * transaction context, so issuing a `BEGIN TRANSACTION` command is\n * redundant and will result in the following error:\n *\n * `Error: Error code 1: cannot start a transaction within a transaction`\n *\n * Instead, we keep track of a `Transaction` object in `this.transaction`\n * and continue using the same object until we wish to commit the\n * transaction.\n */\n ExpoQueryRunner.prototype.startTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive && typeof this.transaction !== \"undefined\")\n throw new _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_4__[\"TransactionAlreadyStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = true;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n * Since Expo will automatically commit the transaction once all the\n * callbacks of the transaction object have been completed, \"committing\" a\n * transaction in this driver's context means that we delete the transaction\n * object and set the stage for the next transaction.\n */\n ExpoQueryRunner.prototype.commitTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive && typeof this.transaction === \"undefined\")\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_5__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = false;\n this.transaction = undefined;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n * This method's functionality is identical to `commitTransaction()` because\n * the transaction lifecycle is handled within the Expo transaction object.\n * Issuing separate statements for `COMMIT` or `ROLLBACK` aren't necessary.\n */\n ExpoQueryRunner.prototype.rollbackTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive && typeof this.transaction === \"undefined\")\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_5__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = false;\n this.transaction = undefined;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n ExpoQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[\"QueryRunnerAlreadyReleasedError\"]();\n return new Promise(function (ok, fail) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n // All Expo SQL queries are executed in a transaction context\n databaseConnection.transaction(function (transaction) {\n if (typeof _this.transaction === \"undefined\") {\n _this.startTransaction();\n _this.transaction = transaction;\n }\n _this.transaction.executeSql(query, parameters, function (t, result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) {\n _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);\n }\n // return id of inserted row, if query was insert statement.\n if (query.substr(0, 11) === \"INSERT INTO\") {\n ok(result.insertId);\n }\n else {\n var resultSet = [];\n for (var i = 0; i < result.rows.length; i++) {\n resultSet.push(result.rows.item(i));\n }\n ok(resultSet);\n }\n }, function (t, err) {\n _this.driver.connection.logger.logQueryError(err, query, parameters, _this);\n fail(new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__[\"QueryFailedError\"](query, parameters, err));\n });\n }, function (err) {\n _this.rollbackTransaction();\n }, function () {\n _this.isTransactionActive = false;\n _this.transaction = undefined;\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n return ExpoQueryRunner;\n}(_sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__[\"AbstractSqliteQueryRunner\"]));\n\n\n//# sourceMappingURL=ExpoQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/expo/ExpoQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/mongodb/typings.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/mongodb/typings.js ***! - \****************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../platform/PlatformTools */ \"./node_modules/typeorm/browser/platform/BrowserPlatformTools.js\");\n\n\n//# sourceMappingURL=typings.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/mongodb/typings.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/nativescript/NativescriptDriver.js": -/*!********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/nativescript/NativescriptDriver.js ***! - \********************************************************************************/ -/*! exports provided: NativescriptDriver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NativescriptDriver\", function() { return NativescriptDriver; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _NativescriptQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NativescriptQueryRunner */ \"./node_modules/typeorm/browser/driver/nativescript/NativescriptQueryRunner.js\");\n/* harmony import */ var _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/DriverOptionNotSetError */ \"./node_modules/typeorm/browser/error/DriverOptionNotSetError.js\");\n/* harmony import */ var _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/DriverPackageNotInstalledError */ \"./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js\");\n\n\n\n\n\n/**\n * Organizes communication with sqlite DBMS within Nativescript.\n */\nvar NativescriptDriver = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(NativescriptDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function NativescriptDriver(connection) {\n var _this = _super.call(this, connection) || this;\n _this.connection = connection;\n _this.options = connection.options;\n _this.database = _this.options.database;\n _this.driver = _this.options.driver;\n // validate options to make sure everything is set\n if (!_this.options.database) {\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[\"DriverOptionNotSetError\"](\"database\");\n }\n // load sqlite package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n NativescriptDriver.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close().then(ok).catch(fail);\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n NativescriptDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner) {\n this.queryRunner = new _NativescriptQueryRunner__WEBPACK_IMPORTED_MODULE_2__[\"NativescriptQueryRunner\"](this);\n }\n return this.queryRunner;\n };\n NativescriptDriver.prototype.normalizeType = function (column) {\n if (column.type === Buffer) {\n return \"blob\";\n }\n return _super.prototype.normalizeType.call(this, column);\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n NativescriptDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n var options = Object.assign({}, {\n readOnly: _this.options.readOnly,\n key: _this.options.key,\n multithreading: _this.options.multithreading,\n migrate: _this.options.migrate,\n iosFlags: _this.options.iosFlags,\n androidFlags: _this.options.androidFlags,\n }, _this.options.extra || {});\n new _this.sqlite(_this.options.database, options, function (err, db) {\n if (err)\n return fail(err);\n // use object mode to work with TypeORM\n db.resultType(_this.sqlite.RESULTSASOBJECT);\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n db.execSQL(\"PRAGMA foreign_keys = ON;\", [], function (err, result) {\n if (err)\n return fail(err);\n // We are all set\n ok(db);\n });\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n NativescriptDriver.prototype.loadDependencies = function () {\n this.sqlite = this.driver;\n if (!this.driver) {\n throw new _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__[\"DriverPackageNotInstalledError\"](\"Nativescript\", \"nativescript-sqlite\");\n }\n };\n return NativescriptDriver;\n}(_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__[\"AbstractSqliteDriver\"]));\n\n\n//# sourceMappingURL=NativescriptDriver.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/nativescript/NativescriptDriver.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/nativescript/NativescriptQueryRunner.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/nativescript/NativescriptQueryRunner.js ***! - \*************************************************************************************/ -/*! exports provided: NativescriptQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NativescriptQueryRunner\", function() { return NativescriptQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/QueryFailedError */ \"./node_modules/typeorm/browser/error/QueryFailedError.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteQueryRunner */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js\");\n/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../subscriber/Broadcaster */ \"./node_modules/typeorm/browser/subscriber/Broadcaster.js\");\n\n\n\n\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar NativescriptQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(NativescriptQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function NativescriptQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__[\"Broadcaster\"](_this);\n return _this;\n }\n /**\n * Executes a given SQL query.\n */\n NativescriptQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[\"QueryRunnerAlreadyReleasedError\"]();\n var connection = this.driver.connection;\n return new Promise(function (ok, fail) {\n var isInsertQuery = query.substr(0, 11) === \"INSERT INTO\";\n var handler = function (err, result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n if (err) {\n connection.logger.logQueryError(err, query, parameters, this);\n fail(new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__[\"QueryFailedError\"](query, parameters, err));\n }\n else {\n // when isInsertQuery == true, result is the id\n ok(result);\n }\n };\n _this.driver.connection.logger.logQuery(query, parameters, _this);\n var queryStartTime = +new Date();\n _this.connect().then(function (databaseConnection) {\n if (isInsertQuery) {\n databaseConnection.execSQL(query, parameters, handler);\n }\n else {\n databaseConnection.all(query, parameters, handler);\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n NativescriptQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n return Object.keys(objectLiteral).map(function (key, index) { return \"\\\"\" + key + \"\\\"\" + \"=?\"; });\n };\n return NativescriptQueryRunner;\n}(_sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__[\"AbstractSqliteQueryRunner\"]));\n\n\n//# sourceMappingURL=NativescriptQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/nativescript/NativescriptQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/postgres/PostgresQueryRunner.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/postgres/PostgresQueryRunner.js ***! - \*****************************************************************************/ -/*! exports provided: PostgresQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PostgresQueryRunner\", function() { return PostgresQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/QueryFailedError */ \"./node_modules/typeorm/browser/error/QueryFailedError.js\");\n/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony import */ var _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/TransactionAlreadyStartedError */ \"./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js\");\n/* harmony import */ var _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/TransactionNotStartedError */ \"./node_modules/typeorm/browser/error/TransactionNotStartedError.js\");\n/* harmony import */ var _query_runner_BaseQueryRunner__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../query-runner/BaseQueryRunner */ \"./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js\");\n/* harmony import */ var _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../schema-builder/table/Table */ \"./node_modules/typeorm/browser/schema-builder/table/Table.js\");\n/* harmony import */ var _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../schema-builder/table/TableCheck */ \"./node_modules/typeorm/browser/schema-builder/table/TableCheck.js\");\n/* harmony import */ var _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../schema-builder/table/TableColumn */ \"./node_modules/typeorm/browser/schema-builder/table/TableColumn.js\");\n/* harmony import */ var _schema_builder_table_TableExclusion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../schema-builder/table/TableExclusion */ \"./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js\");\n/* harmony import */ var _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../schema-builder/table/TableForeignKey */ \"./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js\");\n/* harmony import */ var _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../schema-builder/table/TableIndex */ \"./node_modules/typeorm/browser/schema-builder/table/TableIndex.js\");\n/* harmony import */ var _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../schema-builder/table/TableUnique */ \"./node_modules/typeorm/browser/schema-builder/table/TableUnique.js\");\n/* harmony import */ var _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../schema-builder/view/View */ \"./node_modules/typeorm/browser/schema-builder/view/View.js\");\n/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../subscriber/Broadcaster */ \"./node_modules/typeorm/browser/subscriber/Broadcaster.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _Query__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../Query */ \"./node_modules/typeorm/browser/driver/Query.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Runs queries on a single postgres database connection.\n */\nvar PostgresQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PostgresQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function PostgresQueryRunner(driver, mode) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.mode = mode;\n _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_14__[\"Broadcaster\"](_this);\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n PostgresQueryRunner.prototype.connect = function () {\n var _this = this;\n if (this.databaseConnection)\n return Promise.resolve(this.databaseConnection);\n if (this.databaseConnectionPromise)\n return this.databaseConnectionPromise;\n if (this.mode === \"slave\" && this.driver.isReplicated) {\n this.databaseConnectionPromise = this.driver.obtainSlaveConnection().then(function (_a) {\n var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n var onErrorCallback = function () { return _this.release(); };\n _this.releaseCallback = function () {\n _this.databaseConnection.removeListener(\"error\", onErrorCallback);\n release();\n };\n _this.databaseConnection.on(\"error\", onErrorCallback);\n return _this.databaseConnection;\n });\n }\n else { // master\n this.databaseConnectionPromise = this.driver.obtainMasterConnection().then(function (_a) {\n var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n var onErrorCallback = function () { return _this.release(); };\n _this.releaseCallback = function () {\n _this.databaseConnection.removeListener(\"error\", onErrorCallback);\n release();\n };\n _this.databaseConnection.on(\"error\", onErrorCallback);\n return _this.databaseConnection;\n });\n }\n return this.databaseConnectionPromise;\n };\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n PostgresQueryRunner.prototype.release = function () {\n if (this.isReleased) {\n return Promise.resolve();\n }\n this.isReleased = true;\n if (this.releaseCallback)\n this.releaseCallback();\n var index = this.driver.connectedQueryRunners.indexOf(this);\n if (index !== -1)\n this.driver.connectedQueryRunners.splice(index);\n return Promise.resolve();\n };\n /**\n * Starts transaction.\n */\n PostgresQueryRunner.prototype.startTransaction = function (isolationLevel) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive)\n throw new _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_3__[\"TransactionAlreadyStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_17__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = true;\n return [4 /*yield*/, this.query(\"START TRANSACTION\")];\n case 3:\n _a.sent();\n if (!isolationLevel) return [3 /*break*/, 5];\n return [4 /*yield*/, this.query(\"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5:\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_17__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 7];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n PostgresQueryRunner.prototype.commitTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_4__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_17__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"COMMIT\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_17__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n PostgresQueryRunner.prototype.rollbackTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_4__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_17__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"ROLLBACK\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_17__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n PostgresQueryRunner.prototype.query = function (query, parameters) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var databaseConnection, queryStartTime, result, maxQueryExecutionTime, queryEndTime, queryExecutionTime, err_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_2__[\"QueryRunnerAlreadyReleasedError\"]();\n return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n queryStartTime = +new Date();\n return [4 /*yield*/, databaseConnection.query(query, parameters)];\n case 3:\n result = _a.sent();\n maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;\n queryEndTime = +new Date();\n queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n switch (result.command) {\n case \"DELETE\":\n case \"UPDATE\":\n // for UPDATE and DELETE query additionally return number of affected rows\n return [2 /*return*/, [result.rows, result.rowCount]];\n break;\n default:\n return [2 /*return*/, result.rows];\n }\n return [3 /*break*/, 5];\n case 4:\n err_1 = _a.sent();\n this.driver.connection.logger.logQueryError(err_1, query, parameters, this);\n throw new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_1__[\"QueryFailedError\"](query, parameters, err_1);\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns raw data stream.\n */\n PostgresQueryRunner.prototype.stream = function (query, parameters, onEnd, onError) {\n var _this = this;\n var QueryStream = this.driver.loadStreamDependency();\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_2__[\"QueryRunnerAlreadyReleasedError\"]();\n return new Promise(function (ok, fail) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var databaseConnection, stream, err_2;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n stream = databaseConnection.query(new QueryStream(query, parameters));\n if (onEnd)\n stream.on(\"end\", onEnd);\n if (onError)\n stream.on(\"error\", onError);\n ok(stream);\n return [3 /*break*/, 3];\n case 2:\n err_2 = _a.sent();\n fail(err_2);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Returns all available database names including system databases.\n */\n PostgresQueryRunner.prototype.getDatabases = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n PostgresQueryRunner.prototype.getSchemas = function (database) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Checks if database with the given name exist.\n */\n PostgresQueryRunner.prototype.hasDatabase = function (database) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve(false)];\n });\n });\n };\n /**\n * Checks if schema with the given name exist.\n */\n PostgresQueryRunner.prototype.hasSchema = function (schema) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM \\\"information_schema\\\".\\\"schemata\\\" WHERE \\\"schema_name\\\" = '\" + schema + \"'\")];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Checks if table with the given name exist in the database.\n */\n PostgresQueryRunner.prototype.hasTable = function (tableOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var parsedTableName, sql, result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n parsedTableName = this.parseTableName(tableOrName);\n sql = \"SELECT * FROM \\\"information_schema\\\".\\\"tables\\\" WHERE \\\"table_schema\\\" = \" + parsedTableName.schema + \" AND \\\"table_name\\\" = \" + parsedTableName.tableName;\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Checks if column with the given name exist in the given table.\n */\n PostgresQueryRunner.prototype.hasColumn = function (tableOrName, columnName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var parsedTableName, sql, result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n parsedTableName = this.parseTableName(tableOrName);\n sql = \"SELECT * FROM \\\"information_schema\\\".\\\"columns\\\" WHERE \\\"table_schema\\\" = \" + parsedTableName.schema + \" AND \\\"table_name\\\" = \" + parsedTableName.tableName + \" AND \\\"column_name\\\" = '\" + columnName + \"'\";\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Creates a new database.\n * Postgres does not supports database creation inside a transaction block.\n */\n PostgresQueryRunner.prototype.createDatabase = function (database, ifNotExist) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops database.\n * Postgres does not supports database drop inside a transaction block.\n */\n PostgresQueryRunner.prototype.dropDatabase = function (database, ifExist) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Creates a new table schema.\n */\n PostgresQueryRunner.prototype.createSchema = function (schema, ifNotExist) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n up = ifNotExist ? \"CREATE SCHEMA IF NOT EXISTS \\\"\" + schema + \"\\\"\" : \"CREATE SCHEMA \\\"\" + schema + \"\\\"\";\n down = \"DROP SCHEMA \\\"\" + schema + \"\\\" CASCADE\";\n return [4 /*yield*/, this.executeQueries(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](up), new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](down))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops table schema.\n */\n PostgresQueryRunner.prototype.dropSchema = function (schemaPath, ifExist, isCascade) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var schema, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n schema = schemaPath.indexOf(\".\") === -1 ? schemaPath : schemaPath.split(\".\")[0];\n up = ifExist ? \"DROP SCHEMA IF EXISTS \\\"\" + schema + \"\\\" \" + (isCascade ? \"CASCADE\" : \"\") : \"DROP SCHEMA \\\"\" + schema + \"\\\" \" + (isCascade ? \"CASCADE\" : \"\");\n down = \"CREATE SCHEMA \\\"\" + schema + \"\\\"\";\n return [4 /*yield*/, this.executeQueries(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](up), new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](down))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new table.\n */\n PostgresQueryRunner.prototype.createTable = function (table, ifNotExist, createForeignKeys, createIndices) {\n if (ifNotExist === void 0) { ifNotExist = false; }\n if (createForeignKeys === void 0) { createForeignKeys = true; }\n if (createIndices === void 0) { createIndices = true; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var isTableExist, upQueries, downQueries, enumColumns, createdEnumTypes, enumColumns_1, enumColumns_1_1, column, hasEnum, enumName, e_1_1;\n var e_1, _a;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!ifNotExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(table)];\n case 1:\n isTableExist = _b.sent();\n if (isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _b.label = 2;\n case 2:\n upQueries = [];\n downQueries = [];\n enumColumns = table.columns.filter(function (column) { return column.type === \"enum\" || column.type === \"simple-enum\"; });\n createdEnumTypes = [];\n _b.label = 3;\n case 3:\n _b.trys.push([3, 8, 9, 10]);\n enumColumns_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(enumColumns), enumColumns_1_1 = enumColumns_1.next();\n _b.label = 4;\n case 4:\n if (!!enumColumns_1_1.done) return [3 /*break*/, 7];\n column = enumColumns_1_1.value;\n return [4 /*yield*/, this.hasEnumType(table, column)];\n case 5:\n hasEnum = _b.sent();\n enumName = this.buildEnumName(table, column);\n // if enum with the same \"enumName\" is defined more then once, me must prevent double creation\n if (!hasEnum && createdEnumTypes.indexOf(enumName) === -1) {\n createdEnumTypes.push(enumName);\n upQueries.push(this.createEnumTypeSql(table, column, enumName));\n downQueries.push(this.dropEnumTypeSql(table, column, enumName));\n }\n _b.label = 6;\n case 6:\n enumColumns_1_1 = enumColumns_1.next();\n return [3 /*break*/, 4];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (enumColumns_1_1 && !enumColumns_1_1.done && (_a = enumColumns_1.return)) _a.call(enumColumns_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10:\n upQueries.push(this.createTableSql(table, createForeignKeys));\n downQueries.push(this.dropTableSql(table));\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach(function (foreignKey) { return downQueries.push(_this.dropForeignKeySql(table, foreignKey)); });\n if (createIndices) {\n table.indices.forEach(function (index) {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = _this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n upQueries.push(_this.createIndexSql(table, index));\n downQueries.push(_this.dropIndexSql(table, index));\n });\n }\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 11:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the table.\n */\n PostgresQueryRunner.prototype.dropTable = function (target, ifExist, dropForeignKeys, dropIndices) {\n if (dropForeignKeys === void 0) { dropForeignKeys = true; }\n if (dropIndices === void 0) { dropIndices = true; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var isTableExist, createForeignKeys, tableName, table, upQueries, downQueries;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!ifExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(target)];\n case 1:\n isTableExist = _a.sent();\n if (!isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _a.label = 2;\n case 2:\n createForeignKeys = dropForeignKeys;\n tableName = target instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"] ? target.name : target;\n return [4 /*yield*/, this.getCachedTable(tableName)];\n case 3:\n table = _a.sent();\n upQueries = [];\n downQueries = [];\n if (dropIndices) {\n table.indices.forEach(function (index) {\n upQueries.push(_this.dropIndexSql(table, index));\n downQueries.push(_this.createIndexSql(table, index));\n });\n }\n if (dropForeignKeys)\n table.foreignKeys.forEach(function (foreignKey) { return upQueries.push(_this.dropForeignKeySql(table, foreignKey)); });\n upQueries.push(this.dropTableSql(table));\n downQueries.push(this.createTableSql(table, createForeignKeys));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new view.\n */\n PostgresQueryRunner.prototype.createView = function (view) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var upQueries, downQueries, _a, _b, _c, _d;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n upQueries.push(this.createViewSql(view));\n _b = (_a = upQueries).push;\n return [4 /*yield*/, this.insertViewDefinitionSql(view)];\n case 1:\n _b.apply(_a, [_e.sent()]);\n downQueries.push(this.dropViewSql(view));\n _d = (_c = downQueries).push;\n return [4 /*yield*/, this.deleteViewDefinitionSql(view)];\n case 2:\n _d.apply(_c, [_e.sent()]);\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 3:\n _e.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the view.\n */\n PostgresQueryRunner.prototype.dropView = function (target) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var viewName, view, upQueries, downQueries, _a, _b, _c, _d;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n viewName = target instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_13__[\"View\"] ? target.name : target;\n return [4 /*yield*/, this.getCachedView(viewName)];\n case 1:\n view = _e.sent();\n upQueries = [];\n downQueries = [];\n _b = (_a = upQueries).push;\n return [4 /*yield*/, this.deleteViewDefinitionSql(view)];\n case 2:\n _b.apply(_a, [_e.sent()]);\n upQueries.push(this.dropViewSql(view));\n _d = (_c = downQueries).push;\n return [4 /*yield*/, this.insertViewDefinitionSql(view)];\n case 3:\n _d.apply(_c, [_e.sent()]);\n downQueries.push(this.createViewSql(view));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 4:\n _e.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames the given table.\n */\n PostgresQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var upQueries, downQueries, oldTable, _a, newTable, oldTableName, schemaName, columnNames, oldPkName, newPkName, enumColumns, enumColumns_2, enumColumns_2_1, column, oldEnumType, e_2_1;\n var e_2, _b;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n if (!(oldTableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = oldTableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(oldTableOrName)];\n case 2:\n _a = _c.sent();\n _c.label = 3;\n case 3:\n oldTable = _a;\n newTable = oldTable.clone();\n oldTableName = oldTable.name.indexOf(\".\") === -1 ? oldTable.name : oldTable.name.split(\".\")[1];\n schemaName = oldTable.name.indexOf(\".\") === -1 ? undefined : oldTable.name.split(\".\")[0];\n newTable.name = schemaName ? schemaName + \".\" + newTableName : newTableName;\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(oldTable) + \" RENAME TO \\\"\" + newTableName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(newTable) + \" RENAME TO \\\"\" + oldTableName + \"\\\"\"));\n // rename column primary key constraint\n if (newTable.primaryColumns.length > 0) {\n columnNames = newTable.primaryColumns.map(function (column) { return column.name; });\n oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);\n newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + oldPkName + \"\\\" TO \\\"\" + newPkName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + newPkName + \"\\\" TO \\\"\" + oldPkName + \"\\\"\"));\n }\n // rename sequences\n newTable.columns.map(function (col) {\n if (col.isGenerated && col.generationStrategy === \"increment\") {\n var seqName = _this.buildSequenceName(oldTable, col.name, undefined, true, true);\n var newSeqName = _this.buildSequenceName(newTable, col.name, undefined, true, true);\n var up = schemaName ? \"ALTER SEQUENCE \\\"\" + schemaName + \"\\\".\\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\";\n var down = schemaName ? \"ALTER SEQUENCE \\\"\" + schemaName + \"\\\".\\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\";\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](up));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](down));\n }\n });\n // rename unique constraints\n newTable.uniques.forEach(function (unique) {\n // build new constraint name\n var newUniqueName = _this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);\n // build queries\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + unique.name + \"\\\" TO \\\"\" + newUniqueName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + newUniqueName + \"\\\" TO \\\"\" + unique.name + \"\\\"\"));\n // replace constraint name\n unique.name = newUniqueName;\n });\n // rename index constraints\n newTable.indices.forEach(function (index) {\n // build new constraint name\n var schema = _this.extractSchema(newTable);\n var newIndexName = _this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n // build queries\n var up = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\" : \"ALTER INDEX \\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\";\n var down = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\" : \"ALTER INDEX \\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\";\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](up));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](down));\n // replace constraint name\n index.name = newIndexName;\n });\n // rename foreign key constraints\n newTable.foreignKeys.forEach(function (foreignKey) {\n // build new constraint name\n var newForeignKeyName = _this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n // build queries\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + foreignKey.name + \"\\\" TO \\\"\" + newForeignKeyName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + newForeignKeyName + \"\\\" TO \\\"\" + foreignKey.name + \"\\\"\"));\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n });\n enumColumns = newTable.columns.filter(function (column) { return column.type === \"enum\" || column.type === \"simple-enum\"; });\n _c.label = 4;\n case 4:\n _c.trys.push([4, 9, 10, 11]);\n enumColumns_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(enumColumns), enumColumns_2_1 = enumColumns_2.next();\n _c.label = 5;\n case 5:\n if (!!enumColumns_2_1.done) return [3 /*break*/, 8];\n column = enumColumns_2_1.value;\n return [4 /*yield*/, this.getEnumTypeName(oldTable, column)];\n case 6:\n oldEnumType = _c.sent();\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TYPE \\\"\" + oldEnumType.enumTypeSchema + \"\\\".\\\"\" + oldEnumType.enumTypeName + \"\\\" RENAME TO \" + this.buildEnumName(newTable, column, false)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TYPE \" + this.buildEnumName(newTable, column) + \" RENAME TO \\\"\" + oldEnumType.enumTypeName + \"\\\"\"));\n _c.label = 7;\n case 7:\n enumColumns_2_1 = enumColumns_2.next();\n return [3 /*break*/, 5];\n case 8: return [3 /*break*/, 11];\n case 9:\n e_2_1 = _c.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 11];\n case 10:\n try {\n if (enumColumns_2_1 && !enumColumns_2_1.done && (_b = enumColumns_2.return)) _b.call(enumColumns_2);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 11: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 12:\n _c.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new column from the column in the table.\n */\n PostgresQueryRunner.prototype.addColumn = function (tableOrName, column) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, clonedTable, upQueries, downQueries, hasEnum, primaryColumns, pkName_1, columnNames_1, pkName, columnNames, columnIndex, uniqueConstraint;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n upQueries = [];\n downQueries = [];\n if (!(column.type === \"enum\" || column.type === \"simple-enum\")) return [3 /*break*/, 5];\n return [4 /*yield*/, this.hasEnumType(table, column)];\n case 4:\n hasEnum = _b.sent();\n if (!hasEnum) {\n upQueries.push(this.createEnumTypeSql(table, column));\n downQueries.push(this.dropEnumTypeSql(table, column));\n }\n _b.label = 5;\n case 5:\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD \" + this.buildCreateColumnSql(table, column)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP COLUMN \\\"\" + column.name + \"\\\"\"));\n // create or update primary key constraint\n if (column.isPrimary) {\n primaryColumns = clonedTable.primaryColumns;\n // if table already have primary key, me must drop it and recreate again\n if (primaryColumns.length > 0) {\n pkName_1 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames_1 = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName_1 + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName_1 + \"\\\" PRIMARY KEY (\" + columnNames_1 + \")\"));\n }\n primaryColumns.push(column);\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n }\n columnIndex = clonedTable.indices.find(function (index) { return index.columnNames.length === 1 && index.columnNames[0] === column.name; });\n if (columnIndex) {\n upQueries.push(this.createIndexSql(table, columnIndex));\n downQueries.push(this.dropIndexSql(table, columnIndex));\n }\n // create unique constraint\n if (column.isUnique) {\n uniqueConstraint = new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_12__[\"TableUnique\"]({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n });\n clonedTable.uniques.push(uniqueConstraint);\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\\\"\" + column.name + \"\\\")\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\"\"));\n }\n // create column's comment\n if (column.comment) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + column.name + \"\\\" IS \" + this.escapeComment(column.comment)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + column.name + \"\\\" IS \" + this.escapeComment(column.comment)));\n }\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 6:\n _b.sent();\n clonedTable.addColumn(column);\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new columns from the column in the table.\n */\n PostgresQueryRunner.prototype.addColumns = function (tableOrName, columns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var columns_1, columns_1_1, column, e_3_1;\n var e_3, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n columns_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(columns), columns_1_1 = columns_1.next();\n _b.label = 1;\n case 1:\n if (!!columns_1_1.done) return [3 /*break*/, 4];\n column = columns_1_1.value;\n return [4 /*yield*/, this.addColumn(tableOrName, column)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n columns_1_1 = columns_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_3_1 = _b.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames column in the given table.\n */\n PostgresQueryRunner.prototype.renameColumn = function (tableOrName, oldTableColumnOrName, newTableColumnOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, oldColumn, newColumn;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n oldColumn = oldTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_8__[\"TableColumn\"] ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n if (newTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_8__[\"TableColumn\"]) {\n newColumn = newTableColumnOrName;\n }\n else {\n newColumn = oldColumn.clone();\n newColumn.name = newTableColumnOrName;\n }\n return [2 /*return*/, this.changeColumn(table, oldColumn, newColumn)];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n */\n PostgresQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, clonedTable, upQueries, downQueries, defaultValueChanged, oldColumn, oldEnumType, primaryColumns, columnNames, oldPkName, newPkName, schema, seqName, newSeqName, up, down, oldTableColumn, arraySuffix, newEnumName, oldEnumName, oldEnumNameWithoutSchema, oldEnumNameWithSchema_old, oldEnumNameWithoutSchema_old, upType, downType, primaryColumns, pkName, columnNames, column, pkName, columnNames, primaryColumn, column, pkName, columnNames, uniqueConstraint, uniqueConstraint;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n upQueries = [];\n downQueries = [];\n defaultValueChanged = false;\n oldColumn = oldTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_8__[\"TableColumn\"]\n ? oldTableColumnOrName\n : table.columns.find(function (column) { return column.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n if (!(oldColumn.type !== newColumn.type || oldColumn.length !== newColumn.length || newColumn.isArray !== oldColumn.isArray)) return [3 /*break*/, 6];\n // To avoid data conversion, we just recreate column\n return [4 /*yield*/, this.dropColumn(table, oldColumn)];\n case 4:\n // To avoid data conversion, we just recreate column\n _b.sent();\n return [4 /*yield*/, this.addColumn(table, newColumn)];\n case 5:\n _b.sent();\n // update cloned table\n clonedTable = table.clone();\n return [3 /*break*/, 10];\n case 6:\n if (!(oldColumn.name !== newColumn.name)) return [3 /*break*/, 9];\n // rename column\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" RENAME COLUMN \\\"\" + oldColumn.name + \"\\\" TO \\\"\" + newColumn.name + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" RENAME COLUMN \\\"\" + newColumn.name + \"\\\" TO \\\"\" + oldColumn.name + \"\\\"\"));\n if (!(oldColumn.type === \"enum\" || oldColumn.type === \"simple-enum\")) return [3 /*break*/, 8];\n return [4 /*yield*/, this.getEnumTypeName(table, oldColumn)];\n case 7:\n oldEnumType = _b.sent();\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TYPE \\\"\" + oldEnumType.enumTypeSchema + \"\\\".\\\"\" + oldEnumType.enumTypeName + \"\\\" RENAME TO \" + this.buildEnumName(table, newColumn, false)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TYPE \" + this.buildEnumName(table, newColumn) + \" RENAME TO \\\"\" + oldEnumType.enumTypeName + \"\\\"\"));\n _b.label = 8;\n case 8:\n // rename column primary key constraint\n if (oldColumn.isPrimary === true) {\n primaryColumns = clonedTable.primaryColumns;\n columnNames = primaryColumns.map(function (column) { return column.name; });\n oldPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1);\n columnNames.push(newColumn.name);\n newPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + oldPkName + \"\\\" TO \\\"\" + newPkName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + newPkName + \"\\\" TO \\\"\" + oldPkName + \"\\\"\"));\n }\n // rename column sequence\n if (oldColumn.isGenerated === true && newColumn.generationStrategy === \"increment\") {\n schema = this.extractSchema(table);\n seqName = this.buildSequenceName(table, oldColumn.name, undefined, true, true);\n newSeqName = this.buildSequenceName(table, newColumn.name, undefined, true, true);\n up = schema ? \"ALTER SEQUENCE \\\"\" + schema + \"\\\".\\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\";\n down = schema ? \"ALTER SEQUENCE \\\"\" + schema + \"\\\".\\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\";\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](up));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](down));\n }\n // rename unique constraints\n clonedTable.findColumnUniques(oldColumn).forEach(function (unique) {\n // build new constraint name\n unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);\n unique.columnNames.push(newColumn.name);\n var newUniqueName = _this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);\n // build queries\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + unique.name + \"\\\" TO \\\"\" + newUniqueName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + newUniqueName + \"\\\" TO \\\"\" + unique.name + \"\\\"\"));\n // replace constraint name\n unique.name = newUniqueName;\n });\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach(function (index) {\n // build new constraint name\n index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);\n index.columnNames.push(newColumn.name);\n var schema = _this.extractSchema(table);\n var newIndexName = _this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);\n // build queries\n var up = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\" : \"ALTER INDEX \\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\";\n var down = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\" : \"ALTER INDEX \\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\";\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](up));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](down));\n // replace constraint name\n index.name = newIndexName;\n });\n // rename foreign key constraints\n clonedTable.findColumnForeignKeys(oldColumn).forEach(function (foreignKey) {\n // build new constraint name\n foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);\n foreignKey.columnNames.push(newColumn.name);\n var newForeignKeyName = _this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n // build queries\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + foreignKey.name + \"\\\" TO \\\"\" + newForeignKeyName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + newForeignKeyName + \"\\\" TO \\\"\" + foreignKey.name + \"\\\"\"));\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n });\n oldTableColumn = clonedTable.columns.find(function (column) { return column.name === oldColumn.name; });\n clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn)].name = newColumn.name;\n oldColumn.name = newColumn.name;\n _b.label = 9;\n case 9:\n if (newColumn.precision !== oldColumn.precision || newColumn.scale !== oldColumn.scale) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(newColumn)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(oldColumn)));\n }\n if ((newColumn.type === \"enum\" || newColumn.type === \"simple-enum\")\n && (oldColumn.type === \"enum\" || oldColumn.type === \"simple-enum\")\n && (!_util_OrmUtils__WEBPACK_IMPORTED_MODULE_15__[\"OrmUtils\"].isArraysEqual(newColumn.enum, oldColumn.enum) || newColumn.enumName !== oldColumn.enumName)) {\n arraySuffix = newColumn.isArray ? \"[]\" : \"\";\n newEnumName = this.buildEnumName(table, newColumn);\n oldEnumName = this.buildEnumName(table, oldColumn);\n oldEnumNameWithoutSchema = this.buildEnumName(table, oldColumn, false);\n oldEnumNameWithSchema_old = this.buildEnumName(table, oldColumn, true, false, true);\n oldEnumNameWithoutSchema_old = this.buildEnumName(table, oldColumn, false, false, true);\n // rename old ENUM\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TYPE \" + oldEnumName + \" RENAME TO \" + oldEnumNameWithoutSchema_old));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TYPE \" + oldEnumNameWithSchema_old + \" RENAME TO \" + oldEnumNameWithoutSchema));\n // create new ENUM\n upQueries.push(this.createEnumTypeSql(table, newColumn, newEnumName));\n downQueries.push(this.dropEnumTypeSql(table, newColumn, newEnumName));\n // if column have default value, we must drop it to avoid issues with type casting\n if (oldColumn.default !== null && oldColumn.default !== undefined) {\n // mark default as changed to prevent double update\n defaultValueChanged = true;\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" DROP DEFAULT\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" SET DEFAULT \" + oldColumn.default));\n }\n upType = \"\" + newEnumName + arraySuffix + \" USING \\\"\" + newColumn.name + \"\\\"::\\\"text\\\"::\" + newEnumName + arraySuffix;\n downType = \"\" + oldEnumNameWithSchema_old + arraySuffix + \" USING \\\"\" + newColumn.name + \"\\\"::\\\"text\\\"::\" + oldEnumNameWithSchema_old + arraySuffix;\n // update column to use new type\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + upType));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + downType));\n // restore column default or create new one\n if (newColumn.default !== null && newColumn.default !== undefined) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + newColumn.default));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n }\n // remove old ENUM\n upQueries.push(this.dropEnumTypeSql(table, oldColumn, oldEnumNameWithSchema_old));\n downQueries.push(this.createEnumTypeSql(table, oldColumn, oldEnumNameWithSchema_old));\n }\n if (oldColumn.isNullable !== newColumn.isNullable) {\n if (newColumn.isNullable) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" DROP NOT NULL\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" SET NOT NULL\"));\n }\n else {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" SET NOT NULL\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" DROP NOT NULL\"));\n }\n }\n if (oldColumn.comment !== newColumn.comment) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + oldColumn.name + \"\\\" IS \" + this.escapeComment(newColumn.comment)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + newColumn.name + \"\\\" IS \" + this.escapeComment(oldColumn.comment)));\n }\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n primaryColumns = clonedTable.primaryColumns;\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n }\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn);\n column = clonedTable.columns.find(function (column) { return column.name === newColumn.name; });\n column.isPrimary = true;\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n }\n else {\n primaryColumn = primaryColumns.find(function (c) { return c.name === newColumn.name; });\n primaryColumns.splice(primaryColumns.indexOf(primaryColumn), 1);\n column = clonedTable.columns.find(function (column) { return column.name === newColumn.name; });\n column.isPrimary = false;\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n }\n }\n }\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n uniqueConstraint = new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_12__[\"TableUnique\"]({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [newColumn.name]),\n columnNames: [newColumn.name]\n });\n clonedTable.uniques.push(uniqueConstraint);\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\\\"\" + newColumn.name + \"\\\")\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\"\"));\n }\n else {\n uniqueConstraint = clonedTable.uniques.find(function (unique) {\n return unique.columnNames.length === 1 && !!unique.columnNames.find(function (columnName) { return columnName === newColumn.name; });\n });\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(uniqueConstraint), 1);\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\\\"\" + newColumn.name + \"\\\")\"));\n }\n }\n if (oldColumn.isGenerated !== newColumn.isGenerated && newColumn.generationStrategy !== \"uuid\") {\n if (newColumn.isGenerated === true) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"CREATE SEQUENCE \" + this.buildSequenceName(table, newColumn) + \" OWNED BY \" + this.escapePath(table) + \".\\\"\" + newColumn.name + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"DROP SEQUENCE \" + this.buildSequenceName(table, newColumn)));\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT nextval('\" + this.buildSequenceName(table, newColumn, undefined, true) + \"')\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n }\n else {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT nextval('\" + this.buildSequenceName(table, newColumn, undefined, true) + \"')\"));\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"DROP SEQUENCE \" + this.buildSequenceName(table, newColumn)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"CREATE SEQUENCE \" + this.buildSequenceName(table, newColumn) + \" OWNED BY \" + this.escapePath(table) + \".\\\"\" + newColumn.name + \"\\\"\"));\n }\n }\n // the default might have changed when the enum changed\n if (newColumn.default !== oldColumn.default && !defaultValueChanged) {\n if (newColumn.default !== null && newColumn.default !== undefined) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + newColumn.default));\n if (oldColumn.default !== null && oldColumn.default !== undefined) {\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + oldColumn.default));\n }\n else {\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n }\n }\n else if (oldColumn.default !== null && oldColumn.default !== undefined) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + oldColumn.default));\n }\n }\n if ((newColumn.spatialFeatureType || \"\").toLowerCase() !== (oldColumn.spatialFeatureType || \"\").toLowerCase() || newColumn.srid !== oldColumn.srid) {\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(newColumn)));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(oldColumn)));\n }\n _b.label = 10;\n case 10: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 11:\n _b.sent();\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n */\n PostgresQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn, e_4_1;\n var e_4, _b;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 5, 6, 7]);\n changedColumns_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(changedColumns), changedColumns_1_1 = changedColumns_1.next();\n _c.label = 1;\n case 1:\n if (!!changedColumns_1_1.done) return [3 /*break*/, 4];\n _a = changedColumns_1_1.value, oldColumn = _a.oldColumn, newColumn = _a.newColumn;\n return [4 /*yield*/, this.changeColumn(tableOrName, oldColumn, newColumn)];\n case 2:\n _c.sent();\n _c.label = 3;\n case 3:\n changedColumns_1_1 = changedColumns_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_4_1 = _c.sent();\n e_4 = { error: e_4_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (changedColumns_1_1 && !changedColumns_1_1.done && (_b = changedColumns_1.return)) _b.call(changedColumns_1);\n }\n finally { if (e_4) throw e_4.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops column in the table.\n */\n PostgresQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, column, clonedTable, upQueries, downQueries, pkName, columnNames, tableColumn, pkName_2, columnNames_2, columnIndex, columnCheck, columnUnique, hasEnum, enumType, escapedEnumName;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n column = columnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_8__[\"TableColumn\"] ? columnOrName : table.findColumnByName(columnOrName);\n if (!column)\n throw new Error(\"Column \\\"\" + columnOrName + \"\\\" was not found in table \\\"\" + table.name + \"\\\"\");\n clonedTable = table.clone();\n upQueries = [];\n downQueries = [];\n // drop primary key constraint\n if (column.isPrimary) {\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(function (column) { return column.name; }));\n columnNames = clonedTable.primaryColumns.map(function (primaryColumn) { return \"\\\"\" + primaryColumn.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(clonedTable) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(clonedTable) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n tableColumn = clonedTable.findColumnByName(column.name);\n tableColumn.isPrimary = false;\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n pkName_2 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(function (column) { return column.name; }));\n columnNames_2 = clonedTable.primaryColumns.map(function (primaryColumn) { return \"\\\"\" + primaryColumn.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(clonedTable) + \" ADD CONSTRAINT \\\"\" + pkName_2 + \"\\\" PRIMARY KEY (\" + columnNames_2 + \")\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(clonedTable) + \" DROP CONSTRAINT \\\"\" + pkName_2 + \"\\\"\"));\n }\n }\n columnIndex = clonedTable.indices.find(function (index) { return index.columnNames.length === 1 && index.columnNames[0] === column.name; });\n if (columnIndex) {\n clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1);\n upQueries.push(this.dropIndexSql(table, columnIndex));\n downQueries.push(this.createIndexSql(table, columnIndex));\n }\n columnCheck = clonedTable.checks.find(function (check) { return !!check.columnNames && check.columnNames.length === 1 && check.columnNames[0] === column.name; });\n if (columnCheck) {\n clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1);\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck));\n downQueries.push(this.createCheckConstraintSql(table, columnCheck));\n }\n columnUnique = clonedTable.uniques.find(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; });\n if (columnUnique) {\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(columnUnique), 1);\n upQueries.push(this.dropUniqueConstraintSql(table, columnUnique));\n downQueries.push(this.createUniqueConstraintSql(table, columnUnique));\n }\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP COLUMN \\\"\" + column.name + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD \" + this.buildCreateColumnSql(table, column)));\n if (!(column.type === \"enum\" || column.type === \"simple-enum\")) return [3 /*break*/, 6];\n return [4 /*yield*/, this.hasEnumType(table, column)];\n case 4:\n hasEnum = _b.sent();\n if (!hasEnum) return [3 /*break*/, 6];\n return [4 /*yield*/, this.getEnumTypeName(table, column)];\n case 5:\n enumType = _b.sent();\n escapedEnumName = \"\\\"\" + enumType.enumTypeSchema + \"\\\".\\\"\" + enumType.enumTypeName + \"\\\"\";\n upQueries.push(this.dropEnumTypeSql(table, column, escapedEnumName));\n downQueries.push(this.createEnumTypeSql(table, column, escapedEnumName));\n _b.label = 6;\n case 6: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 7:\n _b.sent();\n clonedTable.removeColumn(column);\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the columns in the table.\n */\n PostgresQueryRunner.prototype.dropColumns = function (tableOrName, columns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var columns_2, columns_2_1, column, e_5_1;\n var e_5, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n columns_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(columns), columns_2_1 = columns_2.next();\n _b.label = 1;\n case 1:\n if (!!columns_2_1.done) return [3 /*break*/, 4];\n column = columns_2_1.value;\n return [4 /*yield*/, this.dropColumn(tableOrName, column)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n columns_2_1 = columns_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_5_1 = _b.sent();\n e_5 = { error: e_5_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);\n }\n finally { if (e_5) throw e_5.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new primary key.\n */\n PostgresQueryRunner.prototype.createPrimaryKey = function (tableOrName, columnNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, clonedTable, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n up = this.createPrimaryKeySql(table, columnNames);\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach(function (column) {\n if (columnNames.find(function (columnName) { return columnName === column.name; }))\n column.isPrimary = true;\n });\n down = this.dropPrimaryKeySql(clonedTable);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates composite primary keys.\n */\n PostgresQueryRunner.prototype.updatePrimaryKeys = function (tableOrName, columns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, clonedTable, columnNames, upQueries, downQueries, primaryColumns, pkName_3, columnNamesString_1, pkName, columnNamesString;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n columnNames = columns.map(function (column) { return column.name; });\n upQueries = [];\n downQueries = [];\n primaryColumns = clonedTable.primaryColumns;\n if (primaryColumns.length > 0) {\n pkName_3 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNamesString_1 = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName_3 + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName_3 + \"\\\" PRIMARY KEY (\" + columnNamesString_1 + \")\"));\n }\n // update columns in table.\n clonedTable.columns\n .filter(function (column) { return columnNames.indexOf(column.name) !== -1; })\n .forEach(function (column) { return column.isPrimary = true; });\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, columnNames);\n columnNamesString = columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNamesString + \")\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 4:\n _b.sent();\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a primary key.\n */\n PostgresQueryRunner.prototype.dropPrimaryKey = function (tableOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n up = this.dropPrimaryKeySql(table);\n down = this.createPrimaryKeySql(table, table.primaryColumns.map(function (column) { return column.name; }));\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.primaryColumns.forEach(function (column) {\n column.isPrimary = false;\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new unique constraint.\n */\n PostgresQueryRunner.prototype.createUniqueConstraint = function (tableOrName, uniqueConstraint) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!uniqueConstraint.name)\n uniqueConstraint.name = this.connection.namingStrategy.uniqueConstraintName(table.name, uniqueConstraint.columnNames);\n up = this.createUniqueConstraintSql(table, uniqueConstraint);\n down = this.dropUniqueConstraintSql(table, uniqueConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addUniqueConstraint(uniqueConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new unique constraints.\n */\n PostgresQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var uniqueConstraints_1, uniqueConstraints_1_1, uniqueConstraint, e_6_1;\n var e_6, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n uniqueConstraints_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(uniqueConstraints), uniqueConstraints_1_1 = uniqueConstraints_1.next();\n _b.label = 1;\n case 1:\n if (!!uniqueConstraints_1_1.done) return [3 /*break*/, 4];\n uniqueConstraint = uniqueConstraints_1_1.value;\n return [4 /*yield*/, this.createUniqueConstraint(tableOrName, uniqueConstraint)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n uniqueConstraints_1_1 = uniqueConstraints_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_6_1 = _b.sent();\n e_6 = { error: e_6_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (uniqueConstraints_1_1 && !uniqueConstraints_1_1.done && (_a = uniqueConstraints_1.return)) _a.call(uniqueConstraints_1);\n }\n finally { if (e_6) throw e_6.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops unique constraint.\n */\n PostgresQueryRunner.prototype.dropUniqueConstraint = function (tableOrName, uniqueOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, uniqueConstraint, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n uniqueConstraint = uniqueOrName instanceof _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_12__[\"TableUnique\"] ? uniqueOrName : table.uniques.find(function (u) { return u.name === uniqueOrName; });\n if (!uniqueConstraint)\n throw new Error(\"Supplied unique constraint was not found in table \" + table.name);\n up = this.dropUniqueConstraintSql(table, uniqueConstraint);\n down = this.createUniqueConstraintSql(table, uniqueConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeUniqueConstraint(uniqueConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops unique constraints.\n */\n PostgresQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var uniqueConstraints_2, uniqueConstraints_2_1, uniqueConstraint, e_7_1;\n var e_7, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n uniqueConstraints_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(uniqueConstraints), uniqueConstraints_2_1 = uniqueConstraints_2.next();\n _b.label = 1;\n case 1:\n if (!!uniqueConstraints_2_1.done) return [3 /*break*/, 4];\n uniqueConstraint = uniqueConstraints_2_1.value;\n return [4 /*yield*/, this.dropUniqueConstraint(tableOrName, uniqueConstraint)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n uniqueConstraints_2_1 = uniqueConstraints_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_7_1 = _b.sent();\n e_7 = { error: e_7_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (uniqueConstraints_2_1 && !uniqueConstraints_2_1.done && (_a = uniqueConstraints_2.return)) _a.call(uniqueConstraints_2);\n }\n finally { if (e_7) throw e_7.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraint.\n */\n PostgresQueryRunner.prototype.createCheckConstraint = function (tableOrName, checkConstraint) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name = this.connection.namingStrategy.checkConstraintName(table.name, checkConstraint.expression);\n up = this.createCheckConstraintSql(table, checkConstraint);\n down = this.dropCheckConstraintSql(table, checkConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addCheckConstraint(checkConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraints.\n */\n PostgresQueryRunner.prototype.createCheckConstraints = function (tableOrName, checkConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = checkConstraints.map(function (checkConstraint) { return _this.createCheckConstraint(tableOrName, checkConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraint.\n */\n PostgresQueryRunner.prototype.dropCheckConstraint = function (tableOrName, checkOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, checkConstraint, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n checkConstraint = checkOrName instanceof _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_7__[\"TableCheck\"] ? checkOrName : table.checks.find(function (c) { return c.name === checkOrName; });\n if (!checkConstraint)\n throw new Error(\"Supplied check constraint was not found in table \" + table.name);\n up = this.dropCheckConstraintSql(table, checkConstraint);\n down = this.createCheckConstraintSql(table, checkConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeCheckConstraint(checkConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraints.\n */\n PostgresQueryRunner.prototype.dropCheckConstraints = function (tableOrName, checkConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = checkConstraints.map(function (checkConstraint) { return _this.dropCheckConstraint(tableOrName, checkConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new exclusion constraint.\n */\n PostgresQueryRunner.prototype.createExclusionConstraint = function (tableOrName, exclusionConstraint) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!exclusionConstraint.name)\n exclusionConstraint.name = this.connection.namingStrategy.exclusionConstraintName(table.name, exclusionConstraint.expression);\n up = this.createExclusionConstraintSql(table, exclusionConstraint);\n down = this.dropExclusionConstraintSql(table, exclusionConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addExclusionConstraint(exclusionConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new exclusion constraints.\n */\n PostgresQueryRunner.prototype.createExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = exclusionConstraints.map(function (exclusionConstraint) { return _this.createExclusionConstraint(tableOrName, exclusionConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops exclusion constraint.\n */\n PostgresQueryRunner.prototype.dropExclusionConstraint = function (tableOrName, exclusionOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, exclusionConstraint, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n exclusionConstraint = exclusionOrName instanceof _schema_builder_table_TableExclusion__WEBPACK_IMPORTED_MODULE_9__[\"TableExclusion\"] ? exclusionOrName : table.exclusions.find(function (c) { return c.name === exclusionOrName; });\n if (!exclusionConstraint)\n throw new Error(\"Supplied exclusion constraint was not found in table \" + table.name);\n up = this.dropExclusionConstraintSql(table, exclusionConstraint);\n down = this.createExclusionConstraintSql(table, exclusionConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeExclusionConstraint(exclusionConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops exclusion constraints.\n */\n PostgresQueryRunner.prototype.dropExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = exclusionConstraints.map(function (exclusionConstraint) { return _this.dropExclusionConstraint(tableOrName, exclusionConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new foreign key.\n */\n PostgresQueryRunner.prototype.createForeignKey = function (tableOrName, foreignKey) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(table.name, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n up = this.createForeignKeySql(table, foreignKey);\n down = this.dropForeignKeySql(table, foreignKey);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addForeignKey(foreignKey);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new foreign keys.\n */\n PostgresQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var foreignKeys_1, foreignKeys_1_1, foreignKey, e_8_1;\n var e_8, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n foreignKeys_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(foreignKeys), foreignKeys_1_1 = foreignKeys_1.next();\n _b.label = 1;\n case 1:\n if (!!foreignKeys_1_1.done) return [3 /*break*/, 4];\n foreignKey = foreignKeys_1_1.value;\n return [4 /*yield*/, this.createForeignKey(tableOrName, foreignKey)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n foreignKeys_1_1 = foreignKeys_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_8_1 = _b.sent();\n e_8 = { error: e_8_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (foreignKeys_1_1 && !foreignKeys_1_1.done && (_a = foreignKeys_1.return)) _a.call(foreignKeys_1);\n }\n finally { if (e_8) throw e_8.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign key from the table.\n */\n PostgresQueryRunner.prototype.dropForeignKey = function (tableOrName, foreignKeyOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, foreignKey, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n foreignKey = foreignKeyOrName instanceof _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_10__[\"TableForeignKey\"] ? foreignKeyOrName : table.foreignKeys.find(function (fk) { return fk.name === foreignKeyOrName; });\n if (!foreignKey)\n throw new Error(\"Supplied foreign key was not found in table \" + table.name);\n up = this.dropForeignKeySql(table, foreignKey);\n down = this.createForeignKeySql(table, foreignKey);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeForeignKey(foreignKey);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign keys from the table.\n */\n PostgresQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var foreignKeys_2, foreignKeys_2_1, foreignKey, e_9_1;\n var e_9, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n foreignKeys_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(foreignKeys), foreignKeys_2_1 = foreignKeys_2.next();\n _b.label = 1;\n case 1:\n if (!!foreignKeys_2_1.done) return [3 /*break*/, 4];\n foreignKey = foreignKeys_2_1.value;\n return [4 /*yield*/, this.dropForeignKey(tableOrName, foreignKey)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n foreignKeys_2_1 = foreignKeys_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_9_1 = _b.sent();\n e_9 = { error: e_9_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (foreignKeys_2_1 && !foreignKeys_2_1.done && (_a = foreignKeys_2.return)) _a.call(foreignKeys_2);\n }\n finally { if (e_9) throw e_9.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new index.\n */\n PostgresQueryRunner.prototype.createIndex = function (tableOrName, index) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n up = this.createIndexSql(table, index);\n down = this.dropIndexSql(table, index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new indices\n */\n PostgresQueryRunner.prototype.createIndices = function (tableOrName, indices) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var indices_1, indices_1_1, index, e_10_1;\n var e_10, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n indices_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(indices), indices_1_1 = indices_1.next();\n _b.label = 1;\n case 1:\n if (!!indices_1_1.done) return [3 /*break*/, 4];\n index = indices_1_1.value;\n return [4 /*yield*/, this.createIndex(tableOrName, index)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n indices_1_1 = indices_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_10_1 = _b.sent();\n e_10 = { error: e_10_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1);\n }\n finally { if (e_10) throw e_10.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an index from the table.\n */\n PostgresQueryRunner.prototype.dropIndex = function (tableOrName, indexOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, index, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n index = indexOrName instanceof _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_11__[\"TableIndex\"] ? indexOrName : table.indices.find(function (i) { return i.name === indexOrName; });\n if (!index)\n throw new Error(\"Supplied index was not found in table \" + table.name);\n up = this.dropIndexSql(table, index);\n down = this.createIndexSql(table, index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an indices from the table.\n */\n PostgresQueryRunner.prototype.dropIndices = function (tableOrName, indices) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var indices_2, indices_2_1, index, e_11_1;\n var e_11, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n indices_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(indices), indices_2_1 = indices_2.next();\n _b.label = 1;\n case 1:\n if (!!indices_2_1.done) return [3 /*break*/, 4];\n index = indices_2_1.value;\n return [4 /*yield*/, this.dropIndex(tableOrName, index)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n indices_2_1 = indices_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_11_1 = _b.sent();\n e_11 = { error: e_11_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (indices_2_1 && !indices_2_1.done && (_a = indices_2.return)) _a.call(indices_2);\n }\n finally { if (e_11) throw e_11.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n PostgresQueryRunner.prototype.clearTable = function (tableName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"TRUNCATE TABLE \" + this.escapePath(tableName))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes all tables from the currently connected database.\n */\n PostgresQueryRunner.prototype.clearDatabase = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var schemas, schemaNamesString, selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n schemas = [];\n this.connection.entityMetadatas\n .filter(function (metadata) { return metadata.schema; })\n .forEach(function (metadata) {\n var isSchemaExist = !!schemas.find(function (schema) { return schema === metadata.schema; });\n if (!isSchemaExist)\n schemas.push(metadata.schema);\n });\n schemas.push(this.driver.options.schema || \"current_schema()\");\n schemaNamesString = schemas.map(function (name) {\n return name === \"current_schema()\" ? name : \"'\" + name + \"'\";\n }).join(\", \");\n return [4 /*yield*/, this.startTransaction()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 9, , 14]);\n selectViewDropsQuery = \"SELECT 'DROP VIEW IF EXISTS \\\"' || schemaname || '\\\".\\\"' || viewname || '\\\" CASCADE;' as \\\"query\\\" \" +\n (\"FROM \\\"pg_views\\\" WHERE \\\"schemaname\\\" IN (\" + schemaNamesString + \") AND \\\"viewname\\\" NOT IN ('geography_columns', 'geometry_columns', 'raster_columns', 'raster_overviews')\");\n return [4 /*yield*/, this.query(selectViewDropsQuery)];\n case 3:\n dropViewQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 4:\n _a.sent();\n selectTableDropsQuery = \"SELECT 'DROP TABLE IF EXISTS \\\"' || schemaname || '\\\".\\\"' || tablename || '\\\" CASCADE;' as \\\"query\\\" FROM \\\"pg_tables\\\" WHERE \\\"schemaname\\\" IN (\" + schemaNamesString + \") AND \\\"tablename\\\" NOT IN ('spatial_ref_sys')\";\n return [4 /*yield*/, this.query(selectTableDropsQuery)];\n case 5:\n dropTableQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropTableQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 6:\n _a.sent();\n return [4 /*yield*/, this.dropEnumTypes(schemaNamesString)];\n case 7:\n _a.sent();\n return [4 /*yield*/, this.commitTransaction()];\n case 8:\n _a.sent();\n return [3 /*break*/, 14];\n case 9:\n error_1 = _a.sent();\n _a.label = 10;\n case 10:\n _a.trys.push([10, 12, , 13]);\n return [4 /*yield*/, this.rollbackTransaction()];\n case 11:\n _a.sent();\n return [3 /*break*/, 13];\n case 12:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 13];\n case 13: throw error_1;\n case 14: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n PostgresQueryRunner.prototype.loadViews = function (viewNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var hasTable, currentSchemaQuery, currentSchema, viewsCondition, query, dbViews;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.hasTable(this.getTypeormMetadataTableName())];\n case 1:\n hasTable = _a.sent();\n if (!hasTable)\n return [2 /*return*/, Promise.resolve([])];\n return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 2:\n currentSchemaQuery = _a.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n viewsCondition = viewNames.map(function (viewName) {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(viewName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"t\\\".\\\"schema\\\" = '\" + schema + \"' AND \\\"t\\\".\\\"name\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n query = \"SELECT \\\"t\\\".*, \\\"v\\\".\\\"check_option\\\" FROM \" + this.escapePath(this.getTypeormMetadataTableName()) + \" \\\"t\\\" \" +\n (\"INNER JOIN \\\"information_schema\\\".\\\"views\\\" \\\"v\\\" ON \\\"v\\\".\\\"table_schema\\\" = \\\"t\\\".\\\"schema\\\" AND \\\"v\\\".\\\"table_name\\\" = \\\"t\\\".\\\"name\\\" WHERE \\\"t\\\".\\\"type\\\" = 'VIEW' \" + (viewsCondition ? \"AND (\" + viewsCondition + \")\" : \"\"));\n return [4 /*yield*/, this.query(query)];\n case 3:\n dbViews = _a.sent();\n return [2 /*return*/, dbViews.map(function (dbView) {\n var view = new _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_13__[\"View\"]();\n var schema = dbView[\"schema\"] === currentSchema && !_this.driver.options.schema ? undefined : dbView[\"schema\"];\n view.name = _this.driver.buildTableName(dbView[\"name\"], schema);\n view.expression = dbView[\"value\"];\n return view;\n })];\n }\n });\n });\n };\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n PostgresQueryRunner.prototype.loadTables = function (tableNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, tablesCondition, tablesSql, columnsSql, constraintsCondition, constraintsSql, indicesSql, foreignKeysCondition, hasRelispartitionColumn, isPartitionCondition, foreignKeysSql, _a, dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n // if no tables given then no need to proceed\n if (!tableNames || !tableNames.length)\n return [2 /*return*/, []];\n return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n tablesCondition = tableNames.map(function (tableName) {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(tableName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"table_schema\\\" = '\" + schema + \"' AND \\\"table_name\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n tablesSql = \"SELECT * FROM \\\"information_schema\\\".\\\"tables\\\" WHERE \" + tablesCondition;\n columnsSql = \"\\n SELECT columns.*,\\n pg_catalog.col_description(('\\\"' || table_catalog || '\\\".\\\"' || table_schema || '\\\".\\\"' || table_name || '\\\"')::regclass::oid, ordinal_position) AS description,\\n ('\\\"' || \\\"udt_schema\\\" || '\\\".\\\"' || \\\"udt_name\\\" || '\\\"')::\\\"regtype\\\" AS \\\"regtype\\\",\\n pg_catalog.format_type(\\\"col_attr\\\".\\\"atttypid\\\", \\\"col_attr\\\".\\\"atttypmod\\\") AS \\\"format_type\\\"\\n FROM \\\"information_schema\\\".\\\"columns\\\"\\n LEFT JOIN \\\"pg_catalog\\\".\\\"pg_attribute\\\" AS \\\"col_attr\\\"\\n ON \\\"col_attr\\\".\\\"attname\\\" = \\\"columns\\\".\\\"column_name\\\"\\n AND \\\"col_attr\\\".\\\"attrelid\\\" = (\\n SELECT\\n \\\"cls\\\".\\\"oid\\\" FROM \\\"pg_catalog\\\".\\\"pg_class\\\" AS \\\"cls\\\"\\n LEFT JOIN \\\"pg_catalog\\\".\\\"pg_namespace\\\" AS \\\"ns\\\"\\n ON \\\"ns\\\".\\\"oid\\\" = \\\"cls\\\".\\\"relnamespace\\\"\\n WHERE \\\"cls\\\".\\\"relname\\\" = \\\"columns\\\".\\\"table_name\\\"\\n AND \\\"ns\\\".\\\"nspname\\\" = \\\"columns\\\".\\\"table_schema\\\"\\n )\\n WHERE\\n \" + tablesCondition;\n constraintsCondition = tableNames.map(function (tableName) {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(tableName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"ns\\\".\\\"nspname\\\" = '\" + schema + \"' AND \\\"t\\\".\\\"relname\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n constraintsSql = \"SELECT \\\"ns\\\".\\\"nspname\\\" AS \\\"table_schema\\\", \\\"t\\\".\\\"relname\\\" AS \\\"table_name\\\", \\\"cnst\\\".\\\"conname\\\" AS \\\"constraint_name\\\", \" +\n \"pg_get_constraintdef(\\\"cnst\\\".\\\"oid\\\") AS \\\"expression\\\", \" +\n \"CASE \\\"cnst\\\".\\\"contype\\\" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS \\\"constraint_type\\\", \\\"a\\\".\\\"attname\\\" AS \\\"column_name\\\" \" +\n \"FROM \\\"pg_constraint\\\" \\\"cnst\\\" \" +\n \"INNER JOIN \\\"pg_class\\\" \\\"t\\\" ON \\\"t\\\".\\\"oid\\\" = \\\"cnst\\\".\\\"conrelid\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"ns\\\".\\\"oid\\\" = \\\"cnst\\\".\\\"connamespace\\\" \" +\n \"LEFT JOIN \\\"pg_attribute\\\" \\\"a\\\" ON \\\"a\\\".\\\"attrelid\\\" = \\\"cnst\\\".\\\"conrelid\\\" AND \\\"a\\\".\\\"attnum\\\" = ANY (\\\"cnst\\\".\\\"conkey\\\") \" +\n (\"WHERE \\\"t\\\".\\\"relkind\\\" IN ('r', 'p') AND (\" + constraintsCondition + \")\");\n indicesSql = \"SELECT \\\"ns\\\".\\\"nspname\\\" AS \\\"table_schema\\\", \\\"t\\\".\\\"relname\\\" AS \\\"table_name\\\", \\\"i\\\".\\\"relname\\\" AS \\\"constraint_name\\\", \\\"a\\\".\\\"attname\\\" AS \\\"column_name\\\", \" +\n \"CASE \\\"ix\\\".\\\"indisunique\\\" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS \\\"is_unique\\\", pg_get_expr(\\\"ix\\\".\\\"indpred\\\", \\\"ix\\\".\\\"indrelid\\\") AS \\\"condition\\\", \" +\n \"\\\"types\\\".\\\"typname\\\" AS \\\"type_name\\\" \" +\n \"FROM \\\"pg_class\\\" \\\"t\\\" \" +\n \"INNER JOIN \\\"pg_index\\\" \\\"ix\\\" ON \\\"ix\\\".\\\"indrelid\\\" = \\\"t\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_attribute\\\" \\\"a\\\" ON \\\"a\\\".\\\"attrelid\\\" = \\\"t\\\".\\\"oid\\\" AND \\\"a\\\".\\\"attnum\\\" = ANY (\\\"ix\\\".\\\"indkey\\\") \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"ns\\\".\\\"oid\\\" = \\\"t\\\".\\\"relnamespace\\\" \" +\n \"INNER JOIN \\\"pg_class\\\" \\\"i\\\" ON \\\"i\\\".\\\"oid\\\" = \\\"ix\\\".\\\"indexrelid\\\" \" +\n \"INNER JOIN \\\"pg_type\\\" \\\"types\\\" ON \\\"types\\\".\\\"oid\\\" = \\\"a\\\".\\\"atttypid\\\" \" +\n \"LEFT JOIN \\\"pg_constraint\\\" \\\"cnst\\\" ON \\\"cnst\\\".\\\"conname\\\" = \\\"i\\\".\\\"relname\\\" \" +\n (\"WHERE \\\"t\\\".\\\"relkind\\\" IN ('r', 'p') AND \\\"cnst\\\".\\\"contype\\\" IS NULL AND (\" + constraintsCondition + \")\");\n foreignKeysCondition = tableNames.map(function (tableName) {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(tableName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"ns\\\".\\\"nspname\\\" = '\" + schema + \"' AND \\\"cl\\\".\\\"relname\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n return [4 /*yield*/, this.hasSupportForPartitionedTables()];\n case 2:\n hasRelispartitionColumn = _b.sent();\n isPartitionCondition = hasRelispartitionColumn ? \" AND \\\"cl\\\".\\\"relispartition\\\" = 'f'\" : \"\";\n foreignKeysSql = \"SELECT \\\"con\\\".\\\"conname\\\" AS \\\"constraint_name\\\", \\\"con\\\".\\\"nspname\\\" AS \\\"table_schema\\\", \\\"con\\\".\\\"relname\\\" AS \\\"table_name\\\", \\\"att2\\\".\\\"attname\\\" AS \\\"column_name\\\", \" +\n \"\\\"ns\\\".\\\"nspname\\\" AS \\\"referenced_table_schema\\\", \\\"cl\\\".\\\"relname\\\" AS \\\"referenced_table_name\\\", \\\"att\\\".\\\"attname\\\" AS \\\"referenced_column_name\\\", \\\"con\\\".\\\"confdeltype\\\" AS \\\"on_delete\\\", \" +\n \"\\\"con\\\".\\\"confupdtype\\\" AS \\\"on_update\\\", \\\"con\\\".\\\"condeferrable\\\" AS \\\"deferrable\\\", \\\"con\\\".\\\"condeferred\\\" AS \\\"deferred\\\" \" +\n \"FROM ( \" +\n \"SELECT UNNEST (\\\"con1\\\".\\\"conkey\\\") AS \\\"parent\\\", UNNEST (\\\"con1\\\".\\\"confkey\\\") AS \\\"child\\\", \\\"con1\\\".\\\"confrelid\\\", \\\"con1\\\".\\\"conrelid\\\", \\\"con1\\\".\\\"conname\\\", \\\"con1\\\".\\\"contype\\\", \\\"ns\\\".\\\"nspname\\\", \" +\n \"\\\"cl\\\".\\\"relname\\\", \\\"con1\\\".\\\"condeferrable\\\", \" +\n \"CASE WHEN \\\"con1\\\".\\\"condeferred\\\" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, \" +\n \"CASE \\\"con1\\\".\\\"confdeltype\\\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \\\"confdeltype\\\", \" +\n \"CASE \\\"con1\\\".\\\"confupdtype\\\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \\\"confupdtype\\\" \" +\n \"FROM \\\"pg_class\\\" \\\"cl\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"cl\\\".\\\"relnamespace\\\" = \\\"ns\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_constraint\\\" \\\"con1\\\" ON \\\"con1\\\".\\\"conrelid\\\" = \\\"cl\\\".\\\"oid\\\" \" +\n (\"WHERE \\\"con1\\\".\\\"contype\\\" = 'f' AND (\" + foreignKeysCondition + \") \") +\n \") \\\"con\\\" \" +\n \"INNER JOIN \\\"pg_attribute\\\" \\\"att\\\" ON \\\"att\\\".\\\"attrelid\\\" = \\\"con\\\".\\\"confrelid\\\" AND \\\"att\\\".\\\"attnum\\\" = \\\"con\\\".\\\"child\\\" \" +\n (\"INNER JOIN \\\"pg_class\\\" \\\"cl\\\" ON \\\"cl\\\".\\\"oid\\\" = \\\"con\\\".\\\"confrelid\\\" \" + isPartitionCondition) +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"cl\\\".\\\"relnamespace\\\" = \\\"ns\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_attribute\\\" \\\"att2\\\" ON \\\"att2\\\".\\\"attrelid\\\" = \\\"con\\\".\\\"conrelid\\\" AND \\\"att2\\\".\\\"attnum\\\" = \\\"con\\\".\\\"parent\\\"\";\n return [4 /*yield*/, Promise.all([\n this.query(tablesSql),\n this.query(columnsSql),\n this.query(constraintsSql),\n this.query(indicesSql),\n this.query(foreignKeysSql),\n ])];\n case 3:\n _a = tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"].apply(void 0, [_b.sent(), 5]), dbTables = _a[0], dbColumns = _a[1], dbConstraints = _a[2], dbIndices = _a[3], dbForeignKeys = _a[4];\n // if tables were not found in the db, no need to proceed\n if (!dbTables.length)\n return [2 /*return*/, []];\n // create tables for loaded tables\n return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var table, getSchemaFromKey, schema, tableFullName, _a, tableUniqueConstraints, tableCheckConstraints, tableExclusionConstraints, tableForeignKeyConstraints, tableIndexConstraints;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n table = new _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"]();\n getSchemaFromKey = function (dbObject, key) { return dbObject[key] === currentSchema && !_this.driver.options.schema ? undefined : dbObject[key]; };\n schema = getSchemaFromKey(dbTable, \"table_schema\");\n table.name = this.driver.buildTableName(dbTable[\"table_name\"], schema);\n tableFullName = this.driver.buildTableName(dbTable[\"table_name\"], dbTable[\"table_schema\"]);\n // create columns from the loaded columns\n _a = table;\n return [4 /*yield*/, Promise.all(dbColumns\n .filter(function (dbColumn) { return _this.driver.buildTableName(dbColumn[\"table_name\"], dbColumn[\"table_schema\"]) === tableFullName; })\n .map(function (dbColumn) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var columnConstraints, tableColumn, type, enumTypeName, builtEnumName, sql, results, geometryColumnSql, results, geographyColumnSql, results, length_1, match, uniqueConstraint, isConstraintComposite;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n columnConstraints = dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName && dbConstraint[\"column_name\"] === dbColumn[\"column_name\"];\n });\n tableColumn = new _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_8__[\"TableColumn\"]();\n tableColumn.name = dbColumn[\"column_name\"];\n tableColumn.type = dbColumn[\"regtype\"].toLowerCase();\n if (tableColumn.type === \"numeric\" || tableColumn.type === \"decimal\" || tableColumn.type === \"float\") {\n // If one of these properties was set, and another was not, Postgres sets '0' in to unspecified property\n // we set 'undefined' in to unspecified property to avoid changing column on sync\n if (dbColumn[\"numeric_precision\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"numeric_precision\"])) {\n tableColumn.precision = dbColumn[\"numeric_precision\"];\n }\n else if (dbColumn[\"numeric_scale\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"numeric_scale\"])) {\n tableColumn.precision = undefined;\n }\n if (dbColumn[\"numeric_scale\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"numeric_scale\"])) {\n tableColumn.scale = dbColumn[\"numeric_scale\"];\n }\n else if (dbColumn[\"numeric_precision\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"numeric_precision\"])) {\n tableColumn.scale = undefined;\n }\n }\n if (dbColumn[\"data_type\"].toLowerCase() === \"array\") {\n tableColumn.isArray = true;\n type = tableColumn.type.replace(\"[]\", \"\");\n tableColumn.type = this.connection.driver.normalizeType({ type: type });\n }\n if (tableColumn.type === \"interval\"\n || tableColumn.type === \"time without time zone\"\n || tableColumn.type === \"time with time zone\"\n || tableColumn.type === \"timestamp without time zone\"\n || tableColumn.type === \"timestamp with time zone\") {\n tableColumn.precision = !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"datetime_precision\"]) ? dbColumn[\"datetime_precision\"] : undefined;\n }\n if (!(tableColumn.type.indexOf(\"enum\") !== -1)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.getEnumTypeName(table, tableColumn)];\n case 1:\n enumTypeName = (_a.sent()).enumTypeName;\n builtEnumName = this.buildEnumName(table, tableColumn, false, true);\n if (builtEnumName !== enumTypeName)\n tableColumn.enumName = enumTypeName;\n tableColumn.type = \"enum\";\n sql = \"SELECT \\\"e\\\".\\\"enumlabel\\\" AS \\\"value\\\" FROM \\\"pg_enum\\\" \\\"e\\\" \" +\n \"INNER JOIN \\\"pg_type\\\" \\\"t\\\" ON \\\"t\\\".\\\"oid\\\" = \\\"e\\\".\\\"enumtypid\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"n\\\" ON \\\"n\\\".\\\"oid\\\" = \\\"t\\\".\\\"typnamespace\\\" \" +\n (\"WHERE \\\"n\\\".\\\"nspname\\\" = '\" + dbTable[\"table_schema\"] + \"' AND \\\"t\\\".\\\"typname\\\" = '\" + this.buildEnumName(table, tableColumn, false, true) + \"'\");\n return [4 /*yield*/, this.query(sql)];\n case 2:\n results = _a.sent();\n tableColumn.enum = results.map(function (result) { return result[\"value\"]; });\n _a.label = 3;\n case 3:\n if (!(tableColumn.type === \"geometry\")) return [3 /*break*/, 5];\n geometryColumnSql = \"SELECT * FROM (\\n SELECT\\n \\\"f_table_schema\\\" \\\"table_schema\\\",\\n \\\"f_table_name\\\" \\\"table_name\\\",\\n \\\"f_geometry_column\\\" \\\"column_name\\\",\\n \\\"srid\\\",\\n \\\"type\\\"\\n FROM \\\"geometry_columns\\\"\\n ) AS _\\n WHERE (\" + tablesCondition + \") AND \\\"column_name\\\" = '\" + tableColumn.name + \"' AND \\\"table_name\\\" = '\" + dbTable[\"table_name\"] + \"'\";\n return [4 /*yield*/, this.query(geometryColumnSql)];\n case 4:\n results = _a.sent();\n tableColumn.spatialFeatureType = results[0].type;\n tableColumn.srid = results[0].srid;\n _a.label = 5;\n case 5:\n if (!(tableColumn.type === \"geography\")) return [3 /*break*/, 7];\n geographyColumnSql = \"SELECT * FROM (\\n SELECT\\n \\\"f_table_schema\\\" \\\"table_schema\\\",\\n \\\"f_table_name\\\" \\\"table_name\\\",\\n \\\"f_geography_column\\\" \\\"column_name\\\",\\n \\\"srid\\\",\\n \\\"type\\\"\\n FROM \\\"geography_columns\\\"\\n ) AS _\\n WHERE (\" + tablesCondition + \") AND \\\"column_name\\\" = '\" + tableColumn.name + \"' AND \\\"table_name\\\" = '\" + dbTable[\"table_name\"] + \"'\";\n return [4 /*yield*/, this.query(geographyColumnSql)];\n case 6:\n results = _a.sent();\n tableColumn.spatialFeatureType = results[0].type;\n tableColumn.srid = results[0].srid;\n _a.label = 7;\n case 7:\n // check only columns that have length property\n if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1) {\n if (tableColumn.isArray) {\n match = /\\((\\d+)\\)/.exec(dbColumn[\"format_type\"]);\n length_1 = match ? match[1] : undefined;\n }\n else if (dbColumn[\"character_maximum_length\"]) {\n length_1 = dbColumn[\"character_maximum_length\"].toString();\n }\n if (length_1) {\n tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length_1) ? length_1 : \"\";\n }\n }\n tableColumn.isNullable = dbColumn[\"is_nullable\"] === \"YES\";\n tableColumn.isPrimary = !!columnConstraints.find(function (constraint) { return constraint[\"constraint_type\"] === \"PRIMARY\"; });\n uniqueConstraint = columnConstraints.find(function (constraint) { return constraint[\"constraint_type\"] === \"UNIQUE\"; });\n isConstraintComposite = uniqueConstraint\n ? !!dbConstraints.find(function (dbConstraint) { return dbConstraint[\"constraint_type\"] === \"UNIQUE\"\n && dbConstraint[\"constraint_name\"] === uniqueConstraint[\"constraint_name\"]\n && dbConstraint[\"column_name\"] !== dbColumn[\"column_name\"]; })\n : false;\n tableColumn.isUnique = !!uniqueConstraint && !isConstraintComposite;\n if (dbColumn[\"column_default\"] !== null && dbColumn[\"column_default\"] !== undefined) {\n if (dbColumn[\"column_default\"].replace(/\"/gi, \"\") === \"nextval('\" + this.buildSequenceName(table, dbColumn[\"column_name\"], currentSchema, true) + \"'::regclass)\") {\n tableColumn.isGenerated = true;\n tableColumn.generationStrategy = \"increment\";\n }\n else if (dbColumn[\"column_default\"] === \"gen_random_uuid()\" || /^uuid_generate_v\\d\\(\\)/.test(dbColumn[\"column_default\"])) {\n tableColumn.isGenerated = true;\n tableColumn.generationStrategy = \"uuid\";\n }\n else {\n tableColumn.default = dbColumn[\"column_default\"].replace(/::.*/, \"\");\n tableColumn.default = tableColumn.default.replace(/^(-?\\d+)$/, \"'$1'\");\n }\n }\n tableColumn.comment = dbColumn[\"description\"] ? dbColumn[\"description\"] : undefined;\n if (dbColumn[\"character_set_name\"])\n tableColumn.charset = dbColumn[\"character_set_name\"];\n if (dbColumn[\"collation_name\"])\n tableColumn.collation = dbColumn[\"collation_name\"];\n return [2 /*return*/, tableColumn];\n }\n });\n }); }))];\n case 1:\n // create columns from the loaded columns\n _a.columns = _b.sent();\n tableUniqueConstraints = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_15__[\"OrmUtils\"].uniq(dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName\n && dbConstraint[\"constraint_type\"] === \"UNIQUE\";\n }), function (dbConstraint) { return dbConstraint[\"constraint_name\"]; });\n table.uniques = tableUniqueConstraints.map(function (constraint) {\n var uniques = dbConstraints.filter(function (dbC) { return dbC[\"constraint_name\"] === constraint[\"constraint_name\"]; });\n return new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_12__[\"TableUnique\"]({\n name: constraint[\"constraint_name\"],\n columnNames: uniques.map(function (u) { return u[\"column_name\"]; })\n });\n });\n tableCheckConstraints = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_15__[\"OrmUtils\"].uniq(dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName\n && dbConstraint[\"constraint_type\"] === \"CHECK\";\n }), function (dbConstraint) { return dbConstraint[\"constraint_name\"]; });\n table.checks = tableCheckConstraints.map(function (constraint) {\n var checks = dbConstraints.filter(function (dbC) { return dbC[\"constraint_name\"] === constraint[\"constraint_name\"]; });\n return new _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_7__[\"TableCheck\"]({\n name: constraint[\"constraint_name\"],\n columnNames: checks.map(function (c) { return c[\"column_name\"]; }),\n expression: constraint[\"expression\"].replace(/^\\s*CHECK\\s*\\((.*)\\)\\s*$/i, \"$1\")\n });\n });\n tableExclusionConstraints = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_15__[\"OrmUtils\"].uniq(dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName\n && dbConstraint[\"constraint_type\"] === \"EXCLUDE\";\n }), function (dbConstraint) { return dbConstraint[\"constraint_name\"]; });\n table.exclusions = tableExclusionConstraints.map(function (constraint) {\n return new _schema_builder_table_TableExclusion__WEBPACK_IMPORTED_MODULE_9__[\"TableExclusion\"]({\n name: constraint[\"constraint_name\"],\n expression: constraint[\"expression\"].substring(8) // trim EXCLUDE from start of expression\n });\n });\n tableForeignKeyConstraints = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_15__[\"OrmUtils\"].uniq(dbForeignKeys.filter(function (dbForeignKey) {\n return _this.driver.buildTableName(dbForeignKey[\"table_name\"], dbForeignKey[\"table_schema\"]) === tableFullName;\n }), function (dbForeignKey) { return dbForeignKey[\"constraint_name\"]; });\n table.foreignKeys = tableForeignKeyConstraints.map(function (dbForeignKey) {\n var foreignKeys = dbForeignKeys.filter(function (dbFk) { return dbFk[\"constraint_name\"] === dbForeignKey[\"constraint_name\"]; });\n // if referenced table located in currently used schema, we don't need to concat schema name to table name.\n var schema = getSchemaFromKey(dbForeignKey, \"referenced_table_schema\");\n var referencedTableName = _this.driver.buildTableName(dbForeignKey[\"referenced_table_name\"], schema);\n return new _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_10__[\"TableForeignKey\"]({\n name: dbForeignKey[\"constraint_name\"],\n columnNames: foreignKeys.map(function (dbFk) { return dbFk[\"column_name\"]; }),\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(function (dbFk) { return dbFk[\"referenced_column_name\"]; }),\n onDelete: dbForeignKey[\"on_delete\"],\n onUpdate: dbForeignKey[\"on_update\"],\n deferrable: dbForeignKey[\"deferrable\"] ? dbForeignKey[\"deferred\"] : undefined,\n });\n });\n tableIndexConstraints = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_15__[\"OrmUtils\"].uniq(dbIndices.filter(function (dbIndex) {\n return _this.driver.buildTableName(dbIndex[\"table_name\"], dbIndex[\"table_schema\"]) === tableFullName;\n }), function (dbIndex) { return dbIndex[\"constraint_name\"]; });\n table.indices = tableIndexConstraints.map(function (constraint) {\n var indices = dbIndices.filter(function (index) {\n return index[\"table_schema\"] === constraint[\"table_schema\"]\n && index[\"table_name\"] === constraint[\"table_name\"]\n && index[\"constraint_name\"] === constraint[\"constraint_name\"];\n });\n return new _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_11__[\"TableIndex\"]({\n table: table,\n name: constraint[\"constraint_name\"],\n columnNames: indices.map(function (i) { return i[\"column_name\"]; }),\n isUnique: constraint[\"is_unique\"] === \"TRUE\",\n where: constraint[\"condition\"],\n isSpatial: indices.every(function (i) { return _this.driver.spatialTypes.indexOf(i[\"type_name\"]) >= 0; }),\n isFulltext: false\n });\n });\n return [2 /*return*/, table];\n }\n });\n }); }))];\n }\n });\n });\n };\n /**\n * Builds create table sql.\n */\n PostgresQueryRunner.prototype.createTableSql = function (table, createForeignKeys) {\n var _this = this;\n var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(table, column); }).join(\", \");\n var sql = \"CREATE TABLE \" + this.escapePath(table) + \" (\" + columnDefinitions;\n table.columns\n .filter(function (column) { return column.isUnique; })\n .forEach(function (column) {\n var isUniqueExist = table.uniques.some(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; });\n if (!isUniqueExist)\n table.uniques.push(new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_12__[\"TableUnique\"]({\n name: _this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n }));\n });\n if (table.uniques.length > 0) {\n var uniquesSql = table.uniques.map(function (unique) {\n var uniqueName = unique.name ? unique.name : _this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames);\n var columnNames = unique.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return \"CONSTRAINT \\\"\" + uniqueName + \"\\\" UNIQUE (\" + columnNames + \")\";\n }).join(\", \");\n sql += \", \" + uniquesSql;\n }\n if (table.checks.length > 0) {\n var checksSql = table.checks.map(function (check) {\n var checkName = check.name ? check.name : _this.connection.namingStrategy.checkConstraintName(table.name, check.expression);\n return \"CONSTRAINT \\\"\" + checkName + \"\\\" CHECK (\" + check.expression + \")\";\n }).join(\", \");\n sql += \", \" + checksSql;\n }\n if (table.exclusions.length > 0) {\n var exclusionsSql = table.exclusions.map(function (exclusion) {\n var exclusionName = exclusion.name ? exclusion.name : _this.connection.namingStrategy.exclusionConstraintName(table.name, exclusion.expression);\n return \"CONSTRAINT \\\"\" + exclusionName + \"\\\" EXCLUDE \" + exclusion.expression;\n }).join(\", \");\n sql += \", \" + exclusionsSql;\n }\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n var foreignKeysSql = table.foreignKeys.map(function (fk) {\n var columnNames = fk.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n if (!fk.name)\n fk.name = _this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n var constraint = \"CONSTRAINT \\\"\" + fk.name + \"\\\" FOREIGN KEY (\" + columnNames + \") REFERENCES \" + _this.escapePath(fk.referencedTableName) + \" (\" + referencedColumnNames + \")\";\n if (fk.onDelete)\n constraint += \" ON DELETE \" + fk.onDelete;\n if (fk.onUpdate)\n constraint += \" ON UPDATE \" + fk.onUpdate;\n if (fk.deferrable)\n constraint += \" DEFERRABLE \" + fk.deferrable;\n return constraint;\n }).join(\", \");\n sql += \", \" + foreignKeysSql;\n }\n var primaryColumns = table.columns.filter(function (column) { return column.isPrimary; });\n if (primaryColumns.length > 0) {\n var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, primaryColumns.map(function (column) { return column.name; }));\n var columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n sql += \", CONSTRAINT \\\"\" + primaryKeyName + \"\\\" PRIMARY KEY (\" + columnNames + \")\";\n }\n sql += \")\";\n table.columns\n .filter(function (it) { return it.comment; })\n .forEach(function (it) { return sql += \"; COMMENT ON COLUMN \" + _this.escapePath(table) + \".\\\"\" + it.name + \"\\\" IS \" + _this.escapeComment(it.comment); });\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](sql);\n };\n /**\n * Builds drop table sql.\n */\n PostgresQueryRunner.prototype.dropTableSql = function (tableOrPath) {\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"DROP TABLE \" + this.escapePath(tableOrPath));\n };\n PostgresQueryRunner.prototype.createViewSql = function (view) {\n var materializedClause = view.materialized ? \"MATERIALIZED \" : \"\";\n var viewName = this.escapePath(view);\n if (typeof view.expression === \"string\") {\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"CREATE \" + materializedClause + \"VIEW \" + viewName + \" AS \" + view.expression);\n }\n else {\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"CREATE \" + materializedClause + \"VIEW \" + viewName + \" AS \" + view.expression(this.connection).getQuery());\n }\n };\n PostgresQueryRunner.prototype.insertViewDefinitionSql = function (view) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, splittedName, schema, name, expression, _a, query, parameters;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n splittedName = view.name.split(\".\");\n schema = this.driver.options.schema || currentSchema;\n name = view.name;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ type: \"VIEW\", schema: schema, name: name, value: expression })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return [2 /*return*/, new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](query, parameters)];\n }\n });\n });\n };\n /**\n * Builds drop view sql.\n */\n PostgresQueryRunner.prototype.dropViewSql = function (viewOrPath) {\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"DROP VIEW \" + this.escapePath(viewOrPath));\n };\n /**\n * Builds remove view sql.\n */\n PostgresQueryRunner.prototype.deleteViewDefinitionSql = function (viewOrPath) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, viewName, splittedName, schema, name, qb, _a, query, parameters;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n viewName = viewOrPath instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_13__[\"View\"] ? viewOrPath.name : viewOrPath;\n splittedName = viewName.split(\".\");\n schema = this.driver.options.schema || currentSchema;\n name = viewName;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n qb = this.connection.createQueryBuilder();\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(qb.escape(\"type\") + \" = 'VIEW'\")\n .andWhere(qb.escape(\"schema\") + \" = :schema\", { schema: schema })\n .andWhere(qb.escape(\"name\") + \" = :name\", { name: name })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return [2 /*return*/, new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](query, parameters)];\n }\n });\n });\n };\n /**\n * Extracts schema name from given Table object or table name string.\n */\n PostgresQueryRunner.prototype.extractSchema = function (target) {\n var tableName = target instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"] ? target.name : target;\n return tableName.indexOf(\".\") === -1 ? this.driver.options.schema : tableName.split(\".\")[0];\n };\n /**\n * Drops ENUM type from given schemas.\n */\n PostgresQueryRunner.prototype.dropEnumTypes = function (schemaNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var selectDropsQuery, dropQueries;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n selectDropsQuery = \"SELECT 'DROP TYPE IF EXISTS \\\"' || n.nspname || '\\\".\\\"' || t.typname || '\\\" CASCADE;' as \\\"query\\\" FROM \\\"pg_type\\\" \\\"t\\\" \" +\n \"INNER JOIN \\\"pg_enum\\\" \\\"e\\\" ON \\\"e\\\".\\\"enumtypid\\\" = \\\"t\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"n\\\" ON \\\"n\\\".\\\"oid\\\" = \\\"t\\\".\\\"typnamespace\\\" \" +\n (\"WHERE \\\"n\\\".\\\"nspname\\\" IN (\" + schemaNames + \") GROUP BY \\\"n\\\".\\\"nspname\\\", \\\"t\\\".\\\"typname\\\"\");\n return [4 /*yield*/, this.query(selectDropsQuery)];\n case 1:\n dropQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Checks if enum with the given name exist in the database.\n */\n PostgresQueryRunner.prototype.hasEnumType = function (table, column) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var schema, enumName, sql, result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n schema = this.parseTableName(table).schema;\n enumName = this.buildEnumName(table, column, false, true);\n sql = \"SELECT \\\"n\\\".\\\"nspname\\\", \\\"t\\\".\\\"typname\\\" FROM \\\"pg_type\\\" \\\"t\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"n\\\" ON \\\"n\\\".\\\"oid\\\" = \\\"t\\\".\\\"typnamespace\\\" \" +\n (\"WHERE \\\"n\\\".\\\"nspname\\\" = \" + schema + \" AND \\\"t\\\".\\\"typname\\\" = '\" + enumName + \"'\");\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Builds create ENUM type sql.\n */\n PostgresQueryRunner.prototype.createEnumTypeSql = function (table, column, enumName) {\n if (!enumName)\n enumName = this.buildEnumName(table, column);\n var enumValues = column.enum.map(function (value) { return \"'\" + value.replace(\"'\", \"''\") + \"'\"; }).join(\", \");\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"CREATE TYPE \" + enumName + \" AS ENUM(\" + enumValues + \")\");\n };\n /**\n * Builds create ENUM type sql.\n */\n PostgresQueryRunner.prototype.dropEnumTypeSql = function (table, column, enumName) {\n if (!enumName)\n enumName = this.buildEnumName(table, column);\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"DROP TYPE \" + enumName);\n };\n /**\n * Builds create index sql.\n */\n PostgresQueryRunner.prototype.createIndexSql = function (table, index) {\n var columns = index.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"CREATE \" + (index.isUnique ? \"UNIQUE \" : \"\") + \"INDEX \\\"\" + index.name + \"\\\" ON \" + this.escapePath(table) + \" \" + (index.isSpatial ? \"USING GiST \" : \"\") + \"(\" + columns + \") \" + (index.where ? \"WHERE \" + index.where : \"\"));\n };\n /**\n * Builds drop index sql.\n */\n PostgresQueryRunner.prototype.dropIndexSql = function (table, indexOrName) {\n var indexName = indexOrName instanceof _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_11__[\"TableIndex\"] ? indexOrName.name : indexOrName;\n var schema = this.extractSchema(table);\n return schema ? new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"DROP INDEX \\\"\" + schema + \"\\\".\\\"\" + indexName + \"\\\"\") : new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"DROP INDEX \\\"\" + indexName + \"\\\"\");\n };\n /**\n * Builds create primary key sql.\n */\n PostgresQueryRunner.prototype.createPrimaryKeySql = function (table, columnNames) {\n var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n var columnNamesString = columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + primaryKeyName + \"\\\" PRIMARY KEY (\" + columnNamesString + \")\");\n };\n /**\n * Builds drop primary key sql.\n */\n PostgresQueryRunner.prototype.dropPrimaryKeySql = function (table) {\n var columnNames = table.primaryColumns.map(function (column) { return column.name; });\n var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + primaryKeyName + \"\\\"\");\n };\n /**\n * Builds create unique constraint sql.\n */\n PostgresQueryRunner.prototype.createUniqueConstraintSql = function (table, uniqueConstraint) {\n var columnNames = uniqueConstraint.columnNames.map(function (column) { return \"\\\"\" + column + \"\\\"\"; }).join(\", \");\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\" + columnNames + \")\");\n };\n /**\n * Builds drop unique constraint sql.\n */\n PostgresQueryRunner.prototype.dropUniqueConstraintSql = function (table, uniqueOrName) {\n var uniqueName = uniqueOrName instanceof _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_12__[\"TableUnique\"] ? uniqueOrName.name : uniqueOrName;\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueName + \"\\\"\");\n };\n /**\n * Builds create check constraint sql.\n */\n PostgresQueryRunner.prototype.createCheckConstraintSql = function (table, checkConstraint) {\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + checkConstraint.name + \"\\\" CHECK (\" + checkConstraint.expression + \")\");\n };\n /**\n * Builds drop check constraint sql.\n */\n PostgresQueryRunner.prototype.dropCheckConstraintSql = function (table, checkOrName) {\n var checkName = checkOrName instanceof _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_7__[\"TableCheck\"] ? checkOrName.name : checkOrName;\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + checkName + \"\\\"\");\n };\n /**\n * Builds create exclusion constraint sql.\n */\n PostgresQueryRunner.prototype.createExclusionConstraintSql = function (table, exclusionConstraint) {\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + exclusionConstraint.name + \"\\\" EXCLUDE \" + exclusionConstraint.expression);\n };\n /**\n * Builds drop exclusion constraint sql.\n */\n PostgresQueryRunner.prototype.dropExclusionConstraintSql = function (table, exclusionOrName) {\n var exclusionName = exclusionOrName instanceof _schema_builder_table_TableExclusion__WEBPACK_IMPORTED_MODULE_9__[\"TableExclusion\"] ? exclusionOrName.name : exclusionOrName;\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + exclusionName + \"\\\"\");\n };\n /**\n * Builds create foreign key sql.\n */\n PostgresQueryRunner.prototype.createForeignKeySql = function (table, foreignKey) {\n var columnNames = foreignKey.columnNames.map(function (column) { return \"\\\"\" + column + \"\\\"\"; }).join(\", \");\n var referencedColumnNames = foreignKey.referencedColumnNames.map(function (column) { return \"\\\"\" + column + \"\\\"\"; }).join(\",\");\n var sql = \"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + foreignKey.name + \"\\\" FOREIGN KEY (\" + columnNames + \") \" +\n (\"REFERENCES \" + this.escapePath(foreignKey.referencedTableName) + \"(\" + referencedColumnNames + \")\");\n if (foreignKey.onDelete)\n sql += \" ON DELETE \" + foreignKey.onDelete;\n if (foreignKey.onUpdate)\n sql += \" ON UPDATE \" + foreignKey.onUpdate;\n if (foreignKey.deferrable)\n sql += \" DEFERRABLE \" + foreignKey.deferrable;\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](sql);\n };\n /**\n * Builds drop foreign key sql.\n */\n PostgresQueryRunner.prototype.dropForeignKeySql = function (table, foreignKeyOrName) {\n var foreignKeyName = foreignKeyOrName instanceof _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_10__[\"TableForeignKey\"] ? foreignKeyOrName.name : foreignKeyOrName;\n return new _Query__WEBPACK_IMPORTED_MODULE_16__[\"Query\"](\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + foreignKeyName + \"\\\"\");\n };\n /**\n * Builds sequence name from given table and column.\n */\n PostgresQueryRunner.prototype.buildSequenceName = function (table, columnOrName, currentSchema, disableEscape, skipSchema) {\n var columnName = columnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_8__[\"TableColumn\"] ? columnOrName.name : columnOrName;\n var schema = undefined;\n var tableName = undefined;\n if (table.name.indexOf(\".\") === -1) {\n tableName = table.name;\n }\n else {\n schema = table.name.split(\".\")[0];\n tableName = table.name.split(\".\")[1];\n }\n var seqName = tableName + \"_\" + columnName + \"_seq\";\n if (seqName.length > this.connection.driver.maxAliasLength) // note doesn't yet handle corner cases where .length differs from number of UTF-8 bytes\n seqName = tableName.substring(0, 29) + \"_\" + columnName.substring(0, Math.max(29, 63 - tableName.length - 5)) + \"_seq\";\n if (schema && schema !== currentSchema && !skipSchema) {\n return disableEscape ? schema + \".\" + seqName : \"\\\"\" + schema + \"\\\".\\\"\" + seqName + \"\\\"\";\n }\n else {\n return disableEscape ? \"\" + seqName : \"\\\"\" + seqName + \"\\\"\";\n }\n };\n /**\n * Builds ENUM type name from given table and column.\n */\n PostgresQueryRunner.prototype.buildEnumName = function (table, column, withSchema, disableEscape, toOld) {\n if (withSchema === void 0) { withSchema = true; }\n var schema = table.name.indexOf(\".\") === -1 ? this.driver.options.schema : table.name.split(\".\")[0];\n var tableName = table.name.indexOf(\".\") === -1 ? table.name : table.name.split(\".\")[1];\n var enumName = column.enumName ? column.enumName : tableName + \"_\" + column.name.toLowerCase() + \"_enum\";\n if (schema && withSchema)\n enumName = schema + \".\" + enumName;\n if (toOld)\n enumName = enumName + \"_old\";\n return enumName.split(\".\").map(function (i) {\n return disableEscape ? i : \"\\\"\" + i + \"\\\"\";\n }).join(\".\");\n };\n PostgresQueryRunner.prototype.getEnumTypeName = function (table, column) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, _a, schema, name, result, udtName;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(table.name.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return [4 /*yield*/, this.query(\"SELECT \\\"udt_schema\\\", \\\"udt_name\\\" \" +\n (\"FROM \\\"information_schema\\\".\\\"columns\\\" WHERE \\\"table_schema\\\" = '\" + schema + \"' AND \\\"table_name\\\" = '\" + name + \"' AND \\\"column_name\\\"='\" + column.name + \"'\"))];\n case 2:\n result = _b.sent();\n udtName = result[0][\"udt_name\"];\n if (udtName.indexOf(\"_\") === 0) {\n udtName = udtName.substr(1, udtName.length);\n }\n return [2 /*return*/, {\n enumTypeSchema: result[0][\"udt_schema\"],\n enumTypeName: udtName\n }];\n }\n });\n });\n };\n /**\n * Escapes a given comment so it's safe to include in a query.\n */\n PostgresQueryRunner.prototype.escapeComment = function (comment) {\n if (!comment || comment.length === 0) {\n return \"NULL\";\n }\n comment = comment\n .replace(/'/g, \"''\")\n .replace(\"\\0\", \"\"); // Null bytes aren't allowed in comments\n return \"'\" + comment + \"'\";\n };\n /**\n * Escapes given table or view path.\n */\n PostgresQueryRunner.prototype.escapePath = function (target, disableEscape) {\n var tableName = target instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"] || target instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_13__[\"View\"] ? target.name : target;\n tableName = tableName.indexOf(\".\") === -1 && this.driver.options.schema ? this.driver.options.schema + \".\" + tableName : tableName;\n return tableName.split(\".\").map(function (i) {\n return disableEscape ? i : \"\\\"\" + i + \"\\\"\";\n }).join(\".\");\n };\n /**\n * Returns object with table schema and table name.\n */\n PostgresQueryRunner.prototype.parseTableName = function (target) {\n var tableName = target instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_6__[\"Table\"] ? target.name : target;\n if (tableName.indexOf(\".\") === -1) {\n return {\n schema: this.driver.options.schema ? \"'\" + this.driver.options.schema + \"'\" : \"current_schema()\",\n tableName: \"'\" + tableName + \"'\"\n };\n }\n else {\n return {\n schema: \"'\" + tableName.split(\".\")[0] + \"'\",\n tableName: \"'\" + tableName.split(\".\")[1] + \"'\"\n };\n }\n };\n /**\n * Builds a query for create column.\n */\n PostgresQueryRunner.prototype.buildCreateColumnSql = function (table, column) {\n var c = \"\\\"\" + column.name + \"\\\"\";\n if (column.isGenerated === true && column.generationStrategy !== \"uuid\") {\n if (column.type === \"integer\" || column.type === \"int\" || column.type === \"int4\")\n c += \" SERIAL\";\n if (column.type === \"smallint\" || column.type === \"int2\")\n c += \" SMALLSERIAL\";\n if (column.type === \"bigint\" || column.type === \"int8\")\n c += \" BIGSERIAL\";\n }\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n c += \" \" + this.buildEnumName(table, column);\n if (column.isArray)\n c += \" array\";\n }\n else if (!column.isGenerated || column.type === \"uuid\") {\n c += \" \" + this.connection.driver.createFullType(column);\n }\n if (column.charset)\n c += \" CHARACTER SET \\\"\" + column.charset + \"\\\"\";\n if (column.collation)\n c += \" COLLATE \\\"\" + column.collation + \"\\\"\";\n if (column.isNullable !== true)\n c += \" NOT NULL\";\n if (column.default !== undefined && column.default !== null)\n c += \" DEFAULT \" + column.default;\n if (column.isGenerated && column.generationStrategy === \"uuid\" && !column.default)\n c += \" DEFAULT \" + this.driver.uuidGenerator;\n return c;\n };\n /**\n * Checks if the PostgreSQL server has support for partitioned tables\n */\n PostgresQueryRunner.prototype.hasSupportForPartitionedTables = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition'\")];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n return PostgresQueryRunner;\n}(_query_runner_BaseQueryRunner__WEBPACK_IMPORTED_MODULE_5__[\"BaseQueryRunner\"]));\n\n\n//# sourceMappingURL=PostgresQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/postgres/PostgresQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/react-native/ReactNativeDriver.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/react-native/ReactNativeDriver.js ***! - \*******************************************************************************/ -/*! exports provided: ReactNativeDriver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactNativeDriver\", function() { return ReactNativeDriver; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _ReactNativeQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ReactNativeQueryRunner */ \"./node_modules/typeorm/browser/driver/react-native/ReactNativeQueryRunner.js\");\n/* harmony import */ var _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/DriverOptionNotSetError */ \"./node_modules/typeorm/browser/error/DriverOptionNotSetError.js\");\n/* harmony import */ var _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/DriverPackageNotInstalledError */ \"./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js\");\n\n\n\n\n\nvar ReactNativeDriver = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ReactNativeDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ReactNativeDriver(connection) {\n var _this = _super.call(this, connection) || this;\n _this.database = _this.options.database;\n // validate options to make sure everything is set\n if (!_this.options.database)\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[\"DriverOptionNotSetError\"](\"database\");\n if (!_this.options.location)\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[\"DriverOptionNotSetError\"](\"location\");\n // load sqlite package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n ReactNativeDriver.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close(ok, fail);\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n ReactNativeDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new _ReactNativeQueryRunner__WEBPACK_IMPORTED_MODULE_2__[\"ReactNativeQueryRunner\"](this);\n return this.queryRunner;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n ReactNativeDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n var options = Object.assign({}, {\n name: _this.options.database,\n location: _this.options.location,\n }, _this.options.extra || {});\n _this.sqlite.openDatabase(options, function (db) {\n var databaseConnection = db;\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n databaseConnection.executeSql(\"PRAGMA foreign_keys = ON;\", [], function (result) {\n ok(databaseConnection);\n }, function (error) {\n fail(error);\n });\n }, function (error) {\n fail(error);\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n ReactNativeDriver.prototype.loadDependencies = function () {\n try {\n this.sqlite = __webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module 'react-native-sqlite-storage'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n }\n catch (e) {\n throw new _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__[\"DriverPackageNotInstalledError\"](\"React-Native\", \"react-native-sqlite-storage\");\n }\n };\n return ReactNativeDriver;\n}(_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__[\"AbstractSqliteDriver\"]));\n\n\n//# sourceMappingURL=ReactNativeDriver.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/react-native/ReactNativeDriver.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/react-native/ReactNativeQueryRunner.js": -/*!************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/react-native/ReactNativeQueryRunner.js ***! - \************************************************************************************/ -/*! exports provided: ReactNativeQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactNativeQueryRunner\", function() { return ReactNativeQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/QueryFailedError */ \"./node_modules/typeorm/browser/error/QueryFailedError.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteQueryRunner */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js\");\n/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../subscriber/Broadcaster */ \"./node_modules/typeorm/browser/subscriber/Broadcaster.js\");\n\n\n\n\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar ReactNativeQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ReactNativeQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ReactNativeQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__[\"Broadcaster\"](_this);\n return _this;\n }\n /**\n * Executes a given SQL query.\n */\n ReactNativeQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[\"QueryRunnerAlreadyReleasedError\"]();\n return new Promise(function (ok, fail) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n databaseConnection.executeSql(query, parameters, function (result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);\n // return id of inserted row, if query was insert statement.\n if (query.substr(0, 11) === \"INSERT INTO\") {\n ok(result.insertId);\n }\n else {\n var resultSet = [];\n for (var i = 0; i < result.rows.length; i++) {\n resultSet.push(result.rows.item(i));\n }\n ok(resultSet);\n }\n }, function (err) {\n _this.driver.connection.logger.logQueryError(err, query, parameters, _this);\n fail(new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__[\"QueryFailedError\"](query, parameters, err));\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n ReactNativeQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n return Object.keys(objectLiteral).map(function (key, index) { return \"\\\"\" + key + \"\\\"\" + \"=?\"; });\n };\n return ReactNativeQueryRunner;\n}(_sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__[\"AbstractSqliteQueryRunner\"]));\n\n\n//# sourceMappingURL=ReactNativeQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/react-native/ReactNativeQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js ***! - \*************************************************************************************/ -/*! exports provided: AbstractSqliteDriver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AbstractSqliteDriver\", function() { return AbstractSqliteDriver; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/DateUtils */ \"./node_modules/typeorm/browser/util/DateUtils.js\");\n/* harmony import */ var _schema_builder_RdbmsSchemaBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../schema-builder/RdbmsSchemaBuilder */ \"./node_modules/typeorm/browser/schema-builder/RdbmsSchemaBuilder.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/ApplyValueTransformers */ \"./node_modules/typeorm/browser/util/ApplyValueTransformers.js\");\n\n\n\n\n\n/**\n * Organizes communication with sqlite DBMS.\n */\nvar AbstractSqliteDriver = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AbstractSqliteDriver(connection) {\n /**\n * Indicates if replication is enabled.\n */\n this.isReplicated = false;\n /**\n * Indicates if tree tables are supported by this driver.\n */\n this.treeSupport = true;\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm\n * @see https://sqlite.org/datatype3.html\n */\n this.supportedDataTypes = [\n \"int\",\n \"integer\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"unsigned big int\",\n \"int2\",\n \"int8\",\n \"integer\",\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"clob\",\n \"text\",\n \"blob\",\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"boolean\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n /**\n * Gets list of column data types that support length by a driver.\n */\n this.withLengthColumnTypes = [\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"blob\",\n \"clob\"\n ];\n /**\n * Gets list of spatial column data types.\n */\n this.spatialTypes = [];\n /**\n * Gets list of column data types that support precision by a driver.\n */\n this.withPrecisionColumnTypes = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n /**\n * Gets list of column data types that support scale by a driver.\n */\n this.withScaleColumnTypes = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n ];\n /**\n * Orm has special columns and we need to know what database column types should be for those types.\n * Column types are driver dependant.\n */\n this.mappedDataTypes = {\n createDate: \"datetime\",\n createDateDefault: \"datetime('now')\",\n updateDate: \"datetime\",\n updateDateDefault: \"datetime('now')\",\n deleteDate: \"datetime\",\n deleteDateNullable: true,\n version: \"integer\",\n treeLevel: \"integer\",\n migrationId: \"integer\",\n migrationName: \"varchar\",\n migrationTimestamp: \"bigint\",\n cacheId: \"int\",\n cacheIdentifier: \"varchar\",\n cacheTime: \"bigint\",\n cacheDuration: \"int\",\n cacheQuery: \"text\",\n cacheResult: \"text\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"text\",\n };\n this.connection = connection;\n this.options = connection.options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n */\n AbstractSqliteDriver.prototype.connect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.createDatabaseConnection()];\n case 1:\n _a.databaseConnection = _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n AbstractSqliteDriver.prototype.afterConnect = function () {\n return Promise.resolve();\n };\n /**\n * Closes connection with database.\n */\n AbstractSqliteDriver.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close(function (err) { return err ? fail(err) : ok(); });\n })];\n });\n });\n };\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n AbstractSqliteDriver.prototype.createSchemaBuilder = function () {\n return new _schema_builder_RdbmsSchemaBuilder__WEBPACK_IMPORTED_MODULE_2__[\"RdbmsSchemaBuilder\"](this.connection);\n };\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n AbstractSqliteDriver.prototype.preparePersistentValue = function (value, columnMetadata) {\n if (columnMetadata.transformer)\n value = _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__[\"ApplyValueTransformers\"].transformTo(columnMetadata.transformer, value);\n if (value === null || value === undefined)\n return value;\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n return value === true ? 1 : 0;\n }\n else if (columnMetadata.type === \"date\") {\n return _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].mixedDateToDateString(value);\n }\n else if (columnMetadata.type === \"time\") {\n return _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].mixedDateToTimeString(value);\n }\n else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n // to string conversation needs because SQLite stores date as integer number, when date came as Object\n // TODO: think about `toUTC` conversion\n return _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].mixedDateToUtcDatetimeString(value);\n }\n else if (columnMetadata.type === \"simple-array\") {\n return _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].simpleArrayToString(value);\n }\n else if (columnMetadata.type === \"simple-json\") {\n return _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].simpleJsonToString(value);\n }\n else if (columnMetadata.type === \"simple-enum\") {\n return _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].simpleEnumToString(value);\n }\n return value;\n };\n /**\n * Prepares given value to a value to be hydrated, based on its column type or metadata.\n */\n AbstractSqliteDriver.prototype.prepareHydratedValue = function (value, columnMetadata) {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__[\"ApplyValueTransformers\"].transformFrom(columnMetadata.transformer, value) : value;\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n value = value ? true : false;\n }\n else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n /**\n * Fix date conversion issue\n *\n * If the format of the date string is \"2018-03-14 02:33:33.906\", Safari (and iOS WKWebView) will convert it to an invalid date object.\n * We need to modify the date string to \"2018-03-14T02:33:33.906Z\" and Safari will convert it correctly.\n *\n * ISO 8601\n * https://www.w3.org/TR/NOTE-datetime\n */\n if (value && typeof value === \"string\") {\n // There are various valid time string formats a sqlite time string might have:\n // https://www.sqlite.org/lang_datefunc.html\n // There are two separate fixes we may need to do:\n // 1) Add 'T' separator if space is used instead\n // 2) Add 'Z' UTC suffix if no timezone or offset specified\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d/.test(value)) {\n value = value.replace(\" \", \"T\");\n }\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d(:\\d\\d(\\.\\d\\d\\d)?)?$/.test(value)) {\n value += \"Z\";\n }\n }\n value = _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].normalizeHydratedDate(value);\n }\n else if (columnMetadata.type === \"date\") {\n value = _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].mixedDateToDateString(value);\n }\n else if (columnMetadata.type === \"time\") {\n value = _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].mixedTimeToString(value);\n }\n else if (columnMetadata.type === \"simple-array\") {\n value = _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].stringToSimpleArray(value);\n }\n else if (columnMetadata.type === \"simple-json\") {\n value = _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].stringToSimpleJson(value);\n }\n else if (columnMetadata.type === \"simple-enum\") {\n value = _util_DateUtils__WEBPACK_IMPORTED_MODULE_1__[\"DateUtils\"].stringToSimpleEnum(value, columnMetadata);\n }\n if (columnMetadata.transformer)\n value = _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__[\"ApplyValueTransformers\"].transformFrom(columnMetadata.transformer, value);\n return value;\n };\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n AbstractSqliteDriver.prototype.escapeQueryWithParameters = function (sql, parameters, nativeParameters) {\n var builtParameters = Object.keys(nativeParameters).map(function (key) {\n // Mapping boolean values to their numeric representation\n if (typeof nativeParameters[key] === \"boolean\") {\n return nativeParameters[key] === true ? 1 : 0;\n }\n return nativeParameters[key];\n });\n if (!parameters || !Object.keys(parameters).length)\n return [sql, builtParameters];\n var keys = Object.keys(parameters).map(function (parameter) { return \"(:(\\\\.\\\\.\\\\.)?\" + parameter + \"\\\\b)\"; }).join(\"|\");\n sql = sql.replace(new RegExp(keys, \"g\"), function (key) {\n var value;\n var isArray = false;\n if (key.substr(0, 4) === \":...\") {\n isArray = true;\n value = parameters[key.substr(4)];\n }\n else {\n value = parameters[key.substr(1)];\n }\n if (isArray) {\n return value.map(function (v) {\n builtParameters.push(v);\n return \"?\";\n // return \"$\" + builtParameters.length;\n }).join(\", \");\n }\n else if (value instanceof Function) {\n return value();\n }\n else {\n builtParameters.push(value);\n return \"?\";\n // return \"$\" + builtParameters.length;\n }\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, builtParameters];\n };\n /**\n * Escapes a column name.\n */\n AbstractSqliteDriver.prototype.escape = function (columnName) {\n return \"\\\"\" + columnName + \"\\\"\";\n };\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. \"myDB\".\"mySchema\".\"myTable\"\n *\n * Returns only simple table name because all inherited drivers does not supports schema and database.\n */\n AbstractSqliteDriver.prototype.buildTableName = function (tableName, schema, database) {\n return tableName;\n };\n /**\n * Creates a database type from a given column metadata.\n */\n AbstractSqliteDriver.prototype.normalizeType = function (column) {\n if (column.type === Number || column.type === \"int\") {\n return \"integer\";\n }\n else if (column.type === String) {\n return \"varchar\";\n }\n else if (column.type === Date) {\n return \"datetime\";\n }\n else if (column.type === Boolean) {\n return \"boolean\";\n }\n else if (column.type === \"uuid\") {\n return \"varchar\";\n }\n else if (column.type === \"simple-array\") {\n return \"text\";\n }\n else if (column.type === \"simple-json\") {\n return \"text\";\n }\n else if (column.type === \"simple-enum\") {\n return \"varchar\";\n }\n else {\n return column.type || \"\";\n }\n };\n /**\n * Normalizes \"default\" value of the column.\n */\n AbstractSqliteDriver.prototype.normalizeDefault = function (columnMetadata) {\n var defaultValue = columnMetadata.default;\n if (typeof defaultValue === \"number\") {\n return \"\" + defaultValue;\n }\n else if (typeof defaultValue === \"boolean\") {\n return defaultValue === true ? \"1\" : \"0\";\n }\n else if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n else if (typeof defaultValue === \"string\") {\n return \"'\" + defaultValue + \"'\";\n }\n else if (defaultValue === null) {\n return undefined;\n }\n else {\n return defaultValue;\n }\n };\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n AbstractSqliteDriver.prototype.normalizeIsUnique = function (column) {\n return column.entityMetadata.uniques.some(function (uq) { return uq.columns.length === 1 && uq.columns[0] === column; });\n };\n /**\n * Calculates column length taking into account the default length values.\n */\n AbstractSqliteDriver.prototype.getColumnLength = function (column) {\n return column.length ? column.length.toString() : \"\";\n };\n /**\n * Normalizes \"default\" value of the column.\n */\n AbstractSqliteDriver.prototype.createFullType = function (column) {\n var type = column.type;\n if (column.enum) {\n return \"varchar\";\n }\n if (column.length) {\n type += \"(\" + column.length + \")\";\n }\n else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += \"(\" + column.precision + \",\" + column.scale + \")\";\n }\n else if (column.precision !== null && column.precision !== undefined) {\n type += \"(\" + column.precision + \")\";\n }\n if (column.isArray)\n type += \" array\";\n return type;\n };\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n AbstractSqliteDriver.prototype.obtainMasterConnection = function () {\n return Promise.resolve();\n };\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n AbstractSqliteDriver.prototype.obtainSlaveConnection = function () {\n return Promise.resolve();\n };\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n AbstractSqliteDriver.prototype.createGeneratedMap = function (metadata, insertResult, entityIndex, entityNum) {\n var generatedMap = metadata.generatedColumns.reduce(function (map, generatedColumn) {\n var value;\n if (generatedColumn.generationStrategy === \"increment\" && insertResult) {\n // NOTE: When INSERT statement is successfully completed, the last inserted row ID is returned.\n // see also: SqliteQueryRunner.query()\n value = insertResult - entityNum + entityIndex + 1;\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // value = insertValue[generatedColumn.databaseName];\n }\n if (!value)\n return map;\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[\"OrmUtils\"].mergeDeep(map, generatedColumn.createValueMap(value));\n }, {});\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n };\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n AbstractSqliteDriver.prototype.findChangedColumns = function (tableColumns, columnMetadatas) {\n var _this = this;\n return columnMetadatas.filter(function (columnMetadata) {\n var tableColumn = tableColumns.find(function (c) { return c.name === columnMetadata.databaseName; });\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"comment:\", tableColumn.comment, columnMetadata.comment);\n // console.log(\"default:\", this.normalizeDefault(columnMetadata), columnMetadata.default);\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log(\"==========================================\");\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== _this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadata.length\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n // || tableColumn.comment !== columnMetadata.comment || // todo\n || _this.normalizeDefault(columnMetadata) !== tableColumn.default\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== _this.normalizeIsUnique(columnMetadata)\n || (columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated);\n });\n };\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n AbstractSqliteDriver.prototype.isReturningSqlSupported = function () {\n return false;\n };\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n AbstractSqliteDriver.prototype.isUUIDGenerationSupported = function () {\n return false;\n };\n /**\n * Returns true if driver supports fulltext indices.\n */\n AbstractSqliteDriver.prototype.isFullTextColumnTypeSupported = function () {\n return false;\n };\n /**\n * Creates an escaped parameter.\n */\n AbstractSqliteDriver.prototype.createParameter = function (parameterName, index) {\n // return \"$\" + (index + 1);\n return \"?\";\n // return \"$\" + parameterName;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n AbstractSqliteDriver.prototype.createDatabaseConnection = function () {\n throw new Error(\"Do not use AbstractSqlite directly, it has to be used with one of the sqlite drivers\");\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n AbstractSqliteDriver.prototype.loadDependencies = function () {\n // dependencies have to be loaded in the specific driver\n };\n return AbstractSqliteDriver;\n}());\n\n\n//# sourceMappingURL=AbstractSqliteDriver.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js ***! - \******************************************************************************************/ -/*! exports provided: AbstractSqliteQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AbstractSqliteQueryRunner\", function() { return AbstractSqliteQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/TransactionAlreadyStartedError */ \"./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js\");\n/* harmony import */ var _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/TransactionNotStartedError */ \"./node_modules/typeorm/browser/error/TransactionNotStartedError.js\");\n/* harmony import */ var _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../schema-builder/table/TableColumn */ \"./node_modules/typeorm/browser/schema-builder/table/TableColumn.js\");\n/* harmony import */ var _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../metadata/ColumnMetadata */ \"./node_modules/typeorm/browser/metadata/ColumnMetadata.js\");\n/* harmony import */ var _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../schema-builder/table/Table */ \"./node_modules/typeorm/browser/schema-builder/table/Table.js\");\n/* harmony import */ var _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../schema-builder/table/TableIndex */ \"./node_modules/typeorm/browser/schema-builder/table/TableIndex.js\");\n/* harmony import */ var _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../schema-builder/table/TableForeignKey */ \"./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js\");\n/* harmony import */ var _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../schema-builder/view/View */ \"./node_modules/typeorm/browser/schema-builder/view/View.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n/* harmony import */ var _Query__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Query */ \"./node_modules/typeorm/browser/driver/Query.js\");\n/* harmony import */ var _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../schema-builder/table/TableUnique */ \"./node_modules/typeorm/browser/schema-builder/table/TableUnique.js\");\n/* harmony import */ var _query_runner_BaseQueryRunner__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../query-runner/BaseQueryRunner */ \"./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../schema-builder/table/TableCheck */ \"./node_modules/typeorm/browser/schema-builder/table/TableCheck.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar AbstractSqliteQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractSqliteQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AbstractSqliteQueryRunner() {\n return _super.call(this) || this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n AbstractSqliteQueryRunner.prototype.connect = function () {\n return Promise.resolve(this.driver.databaseConnection);\n };\n /**\n * Releases used database connection.\n * We just clear loaded tables and sql in memory, because sqlite do not support multiple connections thus query runners.\n */\n AbstractSqliteQueryRunner.prototype.release = function () {\n this.loadedTables = [];\n this.clearSqlMemory();\n return Promise.resolve();\n };\n /**\n * Starts transaction.\n */\n AbstractSqliteQueryRunner.prototype.startTransaction = function (isolationLevel) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive)\n throw new _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_1__[\"TransactionAlreadyStartedError\"]();\n if (!isolationLevel) return [3 /*break*/, 4];\n if (isolationLevel !== \"READ UNCOMMITTED\" && isolationLevel !== \"SERIALIZABLE\") {\n throw new Error(\"SQLite only supports SERIALIZABLE and READ UNCOMMITTED isolation\");\n }\n if (!(isolationLevel === \"READ UNCOMMITTED\")) return [3 /*break*/, 2];\n return [4 /*yield*/, this.query(\"PRAGMA read_uncommitted = true\")];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.query(\"PRAGMA read_uncommitted = false\")];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 6];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6:\n this.isTransactionActive = true;\n return [4 /*yield*/, this.query(\"BEGIN TRANSACTION\")];\n case 7:\n _a.sent();\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 9];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n AbstractSqliteQueryRunner.prototype.commitTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_2__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"COMMIT\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n AbstractSqliteQueryRunner.prototype.rollbackTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_2__[\"TransactionNotStartedError\"]();\n beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"ROLLBACK\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[\"BroadcasterResult\"]();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns raw data stream.\n */\n AbstractSqliteQueryRunner.prototype.stream = function (query, parameters, onEnd, onError) {\n throw new Error(\"Stream is not supported by sqlite driver.\");\n };\n /**\n * Returns all available database names including system databases.\n */\n AbstractSqliteQueryRunner.prototype.getDatabases = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n AbstractSqliteQueryRunner.prototype.getSchemas = function (database) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Checks if database with the given name exist.\n */\n AbstractSqliteQueryRunner.prototype.hasDatabase = function (database) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve(false)];\n });\n });\n };\n /**\n * Checks if schema with the given name exist.\n */\n AbstractSqliteQueryRunner.prototype.hasSchema = function (schema) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"This driver does not support table schemas\");\n });\n });\n };\n /**\n * Checks if table with the given name exist in the database.\n */\n AbstractSqliteQueryRunner.prototype.hasTable = function (tableOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var tableName, sql, result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"] ? tableOrName.name : tableOrName;\n sql = \"SELECT * FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'table' AND \\\"name\\\" = '\" + tableName + \"'\";\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Checks if column with the given name exist in the given table.\n */\n AbstractSqliteQueryRunner.prototype.hasColumn = function (tableOrName, columnName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var tableName, sql, columns;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"] ? tableOrName.name : tableOrName;\n sql = \"PRAGMA table_info(\\\"\" + tableName + \"\\\")\";\n return [4 /*yield*/, this.query(sql)];\n case 1:\n columns = _a.sent();\n return [2 /*return*/, !!columns.find(function (column) { return column[\"name\"] === columnName; })];\n }\n });\n });\n };\n /**\n * Creates a new database.\n */\n AbstractSqliteQueryRunner.prototype.createDatabase = function (database, ifNotExist) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Drops database.\n */\n AbstractSqliteQueryRunner.prototype.dropDatabase = function (database, ifExist) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Creates a new table schema.\n */\n AbstractSqliteQueryRunner.prototype.createSchema = function (schema, ifNotExist) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Drops table schema.\n */\n AbstractSqliteQueryRunner.prototype.dropSchema = function (schemaPath, ifExist) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Creates a new table.\n */\n AbstractSqliteQueryRunner.prototype.createTable = function (table, ifNotExist, createForeignKeys, createIndices) {\n if (ifNotExist === void 0) { ifNotExist = false; }\n if (createForeignKeys === void 0) { createForeignKeys = true; }\n if (createIndices === void 0) { createIndices = true; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var upQueries, downQueries, isTableExist;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n if (!ifNotExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(table)];\n case 1:\n isTableExist = _a.sent();\n if (isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _a.label = 2;\n case 2:\n upQueries.push(this.createTableSql(table, createForeignKeys));\n downQueries.push(this.dropTableSql(table));\n if (createIndices) {\n table.indices.forEach(function (index) {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = _this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n upQueries.push(_this.createIndexSql(table, index));\n downQueries.push(_this.dropIndexSql(index));\n });\n }\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the table.\n */\n AbstractSqliteQueryRunner.prototype.dropTable = function (tableOrName, ifExist, dropForeignKeys, dropIndices) {\n if (dropForeignKeys === void 0) { dropForeignKeys = true; }\n if (dropIndices === void 0) { dropIndices = true; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var isTableExist, createForeignKeys, table, _a, upQueries, downQueries;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!ifExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(tableOrName)];\n case 1:\n isTableExist = _b.sent();\n if (!isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _b.label = 2;\n case 2:\n createForeignKeys = dropForeignKeys;\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 3];\n _a = tableOrName;\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 4:\n _a = _b.sent();\n _b.label = 5;\n case 5:\n table = _a;\n upQueries = [];\n downQueries = [];\n if (dropIndices) {\n table.indices.forEach(function (index) {\n upQueries.push(_this.dropIndexSql(index));\n downQueries.push(_this.createIndexSql(table, index));\n });\n }\n upQueries.push(this.dropTableSql(table, ifExist));\n downQueries.push(this.createTableSql(table, createForeignKeys));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 6:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new view.\n */\n AbstractSqliteQueryRunner.prototype.createView = function (view) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var upQueries, downQueries;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n upQueries.push(this.createViewSql(view));\n upQueries.push(this.insertViewDefinitionSql(view));\n downQueries.push(this.dropViewSql(view));\n downQueries.push(this.deleteViewDefinitionSql(view));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the view.\n */\n AbstractSqliteQueryRunner.prototype.dropView = function (target) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var viewName, view, upQueries, downQueries;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n viewName = target instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[\"View\"] ? target.name : target;\n return [4 /*yield*/, this.getCachedView(viewName)];\n case 1:\n view = _a.sent();\n upQueries = [];\n downQueries = [];\n upQueries.push(this.deleteViewDefinitionSql(view));\n upQueries.push(this.dropViewSql(view));\n downQueries.push(this.insertViewDefinitionSql(view));\n downQueries.push(this.createViewSql(view));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames the given table.\n */\n AbstractSqliteQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var oldTable, _a, newTable, up, down;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(oldTableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = oldTableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(oldTableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n oldTable = _a;\n newTable = oldTable.clone();\n newTable.name = newTableName;\n up = new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"ALTER TABLE \\\"\" + oldTable.name + \"\\\" RENAME TO \\\"\" + newTableName + \"\\\"\");\n down = new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"ALTER TABLE \\\"\" + newTableName + \"\\\" RENAME TO \\\"\" + oldTable.name + \"\\\"\");\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n // rename old table;\n oldTable.name = newTable.name;\n // rename unique constraints\n newTable.uniques.forEach(function (unique) {\n unique.name = _this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);\n });\n // rename foreign key constraints\n newTable.foreignKeys.forEach(function (foreignKey) {\n foreignKey.name = _this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n });\n // rename indices\n newTable.indices.forEach(function (index) {\n index.name = _this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n });\n // recreate table with new constraint names\n return [4 /*yield*/, this.recreateTable(newTable, oldTable)];\n case 5:\n // recreate table with new constraint names\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new column from the column in the table.\n */\n AbstractSqliteQueryRunner.prototype.addColumn = function (tableOrName, column) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n return [2 /*return*/, this.addColumns(table, [column])];\n }\n });\n });\n };\n /**\n * Creates a new columns from the column in the table.\n */\n AbstractSqliteQueryRunner.prototype.addColumns = function (tableOrName, columns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n columns.forEach(function (column) { return changedTable.addColumn(column); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames column in the given table.\n */\n AbstractSqliteQueryRunner.prototype.renameColumn = function (tableOrName, oldTableColumnOrName, newTableColumnOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, oldColumn, newColumn;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n oldColumn = oldTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"] ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n newColumn = undefined;\n if (newTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"]) {\n newColumn = newTableColumnOrName;\n }\n else {\n newColumn = oldColumn.clone();\n newColumn.name = newTableColumnOrName;\n }\n return [2 /*return*/, this.changeColumn(table, oldColumn, newColumn)];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n */\n AbstractSqliteQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, oldColumn;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n oldColumn = oldTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"] ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n return [4 /*yield*/, this.changeColumns(table, [{ oldColumn: oldColumn, newColumn: newColumn }])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n * Changed column looses all its keys in the db.\n */\n AbstractSqliteQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n changedColumns.forEach(function (changedColumnSet) {\n if (changedColumnSet.newColumn.name !== changedColumnSet.oldColumn.name) {\n changedTable.findColumnUniques(changedColumnSet.oldColumn).forEach(function (unique) {\n unique.columnNames.splice(unique.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n unique.columnNames.push(changedColumnSet.newColumn.name);\n unique.name = _this.connection.namingStrategy.uniqueConstraintName(changedTable, unique.columnNames);\n });\n changedTable.findColumnForeignKeys(changedColumnSet.oldColumn).forEach(function (fk) {\n fk.columnNames.splice(fk.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n fk.columnNames.push(changedColumnSet.newColumn.name);\n fk.name = _this.connection.namingStrategy.foreignKeyName(changedTable, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n });\n changedTable.findColumnIndices(changedColumnSet.oldColumn).forEach(function (index) {\n index.columnNames.splice(index.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n index.columnNames.push(changedColumnSet.newColumn.name);\n index.name = _this.connection.namingStrategy.indexName(changedTable, index.columnNames, index.where);\n });\n }\n var originalColumn = changedTable.columns.find(function (column) { return column.name === changedColumnSet.oldColumn.name; });\n if (originalColumn)\n changedTable.columns[changedTable.columns.indexOf(originalColumn)] = changedColumnSet.newColumn;\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops column in the table.\n */\n AbstractSqliteQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, column;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n column = columnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"] ? columnOrName : table.findColumnByName(columnOrName);\n if (!column)\n throw new Error(\"Column \\\"\" + columnOrName + \"\\\" was not found in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this.dropColumns(table, [column])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the columns in the table.\n */\n AbstractSqliteQueryRunner.prototype.dropColumns = function (tableOrName, columns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n columns.forEach(function (column) {\n changedTable.removeColumn(column);\n changedTable.findColumnUniques(column).forEach(function (unique) { return changedTable.removeUniqueConstraint(unique); });\n changedTable.findColumnIndices(column).forEach(function (index) { return changedTable.removeIndex(index); });\n changedTable.findColumnForeignKeys(column).forEach(function (fk) { return changedTable.removeForeignKey(fk); });\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n // remove column and its constraints from original table.\n columns.forEach(function (column) {\n table.removeColumn(column);\n table.findColumnUniques(column).forEach(function (unique) { return table.removeUniqueConstraint(unique); });\n table.findColumnIndices(column).forEach(function (index) { return table.removeIndex(index); });\n table.findColumnForeignKeys(column).forEach(function (fk) { return table.removeForeignKey(fk); });\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new primary key.\n */\n AbstractSqliteQueryRunner.prototype.createPrimaryKey = function (tableOrName, columnNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n changedTable.columns.forEach(function (column) {\n if (columnNames.find(function (columnName) { return columnName === column.name; }))\n column.isPrimary = true;\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n // mark columns as primary in original table\n table.columns.forEach(function (column) {\n if (columnNames.find(function (columnName) { return columnName === column.name; }))\n column.isPrimary = true;\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates composite primary keys.\n */\n AbstractSqliteQueryRunner.prototype.updatePrimaryKeys = function (tableOrName, columns) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a primary key.\n */\n AbstractSqliteQueryRunner.prototype.dropPrimaryKey = function (tableOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n changedTable.primaryColumns.forEach(function (column) {\n column.isPrimary = false;\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n // mark primary columns as non-primary in original table\n table.primaryColumns.forEach(function (column) {\n column.isPrimary = false;\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new unique constraint.\n */\n AbstractSqliteQueryRunner.prototype.createUniqueConstraint = function (tableOrName, uniqueConstraint) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createUniqueConstraints(tableOrName, [uniqueConstraint])];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new unique constraints.\n */\n AbstractSqliteQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n uniqueConstraints.forEach(function (uniqueConstraint) { return changedTable.addUniqueConstraint(uniqueConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an unique constraint.\n */\n AbstractSqliteQueryRunner.prototype.dropUniqueConstraint = function (tableOrName, uniqueOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, uniqueConstraint;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n uniqueConstraint = uniqueOrName instanceof _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__[\"TableUnique\"] ? uniqueOrName : table.uniques.find(function (u) { return u.name === uniqueOrName; });\n if (!uniqueConstraint)\n throw new Error(\"Supplied unique constraint was not found in table \" + table.name);\n return [4 /*yield*/, this.dropUniqueConstraints(table, [uniqueConstraint])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates an unique constraints.\n */\n AbstractSqliteQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n uniqueConstraints.forEach(function (uniqueConstraint) { return changedTable.removeUniqueConstraint(uniqueConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraint.\n */\n AbstractSqliteQueryRunner.prototype.createCheckConstraint = function (tableOrName, checkConstraint) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createCheckConstraints(tableOrName, [checkConstraint])];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraints.\n */\n AbstractSqliteQueryRunner.prototype.createCheckConstraints = function (tableOrName, checkConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n checkConstraints.forEach(function (checkConstraint) { return changedTable.addCheckConstraint(checkConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraint.\n */\n AbstractSqliteQueryRunner.prototype.dropCheckConstraint = function (tableOrName, checkOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, checkConstraint;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n checkConstraint = checkOrName instanceof _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_14__[\"TableCheck\"] ? checkOrName : table.checks.find(function (c) { return c.name === checkOrName; });\n if (!checkConstraint)\n throw new Error(\"Supplied check constraint was not found in table \" + table.name);\n return [4 /*yield*/, this.dropCheckConstraints(table, [checkConstraint])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraints.\n */\n AbstractSqliteQueryRunner.prototype.dropCheckConstraints = function (tableOrName, checkConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n checkConstraints.forEach(function (checkConstraint) { return changedTable.removeCheckConstraint(checkConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new exclusion constraint.\n */\n AbstractSqliteQueryRunner.prototype.createExclusionConstraint = function (tableOrName, exclusionConstraint) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Creates a new exclusion constraints.\n */\n AbstractSqliteQueryRunner.prototype.createExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Drops exclusion constraint.\n */\n AbstractSqliteQueryRunner.prototype.dropExclusionConstraint = function (tableOrName, exclusionOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Drops exclusion constraints.\n */\n AbstractSqliteQueryRunner.prototype.dropExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Creates a new foreign key.\n */\n AbstractSqliteQueryRunner.prototype.createForeignKey = function (tableOrName, foreignKey) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createForeignKeys(tableOrName, [foreignKey])];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new foreign keys.\n */\n AbstractSqliteQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n foreignKeys.forEach(function (foreignKey) { return changedTable.addForeignKey(foreignKey); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign key from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropForeignKey = function (tableOrName, foreignKeyOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, foreignKey;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n foreignKey = foreignKeyOrName instanceof _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_7__[\"TableForeignKey\"] ? foreignKeyOrName : table.foreignKeys.find(function (fk) { return fk.name === foreignKeyOrName; });\n if (!foreignKey)\n throw new Error(\"Supplied foreign key was not found in table \" + table.name);\n return [4 /*yield*/, this.dropForeignKeys(tableOrName, [foreignKey])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign keys from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n foreignKeys.forEach(function (foreignKey) { return changedTable.removeForeignKey(foreignKey); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new index.\n */\n AbstractSqliteQueryRunner.prototype.createIndex = function (tableOrName, index) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n up = this.createIndexSql(table, index);\n down = this.dropIndexSql(index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new indices\n */\n AbstractSqliteQueryRunner.prototype.createIndices = function (tableOrName, indices) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = indices.map(function (index) { return _this.createIndex(tableOrName, index); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an index from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropIndex = function (tableOrName, indexOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, _a, index, up, down;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"])) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n index = indexOrName instanceof _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__[\"TableIndex\"] ? indexOrName : table.indices.find(function (i) { return i.name === indexOrName; });\n if (!index)\n throw new Error(\"Supplied index was not found in table \" + table.name);\n up = this.dropIndexSql(index);\n down = this.createIndexSql(table, index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an indices from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropIndices = function (tableOrName, indices) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = indices.map(function (index) { return _this.dropIndex(tableOrName, index); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n AbstractSqliteQueryRunner.prototype.clearTable = function (tableName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"DELETE FROM \\\"\" + tableName + \"\\\"\")];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes all tables from the currently connected database.\n */\n AbstractSqliteQueryRunner.prototype.clearDatabase = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"PRAGMA foreign_keys = OFF;\")];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.startTransaction()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n _a.trys.push([3, 9, 14, 16]);\n selectViewDropsQuery = \"SELECT 'DROP VIEW \\\"' || name || '\\\";' as query FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'view'\";\n return [4 /*yield*/, this.query(selectViewDropsQuery)];\n case 4:\n dropViewQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 5:\n _a.sent();\n selectTableDropsQuery = \"SELECT 'DROP TABLE \\\"' || name || '\\\";' as query FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'table' AND \\\"name\\\" != 'sqlite_sequence'\";\n return [4 /*yield*/, this.query(selectTableDropsQuery)];\n case 6:\n dropTableQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropTableQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 7:\n _a.sent();\n return [4 /*yield*/, this.commitTransaction()];\n case 8:\n _a.sent();\n return [3 /*break*/, 16];\n case 9:\n error_1 = _a.sent();\n _a.label = 10;\n case 10:\n _a.trys.push([10, 12, , 13]);\n return [4 /*yield*/, this.rollbackTransaction()];\n case 11:\n _a.sent();\n return [3 /*break*/, 13];\n case 12:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 13];\n case 13: throw error_1;\n case 14: return [4 /*yield*/, this.query(\"PRAGMA foreign_keys = ON;\")];\n case 15:\n _a.sent();\n return [7 /*endfinally*/];\n case 16: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n AbstractSqliteQueryRunner.prototype.loadViews = function (viewNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var hasTable, viewNamesString, query, dbViews;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.hasTable(this.getTypeormMetadataTableName())];\n case 1:\n hasTable = _a.sent();\n if (!hasTable)\n return [2 /*return*/, Promise.resolve([])];\n viewNamesString = viewNames.map(function (name) { return \"'\" + name + \"'\"; }).join(\", \");\n query = \"SELECT \\\"t\\\".* FROM \\\"\" + this.getTypeormMetadataTableName() + \"\\\" \\\"t\\\" INNER JOIN \\\"sqlite_master\\\" s ON \\\"s\\\".\\\"name\\\" = \\\"t\\\".\\\"name\\\" AND \\\"s\\\".\\\"type\\\" = 'view' WHERE \\\"t\\\".\\\"type\\\" = 'VIEW'\";\n if (viewNamesString.length > 0)\n query += \" AND \\\"t\\\".\\\"name\\\" IN (\" + viewNamesString + \")\";\n return [4 /*yield*/, this.query(query)];\n case 2:\n dbViews = _a.sent();\n return [2 /*return*/, dbViews.map(function (dbView) {\n var view = new _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[\"View\"]();\n view.name = dbView[\"name\"];\n view.expression = dbView[\"value\"];\n return view;\n })];\n }\n });\n });\n };\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n AbstractSqliteQueryRunner.prototype.loadTables = function (tableNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var tableNamesString, dbTables, dbIndicesDef;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n // if no tables given then no need to proceed\n if (!tableNames || !tableNames.length)\n return [2 /*return*/, []];\n tableNamesString = tableNames.map(function (tableName) { return \"'\" + tableName + \"'\"; }).join(\", \");\n return [4 /*yield*/, this.query(\"SELECT * FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'table' AND \\\"name\\\" IN (\" + tableNamesString + \")\")];\n case 1:\n dbTables = _a.sent();\n return [4 /*yield*/, this.query(\"SELECT * FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'index' AND \\\"tbl_name\\\" IN (\" + tableNamesString + \")\")];\n case 2:\n dbIndicesDef = _a.sent();\n // if tables were not found in the db, no need to proceed\n if (!dbTables || !dbTables.length)\n return [2 /*return*/, []];\n // create table schemas for loaded tables\n return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var table, sql, _a, dbColumns, dbIndices, dbForeignKeys, autoIncrementColumnName, tableSql, autoIncrementIndex, comma, bracket, tableForeignKeyConstraints, tableUniquePromises, _b, result, regexp, indicesPromises, indices;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n table = new _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"]({ name: dbTable[\"name\"] });\n sql = dbTable[\"sql\"];\n return [4 /*yield*/, Promise.all([\n this.query(\"PRAGMA table_info(\\\"\" + dbTable[\"name\"] + \"\\\")\"),\n this.query(\"PRAGMA index_list(\\\"\" + dbTable[\"name\"] + \"\\\")\"),\n this.query(\"PRAGMA foreign_key_list(\\\"\" + dbTable[\"name\"] + \"\\\")\"),\n ])];\n case 1:\n _a = tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"].apply(void 0, [_c.sent(), 3]), dbColumns = _a[0], dbIndices = _a[1], dbForeignKeys = _a[2];\n autoIncrementColumnName = undefined;\n tableSql = dbTable[\"sql\"];\n autoIncrementIndex = tableSql.toUpperCase().indexOf(\"AUTOINCREMENT\");\n if (autoIncrementIndex !== -1) {\n autoIncrementColumnName = tableSql.substr(0, autoIncrementIndex);\n comma = autoIncrementColumnName.lastIndexOf(\",\");\n bracket = autoIncrementColumnName.lastIndexOf(\"(\");\n if (comma !== -1) {\n autoIncrementColumnName = autoIncrementColumnName.substr(comma);\n autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf(\"\\\"\"));\n autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf(\"\\\"\") + 1);\n }\n else if (bracket !== -1) {\n autoIncrementColumnName = autoIncrementColumnName.substr(bracket);\n autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf(\"\\\"\"));\n autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf(\"\\\"\") + 1);\n }\n }\n // create columns from the loaded columns\n table.columns = dbColumns.map(function (dbColumn) {\n var tableColumn = new _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"]();\n tableColumn.name = dbColumn[\"name\"];\n tableColumn.type = dbColumn[\"type\"].toLowerCase();\n tableColumn.default = dbColumn[\"dflt_value\"] !== null && dbColumn[\"dflt_value\"] !== undefined ? dbColumn[\"dflt_value\"] : undefined;\n tableColumn.isNullable = dbColumn[\"notnull\"] === 0;\n // primary keys are numbered starting with 1, columns that aren't primary keys are marked with 0\n tableColumn.isPrimary = dbColumn[\"pk\"] > 0;\n tableColumn.comment = \"\"; // SQLite does not support column comments\n tableColumn.isGenerated = autoIncrementColumnName === dbColumn[\"name\"];\n if (tableColumn.isGenerated) {\n tableColumn.generationStrategy = \"increment\";\n }\n if (tableColumn.type === \"varchar\") {\n // Check if this is an enum\n var enumMatch = sql.match(new RegExp(\"\\\"(\" + tableColumn.name + \")\\\" varchar CHECK\\\\s*\\\\(\\\\s*\\\\1\\\\s+IN\\\\s*\\\\(('[^']+'(?:\\\\s*,\\\\s*'[^']+')+)\\\\s*\\\\)\\\\s*\\\\)\"));\n if (enumMatch) {\n // This is an enum\n tableColumn.enum = enumMatch[2].substr(1, enumMatch[2].length - 2).split(\"','\");\n }\n }\n // parse datatype and attempt to retrieve length, precision and scale\n var pos = tableColumn.type.indexOf(\"(\");\n if (pos !== -1) {\n var fullType = tableColumn.type;\n var dataType_1 = fullType.substr(0, pos);\n if (!!_this.driver.withLengthColumnTypes.find(function (col) { return col === dataType_1; })) {\n var len = parseInt(fullType.substring(pos + 1, fullType.length - 1));\n if (len) {\n tableColumn.length = len.toString();\n tableColumn.type = dataType_1; // remove the length part from the datatype\n }\n }\n if (!!_this.driver.withPrecisionColumnTypes.find(function (col) { return col === dataType_1; })) {\n var re = new RegExp(\"^\" + dataType_1 + \"\\\\((\\\\d+),?\\\\s?(\\\\d+)?\\\\)\");\n var matches = fullType.match(re);\n if (matches && matches[1]) {\n tableColumn.precision = +matches[1];\n }\n if (!!_this.driver.withScaleColumnTypes.find(function (col) { return col === dataType_1; })) {\n if (matches && matches[2]) {\n tableColumn.scale = +matches[2];\n }\n }\n tableColumn.type = dataType_1; // remove the precision/scale part from the datatype\n }\n }\n return tableColumn;\n });\n tableForeignKeyConstraints = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_13__[\"OrmUtils\"].uniq(dbForeignKeys, function (dbForeignKey) { return dbForeignKey[\"id\"]; });\n table.foreignKeys = tableForeignKeyConstraints.map(function (foreignKey) {\n var ownForeignKeys = dbForeignKeys.filter(function (dbForeignKey) { return dbForeignKey[\"id\"] === foreignKey[\"id\"] && dbForeignKey[\"table\"] === foreignKey[\"table\"]; });\n var columnNames = ownForeignKeys.map(function (dbForeignKey) { return dbForeignKey[\"from\"]; });\n var referencedColumnNames = ownForeignKeys.map(function (dbForeignKey) { return dbForeignKey[\"to\"]; });\n // build foreign key name, because we can not get it directly.\n var fkName = _this.connection.namingStrategy.foreignKeyName(table, columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n return new _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_7__[\"TableForeignKey\"]({\n name: fkName,\n columnNames: columnNames,\n referencedTableName: foreignKey[\"table\"],\n referencedColumnNames: referencedColumnNames,\n onDelete: foreignKey[\"on_delete\"],\n onUpdate: foreignKey[\"on_update\"]\n });\n });\n tableUniquePromises = dbIndices\n .filter(function (dbIndex) { return dbIndex[\"origin\"] === \"u\"; })\n .map(function (dbIndex) { return dbIndex[\"name\"]; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; })\n .map(function (dbIndexName) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var dbIndex, indexInfos, indexColumns, column;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n dbIndex = dbIndices.find(function (dbIndex) { return dbIndex[\"name\"] === dbIndexName; });\n return [4 /*yield*/, this.query(\"PRAGMA index_info(\\\"\" + dbIndex[\"name\"] + \"\\\")\")];\n case 1:\n indexInfos = _a.sent();\n indexColumns = indexInfos\n .sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1[\"seqno\"]) - parseInt(indexInfo2[\"seqno\"]); })\n .map(function (indexInfo) { return indexInfo[\"name\"]; });\n if (indexColumns.length === 1) {\n column = table.columns.find(function (column) {\n return !!indexColumns.find(function (indexColumn) { return indexColumn === column.name; });\n });\n if (column)\n column.isUnique = true;\n }\n // Sqlite does not store unique constraint name, so we generate its name manually.\n return [2 /*return*/, new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__[\"TableUnique\"]({\n name: this.connection.namingStrategy.uniqueConstraintName(table, indexColumns),\n columnNames: indexColumns\n })];\n }\n });\n }); });\n _b = table;\n return [4 /*yield*/, Promise.all(tableUniquePromises)];\n case 2:\n _b.uniques = (_c.sent());\n regexp = /CONSTRAINT \"([^\"]*)\" CHECK (\\(.*?\\))([,]|[)]$)/g;\n while (((result = regexp.exec(sql)) !== null)) {\n table.checks.push(new _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_14__[\"TableCheck\"]({ name: result[1], expression: result[2] }));\n }\n indicesPromises = dbIndices\n .filter(function (dbIndex) { return dbIndex[\"origin\"] === \"c\"; })\n .map(function (dbIndex) { return dbIndex[\"name\"]; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; }) // unqiue\n .map(function (dbIndexName) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var indexDef, condition, dbIndex, indexInfos, indexColumns, isUnique;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n indexDef = dbIndicesDef.find(function (dbIndexDef) { return dbIndexDef[\"name\"] === dbIndexName; });\n condition = /WHERE (.*)/.exec(indexDef[\"sql\"]);\n dbIndex = dbIndices.find(function (dbIndex) { return dbIndex[\"name\"] === dbIndexName; });\n return [4 /*yield*/, this.query(\"PRAGMA index_info(\\\"\" + dbIndex[\"name\"] + \"\\\")\")];\n case 1:\n indexInfos = _a.sent();\n indexColumns = indexInfos\n .sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1[\"seqno\"]) - parseInt(indexInfo2[\"seqno\"]); })\n .map(function (indexInfo) { return indexInfo[\"name\"]; });\n isUnique = dbIndex[\"unique\"] === \"1\" || dbIndex[\"unique\"] === 1;\n return [2 /*return*/, new _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__[\"TableIndex\"]({\n table: table,\n name: dbIndex[\"name\"],\n columnNames: indexColumns,\n isUnique: isUnique,\n where: condition ? condition[1] : undefined\n })];\n }\n });\n }); });\n return [4 /*yield*/, Promise.all(indicesPromises)];\n case 3:\n indices = _c.sent();\n table.indices = indices.filter(function (index) { return !!index; });\n return [2 /*return*/, table];\n }\n });\n }); }))];\n }\n });\n });\n };\n /**\n * Builds create table sql.\n */\n AbstractSqliteQueryRunner.prototype.createTableSql = function (table, createForeignKeys) {\n var _this = this;\n var primaryColumns = table.columns.filter(function (column) { return column.isPrimary; });\n var hasAutoIncrement = primaryColumns.find(function (column) { return column.isGenerated && column.generationStrategy === \"increment\"; });\n var skipPrimary = primaryColumns.length > 1;\n if (skipPrimary && hasAutoIncrement)\n throw new Error(\"Sqlite does not support AUTOINCREMENT on composite primary key\");\n var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(column, skipPrimary); }).join(\", \");\n var sql = \"CREATE TABLE \\\"\" + table.name + \"\\\" (\" + columnDefinitions;\n // need for `addColumn()` method, because it recreates table.\n table.columns\n .filter(function (column) { return column.isUnique; })\n .forEach(function (column) {\n var isUniqueExist = table.uniques.some(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; });\n if (!isUniqueExist)\n table.uniques.push(new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__[\"TableUnique\"]({\n name: _this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n }));\n });\n if (table.uniques.length > 0) {\n var uniquesSql = table.uniques.map(function (unique) {\n var uniqueName = unique.name ? unique.name : _this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames);\n var columnNames = unique.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return \"CONSTRAINT \\\"\" + uniqueName + \"\\\" UNIQUE (\" + columnNames + \")\";\n }).join(\", \");\n sql += \", \" + uniquesSql;\n }\n if (table.checks.length > 0) {\n var checksSql = table.checks.map(function (check) {\n var checkName = check.name ? check.name : _this.connection.namingStrategy.checkConstraintName(table.name, check.expression);\n return \"CONSTRAINT \\\"\" + checkName + \"\\\" CHECK (\" + check.expression + \")\";\n }).join(\", \");\n sql += \", \" + checksSql;\n }\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n var foreignKeysSql = table.foreignKeys.map(function (fk) {\n var columnNames = fk.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n if (!fk.name)\n fk.name = _this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n var constraint = \"CONSTRAINT \\\"\" + fk.name + \"\\\" FOREIGN KEY (\" + columnNames + \") REFERENCES \\\"\" + fk.referencedTableName + \"\\\" (\" + referencedColumnNames + \")\";\n if (fk.onDelete)\n constraint += \" ON DELETE \" + fk.onDelete;\n if (fk.onUpdate)\n constraint += \" ON UPDATE \" + fk.onUpdate;\n return constraint;\n }).join(\", \");\n sql += \", \" + foreignKeysSql;\n }\n if (primaryColumns.length > 1) {\n var columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n sql += \", PRIMARY KEY (\" + columnNames + \")\";\n }\n sql += \")\";\n var tableMetadata = this.connection.entityMetadatas.find(function (metadata) { return metadata.tableName === table.name; });\n if (tableMetadata && tableMetadata.withoutRowid) {\n sql += \" WITHOUT ROWID\";\n }\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](sql);\n };\n /**\n * Builds drop table sql.\n */\n AbstractSqliteQueryRunner.prototype.dropTableSql = function (tableOrName, ifExist) {\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[\"Table\"] ? tableOrName.name : tableOrName;\n var query = ifExist ? \"DROP TABLE IF EXISTS \\\"\" + tableName + \"\\\"\" : \"DROP TABLE \\\"\" + tableName + \"\\\"\";\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](query);\n };\n AbstractSqliteQueryRunner.prototype.createViewSql = function (view) {\n if (typeof view.expression === \"string\") {\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"CREATE VIEW \\\"\" + view.name + \"\\\" AS \" + view.expression);\n }\n else {\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"CREATE VIEW \\\"\" + view.name + \"\\\" AS \" + view.expression(this.connection).getQuery());\n }\n };\n AbstractSqliteQueryRunner.prototype.insertViewDefinitionSql = function (view) {\n var expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ type: \"VIEW\", name: view.name, value: expression })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](query, parameters);\n };\n /**\n * Builds drop view sql.\n */\n AbstractSqliteQueryRunner.prototype.dropViewSql = function (viewOrPath) {\n var viewName = viewOrPath instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[\"View\"] ? viewOrPath.name : viewOrPath;\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"DROP VIEW \\\"\" + viewName + \"\\\"\");\n };\n /**\n * Builds remove view sql.\n */\n AbstractSqliteQueryRunner.prototype.deleteViewDefinitionSql = function (viewOrPath) {\n var viewName = viewOrPath instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[\"View\"] ? viewOrPath.name : viewOrPath;\n var qb = this.connection.createQueryBuilder();\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(qb.escape(\"type\") + \" = 'VIEW'\")\n .andWhere(qb.escape(\"name\") + \" = :name\", { name: viewName })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](query, parameters);\n };\n /**\n * Builds create index sql.\n */\n AbstractSqliteQueryRunner.prototype.createIndexSql = function (table, index) {\n var columns = index.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"CREATE \" + (index.isUnique ? \"UNIQUE \" : \"\") + \"INDEX \\\"\" + index.name + \"\\\" ON \\\"\" + table.name + \"\\\" (\" + columns + \") \" + (index.where ? \"WHERE \" + index.where : \"\"));\n };\n /**\n * Builds drop index sql.\n */\n AbstractSqliteQueryRunner.prototype.dropIndexSql = function (indexOrName) {\n var indexName = indexOrName instanceof _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__[\"TableIndex\"] ? indexOrName.name : indexOrName;\n return new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"DROP INDEX \\\"\" + indexName + \"\\\"\");\n };\n /**\n * Builds a query for create column.\n */\n AbstractSqliteQueryRunner.prototype.buildCreateColumnSql = function (column, skipPrimary) {\n var c = \"\\\"\" + column.name + \"\\\"\";\n if (column instanceof _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_4__[\"ColumnMetadata\"]) {\n c += \" \" + this.driver.normalizeType(column);\n }\n else {\n c += \" \" + this.connection.driver.createFullType(column);\n }\n if (column.enum)\n c += \" CHECK( \" + column.name + \" IN (\" + column.enum.map(function (val) { return \"'\" + val + \"'\"; }).join(\",\") + \") )\";\n if (column.isPrimary && !skipPrimary)\n c += \" PRIMARY KEY\";\n if (column.isGenerated === true && column.generationStrategy === \"increment\") // don't use skipPrimary here since updates can update already exist primary without auto inc.\n c += \" AUTOINCREMENT\";\n if (column.collation)\n c += \" COLLATE \" + column.collation;\n if (column.isNullable !== true)\n c += \" NOT NULL\";\n if (column.default !== undefined && column.default !== null)\n c += \" DEFAULT (\" + column.default + \")\";\n return c;\n };\n AbstractSqliteQueryRunner.prototype.recreateTable = function (newTable, oldTable, migrateData) {\n if (migrateData === void 0) { migrateData = true; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var upQueries, downQueries, newColumnNames, oldColumnNames;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n // drop old table indices\n oldTable.indices.forEach(function (index) {\n upQueries.push(_this.dropIndexSql(index));\n downQueries.push(_this.createIndexSql(oldTable, index));\n });\n // change table name into 'temporary_table'\n newTable.name = \"temporary_\" + newTable.name;\n // create new table\n upQueries.push(this.createTableSql(newTable, true));\n downQueries.push(this.dropTableSql(newTable));\n // migrate all data from the old table into new table\n if (migrateData) {\n newColumnNames = newTable.columns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n oldColumnNames = oldTable.columns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n if (oldTable.columns.length < newTable.columns.length) {\n newColumnNames = newTable.columns.filter(function (column) {\n return oldTable.columns.find(function (c) { return c.name === column.name; });\n }).map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n }\n else if (oldTable.columns.length > newTable.columns.length) {\n oldColumnNames = oldTable.columns.filter(function (column) {\n return newTable.columns.find(function (c) { return c.name === column.name; });\n }).map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n }\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"INSERT INTO \\\"\" + newTable.name + \"\\\"(\" + newColumnNames + \") SELECT \" + oldColumnNames + \" FROM \\\"\" + oldTable.name + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"INSERT INTO \\\"\" + oldTable.name + \"\\\"(\" + oldColumnNames + \") SELECT \" + newColumnNames + \" FROM \\\"\" + newTable.name + \"\\\"\"));\n }\n // drop old table\n upQueries.push(this.dropTableSql(oldTable));\n downQueries.push(this.createTableSql(oldTable, true));\n // rename old table\n upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"ALTER TABLE \\\"\" + newTable.name + \"\\\" RENAME TO \\\"\" + oldTable.name + \"\\\"\"));\n downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[\"Query\"](\"ALTER TABLE \\\"\" + oldTable.name + \"\\\" RENAME TO \\\"\" + newTable.name + \"\\\"\"));\n newTable.name = oldTable.name;\n // recreate table indices\n newTable.indices.forEach(function (index) {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = _this.connection.namingStrategy.indexName(newTable.name, index.columnNames, index.where);\n upQueries.push(_this.createIndexSql(newTable, index));\n downQueries.push(_this.dropIndexSql(index));\n });\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 1:\n _a.sent();\n this.replaceCachedTable(oldTable, newTable);\n return [2 /*return*/];\n }\n });\n });\n };\n return AbstractSqliteQueryRunner;\n}(_query_runner_BaseQueryRunner__WEBPACK_IMPORTED_MODULE_12__[\"BaseQueryRunner\"]));\n\n\n//# sourceMappingURL=AbstractSqliteQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js ***! - \******************************************************************/ -/*! exports provided: SqljsDriver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SqljsDriver\", function() { return SqljsDriver; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _SqljsQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SqljsQueryRunner */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsQueryRunner.js\");\n/* harmony import */ var _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/DriverPackageNotInstalledError */ \"./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js\");\n/* harmony import */ var _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/DriverOptionNotSetError */ \"./node_modules/typeorm/browser/error/DriverOptionNotSetError.js\");\n/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../platform/PlatformTools */ \"./node_modules/typeorm/browser/platform/BrowserPlatformTools.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n\n\n\n\n\n\n\nvar SqljsDriver = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(SqljsDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SqljsDriver(connection) {\n var _this = _super.call(this, connection) || this;\n // If autoSave is enabled by user, location or autoSaveCallback have to be set\n // because either autoSave saves to location or calls autoSaveCallback.\n if (_this.options.autoSave && !_this.options.location && !_this.options.autoSaveCallback) {\n throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_4__[\"DriverOptionNotSetError\"](\"location or autoSaveCallback\");\n }\n // load sql.js package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n */\n SqljsDriver.prototype.connect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.createDatabaseConnection()];\n case 1:\n _a.databaseConnection = _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Closes connection with database.\n */\n SqljsDriver.prototype.disconnect = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n try {\n _this.queryRunner = undefined;\n _this.databaseConnection.close();\n ok();\n }\n catch (e) {\n fail(e);\n }\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n SqljsDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new _SqljsQueryRunner__WEBPACK_IMPORTED_MODULE_2__[\"SqljsQueryRunner\"](this);\n return this.queryRunner;\n };\n /**\n * Loads a database from a given file (Node.js), local storage key (browser) or array.\n * This will delete the current database!\n */\n SqljsDriver.prototype.load = function (fileNameOrLocalStorageOrData, checkIfFileOrLocalStorageExists) {\n if (checkIfFileOrLocalStorageExists === void 0) { checkIfFileOrLocalStorageExists = true; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var database, localStorageContent;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(typeof fileNameOrLocalStorageOrData === \"string\")) return [3 /*break*/, 8];\n if (!(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].type === \"node\")) return [3 /*break*/, 1];\n // Node.js\n // fileNameOrLocalStorageOrData should be a path to the file\n if (_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].fileExist(fileNameOrLocalStorageOrData)) {\n database = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].readFileSync(fileNameOrLocalStorageOrData);\n return [2 /*return*/, this.createDatabaseConnectionWithImport(database)];\n }\n else if (checkIfFileOrLocalStorageExists) {\n throw new Error(\"File \" + fileNameOrLocalStorageOrData + \" does not exist\");\n }\n else {\n // File doesn't exist and checkIfFileOrLocalStorageExists is set to false.\n // Therefore open a database without importing an existing file.\n // File will be written on first write operation.\n return [2 /*return*/, this.createDatabaseConnectionWithImport()];\n }\n return [3 /*break*/, 7];\n case 1:\n localStorageContent = null;\n if (!this.options.useLocalForage) return [3 /*break*/, 5];\n if (!window.localforage) return [3 /*break*/, 3];\n return [4 /*yield*/, window.localforage.getItem(fileNameOrLocalStorageOrData)];\n case 2:\n localStorageContent = _a.sent();\n return [3 /*break*/, 4];\n case 3: throw new Error(\"localforage is not defined - please import localforage.js into your site\");\n case 4: return [3 /*break*/, 6];\n case 5:\n localStorageContent = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].getGlobalVariable().localStorage.getItem(fileNameOrLocalStorageOrData);\n _a.label = 6;\n case 6:\n if (localStorageContent != null) {\n // localStorage value exists.\n return [2 /*return*/, this.createDatabaseConnectionWithImport(JSON.parse(localStorageContent))];\n }\n else if (checkIfFileOrLocalStorageExists) {\n throw new Error(\"File \" + fileNameOrLocalStorageOrData + \" does not exist\");\n }\n else {\n // localStorage value doesn't exist and checkIfFileOrLocalStorageExists is set to false.\n // Therefore open a database without importing anything.\n // localStorage value will be written on first write operation.\n return [2 /*return*/, this.createDatabaseConnectionWithImport()];\n }\n _a.label = 7;\n case 7: return [3 /*break*/, 9];\n case 8: return [2 /*return*/, this.createDatabaseConnectionWithImport(fileNameOrLocalStorageOrData)];\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saved the current database to the given file (Node.js), local storage key (browser) or\n * indexedDB key (browser with enabled useLocalForage option).\n * If no location path is given, the location path in the options (if specified) will be used.\n */\n SqljsDriver.prototype.save = function (location) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var path, content, e_1, database, databaseArray;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!location && !this.options.location) {\n throw new Error(\"No location is set, specify a location parameter or add the location option to your configuration\");\n }\n path = \"\";\n if (location) {\n path = location;\n }\n else if (this.options.location) {\n path = this.options.location;\n }\n if (!(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].type === \"node\")) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n content = Buffer.from(this.databaseConnection.export());\n return [4 /*yield*/, _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].writeFile(path, content)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n throw new Error(\"Could not save database, error: \" + e_1);\n case 4: return [3 /*break*/, 10];\n case 5:\n database = this.databaseConnection.export();\n databaseArray = [].slice.call(database);\n if (!this.options.useLocalForage) return [3 /*break*/, 9];\n if (!window.localforage) return [3 /*break*/, 7];\n return [4 /*yield*/, window.localforage.setItem(path, JSON.stringify(databaseArray))];\n case 6:\n _a.sent();\n return [3 /*break*/, 8];\n case 7: throw new Error(\"localforage is not defined - please import localforage.js into your site\");\n case 8: return [3 /*break*/, 10];\n case 9:\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].getGlobalVariable().localStorage.setItem(path, JSON.stringify(databaseArray));\n _a.label = 10;\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * This gets called by the QueryRunner when a change to the database is made.\n * If a custom autoSaveCallback is specified, it get's called with the database as Uint8Array,\n * otherwise the save method is called which saves it to file (Node.js), local storage (browser)\n * or indexedDB (browser with enabled useLocalForage option).\n */\n SqljsDriver.prototype.autoSave = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.options.autoSave) return [3 /*break*/, 4];\n if (!this.options.autoSaveCallback) return [3 /*break*/, 2];\n return [4 /*yield*/, this.options.autoSaveCallback(this.export())];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.save()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns the current database as Uint8Array.\n */\n SqljsDriver.prototype.export = function () {\n return this.databaseConnection.export();\n };\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n SqljsDriver.prototype.createGeneratedMap = function (metadata, insertResult) {\n var _this = this;\n var generatedMap = metadata.generatedColumns.reduce(function (map, generatedColumn) {\n // seems to be the only way to get the inserted id, see https://github.com/kripken/sql.js/issues/77\n if (generatedColumn.isPrimary && generatedColumn.generationStrategy === \"increment\") {\n var query = \"SELECT last_insert_rowid()\";\n try {\n var result = _this.databaseConnection.exec(query);\n _this.connection.logger.logQuery(query);\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_6__[\"OrmUtils\"].mergeDeep(map, generatedColumn.createValueMap(result[0].values[0][0]));\n }\n catch (e) {\n _this.connection.logger.logQueryError(e, query, []);\n }\n }\n return map;\n }, {});\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n * If the location option is set, the database is loaded first.\n */\n SqljsDriver.prototype.createDatabaseConnection = function () {\n if (this.options.location) {\n return this.load(this.options.location, false);\n }\n return this.createDatabaseConnectionWithImport(this.options.database);\n };\n /**\n * Creates connection with an optional database.\n * If database is specified it is loaded, otherwise a new empty database is created.\n */\n SqljsDriver.prototype.createDatabaseConnectionWithImport = function (database) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var isLegacyVersion, sqlite, _a;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n isLegacyVersion = typeof this.sqlite.Database === \"function\";\n if (!isLegacyVersion) return [3 /*break*/, 1];\n _a = this.sqlite;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.sqlite(this.options.sqlJsConfig)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n sqlite = _a;\n if (database && database.length > 0) {\n this.databaseConnection = new sqlite.Database(database);\n }\n else {\n this.databaseConnection = new sqlite.Database();\n }\n // Enable foreign keys for database\n return [2 /*return*/, new Promise(function (ok, fail) {\n try {\n _this.databaseConnection.exec(\"PRAGMA foreign_keys = ON;\");\n ok(_this.databaseConnection);\n }\n catch (e) {\n fail(e);\n }\n })];\n }\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n SqljsDriver.prototype.loadDependencies = function () {\n if (_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].type === \"browser\") {\n this.sqlite = window.SQL;\n }\n else {\n try {\n this.sqlite = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].load(\"sql.js\");\n }\n catch (e) {\n throw new _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_3__[\"DriverPackageNotInstalledError\"](\"sql.js\", \"sql.js\");\n }\n }\n };\n return SqljsDriver;\n}(_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__[\"AbstractSqliteDriver\"]));\n\n\n//# sourceMappingURL=SqljsDriver.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/sqljs/SqljsQueryRunner.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/sqljs/SqljsQueryRunner.js ***! - \***********************************************************************/ -/*! exports provided: SqljsQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SqljsQueryRunner\", function() { return SqljsQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony import */ var _sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../sqlite-abstract/AbstractSqliteQueryRunner */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js\");\n/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../subscriber/Broadcaster */ \"./node_modules/typeorm/browser/subscriber/Broadcaster.js\");\n/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/QueryFailedError */ \"./node_modules/typeorm/browser/error/QueryFailedError.js\");\n\n\n\n\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar SqljsQueryRunner = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(SqljsQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SqljsQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_3__[\"Broadcaster\"](_this);\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n SqljsQueryRunner.prototype.commitTransaction = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.commitTransaction.call(this)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.driver.autoSave()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n SqljsQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (parameters === void 0) { parameters = []; }\n if (this.isReleased)\n throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[\"QueryRunnerAlreadyReleasedError\"]();\n return new Promise(function (ok, fail) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime, statement, maxQueryExecutionTime, queryEndTime, queryExecutionTime, result;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n databaseConnection = this.driver.databaseConnection;\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n try {\n statement = databaseConnection.prepare(query);\n if (parameters) {\n parameters = parameters.map(function (p) { return typeof p !== 'undefined' ? p : null; });\n statement.bind(parameters);\n }\n maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;\n queryEndTime = +new Date();\n queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n result = [];\n while (statement.step()) {\n result.push(statement.getAsObject());\n }\n statement.free();\n ok(result);\n }\n catch (e) {\n if (statement) {\n statement.free();\n }\n this.driver.connection.logger.logQueryError(e, query, parameters, this);\n fail(new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_4__[\"QueryFailedError\"](query, parameters, e));\n }\n return [2 /*return*/];\n });\n }); });\n };\n return SqljsQueryRunner;\n}(_sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_2__[\"AbstractSqliteQueryRunner\"]));\n\n\n//# sourceMappingURL=SqljsQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/sqljs/SqljsQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js ***! - \*************************************************************************/ -/*! exports provided: MssqlParameter */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MssqlParameter\", function() { return MssqlParameter; });\n/**\n * Sql server driver requires parameter types to be specified fo input parameters used in the query.\n *\n * @see https://github.com/patriksimek/node-mssql#data-types\n */\nvar MssqlParameter = /** @class */ (function () {\n function MssqlParameter(value, type) {\n var params = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n params[_i - 2] = arguments[_i];\n }\n this.value = value;\n this.type = type;\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n this.params = [];\n this.params = params || [];\n }\n return MssqlParameter;\n}());\n\n\n//# sourceMappingURL=MssqlParameter.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/types/DatabaseType.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/types/DatabaseType.js ***! - \*******************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=DatabaseType.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/types/DatabaseType.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/driver/types/ReplicationMode.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/driver/types/ReplicationMode.js ***! - \**********************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=ReplicationMode.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/driver/types/ReplicationMode.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/entity-manager/EntityManager.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/entity-manager/EntityManager.js ***! - \**********************************************************************/ -/*! exports provided: EntityManager */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityManager\", function() { return EntityManager; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_EntityNotFoundError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/EntityNotFoundError */ \"./node_modules/typeorm/browser/error/EntityNotFoundError.js\");\n/* harmony import */ var _error_QueryRunnerProviderAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../error/QueryRunnerProviderAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js\");\n/* harmony import */ var _error_NoNeedToReleaseEntityManagerError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/NoNeedToReleaseEntityManagerError */ \"./node_modules/typeorm/browser/error/NoNeedToReleaseEntityManagerError.js\");\n/* harmony import */ var _repository_TreeRepository__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../repository/TreeRepository */ \"./node_modules/typeorm/browser/repository/TreeRepository.js\");\n/* harmony import */ var _repository_Repository__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../repository/Repository */ \"./node_modules/typeorm/browser/repository/Repository.js\");\n/* harmony import */ var _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../find-options/FindOptionsUtils */ \"./node_modules/typeorm/browser/find-options/FindOptionsUtils.js\");\n/* harmony import */ var _query_builder_transformer_PlainObjectToNewEntityTransformer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../query-builder/transformer/PlainObjectToNewEntityTransformer */ \"./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js\");\n/* harmony import */ var _query_builder_transformer_PlainObjectToDatabaseEntityTransformer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../query-builder/transformer/PlainObjectToDatabaseEntityTransformer */ \"./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js\");\n/* harmony import */ var _error_CustomRepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../error/CustomRepositoryNotFoundError */ \"./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _repository_AbstractRepository__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../repository/AbstractRepository */ \"./node_modules/typeorm/browser/repository/AbstractRepository.js\");\n/* harmony import */ var _error_CustomRepositoryCannotInheritRepositoryError__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../error/CustomRepositoryCannotInheritRepositoryError */ \"./node_modules/typeorm/browser/error/CustomRepositoryCannotInheritRepositoryError.js\");\n/* harmony import */ var _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../driver/mongodb/MongoDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _error_RepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../error/RepositoryNotFoundError */ \"./node_modules/typeorm/browser/error/RepositoryNotFoundError.js\");\n/* harmony import */ var _error_RepositoryNotTreeError__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../error/RepositoryNotTreeError */ \"./node_modules/typeorm/browser/error/RepositoryNotTreeError.js\");\n/* harmony import */ var _repository_RepositoryFactory__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../repository/RepositoryFactory */ \"./node_modules/typeorm/browser/repository/RepositoryFactory.js\");\n/* harmony import */ var _error_TreeRepositoryNotSupportedError__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../error/TreeRepositoryNotSupportedError */ \"./node_modules/typeorm/browser/error/TreeRepositoryNotSupportedError.js\");\n/* harmony import */ var _persistence_EntityPersistExecutor__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../persistence/EntityPersistExecutor */ \"./node_modules/typeorm/browser/persistence/EntityPersistExecutor.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Entity manager supposed to work with any entity, automatically find its repository and call its methods,\n * whatever entity type are you passing.\n */\nvar EntityManager = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function EntityManager(connection, queryRunner) {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n /**\n * Once created and then reused by en repositories.\n */\n this.repositories = [];\n /**\n * Plain to object transformer used in create and merge operations.\n */\n this.plainObjectToEntityTransformer = new _query_builder_transformer_PlainObjectToNewEntityTransformer__WEBPACK_IMPORTED_MODULE_7__[\"PlainObjectToNewEntityTransformer\"]();\n this.connection = connection;\n if (queryRunner) {\n this.queryRunner = queryRunner;\n // dynamic: this.queryRunner = manager;\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__[\"ObjectUtils\"].assign(this.queryRunner, { manager: this });\n }\n }\n /**\n * Wraps given function execution (and all operations made there) in a transaction.\n * All database operations must be executed using provided entity manager.\n */\n EntityManager.prototype.transaction = function (isolationOrRunInTransaction, runInTransactionParam) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var isolation, runInTransaction, queryRunner, result, err_1, rollbackError_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n isolation = typeof isolationOrRunInTransaction === \"string\" ? isolationOrRunInTransaction : undefined;\n runInTransaction = typeof isolationOrRunInTransaction === \"function\" ? isolationOrRunInTransaction : runInTransactionParam;\n if (!runInTransaction) {\n throw new Error(\"Transaction method requires callback in second paramter if isolation level is supplied.\");\n }\n if (this.connection.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_13__[\"MongoDriver\"])\n throw new Error(\"Transactions aren't supported by MongoDB.\");\n if (this.queryRunner && this.queryRunner.isReleased)\n throw new _error_QueryRunnerProviderAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_2__[\"QueryRunnerProviderAlreadyReleasedError\"]();\n if (this.queryRunner && this.queryRunner.isTransactionActive)\n throw new Error(\"Cannot start transaction because its already started\");\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 8, 13, 16]);\n if (!isolation) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction(isolation)];\n case 2:\n _a.sent();\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, queryRunner.startTransaction()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [4 /*yield*/, runInTransaction(queryRunner.manager)];\n case 6:\n result = _a.sent();\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 7:\n _a.sent();\n return [2 /*return*/, result];\n case 8:\n err_1 = _a.sent();\n _a.label = 9;\n case 9:\n _a.trys.push([9, 11, , 12]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 10:\n _a.sent();\n return [3 /*break*/, 12];\n case 11:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 12];\n case 12: throw err_1;\n case 13:\n if (!!this.queryRunner) return [3 /*break*/, 15];\n return [4 /*yield*/, queryRunner.release()];\n case 14:\n _a.sent();\n _a.label = 15;\n case 15: return [7 /*endfinally*/];\n case 16: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes raw SQL query and returns raw database results.\n */\n EntityManager.prototype.query = function (query, parameters) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.connection.query(query, parameters, this.queryRunner)];\n });\n });\n };\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n EntityManager.prototype.createQueryBuilder = function (entityClass, alias, queryRunner) {\n if (alias) {\n return this.connection.createQueryBuilder(entityClass, alias, queryRunner || this.queryRunner);\n }\n else {\n return this.connection.createQueryBuilder(entityClass || queryRunner || this.queryRunner);\n }\n };\n /**\n * Checks if entity has an id by its Function type or schema name.\n */\n EntityManager.prototype.hasId = function (targetOrEntity, maybeEntity) {\n var target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;\n var entity = arguments.length === 2 ? maybeEntity : targetOrEntity;\n var metadata = this.connection.getMetadata(target);\n return metadata.hasId(entity);\n };\n /**\n * Gets entity mixed id.\n */\n EntityManager.prototype.getId = function (targetOrEntity, maybeEntity) {\n var target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;\n var entity = arguments.length === 2 ? maybeEntity : targetOrEntity;\n var metadata = this.connection.getMetadata(target);\n return metadata.getEntityIdMixedMap(entity);\n };\n /**\n * Creates a new entity instance or instances.\n * Can copy properties from the given object into new entities.\n */\n EntityManager.prototype.create = function (entityClass, plainObjectOrObjects) {\n var _this = this;\n var metadata = this.connection.getMetadata(entityClass);\n if (!plainObjectOrObjects)\n return metadata.create(this.queryRunner);\n if (Array.isArray(plainObjectOrObjects))\n return plainObjectOrObjects.map(function (plainEntityLike) { return _this.create(entityClass, plainEntityLike); });\n var mergeIntoEntity = metadata.create(this.queryRunner);\n this.plainObjectToEntityTransformer.transform(mergeIntoEntity, plainObjectOrObjects, metadata, true);\n return mergeIntoEntity;\n };\n /**\n * Merges two entities into one new entity.\n */\n EntityManager.prototype.merge = function (entityClass, mergeIntoEntity) {\n var _this = this;\n var entityLikes = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n entityLikes[_i - 2] = arguments[_i];\n }\n var metadata = this.connection.getMetadata(entityClass);\n entityLikes.forEach(function (object) { return _this.plainObjectToEntityTransformer.transform(mergeIntoEntity, object, metadata); });\n return mergeIntoEntity;\n };\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n */\n EntityManager.prototype.preload = function (entityClass, entityLike) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, plainObjectToDatabaseEntityTransformer, transformedEntity;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.connection.getMetadata(entityClass);\n plainObjectToDatabaseEntityTransformer = new _query_builder_transformer_PlainObjectToDatabaseEntityTransformer__WEBPACK_IMPORTED_MODULE_8__[\"PlainObjectToDatabaseEntityTransformer\"](this.connection.manager);\n return [4 /*yield*/, plainObjectToDatabaseEntityTransformer.transform(entityLike, metadata)];\n case 1:\n transformedEntity = _a.sent();\n if (transformedEntity)\n return [2 /*return*/, this.merge(entityClass, transformedEntity, entityLike)];\n return [2 /*return*/, undefined];\n }\n });\n });\n };\n /**\n * Saves a given entity in the database.\n */\n EntityManager.prototype.save = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof _index__WEBPACK_IMPORTED_MODULE_10__[\"EntitySchema\"] || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n if (target instanceof _index__WEBPACK_IMPORTED_MODULE_10__[\"EntitySchema\"])\n target = target.options.name;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute save operation\n return new _persistence_EntityPersistExecutor__WEBPACK_IMPORTED_MODULE_18__[\"EntityPersistExecutor\"](this.connection, this.queryRunner, \"save\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Removes a given entity from the database.\n */\n EntityManager.prototype.remove = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute save operation\n return new _persistence_EntityPersistExecutor__WEBPACK_IMPORTED_MODULE_18__[\"EntityPersistExecutor\"](this.connection, this.queryRunner, \"remove\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Records the delete date of one or many given entities.\n */\n EntityManager.prototype.softRemove = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof _index__WEBPACK_IMPORTED_MODULE_10__[\"EntitySchema\"] || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n if (target instanceof _index__WEBPACK_IMPORTED_MODULE_10__[\"EntitySchema\"])\n target = target.options.name;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute soft-remove operation\n return new _persistence_EntityPersistExecutor__WEBPACK_IMPORTED_MODULE_18__[\"EntityPersistExecutor\"](this.connection, this.queryRunner, \"soft-remove\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Recovers one or many given entities.\n */\n EntityManager.prototype.recover = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof _index__WEBPACK_IMPORTED_MODULE_10__[\"EntitySchema\"] || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n if (target instanceof _index__WEBPACK_IMPORTED_MODULE_10__[\"EntitySchema\"])\n target = target.options.name;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute recover operation\n return new _persistence_EntityPersistExecutor__WEBPACK_IMPORTED_MODULE_18__[\"EntityPersistExecutor\"](this.connection, this.queryRunner, \"recover\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n * You can execute bulk inserts using this method.\n */\n EntityManager.prototype.insert = function (target, entity) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.createQueryBuilder()\n .insert()\n .into(target)\n .values(entity)\n .execute()];\n });\n });\n };\n /**\n * Updates entity partially. Entity can be found by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.update = function (target, criteria, partialEntity) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the update method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .update(target)\n .set(partialEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .update(target)\n .set(partialEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Deletes entities by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.delete = function (targetOrEntity, criteria) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the delete method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .delete()\n .from(targetOrEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .delete()\n .from(targetOrEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Records the delete date of entities by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.softDelete = function (targetOrEntity, criteria) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the delete method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .softDelete()\n .from(targetOrEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .softDelete()\n .from(targetOrEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Restores entities by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.restore = function (targetOrEntity, criteria) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the delete method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .restore()\n .from(targetOrEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .restore()\n .from(targetOrEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Counts entities that match given find options or conditions.\n * Useful for pagination.\n */\n EntityManager.prototype.count = function (entityClass, optionsOrConditions) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, qb;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n return [2 /*return*/, _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getCount()];\n });\n });\n };\n /**\n * Finds entities that match given find options or conditions.\n */\n EntityManager.prototype.find = function (entityClass, optionsOrConditions) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, qb;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n if (!_find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false)\n _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].joinEagerRelations(qb, qb.alias, metadata);\n return [2 /*return*/, _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getMany()];\n });\n });\n };\n /**\n * Finds entities that match given find options and conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n EntityManager.prototype.findAndCount = function (entityClass, optionsOrConditions) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, qb;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n if (!_find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false)\n _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].joinEagerRelations(qb, qb.alias, metadata);\n return [2 /*return*/, _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getManyAndCount()];\n });\n });\n };\n /**\n * Finds entities with ids.\n * Optionally find options or conditions can be applied.\n */\n EntityManager.prototype.findByIds = function (entityClass, ids, optionsOrConditions) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, qb;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n // if no ids passed, no need to execute a query - just return an empty array of values\n if (!ids.length)\n return [2 /*return*/, Promise.resolve([])];\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions);\n if (!_find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false)\n _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].joinEagerRelations(qb, qb.alias, metadata);\n return [2 /*return*/, qb.andWhereInIds(ids).getMany()];\n });\n });\n };\n /**\n * Finds first entity that matches given conditions.\n */\n EntityManager.prototype.findOne = function (entityClass, idOrOptionsOrConditions, maybeOptions) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var findOptions, options, metadata, alias, qb, passedId;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n findOptions = undefined;\n if (_find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].isFindOneOptions(idOrOptionsOrConditions)) {\n findOptions = idOrOptionsOrConditions;\n }\n else if (maybeOptions && _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].isFindOneOptions(maybeOptions)) {\n findOptions = maybeOptions;\n }\n options = undefined;\n if (idOrOptionsOrConditions instanceof Object && !_find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].isFindOneOptions(idOrOptionsOrConditions))\n options = idOrOptionsOrConditions;\n metadata = this.connection.getMetadata(entityClass);\n alias = metadata.name;\n if (findOptions && findOptions.join) {\n alias = findOptions.join.alias;\n }\n else if (maybeOptions && _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].isFindOneOptions(maybeOptions) && maybeOptions.join) {\n alias = maybeOptions.join.alias;\n }\n qb = this.createQueryBuilder(entityClass, alias);\n if (!findOptions || findOptions.loadEagerRelations !== false)\n _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);\n passedId = typeof idOrOptionsOrConditions === \"string\" || typeof idOrOptionsOrConditions === \"number\" || idOrOptionsOrConditions instanceof Date;\n if (!passedId) {\n findOptions = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, (findOptions || {})), { take: 1 });\n }\n _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_6__[\"FindOptionsUtils\"].applyOptionsToQueryBuilder(qb, findOptions);\n if (options) {\n qb.where(options);\n }\n else if (passedId) {\n qb.andWhereInIds(metadata.ensureEntityIdMap(idOrOptionsOrConditions));\n }\n return [2 /*return*/, qb.getOne()];\n });\n });\n };\n /**\n * Finds first entity that matches given conditions or rejects the returned promise on error.\n */\n EntityManager.prototype.findOneOrFail = function (entityClass, idOrOptionsOrConditions, maybeOptions) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.findOne(entityClass, idOrOptionsOrConditions, maybeOptions).then(function (value) {\n if (value === undefined) {\n return Promise.reject(new _error_EntityNotFoundError__WEBPACK_IMPORTED_MODULE_1__[\"EntityNotFoundError\"](entityClass, idOrOptionsOrConditions));\n }\n return Promise.resolve(value);\n })];\n });\n });\n };\n /**\n * Clears all the data from the given table (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n EntityManager.prototype.clear = function (entityClass) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, queryRunner;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.connection.getMetadata(entityClass);\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 6]);\n return [4 /*yield*/, queryRunner.clearTable(metadata.tablePath)];\n case 2: return [2 /*return*/, _a.sent()]; // await is needed here because we are using finally\n case 3:\n if (!!this.queryRunner) return [3 /*break*/, 5];\n return [4 /*yield*/, queryRunner.release()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n EntityManager.prototype.increment = function (entityClass, conditions, propertyPath, value) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, column, values;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n column = metadata.findColumnWithPropertyPath(propertyPath);\n if (!column)\n throw new Error(\"Column \" + propertyPath + \" was not found in \" + metadata.targetName + \" entity.\");\n if (isNaN(Number(value)))\n throw new Error(\"Value \\\"\" + value + \"\\\" is not a number.\");\n values = propertyPath\n .split(\".\")\n .reduceRight(function (value, key) {\n var _a;\n return (_a = {}, _a[key] = value, _a);\n }, function () { return _this.connection.driver.escape(column.databaseName) + \" + \" + value; });\n return [2 /*return*/, this\n .createQueryBuilder(entityClass, \"entity\")\n .update(entityClass)\n .set(values)\n .where(conditions)\n .execute()];\n });\n });\n };\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n EntityManager.prototype.decrement = function (entityClass, conditions, propertyPath, value) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, column, values;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n column = metadata.findColumnWithPropertyPath(propertyPath);\n if (!column)\n throw new Error(\"Column \" + propertyPath + \" was not found in \" + metadata.targetName + \" entity.\");\n if (isNaN(Number(value)))\n throw new Error(\"Value \\\"\" + value + \"\\\" is not a number.\");\n values = propertyPath\n .split(\".\")\n .reduceRight(function (value, key) {\n var _a;\n return (_a = {}, _a[key] = value, _a);\n }, function () { return _this.connection.driver.escape(column.databaseName) + \" - \" + value; });\n return [2 /*return*/, this\n .createQueryBuilder(entityClass, \"entity\")\n .update(entityClass)\n .set(values)\n .where(conditions)\n .execute()];\n });\n });\n };\n /**\n * Gets repository for the given entity class or name.\n * If single database connection mode is used, then repository is obtained from the\n * repository aggregator, where each repository is individually created for this entity manager.\n * When single database connection is not used, repository is being obtained from the connection.\n */\n EntityManager.prototype.getRepository = function (target) {\n // throw exception if there is no repository with this target registered\n if (!this.connection.hasMetadata(target))\n throw new _error_RepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_14__[\"RepositoryNotFoundError\"](this.connection.name, target);\n // find already created repository instance and return it if found\n var metadata = this.connection.getMetadata(target);\n var repository = this.repositories.find(function (repository) { return repository.metadata === metadata; });\n if (repository)\n return repository;\n // if repository was not found then create it, store its instance and return it\n var newRepository = new _repository_RepositoryFactory__WEBPACK_IMPORTED_MODULE_16__[\"RepositoryFactory\"]().create(this, metadata, this.queryRunner);\n this.repositories.push(newRepository);\n return newRepository;\n };\n /**\n * Gets tree repository for the given entity class or name.\n * If single database connection mode is used, then repository is obtained from the\n * repository aggregator, where each repository is individually created for this entity manager.\n * When single database connection is not used, repository is being obtained from the connection.\n */\n EntityManager.prototype.getTreeRepository = function (target) {\n // tree tables aren't supported by some drivers (mongodb)\n if (this.connection.driver.treeSupport === false)\n throw new _error_TreeRepositoryNotSupportedError__WEBPACK_IMPORTED_MODULE_17__[\"TreeRepositoryNotSupportedError\"](this.connection.driver);\n // check if repository is real tree repository\n var repository = this.getRepository(target);\n if (!(repository instanceof _repository_TreeRepository__WEBPACK_IMPORTED_MODULE_4__[\"TreeRepository\"]))\n throw new _error_RepositoryNotTreeError__WEBPACK_IMPORTED_MODULE_15__[\"RepositoryNotTreeError\"](target);\n return repository;\n };\n /**\n * Gets mongodb repository for the given entity class.\n */\n EntityManager.prototype.getMongoRepository = function (target) {\n return this.connection.getMongoRepository(target);\n };\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n */\n EntityManager.prototype.getCustomRepository = function (customRepository) {\n var entityRepositoryMetadataArgs = Object(_index__WEBPACK_IMPORTED_MODULE_10__[\"getMetadataArgsStorage\"])().entityRepositories.find(function (repository) {\n return repository.target === (customRepository instanceof Function ? customRepository : customRepository.constructor);\n });\n if (!entityRepositoryMetadataArgs)\n throw new _error_CustomRepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_9__[\"CustomRepositoryNotFoundError\"](customRepository);\n var entityMetadata = entityRepositoryMetadataArgs.entity ? this.connection.getMetadata(entityRepositoryMetadataArgs.entity) : undefined;\n var entityRepositoryInstance = new entityRepositoryMetadataArgs.target(this, entityMetadata);\n // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed,\n // however we need these properties for internal work of the class\n if (entityRepositoryInstance instanceof _repository_AbstractRepository__WEBPACK_IMPORTED_MODULE_11__[\"AbstractRepository\"]) {\n if (!entityRepositoryInstance[\"manager\"])\n entityRepositoryInstance[\"manager\"] = this;\n }\n if (entityRepositoryInstance instanceof _repository_Repository__WEBPACK_IMPORTED_MODULE_5__[\"Repository\"]) {\n if (!entityMetadata)\n throw new _error_CustomRepositoryCannotInheritRepositoryError__WEBPACK_IMPORTED_MODULE_12__[\"CustomRepositoryCannotInheritRepositoryError\"](customRepository);\n entityRepositoryInstance[\"manager\"] = this;\n entityRepositoryInstance[\"metadata\"] = entityMetadata;\n }\n return entityRepositoryInstance;\n };\n /**\n * Releases all resources used by entity manager.\n * This is used when entity manager is created with a single query runner,\n * and this single query runner needs to be released after job with entity manager is done.\n */\n EntityManager.prototype.release = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n if (!this.queryRunner)\n throw new _error_NoNeedToReleaseEntityManagerError__WEBPACK_IMPORTED_MODULE_3__[\"NoNeedToReleaseEntityManagerError\"]();\n return [2 /*return*/, this.queryRunner.release()];\n });\n });\n };\n return EntityManager;\n}());\n\n\n//# sourceMappingURL=EntityManager.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/entity-manager/EntityManager.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/entity-manager/EntityManagerFactory.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/entity-manager/EntityManagerFactory.js ***! - \*****************************************************************************/ -/*! exports provided: EntityManagerFactory */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityManagerFactory\", function() { return EntityManagerFactory; });\n/* harmony import */ var _EntityManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EntityManager */ \"./node_modules/typeorm/browser/entity-manager/EntityManager.js\");\n/* harmony import */ var _MongoEntityManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MongoEntityManager */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _SqljsEntityManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SqljsEntityManager */ \"./node_modules/typeorm/browser/entity-manager/SqljsEntityManager.js\");\n/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../driver/sqljs/SqljsDriver */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js\");\n\n\n\n\n\n/**\n * Helps to create entity managers.\n */\nvar EntityManagerFactory = /** @class */ (function () {\n function EntityManagerFactory() {\n }\n /**\n * Creates a new entity manager depend on a given connection's driver.\n */\n EntityManagerFactory.prototype.create = function (connection, queryRunner) {\n if (connection.driver instanceof _MongoEntityManager__WEBPACK_IMPORTED_MODULE_1__[\"MongoDriver\"])\n return new _MongoEntityManager__WEBPACK_IMPORTED_MODULE_1__[\"MongoEntityManager\"](connection);\n if (connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_3__[\"SqljsDriver\"])\n return new _SqljsEntityManager__WEBPACK_IMPORTED_MODULE_2__[\"SqljsEntityManager\"](connection, queryRunner);\n return new _EntityManager__WEBPACK_IMPORTED_MODULE_0__[\"EntityManager\"](connection, queryRunner);\n };\n return EntityManagerFactory;\n}());\n\n\n//# sourceMappingURL=EntityManagerFactory.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/entity-manager/EntityManagerFactory.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/entity-manager/SqljsEntityManager.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/entity-manager/SqljsEntityManager.js ***! - \***************************************************************************/ -/*! exports provided: SqljsEntityManager */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SqljsEntityManager\", function() { return SqljsEntityManager; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _EntityManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EntityManager */ \"./node_modules/typeorm/browser/entity-manager/EntityManager.js\");\n\n\n/**\n * A special EntityManager that includes import/export and load/save function\n * that are unique to Sql.js.\n */\nvar SqljsEntityManager = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(SqljsEntityManager, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SqljsEntityManager(connection, queryRunner) {\n var _this = _super.call(this, connection, queryRunner) || this;\n _this.driver = connection.driver;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Loads either the definition from a file (Node.js) or localstorage (browser)\n * or uses the given definition to open a new database.\n */\n SqljsEntityManager.prototype.loadDatabase = function (fileNameOrLocalStorageOrData) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.driver.load(fileNameOrLocalStorageOrData)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saves the current database to a file (Node.js) or localstorage (browser)\n * if fileNameOrLocalStorage is not set options.location is used.\n */\n SqljsEntityManager.prototype.saveDatabase = function (fileNameOrLocalStorage) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.driver.save(fileNameOrLocalStorage)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns the current database definition.\n */\n SqljsEntityManager.prototype.exportDatabase = function () {\n return this.driver.export();\n };\n return SqljsEntityManager;\n}(_EntityManager__WEBPACK_IMPORTED_MODULE_1__[\"EntityManager\"]));\n\n\n//# sourceMappingURL=SqljsEntityManager.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/entity-manager/SqljsEntityManager.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/entity-schema/EntitySchema.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/entity-schema/EntitySchema.js ***! - \********************************************************************/ -/*! exports provided: EntitySchema */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntitySchema\", function() { return EntitySchema; });\n/**\n * Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.\n */\nvar EntitySchema = /** @class */ (function () {\n function EntitySchema(options) {\n this.options = options;\n }\n return EntitySchema;\n}());\n\n\n//# sourceMappingURL=EntitySchema.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/entity-schema/EntitySchema.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/entity-schema/EntitySchemaTransformer.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/entity-schema/EntitySchemaTransformer.js ***! - \*******************************************************************************/ -/*! exports provided: EntitySchemaTransformer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntitySchemaTransformer\", function() { return EntitySchemaTransformer; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _metadata_args_MetadataArgsStorage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../metadata-args/MetadataArgsStorage */ \"./node_modules/typeorm/browser/metadata-args/MetadataArgsStorage.js\");\n\n\n/**\n * Transforms entity schema into metadata args storage.\n * The result will be just like entities read from decorators.\n */\nvar EntitySchemaTransformer = /** @class */ (function () {\n function EntitySchemaTransformer() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Transforms entity schema into new metadata args storage object.\n */\n EntitySchemaTransformer.prototype.transform = function (schemas) {\n var metadataArgsStorage = new _metadata_args_MetadataArgsStorage__WEBPACK_IMPORTED_MODULE_1__[\"MetadataArgsStorage\"]();\n schemas.forEach(function (entitySchema) {\n var options = entitySchema.options;\n // add table metadata args from the schema\n var tableMetadata = {\n target: options.target || options.name,\n name: options.tableName,\n database: options.database,\n schema: options.schema,\n type: options.type || \"regular\",\n orderBy: options.orderBy,\n synchronize: options.synchronize,\n expression: options.expression\n };\n metadataArgsStorage.tables.push(tableMetadata);\n // add columns metadata args from the schema\n Object.keys(options.columns).forEach(function (columnName) {\n var column = options.columns[columnName];\n var mode = \"regular\";\n if (column.createDate)\n mode = \"createDate\";\n if (column.updateDate)\n mode = \"updateDate\";\n if (column.deleteDate)\n mode = \"deleteDate\";\n if (column.version)\n mode = \"version\";\n if (column.treeChildrenCount)\n mode = \"treeChildrenCount\";\n if (column.treeLevel)\n mode = \"treeLevel\";\n if (column.objectId)\n mode = \"objectId\";\n var columnAgrs = {\n target: options.target || options.name,\n mode: mode,\n propertyName: columnName,\n options: {\n type: column.type,\n name: column.objectId ? \"_id\" : column.name,\n length: column.length,\n width: column.width,\n nullable: column.nullable,\n readonly: column.readonly,\n update: column.update,\n select: column.select,\n insert: column.insert,\n primary: column.primary,\n unique: column.unique,\n comment: column.comment,\n default: column.default,\n onUpdate: column.onUpdate,\n precision: column.precision,\n scale: column.scale,\n zerofill: column.zerofill,\n unsigned: column.unsigned,\n charset: column.charset,\n collation: column.collation,\n enum: column.enum,\n asExpression: column.asExpression,\n generatedType: column.generatedType,\n hstoreType: column.hstoreType,\n array: column.array,\n transformer: column.transformer,\n spatialFeatureType: column.spatialFeatureType,\n srid: column.srid\n }\n };\n metadataArgsStorage.columns.push(columnAgrs);\n if (column.generated) {\n var generationArgs = {\n target: options.target || options.name,\n propertyName: columnName,\n strategy: typeof column.generated === \"string\" ? column.generated : \"increment\"\n };\n metadataArgsStorage.generations.push(generationArgs);\n }\n if (column.unique)\n metadataArgsStorage.uniques.push({ target: options.target || options.name, columns: [columnName] });\n });\n // add relation metadata args from the schema\n if (options.relations) {\n Object.keys(options.relations).forEach(function (relationName) {\n var e_1, _a;\n var relationSchema = options.relations[relationName];\n var relation = {\n target: options.target || options.name,\n propertyName: relationName,\n relationType: relationSchema.type,\n isLazy: relationSchema.lazy || false,\n type: relationSchema.target,\n inverseSideProperty: relationSchema.inverseSide,\n isTreeParent: relationSchema.treeParent,\n isTreeChildren: relationSchema.treeChildren,\n options: {\n eager: relationSchema.eager || false,\n cascade: relationSchema.cascade,\n nullable: relationSchema.nullable,\n onDelete: relationSchema.onDelete,\n onUpdate: relationSchema.onUpdate,\n deferrable: relationSchema.deferrable,\n primary: relationSchema.primary,\n persistence: relationSchema.persistence\n }\n };\n metadataArgsStorage.relations.push(relation);\n // add join column\n if (relationSchema.joinColumn) {\n if (typeof relationSchema.joinColumn === \"boolean\") {\n var joinColumn = {\n target: options.target || options.name,\n propertyName: relationName\n };\n metadataArgsStorage.joinColumns.push(joinColumn);\n }\n else {\n var joinColumnsOptions = Array.isArray(relationSchema.joinColumn) ? relationSchema.joinColumn : [relationSchema.joinColumn];\n try {\n for (var joinColumnsOptions_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(joinColumnsOptions), joinColumnsOptions_1_1 = joinColumnsOptions_1.next(); !joinColumnsOptions_1_1.done; joinColumnsOptions_1_1 = joinColumnsOptions_1.next()) {\n var joinColumnOption = joinColumnsOptions_1_1.value;\n var joinColumn = {\n target: options.target || options.name,\n propertyName: relationName,\n name: joinColumnOption.name,\n referencedColumnName: joinColumnOption.referencedColumnName\n };\n metadataArgsStorage.joinColumns.push(joinColumn);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (joinColumnsOptions_1_1 && !joinColumnsOptions_1_1.done && (_a = joinColumnsOptions_1.return)) _a.call(joinColumnsOptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n }\n // add join table\n if (relationSchema.joinTable) {\n if (typeof relationSchema.joinTable === \"boolean\") {\n var joinTable = {\n target: options.target || options.name,\n propertyName: relationName\n };\n metadataArgsStorage.joinTables.push(joinTable);\n }\n else {\n var joinTable = {\n target: options.target || options.name,\n propertyName: relationName,\n name: relationSchema.joinTable.name,\n database: relationSchema.joinTable.database,\n schema: relationSchema.joinTable.schema,\n joinColumns: (relationSchema.joinTable.joinColumn ? [relationSchema.joinTable.joinColumn] : relationSchema.joinTable.joinColumns),\n inverseJoinColumns: (relationSchema.joinTable.inverseJoinColumn ? [relationSchema.joinTable.inverseJoinColumn] : relationSchema.joinTable.inverseJoinColumns),\n };\n metadataArgsStorage.joinTables.push(joinTable);\n }\n }\n });\n }\n // add index metadata args from the schema\n if (options.indices) {\n options.indices.forEach(function (index) {\n var indexAgrs = {\n target: options.target || options.name,\n name: index.name,\n unique: index.unique === true ? true : false,\n spatial: index.spatial === true ? true : false,\n fulltext: index.fulltext === true ? true : false,\n parser: index.parser,\n synchronize: index.synchronize === false ? false : true,\n where: index.where,\n sparse: index.sparse,\n columns: index.columns\n };\n metadataArgsStorage.indices.push(indexAgrs);\n });\n }\n // add unique metadata args from the schema\n if (options.uniques) {\n options.uniques.forEach(function (unique) {\n var uniqueAgrs = {\n target: options.target || options.name,\n name: unique.name,\n columns: unique.columns\n };\n metadataArgsStorage.uniques.push(uniqueAgrs);\n });\n }\n // add check metadata args from the schema\n if (options.checks) {\n options.checks.forEach(function (check) {\n var checkAgrs = {\n target: options.target || options.name,\n name: check.name,\n expression: check.expression\n };\n metadataArgsStorage.checks.push(checkAgrs);\n });\n }\n // add exclusion metadata args from the schema\n if (options.exclusions) {\n options.exclusions.forEach(function (exclusion) {\n var exclusionArgs = {\n target: options.target || options.name,\n name: exclusion.name,\n expression: exclusion.expression\n };\n metadataArgsStorage.exclusions.push(exclusionArgs);\n });\n }\n });\n return metadataArgsStorage;\n };\n return EntitySchemaTransformer;\n}());\n\n\n//# sourceMappingURL=EntitySchemaTransformer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/entity-schema/EntitySchemaTransformer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/AlreadyHasActiveConnectionError.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/AlreadyHasActiveConnectionError.js ***! - \*******************************************************************************/ -/*! exports provided: AlreadyHasActiveConnectionError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlreadyHasActiveConnectionError\", function() { return AlreadyHasActiveConnectionError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to recreate connection with the same name, but previous connection was not closed yet.\n */\nvar AlreadyHasActiveConnectionError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AlreadyHasActiveConnectionError, _super);\n function AlreadyHasActiveConnectionError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"AlreadyHasActiveConnectionError\";\n Object.setPrototypeOf(_this, AlreadyHasActiveConnectionError.prototype);\n _this.message = \"Cannot create a new connection named \\\"\" + connectionName + \"\\\", because connection with such name \" +\n \"already exist and it now has an active connection session.\";\n return _this;\n }\n return AlreadyHasActiveConnectionError;\n}(Error));\n\n\n//# sourceMappingURL=AlreadyHasActiveConnectionError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/AlreadyHasActiveConnectionError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CannotAttachTreeChildrenEntityError.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CannotAttachTreeChildrenEntityError.js ***! - \***********************************************************************************/ -/*! exports provided: CannotAttachTreeChildrenEntityError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CannotAttachTreeChildrenEntityError\", function() { return CannotAttachTreeChildrenEntityError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user saves tree children entity but its parent is not saved yet.\n*/\nvar CannotAttachTreeChildrenEntityError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CannotAttachTreeChildrenEntityError, _super);\n function CannotAttachTreeChildrenEntityError(entityName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotAttachTreeChildrenEntityError\";\n Object.setPrototypeOf(_this, CannotAttachTreeChildrenEntityError.prototype);\n _this.message = \"Cannot attach entity \\\"\" + entityName + \"\\\" to its parent. Please make sure parent is saved in the database before saving children nodes.\";\n return _this;\n }\n return CannotAttachTreeChildrenEntityError;\n}(Error));\n\n\n//# sourceMappingURL=CannotAttachTreeChildrenEntityError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CannotAttachTreeChildrenEntityError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CannotConnectAlreadyConnectedError.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CannotConnectAlreadyConnectedError.js ***! - \**********************************************************************************/ -/*! exports provided: CannotConnectAlreadyConnectedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CannotConnectAlreadyConnectedError\", function() { return CannotConnectAlreadyConnectedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to connect when he already connected.\n */\nvar CannotConnectAlreadyConnectedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CannotConnectAlreadyConnectedError, _super);\n function CannotConnectAlreadyConnectedError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotConnectAlreadyConnectedError\";\n Object.setPrototypeOf(_this, CannotConnectAlreadyConnectedError.prototype);\n _this.message = \"Cannot create a \\\"\" + connectionName + \"\\\" connection because connection to the database already established.\";\n return _this;\n }\n return CannotConnectAlreadyConnectedError;\n}(Error));\n\n\n//# sourceMappingURL=CannotConnectAlreadyConnectedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CannotConnectAlreadyConnectedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CannotCreateEntityIdMapError.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CannotCreateEntityIdMapError.js ***! - \****************************************************************************/ -/*! exports provided: CannotCreateEntityIdMapError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CannotCreateEntityIdMapError\", function() { return CannotCreateEntityIdMapError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to create entity id map from the mixed id value,\n * but id value is a single value when entity requires multiple values.\n */\nvar CannotCreateEntityIdMapError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CannotCreateEntityIdMapError, _super);\n function CannotCreateEntityIdMapError(metadata, id) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotCreateEntityIdMapError\";\n Object.setPrototypeOf(_this, CannotCreateEntityIdMapError.prototype);\n var objectExample = metadata.primaryColumns.reduce(function (object, column, index) {\n column.setEntityValue(object, index + 1);\n return object;\n }, {});\n _this.message = \"Cannot use given entity id \\\"\" + id + \"\\\" because \\\"\" + metadata.targetName + \"\\\" contains multiple primary columns, you must provide object in following form: \" + JSON.stringify(objectExample) + \" as an id.\";\n return _this;\n }\n return CannotCreateEntityIdMapError;\n}(Error));\n\n\n//# sourceMappingURL=CannotCreateEntityIdMapError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CannotCreateEntityIdMapError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CannotDetermineEntityError.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CannotDetermineEntityError.js ***! - \**************************************************************************/ -/*! exports provided: CannotDetermineEntityError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CannotDetermineEntityError\", function() { return CannotDetermineEntityError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to save/remove/etc. constructor-less object (object literal) instead of entity.\n */\nvar CannotDetermineEntityError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CannotDetermineEntityError, _super);\n function CannotDetermineEntityError(operation) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotDetermineEntityError\";\n Object.setPrototypeOf(_this, CannotDetermineEntityError.prototype);\n _this.message = \"Cannot \" + operation + \", given value must be instance of entity class, instead object literal is given. Or you must specify an entity target to method call.\";\n return _this;\n }\n return CannotDetermineEntityError;\n}(Error));\n\n\n//# sourceMappingURL=CannotDetermineEntityError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CannotDetermineEntityError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CannotExecuteNotConnectedError.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CannotExecuteNotConnectedError.js ***! - \******************************************************************************/ -/*! exports provided: CannotExecuteNotConnectedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CannotExecuteNotConnectedError\", function() { return CannotExecuteNotConnectedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to execute operation allowed only if connection is opened.\n */\nvar CannotExecuteNotConnectedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CannotExecuteNotConnectedError, _super);\n function CannotExecuteNotConnectedError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotExecuteNotConnectedError\";\n Object.setPrototypeOf(_this, CannotExecuteNotConnectedError.prototype);\n _this.message = \"Cannot execute operation on \\\"\" + connectionName + \"\\\" connection because connection is not yet established.\";\n return _this;\n }\n return CannotExecuteNotConnectedError;\n}(Error));\n\n\n//# sourceMappingURL=CannotExecuteNotConnectedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CannotExecuteNotConnectedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CannotGetEntityManagerNotConnectedError.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CannotGetEntityManagerNotConnectedError.js ***! - \***************************************************************************************/ -/*! exports provided: CannotGetEntityManagerNotConnectedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CannotGetEntityManagerNotConnectedError\", function() { return CannotGetEntityManagerNotConnectedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to access entity manager before connection is established.\n */\nvar CannotGetEntityManagerNotConnectedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CannotGetEntityManagerNotConnectedError, _super);\n function CannotGetEntityManagerNotConnectedError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotGetEntityManagerNotConnectedError\";\n Object.setPrototypeOf(_this, CannotGetEntityManagerNotConnectedError.prototype);\n _this.message = \"Cannot get entity manager for \\\"\" + connectionName + \"\\\" connection because connection is not yet established.\";\n return _this;\n }\n return CannotGetEntityManagerNotConnectedError;\n}(Error));\n\n\n//# sourceMappingURL=CannotGetEntityManagerNotConnectedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CannotGetEntityManagerNotConnectedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CannotReflectMethodParameterTypeError.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CannotReflectMethodParameterTypeError.js ***! - \*************************************************************************************/ -/*! exports provided: CannotReflectMethodParameterTypeError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CannotReflectMethodParameterTypeError\", function() { return CannotReflectMethodParameterTypeError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when ORM cannot get method parameter's type.\n * Basically, when reflect-metadata is not available or tsconfig is not properly setup.\n */\nvar CannotReflectMethodParameterTypeError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CannotReflectMethodParameterTypeError, _super);\n function CannotReflectMethodParameterTypeError(target, methodName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotReflectMethodParameterTypeError\";\n Object.setPrototypeOf(_this, CannotReflectMethodParameterTypeError.prototype);\n _this.message = \"Cannot get reflected type for a \\\"\" + methodName + \"\\\" method's parameter of \\\"\" + target.name + \"\\\" class. \" +\n \"Make sure you have turned on an \\\"emitDecoratorMetadata\\\": true option in tsconfig.json. \" +\n \"Also make sure you have imported \\\"reflect-metadata\\\" on top of the main entry file in your application.\";\n return _this;\n }\n return CannotReflectMethodParameterTypeError;\n}(Error));\n\n\n//# sourceMappingURL=CannotReflectMethodParameterTypeError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CannotReflectMethodParameterTypeError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CircularRelationsError.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CircularRelationsError.js ***! - \**********************************************************************/ -/*! exports provided: CircularRelationsError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CircularRelationsError\", function() { return CircularRelationsError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when circular relations detected with nullable set to false.\n */\nvar CircularRelationsError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CircularRelationsError, _super);\n function CircularRelationsError(path) {\n var _this = _super.call(this) || this;\n _this.name = \"CircularRelationsError\";\n Object.setPrototypeOf(_this, CircularRelationsError.prototype);\n _this.message = \"Circular relations detected: \" + path + \". To resolve this issue you need to set nullable: true somewhere in this dependency structure.\";\n return _this;\n }\n return CircularRelationsError;\n}(Error));\n\n\n//# sourceMappingURL=CircularRelationsError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CircularRelationsError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js ***! - \************************************************************************/ -/*! exports provided: ColumnTypeUndefinedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ColumnTypeUndefinedError\", function() { return ColumnTypeUndefinedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when ORM cannot get column's type automatically.\n * Basically, when reflect-metadata is not available or tsconfig is not properly setup.\n */\nvar ColumnTypeUndefinedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ColumnTypeUndefinedError, _super);\n function ColumnTypeUndefinedError(object, propertyName) {\n var _this = _super.call(this) || this;\n _this.name = \"ColumnTypeUndefinedError\";\n Object.setPrototypeOf(_this, ColumnTypeUndefinedError.prototype);\n _this.message = \"Column type for \" + object.constructor.name + \"#\" + propertyName + \" is not defined and cannot be guessed. \" +\n \"Make sure you have turned on an \\\"emitDecoratorMetadata\\\": true option in tsconfig.json. \" +\n \"Also make sure you have imported \\\"reflect-metadata\\\" on top of the main entry file in your application (before any entity imported).\" +\n \"If you are using JavaScript instead of TypeScript you must explicitly provide a column type.\";\n return _this;\n }\n return ColumnTypeUndefinedError;\n}(Error));\n\n\n//# sourceMappingURL=ColumnTypeUndefinedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/ConnectionIsNotSetError.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/ConnectionIsNotSetError.js ***! - \***********************************************************************/ -/*! exports provided: ConnectionIsNotSetError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionIsNotSetError\", function() { return ConnectionIsNotSetError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to execute operation that requires connection to be established.\n */\nvar ConnectionIsNotSetError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ConnectionIsNotSetError, _super);\n function ConnectionIsNotSetError(dbType) {\n var _this = _super.call(this) || this;\n _this.name = \"ConnectionIsNotSetError\";\n Object.setPrototypeOf(_this, ConnectionIsNotSetError.prototype);\n _this.message = \"Connection with \" + dbType + \" database is not established. Check connection configuration.\";\n return _this;\n }\n return ConnectionIsNotSetError;\n}(Error));\n\n\n//# sourceMappingURL=ConnectionIsNotSetError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/ConnectionIsNotSetError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/ConnectionNotFoundError.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/ConnectionNotFoundError.js ***! - \***********************************************************************/ -/*! exports provided: ConnectionNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionNotFoundError\", function() { return ConnectionNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to get connection that does not exist.\n */\nvar ConnectionNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ConnectionNotFoundError, _super);\n function ConnectionNotFoundError(name) {\n var _this = _super.call(this) || this;\n _this.name = \"ConnectionNotFoundError\";\n Object.setPrototypeOf(_this, ConnectionNotFoundError.prototype);\n _this.message = \"Connection \\\"\" + name + \"\\\" was not found.\";\n return _this;\n }\n return ConnectionNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=ConnectionNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/ConnectionNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CustomRepositoryCannotInheritRepositoryError.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CustomRepositoryCannotInheritRepositoryError.js ***! - \********************************************************************************************/ -/*! exports provided: CustomRepositoryCannotInheritRepositoryError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryCannotInheritRepositoryError\", function() { return CustomRepositoryCannotInheritRepositoryError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown if custom repository inherits Repository class however entity is not set in @EntityRepository decorator.\n */\nvar CustomRepositoryCannotInheritRepositoryError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CustomRepositoryCannotInheritRepositoryError, _super);\n function CustomRepositoryCannotInheritRepositoryError(repository) {\n var _this = _super.call(this) || this;\n _this.name = \"CustomRepositoryCannotInheritRepositoryError\";\n Object.setPrototypeOf(_this, CustomRepositoryCannotInheritRepositoryError.prototype);\n _this.message = \"Custom entity repository \" + (repository instanceof Function ? repository.name : repository.constructor.name) + \" \" +\n \" cannot inherit Repository class without entity being set in the @EntityRepository decorator.\";\n return _this;\n }\n return CustomRepositoryCannotInheritRepositoryError;\n}(Error));\n\n\n//# sourceMappingURL=CustomRepositoryCannotInheritRepositoryError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CustomRepositoryCannotInheritRepositoryError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CustomRepositoryDoesNotHaveEntityError.js": -/*!**************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CustomRepositoryDoesNotHaveEntityError.js ***! - \**************************************************************************************/ -/*! exports provided: CustomRepositoryDoesNotHaveEntityError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryDoesNotHaveEntityError\", function() { return CustomRepositoryDoesNotHaveEntityError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown if custom repositories that extend AbstractRepository classes does not have managed entity.\n */\nvar CustomRepositoryDoesNotHaveEntityError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CustomRepositoryDoesNotHaveEntityError, _super);\n function CustomRepositoryDoesNotHaveEntityError(repository) {\n var _this = _super.call(this) || this;\n _this.name = \"CustomRepositoryDoesNotHaveEntityError\";\n Object.setPrototypeOf(_this, CustomRepositoryDoesNotHaveEntityError.prototype);\n _this.message = \"Custom repository \" + (repository instanceof Function ? repository.name : repository.constructor.name) + \" does not have managed entity. \" +\n \"Did you forget to specify entity for it @EntityRepository(MyEntity)? \";\n return _this;\n }\n return CustomRepositoryDoesNotHaveEntityError;\n}(Error));\n\n\n//# sourceMappingURL=CustomRepositoryDoesNotHaveEntityError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CustomRepositoryDoesNotHaveEntityError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js ***! - \*****************************************************************************/ -/*! exports provided: CustomRepositoryNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryNotFoundError\", function() { return CustomRepositoryNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown if custom repository was not found.\n */\nvar CustomRepositoryNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(CustomRepositoryNotFoundError, _super);\n function CustomRepositoryNotFoundError(repository) {\n var _this = _super.call(this) || this;\n _this.name = \"CustomRepositoryNotFoundError\";\n Object.setPrototypeOf(_this, CustomRepositoryNotFoundError.prototype);\n _this.message = \"Custom repository \" + (repository instanceof Function ? repository.name : repository.constructor.name) + \" was not found. \" +\n \"Did you forgot to put @EntityRepository decorator on it?\";\n return _this;\n }\n return CustomRepositoryNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=CustomRepositoryNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/DataTypeNotSupportedError.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/DataTypeNotSupportedError.js ***! - \*************************************************************************/ -/*! exports provided: DataTypeNotSupportedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DataTypeNotSupportedError\", function() { return DataTypeNotSupportedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar DataTypeNotSupportedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(DataTypeNotSupportedError, _super);\n function DataTypeNotSupportedError(column, dataType, database) {\n var _this = _super.call(this) || this;\n _this.name = \"DataTypeNotSupportedError\";\n Object.setPrototypeOf(_this, DataTypeNotSupportedError.prototype);\n var type = typeof dataType === \"string\" ? dataType : dataType.name;\n _this.message = \"Data type \\\"\" + type + \"\\\" in \\\"\" + column.entityMetadata.targetName + \".\" + column.propertyName + \"\\\" is not supported by \\\"\" + database + \"\\\" database.\";\n return _this;\n }\n return DataTypeNotSupportedError;\n}(Error));\n\n\n//# sourceMappingURL=DataTypeNotSupportedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/DataTypeNotSupportedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/DriverOptionNotSetError.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/DriverOptionNotSetError.js ***! - \***********************************************************************/ -/*! exports provided: DriverOptionNotSetError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DriverOptionNotSetError\", function() { return DriverOptionNotSetError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown if some required driver's option is not set.\n */\nvar DriverOptionNotSetError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(DriverOptionNotSetError, _super);\n function DriverOptionNotSetError(optionName) {\n var _this = _super.call(this) || this;\n _this.name = \"DriverOptionNotSetError\";\n Object.setPrototypeOf(_this, DriverOptionNotSetError.prototype);\n _this.message = \"Driver option (\" + optionName + \") is not set. Please set it to perform connection to the database.\";\n return _this;\n }\n return DriverOptionNotSetError;\n}(Error));\n\n\n//# sourceMappingURL=DriverOptionNotSetError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/DriverOptionNotSetError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js ***! - \******************************************************************************/ -/*! exports provided: DriverPackageNotInstalledError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DriverPackageNotInstalledError\", function() { return DriverPackageNotInstalledError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when required driver's package is not installed.\n */\nvar DriverPackageNotInstalledError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(DriverPackageNotInstalledError, _super);\n function DriverPackageNotInstalledError(driverName, packageName) {\n var _this = _super.call(this) || this;\n _this.name = \"DriverPackageNotInstalledError\";\n Object.setPrototypeOf(_this, DriverPackageNotInstalledError.prototype);\n _this.message = driverName + \" package has not been found installed. Try to install it: npm install \" + packageName + \" --save\";\n return _this;\n }\n return DriverPackageNotInstalledError;\n}(Error));\n\n\n//# sourceMappingURL=DriverPackageNotInstalledError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/EntityColumnNotFound.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/EntityColumnNotFound.js ***! - \********************************************************************/ -/*! exports provided: EntityColumnNotFound */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityColumnNotFound\", function() { return EntityColumnNotFound; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n *\n */\nvar EntityColumnNotFound = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(EntityColumnNotFound, _super);\n function EntityColumnNotFound(propertyPath) {\n var _this = _super.call(this) || this;\n _this.name = \"EntityColumnNotFound\";\n Object.setPrototypeOf(_this, EntityColumnNotFound.prototype);\n _this.message = \"No entity column \\\"\" + propertyPath + \"\\\" was found.\";\n return _this;\n }\n return EntityColumnNotFound;\n}(Error));\n\n\n//# sourceMappingURL=EntityColumnNotFound.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/EntityColumnNotFound.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/EntityMetadataNotFoundError.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/EntityMetadataNotFoundError.js ***! - \***************************************************************************/ -/*! exports provided: EntityMetadataNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityMetadataNotFoundError\", function() { return EntityMetadataNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n\n\n/**\n */\nvar EntityMetadataNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(EntityMetadataNotFoundError, _super);\n function EntityMetadataNotFoundError(target) {\n var _this = _super.call(this) || this;\n _this.name = \"EntityMetadataNotFound\";\n Object.setPrototypeOf(_this, EntityMetadataNotFoundError.prototype);\n var targetName;\n if (target instanceof _index__WEBPACK_IMPORTED_MODULE_1__[\"EntitySchema\"]) {\n targetName = target.options.name;\n }\n else if (typeof target === \"function\") {\n targetName = target.name;\n }\n else if (typeof target === \"object\" && \"name\" in target) {\n targetName = target.name;\n }\n else {\n targetName = target;\n }\n _this.message = \"No metadata for \\\"\" + targetName + \"\\\" was found.\";\n return _this;\n }\n return EntityMetadataNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=EntityMetadataNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/EntityMetadataNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/EntityNotFoundError.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/EntityNotFoundError.js ***! - \*******************************************************************/ -/*! exports provided: EntityNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityNotFoundError\", function() { return EntityNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n\n\n/**\n * Thrown when no result could be found in methods which are not allowed to return undefined or an empty set.\n */\nvar EntityNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(EntityNotFoundError, _super);\n function EntityNotFoundError(entityClass, criteria) {\n var _this = _super.call(this) || this;\n _this.name = \"EntityNotFound\";\n Object.setPrototypeOf(_this, EntityNotFoundError.prototype);\n var targetName;\n if (entityClass instanceof _index__WEBPACK_IMPORTED_MODULE_1__[\"EntitySchema\"]) {\n targetName = entityClass.options.name;\n }\n else if (typeof entityClass === \"function\") {\n targetName = entityClass.name;\n }\n else if (typeof entityClass === \"object\" && \"name\" in entityClass) {\n targetName = entityClass.name;\n }\n else {\n targetName = entityClass;\n }\n var criteriaString = _this.stringifyCriteria(criteria);\n _this.message = \"Could not find any entity of type \\\"\" + targetName + \"\\\" matching: \" + criteriaString;\n return _this;\n }\n EntityNotFoundError.prototype.stringifyCriteria = function (criteria) {\n try {\n return JSON.stringify(criteria, null, 4);\n }\n catch (e) { }\n return \"\" + criteria;\n };\n return EntityNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=EntityNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/EntityNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/FindRelationsNotFoundError.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/FindRelationsNotFoundError.js ***! - \**************************************************************************/ -/*! exports provided: FindRelationsNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FindRelationsNotFoundError\", function() { return FindRelationsNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when relations specified in the find options were not found in the entities.\n*/\nvar FindRelationsNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(FindRelationsNotFoundError, _super);\n function FindRelationsNotFoundError(notFoundRelations) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, FindRelationsNotFoundError.prototype);\n if (notFoundRelations.length === 1) {\n _this.message = \"Relation \\\"\" + notFoundRelations[0] + \"\\\" was not found; please check if it is correct and really exists in your entity.\";\n }\n else {\n _this.message = \"Relations \" + notFoundRelations.map(function (relation) { return \"\\\"\" + relation + \"\\\"\"; }).join(\", \") + \" were not found; please check if relations are correct and they exist in your entities.\";\n }\n return _this;\n }\n return FindRelationsNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=FindRelationsNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/FindRelationsNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/InitializedRelationError.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/InitializedRelationError.js ***! - \************************************************************************/ -/*! exports provided: InitializedRelationError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InitializedRelationError\", function() { return InitializedRelationError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when relation has array initialized which is forbidden my ORM.\n *\n * @see https://github.com/typeorm/typeorm/issues/1319\n * @see http://typeorm.io/#/relations-faq/avoid-relation-property-initializers\n */\nvar InitializedRelationError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(InitializedRelationError, _super);\n function InitializedRelationError(relation) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, InitializedRelationError.prototype);\n _this.message = \"Array initializations are not allowed in entity relations. \" +\n (\"Please remove array initialization (= []) from \\\"\" + relation.entityMetadata.targetName + \"#\" + relation.propertyPath + \"\\\". \") +\n \"This is ORM requirement to make relations to work properly. Refer docs for more information.\";\n return _this;\n }\n return InitializedRelationError;\n}(Error));\n\n\n//# sourceMappingURL=InitializedRelationError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/InitializedRelationError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/InsertValuesMissingError.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/InsertValuesMissingError.js ***! - \************************************************************************/ -/*! exports provided: InsertValuesMissingError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertValuesMissingError\", function() { return InsertValuesMissingError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to insert using QueryBuilder but do not specify what to insert.\n */\nvar InsertValuesMissingError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(InsertValuesMissingError, _super);\n function InsertValuesMissingError() {\n var _this = _super.call(this) || this;\n _this.name = \"InsertValuesMissingError\";\n Object.setPrototypeOf(_this, InsertValuesMissingError.prototype);\n _this.message = \"Cannot perform insert query because values are not defined. Call \\\"qb.values(...)\\\" method to specify inserted values.\";\n return _this;\n }\n return InsertValuesMissingError;\n}(Error));\n\n\n//# sourceMappingURL=InsertValuesMissingError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/InsertValuesMissingError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js ***! - \******************************************************************************/ -/*! exports provided: LimitOnUpdateNotSupportedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LimitOnUpdateNotSupportedError\", function() { return LimitOnUpdateNotSupportedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to build an UPDATE query with LIMIT but the database does not support it.\n*/\nvar LimitOnUpdateNotSupportedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(LimitOnUpdateNotSupportedError, _super);\n function LimitOnUpdateNotSupportedError() {\n var _this = _super.call(this) || this;\n _this.name = \"LimitOnUpdateNotSupportedError\";\n Object.setPrototypeOf(_this, LimitOnUpdateNotSupportedError.prototype);\n _this.message = \"Your database does not support LIMIT on UPDATE statements.\";\n return _this;\n }\n return LimitOnUpdateNotSupportedError;\n}(Error));\n\n\n//# sourceMappingURL=LimitOnUpdateNotSupportedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js ***! - \**********************************************************************************/ -/*! exports provided: LockNotSupportedOnGivenDriverError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LockNotSupportedOnGivenDriverError\", function() { return LockNotSupportedOnGivenDriverError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when selected sql driver does not supports locking.\n */\nvar LockNotSupportedOnGivenDriverError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(LockNotSupportedOnGivenDriverError, _super);\n function LockNotSupportedOnGivenDriverError() {\n var _this = _super.call(this) || this;\n _this.name = \"LockNotSupportedOnGivenDriverError\";\n Object.setPrototypeOf(_this, LockNotSupportedOnGivenDriverError.prototype);\n _this.message = \"Locking not supported on given driver.\";\n return _this;\n }\n return LockNotSupportedOnGivenDriverError;\n}(Error));\n\n\n//# sourceMappingURL=LockNotSupportedOnGivenDriverError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MetadataAlreadyExistsError.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MetadataAlreadyExistsError.js ***! - \**************************************************************************/ -/*! exports provided: MetadataAlreadyExistsError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MetadataAlreadyExistsError\", function() { return MetadataAlreadyExistsError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar MetadataAlreadyExistsError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MetadataAlreadyExistsError, _super);\n function MetadataAlreadyExistsError(metadataType, constructor, propertyName) {\n var _this = _super.call(this) || this;\n _this.name = \"MetadataAlreadyExistsError\";\n Object.setPrototypeOf(_this, MetadataAlreadyExistsError.prototype);\n _this.message = metadataType + \" metadata already exists for the class constructor \" + JSON.stringify(constructor) +\n (propertyName ? \" on property \" + propertyName : \". If you previously renamed or moved entity class, make sure\" +\n \" that compiled version of old entity class source wasn't left in the compiler output directory.\");\n return _this;\n }\n return MetadataAlreadyExistsError;\n}(Error));\n\n\n//# sourceMappingURL=MetadataAlreadyExistsError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MetadataAlreadyExistsError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MetadataWithSuchNameAlreadyExistsError.js": -/*!**************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MetadataWithSuchNameAlreadyExistsError.js ***! - \**************************************************************************************/ -/*! exports provided: MetadataWithSuchNameAlreadyExistsError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MetadataWithSuchNameAlreadyExistsError\", function() { return MetadataWithSuchNameAlreadyExistsError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar MetadataWithSuchNameAlreadyExistsError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MetadataWithSuchNameAlreadyExistsError, _super);\n function MetadataWithSuchNameAlreadyExistsError(metadataType, name) {\n var _this = _super.call(this) || this;\n _this.name = \"MetadataWithSuchNameAlreadyExistsError\";\n Object.setPrototypeOf(_this, MetadataWithSuchNameAlreadyExistsError.prototype);\n _this.message = metadataType + \" metadata with such name \" + name + \" already exists. \" +\n \"Do you apply decorator twice? Or maybe try to change a name?\";\n return _this;\n }\n return MetadataWithSuchNameAlreadyExistsError;\n}(Error));\n\n\n//# sourceMappingURL=MetadataWithSuchNameAlreadyExistsError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MetadataWithSuchNameAlreadyExistsError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MissingDeleteDateColumnError.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MissingDeleteDateColumnError.js ***! - \****************************************************************************/ -/*! exports provided: MissingDeleteDateColumnError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MissingDeleteDateColumnError\", function() { return MissingDeleteDateColumnError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar MissingDeleteDateColumnError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MissingDeleteDateColumnError, _super);\n function MissingDeleteDateColumnError(entityMetadata) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingDeleteDateColumnError\";\n Object.setPrototypeOf(_this, MissingDeleteDateColumnError.prototype);\n _this.message = \"Entity \\\"\" + entityMetadata.name + \"\\\" does not have delete date columns.\";\n return _this;\n }\n return MissingDeleteDateColumnError;\n}(Error));\n\n\n//# sourceMappingURL=MissingDeleteDateColumnError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MissingDeleteDateColumnError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MissingDriverError.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MissingDriverError.js ***! - \******************************************************************/ -/*! exports provided: MissingDriverError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MissingDriverError\", function() { return MissingDriverError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer specifies driver type that does not exist or supported.\n */\nvar MissingDriverError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MissingDriverError, _super);\n function MissingDriverError(driverType) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingDriverError\";\n Object.setPrototypeOf(_this, MissingDriverError.prototype);\n _this.message = \"Wrong driver: \\\"\" + driverType + \"\\\" given. Supported drivers are: \\\"cordova\\\", \\\"expo\\\", \\\"mariadb\\\", \\\"mongodb\\\", \\\"mssql\\\", \\\"mysql\\\", \\\"oracle\\\", \\\"postgres\\\", \\\"sqlite\\\", \\\"better-sqlite3\\\", \\\"sqljs\\\", \\\"react-native\\\", \\\"aurora-data-api\\\", \\\"aurora-data-api-pg\\\".\";\n return _this;\n }\n return MissingDriverError;\n}(Error));\n\n\n//# sourceMappingURL=MissingDriverError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MissingDriverError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MissingJoinColumnError.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MissingJoinColumnError.js ***! - \**********************************************************************/ -/*! exports provided: MissingJoinColumnError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MissingJoinColumnError\", function() { return MissingJoinColumnError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar MissingJoinColumnError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MissingJoinColumnError, _super);\n function MissingJoinColumnError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingJoinColumnError\";\n Object.setPrototypeOf(_this, MissingJoinColumnError.prototype);\n if (relation.inverseRelation) {\n _this.message = \"JoinColumn is missing on both sides of \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" +\n (relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" one-to-one relationship. \") +\n \"You need to put JoinColumn decorator on one of the sides.\";\n }\n else {\n _this.message = \"JoinColumn is missing on \" + entityMetadata.name + \"#\" + relation.propertyName + \" one-to-one relationship. \" +\n \"You need to put JoinColumn decorator on it.\";\n }\n return _this;\n }\n return MissingJoinColumnError;\n}(Error));\n\n\n//# sourceMappingURL=MissingJoinColumnError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MissingJoinColumnError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MissingJoinTableError.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MissingJoinTableError.js ***! - \*********************************************************************/ -/*! exports provided: MissingJoinTableError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MissingJoinTableError\", function() { return MissingJoinTableError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar MissingJoinTableError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MissingJoinTableError, _super);\n function MissingJoinTableError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingJoinTableError\";\n Object.setPrototypeOf(_this, MissingJoinTableError.prototype);\n if (relation.inverseRelation) {\n _this.message = \"JoinTable is missing on both sides of \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" +\n (relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" many-to-many relationship. \") +\n \"You need to put decorator decorator on one of the sides.\";\n }\n else {\n _this.message = \"JoinTable is missing on \" + entityMetadata.name + \"#\" + relation.propertyName + \" many-to-many relationship. \" +\n \"You need to put JoinTable decorator on it.\";\n }\n return _this;\n }\n return MissingJoinTableError;\n}(Error));\n\n\n//# sourceMappingURL=MissingJoinTableError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MissingJoinTableError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MissingPrimaryColumnError.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MissingPrimaryColumnError.js ***! - \*************************************************************************/ -/*! exports provided: MissingPrimaryColumnError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MissingPrimaryColumnError\", function() { return MissingPrimaryColumnError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar MissingPrimaryColumnError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MissingPrimaryColumnError, _super);\n function MissingPrimaryColumnError(entityMetadata) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingPrimaryColumnError\";\n Object.setPrototypeOf(_this, MissingPrimaryColumnError.prototype);\n _this.message = \"Entity \\\"\" + entityMetadata.name + \"\\\" does not have a primary column. Primary column is required to \" +\n \"have in all your entities. Use @PrimaryColumn decorator to add a primary column to your entity.\";\n return _this;\n }\n return MissingPrimaryColumnError;\n}(Error));\n\n\n//# sourceMappingURL=MissingPrimaryColumnError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MissingPrimaryColumnError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/MustBeEntityError.js": -/*!*****************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/MustBeEntityError.js ***! - \*****************************************************************/ -/*! exports provided: MustBeEntityError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MustBeEntityError\", function() { return MustBeEntityError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when method expects entity but instead something else is given.\n */\nvar MustBeEntityError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(MustBeEntityError, _super);\n function MustBeEntityError(operation, wrongValue) {\n var _this = _super.call(this) || this;\n _this.name = \"MustBeEntityError\";\n Object.setPrototypeOf(_this, MustBeEntityError.prototype);\n _this.message = \"Cannot \" + operation + \", given value must be an entity, instead \\\"\" + wrongValue + \"\\\" is given.\";\n return _this;\n }\n return MustBeEntityError;\n}(Error));\n\n\n//# sourceMappingURL=MustBeEntityError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/MustBeEntityError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/NamingStrategyNotFoundError.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/NamingStrategyNotFoundError.js ***! - \***************************************************************************/ -/*! exports provided: NamingStrategyNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NamingStrategyNotFoundError\", function() { return NamingStrategyNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to use naming strategy that does not exist.\n */\nvar NamingStrategyNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(NamingStrategyNotFoundError, _super);\n function NamingStrategyNotFoundError(strategyName, connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"NamingStrategyNotFoundError\";\n Object.setPrototypeOf(_this, NamingStrategyNotFoundError.prototype);\n var name = strategyName instanceof Function ? strategyName.name : strategyName;\n _this.message = \"Naming strategy \\\"\" + name + \"\\\" was not found. Looks like this naming strategy does not \" +\n (\"exist or it was not registered in current \\\"\" + connectionName + \"\\\" connection?\");\n return _this;\n }\n return NamingStrategyNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=NamingStrategyNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/NamingStrategyNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/NoConnectionForRepositoryError.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/NoConnectionForRepositoryError.js ***! - \******************************************************************************/ -/*! exports provided: NoConnectionForRepositoryError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoConnectionForRepositoryError\", function() { return NoConnectionForRepositoryError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to access repository before connection is established.\n */\nvar NoConnectionForRepositoryError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(NoConnectionForRepositoryError, _super);\n function NoConnectionForRepositoryError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"NoConnectionForRepositoryError\";\n Object.setPrototypeOf(_this, NoConnectionForRepositoryError.prototype);\n _this.message = \"Cannot get a Repository for \\\"\" + connectionName + \" connection, because connection with the database \" +\n \"is not established yet. Call connection#connect method to establish connection.\";\n return _this;\n }\n return NoConnectionForRepositoryError;\n}(Error));\n\n\n//# sourceMappingURL=NoConnectionForRepositoryError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/NoConnectionForRepositoryError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/NoConnectionOptionError.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/NoConnectionOptionError.js ***! - \***********************************************************************/ -/*! exports provided: NoConnectionOptionError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoConnectionOptionError\", function() { return NoConnectionOptionError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when some option is not set in the connection options.\n */\nvar NoConnectionOptionError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(NoConnectionOptionError, _super);\n function NoConnectionOptionError(optionName) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, NoConnectionOptionError.prototype);\n _this.message = \"Option \\\"\" + optionName + \"\\\" is not set in your connection options, please define \\\"\" + optionName + \"\\\" option in your connection options or ormconfig.json\";\n return _this;\n }\n return NoConnectionOptionError;\n}(Error));\n\n\n//# sourceMappingURL=NoConnectionOptionError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/NoConnectionOptionError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/NoNeedToReleaseEntityManagerError.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/NoNeedToReleaseEntityManagerError.js ***! - \*********************************************************************************/ -/*! exports provided: NoNeedToReleaseEntityManagerError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoNeedToReleaseEntityManagerError\", function() { return NoNeedToReleaseEntityManagerError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to release entity manager that does not use single database connection.\n */\nvar NoNeedToReleaseEntityManagerError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(NoNeedToReleaseEntityManagerError, _super);\n function NoNeedToReleaseEntityManagerError() {\n var _this = _super.call(this) || this;\n _this.name = \"NoNeedToReleaseEntityManagerError\";\n Object.setPrototypeOf(_this, NoNeedToReleaseEntityManagerError.prototype);\n _this.message = \"Entity manager is not using single database connection and cannot be released. \" +\n \"Only entity managers created by connection#createEntityManagerWithSingleDatabaseConnection \" +\n \"methods have a single database connection and they should be released.\";\n return _this;\n }\n return NoNeedToReleaseEntityManagerError;\n}(Error));\n\n\n//# sourceMappingURL=NoNeedToReleaseEntityManagerError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/NoNeedToReleaseEntityManagerError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js": -/*!********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js ***! - \********************************************************************************/ -/*! exports provided: NoVersionOrUpdateDateColumnError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoVersionOrUpdateDateColumnError\", function() { return NoVersionOrUpdateDateColumnError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when an entity does not have no version and no update date column.\n */\nvar NoVersionOrUpdateDateColumnError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(NoVersionOrUpdateDateColumnError, _super);\n function NoVersionOrUpdateDateColumnError(entity) {\n var _this = _super.call(this) || this;\n _this.name = \"NoVersionOrUpdateDateColumnError\";\n Object.setPrototypeOf(_this, NoVersionOrUpdateDateColumnError.prototype);\n _this.message = \"Entity \" + entity + \" does not have version or update date columns.\";\n return _this;\n }\n return NoVersionOrUpdateDateColumnError;\n}(Error));\n\n\n//# sourceMappingURL=NoVersionOrUpdateDateColumnError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js ***! - \***********************************************************************************/ -/*! exports provided: OffsetWithoutLimitNotSupportedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OffsetWithoutLimitNotSupportedError\", function() { return OffsetWithoutLimitNotSupportedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to build SELECT query using OFFSET without LIMIT applied but database does not support it.\n*/\nvar OffsetWithoutLimitNotSupportedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(OffsetWithoutLimitNotSupportedError, _super);\n function OffsetWithoutLimitNotSupportedError() {\n var _this = _super.call(this) || this;\n _this.name = \"OffsetWithoutLimitNotSupportedError\";\n Object.setPrototypeOf(_this, OffsetWithoutLimitNotSupportedError.prototype);\n _this.message = \"RDBMS does not support OFFSET without LIMIT in SELECT statements. You must use limit in conjunction with offset function (or take in conjunction with skip function if you are using pagination).\";\n return _this;\n }\n return OffsetWithoutLimitNotSupportedError;\n}(Error));\n\n\n//# sourceMappingURL=OffsetWithoutLimitNotSupportedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js ***! - \*******************************************************************************/ -/*! exports provided: OptimisticLockCanNotBeUsedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OptimisticLockCanNotBeUsedError\", function() { return OptimisticLockCanNotBeUsedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when an optimistic lock cannot be used in query builder.\n */\nvar OptimisticLockCanNotBeUsedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(OptimisticLockCanNotBeUsedError, _super);\n function OptimisticLockCanNotBeUsedError() {\n var _this = _super.call(this) || this;\n _this.name = \"OptimisticLockCanNotBeUsedError\";\n Object.setPrototypeOf(_this, OptimisticLockCanNotBeUsedError.prototype);\n _this.message = \"The optimistic lock can be used only with getOne() method.\";\n return _this;\n }\n return OptimisticLockCanNotBeUsedError;\n}(Error));\n\n\n//# sourceMappingURL=OptimisticLockCanNotBeUsedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js ***! - \**********************************************************************************/ -/*! exports provided: OptimisticLockVersionMismatchError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OptimisticLockVersionMismatchError\", function() { return OptimisticLockVersionMismatchError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when a version check on an object that uses optimistic locking through a version field fails.\n */\nvar OptimisticLockVersionMismatchError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(OptimisticLockVersionMismatchError, _super);\n function OptimisticLockVersionMismatchError(entity, expectedVersion, actualVersion) {\n var _this = _super.call(this) || this;\n _this.name = \"OptimisticLockVersionMismatchError\";\n Object.setPrototypeOf(_this, OptimisticLockVersionMismatchError.prototype);\n _this.message = \"The optimistic lock on entity \" + entity + \" failed, version \" + expectedVersion + \" was expected, but is actually \" + actualVersion + \".\";\n return _this;\n }\n return OptimisticLockVersionMismatchError;\n}(Error));\n\n\n//# sourceMappingURL=OptimisticLockVersionMismatchError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/PersistedEntityNotFoundError.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/PersistedEntityNotFoundError.js ***! - \****************************************************************************/ -/*! exports provided: PersistedEntityNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PersistedEntityNotFoundError\", function() { return PersistedEntityNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown . Theoretically can't be thrown.\n */\nvar PersistedEntityNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PersistedEntityNotFoundError, _super);\n function PersistedEntityNotFoundError() {\n var _this = _super.call(this) || this;\n _this.name = \"PersistedEntityNotFoundError\";\n Object.setPrototypeOf(_this, PersistedEntityNotFoundError.prototype);\n _this.message = \"Internal error. Persisted entity was not found in the list of prepared operated entities.\";\n return _this;\n }\n return PersistedEntityNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=PersistedEntityNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/PersistedEntityNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js ***! - \***************************************************************************************/ -/*! exports provided: PessimisticLockTransactionRequiredError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PessimisticLockTransactionRequiredError\", function() { return PessimisticLockTransactionRequiredError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when a transaction is required for the current operation, but there is none open.\n */\nvar PessimisticLockTransactionRequiredError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PessimisticLockTransactionRequiredError, _super);\n function PessimisticLockTransactionRequiredError() {\n var _this = _super.call(this) || this;\n _this.name = \"PessimisticLockTransactionRequiredError\";\n Object.setPrototypeOf(_this, PessimisticLockTransactionRequiredError.prototype);\n _this.message = \"An open transaction is required for pessimistic lock.\";\n return _this;\n }\n return PessimisticLockTransactionRequiredError;\n}(Error));\n\n\n//# sourceMappingURL=PessimisticLockTransactionRequiredError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/PrimaryColumnCannotBeNullableError.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/PrimaryColumnCannotBeNullableError.js ***! - \**********************************************************************************/ -/*! exports provided: PrimaryColumnCannotBeNullableError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PrimaryColumnCannotBeNullableError\", function() { return PrimaryColumnCannotBeNullableError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar PrimaryColumnCannotBeNullableError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PrimaryColumnCannotBeNullableError, _super);\n function PrimaryColumnCannotBeNullableError(object, propertyName) {\n var _this = _super.call(this) || this;\n _this.name = \"PrimaryColumnCannotBeNullableError\";\n Object.setPrototypeOf(_this, PrimaryColumnCannotBeNullableError.prototype);\n _this.message = \"Primary column \" + object.constructor.name + \"#\" + propertyName + \" cannot be nullable. \" +\n \"Its not allowed for primary keys. Try to remove nullable option.\";\n return _this;\n }\n return PrimaryColumnCannotBeNullableError;\n}(Error));\n\n\n//# sourceMappingURL=PrimaryColumnCannotBeNullableError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/PrimaryColumnCannotBeNullableError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/QueryFailedError.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/QueryFailedError.js ***! - \****************************************************************/ -/*! exports provided: QueryFailedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryFailedError\", function() { return QueryFailedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n\n\n/**\n * Thrown when query execution has failed.\n*/\nvar QueryFailedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(QueryFailedError, _super);\n function QueryFailedError(query, parameters, driverError) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, QueryFailedError.prototype);\n _this.message = driverError.toString()\n .replace(/^error: /, \"\")\n .replace(/^Error: /, \"\")\n .replace(/^Request/, \"\");\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_1__[\"ObjectUtils\"].assign(_this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, driverError), { name: \"QueryFailedError\", query: query, parameters: parameters || [] }));\n return _this;\n }\n return QueryFailedError;\n}(Error));\n\n\n//# sourceMappingURL=QueryFailedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/QueryFailedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js ***! - \*******************************************************************************/ -/*! exports provided: QueryRunnerAlreadyReleasedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryRunnerAlreadyReleasedError\", function() { return QueryRunnerAlreadyReleasedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar QueryRunnerAlreadyReleasedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(QueryRunnerAlreadyReleasedError, _super);\n function QueryRunnerAlreadyReleasedError() {\n var _this = _super.call(this) || this;\n _this.name = \"QueryRunnerAlreadyReleasedError\";\n Object.setPrototypeOf(_this, QueryRunnerAlreadyReleasedError.prototype);\n _this.message = \"Query runner already released. Cannot run queries anymore.\";\n return _this;\n }\n return QueryRunnerAlreadyReleasedError;\n}(Error));\n\n\n//# sourceMappingURL=QueryRunnerAlreadyReleasedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js ***! - \***************************************************************************************/ -/*! exports provided: QueryRunnerProviderAlreadyReleasedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryRunnerProviderAlreadyReleasedError\", function() { return QueryRunnerProviderAlreadyReleasedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when consumer tries to use query runner from query runner provider after it was released.\n */\nvar QueryRunnerProviderAlreadyReleasedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(QueryRunnerProviderAlreadyReleasedError, _super);\n function QueryRunnerProviderAlreadyReleasedError() {\n var _this = _super.call(this) || this;\n _this.name = \"QueryRunnerProviderAlreadyReleasedError\";\n Object.setPrototypeOf(_this, QueryRunnerProviderAlreadyReleasedError.prototype);\n _this.message = \"Database connection provided by a query runner was already released, cannot continue to use its querying methods anymore.\";\n return _this;\n }\n return QueryRunnerProviderAlreadyReleasedError;\n}(Error));\n\n\n//# sourceMappingURL=QueryRunnerProviderAlreadyReleasedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/RepositoryNotFoundError.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/RepositoryNotFoundError.js ***! - \***********************************************************************/ -/*! exports provided: RepositoryNotFoundError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RepositoryNotFoundError\", function() { return RepositoryNotFoundError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n\n\n/**\n * Thrown when repository for the given class is not found.\n */\nvar RepositoryNotFoundError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(RepositoryNotFoundError, _super);\n function RepositoryNotFoundError(connectionName, entityClass) {\n var _this = _super.call(this) || this;\n _this.name = \"RepositoryNotFoundError\";\n Object.setPrototypeOf(_this, RepositoryNotFoundError.prototype);\n var targetName;\n if (entityClass instanceof _index__WEBPACK_IMPORTED_MODULE_1__[\"EntitySchema\"]) {\n targetName = entityClass.options.name;\n }\n else if (typeof entityClass === \"function\") {\n targetName = entityClass.name;\n }\n else if (typeof entityClass === \"object\" && \"name\" in entityClass) {\n targetName = entityClass.name;\n }\n else {\n targetName = entityClass;\n }\n _this.message = \"No repository for \\\"\" + targetName + \"\\\" was found. Looks like this entity is not registered in \" +\n (\"current \\\"\" + connectionName + \"\\\" connection?\");\n return _this;\n }\n return RepositoryNotFoundError;\n}(Error));\n\n\n//# sourceMappingURL=RepositoryNotFoundError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/RepositoryNotFoundError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/RepositoryNotTreeError.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/RepositoryNotTreeError.js ***! - \**********************************************************************/ -/*! exports provided: RepositoryNotTreeError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RepositoryNotTreeError\", function() { return RepositoryNotTreeError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n\n\n/**\n * Thrown when repository for the given class is not found.\n */\nvar RepositoryNotTreeError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(RepositoryNotTreeError, _super);\n function RepositoryNotTreeError(entityClass) {\n var _this = _super.call(this) || this;\n _this.name = \"RepositoryNotTreeError\";\n Object.setPrototypeOf(_this, RepositoryNotTreeError.prototype);\n var targetName;\n if (entityClass instanceof _index__WEBPACK_IMPORTED_MODULE_1__[\"EntitySchema\"]) {\n targetName = entityClass.options.name;\n }\n else if (typeof entityClass === \"function\") {\n targetName = entityClass.name;\n }\n else if (typeof entityClass === \"object\" && \"name\" in entityClass) {\n targetName = entityClass.name;\n }\n else {\n targetName = entityClass;\n }\n _this.message = \"Repository of the \\\"\" + targetName + \"\\\" class is not a TreeRepository. Try to apply @Tree decorator on your entity.\";\n return _this;\n }\n return RepositoryNotTreeError;\n}(Error));\n\n\n//# sourceMappingURL=RepositoryNotTreeError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/RepositoryNotTreeError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js ***! - \***********************************************************************************/ -/*! exports provided: ReturningStatementNotSupportedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReturningStatementNotSupportedError\", function() { return ReturningStatementNotSupportedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to build a query with RETURNING / OUTPUT statement,\n * but used database does not support it.\n */\nvar ReturningStatementNotSupportedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ReturningStatementNotSupportedError, _super);\n function ReturningStatementNotSupportedError() {\n var _this = _super.call(this) || this;\n _this.name = \"ReturningStatementNotSupportedError\";\n Object.setPrototypeOf(_this, ReturningStatementNotSupportedError.prototype);\n _this.message = \"OUTPUT or RETURNING clause only supported by Microsoft SQL Server or PostgreSQL databases.\";\n return _this;\n }\n return ReturningStatementNotSupportedError;\n}(Error));\n\n\n//# sourceMappingURL=ReturningStatementNotSupportedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/SubjectRemovedAndUpdatedError.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/SubjectRemovedAndUpdatedError.js ***! - \*****************************************************************************/ -/*! exports provided: SubjectRemovedAndUpdatedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectRemovedAndUpdatedError\", function() { return SubjectRemovedAndUpdatedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when same object is scheduled for remove and updation at the same time.\n */\nvar SubjectRemovedAndUpdatedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(SubjectRemovedAndUpdatedError, _super);\n function SubjectRemovedAndUpdatedError(subject) {\n var _this = _super.call(this) || this;\n _this.name = \"SubjectRemovedAndUpdatedError\";\n Object.setPrototypeOf(_this, SubjectRemovedAndUpdatedError.prototype);\n _this.message = \"Removed entity \\\"\" + subject.metadata.name + \"\\\" is also scheduled for update operation. \" +\n \"Make sure you are not updating and removing same object (note that update or remove may be executed by cascade operations).\";\n return _this;\n }\n return SubjectRemovedAndUpdatedError;\n}(Error));\n\n\n//# sourceMappingURL=SubjectRemovedAndUpdatedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/SubjectRemovedAndUpdatedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/SubjectWithoutIdentifierError.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/SubjectWithoutIdentifierError.js ***! - \*****************************************************************************/ -/*! exports provided: SubjectWithoutIdentifierError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectWithoutIdentifierError\", function() { return SubjectWithoutIdentifierError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when operation is going to be executed on a subject without identifier.\n * This error should never be thrown, however it still presents to prevent user from updation or removing the whole table.\n * If this error occurs still, it most probably is an ORM internal problem which must be reported and fixed.\n */\nvar SubjectWithoutIdentifierError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(SubjectWithoutIdentifierError, _super);\n function SubjectWithoutIdentifierError(subject) {\n var _this = _super.call(this) || this;\n _this.name = \"SubjectWithoutIdentifierError\";\n Object.setPrototypeOf(_this, SubjectWithoutIdentifierError.prototype);\n _this.message = \"Internal error. Subject \" + subject.metadata.targetName + \" must have an identifier to perform operation. \" +\n \"Please report a github issue if you face this error.\";\n return _this;\n }\n return SubjectWithoutIdentifierError;\n}(Error));\n\n\n//# sourceMappingURL=SubjectWithoutIdentifierError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/SubjectWithoutIdentifierError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js ***! - \******************************************************************************/ -/*! exports provided: TransactionAlreadyStartedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransactionAlreadyStartedError\", function() { return TransactionAlreadyStartedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when transaction is already started and user tries to run it again.\n */\nvar TransactionAlreadyStartedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TransactionAlreadyStartedError, _super);\n function TransactionAlreadyStartedError() {\n var _this = _super.call(this) || this;\n _this.name = \"TransactionAlreadyStartedError\";\n Object.setPrototypeOf(_this, TransactionAlreadyStartedError.prototype);\n _this.message = \"Transaction already started for the given connection, commit current transaction before starting a new one.\";\n return _this;\n }\n return TransactionAlreadyStartedError;\n}(Error));\n\n\n//# sourceMappingURL=TransactionAlreadyStartedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/TransactionNotStartedError.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/TransactionNotStartedError.js ***! - \**************************************************************************/ -/*! exports provided: TransactionNotStartedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransactionNotStartedError\", function() { return TransactionNotStartedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when transaction is not started yet and user tries to run commit or rollback.\n */\nvar TransactionNotStartedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TransactionNotStartedError, _super);\n function TransactionNotStartedError() {\n var _this = _super.call(this) || this;\n _this.name = \"TransactionNotStartedError\";\n Object.setPrototypeOf(_this, TransactionNotStartedError.prototype);\n _this.message = \"Transaction is not started yet, start transaction before committing or rolling it back.\";\n return _this;\n }\n return TransactionNotStartedError;\n}(Error));\n\n\n//# sourceMappingURL=TransactionNotStartedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/TransactionNotStartedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/TreeRepositoryNotSupportedError.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/TreeRepositoryNotSupportedError.js ***! - \*******************************************************************************/ -/*! exports provided: TreeRepositoryNotSupportedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TreeRepositoryNotSupportedError\", function() { return TreeRepositoryNotSupportedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar TreeRepositoryNotSupportedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TreeRepositoryNotSupportedError, _super);\n function TreeRepositoryNotSupportedError(driver) {\n var _this = _super.call(this) || this;\n _this.name = \"TreeRepositoryNotSupportedError\";\n Object.setPrototypeOf(_this, TreeRepositoryNotSupportedError.prototype);\n _this.message = \"Tree repositories are not supported in \" + driver.options.type + \" driver.\";\n return _this;\n }\n return TreeRepositoryNotSupportedError;\n}(Error));\n\n\n//# sourceMappingURL=TreeRepositoryNotSupportedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/TreeRepositoryNotSupportedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/UpdateValuesMissingError.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/UpdateValuesMissingError.js ***! - \************************************************************************/ -/*! exports provided: UpdateValuesMissingError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UpdateValuesMissingError\", function() { return UpdateValuesMissingError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Thrown when user tries to update using QueryBuilder but do not specify what to update.\n */\nvar UpdateValuesMissingError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(UpdateValuesMissingError, _super);\n function UpdateValuesMissingError() {\n var _this = _super.call(this) || this;\n _this.name = \"UpdateValuesMissingError\";\n Object.setPrototypeOf(_this, UpdateValuesMissingError.prototype);\n _this.message = \"Cannot perform update query because update values are not defined. Call \\\"qb.set(...)\\\" method to specify updated values.\";\n return _this;\n }\n return UpdateValuesMissingError;\n}(Error));\n\n\n//# sourceMappingURL=UpdateValuesMissingError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/UpdateValuesMissingError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/UsingJoinColumnIsNotAllowedError.js": -/*!********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/UsingJoinColumnIsNotAllowedError.js ***! - \********************************************************************************/ -/*! exports provided: UsingJoinColumnIsNotAllowedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinColumnIsNotAllowedError\", function() { return UsingJoinColumnIsNotAllowedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar UsingJoinColumnIsNotAllowedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(UsingJoinColumnIsNotAllowedError, _super);\n function UsingJoinColumnIsNotAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinColumnIsNotAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinColumnIsNotAllowedError.prototype);\n _this.message = \"Using JoinColumn on \" + entityMetadata.name + \"#\" + relation.propertyName + \" is wrong. \" +\n \"You can use JoinColumn only on one-to-one and many-to-one relations.\";\n return _this;\n }\n return UsingJoinColumnIsNotAllowedError;\n}(Error));\n\n\n//# sourceMappingURL=UsingJoinColumnIsNotAllowedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/UsingJoinColumnIsNotAllowedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js": -/*!****************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js ***! - \****************************************************************************************/ -/*! exports provided: UsingJoinColumnOnlyOnOneSideAllowedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinColumnOnlyOnOneSideAllowedError\", function() { return UsingJoinColumnOnlyOnOneSideAllowedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar UsingJoinColumnOnlyOnOneSideAllowedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(UsingJoinColumnOnlyOnOneSideAllowedError, _super);\n function UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinColumnOnlyOnOneSideAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinColumnOnlyOnOneSideAllowedError.prototype);\n _this.message = \"Using JoinColumn is allowed only on one side of the one-to-one relationship. \" +\n (\"Both \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" + relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" \") +\n \"has JoinTable decorators. Choose one of them and left JoinTable decorator only on it.\";\n return _this;\n }\n return UsingJoinColumnOnlyOnOneSideAllowedError;\n}(Error));\n\n\n//# sourceMappingURL=UsingJoinColumnOnlyOnOneSideAllowedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/UsingJoinTableIsNotAllowedError.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/UsingJoinTableIsNotAllowedError.js ***! - \*******************************************************************************/ -/*! exports provided: UsingJoinTableIsNotAllowedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinTableIsNotAllowedError\", function() { return UsingJoinTableIsNotAllowedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar UsingJoinTableIsNotAllowedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(UsingJoinTableIsNotAllowedError, _super);\n function UsingJoinTableIsNotAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinTableIsNotAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinTableIsNotAllowedError.prototype);\n _this.message = \"Using JoinTable on \" + entityMetadata.name + \"#\" + relation.propertyName + \" is wrong. \" +\n (entityMetadata.name + \"#\" + relation.propertyName + \" has \" + relation.relationType + \" relation, \") +\n \"however you can use JoinTable only on many-to-many relations.\";\n return _this;\n }\n return UsingJoinTableIsNotAllowedError;\n}(Error));\n\n\n//# sourceMappingURL=UsingJoinTableIsNotAllowedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/UsingJoinTableIsNotAllowedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js ***! - \***************************************************************************************/ -/*! exports provided: UsingJoinTableOnlyOnOneSideAllowedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinTableOnlyOnOneSideAllowedError\", function() { return UsingJoinTableOnlyOnOneSideAllowedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar UsingJoinTableOnlyOnOneSideAllowedError = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(UsingJoinTableOnlyOnOneSideAllowedError, _super);\n function UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinTableOnlyOnOneSideAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinTableOnlyOnOneSideAllowedError.prototype);\n _this.message = \"Using JoinTable is allowed only on one side of the many-to-many relationship. \" +\n (\"Both \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" + relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" \") +\n \"has JoinTable decorators. Choose one of them and left JoinColumn decorator only on it.\";\n return _this;\n }\n return UsingJoinTableOnlyOnOneSideAllowedError;\n}(Error));\n\n\n//# sourceMappingURL=UsingJoinTableOnlyOnOneSideAllowedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/error/index.js": -/*!*****************************************************!*\ - !*** ./node_modules/typeorm/browser/error/index.js ***! - \*****************************************************/ -/*! exports provided: CannotReflectMethodParameterTypeError, AlreadyHasActiveConnectionError, SubjectWithoutIdentifierError, CannotConnectAlreadyConnectedError, LockNotSupportedOnGivenDriverError, ConnectionIsNotSetError, CannotCreateEntityIdMapError, MetadataAlreadyExistsError, CannotDetermineEntityError, UpdateValuesMissingError, TreeRepositoryNotSupportedError, CustomRepositoryNotFoundError, TransactionNotStartedError, TransactionAlreadyStartedError, EntityNotFoundError, EntityMetadataNotFoundError, MustBeEntityError, OptimisticLockVersionMismatchError, LimitOnUpdateNotSupportedError, PrimaryColumnCannotBeNullableError, CustomRepositoryCannotInheritRepositoryError, QueryRunnerProviderAlreadyReleasedError, CannotAttachTreeChildrenEntityError, CustomRepositoryDoesNotHaveEntityError, MissingDeleteDateColumnError, NoConnectionForRepositoryError, CircularRelationsError, ReturningStatementNotSupportedError, UsingJoinTableIsNotAllowedError, MissingJoinColumnError, MissingPrimaryColumnError, EntityColumnNotFound, MissingDriverError, DriverPackageNotInstalledError, CannotGetEntityManagerNotConnectedError, ConnectionNotFoundError, NoVersionOrUpdateDateColumnError, InsertValuesMissingError, OptimisticLockCanNotBeUsedError, MetadataWithSuchNameAlreadyExistsError, DriverOptionNotSetError, FindRelationsNotFoundError, RepositoryNotFoundError, NamingStrategyNotFoundError, PessimisticLockTransactionRequiredError, RepositoryNotTreeError, DataTypeNotSupportedError, InitializedRelationError, MissingJoinTableError, QueryFailedError, NoNeedToReleaseEntityManagerError, UsingJoinColumnOnlyOnOneSideAllowedError, UsingJoinTableOnlyOnOneSideAllowedError, SubjectRemovedAndUpdatedError, PersistedEntityNotFoundError, UsingJoinColumnIsNotAllowedError, ColumnTypeUndefinedError, QueryRunnerAlreadyReleasedError, OffsetWithoutLimitNotSupportedError, CannotExecuteNotConnectedError, NoConnectionOptionError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _CannotReflectMethodParameterTypeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CannotReflectMethodParameterTypeError */ \"./node_modules/typeorm/browser/error/CannotReflectMethodParameterTypeError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotReflectMethodParameterTypeError\", function() { return _CannotReflectMethodParameterTypeError__WEBPACK_IMPORTED_MODULE_0__[\"CannotReflectMethodParameterTypeError\"]; });\n\n/* harmony import */ var _AlreadyHasActiveConnectionError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AlreadyHasActiveConnectionError */ \"./node_modules/typeorm/browser/error/AlreadyHasActiveConnectionError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AlreadyHasActiveConnectionError\", function() { return _AlreadyHasActiveConnectionError__WEBPACK_IMPORTED_MODULE_1__[\"AlreadyHasActiveConnectionError\"]; });\n\n/* harmony import */ var _SubjectWithoutIdentifierError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SubjectWithoutIdentifierError */ \"./node_modules/typeorm/browser/error/SubjectWithoutIdentifierError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubjectWithoutIdentifierError\", function() { return _SubjectWithoutIdentifierError__WEBPACK_IMPORTED_MODULE_2__[\"SubjectWithoutIdentifierError\"]; });\n\n/* harmony import */ var _CannotConnectAlreadyConnectedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CannotConnectAlreadyConnectedError */ \"./node_modules/typeorm/browser/error/CannotConnectAlreadyConnectedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotConnectAlreadyConnectedError\", function() { return _CannotConnectAlreadyConnectedError__WEBPACK_IMPORTED_MODULE_3__[\"CannotConnectAlreadyConnectedError\"]; });\n\n/* harmony import */ var _LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./LockNotSupportedOnGivenDriverError */ \"./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LockNotSupportedOnGivenDriverError\", function() { return _LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_4__[\"LockNotSupportedOnGivenDriverError\"]; });\n\n/* harmony import */ var _ConnectionIsNotSetError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ConnectionIsNotSetError */ \"./node_modules/typeorm/browser/error/ConnectionIsNotSetError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConnectionIsNotSetError\", function() { return _ConnectionIsNotSetError__WEBPACK_IMPORTED_MODULE_5__[\"ConnectionIsNotSetError\"]; });\n\n/* harmony import */ var _CannotCreateEntityIdMapError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./CannotCreateEntityIdMapError */ \"./node_modules/typeorm/browser/error/CannotCreateEntityIdMapError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotCreateEntityIdMapError\", function() { return _CannotCreateEntityIdMapError__WEBPACK_IMPORTED_MODULE_6__[\"CannotCreateEntityIdMapError\"]; });\n\n/* harmony import */ var _MetadataAlreadyExistsError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./MetadataAlreadyExistsError */ \"./node_modules/typeorm/browser/error/MetadataAlreadyExistsError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MetadataAlreadyExistsError\", function() { return _MetadataAlreadyExistsError__WEBPACK_IMPORTED_MODULE_7__[\"MetadataAlreadyExistsError\"]; });\n\n/* harmony import */ var _CannotDetermineEntityError__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CannotDetermineEntityError */ \"./node_modules/typeorm/browser/error/CannotDetermineEntityError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotDetermineEntityError\", function() { return _CannotDetermineEntityError__WEBPACK_IMPORTED_MODULE_8__[\"CannotDetermineEntityError\"]; });\n\n/* harmony import */ var _UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./UpdateValuesMissingError */ \"./node_modules/typeorm/browser/error/UpdateValuesMissingError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdateValuesMissingError\", function() { return _UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_9__[\"UpdateValuesMissingError\"]; });\n\n/* harmony import */ var _TreeRepositoryNotSupportedError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./TreeRepositoryNotSupportedError */ \"./node_modules/typeorm/browser/error/TreeRepositoryNotSupportedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeRepositoryNotSupportedError\", function() { return _TreeRepositoryNotSupportedError__WEBPACK_IMPORTED_MODULE_10__[\"TreeRepositoryNotSupportedError\"]; });\n\n/* harmony import */ var _CustomRepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./CustomRepositoryNotFoundError */ \"./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryNotFoundError\", function() { return _CustomRepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_11__[\"CustomRepositoryNotFoundError\"]; });\n\n/* harmony import */ var _TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./TransactionNotStartedError */ \"./node_modules/typeorm/browser/error/TransactionNotStartedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransactionNotStartedError\", function() { return _TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_12__[\"TransactionNotStartedError\"]; });\n\n/* harmony import */ var _TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TransactionAlreadyStartedError */ \"./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransactionAlreadyStartedError\", function() { return _TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_13__[\"TransactionAlreadyStartedError\"]; });\n\n/* harmony import */ var _EntityNotFoundError__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./EntityNotFoundError */ \"./node_modules/typeorm/browser/error/EntityNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityNotFoundError\", function() { return _EntityNotFoundError__WEBPACK_IMPORTED_MODULE_14__[\"EntityNotFoundError\"]; });\n\n/* harmony import */ var _EntityMetadataNotFoundError__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./EntityMetadataNotFoundError */ \"./node_modules/typeorm/browser/error/EntityMetadataNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityMetadataNotFoundError\", function() { return _EntityMetadataNotFoundError__WEBPACK_IMPORTED_MODULE_15__[\"EntityMetadataNotFoundError\"]; });\n\n/* harmony import */ var _MustBeEntityError__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./MustBeEntityError */ \"./node_modules/typeorm/browser/error/MustBeEntityError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MustBeEntityError\", function() { return _MustBeEntityError__WEBPACK_IMPORTED_MODULE_16__[\"MustBeEntityError\"]; });\n\n/* harmony import */ var _OptimisticLockVersionMismatchError__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OptimisticLockVersionMismatchError */ \"./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OptimisticLockVersionMismatchError\", function() { return _OptimisticLockVersionMismatchError__WEBPACK_IMPORTED_MODULE_17__[\"OptimisticLockVersionMismatchError\"]; });\n\n/* harmony import */ var _LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./LimitOnUpdateNotSupportedError */ \"./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LimitOnUpdateNotSupportedError\", function() { return _LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_18__[\"LimitOnUpdateNotSupportedError\"]; });\n\n/* harmony import */ var _PrimaryColumnCannotBeNullableError__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./PrimaryColumnCannotBeNullableError */ \"./node_modules/typeorm/browser/error/PrimaryColumnCannotBeNullableError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PrimaryColumnCannotBeNullableError\", function() { return _PrimaryColumnCannotBeNullableError__WEBPACK_IMPORTED_MODULE_19__[\"PrimaryColumnCannotBeNullableError\"]; });\n\n/* harmony import */ var _CustomRepositoryCannotInheritRepositoryError__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CustomRepositoryCannotInheritRepositoryError */ \"./node_modules/typeorm/browser/error/CustomRepositoryCannotInheritRepositoryError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryCannotInheritRepositoryError\", function() { return _CustomRepositoryCannotInheritRepositoryError__WEBPACK_IMPORTED_MODULE_20__[\"CustomRepositoryCannotInheritRepositoryError\"]; });\n\n/* harmony import */ var _QueryRunnerProviderAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./QueryRunnerProviderAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QueryRunnerProviderAlreadyReleasedError\", function() { return _QueryRunnerProviderAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_21__[\"QueryRunnerProviderAlreadyReleasedError\"]; });\n\n/* harmony import */ var _CannotAttachTreeChildrenEntityError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CannotAttachTreeChildrenEntityError */ \"./node_modules/typeorm/browser/error/CannotAttachTreeChildrenEntityError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotAttachTreeChildrenEntityError\", function() { return _CannotAttachTreeChildrenEntityError__WEBPACK_IMPORTED_MODULE_22__[\"CannotAttachTreeChildrenEntityError\"]; });\n\n/* harmony import */ var _CustomRepositoryDoesNotHaveEntityError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./CustomRepositoryDoesNotHaveEntityError */ \"./node_modules/typeorm/browser/error/CustomRepositoryDoesNotHaveEntityError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryDoesNotHaveEntityError\", function() { return _CustomRepositoryDoesNotHaveEntityError__WEBPACK_IMPORTED_MODULE_23__[\"CustomRepositoryDoesNotHaveEntityError\"]; });\n\n/* harmony import */ var _MissingDeleteDateColumnError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./MissingDeleteDateColumnError */ \"./node_modules/typeorm/browser/error/MissingDeleteDateColumnError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingDeleteDateColumnError\", function() { return _MissingDeleteDateColumnError__WEBPACK_IMPORTED_MODULE_24__[\"MissingDeleteDateColumnError\"]; });\n\n/* harmony import */ var _NoConnectionForRepositoryError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./NoConnectionForRepositoryError */ \"./node_modules/typeorm/browser/error/NoConnectionForRepositoryError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoConnectionForRepositoryError\", function() { return _NoConnectionForRepositoryError__WEBPACK_IMPORTED_MODULE_25__[\"NoConnectionForRepositoryError\"]; });\n\n/* harmony import */ var _CircularRelationsError__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./CircularRelationsError */ \"./node_modules/typeorm/browser/error/CircularRelationsError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CircularRelationsError\", function() { return _CircularRelationsError__WEBPACK_IMPORTED_MODULE_26__[\"CircularRelationsError\"]; });\n\n/* harmony import */ var _ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./ReturningStatementNotSupportedError */ \"./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReturningStatementNotSupportedError\", function() { return _ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_27__[\"ReturningStatementNotSupportedError\"]; });\n\n/* harmony import */ var _UsingJoinTableIsNotAllowedError__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./UsingJoinTableIsNotAllowedError */ \"./node_modules/typeorm/browser/error/UsingJoinTableIsNotAllowedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinTableIsNotAllowedError\", function() { return _UsingJoinTableIsNotAllowedError__WEBPACK_IMPORTED_MODULE_28__[\"UsingJoinTableIsNotAllowedError\"]; });\n\n/* harmony import */ var _MissingJoinColumnError__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./MissingJoinColumnError */ \"./node_modules/typeorm/browser/error/MissingJoinColumnError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingJoinColumnError\", function() { return _MissingJoinColumnError__WEBPACK_IMPORTED_MODULE_29__[\"MissingJoinColumnError\"]; });\n\n/* harmony import */ var _MissingPrimaryColumnError__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./MissingPrimaryColumnError */ \"./node_modules/typeorm/browser/error/MissingPrimaryColumnError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingPrimaryColumnError\", function() { return _MissingPrimaryColumnError__WEBPACK_IMPORTED_MODULE_30__[\"MissingPrimaryColumnError\"]; });\n\n/* harmony import */ var _EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./EntityColumnNotFound */ \"./node_modules/typeorm/browser/error/EntityColumnNotFound.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityColumnNotFound\", function() { return _EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_31__[\"EntityColumnNotFound\"]; });\n\n/* harmony import */ var _MissingDriverError__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./MissingDriverError */ \"./node_modules/typeorm/browser/error/MissingDriverError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingDriverError\", function() { return _MissingDriverError__WEBPACK_IMPORTED_MODULE_32__[\"MissingDriverError\"]; });\n\n/* harmony import */ var _DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./DriverPackageNotInstalledError */ \"./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DriverPackageNotInstalledError\", function() { return _DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_33__[\"DriverPackageNotInstalledError\"]; });\n\n/* harmony import */ var _CannotGetEntityManagerNotConnectedError__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./CannotGetEntityManagerNotConnectedError */ \"./node_modules/typeorm/browser/error/CannotGetEntityManagerNotConnectedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotGetEntityManagerNotConnectedError\", function() { return _CannotGetEntityManagerNotConnectedError__WEBPACK_IMPORTED_MODULE_34__[\"CannotGetEntityManagerNotConnectedError\"]; });\n\n/* harmony import */ var _ConnectionNotFoundError__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./ConnectionNotFoundError */ \"./node_modules/typeorm/browser/error/ConnectionNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConnectionNotFoundError\", function() { return _ConnectionNotFoundError__WEBPACK_IMPORTED_MODULE_35__[\"ConnectionNotFoundError\"]; });\n\n/* harmony import */ var _NoVersionOrUpdateDateColumnError__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./NoVersionOrUpdateDateColumnError */ \"./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoVersionOrUpdateDateColumnError\", function() { return _NoVersionOrUpdateDateColumnError__WEBPACK_IMPORTED_MODULE_36__[\"NoVersionOrUpdateDateColumnError\"]; });\n\n/* harmony import */ var _InsertValuesMissingError__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./InsertValuesMissingError */ \"./node_modules/typeorm/browser/error/InsertValuesMissingError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InsertValuesMissingError\", function() { return _InsertValuesMissingError__WEBPACK_IMPORTED_MODULE_37__[\"InsertValuesMissingError\"]; });\n\n/* harmony import */ var _OptimisticLockCanNotBeUsedError__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./OptimisticLockCanNotBeUsedError */ \"./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OptimisticLockCanNotBeUsedError\", function() { return _OptimisticLockCanNotBeUsedError__WEBPACK_IMPORTED_MODULE_38__[\"OptimisticLockCanNotBeUsedError\"]; });\n\n/* harmony import */ var _MetadataWithSuchNameAlreadyExistsError__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./MetadataWithSuchNameAlreadyExistsError */ \"./node_modules/typeorm/browser/error/MetadataWithSuchNameAlreadyExistsError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MetadataWithSuchNameAlreadyExistsError\", function() { return _MetadataWithSuchNameAlreadyExistsError__WEBPACK_IMPORTED_MODULE_39__[\"MetadataWithSuchNameAlreadyExistsError\"]; });\n\n/* harmony import */ var _DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./DriverOptionNotSetError */ \"./node_modules/typeorm/browser/error/DriverOptionNotSetError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DriverOptionNotSetError\", function() { return _DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_40__[\"DriverOptionNotSetError\"]; });\n\n/* harmony import */ var _FindRelationsNotFoundError__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./FindRelationsNotFoundError */ \"./node_modules/typeorm/browser/error/FindRelationsNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FindRelationsNotFoundError\", function() { return _FindRelationsNotFoundError__WEBPACK_IMPORTED_MODULE_41__[\"FindRelationsNotFoundError\"]; });\n\n/* harmony import */ var _RepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./RepositoryNotFoundError */ \"./node_modules/typeorm/browser/error/RepositoryNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RepositoryNotFoundError\", function() { return _RepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_42__[\"RepositoryNotFoundError\"]; });\n\n/* harmony import */ var _NamingStrategyNotFoundError__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./NamingStrategyNotFoundError */ \"./node_modules/typeorm/browser/error/NamingStrategyNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamingStrategyNotFoundError\", function() { return _NamingStrategyNotFoundError__WEBPACK_IMPORTED_MODULE_43__[\"NamingStrategyNotFoundError\"]; });\n\n/* harmony import */ var _PessimisticLockTransactionRequiredError__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./PessimisticLockTransactionRequiredError */ \"./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PessimisticLockTransactionRequiredError\", function() { return _PessimisticLockTransactionRequiredError__WEBPACK_IMPORTED_MODULE_44__[\"PessimisticLockTransactionRequiredError\"]; });\n\n/* harmony import */ var _RepositoryNotTreeError__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./RepositoryNotTreeError */ \"./node_modules/typeorm/browser/error/RepositoryNotTreeError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RepositoryNotTreeError\", function() { return _RepositoryNotTreeError__WEBPACK_IMPORTED_MODULE_45__[\"RepositoryNotTreeError\"]; });\n\n/* harmony import */ var _DataTypeNotSupportedError__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./DataTypeNotSupportedError */ \"./node_modules/typeorm/browser/error/DataTypeNotSupportedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DataTypeNotSupportedError\", function() { return _DataTypeNotSupportedError__WEBPACK_IMPORTED_MODULE_46__[\"DataTypeNotSupportedError\"]; });\n\n/* harmony import */ var _InitializedRelationError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./InitializedRelationError */ \"./node_modules/typeorm/browser/error/InitializedRelationError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InitializedRelationError\", function() { return _InitializedRelationError__WEBPACK_IMPORTED_MODULE_47__[\"InitializedRelationError\"]; });\n\n/* harmony import */ var _MissingJoinTableError__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./MissingJoinTableError */ \"./node_modules/typeorm/browser/error/MissingJoinTableError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingJoinTableError\", function() { return _MissingJoinTableError__WEBPACK_IMPORTED_MODULE_48__[\"MissingJoinTableError\"]; });\n\n/* harmony import */ var _QueryFailedError__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./QueryFailedError */ \"./node_modules/typeorm/browser/error/QueryFailedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QueryFailedError\", function() { return _QueryFailedError__WEBPACK_IMPORTED_MODULE_49__[\"QueryFailedError\"]; });\n\n/* harmony import */ var _NoNeedToReleaseEntityManagerError__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./NoNeedToReleaseEntityManagerError */ \"./node_modules/typeorm/browser/error/NoNeedToReleaseEntityManagerError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoNeedToReleaseEntityManagerError\", function() { return _NoNeedToReleaseEntityManagerError__WEBPACK_IMPORTED_MODULE_50__[\"NoNeedToReleaseEntityManagerError\"]; });\n\n/* harmony import */ var _UsingJoinColumnOnlyOnOneSideAllowedError__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./UsingJoinColumnOnlyOnOneSideAllowedError */ \"./node_modules/typeorm/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinColumnOnlyOnOneSideAllowedError\", function() { return _UsingJoinColumnOnlyOnOneSideAllowedError__WEBPACK_IMPORTED_MODULE_51__[\"UsingJoinColumnOnlyOnOneSideAllowedError\"]; });\n\n/* harmony import */ var _UsingJoinTableOnlyOnOneSideAllowedError__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./UsingJoinTableOnlyOnOneSideAllowedError */ \"./node_modules/typeorm/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinTableOnlyOnOneSideAllowedError\", function() { return _UsingJoinTableOnlyOnOneSideAllowedError__WEBPACK_IMPORTED_MODULE_52__[\"UsingJoinTableOnlyOnOneSideAllowedError\"]; });\n\n/* harmony import */ var _SubjectRemovedAndUpdatedError__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./SubjectRemovedAndUpdatedError */ \"./node_modules/typeorm/browser/error/SubjectRemovedAndUpdatedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubjectRemovedAndUpdatedError\", function() { return _SubjectRemovedAndUpdatedError__WEBPACK_IMPORTED_MODULE_53__[\"SubjectRemovedAndUpdatedError\"]; });\n\n/* harmony import */ var _PersistedEntityNotFoundError__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./PersistedEntityNotFoundError */ \"./node_modules/typeorm/browser/error/PersistedEntityNotFoundError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PersistedEntityNotFoundError\", function() { return _PersistedEntityNotFoundError__WEBPACK_IMPORTED_MODULE_54__[\"PersistedEntityNotFoundError\"]; });\n\n/* harmony import */ var _UsingJoinColumnIsNotAllowedError__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./UsingJoinColumnIsNotAllowedError */ \"./node_modules/typeorm/browser/error/UsingJoinColumnIsNotAllowedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinColumnIsNotAllowedError\", function() { return _UsingJoinColumnIsNotAllowedError__WEBPACK_IMPORTED_MODULE_55__[\"UsingJoinColumnIsNotAllowedError\"]; });\n\n/* harmony import */ var _ColumnTypeUndefinedError__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./ColumnTypeUndefinedError */ \"./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColumnTypeUndefinedError\", function() { return _ColumnTypeUndefinedError__WEBPACK_IMPORTED_MODULE_56__[\"ColumnTypeUndefinedError\"]; });\n\n/* harmony import */ var _QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./QueryRunnerAlreadyReleasedError */ \"./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QueryRunnerAlreadyReleasedError\", function() { return _QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_57__[\"QueryRunnerAlreadyReleasedError\"]; });\n\n/* harmony import */ var _OffsetWithoutLimitNotSupportedError__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./OffsetWithoutLimitNotSupportedError */ \"./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OffsetWithoutLimitNotSupportedError\", function() { return _OffsetWithoutLimitNotSupportedError__WEBPACK_IMPORTED_MODULE_58__[\"OffsetWithoutLimitNotSupportedError\"]; });\n\n/* harmony import */ var _CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./CannotExecuteNotConnectedError */ \"./node_modules/typeorm/browser/error/CannotExecuteNotConnectedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotExecuteNotConnectedError\", function() { return _CannotExecuteNotConnectedError__WEBPACK_IMPORTED_MODULE_59__[\"CannotExecuteNotConnectedError\"]; });\n\n/* harmony import */ var _NoConnectionOptionError__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./NoConnectionOptionError */ \"./node_modules/typeorm/browser/error/NoConnectionOptionError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoConnectionOptionError\", function() { return _NoConnectionOptionError__WEBPACK_IMPORTED_MODULE_60__[\"NoConnectionOptionError\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/error/index.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/FindConditions.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/FindConditions.js ***! - \*********************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=FindConditions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/FindConditions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/FindManyOptions.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/FindManyOptions.js ***! - \**********************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=FindManyOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/FindManyOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/FindOneOptions.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/FindOneOptions.js ***! - \*********************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=FindOneOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/FindOneOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/FindOperator.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/FindOperator.js ***! - \*******************************************************************/ -/*! exports provided: FindOperator */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FindOperator\", function() { return FindOperator; });\n/**\n * Find Operator used in Find Conditions.\n */\nvar FindOperator = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function FindOperator(type, value, useParameter, multipleParameters, getSql, objectLiteralParameters) {\n if (useParameter === void 0) { useParameter = true; }\n if (multipleParameters === void 0) { multipleParameters = false; }\n this._type = type;\n this._value = value;\n this._useParameter = useParameter;\n this._multipleParameters = multipleParameters;\n this._getSql = getSql;\n this._objectLiteralParameters = objectLiteralParameters;\n }\n Object.defineProperty(FindOperator.prototype, \"useParameter\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Indicates if parameter is used or not for this operator.\n * Extracts final value if value is another find operator.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.useParameter;\n return this._useParameter;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"multipleParameters\", {\n /**\n * Indicates if multiple parameters must be used for this operator.\n * Extracts final value if value is another find operator.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.multipleParameters;\n return this._multipleParameters;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"type\", {\n /**\n * Gets the Type of this FindOperator\n */\n get: function () {\n return this._type;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"value\", {\n /**\n * Gets the final value needs to be used as parameter value.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.value;\n return this._value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"objectLiteralParameters\", {\n /**\n * Gets ObjectLiteral parameters.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.objectLiteralParameters;\n return this._objectLiteralParameters;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"child\", {\n /**\n * Gets the child FindOperator if it exists\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value;\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"getSql\", {\n /**\n * Gets the SQL generator\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.getSql;\n return this._getSql;\n },\n enumerable: false,\n configurable: true\n });\n return FindOperator;\n}());\n\n\n//# sourceMappingURL=FindOperator.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/FindOperator.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/FindOperatorType.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/FindOperatorType.js ***! - \***********************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=FindOperatorType.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/FindOperatorType.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/FindOptionsUtils.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/FindOptionsUtils.js ***! - \***********************************************************************/ -/*! exports provided: FindOptionsUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FindOptionsUtils\", function() { return FindOptionsUtils; });\n/* harmony import */ var _error_FindRelationsNotFoundError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/FindRelationsNotFoundError */ \"./node_modules/typeorm/browser/error/FindRelationsNotFoundError.js\");\n/* harmony import */ var _util_StringUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/StringUtils */ \"./node_modules/typeorm/browser/util/StringUtils.js\");\n\n\n/**\n * Utilities to work with FindOptions.\n */\nvar FindOptionsUtils = /** @class */ (function () {\n function FindOptionsUtils() {\n }\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if given object is really instance of FindOneOptions interface.\n */\n FindOptionsUtils.isFindOneOptions = function (obj) {\n var possibleOptions = obj;\n return possibleOptions &&\n (Array.isArray(possibleOptions.select) ||\n possibleOptions.where instanceof Object ||\n typeof possibleOptions.where === \"string\" ||\n Array.isArray(possibleOptions.relations) ||\n possibleOptions.join instanceof Object ||\n possibleOptions.order instanceof Object ||\n possibleOptions.cache instanceof Object ||\n typeof possibleOptions.cache === \"boolean\" ||\n typeof possibleOptions.cache === \"number\" ||\n possibleOptions.lock instanceof Object ||\n possibleOptions.loadRelationIds instanceof Object ||\n typeof possibleOptions.loadRelationIds === \"boolean\" ||\n typeof possibleOptions.loadEagerRelations === \"boolean\" ||\n typeof possibleOptions.withDeleted === \"boolean\" ||\n typeof possibleOptions.transaction === \"boolean\");\n };\n /**\n * Checks if given object is really instance of FindManyOptions interface.\n */\n FindOptionsUtils.isFindManyOptions = function (obj) {\n var possibleOptions = obj;\n return possibleOptions && (this.isFindOneOptions(possibleOptions) ||\n typeof possibleOptions.skip === \"number\" ||\n typeof possibleOptions.take === \"number\" ||\n typeof possibleOptions.skip === \"string\" ||\n typeof possibleOptions.take === \"string\");\n };\n /**\n * Checks if given object is really instance of FindOptions interface.\n */\n FindOptionsUtils.extractFindManyOptionsAlias = function (object) {\n if (this.isFindManyOptions(object) && object.join)\n return object.join.alias;\n return undefined;\n };\n /**\n * Applies give find many options to the given query builder.\n */\n FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder = function (qb, options) {\n if (this.isFindManyOptions(options))\n return this.applyOptionsToQueryBuilder(qb, options);\n if (options)\n return qb.where(options);\n return qb;\n };\n /**\n * Applies give find options to the given query builder.\n */\n FindOptionsUtils.applyOptionsToQueryBuilder = function (qb, options) {\n // if options are not set then simply return query builder. This is made for simplicity of usage.\n if (!options || (!this.isFindOneOptions(options) && !this.isFindManyOptions(options)))\n return qb;\n if (options.transaction === true) {\n qb.expressionMap.useTransaction = true;\n }\n if (!qb.expressionMap.mainAlias || !qb.expressionMap.mainAlias.hasMetadata)\n return qb;\n var metadata = qb.expressionMap.mainAlias.metadata;\n // apply all options from FindOptions\n if (options.select) {\n qb.select([]);\n options.select.forEach(function (select) {\n if (!metadata.findColumnWithPropertyPath(String(select)))\n throw new Error(select + \" column was not found in the \" + metadata.name + \" entity.\");\n qb.addSelect(qb.alias + \".\" + select);\n });\n }\n if (options.where)\n qb.where(options.where);\n if (options.skip)\n qb.skip(options.skip);\n if (options.take)\n qb.take(options.take);\n if (options.order)\n Object.keys(options.order).forEach(function (key) {\n var order = options.order[key];\n if (!metadata.findColumnWithPropertyPath(key))\n throw new Error(key + \" column was not found in the \" + metadata.name + \" entity.\");\n switch (order) {\n case 1:\n qb.addOrderBy(qb.alias + \".\" + key, \"ASC\");\n break;\n case -1:\n qb.addOrderBy(qb.alias + \".\" + key, \"DESC\");\n break;\n case \"ASC\":\n qb.addOrderBy(qb.alias + \".\" + key, \"ASC\");\n break;\n case \"DESC\":\n qb.addOrderBy(qb.alias + \".\" + key, \"DESC\");\n break;\n }\n });\n if (options.relations) {\n var allRelations = options.relations.map(function (relation) { return relation; });\n this.applyRelationsRecursively(qb, allRelations, qb.expressionMap.mainAlias.name, qb.expressionMap.mainAlias.metadata, \"\");\n // recursive removes found relations from allRelations array\n // if there are relations left in this array it means those relations were not found in the entity structure\n // so, we give an exception about not found relations\n if (allRelations.length > 0)\n throw new _error_FindRelationsNotFoundError__WEBPACK_IMPORTED_MODULE_0__[\"FindRelationsNotFoundError\"](allRelations);\n }\n if (options.join) {\n if (options.join.leftJoin)\n Object.keys(options.join.leftJoin).forEach(function (key) {\n qb.leftJoin(options.join.leftJoin[key], key);\n });\n if (options.join.innerJoin)\n Object.keys(options.join.innerJoin).forEach(function (key) {\n qb.innerJoin(options.join.innerJoin[key], key);\n });\n if (options.join.leftJoinAndSelect)\n Object.keys(options.join.leftJoinAndSelect).forEach(function (key) {\n qb.leftJoinAndSelect(options.join.leftJoinAndSelect[key], key);\n });\n if (options.join.innerJoinAndSelect)\n Object.keys(options.join.innerJoinAndSelect).forEach(function (key) {\n qb.innerJoinAndSelect(options.join.innerJoinAndSelect[key], key);\n });\n }\n if (options.cache) {\n if (options.cache instanceof Object) {\n var cache = options.cache;\n qb.cache(cache.id, cache.milliseconds);\n }\n else {\n qb.cache(options.cache);\n }\n }\n if (options.lock) {\n if (options.lock.mode === \"optimistic\") {\n qb.setLock(options.lock.mode, options.lock.version);\n }\n else if (options.lock.mode === \"pessimistic_read\" || options.lock.mode === \"pessimistic_write\" || options.lock.mode === \"dirty_read\" || options.lock.mode === \"pessimistic_partial_write\" || options.lock.mode === \"pessimistic_write_or_fail\") {\n var tableNames = options.lock.tables ? options.lock.tables.map(function (table) {\n var tableAlias = qb.expressionMap.aliases.find(function (alias) {\n return alias.metadata.tableNameWithoutPrefix === table;\n });\n if (!tableAlias) {\n throw new Error(\"\\\"\" + table + \"\\\" is not part of this query\");\n }\n return qb.escape(tableAlias.name);\n }) : undefined;\n qb.setLock(options.lock.mode, undefined, tableNames);\n }\n }\n if (options.withDeleted) {\n qb.withDeleted();\n }\n if (options.loadRelationIds === true) {\n qb.loadAllRelationIds();\n }\n else if (options.loadRelationIds instanceof Object) {\n qb.loadAllRelationIds(options.loadRelationIds);\n }\n return qb;\n };\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n /**\n * Adds joins for all relations and sub-relations of the given relations provided in the find options.\n */\n FindOptionsUtils.applyRelationsRecursively = function (qb, allRelations, alias, metadata, prefix) {\n var _this = this;\n // find all relations that match given prefix\n var matchedBaseRelations = [];\n if (prefix) {\n var regexp_1 = new RegExp(\"^\" + prefix.replace(\".\", \"\\\\.\") + \"\\\\.\");\n matchedBaseRelations = allRelations\n .filter(function (relation) { return relation.match(regexp_1); })\n .map(function (relation) { return relation.replace(regexp_1, \"\"); })\n .filter(function (relation) { return metadata.findRelationWithPropertyPath(relation); });\n }\n else {\n matchedBaseRelations = allRelations.filter(function (relation) { return metadata.findRelationWithPropertyPath(relation); });\n }\n // go through all matched relations and add join for them\n matchedBaseRelations.forEach(function (relation) {\n // generate a relation alias\n var relationAlias = alias + \"__\" + relation;\n // shorten it if needed by the driver\n if (qb.connection.driver.maxAliasLength && relationAlias.length > qb.connection.driver.maxAliasLength) {\n relationAlias = Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_1__[\"shorten\"])(relationAlias);\n }\n // add a join for the found relation\n var selection = alias + \".\" + relation;\n qb.leftJoinAndSelect(selection, relationAlias);\n // join the eager relations of the found relation\n var relMetadata = metadata.relations.find(function (metadata) { return metadata.propertyName === relation; });\n if (relMetadata) {\n _this.joinEagerRelations(qb, relationAlias, relMetadata.inverseEntityMetadata);\n }\n // remove added relations from the allRelations array, this is needed to find all not found relations at the end\n allRelations.splice(allRelations.indexOf(prefix ? prefix + \".\" + relation : relation), 1);\n // try to find sub-relations\n var join = qb.expressionMap.joinAttributes.find(function (join) { return join.entityOrProperty === selection; });\n _this.applyRelationsRecursively(qb, allRelations, join.alias.name, join.metadata, prefix ? prefix + \".\" + relation : relation);\n });\n };\n FindOptionsUtils.joinEagerRelations = function (qb, alias, metadata) {\n var _this = this;\n metadata.eagerRelations.forEach(function (relation) {\n var relationAlias = qb.connection.namingStrategy.eagerJoinRelationAlias(alias, relation.propertyPath);\n qb.leftJoinAndSelect(alias + \".\" + relation.propertyPath, relationAlias);\n _this.joinEagerRelations(qb, relationAlias, relation.inverseEntityMetadata);\n });\n };\n return FindOptionsUtils;\n}());\n\n\n//# sourceMappingURL=FindOptionsUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/FindOptionsUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/JoinOptions.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/JoinOptions.js ***! - \******************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=JoinOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/JoinOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/OrderByCondition.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/OrderByCondition.js ***! - \***********************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=OrderByCondition.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/OrderByCondition.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/Any.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/Any.js ***! - \*******************************************************************/ -/*! exports provided: Any */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Any\", function() { return Any; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: Any([...]) }\n */\nfunction Any(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"any\", value);\n}\n\n//# sourceMappingURL=Any.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/Any.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/Between.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/Between.js ***! - \***********************************************************************/ -/*! exports provided: Between */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Between\", function() { return Between; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: Between(x, y) }\n */\nfunction Between(from, to) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"between\", [from, to], true, true);\n}\n\n//# sourceMappingURL=Between.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/Between.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/Equal.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/Equal.js ***! - \*********************************************************************/ -/*! exports provided: Equal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Equal\", function() { return Equal; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: Equal(\"value\") }\n */\nfunction Equal(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"equal\", value);\n}\n\n//# sourceMappingURL=Equal.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/Equal.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/ILike.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/ILike.js ***! - \*********************************************************************/ -/*! exports provided: ILike */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ILike\", function() { return ILike; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: ILike(\"%SOME string%\") }\n */\nfunction ILike(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"ilike\", value);\n}\n\n//# sourceMappingURL=ILike.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/ILike.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/In.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/In.js ***! - \******************************************************************/ -/*! exports provided: In */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"In\", function() { return In; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: In([...]) }\n */\nfunction In(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"in\", value, true, true);\n}\n\n//# sourceMappingURL=In.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/In.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/IsNull.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/IsNull.js ***! - \**********************************************************************/ -/*! exports provided: IsNull */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IsNull\", function() { return IsNull; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: IsNull() }\n */\nfunction IsNull() {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"isNull\", undefined, false);\n}\n\n//# sourceMappingURL=IsNull.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/IsNull.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/LessThan.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/LessThan.js ***! - \************************************************************************/ -/*! exports provided: LessThan */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LessThan\", function() { return LessThan; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: LessThan(10) }\n */\nfunction LessThan(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"lessThan\", value);\n}\n\n//# sourceMappingURL=LessThan.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/LessThan.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/LessThanOrEqual.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/LessThanOrEqual.js ***! - \*******************************************************************************/ -/*! exports provided: LessThanOrEqual */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LessThanOrEqual\", function() { return LessThanOrEqual; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: LessThanOrEqual(10) }\n */\nfunction LessThanOrEqual(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"lessThanOrEqual\", value);\n}\n\n//# sourceMappingURL=LessThanOrEqual.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/LessThanOrEqual.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/Like.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/Like.js ***! - \********************************************************************/ -/*! exports provided: Like */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Like\", function() { return Like; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: Like(\"%some sting%\") }\n */\nfunction Like(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"like\", value);\n}\n\n//# sourceMappingURL=Like.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/Like.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/MoreThan.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/MoreThan.js ***! - \************************************************************************/ -/*! exports provided: MoreThan */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MoreThan\", function() { return MoreThan; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: MoreThan(10) }\n */\nfunction MoreThan(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"moreThan\", value);\n}\n\n//# sourceMappingURL=MoreThan.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/MoreThan.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/MoreThanOrEqual.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/MoreThanOrEqual.js ***! - \*******************************************************************************/ -/*! exports provided: MoreThanOrEqual */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MoreThanOrEqual\", function() { return MoreThanOrEqual; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Example: { someField: MoreThanOrEqual(10) }\n */\nfunction MoreThanOrEqual(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"moreThanOrEqual\", value);\n}\n\n//# sourceMappingURL=MoreThanOrEqual.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/MoreThanOrEqual.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/Not.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/Not.js ***! - \*******************************************************************/ -/*! exports provided: Not */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Not\", function() { return Not; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\n/**\n * Find Options Operator.\n * Used to negotiate expression.\n * Example: { title: not(\"hello\") } will return entities where title not equal to \"hello\".\n */\nfunction Not(value) {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"not\", value);\n}\n\n//# sourceMappingURL=Not.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/Not.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/find-options/operator/Raw.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/find-options/operator/Raw.js ***! - \*******************************************************************/ -/*! exports provided: Raw */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Raw\", function() { return Raw; });\n/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n\nfunction Raw(valueOrSqlGenerator, sqlGeneratorParameters) {\n if (typeof valueOrSqlGenerator !== 'function') {\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"raw\", valueOrSqlGenerator, false);\n }\n return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[\"FindOperator\"](\"raw\", [], true, true, valueOrSqlGenerator, sqlGeneratorParameters);\n}\n\n//# sourceMappingURL=Raw.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/find-options/operator/Raw.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/index.js": -/*!***********************************************!*\ - !*** ./node_modules/typeorm/browser/index.js ***! - \***********************************************/ -/*! exports provided: useContainer, getFromContainer, CannotReflectMethodParameterTypeError, AlreadyHasActiveConnectionError, SubjectWithoutIdentifierError, CannotConnectAlreadyConnectedError, LockNotSupportedOnGivenDriverError, ConnectionIsNotSetError, CannotCreateEntityIdMapError, MetadataAlreadyExistsError, CannotDetermineEntityError, UpdateValuesMissingError, TreeRepositoryNotSupportedError, CustomRepositoryNotFoundError, TransactionNotStartedError, TransactionAlreadyStartedError, EntityNotFoundError, EntityMetadataNotFoundError, MustBeEntityError, OptimisticLockVersionMismatchError, LimitOnUpdateNotSupportedError, PrimaryColumnCannotBeNullableError, CustomRepositoryCannotInheritRepositoryError, QueryRunnerProviderAlreadyReleasedError, CannotAttachTreeChildrenEntityError, CustomRepositoryDoesNotHaveEntityError, MissingDeleteDateColumnError, NoConnectionForRepositoryError, CircularRelationsError, ReturningStatementNotSupportedError, UsingJoinTableIsNotAllowedError, MissingJoinColumnError, MissingPrimaryColumnError, EntityColumnNotFound, MissingDriverError, DriverPackageNotInstalledError, CannotGetEntityManagerNotConnectedError, ConnectionNotFoundError, NoVersionOrUpdateDateColumnError, InsertValuesMissingError, OptimisticLockCanNotBeUsedError, MetadataWithSuchNameAlreadyExistsError, DriverOptionNotSetError, FindRelationsNotFoundError, RepositoryNotFoundError, NamingStrategyNotFoundError, PessimisticLockTransactionRequiredError, RepositoryNotTreeError, DataTypeNotSupportedError, InitializedRelationError, MissingJoinTableError, QueryFailedError, NoNeedToReleaseEntityManagerError, UsingJoinColumnOnlyOnOneSideAllowedError, UsingJoinTableOnlyOnOneSideAllowedError, SubjectRemovedAndUpdatedError, PersistedEntityNotFoundError, UsingJoinColumnIsNotAllowedError, ColumnTypeUndefinedError, QueryRunnerAlreadyReleasedError, OffsetWithoutLimitNotSupportedError, CannotExecuteNotConnectedError, NoConnectionOptionError, Column, CreateDateColumn, DeleteDateColumn, PrimaryGeneratedColumn, PrimaryColumn, UpdateDateColumn, VersionColumn, ViewColumn, ObjectIdColumn, AfterInsert, AfterLoad, AfterRemove, AfterUpdate, BeforeInsert, BeforeRemove, BeforeUpdate, EventSubscriber, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToMany, OneToOne, RelationCount, RelationId, Entity, ChildEntity, TableInheritance, ViewEntity, Transaction, TransactionManager, TransactionRepository, TreeLevelColumn, TreeParent, TreeChildren, Tree, Index, Unique, Check, Exclusion, Generated, EntityRepository, Any, Between, Equal, In, IsNull, LessThan, LessThanOrEqual, ILike, Like, MoreThan, MoreThanOrEqual, Not, Raw, FindOperator, FindOptionsUtils, AdvancedConsoleLogger, SimpleConsoleLogger, DummyLogger, FileLogger, EntityMetadata, EntityManager, AbstractRepository, Repository, BaseEntity, TreeRepository, MongoDriver, MongoQueryRunner, MongoRepository, PostgresDriver, AuroraDataApiDriver, CockroachDriver, AuroraDataApiPostgresDriver, SqlServerDriver, SapDriver, MysqlDriver, OracleDriver, SqliteDriver, BetterSqlite3Driver, TableCheck, TableColumn, TableExclusion, TableForeignKey, TableIndex, TableUnique, Table, MssqlParameter, ConnectionOptionsReader, Connection, ConnectionManager, QueryBuilder, SelectQueryBuilder, DeleteQueryBuilder, InsertQueryBuilder, UpdateQueryBuilder, RelationQueryBuilder, Brackets, InsertResult, UpdateResult, DeleteResult, MongoEntityManager, Migration, MigrationExecutor, DefaultNamingStrategy, EntitySchema, getMetadataArgsStorage, getConnectionOptions, getConnectionManager, createConnection, createConnections, getConnection, getManager, getMongoManager, getSqljsManager, getRepository, getTreeRepository, getCustomRepository, getMongoRepository, createQueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMetadataArgsStorage\", function() { return getMetadataArgsStorage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getConnectionOptions\", function() { return getConnectionOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getConnectionManager\", function() { return getConnectionManager; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createConnection\", function() { return createConnection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createConnections\", function() { return createConnections; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getConnection\", function() { return getConnection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getManager\", function() { return getManager; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMongoManager\", function() { return getMongoManager; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSqljsManager\", function() { return getSqljsManager; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRepository\", function() { return getRepository; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTreeRepository\", function() { return getTreeRepository; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCustomRepository\", function() { return getCustomRepository; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMongoRepository\", function() { return getMongoRepository; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createQueryBuilder\", function() { return createQueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _connection_ConnectionManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./connection/ConnectionManager */ \"./node_modules/typeorm/browser/connection/ConnectionManager.js\");\n/* harmony import */ var _metadata_args_MetadataArgsStorage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./metadata-args/MetadataArgsStorage */ \"./node_modules/typeorm/browser/metadata-args/MetadataArgsStorage.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./container */ \"./node_modules/typeorm/browser/container.js\");\n/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./platform/PlatformTools */ \"./node_modules/typeorm/browser/platform/BrowserPlatformTools.js\");\n/* harmony import */ var _connection_ConnectionOptionsReader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./connection/ConnectionOptionsReader */ \"./node_modules/typeorm/browser/platform/BrowserConnectionOptionsReaderDummy.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useContainer\", function() { return _container__WEBPACK_IMPORTED_MODULE_4__[\"useContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getFromContainer\", function() { return _container__WEBPACK_IMPORTED_MODULE_4__[\"getFromContainer\"]; });\n\n/* harmony import */ var _common_EntityTarget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./common/EntityTarget */ \"./node_modules/typeorm/browser/common/EntityTarget.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _common_ObjectType__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./common/ObjectType */ \"./node_modules/typeorm/browser/common/ObjectType.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _common_ObjectLiteral__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./common/ObjectLiteral */ \"./node_modules/typeorm/browser/common/ObjectLiteral.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _common_DeepPartial__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./common/DeepPartial */ \"./node_modules/typeorm/browser/common/DeepPartial.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./error */ \"./node_modules/typeorm/browser/error/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotReflectMethodParameterTypeError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CannotReflectMethodParameterTypeError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AlreadyHasActiveConnectionError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"AlreadyHasActiveConnectionError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubjectWithoutIdentifierError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"SubjectWithoutIdentifierError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotConnectAlreadyConnectedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CannotConnectAlreadyConnectedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LockNotSupportedOnGivenDriverError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"LockNotSupportedOnGivenDriverError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConnectionIsNotSetError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"ConnectionIsNotSetError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotCreateEntityIdMapError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CannotCreateEntityIdMapError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MetadataAlreadyExistsError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MetadataAlreadyExistsError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotDetermineEntityError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CannotDetermineEntityError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdateValuesMissingError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"UpdateValuesMissingError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeRepositoryNotSupportedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"TreeRepositoryNotSupportedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CustomRepositoryNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransactionNotStartedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"TransactionNotStartedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransactionAlreadyStartedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"TransactionAlreadyStartedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"EntityNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityMetadataNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"EntityMetadataNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MustBeEntityError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MustBeEntityError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OptimisticLockVersionMismatchError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"OptimisticLockVersionMismatchError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LimitOnUpdateNotSupportedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"LimitOnUpdateNotSupportedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PrimaryColumnCannotBeNullableError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"PrimaryColumnCannotBeNullableError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryCannotInheritRepositoryError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CustomRepositoryCannotInheritRepositoryError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QueryRunnerProviderAlreadyReleasedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"QueryRunnerProviderAlreadyReleasedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotAttachTreeChildrenEntityError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CannotAttachTreeChildrenEntityError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomRepositoryDoesNotHaveEntityError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CustomRepositoryDoesNotHaveEntityError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingDeleteDateColumnError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MissingDeleteDateColumnError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoConnectionForRepositoryError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"NoConnectionForRepositoryError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CircularRelationsError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CircularRelationsError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReturningStatementNotSupportedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"ReturningStatementNotSupportedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinTableIsNotAllowedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"UsingJoinTableIsNotAllowedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingJoinColumnError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MissingJoinColumnError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingPrimaryColumnError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MissingPrimaryColumnError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityColumnNotFound\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"EntityColumnNotFound\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingDriverError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MissingDriverError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DriverPackageNotInstalledError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"DriverPackageNotInstalledError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotGetEntityManagerNotConnectedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CannotGetEntityManagerNotConnectedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConnectionNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"ConnectionNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoVersionOrUpdateDateColumnError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"NoVersionOrUpdateDateColumnError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InsertValuesMissingError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"InsertValuesMissingError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OptimisticLockCanNotBeUsedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"OptimisticLockCanNotBeUsedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MetadataWithSuchNameAlreadyExistsError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MetadataWithSuchNameAlreadyExistsError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DriverOptionNotSetError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"DriverOptionNotSetError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FindRelationsNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"FindRelationsNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RepositoryNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"RepositoryNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamingStrategyNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"NamingStrategyNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PessimisticLockTransactionRequiredError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"PessimisticLockTransactionRequiredError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RepositoryNotTreeError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"RepositoryNotTreeError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DataTypeNotSupportedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"DataTypeNotSupportedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InitializedRelationError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"InitializedRelationError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MissingJoinTableError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"MissingJoinTableError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QueryFailedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"QueryFailedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoNeedToReleaseEntityManagerError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"NoNeedToReleaseEntityManagerError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinColumnOnlyOnOneSideAllowedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"UsingJoinColumnOnlyOnOneSideAllowedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinTableOnlyOnOneSideAllowedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"UsingJoinTableOnlyOnOneSideAllowedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubjectRemovedAndUpdatedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"SubjectRemovedAndUpdatedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PersistedEntityNotFoundError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"PersistedEntityNotFoundError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UsingJoinColumnIsNotAllowedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"UsingJoinColumnIsNotAllowedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColumnTypeUndefinedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"ColumnTypeUndefinedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QueryRunnerAlreadyReleasedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"QueryRunnerAlreadyReleasedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OffsetWithoutLimitNotSupportedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"OffsetWithoutLimitNotSupportedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CannotExecuteNotConnectedError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"CannotExecuteNotConnectedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoConnectionOptionError\", function() { return _error__WEBPACK_IMPORTED_MODULE_11__[\"NoConnectionOptionError\"]; });\n\n/* harmony import */ var _decorator_columns_Column__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./decorator/columns/Column */ \"./node_modules/typeorm/browser/decorator/columns/Column.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Column\", function() { return _decorator_columns_Column__WEBPACK_IMPORTED_MODULE_12__[\"Column\"]; });\n\n/* harmony import */ var _decorator_columns_CreateDateColumn__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./decorator/columns/CreateDateColumn */ \"./node_modules/typeorm/browser/decorator/columns/CreateDateColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CreateDateColumn\", function() { return _decorator_columns_CreateDateColumn__WEBPACK_IMPORTED_MODULE_13__[\"CreateDateColumn\"]; });\n\n/* harmony import */ var _decorator_columns_DeleteDateColumn__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./decorator/columns/DeleteDateColumn */ \"./node_modules/typeorm/browser/decorator/columns/DeleteDateColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DeleteDateColumn\", function() { return _decorator_columns_DeleteDateColumn__WEBPACK_IMPORTED_MODULE_14__[\"DeleteDateColumn\"]; });\n\n/* harmony import */ var _decorator_columns_PrimaryGeneratedColumn__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./decorator/columns/PrimaryGeneratedColumn */ \"./node_modules/typeorm/browser/decorator/columns/PrimaryGeneratedColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PrimaryGeneratedColumn\", function() { return _decorator_columns_PrimaryGeneratedColumn__WEBPACK_IMPORTED_MODULE_15__[\"PrimaryGeneratedColumn\"]; });\n\n/* harmony import */ var _decorator_columns_PrimaryColumn__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./decorator/columns/PrimaryColumn */ \"./node_modules/typeorm/browser/decorator/columns/PrimaryColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PrimaryColumn\", function() { return _decorator_columns_PrimaryColumn__WEBPACK_IMPORTED_MODULE_16__[\"PrimaryColumn\"]; });\n\n/* harmony import */ var _decorator_columns_UpdateDateColumn__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./decorator/columns/UpdateDateColumn */ \"./node_modules/typeorm/browser/decorator/columns/UpdateDateColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdateDateColumn\", function() { return _decorator_columns_UpdateDateColumn__WEBPACK_IMPORTED_MODULE_17__[\"UpdateDateColumn\"]; });\n\n/* harmony import */ var _decorator_columns_VersionColumn__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./decorator/columns/VersionColumn */ \"./node_modules/typeorm/browser/decorator/columns/VersionColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VersionColumn\", function() { return _decorator_columns_VersionColumn__WEBPACK_IMPORTED_MODULE_18__[\"VersionColumn\"]; });\n\n/* harmony import */ var _decorator_columns_ViewColumn__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./decorator/columns/ViewColumn */ \"./node_modules/typeorm/browser/decorator/columns/ViewColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ViewColumn\", function() { return _decorator_columns_ViewColumn__WEBPACK_IMPORTED_MODULE_19__[\"ViewColumn\"]; });\n\n/* harmony import */ var _decorator_columns_ObjectIdColumn__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./decorator/columns/ObjectIdColumn */ \"./node_modules/typeorm/browser/decorator/columns/ObjectIdColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ObjectIdColumn\", function() { return _decorator_columns_ObjectIdColumn__WEBPACK_IMPORTED_MODULE_20__[\"ObjectIdColumn\"]; });\n\n/* harmony import */ var _decorator_listeners_AfterInsert__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./decorator/listeners/AfterInsert */ \"./node_modules/typeorm/browser/decorator/listeners/AfterInsert.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AfterInsert\", function() { return _decorator_listeners_AfterInsert__WEBPACK_IMPORTED_MODULE_21__[\"AfterInsert\"]; });\n\n/* harmony import */ var _decorator_listeners_AfterLoad__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./decorator/listeners/AfterLoad */ \"./node_modules/typeorm/browser/decorator/listeners/AfterLoad.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AfterLoad\", function() { return _decorator_listeners_AfterLoad__WEBPACK_IMPORTED_MODULE_22__[\"AfterLoad\"]; });\n\n/* harmony import */ var _decorator_listeners_AfterRemove__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./decorator/listeners/AfterRemove */ \"./node_modules/typeorm/browser/decorator/listeners/AfterRemove.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AfterRemove\", function() { return _decorator_listeners_AfterRemove__WEBPACK_IMPORTED_MODULE_23__[\"AfterRemove\"]; });\n\n/* harmony import */ var _decorator_listeners_AfterUpdate__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./decorator/listeners/AfterUpdate */ \"./node_modules/typeorm/browser/decorator/listeners/AfterUpdate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AfterUpdate\", function() { return _decorator_listeners_AfterUpdate__WEBPACK_IMPORTED_MODULE_24__[\"AfterUpdate\"]; });\n\n/* harmony import */ var _decorator_listeners_BeforeInsert__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./decorator/listeners/BeforeInsert */ \"./node_modules/typeorm/browser/decorator/listeners/BeforeInsert.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BeforeInsert\", function() { return _decorator_listeners_BeforeInsert__WEBPACK_IMPORTED_MODULE_25__[\"BeforeInsert\"]; });\n\n/* harmony import */ var _decorator_listeners_BeforeRemove__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./decorator/listeners/BeforeRemove */ \"./node_modules/typeorm/browser/decorator/listeners/BeforeRemove.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BeforeRemove\", function() { return _decorator_listeners_BeforeRemove__WEBPACK_IMPORTED_MODULE_26__[\"BeforeRemove\"]; });\n\n/* harmony import */ var _decorator_listeners_BeforeUpdate__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./decorator/listeners/BeforeUpdate */ \"./node_modules/typeorm/browser/decorator/listeners/BeforeUpdate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BeforeUpdate\", function() { return _decorator_listeners_BeforeUpdate__WEBPACK_IMPORTED_MODULE_27__[\"BeforeUpdate\"]; });\n\n/* harmony import */ var _decorator_listeners_EventSubscriber__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./decorator/listeners/EventSubscriber */ \"./node_modules/typeorm/browser/decorator/listeners/EventSubscriber.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EventSubscriber\", function() { return _decorator_listeners_EventSubscriber__WEBPACK_IMPORTED_MODULE_28__[\"EventSubscriber\"]; });\n\n/* harmony import */ var _decorator_options_ColumnOptions__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./decorator/options/ColumnOptions */ \"./node_modules/typeorm/browser/decorator/options/ColumnOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _decorator_options_IndexOptions__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./decorator/options/IndexOptions */ \"./node_modules/typeorm/browser/decorator/options/IndexOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _decorator_options_JoinColumnOptions__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./decorator/options/JoinColumnOptions */ \"./node_modules/typeorm/browser/decorator/options/JoinColumnOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _decorator_options_JoinTableOptions__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./decorator/options/JoinTableOptions */ \"./node_modules/typeorm/browser/decorator/options/JoinTableOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _decorator_options_RelationOptions__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./decorator/options/RelationOptions */ \"./node_modules/typeorm/browser/decorator/options/RelationOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _decorator_options_EntityOptions__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./decorator/options/EntityOptions */ \"./node_modules/typeorm/browser/decorator/options/EntityOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _decorator_options_ValueTransformer__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./decorator/options/ValueTransformer */ \"./node_modules/typeorm/browser/decorator/options/ValueTransformer.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _decorator_relations_JoinColumn__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./decorator/relations/JoinColumn */ \"./node_modules/typeorm/browser/decorator/relations/JoinColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"JoinColumn\", function() { return _decorator_relations_JoinColumn__WEBPACK_IMPORTED_MODULE_36__[\"JoinColumn\"]; });\n\n/* harmony import */ var _decorator_relations_JoinTable__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./decorator/relations/JoinTable */ \"./node_modules/typeorm/browser/decorator/relations/JoinTable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"JoinTable\", function() { return _decorator_relations_JoinTable__WEBPACK_IMPORTED_MODULE_37__[\"JoinTable\"]; });\n\n/* harmony import */ var _decorator_relations_ManyToMany__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./decorator/relations/ManyToMany */ \"./node_modules/typeorm/browser/decorator/relations/ManyToMany.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ManyToMany\", function() { return _decorator_relations_ManyToMany__WEBPACK_IMPORTED_MODULE_38__[\"ManyToMany\"]; });\n\n/* harmony import */ var _decorator_relations_ManyToOne__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./decorator/relations/ManyToOne */ \"./node_modules/typeorm/browser/decorator/relations/ManyToOne.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ManyToOne\", function() { return _decorator_relations_ManyToOne__WEBPACK_IMPORTED_MODULE_39__[\"ManyToOne\"]; });\n\n/* harmony import */ var _decorator_relations_OneToMany__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./decorator/relations/OneToMany */ \"./node_modules/typeorm/browser/decorator/relations/OneToMany.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OneToMany\", function() { return _decorator_relations_OneToMany__WEBPACK_IMPORTED_MODULE_40__[\"OneToMany\"]; });\n\n/* harmony import */ var _decorator_relations_OneToOne__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./decorator/relations/OneToOne */ \"./node_modules/typeorm/browser/decorator/relations/OneToOne.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OneToOne\", function() { return _decorator_relations_OneToOne__WEBPACK_IMPORTED_MODULE_41__[\"OneToOne\"]; });\n\n/* harmony import */ var _decorator_relations_RelationCount__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./decorator/relations/RelationCount */ \"./node_modules/typeorm/browser/decorator/relations/RelationCount.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RelationCount\", function() { return _decorator_relations_RelationCount__WEBPACK_IMPORTED_MODULE_42__[\"RelationCount\"]; });\n\n/* harmony import */ var _decorator_relations_RelationId__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./decorator/relations/RelationId */ \"./node_modules/typeorm/browser/decorator/relations/RelationId.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RelationId\", function() { return _decorator_relations_RelationId__WEBPACK_IMPORTED_MODULE_43__[\"RelationId\"]; });\n\n/* harmony import */ var _decorator_entity_Entity__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./decorator/entity/Entity */ \"./node_modules/typeorm/browser/decorator/entity/Entity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Entity\", function() { return _decorator_entity_Entity__WEBPACK_IMPORTED_MODULE_44__[\"Entity\"]; });\n\n/* harmony import */ var _decorator_entity_ChildEntity__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./decorator/entity/ChildEntity */ \"./node_modules/typeorm/browser/decorator/entity/ChildEntity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ChildEntity\", function() { return _decorator_entity_ChildEntity__WEBPACK_IMPORTED_MODULE_45__[\"ChildEntity\"]; });\n\n/* harmony import */ var _decorator_entity_TableInheritance__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./decorator/entity/TableInheritance */ \"./node_modules/typeorm/browser/decorator/entity/TableInheritance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TableInheritance\", function() { return _decorator_entity_TableInheritance__WEBPACK_IMPORTED_MODULE_46__[\"TableInheritance\"]; });\n\n/* harmony import */ var _decorator_entity_view_ViewEntity__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./decorator/entity-view/ViewEntity */ \"./node_modules/typeorm/browser/decorator/entity-view/ViewEntity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ViewEntity\", function() { return _decorator_entity_view_ViewEntity__WEBPACK_IMPORTED_MODULE_47__[\"ViewEntity\"]; });\n\n/* harmony import */ var _decorator_transaction_Transaction__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./decorator/transaction/Transaction */ \"./node_modules/typeorm/browser/decorator/transaction/Transaction.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Transaction\", function() { return _decorator_transaction_Transaction__WEBPACK_IMPORTED_MODULE_48__[\"Transaction\"]; });\n\n/* harmony import */ var _decorator_transaction_TransactionManager__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./decorator/transaction/TransactionManager */ \"./node_modules/typeorm/browser/decorator/transaction/TransactionManager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransactionManager\", function() { return _decorator_transaction_TransactionManager__WEBPACK_IMPORTED_MODULE_49__[\"TransactionManager\"]; });\n\n/* harmony import */ var _decorator_transaction_TransactionRepository__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./decorator/transaction/TransactionRepository */ \"./node_modules/typeorm/browser/decorator/transaction/TransactionRepository.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransactionRepository\", function() { return _decorator_transaction_TransactionRepository__WEBPACK_IMPORTED_MODULE_50__[\"TransactionRepository\"]; });\n\n/* harmony import */ var _decorator_tree_TreeLevelColumn__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./decorator/tree/TreeLevelColumn */ \"./node_modules/typeorm/browser/decorator/tree/TreeLevelColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeLevelColumn\", function() { return _decorator_tree_TreeLevelColumn__WEBPACK_IMPORTED_MODULE_51__[\"TreeLevelColumn\"]; });\n\n/* harmony import */ var _decorator_tree_TreeParent__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./decorator/tree/TreeParent */ \"./node_modules/typeorm/browser/decorator/tree/TreeParent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeParent\", function() { return _decorator_tree_TreeParent__WEBPACK_IMPORTED_MODULE_52__[\"TreeParent\"]; });\n\n/* harmony import */ var _decorator_tree_TreeChildren__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./decorator/tree/TreeChildren */ \"./node_modules/typeorm/browser/decorator/tree/TreeChildren.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeChildren\", function() { return _decorator_tree_TreeChildren__WEBPACK_IMPORTED_MODULE_53__[\"TreeChildren\"]; });\n\n/* harmony import */ var _decorator_tree_Tree__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./decorator/tree/Tree */ \"./node_modules/typeorm/browser/decorator/tree/Tree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Tree\", function() { return _decorator_tree_Tree__WEBPACK_IMPORTED_MODULE_54__[\"Tree\"]; });\n\n/* harmony import */ var _decorator_Index__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./decorator/Index */ \"./node_modules/typeorm/browser/decorator/Index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Index\", function() { return _decorator_Index__WEBPACK_IMPORTED_MODULE_55__[\"Index\"]; });\n\n/* harmony import */ var _decorator_Unique__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./decorator/Unique */ \"./node_modules/typeorm/browser/decorator/Unique.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Unique\", function() { return _decorator_Unique__WEBPACK_IMPORTED_MODULE_56__[\"Unique\"]; });\n\n/* harmony import */ var _decorator_Check__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./decorator/Check */ \"./node_modules/typeorm/browser/decorator/Check.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Check\", function() { return _decorator_Check__WEBPACK_IMPORTED_MODULE_57__[\"Check\"]; });\n\n/* harmony import */ var _decorator_Exclusion__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./decorator/Exclusion */ \"./node_modules/typeorm/browser/decorator/Exclusion.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Exclusion\", function() { return _decorator_Exclusion__WEBPACK_IMPORTED_MODULE_58__[\"Exclusion\"]; });\n\n/* harmony import */ var _decorator_Generated__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./decorator/Generated */ \"./node_modules/typeorm/browser/decorator/Generated.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Generated\", function() { return _decorator_Generated__WEBPACK_IMPORTED_MODULE_59__[\"Generated\"]; });\n\n/* harmony import */ var _decorator_EntityRepository__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./decorator/EntityRepository */ \"./node_modules/typeorm/browser/decorator/EntityRepository.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityRepository\", function() { return _decorator_EntityRepository__WEBPACK_IMPORTED_MODULE_60__[\"EntityRepository\"]; });\n\n/* harmony import */ var _find_options_operator_Any__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./find-options/operator/Any */ \"./node_modules/typeorm/browser/find-options/operator/Any.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Any\", function() { return _find_options_operator_Any__WEBPACK_IMPORTED_MODULE_61__[\"Any\"]; });\n\n/* harmony import */ var _find_options_operator_Between__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./find-options/operator/Between */ \"./node_modules/typeorm/browser/find-options/operator/Between.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Between\", function() { return _find_options_operator_Between__WEBPACK_IMPORTED_MODULE_62__[\"Between\"]; });\n\n/* harmony import */ var _find_options_operator_Equal__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./find-options/operator/Equal */ \"./node_modules/typeorm/browser/find-options/operator/Equal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Equal\", function() { return _find_options_operator_Equal__WEBPACK_IMPORTED_MODULE_63__[\"Equal\"]; });\n\n/* harmony import */ var _find_options_operator_In__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./find-options/operator/In */ \"./node_modules/typeorm/browser/find-options/operator/In.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"In\", function() { return _find_options_operator_In__WEBPACK_IMPORTED_MODULE_64__[\"In\"]; });\n\n/* harmony import */ var _find_options_operator_IsNull__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./find-options/operator/IsNull */ \"./node_modules/typeorm/browser/find-options/operator/IsNull.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IsNull\", function() { return _find_options_operator_IsNull__WEBPACK_IMPORTED_MODULE_65__[\"IsNull\"]; });\n\n/* harmony import */ var _find_options_operator_LessThan__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./find-options/operator/LessThan */ \"./node_modules/typeorm/browser/find-options/operator/LessThan.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LessThan\", function() { return _find_options_operator_LessThan__WEBPACK_IMPORTED_MODULE_66__[\"LessThan\"]; });\n\n/* harmony import */ var _find_options_operator_LessThanOrEqual__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./find-options/operator/LessThanOrEqual */ \"./node_modules/typeorm/browser/find-options/operator/LessThanOrEqual.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LessThanOrEqual\", function() { return _find_options_operator_LessThanOrEqual__WEBPACK_IMPORTED_MODULE_67__[\"LessThanOrEqual\"]; });\n\n/* harmony import */ var _find_options_operator_ILike__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./find-options/operator/ILike */ \"./node_modules/typeorm/browser/find-options/operator/ILike.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ILike\", function() { return _find_options_operator_ILike__WEBPACK_IMPORTED_MODULE_68__[\"ILike\"]; });\n\n/* harmony import */ var _find_options_operator_Like__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./find-options/operator/Like */ \"./node_modules/typeorm/browser/find-options/operator/Like.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Like\", function() { return _find_options_operator_Like__WEBPACK_IMPORTED_MODULE_69__[\"Like\"]; });\n\n/* harmony import */ var _find_options_operator_MoreThan__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./find-options/operator/MoreThan */ \"./node_modules/typeorm/browser/find-options/operator/MoreThan.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MoreThan\", function() { return _find_options_operator_MoreThan__WEBPACK_IMPORTED_MODULE_70__[\"MoreThan\"]; });\n\n/* harmony import */ var _find_options_operator_MoreThanOrEqual__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./find-options/operator/MoreThanOrEqual */ \"./node_modules/typeorm/browser/find-options/operator/MoreThanOrEqual.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MoreThanOrEqual\", function() { return _find_options_operator_MoreThanOrEqual__WEBPACK_IMPORTED_MODULE_71__[\"MoreThanOrEqual\"]; });\n\n/* harmony import */ var _find_options_operator_Not__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./find-options/operator/Not */ \"./node_modules/typeorm/browser/find-options/operator/Not.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Not\", function() { return _find_options_operator_Not__WEBPACK_IMPORTED_MODULE_72__[\"Not\"]; });\n\n/* harmony import */ var _find_options_operator_Raw__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./find-options/operator/Raw */ \"./node_modules/typeorm/browser/find-options/operator/Raw.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Raw\", function() { return _find_options_operator_Raw__WEBPACK_IMPORTED_MODULE_73__[\"Raw\"]; });\n\n/* harmony import */ var _find_options_FindConditions__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./find-options/FindConditions */ \"./node_modules/typeorm/browser/find-options/FindConditions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _find_options_FindManyOptions__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./find-options/FindManyOptions */ \"./node_modules/typeorm/browser/find-options/FindManyOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _find_options_FindOneOptions__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./find-options/FindOneOptions */ \"./node_modules/typeorm/browser/find-options/FindOneOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./find-options/FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FindOperator\", function() { return _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_77__[\"FindOperator\"]; });\n\n/* harmony import */ var _find_options_FindOperatorType__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./find-options/FindOperatorType */ \"./node_modules/typeorm/browser/find-options/FindOperatorType.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _find_options_JoinOptions__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./find-options/JoinOptions */ \"./node_modules/typeorm/browser/find-options/JoinOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _find_options_OrderByCondition__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./find-options/OrderByCondition */ \"./node_modules/typeorm/browser/find-options/OrderByCondition.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./find-options/FindOptionsUtils */ \"./node_modules/typeorm/browser/find-options/FindOptionsUtils.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FindOptionsUtils\", function() { return _find_options_FindOptionsUtils__WEBPACK_IMPORTED_MODULE_81__[\"FindOptionsUtils\"]; });\n\n/* harmony import */ var _logger_Logger__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./logger/Logger */ \"./node_modules/typeorm/browser/logger/Logger.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _logger_LoggerOptions__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./logger/LoggerOptions */ \"./node_modules/typeorm/browser/logger/LoggerOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _logger_AdvancedConsoleLogger__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./logger/AdvancedConsoleLogger */ \"./node_modules/typeorm/browser/logger/AdvancedConsoleLogger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AdvancedConsoleLogger\", function() { return _logger_AdvancedConsoleLogger__WEBPACK_IMPORTED_MODULE_84__[\"AdvancedConsoleLogger\"]; });\n\n/* harmony import */ var _logger_SimpleConsoleLogger__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./logger/SimpleConsoleLogger */ \"./node_modules/typeorm/browser/logger/SimpleConsoleLogger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SimpleConsoleLogger\", function() { return _logger_SimpleConsoleLogger__WEBPACK_IMPORTED_MODULE_85__[\"SimpleConsoleLogger\"]; });\n\n/* harmony import */ var _logger_FileLogger__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./logger/FileLogger */ \"./node_modules/typeorm/browser/platform/BrowserFileLoggerDummy.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DummyLogger\", function() { return _logger_FileLogger__WEBPACK_IMPORTED_MODULE_86__[\"DummyLogger\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileLogger\", function() { return _logger_FileLogger__WEBPACK_IMPORTED_MODULE_86__[\"FileLogger\"]; });\n\n/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./metadata/EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityMetadata\", function() { return _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_87__[\"EntityMetadata\"]; });\n\n/* harmony import */ var _entity_manager_EntityManager__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./entity-manager/EntityManager */ \"./node_modules/typeorm/browser/entity-manager/EntityManager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntityManager\", function() { return _entity_manager_EntityManager__WEBPACK_IMPORTED_MODULE_88__[\"EntityManager\"]; });\n\n/* harmony import */ var _repository_AbstractRepository__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./repository/AbstractRepository */ \"./node_modules/typeorm/browser/repository/AbstractRepository.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractRepository\", function() { return _repository_AbstractRepository__WEBPACK_IMPORTED_MODULE_89__[\"AbstractRepository\"]; });\n\n/* harmony import */ var _repository_Repository__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./repository/Repository */ \"./node_modules/typeorm/browser/repository/Repository.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Repository\", function() { return _repository_Repository__WEBPACK_IMPORTED_MODULE_90__[\"Repository\"]; });\n\n/* harmony import */ var _repository_BaseEntity__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./repository/BaseEntity */ \"./node_modules/typeorm/browser/repository/BaseEntity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BaseEntity\", function() { return _repository_BaseEntity__WEBPACK_IMPORTED_MODULE_91__[\"BaseEntity\"]; });\n\n/* harmony import */ var _repository_TreeRepository__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./repository/TreeRepository */ \"./node_modules/typeorm/browser/repository/TreeRepository.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeRepository\", function() { return _repository_TreeRepository__WEBPACK_IMPORTED_MODULE_92__[\"TreeRepository\"]; });\n\n/* harmony import */ var _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./repository/MongoRepository */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MongoDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"MongoDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MongoQueryRunner\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"MongoQueryRunner\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MongoRepository\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"MongoRepository\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PostgresDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"PostgresDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AuroraDataApiDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"AuroraDataApiDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CockroachDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"CockroachDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AuroraDataApiPostgresDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"AuroraDataApiPostgresDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SqlServerDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"SqlServerDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SapDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"SapDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MysqlDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"MysqlDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OracleDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"OracleDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SqliteDriver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"SqliteDriver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BetterSqlite3Driver\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"BetterSqlite3Driver\"]; });\n\n/* harmony import */ var _repository_RemoveOptions__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./repository/RemoveOptions */ \"./node_modules/typeorm/browser/repository/RemoveOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _repository_SaveOptions__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./repository/SaveOptions */ \"./node_modules/typeorm/browser/repository/SaveOptions.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./schema-builder/table/TableCheck */ \"./node_modules/typeorm/browser/schema-builder/table/TableCheck.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TableCheck\", function() { return _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_96__[\"TableCheck\"]; });\n\n/* harmony import */ var _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./schema-builder/table/TableColumn */ \"./node_modules/typeorm/browser/schema-builder/table/TableColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TableColumn\", function() { return _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_97__[\"TableColumn\"]; });\n\n/* harmony import */ var _schema_builder_table_TableExclusion__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./schema-builder/table/TableExclusion */ \"./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TableExclusion\", function() { return _schema_builder_table_TableExclusion__WEBPACK_IMPORTED_MODULE_98__[\"TableExclusion\"]; });\n\n/* harmony import */ var _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./schema-builder/table/TableForeignKey */ \"./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TableForeignKey\", function() { return _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_99__[\"TableForeignKey\"]; });\n\n/* harmony import */ var _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./schema-builder/table/TableIndex */ \"./node_modules/typeorm/browser/schema-builder/table/TableIndex.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TableIndex\", function() { return _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_100__[\"TableIndex\"]; });\n\n/* harmony import */ var _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./schema-builder/table/TableUnique */ \"./node_modules/typeorm/browser/schema-builder/table/TableUnique.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TableUnique\", function() { return _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_101__[\"TableUnique\"]; });\n\n/* harmony import */ var _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./schema-builder/table/Table */ \"./node_modules/typeorm/browser/schema-builder/table/Table.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Table\", function() { return _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_102__[\"Table\"]; });\n\n/* harmony import */ var _driver_mongodb_typings__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./driver/mongodb/typings */ \"./node_modules/typeorm/browser/driver/mongodb/typings.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _driver_types_DatabaseType__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./driver/types/DatabaseType */ \"./node_modules/typeorm/browser/driver/types/DatabaseType.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _driver_types_ReplicationMode__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./driver/types/ReplicationMode */ \"./node_modules/typeorm/browser/driver/types/ReplicationMode.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./driver/sqlserver/MssqlParameter */ \"./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MssqlParameter\", function() { return _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_106__[\"MssqlParameter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConnectionOptionsReader\", function() { return _connection_ConnectionOptionsReader__WEBPACK_IMPORTED_MODULE_6__[\"ConnectionOptionsReader\"]; });\n\n/* harmony import */ var _connection_Connection__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./connection/Connection */ \"./node_modules/typeorm/browser/connection/Connection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Connection\", function() { return _connection_Connection__WEBPACK_IMPORTED_MODULE_107__[\"Connection\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConnectionManager\", function() { return _connection_ConnectionManager__WEBPACK_IMPORTED_MODULE_2__[\"ConnectionManager\"]; });\n\n/* harmony import */ var _query_builder_QueryBuilder__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./query-builder/QueryBuilder */ \"./node_modules/typeorm/browser/query-builder/QueryBuilder.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QueryBuilder\", function() { return _query_builder_QueryBuilder__WEBPACK_IMPORTED_MODULE_108__[\"QueryBuilder\"]; });\n\n/* harmony import */ var _query_builder_SelectQueryBuilder__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./query-builder/SelectQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectQueryBuilder\", function() { return _query_builder_SelectQueryBuilder__WEBPACK_IMPORTED_MODULE_109__[\"SelectQueryBuilder\"]; });\n\n/* harmony import */ var _query_builder_DeleteQueryBuilder__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./query-builder/DeleteQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/DeleteQueryBuilder.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DeleteQueryBuilder\", function() { return _query_builder_DeleteQueryBuilder__WEBPACK_IMPORTED_MODULE_110__[\"DeleteQueryBuilder\"]; });\n\n/* harmony import */ var _query_builder_InsertQueryBuilder__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./query-builder/InsertQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/InsertQueryBuilder.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InsertQueryBuilder\", function() { return _query_builder_InsertQueryBuilder__WEBPACK_IMPORTED_MODULE_111__[\"InsertQueryBuilder\"]; });\n\n/* harmony import */ var _query_builder_UpdateQueryBuilder__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./query-builder/UpdateQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/UpdateQueryBuilder.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdateQueryBuilder\", function() { return _query_builder_UpdateQueryBuilder__WEBPACK_IMPORTED_MODULE_112__[\"UpdateQueryBuilder\"]; });\n\n/* harmony import */ var _query_builder_RelationQueryBuilder__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./query-builder/RelationQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RelationQueryBuilder\", function() { return _query_builder_RelationQueryBuilder__WEBPACK_IMPORTED_MODULE_113__[\"RelationQueryBuilder\"]; });\n\n/* harmony import */ var _query_builder_Brackets__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./query-builder/Brackets */ \"./node_modules/typeorm/browser/query-builder/Brackets.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Brackets\", function() { return _query_builder_Brackets__WEBPACK_IMPORTED_MODULE_114__[\"Brackets\"]; });\n\n/* harmony import */ var _query_builder_result_InsertResult__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./query-builder/result/InsertResult */ \"./node_modules/typeorm/browser/query-builder/result/InsertResult.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InsertResult\", function() { return _query_builder_result_InsertResult__WEBPACK_IMPORTED_MODULE_115__[\"InsertResult\"]; });\n\n/* harmony import */ var _query_builder_result_UpdateResult__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./query-builder/result/UpdateResult */ \"./node_modules/typeorm/browser/query-builder/result/UpdateResult.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UpdateResult\", function() { return _query_builder_result_UpdateResult__WEBPACK_IMPORTED_MODULE_116__[\"UpdateResult\"]; });\n\n/* harmony import */ var _query_builder_result_DeleteResult__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./query-builder/result/DeleteResult */ \"./node_modules/typeorm/browser/query-builder/result/DeleteResult.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DeleteResult\", function() { return _query_builder_result_DeleteResult__WEBPACK_IMPORTED_MODULE_117__[\"DeleteResult\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MongoEntityManager\", function() { return _repository_MongoRepository__WEBPACK_IMPORTED_MODULE_93__[\"MongoEntityManager\"]; });\n\n/* harmony import */ var _migration_Migration__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./migration/Migration */ \"./node_modules/typeorm/browser/migration/Migration.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Migration\", function() { return _migration_Migration__WEBPACK_IMPORTED_MODULE_118__[\"Migration\"]; });\n\n/* harmony import */ var _migration_MigrationExecutor__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./migration/MigrationExecutor */ \"./node_modules/typeorm/browser/migration/MigrationExecutor.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MigrationExecutor\", function() { return _migration_MigrationExecutor__WEBPACK_IMPORTED_MODULE_119__[\"MigrationExecutor\"]; });\n\n/* harmony import */ var _naming_strategy_DefaultNamingStrategy__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./naming-strategy/DefaultNamingStrategy */ \"./node_modules/typeorm/browser/naming-strategy/DefaultNamingStrategy.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DefaultNamingStrategy\", function() { return _naming_strategy_DefaultNamingStrategy__WEBPACK_IMPORTED_MODULE_120__[\"DefaultNamingStrategy\"]; });\n\n/* harmony import */ var _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./entity-schema/EntitySchema */ \"./node_modules/typeorm/browser/entity-schema/EntitySchema.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EntitySchema\", function() { return _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_121__[\"EntitySchema\"]; });\n\n\n/*!\n */\n\n\n\n\n\n\n// -------------------------------------------------------------------------\n// Commonly Used exports\n// -------------------------------------------------------------------------\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// -------------------------------------------------------------------------\n// Deprecated\n// -------------------------------------------------------------------------\n// -------------------------------------------------------------------------\n// Commonly used functionality\n// -------------------------------------------------------------------------\n/**\n * Gets metadata args storage.\n */\nfunction getMetadataArgsStorage() {\n // we should store metadata storage in a global variable otherwise it brings too much problems\n // one of the problem is that if any entity (or any other) will be imported before consumer will call\n // useContainer method with his own container implementation, that entity will be registered in the\n // old old container (default one post probably) and consumer will his entity.\n // calling useContainer before he imports any entity (or any other) is not always convenient.\n // another reason is that when we run migrations typeorm is being called from a global package\n // and it may load entities which register decorators in typeorm of local package\n // this leads to impossibility of usage of entities in migrations and cli related operations\n var globalScope = _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_5__[\"PlatformTools\"].getGlobalVariable();\n if (!globalScope.typeormMetadataArgsStorage)\n globalScope.typeormMetadataArgsStorage = new _metadata_args_MetadataArgsStorage__WEBPACK_IMPORTED_MODULE_3__[\"MetadataArgsStorage\"]();\n return globalScope.typeormMetadataArgsStorage;\n}\n/**\n * Reads connection options stored in ormconfig configuration file.\n */\nfunction getConnectionOptions(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, new _connection_ConnectionOptionsReader__WEBPACK_IMPORTED_MODULE_6__[\"ConnectionOptionsReader\"]().get(connectionName)];\n });\n });\n}\n/**\n * Gets a ConnectionManager which creates connections.\n */\nfunction getConnectionManager() {\n return Object(_container__WEBPACK_IMPORTED_MODULE_4__[\"getFromContainer\"])(_connection_ConnectionManager__WEBPACK_IMPORTED_MODULE_2__[\"ConnectionManager\"]);\n}\n/**\n * Creates a new connection and registers it in the manager.\n *\n * If connection options were not specified, then it will try to create connection automatically,\n * based on content of ormconfig (json/js/yml/xml/env) file or environment variables.\n * Only one connection from ormconfig will be created (name \"default\" or connection without name).\n */\nfunction createConnection(optionsOrName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var connectionName, options, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n connectionName = typeof optionsOrName === \"string\" ? optionsOrName : \"default\";\n if (!(optionsOrName instanceof Object)) return [3 /*break*/, 1];\n _a = optionsOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, getConnectionOptions(connectionName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n options = _a;\n return [2 /*return*/, getConnectionManager().create(options).connect()];\n }\n });\n });\n}\n/**\n * Creates new connections and registers them in the manager.\n *\n * If connection options were not specified, then it will try to create connection automatically,\n * based on content of ormconfig (json/js/yml/xml/env) file or environment variables.\n * All connections from the ormconfig will be created.\n */\nfunction createConnections(options) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var connections;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!options) return [3 /*break*/, 2];\n return [4 /*yield*/, new _connection_ConnectionOptionsReader__WEBPACK_IMPORTED_MODULE_6__[\"ConnectionOptionsReader\"]().all()];\n case 1:\n options = _a.sent();\n _a.label = 2;\n case 2:\n connections = options.map(function (options) { return getConnectionManager().create(options); });\n return [2 /*return*/, Promise.all(connections.map(function (connection) { return connection.connect(); }))];\n }\n });\n });\n}\n/**\n * Gets connection from the connection manager.\n * If connection name wasn't specified, then \"default\" connection will be retrieved.\n */\nfunction getConnection(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName);\n}\n/**\n * Gets entity manager from the connection.\n * If connection name wasn't specified, then \"default\" connection will be retrieved.\n */\nfunction getManager(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).manager;\n}\n/**\n * Gets MongoDB entity manager from the connection.\n * If connection name wasn't specified, then \"default\" connection will be retrieved.\n */\nfunction getMongoManager(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).manager;\n}\n/**\n * Gets Sqljs entity manager from connection name.\n * \"default\" connection is used, when no name is specified.\n * Only works when Sqljs driver is used.\n */\nfunction getSqljsManager(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).manager;\n}\n/**\n * Gets repository for the given entity class.\n */\nfunction getRepository(entityClass, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getRepository(entityClass);\n}\n/**\n * Gets tree repository for the given entity class.\n */\nfunction getTreeRepository(entityClass, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getTreeRepository(entityClass);\n}\n/**\n * Gets tree repository for the given entity class.\n */\nfunction getCustomRepository(customRepository, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getCustomRepository(customRepository);\n}\n/**\n * Gets mongodb repository for the given entity class or name.\n */\nfunction getMongoRepository(entityClass, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getMongoRepository(entityClass);\n}\n/**\n * Creates a new query builder.\n */\nfunction createQueryBuilder(entityClass, alias, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n if (entityClass) {\n return getRepository(entityClass, connectionName).createQueryBuilder(alias);\n }\n return getConnection(connectionName).createQueryBuilder();\n}\n\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/index.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/logger/AdvancedConsoleLogger.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/logger/AdvancedConsoleLogger.js ***! - \**********************************************************************/ -/*! exports provided: AdvancedConsoleLogger */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AdvancedConsoleLogger\", function() { return AdvancedConsoleLogger; });\n/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../platform/PlatformTools */ \"./node_modules/typeorm/browser/platform/BrowserPlatformTools.js\");\n\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger uses console to log events and use syntax highlighting.\n */\nvar AdvancedConsoleLogger = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AdvancedConsoleLogger(options) {\n this.options = options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Logs query and parameters used in it.\n */\n AdvancedConsoleLogger.prototype.logQuery = function (query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"query\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].logInfo(\"query:\", _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].highlightSql(sql));\n }\n };\n /**\n * Logs query that is failed.\n */\n AdvancedConsoleLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"error\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].logError(\"query failed:\", _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].highlightSql(sql));\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].logError(\"error:\", error);\n }\n };\n /**\n * Logs query that is slow.\n */\n AdvancedConsoleLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].logWarn(\"query is slow:\", _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].highlightSql(sql));\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].logWarn(\"execution time:\", time);\n };\n /**\n * Logs events from the schema build process.\n */\n AdvancedConsoleLogger.prototype.logSchemaBuild = function (message, queryRunner) {\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"schema\") !== -1)) {\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].log(message);\n }\n };\n /**\n * Logs events from the migration run process.\n */\n AdvancedConsoleLogger.prototype.logMigration = function (message, queryRunner) {\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].log(message);\n };\n /**\n * Perform logging using given logger, or by default to the console.\n * Log has its own level and message.\n */\n AdvancedConsoleLogger.prototype.log = function (level, message, queryRunner) {\n switch (level) {\n case \"log\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"log\") !== -1))\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].log(message);\n break;\n case \"info\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"info\") !== -1))\n _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].logInfo(\"INFO:\", message);\n break;\n case \"warn\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"warn\") !== -1))\n console.warn(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_0__[\"PlatformTools\"].warn(message));\n break;\n }\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Converts parameters to a string.\n * Sometimes parameters can have circular objects and therefor we are handle this case too.\n */\n AdvancedConsoleLogger.prototype.stringifyParams = function (parameters) {\n try {\n return JSON.stringify(parameters);\n }\n catch (error) { // most probably circular objects in parameters\n return parameters;\n }\n };\n return AdvancedConsoleLogger;\n}());\n\n\n//# sourceMappingURL=AdvancedConsoleLogger.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/logger/AdvancedConsoleLogger.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/logger/DebugLogger.js": -/*!************************************************************!*\ - !*** ./node_modules/typeorm/browser/logger/DebugLogger.js ***! - \************************************************************/ -/*! exports provided: DebugLogger */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DebugLogger\", function() { return DebugLogger; });\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _platform_PlatformTools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/PlatformTools */ \"./node_modules/typeorm/browser/platform/BrowserPlatformTools.js\");\n\n\n/**\n * Performs logging of the events in TypeORM via debug library.\n */\nvar DebugLogger = /** @class */ (function () {\n function DebugLogger() {\n this.debugQueryLog = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:query:log\");\n this.debugQueryError = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:query:error\");\n this.debugQuerySlow = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:query:slow\");\n this.debugSchemaBuild = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:schema\");\n this.debugMigration = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:migration\");\n this.debugLog = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:log\");\n this.debugInfo = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:info\");\n this.debugWarn = debug__WEBPACK_IMPORTED_MODULE_0___default()(\"typeorm:warn\");\n }\n /**\n * Logs query and parameters used in it.\n */\n DebugLogger.prototype.logQuery = function (query, parameters, queryRunner) {\n if (this.debugQueryLog.enabled) {\n this.debugQueryLog(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_1__[\"PlatformTools\"].highlightSql(query) + \";\");\n if (parameters && parameters.length) {\n this.debugQueryLog(\"parameters:\", parameters);\n }\n }\n };\n /**\n * Logs query that failed.\n */\n DebugLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) {\n if (this.debugQueryError.enabled) {\n this.debugQueryError(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_1__[\"PlatformTools\"].highlightSql(query) + \";\");\n if (parameters && parameters.length) {\n this.debugQueryError(\"parameters:\", parameters);\n }\n this.debugQueryError(\"error: \", error);\n }\n };\n /**\n * Logs query that is slow.\n */\n DebugLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) {\n if (this.debugQuerySlow.enabled) {\n this.debugQuerySlow(_platform_PlatformTools__WEBPACK_IMPORTED_MODULE_1__[\"PlatformTools\"].highlightSql(query) + \";\");\n if (parameters && parameters.length) {\n this.debugQuerySlow(\"parameters:\", parameters);\n }\n this.debugQuerySlow(\"execution time:\", time);\n }\n };\n /**\n * Logs events from the schema build process.\n */\n DebugLogger.prototype.logSchemaBuild = function (message, queryRunner) {\n if (this.debugSchemaBuild.enabled) {\n this.debugSchemaBuild(message);\n }\n };\n /**\n * Logs events from the migration run process.\n */\n DebugLogger.prototype.logMigration = function (message, queryRunner) {\n if (this.debugMigration.enabled) {\n this.debugMigration(message);\n }\n };\n /**\n * Perform logging using given logger.\n * Log has its own level and message.\n */\n DebugLogger.prototype.log = function (level, message, queryRunner) {\n switch (level) {\n case \"log\":\n if (this.debugLog.enabled) {\n this.debugLog(message);\n }\n break;\n case \"info\":\n if (this.debugInfo.enabled) {\n this.debugInfo(message);\n }\n break;\n case \"warn\":\n if (this.debugWarn.enabled) {\n this.debugWarn(message);\n }\n break;\n }\n };\n return DebugLogger;\n}());\n\n\n//# sourceMappingURL=DebugLogger.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/logger/DebugLogger.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/logger/Logger.js": -/*!*******************************************************!*\ - !*** ./node_modules/typeorm/browser/logger/Logger.js ***! - \*******************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=Logger.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/logger/Logger.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/logger/LoggerFactory.js": -/*!**************************************************************!*\ - !*** ./node_modules/typeorm/browser/logger/LoggerFactory.js ***! - \**************************************************************/ -/*! exports provided: LoggerFactory */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoggerFactory\", function() { return LoggerFactory; });\n/* harmony import */ var _SimpleConsoleLogger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SimpleConsoleLogger */ \"./node_modules/typeorm/browser/logger/SimpleConsoleLogger.js\");\n/* harmony import */ var _AdvancedConsoleLogger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AdvancedConsoleLogger */ \"./node_modules/typeorm/browser/logger/AdvancedConsoleLogger.js\");\n/* harmony import */ var _FileLogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FileLogger */ \"./node_modules/typeorm/browser/platform/BrowserFileLoggerDummy.js\");\n/* harmony import */ var _DebugLogger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DebugLogger */ \"./node_modules/typeorm/browser/logger/DebugLogger.js\");\n\n\n\n\n/**\n * Helps to create logger instances.\n */\nvar LoggerFactory = /** @class */ (function () {\n function LoggerFactory() {\n }\n /**\n * Creates a new logger depend on a given connection's driver.\n */\n LoggerFactory.prototype.create = function (logger, options) {\n if (logger instanceof Object)\n return logger;\n if (logger) {\n switch (logger) {\n case \"simple-console\":\n return new _SimpleConsoleLogger__WEBPACK_IMPORTED_MODULE_0__[\"SimpleConsoleLogger\"](options);\n case \"file\":\n return new _FileLogger__WEBPACK_IMPORTED_MODULE_2__[\"FileLogger\"](options);\n case \"advanced-console\":\n return new _AdvancedConsoleLogger__WEBPACK_IMPORTED_MODULE_1__[\"AdvancedConsoleLogger\"](options);\n case \"debug\":\n return new _DebugLogger__WEBPACK_IMPORTED_MODULE_3__[\"DebugLogger\"]();\n }\n }\n return new _AdvancedConsoleLogger__WEBPACK_IMPORTED_MODULE_1__[\"AdvancedConsoleLogger\"](options);\n };\n return LoggerFactory;\n}());\n\n\n//# sourceMappingURL=LoggerFactory.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/logger/LoggerFactory.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/logger/LoggerOptions.js": -/*!**************************************************************!*\ - !*** ./node_modules/typeorm/browser/logger/LoggerOptions.js ***! - \**************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=LoggerOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/logger/LoggerOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/logger/SimpleConsoleLogger.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/logger/SimpleConsoleLogger.js ***! - \********************************************************************/ -/*! exports provided: SimpleConsoleLogger */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SimpleConsoleLogger\", function() { return SimpleConsoleLogger; });\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger uses console to log events and does not use syntax highlighting.\n */\nvar SimpleConsoleLogger = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SimpleConsoleLogger(options) {\n this.options = options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Logs query and parameters used in it.\n */\n SimpleConsoleLogger.prototype.logQuery = function (query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"query\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n console.log(\"query\" + \": \" + sql);\n }\n };\n /**\n * Logs query that is failed.\n */\n SimpleConsoleLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"error\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n console.log(\"query failed: \" + sql);\n console.log(\"error:\", error);\n }\n };\n /**\n * Logs query that is slow.\n */\n SimpleConsoleLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n console.log(\"query is slow: \" + sql);\n console.log(\"execution time: \" + time);\n };\n /**\n * Logs events from the schema build process.\n */\n SimpleConsoleLogger.prototype.logSchemaBuild = function (message, queryRunner) {\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"schema\") !== -1)) {\n console.log(message);\n }\n };\n /**\n * Logs events from the migrations run process.\n */\n SimpleConsoleLogger.prototype.logMigration = function (message, queryRunner) {\n console.log(message);\n };\n /**\n * Perform logging using given logger, or by default to the console.\n * Log has its own level and message.\n */\n SimpleConsoleLogger.prototype.log = function (level, message, queryRunner) {\n switch (level) {\n case \"log\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"log\") !== -1))\n console.log(message);\n break;\n case \"info\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"info\") !== -1))\n console.info(message);\n break;\n case \"warn\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"warn\") !== -1))\n console.warn(message);\n break;\n }\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Converts parameters to a string.\n * Sometimes parameters can have circular objects and therefor we are handle this case too.\n */\n SimpleConsoleLogger.prototype.stringifyParams = function (parameters) {\n try {\n return JSON.stringify(parameters);\n }\n catch (error) { // most probably circular objects in parameters\n return parameters;\n }\n };\n return SimpleConsoleLogger;\n}());\n\n\n//# sourceMappingURL=SimpleConsoleLogger.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/logger/SimpleConsoleLogger.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata-args/MetadataArgsStorage.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata-args/MetadataArgsStorage.js ***! - \***************************************************************************/ -/*! exports provided: MetadataArgsStorage */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MetadataArgsStorage\", function() { return MetadataArgsStorage; });\n/* harmony import */ var _metadata_builder_MetadataUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../metadata-builder/MetadataUtils */ \"./node_modules/typeorm/browser/metadata-builder/MetadataUtils.js\");\n\n/**\n * Storage all metadatas args of all available types: tables, columns, subscribers, relations, etc.\n * Each metadata args represents some specifications of what it represents.\n * MetadataArgs used to create a real Metadata objects.\n */\nvar MetadataArgsStorage = /** @class */ (function () {\n function MetadataArgsStorage() {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n this.tables = [];\n this.trees = [];\n this.entityRepositories = [];\n this.transactionEntityManagers = [];\n this.transactionRepositories = [];\n this.namingStrategies = [];\n this.entitySubscribers = [];\n this.indices = [];\n this.uniques = [];\n this.checks = [];\n this.exclusions = [];\n this.columns = [];\n this.generations = [];\n this.relations = [];\n this.joinColumns = [];\n this.joinTables = [];\n this.entityListeners = [];\n this.relationCounts = [];\n this.relationIds = [];\n this.embeddeds = [];\n this.inheritances = [];\n this.discriminatorValues = [];\n }\n MetadataArgsStorage.prototype.filterTables = function (target) {\n return this.filterByTarget(this.tables, target);\n };\n MetadataArgsStorage.prototype.filterColumns = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.columns, target);\n };\n MetadataArgsStorage.prototype.findGenerated = function (target, propertyName) {\n return this.generations.find(function (generated) {\n return (Array.isArray(target) ? target.indexOf(generated.target) !== -1 : generated.target === target) && generated.propertyName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.findTree = function (target) {\n return this.trees.find(function (tree) {\n return (Array.isArray(target) ? target.indexOf(tree.target) !== -1 : tree.target === target);\n });\n };\n MetadataArgsStorage.prototype.filterRelations = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.relations, target);\n };\n MetadataArgsStorage.prototype.filterRelationIds = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.relationIds, target);\n };\n MetadataArgsStorage.prototype.filterRelationCounts = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.relationCounts, target);\n };\n MetadataArgsStorage.prototype.filterIndices = function (target) {\n // todo: implement parent-entity overrides?\n return this.indices.filter(function (index) {\n return Array.isArray(target) ? target.indexOf(index.target) !== -1 : index.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterUniques = function (target) {\n return this.uniques.filter(function (unique) {\n return Array.isArray(target) ? target.indexOf(unique.target) !== -1 : unique.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterChecks = function (target) {\n return this.checks.filter(function (check) {\n return Array.isArray(target) ? target.indexOf(check.target) !== -1 : check.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterExclusions = function (target) {\n return this.exclusions.filter(function (exclusion) {\n return Array.isArray(target) ? target.indexOf(exclusion.target) !== -1 : exclusion.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterListeners = function (target) {\n return this.filterByTarget(this.entityListeners, target);\n };\n MetadataArgsStorage.prototype.filterEmbeddeds = function (target) {\n return this.filterByTargetAndWithoutDuplicateEmbeddedProperties(this.embeddeds, target);\n };\n MetadataArgsStorage.prototype.findJoinTable = function (target, propertyName) {\n return this.joinTables.find(function (joinTable) {\n return joinTable.target === target && joinTable.propertyName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterJoinColumns = function (target, propertyName) {\n // todo: implement parent-entity overrides?\n return this.joinColumns.filter(function (joinColumn) {\n return joinColumn.target === target && joinColumn.propertyName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterSubscribers = function (target) {\n return this.filterByTarget(this.entitySubscribers, target);\n };\n MetadataArgsStorage.prototype.filterNamingStrategies = function (target) {\n return this.filterByTarget(this.namingStrategies, target);\n };\n MetadataArgsStorage.prototype.filterTransactionEntityManagers = function (target, propertyName) {\n return this.transactionEntityManagers.filter(function (transactionEm) {\n return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterTransactionRepository = function (target, propertyName) {\n return this.transactionRepositories.filter(function (transactionEm) {\n return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterSingleTableChildren = function (target) {\n return this.tables.filter(function (table) {\n return table.target instanceof Function\n && target instanceof Function\n && _metadata_builder_MetadataUtils__WEBPACK_IMPORTED_MODULE_0__[\"MetadataUtils\"].isInherited(table.target, target)\n && table.type === \"entity-child\";\n });\n };\n MetadataArgsStorage.prototype.findInheritanceType = function (target) {\n return this.inheritances.find(function (inheritance) { return inheritance.target === target; });\n };\n MetadataArgsStorage.prototype.findDiscriminatorValue = function (target) {\n return this.discriminatorValues.find(function (discriminatorValue) { return discriminatorValue.target === target; });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Filters given array by a given target or targets.\n */\n MetadataArgsStorage.prototype.filterByTarget = function (array, target) {\n return array.filter(function (table) {\n return Array.isArray(target) ? target.indexOf(table.target) !== -1 : table.target === target;\n });\n };\n /**\n * Filters given array by a given target or targets and prevents duplicate property names.\n */\n MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateProperties = function (array, target) {\n var newArray = [];\n array.forEach(function (item) {\n var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target;\n if (sameTarget) {\n if (!newArray.find(function (newItem) { return newItem.propertyName === item.propertyName; }))\n newArray.push(item);\n }\n });\n return newArray;\n };\n /**\n * Filters given array by a given target or targets and prevents duplicate embedded property names.\n */\n MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateEmbeddedProperties = function (array, target) {\n var newArray = [];\n array.forEach(function (item) {\n var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target;\n if (sameTarget) {\n var isDuplicateEmbeddedProperty = newArray.find(function (newItem) {\n return newItem.prefix === item.prefix && newItem.propertyName === item.propertyName;\n });\n if (!isDuplicateEmbeddedProperty)\n newArray.push(item);\n }\n });\n return newArray;\n };\n return MetadataArgsStorage;\n}());\n\n\n//# sourceMappingURL=MetadataArgsStorage.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata-args/MetadataArgsStorage.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js ***! - \***********************************************************************************************/ -/*! exports provided: ClosureJunctionEntityMetadataBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClosureJunctionEntityMetadataBuilder\", function() { return ClosureJunctionEntityMetadataBuilder; });\n/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../metadata/EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n/* harmony import */ var _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../metadata/ColumnMetadata */ \"./node_modules/typeorm/browser/metadata/ColumnMetadata.js\");\n/* harmony import */ var _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../metadata/ForeignKeyMetadata */ \"./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js\");\n/* harmony import */ var _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../metadata/IndexMetadata */ \"./node_modules/typeorm/browser/metadata/IndexMetadata.js\");\n\n\n\n\n/**\n * Creates EntityMetadata for junction tables of the closure entities.\n * Closure junction tables are tables generated by closure entities.\n */\nvar ClosureJunctionEntityMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ClosureJunctionEntityMetadataBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds EntityMetadata for the closure junction of the given closure entity.\n */\n ClosureJunctionEntityMetadataBuilder.prototype.build = function (parentClosureEntityMetadata) {\n var _this = this;\n // create entity metadata itself\n var entityMetadata = new _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_0__[\"EntityMetadata\"]({\n parentClosureEntityMetadata: parentClosureEntityMetadata,\n connection: this.connection,\n args: {\n target: \"\",\n name: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.closureTableName ? parentClosureEntityMetadata.treeOptions.closureTableName : parentClosureEntityMetadata.tableNameWithoutPrefix,\n type: \"closure-junction\"\n }\n });\n entityMetadata.build();\n // create ancestor and descendant columns for new closure junction table\n parentClosureEntityMetadata.primaryColumns.forEach(function (primaryColumn) {\n entityMetadata.ownColumns.push(new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_1__[\"ColumnMetadata\"]({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n closureType: \"ancestor\",\n referencedColumn: primaryColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.ancestorColumnName ? parentClosureEntityMetadata.treeOptions.ancestorColumnName(primaryColumn) : primaryColumn.propertyName + \"_ancestor\",\n options: {\n primary: true,\n length: primaryColumn.length,\n type: primaryColumn.type\n }\n }\n }));\n entityMetadata.ownColumns.push(new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_1__[\"ColumnMetadata\"]({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n closureType: \"descendant\",\n referencedColumn: primaryColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.descendantColumnName ? parentClosureEntityMetadata.treeOptions.descendantColumnName(primaryColumn) : primaryColumn.propertyName + \"_descendant\",\n options: {\n primary: true,\n length: primaryColumn.length,\n type: primaryColumn.type,\n }\n }\n }));\n });\n entityMetadata.ownIndices = [\n new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_3__[\"IndexMetadata\"]({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.ownColumns[0]],\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n }),\n new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_3__[\"IndexMetadata\"]({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.ownColumns[1]],\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n })\n ];\n // if tree level column was defined by a closure entity then add it to the junction columns as well\n if (parentClosureEntityMetadata.treeLevelColumn) {\n entityMetadata.ownColumns.push(new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_1__[\"ColumnMetadata\"]({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: \"level\",\n options: {\n type: this.connection.driver.mappedDataTypes.treeLevel,\n }\n }\n }));\n }\n // create junction table foreign keys\n entityMetadata.foreignKeys = [\n new _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_2__[\"ForeignKeyMetadata\"]({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: parentClosureEntityMetadata,\n columns: [entityMetadata.ownColumns[0]],\n referencedColumns: parentClosureEntityMetadata.primaryColumns,\n // onDelete: \"CASCADE\" // todo: does not work in mssql for some reason\n }),\n new _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_2__[\"ForeignKeyMetadata\"]({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: parentClosureEntityMetadata,\n columns: [entityMetadata.ownColumns[1]],\n referencedColumns: parentClosureEntityMetadata.primaryColumns,\n // onDelete: \"CASCADE\" // todo: does not work in mssql for some reason\n }),\n ];\n return entityMetadata;\n };\n return ClosureJunctionEntityMetadataBuilder;\n}());\n\n\n//# sourceMappingURL=ClosureJunctionEntityMetadataBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata-builder/EntityMetadataBuilder.js": -/*!********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata-builder/EntityMetadataBuilder.js ***! - \********************************************************************************/ -/*! exports provided: EntityMetadataBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityMetadataBuilder\", function() { return EntityMetadataBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/cockroachdb/CockroachDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../metadata/EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n/* harmony import */ var _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../metadata/ColumnMetadata */ \"./node_modules/typeorm/browser/metadata/ColumnMetadata.js\");\n/* harmony import */ var _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../metadata/IndexMetadata */ \"./node_modules/typeorm/browser/metadata/IndexMetadata.js\");\n/* harmony import */ var _metadata_RelationMetadata__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../metadata/RelationMetadata */ \"./node_modules/typeorm/browser/metadata/RelationMetadata.js\");\n/* harmony import */ var _metadata_EmbeddedMetadata__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../metadata/EmbeddedMetadata */ \"./node_modules/typeorm/browser/metadata/EmbeddedMetadata.js\");\n/* harmony import */ var _metadata_RelationIdMetadata__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../metadata/RelationIdMetadata */ \"./node_modules/typeorm/browser/metadata/RelationIdMetadata.js\");\n/* harmony import */ var _metadata_RelationCountMetadata__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../metadata/RelationCountMetadata */ \"./node_modules/typeorm/browser/metadata/RelationCountMetadata.js\");\n/* harmony import */ var _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../metadata/types/EventListenerTypes */ \"./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js\");\n/* harmony import */ var _MetadataUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./MetadataUtils */ \"./node_modules/typeorm/browser/metadata-builder/MetadataUtils.js\");\n/* harmony import */ var _JunctionEntityMetadataBuilder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./JunctionEntityMetadataBuilder */ \"./node_modules/typeorm/browser/metadata-builder/JunctionEntityMetadataBuilder.js\");\n/* harmony import */ var _ClosureJunctionEntityMetadataBuilder__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ClosureJunctionEntityMetadataBuilder */ \"./node_modules/typeorm/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js\");\n/* harmony import */ var _RelationJoinColumnBuilder__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./RelationJoinColumnBuilder */ \"./node_modules/typeorm/browser/metadata-builder/RelationJoinColumnBuilder.js\");\n/* harmony import */ var _metadata_EntityListenerMetadata__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../metadata/EntityListenerMetadata */ \"./node_modules/typeorm/browser/metadata/EntityListenerMetadata.js\");\n/* harmony import */ var _metadata_UniqueMetadata__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../metadata/UniqueMetadata */ \"./node_modules/typeorm/browser/metadata/UniqueMetadata.js\");\n/* harmony import */ var _metadata_CheckMetadata__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../metadata/CheckMetadata */ \"./node_modules/typeorm/browser/metadata/CheckMetadata.js\");\n/* harmony import */ var _metadata_ExclusionMetadata__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../metadata/ExclusionMetadata */ \"./node_modules/typeorm/browser/metadata/ExclusionMetadata.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nvar EntityMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function EntityMetadataBuilder(connection, metadataArgsStorage) {\n this.connection = connection;\n this.metadataArgsStorage = metadataArgsStorage;\n this.junctionEntityMetadataBuilder = new _JunctionEntityMetadataBuilder__WEBPACK_IMPORTED_MODULE_11__[\"JunctionEntityMetadataBuilder\"](connection);\n this.closureJunctionEntityMetadataBuilder = new _ClosureJunctionEntityMetadataBuilder__WEBPACK_IMPORTED_MODULE_12__[\"ClosureJunctionEntityMetadataBuilder\"](connection);\n this.relationJoinColumnBuilder = new _RelationJoinColumnBuilder__WEBPACK_IMPORTED_MODULE_13__[\"RelationJoinColumnBuilder\"](connection);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds a complete entity metadatas for the given entity classes.\n */\n EntityMetadataBuilder.prototype.build = function (entityClasses) {\n var _this = this;\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n var allTables = entityClasses ? this.metadataArgsStorage.filterTables(entityClasses) : this.metadataArgsStorage.tables;\n // filter out table metadata args for those we really create entity metadatas and tables in the db\n var realTables = allTables.filter(function (table) { return table.type === \"regular\" || table.type === \"closure\" || table.type === \"entity-child\" || table.type === \"view\"; });\n // create entity metadatas for a user defined entities (marked with @Entity decorator or loaded from entity schemas)\n var entityMetadatas = realTables.map(function (tableArgs) { return _this.createEntityMetadata(tableArgs); });\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach(function (entityMetadata) { return _this.computeParentEntityMetadata(entityMetadatas, entityMetadata); });\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach(function (metadata) {\n metadata.childEntityMetadatas = entityMetadatas.filter(function (childMetadata) {\n return metadata.target instanceof Function\n && childMetadata.target instanceof Function\n && _MetadataUtils__WEBPACK_IMPORTED_MODULE_10__[\"MetadataUtils\"].isInherited(childMetadata.target, metadata.target);\n });\n });\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType !== \"entity-child\"; })\n .forEach(function (entityMetadata) { return entityMetadata.build(); });\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType === \"entity-child\"; })\n .forEach(function (entityMetadata) { return entityMetadata.build(); });\n // compute entity metadata columns, relations, etc. first for the regular, non-single-table-inherited entity metadatas\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType !== \"entity-child\"; })\n .forEach(function (entityMetadata) { return _this.computeEntityMetadataStep1(entityMetadatas, entityMetadata); });\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType === \"entity-child\"; })\n .forEach(function (entityMetadata) { return _this.computeEntityMetadataStep1(entityMetadatas, entityMetadata); });\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach(function (entityMetadata) { return _this.computeEntityMetadataStep2(entityMetadata); });\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach(function (entityMetadata) { return _this.computeInverseProperties(entityMetadata, entityMetadatas); });\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType !== \"entity-child\"; })\n .forEach(function (entityMetadata) {\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations.filter(function (relation) { return relation.isOneToOne || relation.isManyToOne; }).forEach(function (relation) {\n var joinColumns = _this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);\n var _a = _this.relationJoinColumnBuilder.build(joinColumns, relation), foreignKey = _a.foreignKey, columns = _a.columns, uniqueConstraint = _a.uniqueConstraint; // create a foreign key based on its metadata args\n if (foreignKey) {\n relation.registerForeignKeys(foreignKey); // push it to the relation and thus register there a join column\n entityMetadata.foreignKeys.push(foreignKey);\n }\n if (columns) {\n relation.registerJoinColumns(columns);\n }\n if (uniqueConstraint) {\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]\n || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n var index = new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__[\"IndexMetadata\"]({\n entityMetadata: uniqueConstraint.entityMetadata,\n columns: uniqueConstraint.columns,\n args: {\n target: uniqueConstraint.target,\n name: uniqueConstraint.name,\n unique: true,\n synchronize: true\n }\n });\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n index.where = index.columns.map(function (column) {\n return _this.connection.driver.escape(column.databaseName) + \" IS NOT NULL\";\n }).join(\" AND \");\n }\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n }\n else {\n relation.entityMetadata.ownIndices.push(index);\n }\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(uniqueConstraint);\n }\n else {\n relation.entityMetadata.ownUniques.push(uniqueConstraint);\n }\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n }\n if (foreignKey && _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"]) {\n var index = new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__[\"IndexMetadata\"]({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n target: relation.entityMetadata.target,\n synchronize: true\n }\n });\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n }\n else {\n relation.entityMetadata.ownIndices.push(index);\n }\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n // create junction entity metadatas for entity many-to-many relations\n entityMetadata.relations.filter(function (relation) { return relation.isManyToMany; }).forEach(function (relation) {\n var joinTable = _this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName);\n if (!joinTable)\n return; // no join table set - no need to do anything (it means this is many-to-many inverse side)\n // here we create a junction entity metadata for a new junction table of many-to-many relation\n var junctionEntityMetadata = _this.junctionEntityMetadataBuilder.build(relation, joinTable);\n relation.registerForeignKeys.apply(relation, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(junctionEntityMetadata.foreignKeys)));\n relation.registerJoinColumns(junctionEntityMetadata.ownIndices[0].columns, junctionEntityMetadata.ownIndices[1].columns);\n relation.registerJunctionEntityMetadata(junctionEntityMetadata);\n // compute new entity metadata properties and push it to entity metadatas pool\n _this.computeEntityMetadataStep2(junctionEntityMetadata);\n _this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(junctionEntityMetadata);\n });\n });\n // update entity metadata depend properties\n entityMetadatas\n .forEach(function (entityMetadata) {\n entityMetadata.relationsWithJoinColumns = entityMetadata.relations.filter(function (relation) { return relation.isWithJoinColumn; });\n entityMetadata.hasNonNullableRelations = entityMetadata.relationsWithJoinColumns.some(function (relation) { return !relation.isNullable || relation.isPrimary; });\n });\n // generate closure junction tables for all closure tables\n entityMetadatas\n .filter(function (metadata) { return metadata.treeType === \"closure-table\"; })\n .forEach(function (entityMetadata) {\n var closureJunctionEntityMetadata = _this.closureJunctionEntityMetadataBuilder.build(entityMetadata);\n entityMetadata.closureJunctionTable = closureJunctionEntityMetadata;\n _this.computeEntityMetadataStep2(closureJunctionEntityMetadata);\n _this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(closureJunctionEntityMetadata);\n });\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(function (metadata) { return metadata.inheritancePattern === \"STI\" && metadata.discriminatorColumn; })\n .forEach(function (entityMetadata) { return _this.createKeysForTableInheritance(entityMetadata); });\n // build all indices (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.indices.forEach(function (index) { return index.build(_this.connection.namingStrategy); });\n });\n // build all unique constraints (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.uniques.forEach(function (unique) { return unique.build(_this.connection.namingStrategy); });\n });\n // build all check constraints\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.checks.forEach(function (check) { return check.build(_this.connection.namingStrategy); });\n });\n // build all exclusion constraints\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.exclusions.forEach(function (exclusion) { return exclusion.build(_this.connection.namingStrategy); });\n });\n // add lazy initializer for entity relations\n entityMetadatas\n .filter(function (metadata) { return metadata.target instanceof Function; })\n .forEach(function (entityMetadata) {\n entityMetadata.relations\n .filter(function (relation) { return relation.isLazy; })\n .forEach(function (relation) {\n _this.connection.relationLoader.enableLazyLoad(relation, entityMetadata.target.prototype);\n });\n });\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.columns.forEach(function (column) {\n // const target = column.embeddedMetadata ? column.embeddedMetadata.type : column.target;\n var generated = _this.metadataArgsStorage.findGenerated(column.target, column.propertyName);\n if (generated) {\n column.isGenerated = true;\n column.generationStrategy = generated.strategy;\n if (generated.strategy === \"uuid\") {\n column.type = \"uuid\";\n }\n else if (generated.strategy === \"rowid\") {\n column.type = \"int\";\n }\n else {\n column.type = column.type || Number;\n }\n column.build(_this.connection);\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n });\n return entityMetadatas;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates entity metadata from the given table args.\n * Creates column, relation, etc. metadatas for everything this entity metadata owns.\n */\n EntityMetadataBuilder.prototype.createEntityMetadata = function (tableArgs) {\n // we take all \"inheritance tree\" from a target entity to collect all stored metadata args\n // (by decorators or inside entity schemas). For example for target Post < ContentModel < Unit\n // it will be an array of [Post, ContentModel, Unit] and we can then get all metadata args of those classes\n var inheritanceTree = tableArgs.target instanceof Function\n ? _MetadataUtils__WEBPACK_IMPORTED_MODULE_10__[\"MetadataUtils\"].getInheritanceTree(tableArgs.target)\n : [tableArgs.target]; // todo: implement later here inheritance for string-targets\n var tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);\n var tableTree = this.metadataArgsStorage.findTree(tableArgs.target);\n // if single table inheritance used, we need to copy all children columns in to parent table\n var singleTableChildrenTargets;\n if ((tableInheritance && tableInheritance.pattern === \"STI\") || tableArgs.type === \"entity-child\") {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map(function (args) { return args.target; })\n .filter(function (target) { return target instanceof Function; });\n inheritanceTree.push.apply(inheritanceTree, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(singleTableChildrenTargets)));\n }\n return new _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_2__[\"EntityMetadata\"]({\n connection: this.connection,\n args: tableArgs,\n inheritanceTree: inheritanceTree,\n tableTree: tableTree,\n inheritancePattern: tableInheritance ? tableInheritance.pattern : undefined\n });\n };\n EntityMetadataBuilder.prototype.computeParentEntityMetadata = function (allEntityMetadatas, entityMetadata) {\n // after all metadatas created we set parent entity metadata for table inheritance\n if (entityMetadata.tableType === \"entity-child\") {\n entityMetadata.parentEntityMetadata = allEntityMetadatas.find(function (allEntityMetadata) {\n return allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target) !== -1 && allEntityMetadata.inheritancePattern === \"STI\";\n });\n }\n };\n EntityMetadataBuilder.prototype.computeEntityMetadataStep1 = function (allEntityMetadatas, entityMetadata) {\n var _a, _b, _c;\n var _this = this;\n var entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);\n var discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value;\n }\n else {\n entityMetadata.discriminatorValue = entityMetadata.target.name;\n }\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree))\n .map(function (embedded) {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map(function (column) {\n column.isNullable = true;\n return column;\n });\n }\n return embedded;\n });\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map(function (args) {\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(function (column) { return column.propertyName === args.propertyName; });\n var column = new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_3__[\"ColumnMetadata\"]({ connection: _this.connection, entityMetadata: entityMetadata, args: args });\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n var columnInSingleTableInheritedChild = allEntityMetadatas.find(function (otherEntityMetadata) { return otherEntityMetadata.tableType === \"entity-child\" && otherEntityMetadata.target === args.target; });\n if (columnInSingleTableInheritedChild)\n column.isNullable = true;\n return column;\n });\n // for table inheritance we need to add a discriminator column\n //\n if (entityInheritance && entityInheritance.column) {\n var discriminatorColumnName_1 = entityInheritance.column && entityInheritance.column.name ? entityInheritance.column.name : \"type\";\n var discriminatorColumn = entityMetadata.ownColumns.find(function (column) { return column.propertyName === discriminatorColumnName_1; });\n if (!discriminatorColumn) {\n discriminatorColumn = new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_3__[\"ColumnMetadata\"]({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: discriminatorColumnName_1,\n options: entityInheritance.column || {\n name: discriminatorColumnName_1,\n type: \"varchar\",\n nullable: false\n }\n }\n });\n discriminatorColumn.isVirtual = true;\n discriminatorColumn.isDiscriminator = true;\n entityMetadata.ownColumns.push(discriminatorColumn);\n }\n else {\n discriminatorColumn.isDiscriminator = true;\n }\n }\n // add discriminator column to the child entity metadatas\n // discriminator column will not be there automatically since we are creating it in the code above\n if (entityMetadata.tableType === \"entity-child\") {\n var discriminatorColumn_1 = entityMetadata.parentEntityMetadata.ownColumns.find(function (column) { return column.isDiscriminator; });\n if (discriminatorColumn_1 && !entityMetadata.ownColumns.find(function (column) { return column === discriminatorColumn_1; })) {\n entityMetadata.ownColumns.push(discriminatorColumn_1);\n }\n }\n var namingStrategy = this.connection.namingStrategy;\n // check if tree is used then we need to add extra columns for specific tree types\n if (entityMetadata.treeType === \"materialized-path\") {\n entityMetadata.ownColumns.push(new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_3__[\"ColumnMetadata\"]({\n connection: this.connection,\n entityMetadata: entityMetadata,\n materializedPath: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: \"mpath\",\n options: /*tree.column || */ {\n name: namingStrategy.materializedPathColumnName,\n type: \"varchar\",\n nullable: true,\n default: \"\"\n }\n }\n }));\n }\n else if (entityMetadata.treeType === \"nested-set\") {\n var _d = namingStrategy.nestedSetColumnNames, left = _d.left, right = _d.right;\n entityMetadata.ownColumns.push(new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_3__[\"ColumnMetadata\"]({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetLeft: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: left,\n options: /*tree.column || */ {\n name: left,\n type: \"integer\",\n nullable: false,\n default: 1\n }\n }\n }));\n entityMetadata.ownColumns.push(new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_3__[\"ColumnMetadata\"]({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetRight: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: right,\n options: /*tree.column || */ {\n name: right,\n type: \"integer\",\n nullable: false,\n default: 2\n }\n }\n }));\n }\n entityMetadata.ownRelations = this.metadataArgsStorage.filterRelations(entityMetadata.inheritanceTree).map(function (args) {\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownRelations.find(function (relation) { return relation.propertyName === args.propertyName; });\n return new _metadata_RelationMetadata__WEBPACK_IMPORTED_MODULE_5__[\"RelationMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(entityMetadata.inheritanceTree).map(function (args) {\n // for single table children we reuse relation ids created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationIds.find(function (relationId) { return relationId.propertyName === args.propertyName; });\n return new _metadata_RelationIdMetadata__WEBPACK_IMPORTED_MODULE_7__[\"RelationIdMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(entityMetadata.inheritanceTree).map(function (args) {\n // for single table children we reuse relation counts created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationCounts.find(function (relationCount) { return relationCount.propertyName === args.propertyName; });\n return new _metadata_RelationCountMetadata__WEBPACK_IMPORTED_MODULE_8__[\"RelationCountMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.ownListeners = this.metadataArgsStorage.filterListeners(entityMetadata.inheritanceTree).map(function (args) {\n return new _metadata_EntityListenerMetadata__WEBPACK_IMPORTED_MODULE_14__[\"EntityListenerMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.checks = this.metadataArgsStorage.filterChecks(entityMetadata.inheritanceTree).map(function (args) {\n return new _metadata_CheckMetadata__WEBPACK_IMPORTED_MODULE_16__[\"CheckMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n entityMetadata.exclusions = this.metadataArgsStorage.filterExclusions(entityMetadata.inheritanceTree).map(function (args) {\n return new _metadata_ExclusionMetadata__WEBPACK_IMPORTED_MODULE_17__[\"ExclusionMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n }\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"]) {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(function (args) { return !args.unique; })\n .map(function (args) {\n return new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__[\"IndexMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n var uniques = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(function (args) { return args.unique; })\n .map(function (args) {\n return new _metadata_UniqueMetadata__WEBPACK_IMPORTED_MODULE_15__[\"UniqueMetadata\"]({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n }\n });\n });\n (_a = entityMetadata.ownUniques).push.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(uniques)));\n }\n else {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree).map(function (args) {\n return new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__[\"IndexMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n }\n // Mysql and SAP HANA stores unique constraints as unique indices.\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n var indices = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(function (args) {\n return new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__[\"IndexMetadata\"]({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n unique: true,\n synchronize: true\n }\n });\n });\n (_b = entityMetadata.ownIndices).push.apply(_b, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(indices)));\n }\n else {\n var uniques = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(function (args) {\n return new _metadata_UniqueMetadata__WEBPACK_IMPORTED_MODULE_15__[\"UniqueMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n (_c = entityMetadata.ownUniques).push.apply(_c, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(uniques)));\n }\n };\n /**\n * Creates from the given embedded metadata args real embedded metadatas with its columns and relations,\n * and does the same for all its sub-embeddeds (goes recursively).\n */\n EntityMetadataBuilder.prototype.createEmbeddedsRecursively = function (entityMetadata, embeddedArgs) {\n var _this = this;\n return embeddedArgs.map(function (embeddedArgs) {\n var embeddedMetadata = new _metadata_EmbeddedMetadata__WEBPACK_IMPORTED_MODULE_6__[\"EmbeddedMetadata\"]({ entityMetadata: entityMetadata, args: embeddedArgs });\n var targets = _MetadataUtils__WEBPACK_IMPORTED_MODULE_10__[\"MetadataUtils\"].getInheritanceTree(embeddedMetadata.type);\n embeddedMetadata.columns = _this.metadataArgsStorage.filterColumns(targets).map(function (args) {\n return new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_3__[\"ColumnMetadata\"]({ connection: _this.connection, entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.relations = _this.metadataArgsStorage.filterRelations(targets).map(function (args) {\n return new _metadata_RelationMetadata__WEBPACK_IMPORTED_MODULE_5__[\"RelationMetadata\"]({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.listeners = _this.metadataArgsStorage.filterListeners(targets).map(function (args) {\n return new _metadata_EntityListenerMetadata__WEBPACK_IMPORTED_MODULE_14__[\"EntityListenerMetadata\"]({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.indices = _this.metadataArgsStorage.filterIndices(targets).map(function (args) {\n return new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__[\"IndexMetadata\"]({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.uniques = _this.metadataArgsStorage.filterUniques(targets).map(function (args) {\n return new _metadata_UniqueMetadata__WEBPACK_IMPORTED_MODULE_15__[\"UniqueMetadata\"]({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.relationIds = _this.metadataArgsStorage.filterRelationIds(targets).map(function (args) {\n return new _metadata_RelationIdMetadata__WEBPACK_IMPORTED_MODULE_7__[\"RelationIdMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n embeddedMetadata.relationCounts = _this.metadataArgsStorage.filterRelationCounts(targets).map(function (args) {\n return new _metadata_RelationCountMetadata__WEBPACK_IMPORTED_MODULE_8__[\"RelationCountMetadata\"]({ entityMetadata: entityMetadata, args: args });\n });\n embeddedMetadata.embeddeds = _this.createEmbeddedsRecursively(entityMetadata, _this.metadataArgsStorage.filterEmbeddeds(targets));\n embeddedMetadata.embeddeds.forEach(function (subEmbedded) { return subEmbedded.parentEmbeddedMetadata = embeddedMetadata; });\n entityMetadata.allEmbeddeds.push(embeddedMetadata);\n return embeddedMetadata;\n });\n };\n /**\n * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).\n */\n EntityMetadataBuilder.prototype.computeEntityMetadataStep2 = function (entityMetadata) {\n var _this = this;\n entityMetadata.embeddeds.forEach(function (embedded) { return embedded.build(_this.connection); });\n entityMetadata.embeddeds.forEach(function (embedded) {\n embedded.columnsFromTree.forEach(function (column) { return column.build(_this.connection); });\n embedded.relationsFromTree.forEach(function (relation) { return relation.build(); });\n });\n entityMetadata.ownColumns.forEach(function (column) { return column.build(_this.connection); });\n entityMetadata.ownRelations.forEach(function (relation) { return relation.build(); });\n entityMetadata.relations = entityMetadata.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.relationsFromTree); }, entityMetadata.ownRelations);\n entityMetadata.eagerRelations = entityMetadata.relations.filter(function (relation) { return relation.isEager; });\n entityMetadata.lazyRelations = entityMetadata.relations.filter(function (relation) { return relation.isLazy; });\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToOne; });\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToMany; });\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToOne; });\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToMany; });\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToOneOwner; });\n entityMetadata.ownerManyToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToManyOwner; });\n entityMetadata.treeParentRelation = entityMetadata.relations.find(function (relation) { return relation.isTreeParent; });\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(function (relation) { return relation.isTreeChildren; });\n entityMetadata.columns = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.columnsFromTree); }, entityMetadata.ownColumns);\n entityMetadata.listeners = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.listenersFromTree); }, entityMetadata.ownListeners);\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__[\"EventListenerTypes\"].AFTER_LOAD; });\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__[\"EventListenerTypes\"].AFTER_INSERT; });\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__[\"EventListenerTypes\"].AFTER_UPDATE; });\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__[\"EventListenerTypes\"].AFTER_REMOVE; });\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__[\"EventListenerTypes\"].BEFORE_INSERT; });\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__[\"EventListenerTypes\"].BEFORE_UPDATE; });\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === _metadata_types_EventListenerTypes__WEBPACK_IMPORTED_MODULE_9__[\"EventListenerTypes\"].BEFORE_REMOVE; });\n entityMetadata.indices = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.indicesFromTree); }, entityMetadata.ownIndices);\n entityMetadata.uniques = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.uniquesFromTree); }, entityMetadata.ownUniques);\n entityMetadata.primaryColumns = entityMetadata.columns.filter(function (column) { return column.isPrimary; });\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(function (column) { return !column.isVirtual; });\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(function (column) { return column.closureType === \"ancestor\"; });\n entityMetadata.descendantColumns = entityMetadata.columns.filter(function (column) { return column.closureType === \"descendant\"; });\n entityMetadata.hasMultiplePrimaryKeys = entityMetadata.primaryColumns.length > 1;\n entityMetadata.generatedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated || column.isObjectId; });\n entityMetadata.hasUUIDGeneratedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated || column.generationStrategy === \"uuid\"; }).length > 0;\n entityMetadata.createDateColumn = entityMetadata.columns.find(function (column) { return column.isCreateDate; });\n entityMetadata.updateDateColumn = entityMetadata.columns.find(function (column) { return column.isUpdateDate; });\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(function (column) { return column.isDeleteDate; });\n entityMetadata.versionColumn = entityMetadata.columns.find(function (column) { return column.isVersion; });\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(function (column) { return column.isDiscriminator; });\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(function (column) { return column.isTreeLevel; });\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(function (column) { return column.isNestedSetLeft; });\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(function (column) { return column.isNestedSetRight; });\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(function (column) { return column.isMaterializedPath; });\n entityMetadata.objectIdColumn = entityMetadata.columns.find(function (column) { return column.isObjectId; });\n entityMetadata.foreignKeys.forEach(function (foreignKey) { return foreignKey.build(_this.connection.namingStrategy); });\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();\n entityMetadata.relationIds.forEach(function (relationId) { return relationId.build(); });\n entityMetadata.relationCounts.forEach(function (relationCount) { return relationCount.build(); });\n entityMetadata.embeddeds.forEach(function (embedded) {\n embedded.relationIdsFromTree.forEach(function (relationId) { return relationId.build(); });\n embedded.relationCountsFromTree.forEach(function (relationCount) { return relationCount.build(); });\n });\n };\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n EntityMetadataBuilder.prototype.computeInverseProperties = function (entityMetadata, entityMetadatas) {\n entityMetadata.relations.forEach(function (relation) {\n // compute inverse side (related) entity metadatas for all relation metadatas\n var inverseEntityMetadata = entityMetadatas.find(function (m) { return m.target === relation.type || (typeof relation.type === \"string\" && (m.targetName === relation.type || m.givenTableName === relation.type)); });\n if (!inverseEntityMetadata)\n throw new Error(\"Entity metadata for \" + entityMetadata.name + \"#\" + relation.propertyPath + \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\");\n relation.inverseEntityMetadata = inverseEntityMetadata;\n relation.inverseSidePropertyPath = relation.buildInverseSidePropertyPath();\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(function (foundRelation) { return foundRelation.propertyPath === relation.inverseSidePropertyPath; });\n });\n };\n /**\n * Creates indices for the table of single table inheritance.\n */\n EntityMetadataBuilder.prototype.createKeysForTableInheritance = function (entityMetadata) {\n entityMetadata.indices.push(new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_4__[\"IndexMetadata\"]({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.discriminatorColumn],\n args: {\n target: entityMetadata.target,\n unique: false\n }\n }));\n };\n return EntityMetadataBuilder;\n}());\n\n\n//# sourceMappingURL=EntityMetadataBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata-builder/EntityMetadataBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata-builder/EntityMetadataValidator.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata-builder/EntityMetadataValidator.js ***! - \**********************************************************************************/ -/*! exports provided: EntityMetadataValidator */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityMetadataValidator\", function() { return EntityMetadataValidator; });\n/* harmony import */ var _error_MissingPrimaryColumnError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/MissingPrimaryColumnError */ \"./node_modules/typeorm/browser/error/MissingPrimaryColumnError.js\");\n/* harmony import */ var _error_CircularRelationsError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/CircularRelationsError */ \"./node_modules/typeorm/browser/error/CircularRelationsError.js\");\n/* harmony import */ var _util_DepGraph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/DepGraph */ \"./node_modules/typeorm/browser/util/DepGraph.js\");\n/* harmony import */ var _error_DataTypeNotSupportedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/DataTypeNotSupportedError */ \"./node_modules/typeorm/browser/error/DataTypeNotSupportedError.js\");\n/* harmony import */ var _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../driver/mongodb/MongoDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _error_NoConnectionOptionError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/NoConnectionOptionError */ \"./node_modules/typeorm/browser/error/NoConnectionOptionError.js\");\n/* harmony import */ var _error_InitializedRelationError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../error/InitializedRelationError */ \"./node_modules/typeorm/browser/error/InitializedRelationError.js\");\n\n\n\n\n\n\n\n\n\n\n/// todo: add check if there are multiple tables with the same name\n/// todo: add checks when generated column / table names are too long for the specific driver\n// todo: type in function validation, inverse side function validation\n// todo: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: check if multiple tree parent metadatas in validator\n// todo: tree decorators can be used only on closure table (validation)\n// todo: throw error if parent tree metadata was not specified in a closure table\n// todo: MetadataArgsStorage: type in function validation, inverse side function validation\n// todo: MetadataArgsStorage: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: MetadataArgsStorage: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: MetadataArgsStorage: check for duplicate targets too since this check has been removed too\n// todo: check if relation decorator contains primary: true and nullable: true\n// todo: check column length, precision. scale\n// todo: MySQL index can be unique or spatial or fulltext\n/**\n * Validates built entity metadatas.\n */\nvar EntityMetadataValidator = /** @class */ (function () {\n function EntityMetadataValidator() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Validates all given entity metadatas.\n */\n EntityMetadataValidator.prototype.validateMany = function (entityMetadatas, driver) {\n var _this = this;\n entityMetadatas.forEach(function (entityMetadata) { return _this.validate(entityMetadata, entityMetadatas, driver); });\n this.validateDependencies(entityMetadatas);\n this.validateEagerRelations(entityMetadatas);\n };\n /**\n * Validates given entity metadata.\n */\n EntityMetadataValidator.prototype.validate = function (entityMetadata, allEntityMetadatas, driver) {\n // check if table metadata has an id\n if (!entityMetadata.primaryColumns.length && !entityMetadata.isJunction)\n throw new _error_MissingPrimaryColumnError__WEBPACK_IMPORTED_MODULE_0__[\"MissingPrimaryColumnError\"](entityMetadata);\n // validate if table is using inheritance it has a discriminator\n // also validate if discriminator values are not empty and not repeated\n if (entityMetadata.inheritancePattern === \"STI\" || entityMetadata.tableType === \"entity-child\") {\n if (!entityMetadata.discriminatorColumn)\n throw new Error(\"Entity \" + entityMetadata.name + \" using single-table inheritance, it should also have a discriminator column. Did you forget to put discriminator column options?\");\n if (typeof entityMetadata.discriminatorValue === \"undefined\")\n throw new Error(\"Entity \" + entityMetadata.name + \" has an undefined discriminator value. Discriminator value should be defined.\");\n var sameDiscriminatorValueEntityMetadata = allEntityMetadatas.find(function (metadata) {\n return metadata !== entityMetadata\n && (metadata.inheritancePattern === \"STI\" || metadata.tableType === \"entity-child\")\n && metadata.discriminatorValue === entityMetadata.discriminatorValue\n && metadata.inheritanceTree.some(function (parent) { return entityMetadata.inheritanceTree.indexOf(parent) !== -1; });\n });\n if (sameDiscriminatorValueEntityMetadata)\n throw new Error(\"Entities \" + entityMetadata.name + \" and \" + sameDiscriminatorValueEntityMetadata.name + \" have the same discriminator values. Make sure they are different while using the @ChildEntity decorator.\");\n }\n entityMetadata.relationCounts.forEach(function (relationCount) {\n if (relationCount.relation.isManyToOne || relationCount.relation.isOneToOne)\n throw new Error(\"Relation count can not be implemented on ManyToOne or OneToOne relations.\");\n });\n if (!(driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_4__[\"MongoDriver\"])) {\n entityMetadata.columns.forEach(function (column) {\n var normalizedColumn = driver.normalizeType(column);\n if (driver.supportedDataTypes.indexOf(normalizedColumn) === -1)\n throw new _error_DataTypeNotSupportedError__WEBPACK_IMPORTED_MODULE_3__[\"DataTypeNotSupportedError\"](column, normalizedColumn, driver.options.type);\n if (column.length && driver.withLengthColumnTypes.indexOf(normalizedColumn) === -1)\n throw new Error(\"Column \" + column.propertyName + \" of Entity \" + entityMetadata.name + \" does not support length property.\");\n if (column.type === \"enum\" && !column.enum && !column.enumName)\n throw new Error(\"Column \\\"\" + column.propertyName + \"\\\" of Entity \\\"\" + entityMetadata.name + \"\\\" is defined as enum, but missing \\\"enum\\\" or \\\"enumName\\\" properties.\");\n });\n }\n if (driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_4__[\"MysqlDriver\"] || driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_4__[\"AuroraDataApiDriver\"]) {\n var generatedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated && column.generationStrategy !== \"uuid\"; });\n if (generatedColumns.length > 1)\n throw new Error(\"Error in \" + entityMetadata.name + \" entity. There can be only one auto-increment column in MySql table.\");\n }\n // for mysql we are able to not define a default selected database, instead all entities can have their database\n // defined in their decorators. To make everything work either all entities must have database define and we\n // can live without database set in the connection options, either database in the connection options must be set\n if (driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_4__[\"MysqlDriver\"]) {\n var metadatasWithDatabase = allEntityMetadatas.filter(function (metadata) { return metadata.database; });\n if (metadatasWithDatabase.length === 0 && !driver.database)\n throw new _error_NoConnectionOptionError__WEBPACK_IMPORTED_MODULE_5__[\"NoConnectionOptionError\"](\"database\");\n }\n if (driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_4__[\"SqlServerDriver\"]) {\n var charsetColumns = entityMetadata.columns.filter(function (column) { return column.charset; });\n if (charsetColumns.length > 1)\n throw new Error(\"Character set specifying is not supported in Sql Server\");\n }\n // check if relations are all without initialized properties\n var entityInstance = entityMetadata.create();\n entityMetadata.relations.forEach(function (relation) {\n if (relation.isManyToMany || relation.isOneToMany) {\n // we skip relations for which persistence is disabled since initialization in them cannot harm somehow\n if (relation.persistenceEnabled === false)\n return;\n // get entity relation value and check if its an array\n var relationInitializedValue = relation.getEntityValue(entityInstance);\n if (Array.isArray(relationInitializedValue))\n throw new _error_InitializedRelationError__WEBPACK_IMPORTED_MODULE_6__[\"InitializedRelationError\"](relation);\n }\n });\n // validate relations\n entityMetadata.relations.forEach(function (relation) {\n // check join tables:\n // using JoinTable is possible only on one side of the many-to-many relation\n // todo(dima): fix\n // if (relation.joinTable) {\n // if (!relation.isManyToMany)\n // throw new UsingJoinTableIsNotAllowedError(entityMetadata, relation);\n // // if there is inverse side of the relation, then check if it does not have join table too\n // if (relation.hasInverseSide && relation.inverseRelation.joinTable)\n // throw new UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation);\n // }\n // check join columns:\n // using JoinColumn is possible only on one side of the relation and on one-to-one, many-to-one relation types\n // first check if relation is one-to-one or many-to-one\n // todo(dima): fix\n /*if (relation.joinColumn) {\n\n // join column can be applied only on one-to-one and many-to-one relations\n if (!relation.isOneToOne && !relation.isManyToOne)\n throw new UsingJoinColumnIsNotAllowedError(entityMetadata, relation);\n\n // if there is inverse side of the relation, then check if it does not have join table too\n if (relation.hasInverseSide && relation.inverseRelation.joinColumn && relation.isOneToOne)\n throw new UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation);\n\n // check if join column really has referenced column\n if (relation.joinColumn && !relation.joinColumn.referencedColumn)\n throw new Error(`Join column does not have referenced column set`);\n\n }\n\n // if its a one-to-one relation and JoinColumn is missing on both sides of the relation\n // or its one-side relation without JoinColumn we should give an error\n if (!relation.joinColumn && relation.isOneToOne && (!relation.hasInverseSide || !relation.inverseRelation.joinColumn))\n throw new MissingJoinColumnError(entityMetadata, relation);*/\n // if its a many-to-many relation and JoinTable is missing on both sides of the relation\n // or its one-side relation without JoinTable we should give an error\n // todo(dima): fix it\n // if (!relation.joinTable && relation.isManyToMany && (!relation.hasInverseSide || !relation.inverseRelation.joinTable))\n // throw new MissingJoinTableError(entityMetadata, relation);\n // todo: validate if its one-to-one and side which does not have join column MUST have inverse side\n // todo: validate if its many-to-many and side which does not have join table MUST have inverse side\n // todo: if there is a relation, and inverse side is specified only on one side, shall we give error\n // todo: with message like: \"Inverse side is specified only on one side of the relationship. Specify on other side too to prevent confusion\".\n // todo: add validation if there two entities with the same target, and show error message with description of the problem (maybe file was renamed/moved but left in output directory)\n // todo: check if there are multiple columns on the same column applied.\n // todo: check column type if is missing in relational databases (throw new Error(`Column type of ${type} cannot be determined.`);)\n // todo: include driver-specific checks. for example in mongodb empty prefixes are not allowed\n // todo: if multiple columns with same name - throw exception, including cases when columns are in embeds with same prefixes or without prefix at all\n // todo: if multiple primary key used, at least one of them must be unique or @Index decorator must be set on entity\n // todo: check if entity with duplicate names, some decorators exist\n });\n // make sure cascade remove is not set for both sides of relationships (can be set in OneToOne decorators)\n entityMetadata.relations.forEach(function (relation) {\n var isCircularCascadeRemove = relation.isCascadeRemove && relation.inverseRelation && relation.inverseRelation.isCascadeRemove;\n if (isCircularCascadeRemove)\n throw new Error(\"Relation \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" + relation.inverseRelation.entityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" both has cascade remove set. \" +\n \"This may lead to unexpected circular removals. Please set cascade remove only from one side of relationship.\");\n }); // todo: maybe better just deny removal from one to one relation without join column?\n entityMetadata.eagerRelations.forEach(function (relation) {\n });\n };\n /**\n * Validates dependencies of the entity metadatas.\n */\n EntityMetadataValidator.prototype.validateDependencies = function (entityMetadatas) {\n var graph = new _util_DepGraph__WEBPACK_IMPORTED_MODULE_2__[\"DepGraph\"]();\n entityMetadatas.forEach(function (entityMetadata) {\n graph.addNode(entityMetadata.name);\n });\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.relationsWithJoinColumns\n .filter(function (relation) { return !relation.isNullable; })\n .forEach(function (relation) {\n graph.addDependency(entityMetadata.name, relation.inverseEntityMetadata.name);\n });\n });\n try {\n graph.overallOrder();\n }\n catch (err) {\n throw new _error_CircularRelationsError__WEBPACK_IMPORTED_MODULE_1__[\"CircularRelationsError\"](err.toString().replace(\"Error: Dependency Cycle Found: \", \"\"));\n }\n };\n /**\n * Validates eager relations to prevent circular dependency in them.\n */\n EntityMetadataValidator.prototype.validateEagerRelations = function (entityMetadatas) {\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.eagerRelations.forEach(function (relation) {\n if (relation.inverseRelation && relation.inverseRelation.isEager)\n throw new Error(\"Circular eager relations are disallowed. \" +\n (entityMetadata.targetName + \"#\" + relation.propertyPath + \" contains \\\"eager: true\\\", and its inverse side \") +\n (relation.inverseEntityMetadata.targetName + \"#\" + relation.inverseRelation.propertyPath + \" contains \\\"eager: true\\\" as well.\") +\n \" Remove \\\"eager: true\\\" from one side of the relation.\");\n });\n });\n };\n return EntityMetadataValidator;\n}());\n\n\n//# sourceMappingURL=EntityMetadataValidator.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata-builder/EntityMetadataValidator.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata-builder/JunctionEntityMetadataBuilder.js": -/*!****************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata-builder/JunctionEntityMetadataBuilder.js ***! - \****************************************************************************************/ -/*! exports provided: JunctionEntityMetadataBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JunctionEntityMetadataBuilder\", function() { return JunctionEntityMetadataBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/mysql/MysqlDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../metadata/ColumnMetadata */ \"./node_modules/typeorm/browser/metadata/ColumnMetadata.js\");\n/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../metadata/EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n/* harmony import */ var _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../metadata/ForeignKeyMetadata */ \"./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js\");\n/* harmony import */ var _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../metadata/IndexMetadata */ \"./node_modules/typeorm/browser/metadata/IndexMetadata.js\");\n\n\n\n\n\n\n\n/**\n * Creates EntityMetadata for junction tables.\n * Junction tables are tables generated by many-to-many relations.\n */\nvar JunctionEntityMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function JunctionEntityMetadataBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds EntityMetadata for the junction of the given many-to-many relation.\n */\n JunctionEntityMetadataBuilder.prototype.build = function (relation, joinTable) {\n var _this = this;\n var referencedColumns = this.collectReferencedColumns(relation, joinTable);\n var inverseReferencedColumns = this.collectInverseReferencedColumns(relation, joinTable);\n var joinTableName = joinTable.name || this.connection.namingStrategy.joinTableName(relation.entityMetadata.tableNameWithoutPrefix, relation.inverseEntityMetadata.tableNameWithoutPrefix, relation.propertyPath, relation.inverseRelation ? relation.inverseRelation.propertyName : \"\");\n var entityMetadata = new _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__[\"EntityMetadata\"]({\n connection: this.connection,\n args: {\n target: \"\",\n name: joinTableName,\n type: \"junction\",\n database: joinTable.database || relation.entityMetadata.database,\n schema: joinTable.schema || relation.entityMetadata.schema,\n }\n });\n entityMetadata.build();\n // create original side junction columns\n var junctionColumns = referencedColumns.map(function (referencedColumn) {\n var joinColumn = joinTable.joinColumns ? joinTable.joinColumns.find(function (joinColumnArgs) {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === referencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n var columnName = joinColumn && joinColumn.name ? joinColumn.name\n : _this.connection.namingStrategy.joinTableColumnName(relation.entityMetadata.tableNameWithoutPrefix, referencedColumn.propertyName, referencedColumn.databaseName);\n return new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_2__[\"ColumnMetadata\"]({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: referencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n name: columnName,\n length: !referencedColumn.length\n && (_this.connection.driver instanceof _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || _this.connection.driver instanceof _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"])\n && (referencedColumn.generationStrategy === \"uuid\" || referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length,\n width: referencedColumn.width,\n type: referencedColumn.type,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.zerofill ? true : referencedColumn.unsigned,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n // create inverse side junction columns\n var inverseJunctionColumns = inverseReferencedColumns.map(function (inverseReferencedColumn) {\n var joinColumn = joinTable.inverseJoinColumns ? joinTable.inverseJoinColumns.find(function (joinColumnArgs) {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === inverseReferencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n var columnName = joinColumn && joinColumn.name ? joinColumn.name\n : _this.connection.namingStrategy.joinTableInverseColumnName(relation.inverseEntityMetadata.tableNameWithoutPrefix, inverseReferencedColumn.propertyName, inverseReferencedColumn.databaseName);\n return new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_2__[\"ColumnMetadata\"]({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: inverseReferencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n length: !inverseReferencedColumn.length\n && (_this.connection.driver instanceof _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || _this.connection.driver instanceof _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"])\n && (inverseReferencedColumn.generationStrategy === \"uuid\" || inverseReferencedColumn.type === \"uuid\")\n ? \"36\"\n : inverseReferencedColumn.length,\n width: inverseReferencedColumn.width,\n type: inverseReferencedColumn.type,\n precision: inverseReferencedColumn.precision,\n scale: inverseReferencedColumn.scale,\n charset: inverseReferencedColumn.charset,\n collation: inverseReferencedColumn.collation,\n zerofill: inverseReferencedColumn.zerofill,\n unsigned: inverseReferencedColumn.zerofill ? true : inverseReferencedColumn.unsigned,\n enum: inverseReferencedColumn.enum,\n enumName: inverseReferencedColumn.enumName,\n name: columnName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n this.changeDuplicatedColumnNames(junctionColumns, inverseJunctionColumns);\n // set junction table columns\n entityMetadata.ownerColumns = junctionColumns;\n entityMetadata.inverseColumns = inverseJunctionColumns;\n entityMetadata.ownColumns = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(junctionColumns)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(inverseJunctionColumns));\n entityMetadata.ownColumns.forEach(function (column) { return column.relationMetadata = relation; });\n // create junction table foreign keys\n entityMetadata.foreignKeys = relation.createForeignKeyConstraints ? [\n new _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_4__[\"ForeignKeyMetadata\"]({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.entityMetadata,\n columns: junctionColumns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete || \"CASCADE\"\n }),\n new _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_4__[\"ForeignKeyMetadata\"]({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n columns: inverseJunctionColumns,\n referencedColumns: inverseReferencedColumns,\n onDelete: relation.onDelete || \"CASCADE\"\n }),\n ] : [];\n // create junction table indices\n entityMetadata.ownIndices = [\n new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_5__[\"IndexMetadata\"]({\n entityMetadata: entityMetadata,\n columns: junctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n }),\n new _metadata_IndexMetadata__WEBPACK_IMPORTED_MODULE_5__[\"IndexMetadata\"]({\n entityMetadata: entityMetadata,\n columns: inverseJunctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n })\n ];\n // finally return entity metadata\n return entityMetadata;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Collects referenced columns from the given join column args.\n */\n JunctionEntityMetadataBuilder.prototype.collectReferencedColumns = function (relation, joinTable) {\n var hasAnyReferencedColumnName = joinTable.joinColumns ? joinTable.joinColumns.find(function (joinColumn) { return !!joinColumn.referencedColumnName; }) : false;\n if (!joinTable.joinColumns || (joinTable.joinColumns && !hasAnyReferencedColumnName)) {\n return relation.entityMetadata.columns.filter(function (column) { return column.isPrimary; });\n }\n else {\n return joinTable.joinColumns.map(function (joinColumn) {\n var referencedColumn = relation.entityMetadata.columns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; });\n if (!referencedColumn)\n throw new Error(\"Referenced column \" + joinColumn.referencedColumnName + \" was not found in entity \" + relation.entityMetadata.name);\n return referencedColumn;\n });\n }\n };\n /**\n * Collects inverse referenced columns from the given join column args.\n */\n JunctionEntityMetadataBuilder.prototype.collectInverseReferencedColumns = function (relation, joinTable) {\n var hasInverseJoinColumns = !!joinTable.inverseJoinColumns;\n var hasAnyInverseReferencedColumnName = hasInverseJoinColumns ? joinTable.inverseJoinColumns.find(function (joinColumn) { return !!joinColumn.referencedColumnName; }) : false;\n if (!hasInverseJoinColumns || (hasInverseJoinColumns && !hasAnyInverseReferencedColumnName)) {\n return relation.inverseEntityMetadata.primaryColumns;\n }\n else {\n return joinTable.inverseJoinColumns.map(function (joinColumn) {\n var referencedColumn = relation.inverseEntityMetadata.ownColumns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; });\n if (!referencedColumn)\n throw new Error(\"Referenced column \" + joinColumn.referencedColumnName + \" was not found in entity \" + relation.inverseEntityMetadata.name);\n return referencedColumn;\n });\n }\n };\n JunctionEntityMetadataBuilder.prototype.changeDuplicatedColumnNames = function (junctionColumns, inverseJunctionColumns) {\n var _this = this;\n junctionColumns.forEach(function (junctionColumn) {\n inverseJunctionColumns.forEach(function (inverseJunctionColumn) {\n if (junctionColumn.givenDatabaseName === inverseJunctionColumn.givenDatabaseName) {\n var junctionColumnName = _this.connection.namingStrategy.joinTableColumnDuplicationPrefix(junctionColumn.propertyName, 1);\n junctionColumn.propertyName = junctionColumnName;\n junctionColumn.givenDatabaseName = junctionColumnName;\n var inverseJunctionColumnName = _this.connection.namingStrategy.joinTableColumnDuplicationPrefix(inverseJunctionColumn.propertyName, 2);\n inverseJunctionColumn.propertyName = inverseJunctionColumnName;\n inverseJunctionColumn.givenDatabaseName = inverseJunctionColumnName;\n }\n });\n });\n };\n return JunctionEntityMetadataBuilder;\n}());\n\n\n//# sourceMappingURL=JunctionEntityMetadataBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata-builder/JunctionEntityMetadataBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata-builder/MetadataUtils.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata-builder/MetadataUtils.js ***! - \************************************************************************/ -/*! exports provided: MetadataUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MetadataUtils\", function() { return MetadataUtils; });\n/**\n * Metadata args utility functions.\n */\nvar MetadataUtils = /** @class */ (function () {\n function MetadataUtils() {\n }\n /**\n * Gets given's entity all inherited classes.\n * Gives in order from parents to children.\n * For example Post extends ContentModel which extends Unit it will give\n * [Unit, ContentModel, Post]\n */\n MetadataUtils.getInheritanceTree = function (entity) {\n var tree = [entity];\n var getPrototypeOf = function (object) {\n var proto = Object.getPrototypeOf(object);\n if (proto && proto.name) {\n tree.push(proto);\n getPrototypeOf(proto);\n }\n };\n getPrototypeOf(entity);\n return tree;\n };\n /**\n * Checks if this table is inherited from another table.\n */\n MetadataUtils.isInherited = function (target1, target2) {\n return target1.prototype instanceof target2;\n };\n /**\n * Filters given array of targets by a given classes.\n * If classes are not given, then it returns array itself.\n */\n MetadataUtils.filterByTarget = function (array, classes) {\n if (!classes)\n return array;\n return array.filter(function (item) { return item.target && classes.indexOf(item.target) !== -1; });\n };\n return MetadataUtils;\n}());\n\n\n//# sourceMappingURL=MetadataUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata-builder/MetadataUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata-builder/RelationJoinColumnBuilder.js": -/*!************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata-builder/RelationJoinColumnBuilder.js ***! - \************************************************************************************/ -/*! exports provided: RelationJoinColumnBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationJoinColumnBuilder\", function() { return RelationJoinColumnBuilder; });\n/* harmony import */ var _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../driver/mysql/MysqlDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../metadata/ColumnMetadata */ \"./node_modules/typeorm/browser/metadata/ColumnMetadata.js\");\n/* harmony import */ var _metadata_UniqueMetadata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../metadata/UniqueMetadata */ \"./node_modules/typeorm/browser/metadata/UniqueMetadata.js\");\n/* harmony import */ var _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../metadata/ForeignKeyMetadata */ \"./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js\");\n\n\n\n\n\n\n/**\n * Builds join column for the many-to-one and one-to-one owner relations.\n *\n * Cases it should cover:\n * 1. when join column is set with custom name and without referenced column name\n * we need automatically set referenced column name - primary ids by default\n * @JoinColumn({ name: \"custom_name\" })\n *\n * 2. when join column is set with only referenced column name\n * we need automatically set join column name - relation name + referenced column name\n * @JoinColumn({ referencedColumnName: \"title\" })\n *\n * 3. when join column is set without both referenced column name and join column name\n * we need to automatically set both of them\n * @JoinColumn()\n *\n * 4. when join column is not set at all (as in case of @ManyToOne relation)\n * we need to create join column for it with proper referenced column name and join column name\n *\n * 5. when multiple join columns set none of referencedColumnName and name can be optional\n * both options are required\n * @JoinColumn([\n * { name: \"category_title\", referencedColumnName: \"type\" },\n * { name: \"category_title\", referencedColumnName: \"name\" },\n * ])\n *\n * Since for many-to-one relations having JoinColumn decorator is not required,\n * we need to go thought each many-to-one relation without join column decorator set\n * and create join column metadata args for them.\n */\nvar RelationJoinColumnBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationJoinColumnBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds a foreign key of the many-to-one or one-to-one owner relations.\n */\n RelationJoinColumnBuilder.prototype.build = function (joinColumns, relation) {\n var referencedColumns = this.collectReferencedColumns(joinColumns, relation);\n var columns = this.collectColumns(joinColumns, relation, referencedColumns);\n if (!referencedColumns.length || !relation.createForeignKeyConstraints)\n return { foreignKey: undefined, columns: columns, uniqueConstraint: undefined }; // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false\n var foreignKey = new _metadata_ForeignKeyMetadata__WEBPACK_IMPORTED_MODULE_3__[\"ForeignKeyMetadata\"]({\n entityMetadata: relation.entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n namingStrategy: this.connection.namingStrategy,\n columns: columns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete,\n onUpdate: relation.onUpdate,\n deferrable: relation.deferrable,\n });\n // Oracle does not allow both primary and unique constraints on the same column\n if (this.connection.driver instanceof _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_0__[\"OracleDriver\"] && columns.every(function (column) { return column.isPrimary; }))\n return { foreignKey: foreignKey, columns: columns, uniqueConstraint: undefined };\n // CockroachDB requires UNIQUE constraints on referenced columns\n if (referencedColumns.length > 0 && relation.isOneToOne) {\n var uniqueConstraint = new _metadata_UniqueMetadata__WEBPACK_IMPORTED_MODULE_2__[\"UniqueMetadata\"]({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n name: this.connection.namingStrategy.relationConstraintName(relation.entityMetadata.tablePath, foreignKey.columns.map(function (c) { return c.databaseName; })),\n target: relation.entityMetadata.target,\n }\n });\n uniqueConstraint.build(this.connection.namingStrategy);\n return { foreignKey: foreignKey, columns: columns, uniqueConstraint: uniqueConstraint };\n }\n return { foreignKey: foreignKey, columns: columns, uniqueConstraint: undefined };\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Collects referenced columns from the given join column args.\n */\n RelationJoinColumnBuilder.prototype.collectReferencedColumns = function (joinColumns, relation) {\n var hasAnyReferencedColumnName = joinColumns.find(function (joinColumnArgs) { return !!joinColumnArgs.referencedColumnName; });\n var manyToOneWithoutJoinColumn = joinColumns.length === 0 && relation.isManyToOne;\n var hasJoinColumnWithoutAnyReferencedColumnName = joinColumns.length > 0 && !hasAnyReferencedColumnName;\n if (manyToOneWithoutJoinColumn || hasJoinColumnWithoutAnyReferencedColumnName) { // covers case3 and case1\n return relation.inverseEntityMetadata.primaryColumns;\n }\n else { // cases with referenced columns defined\n return joinColumns.map(function (joinColumn) {\n var referencedColumn = relation.inverseEntityMetadata.ownColumns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; }); // todo: can we also search in relations?\n if (!referencedColumn)\n throw new Error(\"Referenced column \" + joinColumn.referencedColumnName + \" was not found in entity \" + relation.inverseEntityMetadata.name);\n return referencedColumn;\n });\n }\n };\n /**\n * Collects columns from the given join column args.\n */\n RelationJoinColumnBuilder.prototype.collectColumns = function (joinColumns, relation, referencedColumns) {\n var _this = this;\n return referencedColumns.map(function (referencedColumn) {\n // in the case if relation has join column with only name set we need this check\n var joinColumnMetadataArg = joinColumns.find(function (joinColumn) {\n return (!joinColumn.referencedColumnName || joinColumn.referencedColumnName === referencedColumn.propertyName) &&\n !!joinColumn.name;\n });\n var joinColumnName = joinColumnMetadataArg ? joinColumnMetadataArg.name : _this.connection.namingStrategy.joinColumnName(relation.propertyName, referencedColumn.propertyName);\n var relationalColumn = relation.entityMetadata.ownColumns.find(function (column) { return column.databaseName === joinColumnName; });\n if (!relationalColumn) {\n relationalColumn = new _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_1__[\"ColumnMetadata\"]({\n connection: _this.connection,\n entityMetadata: relation.entityMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: relation.propertyName,\n options: {\n name: joinColumnName,\n type: referencedColumn.type,\n length: !referencedColumn.length\n && (_this.connection.driver instanceof _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_0__[\"MysqlDriver\"] || _this.connection.driver instanceof _driver_mysql_MysqlDriver__WEBPACK_IMPORTED_MODULE_0__[\"AuroraDataApiDriver\"])\n && (referencedColumn.generationStrategy === \"uuid\" || referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length,\n width: referencedColumn.width,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.unsigned,\n comment: referencedColumn.comment,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n primary: relation.isPrimary,\n nullable: relation.isNullable,\n }\n }\n });\n relation.entityMetadata.registerColumn(relationalColumn);\n }\n relationalColumn.referencedColumn = referencedColumn; // its important to set it here because we need to set referenced column for user defined join column\n relationalColumn.type = referencedColumn.type; // also since types of relational column and join column must be equal we override user defined column type\n relationalColumn.relationMetadata = relation;\n relationalColumn.build(_this.connection);\n return relationalColumn;\n });\n };\n return RelationJoinColumnBuilder;\n}());\n\n\n//# sourceMappingURL=RelationJoinColumnBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata-builder/RelationJoinColumnBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/CheckMetadata.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/CheckMetadata.js ***! - \****************************************************************/ -/*! exports provided: CheckMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CheckMetadata\", function() { return CheckMetadata; });\n/**\n * Check metadata contains all information about table's check constraints.\n */\nvar CheckMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function CheckMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n if (options.args) {\n this.target = options.args.target;\n this.expression = options.args.expression;\n this.givenName = options.args.name;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend check constraint properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n CheckMetadata.prototype.build = function (namingStrategy) {\n this.name = this.givenName ? this.givenName : namingStrategy.checkConstraintName(this.entityMetadata.tablePath, this.expression);\n return this;\n };\n return CheckMetadata;\n}());\n\n\n//# sourceMappingURL=CheckMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/CheckMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/ColumnMetadata.js": -/*!*****************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/ColumnMetadata.js ***! - \*****************************************************************/ -/*! exports provided: ColumnMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ColumnMetadata\", function() { return ColumnMetadata; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../driver/mongodb/MongoDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../find-options/FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n/* harmony import */ var _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ApplyValueTransformers */ \"./node_modules/typeorm/browser/util/ApplyValueTransformers.js\");\n\n\n\n\n\n/**\n * This metadata contains all information about entity's column.\n */\nvar ColumnMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ColumnMetadata(options) {\n /**\n * Type's length in the database.\n */\n this.length = \"\";\n /**\n * Indicates if this column is a primary key.\n */\n this.isPrimary = false;\n /**\n * Indicates if this column is generated (auto increment or generated other way).\n */\n this.isGenerated = false;\n /**\n * Indicates if column can contain nulls or not.\n */\n this.isNullable = false;\n /**\n * Indicates if column is selected by query builder or not.\n */\n this.isSelect = true;\n /**\n * Indicates if column is inserted by default or not.\n */\n this.isInsert = true;\n /**\n * Indicates if column allows updates or not.\n */\n this.isUpdate = true;\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n this.zerofill = false;\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n this.unsigned = false;\n /**\n * Indicates if this column is an array.\n */\n this.isArray = false;\n /**\n * Indicates if column is virtual. Virtual columns are not mapped to the entity.\n */\n this.isVirtual = false;\n /**\n * Indicates if column is discriminator. Discriminator columns are not mapped to the entity.\n */\n this.isDiscriminator = false;\n /**\n * Indicates if column is tree-level column. Tree-level columns are used in closure entities.\n */\n this.isTreeLevel = false;\n /**\n * Indicates if this column contains an entity creation date.\n */\n this.isCreateDate = false;\n /**\n * Indicates if this column contains an entity update date.\n */\n this.isUpdateDate = false;\n /**\n * Indicates if this column contains an entity delete date.\n */\n this.isDeleteDate = false;\n /**\n * Indicates if this column contains an entity version.\n */\n this.isVersion = false;\n /**\n * Indicates if this column contains an object id.\n */\n this.isObjectId = false;\n /**\n * Indicates if this column is nested set's left column.\n * Used only in tree entities with nested-set type.\n */\n this.isNestedSetLeft = false;\n /**\n * Indicates if this column is nested set's right column.\n * Used only in tree entities with nested-set type.\n */\n this.isNestedSetRight = false;\n /**\n * Indicates if this column is materialized path's path column.\n * Used only in tree entities with materialized path type.\n */\n this.isMaterializedPath = false;\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n this.referencedColumn = options.referencedColumn;\n if (options.args.target)\n this.target = options.args.target;\n if (options.args.propertyName)\n this.propertyName = options.args.propertyName;\n if (options.args.options.name)\n this.givenDatabaseName = options.args.options.name;\n if (options.args.options.type)\n this.type = options.args.options.type;\n if (options.args.options.length)\n this.length = options.args.options.length ? options.args.options.length.toString() : \"\";\n if (options.args.options.width)\n this.width = options.args.options.width;\n if (options.args.options.charset)\n this.charset = options.args.options.charset;\n if (options.args.options.collation)\n this.collation = options.args.options.collation;\n if (options.args.options.primary)\n this.isPrimary = options.args.options.primary;\n if (options.args.options.default === null) // to make sure default: null is the same as nullable: true\n this.isNullable = true;\n if (options.args.options.nullable !== undefined)\n this.isNullable = options.args.options.nullable;\n if (options.args.options.select !== undefined)\n this.isSelect = options.args.options.select;\n if (options.args.options.insert !== undefined)\n this.isInsert = options.args.options.insert;\n if (options.args.options.update !== undefined)\n this.isUpdate = options.args.options.update;\n if (options.args.options.readonly !== undefined)\n this.isUpdate = !options.args.options.readonly;\n if (options.args.options.comment)\n this.comment = options.args.options.comment;\n if (options.args.options.default !== undefined)\n this.default = options.args.options.default;\n if (options.args.options.onUpdate)\n this.onUpdate = options.args.options.onUpdate;\n if (options.args.options.scale !== null && options.args.options.scale !== undefined)\n this.scale = options.args.options.scale;\n if (options.args.options.zerofill) {\n this.zerofill = options.args.options.zerofill;\n this.unsigned = true; // if you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n }\n if (options.args.options.unsigned)\n this.unsigned = options.args.options.unsigned;\n if (options.args.options.precision !== undefined)\n this.precision = options.args.options.precision;\n if (options.args.options.enum) {\n if (options.args.options.enum instanceof Object && !Array.isArray(options.args.options.enum)) {\n this.enum = Object.keys(options.args.options.enum)\n .filter(function (key) { return isNaN(+key); }) // remove numeric keys - typescript numeric enum types generate them\n .map(function (key) { return options.args.options.enum[key]; });\n }\n else {\n this.enum = options.args.options.enum;\n }\n }\n if (options.args.options.enumName) {\n this.enumName = options.args.options.enumName;\n }\n if (options.args.options.asExpression) {\n this.asExpression = options.args.options.asExpression;\n this.generatedType = options.args.options.generatedType ? options.args.options.generatedType : \"VIRTUAL\";\n }\n if (options.args.options.hstoreType)\n this.hstoreType = options.args.options.hstoreType;\n if (options.args.options.array)\n this.isArray = options.args.options.array;\n if (options.args.mode) {\n this.isVirtual = options.args.mode === \"virtual\";\n this.isTreeLevel = options.args.mode === \"treeLevel\";\n this.isCreateDate = options.args.mode === \"createDate\";\n this.isUpdateDate = options.args.mode === \"updateDate\";\n this.isDeleteDate = options.args.mode === \"deleteDate\";\n this.isVersion = options.args.mode === \"version\";\n this.isObjectId = options.args.mode === \"objectId\";\n }\n if (options.args.options.transformer)\n this.transformer = options.args.options.transformer;\n if (options.args.options.spatialFeatureType)\n this.spatialFeatureType = options.args.options.spatialFeatureType;\n if (options.args.options.srid !== undefined)\n this.srid = options.args.options.srid;\n if (this.isTreeLevel)\n this.type = options.connection.driver.mappedDataTypes.treeLevel;\n if (this.isCreateDate) {\n if (!this.type)\n this.type = options.connection.driver.mappedDataTypes.createDate;\n if (!this.default)\n this.default = function () { return options.connection.driver.mappedDataTypes.createDateDefault; };\n if (this.precision === undefined && options.connection.driver.mappedDataTypes.createDatePrecision)\n this.precision = options.connection.driver.mappedDataTypes.createDatePrecision;\n }\n if (this.isUpdateDate) {\n if (!this.type)\n this.type = options.connection.driver.mappedDataTypes.updateDate;\n if (!this.default)\n this.default = function () { return options.connection.driver.mappedDataTypes.updateDateDefault; };\n if (!this.onUpdate)\n this.onUpdate = options.connection.driver.mappedDataTypes.updateDateDefault;\n if (this.precision === undefined && options.connection.driver.mappedDataTypes.updateDatePrecision)\n this.precision = options.connection.driver.mappedDataTypes.updateDatePrecision;\n }\n if (this.isDeleteDate) {\n if (!this.type)\n this.type = options.connection.driver.mappedDataTypes.deleteDate;\n if (!this.isNullable)\n this.isNullable = options.connection.driver.mappedDataTypes.deleteDateNullable;\n if (this.precision === undefined && options.connection.driver.mappedDataTypes.deleteDatePrecision)\n this.precision = options.connection.driver.mappedDataTypes.deleteDatePrecision;\n }\n if (this.isVersion)\n this.type = options.connection.driver.mappedDataTypes.version;\n if (options.closureType)\n this.closureType = options.closureType;\n if (options.nestedSetLeft)\n this.isNestedSetLeft = options.nestedSetLeft;\n if (options.nestedSetRight)\n this.isNestedSetRight = options.nestedSetRight;\n if (options.materializedPath)\n this.isMaterializedPath = options.materializedPath;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Creates entity id map from the given entity ids array.\n */\n ColumnMetadata.prototype.createValueMap = function (value, useDatabaseName) {\n var _a;\n var _this = this;\n if (useDatabaseName === void 0) { useDatabaseName = false; }\n // extract column value from embeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object and return it in a\n // { data: { information: { counters: { id: ... } } } } format\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.embeddedMetadata.parentPropertyNames));\n // now need to access post[data][information][counters] to get column value from the counters\n // and on each step we need to create complex literal object, e.g. first { data },\n // then { data: { information } }, then { data: { information: { counters } } },\n // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } }\n // this recursive function helps doing that\n var extractEmbeddedColumnValue_1 = function (propertyNames, map) {\n var propertyName = propertyNames.shift();\n if (propertyName) {\n map[propertyName] = {};\n extractEmbeddedColumnValue_1(propertyNames, map[propertyName]);\n return map;\n }\n // this is bugfix for #720 when increment number is bigint we need to make sure its a string\n if ((_this.generationStrategy === \"increment\" || _this.generationStrategy === \"rowid\") && _this.type === \"bigint\" && value !== null)\n value = String(value);\n map[useDatabaseName ? _this.databaseName : _this.propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_1(propertyNames, {});\n }\n else { // no embeds - no problems. Simply return column property name and its value of the entity\n // this is bugfix for #720 when increment number is bigint we need to make sure its a string\n if ((this.generationStrategy === \"increment\" || this.generationStrategy === \"rowid\") && this.type === \"bigint\" && value !== null)\n value = String(value);\n return _a = {}, _a[useDatabaseName ? this.databaseName : this.propertyName] = value, _a;\n }\n };\n /**\n * Extracts column value and returns its column name with this value in a literal object.\n * If column is in embedded (or recursive embedded) it returns complex literal object.\n *\n * Examples what this method can return depend if this column is in embeds.\n * { id: 1 } or { title: \"hello\" }, { counters: { code: 1 } }, { data: { information: { counters: { code: 1 } } } }\n */\n ColumnMetadata.prototype.getEntityValueMap = function (entity, options) {\n var _a, _b;\n var _this = this;\n var returnNulls = false; // options && options.skipNulls === false ? false : true; // todo: remove if current will not bring problems, uncomment if it will.\n // extract column value from embeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object and return it in a\n // { data: { information: { counters: { id: ... } } } } format\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.embeddedMetadata.parentPropertyNames));\n // now need to access post[data][information][counters] to get column value from the counters\n // and on each step we need to create complex literal object, e.g. first { data },\n // then { data: { information } }, then { data: { information: { counters } } },\n // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } }\n // this recursive function helps doing that\n var extractEmbeddedColumnValue_2 = function (propertyNames, value, map) {\n var propertyName = propertyNames.shift();\n if (value === undefined)\n return map;\n if (propertyName) {\n var submap = {};\n extractEmbeddedColumnValue_2(propertyNames, value[propertyName], submap);\n if (Object.keys(submap).length > 0) {\n map[propertyName] = submap;\n }\n return map;\n }\n if (value[_this.propertyName] !== undefined && (returnNulls === false || value[_this.propertyName] !== null))\n map[_this.propertyName] = value[_this.propertyName];\n return map;\n };\n var map = {};\n extractEmbeddedColumnValue_2(propertyNames, entity, map);\n return Object.keys(map).length > 0 ? map : undefined;\n }\n else { // no embeds - no problems. Simply return column property name and its value of the entity\n if (this.relationMetadata && entity[this.relationMetadata.propertyName] && entity[this.relationMetadata.propertyName] instanceof Object) {\n var map = this.relationMetadata.joinColumns.reduce(function (map, joinColumn) {\n var value = joinColumn.referencedColumn.getEntityValueMap(entity[_this.relationMetadata.propertyName]);\n if (value === undefined)\n return map;\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(map, value);\n }, {});\n if (Object.keys(map).length > 0)\n return _a = {}, _a[this.propertyName] = map, _a;\n return undefined;\n }\n else {\n if (entity[this.propertyName] !== undefined && (returnNulls === false || entity[this.propertyName] !== null))\n return _b = {}, _b[this.propertyName] = entity[this.propertyName], _b;\n return undefined;\n }\n }\n };\n /**\n * Extracts column value from the given entity.\n * If column is in embedded (or recursive embedded) it extracts its value from there.\n */\n ColumnMetadata.prototype.getEntityValue = function (entity, transform) {\n if (transform === void 0) { transform = false; }\n if (entity === undefined || entity === null)\n return undefined;\n // extract column value from embeddeds of entity if column is in embedded\n var value = undefined;\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.embeddedMetadata.parentPropertyNames));\n // next we need to access post[data][information][counters][this.propertyName] to get column value from the counters\n // this recursive function takes array of generated property names and gets the post[data][information][counters] embed\n var extractEmbeddedColumnValue_3 = function (propertyNames, value) {\n var propertyName = propertyNames.shift();\n return propertyName && value ? extractEmbeddedColumnValue_3(propertyNames, value[propertyName]) : value;\n };\n // once we get nested embed object we get its column, e.g. post[data][information][counters][this.propertyName]\n var embeddedObject = extractEmbeddedColumnValue_3(propertyNames, entity);\n if (embeddedObject) {\n if (this.relationMetadata && this.referencedColumn) {\n var relatedEntity = this.relationMetadata.getEntityValue(embeddedObject);\n if (relatedEntity && relatedEntity instanceof Object && !(relatedEntity instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[\"FindOperator\"])) {\n value = this.referencedColumn.getEntityValue(relatedEntity);\n }\n else if (embeddedObject[this.propertyName] && embeddedObject[this.propertyName] instanceof Object && !(embeddedObject[this.propertyName] instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[\"FindOperator\"])) {\n value = this.referencedColumn.getEntityValue(embeddedObject[this.propertyName]);\n }\n else {\n value = embeddedObject[this.propertyName];\n }\n }\n else if (this.referencedColumn) {\n value = this.referencedColumn.getEntityValue(embeddedObject[this.propertyName]);\n }\n else {\n value = embeddedObject[this.propertyName];\n }\n }\n }\n else { // no embeds - no problems. Simply return column name by property name of the entity\n if (this.relationMetadata && this.referencedColumn) {\n var relatedEntity = this.relationMetadata.getEntityValue(entity);\n if (relatedEntity && relatedEntity instanceof Object && !(relatedEntity instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[\"FindOperator\"]) && !(relatedEntity instanceof Function)) {\n value = this.referencedColumn.getEntityValue(relatedEntity);\n }\n else if (entity[this.propertyName] && entity[this.propertyName] instanceof Object && !(entity[this.propertyName] instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_3__[\"FindOperator\"]) && !(entity[this.propertyName] instanceof Function)) {\n value = this.referencedColumn.getEntityValue(entity[this.propertyName]);\n }\n else {\n value = entity[this.propertyName];\n }\n }\n else if (this.referencedColumn) {\n value = this.referencedColumn.getEntityValue(entity[this.propertyName]);\n }\n else {\n value = entity[this.propertyName];\n }\n }\n if (transform && this.transformer)\n value = _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_4__[\"ApplyValueTransformers\"].transformTo(this.transformer, value);\n return value;\n };\n /**\n * Sets given entity's column value.\n * Using of this method helps to set entity relation's value of the lazy and non-lazy relations.\n */\n ColumnMetadata.prototype.setEntityValue = function (entity, value) {\n var _this = this;\n if (this.embeddedMetadata) {\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var extractEmbeddedColumnValue_4 = function (embeddedMetadatas, map) {\n // if (!object[embeddedMetadata.propertyName])\n // object[embeddedMetadata.propertyName] = embeddedMetadata.create();\n var embeddedMetadata = embeddedMetadatas.shift();\n if (embeddedMetadata) {\n if (!map[embeddedMetadata.propertyName])\n map[embeddedMetadata.propertyName] = embeddedMetadata.create();\n extractEmbeddedColumnValue_4(embeddedMetadatas, map[embeddedMetadata.propertyName]);\n return map;\n }\n map[_this.propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_4(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.embeddedMetadata.embeddedMetadataTree)), entity);\n }\n else {\n // we write a deep object in this entity only if the column is virtual\n // because if its not virtual it means the user defined a real column for this relation\n // also we don't do it if column is inside a junction table\n if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.propertyName !== this.propertyName) {\n if (!(this.propertyName in entity)) {\n entity[this.propertyName] = {};\n }\n entity[this.propertyName][this.referencedColumn.propertyName] = value;\n }\n else {\n entity[this.propertyName] = value;\n }\n }\n };\n // ---------------------------------------------------------------------\n // Builder Methods\n // ---------------------------------------------------------------------\n ColumnMetadata.prototype.build = function (connection) {\n this.propertyPath = this.buildPropertyPath();\n this.propertyAliasName = this.propertyPath.replace(\".\", \"_\");\n this.databaseName = this.buildDatabaseName(connection);\n this.databasePath = this.buildDatabasePath();\n this.databaseNameWithoutPrefixes = connection.namingStrategy.columnName(this.propertyName, this.givenDatabaseName, []);\n return this;\n };\n ColumnMetadata.prototype.buildPropertyPath = function () {\n var path = \"\";\n if (this.embeddedMetadata && this.embeddedMetadata.parentPropertyNames.length)\n path = this.embeddedMetadata.parentPropertyNames.join(\".\") + \".\";\n path += this.propertyName;\n // we add reference column to property path only if this column is virtual\n // because if its not virtual it means user defined a real column for this relation\n // also we don't do it if column is inside a junction table\n if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.propertyName !== this.propertyName)\n path += \".\" + this.referencedColumn.propertyName;\n return path;\n };\n ColumnMetadata.prototype.buildDatabasePath = function () {\n var path = \"\";\n if (this.embeddedMetadata && this.embeddedMetadata.parentPropertyNames.length)\n path = this.embeddedMetadata.parentPropertyNames.join(\".\") + \".\";\n path += this.databaseName;\n // we add reference column to property path only if this column is virtual\n // because if its not virtual it means user defined a real column for this relation\n // also we don't do it if column is inside a junction table\n if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.databaseName !== this.databaseName)\n path += \".\" + this.referencedColumn.databaseName;\n return path;\n };\n ColumnMetadata.prototype.buildDatabaseName = function (connection) {\n var propertyNames = this.embeddedMetadata ? this.embeddedMetadata.parentPrefixes : [];\n if (connection.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_2__[\"MongoDriver\"]) // we don't need to include embedded name for the mongodb column names\n propertyNames = [];\n return connection.namingStrategy.columnName(this.propertyName, this.givenDatabaseName, propertyNames);\n };\n return ColumnMetadata;\n}());\n\n\n//# sourceMappingURL=ColumnMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/ColumnMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/EmbeddedMetadata.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/EmbeddedMetadata.js ***! - \*******************************************************************/ -/*! exports provided: EmbeddedMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EmbeddedMetadata\", function() { return EmbeddedMetadata; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/mongodb/MongoDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n\n\n/**\n * Contains all information about entity's embedded property.\n */\nvar EmbeddedMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function EmbeddedMetadata(options) {\n /**\n * Columns inside this embed.\n */\n this.columns = [];\n /**\n * Relations inside this embed.\n */\n this.relations = [];\n /**\n * Entity listeners inside this embed.\n */\n this.listeners = [];\n /**\n * Indices applied to the embed columns.\n */\n this.indices = [];\n /**\n * Uniques applied to the embed columns.\n */\n this.uniques = [];\n /**\n * Relation ids inside this embed.\n */\n this.relationIds = [];\n /**\n * Relation counts inside this embed.\n */\n this.relationCounts = [];\n /**\n * Nested embeddable in this embeddable (which has current embedded as parent embedded).\n */\n this.embeddeds = [];\n /**\n * Indicates if this embedded is in array mode.\n *\n * This option works only in mongodb.\n */\n this.isArray = false;\n /**\n * Returns array of property names of current embed and all its parent embeds.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * we need to get value of \"id\" column from the post real entity object.\n * this method will return [\"data\", \"information\", \"counters\"]\n */\n this.parentPropertyNames = [];\n /**\n * Returns array of prefixes of current embed and all its parent embeds.\n */\n this.parentPrefixes = [];\n /**\n * Returns embed metadatas from all levels of the parent tree.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters]\n */\n this.embeddedMetadataTree = [];\n /**\n * Embed metadatas from all levels of the parent tree.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters]\n */\n this.columnsFromTree = [];\n /**\n * Relations of this embed and all relations from its child embeds.\n */\n this.relationsFromTree = [];\n /**\n * Relations of this embed and all relations from its child embeds.\n */\n this.listenersFromTree = [];\n /**\n * Indices of this embed and all indices from its child embeds.\n */\n this.indicesFromTree = [];\n /**\n * Uniques of this embed and all uniques from its child embeds.\n */\n this.uniquesFromTree = [];\n /**\n * Relation ids of this embed and all relation ids from its child embeds.\n */\n this.relationIdsFromTree = [];\n /**\n * Relation counts of this embed and all relation counts from its child embeds.\n */\n this.relationCountsFromTree = [];\n this.entityMetadata = options.entityMetadata;\n this.type = options.args.type();\n this.propertyName = options.args.propertyName;\n this.customPrefix = options.args.prefix;\n this.isArray = options.args.isArray;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Creates a new embedded object.\n */\n EmbeddedMetadata.prototype.create = function () {\n return new this.type;\n };\n // ---------------------------------------------------------------------\n // Builder Methods\n // ---------------------------------------------------------------------\n EmbeddedMetadata.prototype.build = function (connection) {\n this.embeddeds.forEach(function (embedded) { return embedded.build(connection); });\n this.prefix = this.buildPrefix(connection);\n this.parentPropertyNames = this.buildParentPropertyNames();\n this.parentPrefixes = this.buildParentPrefixes();\n this.propertyPath = this.parentPropertyNames.join(\".\");\n this.embeddedMetadataTree = this.buildEmbeddedMetadataTree();\n this.columnsFromTree = this.buildColumnsFromTree();\n this.relationsFromTree = this.buildRelationsFromTree();\n this.listenersFromTree = this.buildListenersFromTree();\n this.indicesFromTree = this.buildIndicesFromTree();\n this.uniquesFromTree = this.buildUniquesFromTree();\n this.relationIdsFromTree = this.buildRelationIdsFromTree();\n this.relationCountsFromTree = this.buildRelationCountsFromTree();\n return this;\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n EmbeddedMetadata.prototype.buildPartialPrefix = function () {\n // if prefix option was not set or explicitly set to true - default prefix\n if (this.customPrefix === undefined || this.customPrefix === true) {\n return [this.propertyName];\n }\n // if prefix option was set to empty string or explicity set to false - disable prefix\n if (this.customPrefix === \"\" || this.customPrefix === false) {\n return [];\n }\n // use custom prefix\n if (typeof this.customPrefix === \"string\") {\n return [this.customPrefix];\n }\n throw new Error(\"Invalid prefix option given for \" + this.entityMetadata.targetName + \"#\" + this.propertyName);\n };\n EmbeddedMetadata.prototype.buildPrefix = function (connection) {\n if (connection.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoDriver\"])\n return this.propertyName;\n var prefixes = [];\n if (this.parentEmbeddedMetadata)\n prefixes.push(this.parentEmbeddedMetadata.buildPrefix(connection));\n prefixes.push.apply(prefixes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.buildPartialPrefix())));\n return prefixes.join(\"_\"); // todo: use naming strategy instead of \"_\" !!!\n };\n EmbeddedMetadata.prototype.buildParentPropertyNames = function () {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPropertyNames().concat(this.propertyName) : [this.propertyName];\n };\n EmbeddedMetadata.prototype.buildParentPrefixes = function () {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPrefixes().concat(this.buildPartialPrefix()) : this.buildPartialPrefix();\n };\n EmbeddedMetadata.prototype.buildEmbeddedMetadataTree = function () {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildEmbeddedMetadataTree().concat(this) : [this];\n };\n EmbeddedMetadata.prototype.buildColumnsFromTree = function () {\n return this.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.buildColumnsFromTree()); }, this.columns);\n };\n EmbeddedMetadata.prototype.buildRelationsFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationsFromTree()); }, this.relations);\n };\n EmbeddedMetadata.prototype.buildListenersFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildListenersFromTree()); }, this.listeners);\n };\n EmbeddedMetadata.prototype.buildIndicesFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildIndicesFromTree()); }, this.indices);\n };\n EmbeddedMetadata.prototype.buildUniquesFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildUniquesFromTree()); }, this.uniques);\n };\n EmbeddedMetadata.prototype.buildRelationIdsFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationIdsFromTree()); }, this.relationIds);\n };\n EmbeddedMetadata.prototype.buildRelationCountsFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationCountsFromTree()); }, this.relationCounts);\n };\n return EmbeddedMetadata;\n}());\n\n\n//# sourceMappingURL=EmbeddedMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/EmbeddedMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/EntityListenerMetadata.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/EntityListenerMetadata.js ***! - \*************************************************************************/ -/*! exports provided: EntityListenerMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityListenerMetadata\", function() { return EntityListenerMetadata; });\n/**\n * This metadata contains all information about entity's listeners.\n */\nvar EntityListenerMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function EntityListenerMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n this.target = options.args.target;\n this.propertyName = options.args.propertyName;\n this.type = options.args.type;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Checks if entity listener is allowed to be executed on the given entity.\n */\n EntityListenerMetadata.prototype.isAllowed = function (entity) {\n return this.entityMetadata.target === entity.constructor || // todo: .constructor won't work for entity schemas, but there are no entity listeners in schemas since there are no objects, right?\n (this.entityMetadata.target instanceof Function && entity.constructor.prototype instanceof this.entityMetadata.target); // todo: also need to implement entity schema inheritance\n };\n /**\n * Executes listener method of the given entity.\n */\n EntityListenerMetadata.prototype.execute = function (entity) {\n if (!this.embeddedMetadata)\n return entity[this.propertyName]();\n this.callEntityEmbeddedMethod(entity, this.embeddedMetadata.propertyPath.split(\".\"));\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Calls embedded entity listener method no matter how nested it is.\n */\n EntityListenerMetadata.prototype.callEntityEmbeddedMethod = function (entity, propertyPaths) {\n var propertyPath = propertyPaths.shift();\n if (!propertyPath || !entity[propertyPath])\n return;\n if (propertyPaths.length === 0) {\n entity[propertyPath][this.propertyName]();\n }\n else {\n if (entity[propertyPath])\n this.callEntityEmbeddedMethod(entity[propertyPath], propertyPaths);\n }\n };\n return EntityListenerMetadata;\n}());\n\n\n//# sourceMappingURL=EntityListenerMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/EntityListenerMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/EntityMetadata.js": -/*!*****************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/EntityMetadata.js ***! - \*****************************************************************/ -/*! exports provided: EntityMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityMetadata\", function() { return EntityMetadata; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/postgres/PostgresDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _error_CannotCreateEntityIdMapError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../error/CannotCreateEntityIdMapError */ \"./node_modules/typeorm/browser/error/CannotCreateEntityIdMapError.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _util_StringUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/StringUtils */ \"./node_modules/typeorm/browser/util/StringUtils.js\");\n\n\n\n\n\n\n\n\n/**\n * Contains all entity metadata.\n */\nvar EntityMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function EntityMetadata(options) {\n /**\n * Children entity metadatas. Used in inheritance patterns.\n */\n this.childEntityMetadatas = [];\n /**\n * All \"inheritance tree\" from a target entity.\n * For example for target Post < ContentModel < Unit it will be an array of [Post, ContentModel, Unit].\n * It also contains child entities for single table inheritance.\n */\n this.inheritanceTree = [];\n /**\n * Table type. Tables can be abstract, closure, junction, embedded, etc.\n */\n this.tableType = \"regular\";\n /**\n * Enables Sqlite \"WITHOUT ROWID\" modifier for the \"CREATE TABLE\" statement\n */\n this.withoutRowid = false;\n /**\n * Indicates if schema will be synchronized for this entity or not.\n */\n this.synchronize = true;\n /**\n * Checks if there any non-nullable column exist in this entity.\n */\n this.hasNonNullableRelations = false;\n /**\n * Indicates if this entity metadata of a junction table, or not.\n * Junction table is a table created by many-to-many relationship.\n *\n * Its also possible to understand if entity is junction via tableType.\n */\n this.isJunction = false;\n /**\n * Checks if this table is a junction table of the closure table.\n * This type is for tables that contain junction metadata of the closure tables.\n */\n this.isClosureJunction = false;\n /**\n * Checks if entity's table has multiple primary columns.\n */\n this.hasMultiplePrimaryKeys = false;\n /**\n * Indicates if this entity metadata has uuid generated columns.\n */\n this.hasUUIDGeneratedColumns = false;\n /**\n * Entity's column metadatas defined by user.\n */\n this.ownColumns = [];\n /**\n * Columns of the entity, including columns that are coming from the embeddeds of this entity.\n */\n this.columns = [];\n /**\n * Ancestor columns used only in closure junction tables.\n */\n this.ancestorColumns = [];\n /**\n * Descendant columns used only in closure junction tables.\n */\n this.descendantColumns = [];\n /**\n * All columns except for virtual columns.\n */\n this.nonVirtualColumns = [];\n /**\n * In the case if this entity metadata is junction table's entity metadata,\n * this will contain all referenced columns of owner entity.\n */\n this.ownerColumns = [];\n /**\n * In the case if this entity metadata is junction table's entity metadata,\n * this will contain all referenced columns of inverse entity.\n */\n this.inverseColumns = [];\n /**\n * Gets the column with generated flag.\n */\n this.generatedColumns = [];\n /**\n * Gets the primary columns.\n */\n this.primaryColumns = [];\n /**\n * Entity's relation metadatas.\n */\n this.ownRelations = [];\n /**\n * Relations of the entity, including relations that are coming from the embeddeds of this entity.\n */\n this.relations = [];\n /**\n * List of eager relations this metadata has.\n */\n this.eagerRelations = [];\n /**\n * List of eager relations this metadata has.\n */\n this.lazyRelations = [];\n /**\n * Gets only one-to-one relations of the entity.\n */\n this.oneToOneRelations = [];\n /**\n * Gets only owner one-to-one relations of the entity.\n */\n this.ownerOneToOneRelations = [];\n /**\n * Gets only one-to-many relations of the entity.\n */\n this.oneToManyRelations = [];\n /**\n * Gets only many-to-one relations of the entity.\n */\n this.manyToOneRelations = [];\n /**\n * Gets only many-to-many relations of the entity.\n */\n this.manyToManyRelations = [];\n /**\n * Gets only owner many-to-many relations of the entity.\n */\n this.ownerManyToManyRelations = [];\n /**\n * Gets only owner one-to-one and many-to-one relations.\n */\n this.relationsWithJoinColumns = [];\n /**\n * Entity's relation id metadatas.\n */\n this.relationIds = [];\n /**\n * Entity's relation id metadatas.\n */\n this.relationCounts = [];\n /**\n * Entity's foreign key metadatas.\n */\n this.foreignKeys = [];\n /**\n * Entity's embedded metadatas.\n */\n this.embeddeds = [];\n /**\n * All embeddeds - embeddeds from this entity metadata and from all child embeddeds, etc.\n */\n this.allEmbeddeds = [];\n /**\n * Entity's own indices.\n */\n this.ownIndices = [];\n /**\n * Entity's index metadatas.\n */\n this.indices = [];\n /**\n * Entity's unique metadatas.\n */\n this.uniques = [];\n /**\n * Entity's own uniques.\n */\n this.ownUniques = [];\n /**\n * Entity's check metadatas.\n */\n this.checks = [];\n /**\n * Entity's exclusion metadatas.\n */\n this.exclusions = [];\n /**\n * Entity's own listener metadatas.\n */\n this.ownListeners = [];\n /**\n * Entity listener metadatas.\n */\n this.listeners = [];\n /**\n * Listener metadatas with \"AFTER LOAD\" type.\n */\n this.afterLoadListeners = [];\n /**\n * Listener metadatas with \"AFTER INSERT\" type.\n */\n this.beforeInsertListeners = [];\n /**\n * Listener metadatas with \"AFTER INSERT\" type.\n */\n this.afterInsertListeners = [];\n /**\n * Listener metadatas with \"AFTER UPDATE\" type.\n */\n this.beforeUpdateListeners = [];\n /**\n * Listener metadatas with \"AFTER UPDATE\" type.\n */\n this.afterUpdateListeners = [];\n /**\n * Listener metadatas with \"AFTER REMOVE\" type.\n */\n this.beforeRemoveListeners = [];\n /**\n * Listener metadatas with \"AFTER REMOVE\" type.\n */\n this.afterRemoveListeners = [];\n this.connection = options.connection;\n this.inheritanceTree = options.inheritanceTree || [];\n this.inheritancePattern = options.inheritancePattern;\n this.treeType = options.tableTree ? options.tableTree.type : undefined;\n this.treeOptions = options.tableTree ? options.tableTree.options : undefined;\n this.parentClosureEntityMetadata = options.parentClosureEntityMetadata;\n this.tableMetadataArgs = options.args;\n this.target = this.tableMetadataArgs.target;\n this.tableType = this.tableMetadataArgs.type;\n this.expression = this.tableMetadataArgs.expression;\n this.withoutRowid = this.tableMetadataArgs.withoutRowid;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new entity.\n */\n EntityMetadata.prototype.create = function (queryRunner) {\n var _this = this;\n // if target is set to a function (e.g. class) that can be created then create it\n var ret;\n if (this.target instanceof Function) {\n ret = new this.target();\n this.lazyRelations.forEach(function (relation) { return _this.connection.relationLoader.enableLazyLoad(relation, ret, queryRunner); });\n return ret;\n }\n // otherwise simply return a new empty object\n var newObject = {};\n this.lazyRelations.forEach(function (relation) { return _this.connection.relationLoader.enableLazyLoad(relation, newObject, queryRunner); });\n return newObject;\n };\n /**\n * Checks if given entity has an id.\n */\n EntityMetadata.prototype.hasId = function (entity) {\n if (!entity)\n return false;\n return this.primaryColumns.every(function (primaryColumn) {\n var value = primaryColumn.getEntityValue(entity);\n return value !== null && value !== undefined && value !== \"\";\n });\n };\n /**\n * Checks if given entity / object contains ALL primary keys entity must have.\n * Returns true if it contains all of them, false if at least one of them is not defined.\n */\n EntityMetadata.prototype.hasAllPrimaryKeys = function (entity) {\n return this.primaryColumns.every(function (primaryColumn) {\n var value = primaryColumn.getEntityValue(entity);\n return value !== null && value !== undefined;\n });\n };\n /**\n * Ensures that given object is an entity id map.\n * If given id is an object then it means its already id map.\n * If given id isn't an object then it means its a value of the id column\n * and it creates a new id map with this value and name of the primary column.\n */\n EntityMetadata.prototype.ensureEntityIdMap = function (id) {\n if (id instanceof Object)\n return id;\n if (this.hasMultiplePrimaryKeys)\n throw new _error_CannotCreateEntityIdMapError__WEBPACK_IMPORTED_MODULE_2__[\"CannotCreateEntityIdMapError\"](this, id);\n return this.primaryColumns[0].createValueMap(id);\n };\n /**\n * Gets primary keys of the entity and returns them in a literal object.\n * For example, for Post{ id: 1, title: \"hello\" } where id is primary it will return { id: 1 }\n * For multiple primary keys it returns multiple keys in object.\n * For primary keys inside embeds it returns complex object literal with keys in them.\n */\n EntityMetadata.prototype.getEntityIdMap = function (entity) {\n if (!entity)\n return undefined;\n return EntityMetadata.getValueMap(entity, this.primaryColumns, { skipNulls: true });\n };\n /**\n * Creates a \"mixed id map\".\n * If entity has multiple primary keys (ids) then it will return just regular id map, like what getEntityIdMap returns.\n * But if entity has a single primary key then it will return just value of the id column of the entity, just value.\n * This is called mixed id map.\n */\n EntityMetadata.prototype.getEntityIdMixedMap = function (entity) {\n if (!entity)\n return entity;\n var idMap = this.getEntityIdMap(entity);\n if (this.hasMultiplePrimaryKeys) {\n return idMap;\n }\n else if (idMap) {\n return this.primaryColumns[0].getEntityValue(idMap); // todo: what about parent primary column?\n }\n return idMap;\n };\n /**\n * Compares two different entities by their ids.\n * Returns true if they match, false otherwise.\n */\n EntityMetadata.prototype.compareEntities = function (firstEntity, secondEntity) {\n var firstEntityIdMap = this.getEntityIdMap(firstEntity);\n if (!firstEntityIdMap)\n return false;\n var secondEntityIdMap = this.getEntityIdMap(secondEntity);\n if (!secondEntityIdMap)\n return false;\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[\"OrmUtils\"].compareIds(firstEntityIdMap, secondEntityIdMap);\n };\n /**\n * Finds column with a given property name.\n */\n EntityMetadata.prototype.findColumnWithPropertyName = function (propertyName) {\n return this.columns.find(function (column) { return column.propertyName === propertyName; });\n };\n /**\n * Finds column with a given database name.\n */\n EntityMetadata.prototype.findColumnWithDatabaseName = function (databaseName) {\n return this.columns.find(function (column) { return column.databaseName === databaseName; });\n };\n /**\n * Finds column with a given property path.\n */\n EntityMetadata.prototype.findColumnWithPropertyPath = function (propertyPath) {\n var column = this.columns.find(function (column) { return column.propertyPath === propertyPath; });\n if (column)\n return column;\n // in the case if column with property path was not found, try to find a relation with such property path\n // if we find relation and it has a single join column then its the column user was seeking\n var relation = this.relations.find(function (relation) { return relation.propertyPath === propertyPath; });\n if (relation && relation.joinColumns.length === 1)\n return relation.joinColumns[0];\n return undefined;\n };\n /**\n * Finds columns with a given property path.\n * Property path can match a relation, and relations can contain multiple columns.\n */\n EntityMetadata.prototype.findColumnsWithPropertyPath = function (propertyPath) {\n var column = this.columns.find(function (column) { return column.propertyPath === propertyPath; });\n if (column)\n return [column];\n // in the case if column with property path was not found, try to find a relation with such property path\n // if we find relation and it has a single join column then its the column user was seeking\n var relation = this.relations.find(function (relation) { return relation.propertyPath === propertyPath; });\n if (relation && relation.joinColumns)\n return relation.joinColumns;\n return [];\n };\n /**\n * Finds relation with the given property path.\n */\n EntityMetadata.prototype.findRelationWithPropertyPath = function (propertyPath) {\n return this.relations.find(function (relation) { return relation.propertyPath === propertyPath; });\n };\n /**\n * Checks if there is an embedded with a given property path.\n */\n EntityMetadata.prototype.hasEmbeddedWithPropertyPath = function (propertyPath) {\n return this.allEmbeddeds.some(function (embedded) { return embedded.propertyPath === propertyPath; });\n };\n /**\n * Finds embedded with a given property path.\n */\n EntityMetadata.prototype.findEmbeddedWithPropertyPath = function (propertyPath) {\n return this.allEmbeddeds.find(function (embedded) { return embedded.propertyPath === propertyPath; });\n };\n /**\n * Iterates through entity and finds and extracts all values from relations in the entity.\n * If relation value is an array its being flattened.\n */\n EntityMetadata.prototype.extractRelationValuesFromEntity = function (entity, relations) {\n var _this = this;\n var relationsAndValues = [];\n relations.forEach(function (relation) {\n var value = relation.getEntityValue(entity);\n if (Array.isArray(value)) {\n value.forEach(function (subValue) { return relationsAndValues.push([relation, subValue, _this.getInverseEntityMetadata(subValue, relation)]); });\n }\n else if (value) {\n relationsAndValues.push([relation, value, _this.getInverseEntityMetadata(value, relation)]);\n }\n });\n return relationsAndValues;\n };\n EntityMetadata.prototype.getInverseEntityMetadata = function (value, relation) {\n var childEntityMetadata = relation.inverseEntityMetadata.childEntityMetadatas.find(function (metadata) {\n return metadata.target === value.constructor;\n });\n return childEntityMetadata ? childEntityMetadata : relation.inverseEntityMetadata;\n };\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a property paths for a given entity.\n */\n EntityMetadata.createPropertyPath = function (metadata, entity, prefix) {\n var _this = this;\n if (prefix === void 0) { prefix = \"\"; }\n var paths = [];\n Object.keys(entity).forEach(function (key) {\n // check for function is needed in the cases when createPropertyPath used on values containg a function as a value\n // example: .update().set({ name: () => `SUBSTR('', 1, 2)` })\n var parentPath = prefix ? prefix + \".\" + key : key;\n if (metadata.hasEmbeddedWithPropertyPath(parentPath)) {\n var subPaths = _this.createPropertyPath(metadata, entity[key], parentPath);\n paths.push.apply(paths, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(subPaths)));\n }\n else {\n var path = prefix ? prefix + \".\" + key : key;\n paths.push(path);\n }\n });\n return paths;\n };\n /**\n * Finds difference between two entity id maps.\n * Returns items that exist in the first array and absent in the second array.\n */\n EntityMetadata.difference = function (firstIdMaps, secondIdMaps) {\n return firstIdMaps.filter(function (firstIdMap) {\n return !secondIdMaps.find(function (secondIdMap) { return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[\"OrmUtils\"].compareIds(firstIdMap, secondIdMap); });\n });\n };\n /**\n * Creates value map from the given values and columns.\n * Examples of usages are primary columns map and join columns map.\n */\n EntityMetadata.getValueMap = function (entity, columns, options) {\n return columns.reduce(function (map, column) {\n var value = column.getEntityValueMap(entity, options);\n // make sure that none of the values of the columns are not missing\n if (map === undefined || value === null || value === undefined)\n return undefined;\n return column.isObjectId ? Object.assign(map, value) : _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[\"OrmUtils\"].mergeDeep(map, value);\n }, {});\n };\n // ---------------------------------------------------------------------\n // Public Builder Methods\n // ---------------------------------------------------------------------\n EntityMetadata.prototype.build = function () {\n var namingStrategy = this.connection.namingStrategy;\n var entityPrefix = this.connection.options.entityPrefix;\n this.engine = this.tableMetadataArgs.engine;\n this.database = this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata ? this.parentEntityMetadata.database : this.tableMetadataArgs.database;\n if (this.tableMetadataArgs.schema) {\n this.schema = this.tableMetadataArgs.schema;\n }\n else if ((this.tableMetadataArgs.type === \"entity-child\") && this.parentEntityMetadata) {\n this.schema = this.parentEntityMetadata.schema;\n }\n else {\n this.schema = this.connection.options.schema;\n }\n this.givenTableName = this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata ? this.parentEntityMetadata.givenTableName : this.tableMetadataArgs.name;\n this.synchronize = this.tableMetadataArgs.synchronize === false ? false : true;\n this.targetName = this.tableMetadataArgs.target instanceof Function ? this.tableMetadataArgs.target.name : this.tableMetadataArgs.target;\n if (this.tableMetadataArgs.type === \"closure-junction\") {\n this.tableNameWithoutPrefix = namingStrategy.closureJunctionTableName(this.givenTableName);\n }\n else if (this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata) {\n this.tableNameWithoutPrefix = namingStrategy.tableName(this.parentEntityMetadata.targetName, this.parentEntityMetadata.givenTableName);\n }\n else {\n this.tableNameWithoutPrefix = namingStrategy.tableName(this.targetName, this.givenTableName);\n if (this.connection.driver.maxAliasLength && this.connection.driver.maxAliasLength > 0 && this.tableNameWithoutPrefix.length > this.connection.driver.maxAliasLength) {\n this.tableNameWithoutPrefix = Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_4__[\"shorten\"])(this.tableNameWithoutPrefix, { separator: \"_\", segmentLength: 3 });\n }\n }\n this.tableName = entityPrefix ? namingStrategy.prefixTableName(entityPrefix, this.tableNameWithoutPrefix) : this.tableNameWithoutPrefix;\n this.target = this.target ? this.target : this.tableName;\n this.name = this.targetName ? this.targetName : this.tableName;\n this.expression = this.tableMetadataArgs.expression;\n this.withoutRowid = this.tableMetadataArgs.withoutRowid === true ? true : false;\n this.tablePath = this.buildTablePath();\n this.schemaPath = this.buildSchemaPath();\n this.orderBy = (this.tableMetadataArgs.orderBy instanceof Function) ? this.tableMetadataArgs.orderBy(this.propertiesMap) : this.tableMetadataArgs.orderBy; // todo: is propertiesMap available here? Looks like its not\n this.isJunction = this.tableMetadataArgs.type === \"closure-junction\" || this.tableMetadataArgs.type === \"junction\";\n this.isClosureJunction = this.tableMetadataArgs.type === \"closure-junction\";\n };\n /**\n * Registers a new column in the entity and recomputes all depend properties.\n */\n EntityMetadata.prototype.registerColumn = function (column) {\n if (this.ownColumns.indexOf(column) !== -1)\n return;\n this.ownColumns.push(column);\n this.columns = this.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.columnsFromTree); }, this.ownColumns);\n this.primaryColumns = this.columns.filter(function (column) { return column.isPrimary; });\n this.hasMultiplePrimaryKeys = this.primaryColumns.length > 1;\n this.hasUUIDGeneratedColumns = this.columns.filter(function (column) { return column.isGenerated || column.generationStrategy === \"uuid\"; }).length > 0;\n this.propertiesMap = this.createPropertiesMap();\n if (this.childEntityMetadatas)\n this.childEntityMetadatas.forEach(function (entityMetadata) { return entityMetadata.registerColumn(column); });\n };\n /**\n * Creates a special object - all columns and relations of the object (plus columns and relations from embeds)\n * in a special format - { propertyName: propertyName }.\n *\n * example: Post{ id: number, name: string, counterEmbed: { count: number }, category: Category }.\n * This method will create following object:\n * { id: \"id\", counterEmbed: { count: \"counterEmbed.count\" }, category: \"category\" }\n */\n EntityMetadata.prototype.createPropertiesMap = function () {\n var map = {};\n this.columns.forEach(function (column) { return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[\"OrmUtils\"].mergeDeep(map, column.createValueMap(column.propertyPath)); });\n this.relations.forEach(function (relation) { return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_3__[\"OrmUtils\"].mergeDeep(map, relation.createValueMap(relation.propertyPath)); });\n return map;\n };\n /**\n * Builds table path using database name, schema name and table name.\n */\n EntityMetadata.prototype.buildTablePath = function () {\n var tablePath = this.tableName;\n if (this.schema && ((this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) || (this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) || (this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) || (this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]))) {\n tablePath = this.schema + \".\" + tablePath;\n }\n if (this.database && !(this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"])) {\n if (!this.schema && this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n tablePath = this.database + \"..\" + tablePath;\n }\n else {\n tablePath = this.database + \".\" + tablePath;\n }\n }\n return tablePath;\n };\n /**\n * Builds table path using schema name and database name.\n */\n EntityMetadata.prototype.buildSchemaPath = function () {\n if (!this.schema)\n return undefined;\n return this.database && !(this.connection.driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) ? this.database + \".\" + this.schema : this.schema;\n };\n return EntityMetadata;\n}());\n\n\n//# sourceMappingURL=EntityMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/EntityMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/ExclusionMetadata.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/ExclusionMetadata.js ***! - \********************************************************************/ -/*! exports provided: ExclusionMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExclusionMetadata\", function() { return ExclusionMetadata; });\n/**\n * Exclusion metadata contains all information about table's exclusion constraints.\n */\nvar ExclusionMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ExclusionMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n if (options.args) {\n this.target = options.args.target;\n this.expression = options.args.expression;\n this.givenName = options.args.name;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend exclusion constraint properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n ExclusionMetadata.prototype.build = function (namingStrategy) {\n this.name = this.givenName ? this.givenName : namingStrategy.exclusionConstraintName(this.entityMetadata.tablePath, this.expression);\n return this;\n };\n return ExclusionMetadata;\n}());\n\n\n//# sourceMappingURL=ExclusionMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/ExclusionMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js ***! - \*********************************************************************/ -/*! exports provided: ForeignKeyMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ForeignKeyMetadata\", function() { return ForeignKeyMetadata; });\n/**\n * Contains all information about entity's foreign key.\n */\nvar ForeignKeyMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ForeignKeyMetadata(options) {\n /**\n * Array of columns of this foreign key.\n */\n this.columns = [];\n /**\n * Array of referenced columns.\n */\n this.referencedColumns = [];\n /**\n * Gets array of column names.\n */\n this.columnNames = [];\n /**\n * Gets array of referenced column names.\n */\n this.referencedColumnNames = [];\n this.entityMetadata = options.entityMetadata;\n this.referencedEntityMetadata = options.referencedEntityMetadata;\n this.columns = options.columns;\n this.referencedColumns = options.referencedColumns;\n this.onDelete = options.onDelete || \"NO ACTION\";\n this.onUpdate = options.onUpdate || \"NO ACTION\";\n this.deferrable = options.deferrable;\n if (options.namingStrategy)\n this.build(options.namingStrategy);\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend foreign key properties.\n * Must be called after all entity metadatas and their columns are built.\n */\n ForeignKeyMetadata.prototype.build = function (namingStrategy) {\n this.columnNames = this.columns.map(function (column) { return column.databaseName; });\n this.referencedColumnNames = this.referencedColumns.map(function (column) { return column.databaseName; });\n this.referencedTablePath = this.referencedEntityMetadata.tablePath;\n this.name = namingStrategy.foreignKeyName(this.entityMetadata.tablePath, this.columnNames, this.referencedTablePath, this.referencedColumnNames);\n };\n return ForeignKeyMetadata;\n}());\n\n\n//# sourceMappingURL=ForeignKeyMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/IndexMetadata.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/IndexMetadata.js ***! - \****************************************************************/ -/*! exports provided: IndexMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IndexMetadata\", function() { return IndexMetadata; });\n/**\n * Index metadata contains all information about table's index.\n */\nvar IndexMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function IndexMetadata(options) {\n /**\n * Indicates if this index must be unique.\n */\n this.isUnique = false;\n /**\n * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\n * Works only in MySQL.\n */\n this.isSpatial = false;\n /**\n * The FULLTEXT modifier indexes the entire column and does not allow prefixing.\n * Works only in MySQL.\n */\n this.isFulltext = false;\n /**\n * Indicates if this index must synchronize with database index.\n */\n this.synchronize = true;\n /**\n * Indexed columns.\n */\n this.columns = [];\n /**\n * Map of column names with order set.\n * Used only by MongoDB driver.\n */\n this.columnNamesWithOrderingMap = {};\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n if (options.columns)\n this.columns = options.columns;\n if (options.args) {\n this.target = options.args.target;\n if (options.args.synchronize !== null && options.args.synchronize !== undefined)\n this.synchronize = options.args.synchronize;\n this.isUnique = !!options.args.unique;\n this.isSpatial = !!options.args.spatial;\n this.isFulltext = !!options.args.fulltext;\n this.parser = options.args.parser;\n this.where = options.args.where;\n this.isSparse = options.args.sparse;\n this.isBackground = options.args.background;\n this.expireAfterSeconds = options.args.expireAfterSeconds;\n this.givenName = options.args.name;\n this.givenColumnNames = options.args.columns;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend index properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n IndexMetadata.prototype.build = function (namingStrategy) {\n var _this = this;\n if (this.synchronize === false) {\n this.name = this.givenName;\n return this;\n }\n var map = {};\n // if columns already an array of string then simply return it\n if (this.givenColumnNames) {\n var columnPropertyPaths = [];\n if (Array.isArray(this.givenColumnNames)) {\n columnPropertyPaths = this.givenColumnNames.map(function (columnName) {\n if (_this.embeddedMetadata)\n return _this.embeddedMetadata.propertyPath + \".\" + columnName;\n return columnName;\n });\n columnPropertyPaths.forEach(function (propertyPath) { return map[propertyPath] = 1; });\n }\n else { // todo: indices in embeds are not implemented in this syntax. deprecate this syntax?\n // if columns is a function that returns array of field names then execute it and get columns names from it\n var columnsFnResult_1 = this.givenColumnNames(this.entityMetadata.propertiesMap);\n if (Array.isArray(columnsFnResult_1)) {\n columnPropertyPaths = columnsFnResult_1.map(function (i) { return String(i); });\n columnPropertyPaths.forEach(function (name) { return map[name] = 1; });\n }\n else {\n columnPropertyPaths = Object.keys(columnsFnResult_1).map(function (i) { return String(i); });\n Object.keys(columnsFnResult_1).forEach(function (columnName) { return map[columnName] = columnsFnResult_1[columnName]; });\n }\n }\n this.columns = columnPropertyPaths.map(function (propertyPath) {\n var columnWithSameName = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === propertyPath; });\n if (columnWithSameName) {\n return [columnWithSameName];\n }\n var relationWithSameName = _this.entityMetadata.relations.find(function (relation) { return relation.isWithJoinColumn && relation.propertyName === propertyPath; });\n if (relationWithSameName) {\n return relationWithSameName.joinColumns;\n }\n var indexName = _this.givenName ? \"\\\"\" + _this.givenName + \"\\\" \" : \"\";\n var entityName = _this.entityMetadata.targetName;\n throw new Error(\"Index \" + indexName + \"contains column that is missing in the entity (\" + entityName + \"): \" + propertyPath);\n })\n .reduce(function (a, b) { return a.concat(b); });\n }\n this.columnNamesWithOrderingMap = Object.keys(map).reduce(function (updatedMap, key) {\n var column = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === key; });\n if (column)\n updatedMap[column.databasePath] = map[key];\n return updatedMap;\n }, {});\n this.name = this.givenName ? this.givenName : namingStrategy.indexName(this.entityMetadata.tablePath, this.columns.map(function (column) { return column.databaseName; }), this.where);\n return this;\n };\n return IndexMetadata;\n}());\n\n\n//# sourceMappingURL=IndexMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/IndexMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/RelationCountMetadata.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/RelationCountMetadata.js ***! - \************************************************************************/ -/*! exports provided: RelationCountMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationCountMetadata\", function() { return RelationCountMetadata; });\n/**\n * Contains all information about entity's relation count.\n */\nvar RelationCountMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function RelationCountMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n this.target = options.args.target;\n this.propertyName = options.args.propertyName;\n this.relationNameOrFactory = options.args.relation;\n this.alias = options.args.alias;\n this.queryBuilderFactory = options.args.queryBuilderFactory;\n }\n // ---------------------------------------------------------------------\n // Public Builder Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend relation count metadata properties.\n * This builder method should be used only after entity metadata, its properties map and all relations are build.\n */\n RelationCountMetadata.prototype.build = function () {\n var propertyPath = this.relationNameOrFactory instanceof Function ? this.relationNameOrFactory(this.entityMetadata.propertiesMap) : this.relationNameOrFactory;\n var relation = this.entityMetadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(\"Cannot find relation \" + propertyPath + \". Wrong relation specified for @RelationCount decorator.\");\n this.relation = relation;\n };\n return RelationCountMetadata;\n}());\n\n\n//# sourceMappingURL=RelationCountMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/RelationCountMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/RelationIdMetadata.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/RelationIdMetadata.js ***! - \*********************************************************************/ -/*! exports provided: RelationIdMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationIdMetadata\", function() { return RelationIdMetadata; });\n/**\n * Contains all information about entity's relation count.\n */\nvar RelationIdMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function RelationIdMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n this.target = options.args.target;\n this.propertyName = options.args.propertyName;\n this.relationNameOrFactory = options.args.relation;\n this.alias = options.args.alias;\n this.queryBuilderFactory = options.args.queryBuilderFactory;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Sets relation id value from the given entity.\n *\n * todo: make it to work in embeds as well.\n */\n RelationIdMetadata.prototype.setValue = function (entity) {\n var _this = this;\n var inverseEntity = this.relation.getEntityValue(entity);\n if (Array.isArray(inverseEntity)) {\n entity[this.propertyName] = inverseEntity.map(function (item) {\n return _this.relation.inverseEntityMetadata.getEntityIdMixedMap(item);\n }).filter(function (item) { return item !== null && item !== undefined; });\n }\n else {\n var value = this.relation.inverseEntityMetadata.getEntityIdMixedMap(inverseEntity);\n if (value !== undefined)\n entity[this.propertyName] = value;\n }\n };\n // ---------------------------------------------------------------------\n // Public Builder Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend relation id properties.\n * This builder method should be used only after entity metadata, its properties map and all relations are build.\n */\n RelationIdMetadata.prototype.build = function () {\n var propertyPath = this.relationNameOrFactory instanceof Function ? this.relationNameOrFactory(this.entityMetadata.propertiesMap) : this.relationNameOrFactory;\n var relation = this.entityMetadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(\"Cannot find relation \" + propertyPath + \". Wrong relation specified for @RelationId decorator.\");\n this.relation = relation;\n };\n return RelationIdMetadata;\n}());\n\n\n//# sourceMappingURL=RelationIdMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/RelationIdMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/RelationMetadata.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/RelationMetadata.js ***! - \*******************************************************************/ -/*! exports provided: RelationMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationMetadata\", function() { return RelationMetadata; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _EntityMetadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n\n\n/**\n * Contains all information about some entity's relation.\n */\nvar RelationMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function RelationMetadata(options) {\n /**\n * Indicates if this is a parent (can be only many-to-one relation) relation in the tree tables.\n */\n this.isTreeParent = false;\n /**\n * Indicates if this is a children (can be only one-to-many relation) relation in the tree tables.\n */\n this.isTreeChildren = false;\n /**\n * Indicates if this relation's column is a primary key.\n * Can be used only for many-to-one and owner one-to-one relations.\n */\n this.isPrimary = false;\n /**\n * Indicates if this relation is lazily loaded.\n */\n this.isLazy = false;\n /**\n * Indicates if this relation is eagerly loaded.\n */\n this.isEager = false;\n /**\n * Indicates if persistence is enabled for the relation.\n * By default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it.\n * If its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality.\n * This is useful for performance optimization since its disabling avoid multiple extra queries during entity save.\n */\n this.persistenceEnabled = true;\n /**\n * If set to true then related objects are allowed to be inserted to the database.\n */\n this.isCascadeInsert = false;\n /**\n * If set to true then related objects are allowed to be updated in the database.\n */\n this.isCascadeUpdate = false;\n /**\n * If set to true then related objects are allowed to be remove from the database.\n */\n this.isCascadeRemove = false;\n /**\n * If set to true then related objects are allowed to be soft-removed from the database.\n */\n this.isCascadeSoftRemove = false;\n /**\n * If set to true then related objects are allowed to be recovered from the database.\n */\n this.isCascadeRecover = false;\n /**\n * Indicates if relation column value can be nullable or not.\n */\n this.isNullable = true;\n /**\n * Indicates whether foreign key constraints will be created for join columns.\n * Can be used only for many-to-one and owner one-to-one relations.\n * Defaults to true.\n */\n this.createForeignKeyConstraints = true;\n /**\n * Indicates if this side is an owner of this relation.\n */\n this.isOwning = false;\n /**\n * Checks if this relation's type is \"one-to-one\".\n */\n this.isOneToOne = false;\n /**\n * Checks if this relation is owner side of the \"one-to-one\" relation.\n * Owner side means this side of relation has a join column in the table.\n */\n this.isOneToOneOwner = false;\n /**\n * Checks if this relation has a join column (e.g. is it many-to-one or one-to-one owner side).\n */\n this.isWithJoinColumn = false;\n /**\n * Checks if this relation is NOT owner side of the \"one-to-one\" relation.\n * NOT owner side means this side of relation does not have a join column in the table.\n */\n this.isOneToOneNotOwner = false;\n /**\n * Checks if this relation's type is \"one-to-many\".\n */\n this.isOneToMany = false;\n /**\n * Checks if this relation's type is \"many-to-one\".\n */\n this.isManyToOne = false;\n /**\n * Checks if this relation's type is \"many-to-many\".\n */\n this.isManyToMany = false;\n /**\n * Checks if this relation's type is \"many-to-many\", and is owner side of the relationship.\n * Owner side means this side of relation has a join table.\n */\n this.isManyToManyOwner = false;\n /**\n * Checks if this relation's type is \"many-to-many\", and is NOT owner side of the relationship.\n * Not owner side means this side of relation does not have a join table.\n */\n this.isManyToManyNotOwner = false;\n /**\n * Foreign keys created for this relation.\n */\n this.foreignKeys = [];\n /**\n * Join table columns.\n * Join columns can be obtained only from owner side of the relation.\n * From non-owner side of the relation join columns will be empty.\n * If this relation is a many-to-one/one-to-one then it takes join columns from the current entity.\n * If this relation is many-to-many then it takes all owner join columns from the junction entity.\n */\n this.joinColumns = [];\n /**\n * Inverse join table columns.\n * Inverse join columns are supported only for many-to-many relations\n * and can be obtained only from owner side of the relation.\n * From non-owner side of the relation join columns will be undefined.\n */\n this.inverseJoinColumns = [];\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n var args = options.args;\n this.target = args.target;\n this.propertyName = args.propertyName;\n this.relationType = args.relationType;\n if (args.inverseSideProperty)\n this.givenInverseSidePropertyFactory = args.inverseSideProperty;\n this.isLazy = args.isLazy || false;\n // this.isCascadeInsert = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"insert\") !== -1);\n // this.isCascadeUpdate = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"update\") !== -1);\n // this.isCascadeRemove = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"remove\") !== -1);\n // this.isCascadeSoftRemove = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"soft-remove\") !== -1);\n // this.isCascadeRecover = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"recover\") !== -1);\n this.isCascadeInsert = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"insert\") !== -1);\n this.isCascadeUpdate = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"update\") !== -1);\n this.isCascadeRemove = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"remove\") !== -1);\n this.isCascadeSoftRemove = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"soft-remove\") !== -1);\n this.isCascadeRecover = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"recover\") !== -1);\n this.isPrimary = args.options.primary || false;\n this.isNullable = args.options.nullable === false || this.isPrimary ? false : true;\n this.onDelete = args.options.onDelete;\n this.onUpdate = args.options.onUpdate;\n this.deferrable = args.options.deferrable;\n this.createForeignKeyConstraints = args.options.createForeignKeyConstraints === false ? false : true;\n this.isEager = args.options.eager || false;\n this.persistenceEnabled = args.options.persistence === false ? false : true;\n this.orphanedRowAction = args.options.orphanedRowAction || \"nullify\";\n this.isTreeParent = args.isTreeParent || false;\n this.isTreeChildren = args.isTreeChildren || false;\n this.type = args.type instanceof Function ? args.type() : args.type;\n this.isOneToOne = this.relationType === \"one-to-one\";\n this.isOneToMany = this.relationType === \"one-to-many\";\n this.isManyToOne = this.relationType === \"many-to-one\";\n this.isManyToMany = this.relationType === \"many-to-many\";\n this.isOneToOneNotOwner = this.isOneToOne ? true : false;\n this.isManyToManyNotOwner = this.isManyToMany ? true : false;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Creates join column ids map from the given related entity ids array.\n */\n RelationMetadata.prototype.getRelationIdMap = function (entity) {\n var joinColumns = this.isOwning ? this.joinColumns : this.inverseRelation.joinColumns;\n var referencedColumns = joinColumns.map(function (joinColumn) { return joinColumn.referencedColumn; });\n // console.log(\"entity\", entity);\n // console.log(\"referencedColumns\", referencedColumns);\n return _EntityMetadata__WEBPACK_IMPORTED_MODULE_1__[\"EntityMetadata\"].getValueMap(entity, referencedColumns);\n };\n /**\n * Ensures that given object is an entity id map.\n * If given id is an object then it means its already id map.\n * If given id isn't an object then it means its a value of the id column\n * and it creates a new id map with this value and name of the primary column.\n */\n RelationMetadata.prototype.ensureRelationIdMap = function (id) {\n if (id instanceof Object)\n return id;\n var joinColumns = this.isOwning ? this.joinColumns : this.inverseRelation.joinColumns;\n var referencedColumns = joinColumns.map(function (joinColumn) { return joinColumn.referencedColumn; });\n if (referencedColumns.length > 1)\n throw new Error(\"Cannot create relation id map for a single value because relation contains multiple referenced columns.\");\n return referencedColumns[0].createValueMap(id);\n };\n /**\n * Extracts column value from the given entity.\n * If column is in embedded (or recursive embedded) it extracts its value from there.\n */\n RelationMetadata.prototype.getEntityValue = function (entity, getLazyRelationsPromiseValue) {\n if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; }\n if (entity === null || entity === undefined)\n return undefined;\n // extract column value from embeddeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.embeddedMetadata.parentPropertyNames));\n // next we need to access post[data][information][counters][this.propertyName] to get column value from the counters\n // this recursive function takes array of generated property names and gets the post[data][information][counters] embed\n var extractEmbeddedColumnValue_1 = function (propertyNames, value) {\n var propertyName = propertyNames.shift();\n if (propertyName) {\n if (value[propertyName]) {\n return extractEmbeddedColumnValue_1(propertyNames, value[propertyName]);\n }\n return undefined;\n }\n return value;\n };\n // once we get nested embed object we get its column, e.g. post[data][information][counters][this.propertyName]\n var embeddedObject = extractEmbeddedColumnValue_1(propertyNames, entity);\n if (this.isLazy) {\n if (embeddedObject[\"__\" + this.propertyName + \"__\"] !== undefined)\n return embeddedObject[\"__\" + this.propertyName + \"__\"];\n if (getLazyRelationsPromiseValue === true)\n return embeddedObject[this.propertyName];\n return undefined;\n }\n return embeddedObject ? embeddedObject[this.isLazy ? \"__\" + this.propertyName + \"__\" : this.propertyName] : undefined;\n }\n else { // no embeds - no problems. Simply return column name by property name of the entity\n if (this.isLazy) {\n if (entity[\"__\" + this.propertyName + \"__\"] !== undefined)\n return entity[\"__\" + this.propertyName + \"__\"];\n if (getLazyRelationsPromiseValue === true)\n return entity[this.propertyName];\n return undefined;\n }\n return entity[this.propertyName];\n }\n };\n /**\n * Sets given entity's relation's value.\n * Using of this method helps to set entity relation's value of the lazy and non-lazy relations.\n *\n * If merge is set to true, it merges given value into currently\n */\n RelationMetadata.prototype.setEntityValue = function (entity, value) {\n var propertyName = this.isLazy ? \"__\" + this.propertyName + \"__\" : this.propertyName;\n if (this.embeddedMetadata) {\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var extractEmbeddedColumnValue_2 = function (embeddedMetadatas, map) {\n // if (!object[embeddedMetadata.propertyName])\n // object[embeddedMetadata.propertyName] = embeddedMetadata.create();\n var embeddedMetadata = embeddedMetadatas.shift();\n if (embeddedMetadata) {\n if (!map[embeddedMetadata.propertyName])\n map[embeddedMetadata.propertyName] = embeddedMetadata.create();\n extractEmbeddedColumnValue_2(embeddedMetadatas, map[embeddedMetadata.propertyName]);\n return map;\n }\n map[propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_2(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.embeddedMetadata.embeddedMetadataTree)), entity);\n }\n else {\n entity[propertyName] = value;\n }\n };\n /**\n * Creates entity id map from the given entity ids array.\n */\n RelationMetadata.prototype.createValueMap = function (value) {\n var _a;\n var _this = this;\n // extract column value from embeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object and return it in a\n // { data: { information: { counters: { id: ... } } } } format\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.embeddedMetadata.parentPropertyNames));\n // now need to access post[data][information][counters] to get column value from the counters\n // and on each step we need to create complex literal object, e.g. first { data },\n // then { data: { information } }, then { data: { information: { counters } } },\n // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } }\n // this recursive function helps doing that\n var extractEmbeddedColumnValue_3 = function (propertyNames, map) {\n var propertyName = propertyNames.shift();\n if (propertyName) {\n map[propertyName] = {};\n extractEmbeddedColumnValue_3(propertyNames, map[propertyName]);\n return map;\n }\n map[_this.propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_3(propertyNames, {});\n }\n else { // no embeds - no problems. Simply return column property name and its value of the entity\n return _a = {}, _a[this.propertyName] = value, _a;\n }\n };\n // ---------------------------------------------------------------------\n // Builder Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend relation metadata properties.\n * This builder method should be used only after embedded metadata tree was build.\n */\n RelationMetadata.prototype.build = function () {\n this.propertyPath = this.buildPropertyPath();\n };\n /**\n * Registers given foreign keys in the relation.\n * This builder method should be used to register foreign key in the relation.\n */\n RelationMetadata.prototype.registerForeignKeys = function () {\n var _a;\n var foreignKeys = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n foreignKeys[_i] = arguments[_i];\n }\n (_a = this.foreignKeys).push.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(foreignKeys)));\n };\n /**\n * Registers given join columns in the relation.\n * This builder method should be used to register join column in the relation.\n */\n RelationMetadata.prototype.registerJoinColumns = function (joinColumns, inverseJoinColumns) {\n if (joinColumns === void 0) { joinColumns = []; }\n if (inverseJoinColumns === void 0) { inverseJoinColumns = []; }\n this.joinColumns = joinColumns;\n this.inverseJoinColumns = inverseJoinColumns;\n this.isOwning = this.isManyToOne || ((this.isManyToMany || this.isOneToOne) && this.joinColumns.length > 0);\n this.isOneToOneOwner = this.isOneToOne && this.isOwning;\n this.isOneToOneNotOwner = this.isOneToOne && !this.isOwning;\n this.isManyToManyOwner = this.isManyToMany && this.isOwning;\n this.isManyToManyNotOwner = this.isManyToMany && !this.isOwning;\n this.isWithJoinColumn = this.isManyToOne || this.isOneToOneOwner;\n };\n /**\n * Registers a given junction entity metadata.\n * This builder method can be called after junction entity metadata for the many-to-many relation was created.\n */\n RelationMetadata.prototype.registerJunctionEntityMetadata = function (junctionEntityMetadata) {\n this.junctionEntityMetadata = junctionEntityMetadata;\n this.joinTableName = junctionEntityMetadata.tableName;\n if (this.inverseRelation) {\n this.inverseRelation.junctionEntityMetadata = junctionEntityMetadata;\n this.joinTableName = junctionEntityMetadata.tableName;\n }\n };\n /**\n * Builds inverse side property path based on given inverse side property factory.\n * This builder method should be used only after properties map of the inverse entity metadata was build.\n */\n RelationMetadata.prototype.buildInverseSidePropertyPath = function () {\n if (this.givenInverseSidePropertyFactory) {\n var ownerEntityPropertiesMap = this.inverseEntityMetadata.propertiesMap;\n if (typeof this.givenInverseSidePropertyFactory === \"function\")\n return this.givenInverseSidePropertyFactory(ownerEntityPropertiesMap);\n if (typeof this.givenInverseSidePropertyFactory === \"string\")\n return this.givenInverseSidePropertyFactory;\n }\n else if (this.isTreeParent && this.entityMetadata.treeChildrenRelation) {\n return this.entityMetadata.treeChildrenRelation.propertyName;\n }\n else if (this.isTreeChildren && this.entityMetadata.treeParentRelation) {\n return this.entityMetadata.treeParentRelation.propertyName;\n }\n return \"\";\n };\n /**\n * Builds relation's property path based on its embedded tree.\n */\n RelationMetadata.prototype.buildPropertyPath = function () {\n if (!this.embeddedMetadata || !this.embeddedMetadata.parentPropertyNames.length)\n return this.propertyName;\n return this.embeddedMetadata.parentPropertyNames.join(\".\") + \".\" + this.propertyName;\n };\n return RelationMetadata;\n}());\n\n\n//# sourceMappingURL=RelationMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/RelationMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/UniqueMetadata.js": -/*!*****************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/UniqueMetadata.js ***! - \*****************************************************************/ -/*! exports provided: UniqueMetadata */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueMetadata\", function() { return UniqueMetadata; });\n/**\n * Unique metadata contains all information about table's unique constraints.\n */\nvar UniqueMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function UniqueMetadata(options) {\n /**\n * Unique columns.\n */\n this.columns = [];\n /**\n * Map of column names with order set.\n * Used only by MongoDB driver.\n */\n this.columnNamesWithOrderingMap = {};\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n if (options.columns)\n this.columns = options.columns;\n if (options.args) {\n this.target = options.args.target;\n this.givenName = options.args.name;\n this.givenColumnNames = options.args.columns;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend unique constraint properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n UniqueMetadata.prototype.build = function (namingStrategy) {\n var _this = this;\n var map = {};\n // if columns already an array of string then simply return it\n if (this.givenColumnNames) {\n var columnPropertyPaths = [];\n if (Array.isArray(this.givenColumnNames)) {\n columnPropertyPaths = this.givenColumnNames.map(function (columnName) {\n if (_this.embeddedMetadata)\n return _this.embeddedMetadata.propertyPath + \".\" + columnName;\n return columnName;\n });\n columnPropertyPaths.forEach(function (propertyPath) { return map[propertyPath] = 1; });\n }\n else {\n // if columns is a function that returns array of field names then execute it and get columns names from it\n var columnsFnResult_1 = this.givenColumnNames(this.entityMetadata.propertiesMap);\n if (Array.isArray(columnsFnResult_1)) {\n columnPropertyPaths = columnsFnResult_1.map(function (i) { return String(i); });\n columnPropertyPaths.forEach(function (name) { return map[name] = 1; });\n }\n else {\n columnPropertyPaths = Object.keys(columnsFnResult_1).map(function (i) { return String(i); });\n Object.keys(columnsFnResult_1).forEach(function (columnName) { return map[columnName] = columnsFnResult_1[columnName]; });\n }\n }\n this.columns = columnPropertyPaths.map(function (propertyName) {\n var columnWithSameName = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === propertyName; });\n if (columnWithSameName) {\n return [columnWithSameName];\n }\n var relationWithSameName = _this.entityMetadata.relations.find(function (relation) { return relation.isWithJoinColumn && relation.propertyName === propertyName; });\n if (relationWithSameName) {\n return relationWithSameName.joinColumns;\n }\n var indexName = _this.givenName ? \"\\\"\" + _this.givenName + \"\\\" \" : \"\";\n var entityName = _this.entityMetadata.targetName;\n throw new Error(\"Unique constraint \" + indexName + \"contains column that is missing in the entity (\" + entityName + \"): \" + propertyName);\n })\n .reduce(function (a, b) { return a.concat(b); });\n }\n this.columnNamesWithOrderingMap = Object.keys(map).reduce(function (updatedMap, key) {\n var column = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === key; });\n if (column)\n updatedMap[column.databasePath] = map[key];\n return updatedMap;\n }, {});\n this.name = this.givenName ? this.givenName : namingStrategy.uniqueConstraintName(this.entityMetadata.tablePath, this.columns.map(function (column) { return column.databaseName; }));\n return this;\n };\n return UniqueMetadata;\n}());\n\n\n//# sourceMappingURL=UniqueMetadata.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/UniqueMetadata.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js ***! - \***************************************************************************/ -/*! exports provided: EventListenerTypes */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventListenerTypes\", function() { return EventListenerTypes; });\n/**\n * Provides a constants for each entity listener type.\n */\nvar EventListenerTypes = /** @class */ (function () {\n function EventListenerTypes() {\n }\n EventListenerTypes.AFTER_LOAD = \"after-load\";\n EventListenerTypes.BEFORE_INSERT = \"before-insert\";\n EventListenerTypes.AFTER_INSERT = \"after-insert\";\n EventListenerTypes.BEFORE_UPDATE = \"before-update\";\n EventListenerTypes.AFTER_UPDATE = \"after-update\";\n EventListenerTypes.BEFORE_REMOVE = \"before-remove\";\n EventListenerTypes.AFTER_REMOVE = \"after-remove\";\n return EventListenerTypes;\n}());\n\n\n//# sourceMappingURL=EventListenerTypes.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/migration/Migration.js": -/*!*************************************************************!*\ - !*** ./node_modules/typeorm/browser/migration/Migration.js ***! - \*************************************************************/ -/*! exports provided: Migration */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Migration\", function() { return Migration; });\n/**\n * Represents entity of the migration in the database.\n */\nvar Migration = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Migration(id, timestamp, name, instance) {\n this.id = id;\n this.timestamp = timestamp;\n this.name = name;\n this.instance = instance;\n }\n return Migration;\n}());\n\n\n//# sourceMappingURL=Migration.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/migration/Migration.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/migration/MigrationExecutor.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/migration/MigrationExecutor.js ***! - \*********************************************************************/ -/*! exports provided: MigrationExecutor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MigrationExecutor\", function() { return MigrationExecutor; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../schema-builder/table/Table */ \"./node_modules/typeorm/browser/schema-builder/table/Table.js\");\n/* harmony import */ var _Migration__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Migration */ \"./node_modules/typeorm/browser/migration/Migration.js\");\n/* harmony import */ var _driver_sqlserver_SqlServerDriver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../driver/sqlserver/SqlServerDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../driver/sqlserver/MssqlParameter */ \"./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js\");\n\n\n\n\n\n\n/**\n * Executes migrations: runs pending and reverts previously executed migrations.\n */\nvar MigrationExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function MigrationExecutor(connection, queryRunner) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates how migrations should be run in transactions.\n * all: all migrations are run in a single transaction\n * none: all migrations are run without a transaction\n * each: each migration is run in a separate transaction\n */\n this.transaction = \"all\";\n var options = this.connection.driver.options;\n this.migrationsTableName = connection.options.migrationsTableName || \"migrations\";\n this.migrationsTable = this.connection.driver.buildTableName(this.migrationsTableName, options.schema, options.database);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Tries to execute a single migration given.\n */\n MigrationExecutor.prototype.executeMigration = function (migration) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.withQueryRunner(function (queryRunner) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n _a.sent();\n return [4 /*yield*/, migration.instance.up(queryRunner)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.insertExecutedMigration(queryRunner, migration)];\n case 3:\n _a.sent();\n return [2 /*return*/, migration];\n }\n });\n }); })];\n });\n });\n };\n /**\n * Returns an array of all migrations.\n */\n MigrationExecutor.prototype.getAllMigrations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, Promise.resolve(this.getMigrations())];\n });\n });\n };\n /**\n * Returns an array of all executed migrations.\n */\n MigrationExecutor.prototype.getExecutedMigrations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.withQueryRunner(function (queryRunner) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n }); })];\n });\n });\n };\n /**\n * Returns an array of all pending migrations.\n */\n MigrationExecutor.prototype.getPendingMigrations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var allMigrations, executedMigrations;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getAllMigrations()];\n case 1:\n allMigrations = _a.sent();\n return [4 /*yield*/, this.getExecutedMigrations()];\n case 2:\n executedMigrations = _a.sent();\n return [2 /*return*/, allMigrations.filter(function (migration) {\n return !executedMigrations.find(function (executedMigration) {\n return executedMigration.name === migration.name;\n });\n })];\n }\n });\n });\n };\n /**\n * Inserts an executed migration.\n */\n MigrationExecutor.prototype.insertMigration = function (migration) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.withQueryRunner(function (queryRunner) {\n _this.insertExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n };\n /**\n * Deletes an executed migration.\n */\n MigrationExecutor.prototype.deleteMigration = function (migration) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.withQueryRunner(function (queryRunner) {\n _this.deleteExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n };\n /**\n * Lists all migrations and whether they have been executed or not\n * returns true if there are unapplied migrations\n */\n MigrationExecutor.prototype.showMigrations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var hasUnappliedMigrations, queryRunner, executedMigrations, allMigrations, _loop_1, this_1, allMigrations_1, allMigrations_1_1, migration;\n var e_1, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n hasUnappliedMigrations = false;\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n // create migrations table if its not created yet\n _b.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2:\n executedMigrations = _b.sent();\n allMigrations = this.getMigrations();\n _loop_1 = function (migration) {\n var executedMigration = executedMigrations.find(function (executedMigration) { return executedMigration.name === migration.name; });\n if (executedMigration) {\n this_1.connection.logger.logSchemaBuild(\" [X] \" + migration.name);\n }\n else {\n hasUnappliedMigrations = true;\n this_1.connection.logger.logSchemaBuild(\" [ ] \" + migration.name);\n }\n };\n this_1 = this;\n try {\n for (allMigrations_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(allMigrations), allMigrations_1_1 = allMigrations_1.next(); !allMigrations_1_1.done; allMigrations_1_1 = allMigrations_1.next()) {\n migration = allMigrations_1_1.value;\n _loop_1(migration);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (allMigrations_1_1 && !allMigrations_1_1.done && (_a = allMigrations_1.return)) _a.call(allMigrations_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (!!this.queryRunner) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.release()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4: return [2 /*return*/, hasUnappliedMigrations];\n }\n });\n });\n };\n /**\n * Executes all pending migrations. Pending migrations are migrations that are not yet executed,\n * thus not saved in the database.\n */\n MigrationExecutor.prototype.executePendingMigrations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, executedMigrations, lastTimeExecutedMigration, allMigrations, successMigrations, pendingMigrations, transactionStartedByUs, _loop_2, this_2, pendingMigrations_1, pendingMigrations_1_1, migration, e_2_1, err_1, rollbackError_1;\n var e_2, _a;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n // create migrations table if its not created yet\n _b.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2:\n executedMigrations = _b.sent();\n lastTimeExecutedMigration = this.getLatestTimestampMigration(executedMigrations);\n allMigrations = this.getMigrations();\n successMigrations = [];\n pendingMigrations = allMigrations.filter(function (migration) {\n // check if we already have executed migration\n var executedMigration = executedMigrations.find(function (executedMigration) { return executedMigration.name === migration.name; });\n if (executedMigration)\n return false;\n // migration is new and not executed. now check if its timestamp is correct\n // if (lastTimeExecutedMigration && migration.timestamp < lastTimeExecutedMigration.timestamp)\n // throw new Error(`New migration found: ${migration.name}, however this migration's timestamp is not valid. Migration's timestamp should not be older then migrations already executed in the database.`);\n // every check is passed means that migration was not run yet and we need to run it\n return true;\n });\n if (!!pendingMigrations.length) return [3 /*break*/, 5];\n this.connection.logger.logSchemaBuild(\"No migrations are pending\");\n if (!!this.queryRunner) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.release()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4: return [2 /*return*/, []];\n case 5:\n // log information about migration execution\n this.connection.logger.logSchemaBuild(executedMigrations.length + \" migrations are already loaded in the database.\");\n this.connection.logger.logSchemaBuild(allMigrations.length + \" migrations were found in the source code.\");\n if (lastTimeExecutedMigration)\n this.connection.logger.logSchemaBuild(lastTimeExecutedMigration.name + \" is the last executed migration. It was executed on \" + new Date(lastTimeExecutedMigration.timestamp).toString() + \".\");\n this.connection.logger.logSchemaBuild(pendingMigrations.length + \" migrations are new migrations that needs to be executed.\");\n transactionStartedByUs = false;\n if (!(this.transaction === \"all\" && !queryRunner.isTransactionActive)) return [3 /*break*/, 7];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 6:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 7;\n case 7:\n _b.trys.push([7, 18, 23, 26]);\n _loop_2 = function (migration) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(this_2.transaction === \"each\" && !queryRunner.isTransactionActive)) return [3 /*break*/, 2];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 1:\n _c.sent();\n transactionStartedByUs = true;\n _c.label = 2;\n case 2: return [4 /*yield*/, migration.instance.up(queryRunner)\n .then(function () { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: // now when migration is executed we need to insert record about it into the database\n return [4 /*yield*/, this.insertExecutedMigration(queryRunner, migration)];\n case 1:\n _a.sent();\n if (!(this.transaction === \"each\" && transactionStartedByUs)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n }); })\n .then(function () {\n successMigrations.push(migration);\n _this.connection.logger.logSchemaBuild(\"Migration \" + migration.name + \" has been executed successfully.\");\n })];\n case 3:\n _c.sent();\n return [2 /*return*/];\n }\n });\n };\n this_2 = this;\n _b.label = 8;\n case 8:\n _b.trys.push([8, 13, 14, 15]);\n pendingMigrations_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(pendingMigrations), pendingMigrations_1_1 = pendingMigrations_1.next();\n _b.label = 9;\n case 9:\n if (!!pendingMigrations_1_1.done) return [3 /*break*/, 12];\n migration = pendingMigrations_1_1.value;\n return [5 /*yield**/, _loop_2(migration)];\n case 10:\n _b.sent();\n _b.label = 11;\n case 11:\n pendingMigrations_1_1 = pendingMigrations_1.next();\n return [3 /*break*/, 9];\n case 12: return [3 /*break*/, 15];\n case 13:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 15];\n case 14:\n try {\n if (pendingMigrations_1_1 && !pendingMigrations_1_1.done && (_a = pendingMigrations_1.return)) _a.call(pendingMigrations_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 15:\n if (!(this.transaction === \"all\" && transactionStartedByUs)) return [3 /*break*/, 17];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 16:\n _b.sent();\n _b.label = 17;\n case 17: return [3 /*break*/, 26];\n case 18:\n err_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 22];\n _b.label = 19;\n case 19:\n _b.trys.push([19, 21, , 22]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 20:\n _b.sent();\n return [3 /*break*/, 22];\n case 21:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 22];\n case 22: throw err_1;\n case 23:\n if (!!this.queryRunner) return [3 /*break*/, 25];\n return [4 /*yield*/, queryRunner.release()];\n case 24:\n _b.sent();\n _b.label = 25;\n case 25: return [7 /*endfinally*/];\n case 26: return [2 /*return*/, successMigrations];\n }\n });\n });\n };\n /**\n * Reverts last migration that were run.\n */\n MigrationExecutor.prototype.undoLastMigration = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, executedMigrations, lastTimeExecutedMigration, allMigrations, migrationToRevert, transactionStartedByUs, err_2, rollbackError_2;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n // create migrations table if its not created yet\n _a.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2:\n executedMigrations = _a.sent();\n lastTimeExecutedMigration = this.getLatestExecutedMigration(executedMigrations);\n // if no migrations found in the database then nothing to revert\n if (!lastTimeExecutedMigration) {\n this.connection.logger.logSchemaBuild(\"No migrations was found in the database. Nothing to revert!\");\n return [2 /*return*/];\n }\n allMigrations = this.getMigrations();\n migrationToRevert = allMigrations.find(function (migration) { return migration.name === lastTimeExecutedMigration.name; });\n // if no migrations found in the database then nothing to revert\n if (!migrationToRevert)\n throw new Error(\"No migration \" + lastTimeExecutedMigration.name + \" was found in the source code. Make sure you have this migration in your codebase and its included in the connection options.\");\n // log information about migration execution\n this.connection.logger.logSchemaBuild(executedMigrations.length + \" migrations are already loaded in the database.\");\n this.connection.logger.logSchemaBuild(lastTimeExecutedMigration.name + \" is the last executed migration. It was executed on \" + new Date(lastTimeExecutedMigration.timestamp).toString() + \".\");\n this.connection.logger.logSchemaBuild(\"Now reverting it...\");\n transactionStartedByUs = false;\n if (!((this.transaction !== \"none\") && !queryRunner.isTransactionActive)) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 3:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 4;\n case 4:\n _a.trys.push([4, 9, 14, 17]);\n return [4 /*yield*/, migrationToRevert.instance.down(queryRunner)];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.deleteExecutedMigration(queryRunner, migrationToRevert)];\n case 6:\n _a.sent();\n this.connection.logger.logSchemaBuild(\"Migration \" + migrationToRevert.name + \" has been reverted successfully.\");\n if (!transactionStartedByUs) return [3 /*break*/, 8];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 7:\n _a.sent();\n _a.label = 8;\n case 8: return [3 /*break*/, 17];\n case 9:\n err_2 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 13];\n _a.label = 10;\n case 10:\n _a.trys.push([10, 12, , 13]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 11:\n _a.sent();\n return [3 /*break*/, 13];\n case 12:\n rollbackError_2 = _a.sent();\n return [3 /*break*/, 13];\n case 13: throw err_2;\n case 14:\n if (!!this.queryRunner) return [3 /*break*/, 16];\n return [4 /*yield*/, queryRunner.release()];\n case 15:\n _a.sent();\n _a.label = 16;\n case 16: return [7 /*endfinally*/];\n case 17: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates table \"migrations\" that will store information about executed migrations.\n */\n MigrationExecutor.prototype.createMigrationsTableIfNotExist = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var tableExist;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n // If driver is mongo no need to create\n if (this.connection.driver instanceof _driver_sqlserver_SqlServerDriver__WEBPACK_IMPORTED_MODULE_3__[\"MongoDriver\"]) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, queryRunner.hasTable(this.migrationsTable)];\n case 1:\n tableExist = _a.sent();\n if (!!tableExist) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.createTable(new _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_1__[\"Table\"]({\n name: this.migrationsTable,\n columns: [\n {\n name: \"id\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationId }),\n isGenerated: true,\n generationStrategy: \"increment\",\n isPrimary: true,\n isNullable: false\n },\n {\n name: \"timestamp\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"name\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }),\n isNullable: false\n },\n ]\n }))];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Loads all migrations that were executed and saved into the database (sorts by id).\n */\n MigrationExecutor.prototype.loadExecutedMigrations = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var mongoRunner, migrationsRaw;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.connection.driver instanceof _driver_sqlserver_SqlServerDriver__WEBPACK_IMPORTED_MODULE_3__[\"MongoDriver\"])) return [3 /*break*/, 2];\n mongoRunner = queryRunner;\n return [4 /*yield*/, mongoRunner.databaseConnection\n .db(this.connection.driver.database)\n .collection(this.migrationsTableName)\n .find()\n .sort({ \"_id\": -1 })\n .toArray()];\n case 1: return [2 /*return*/, _a.sent()];\n case 2: return [4 /*yield*/, this.connection.manager\n .createQueryBuilder(queryRunner)\n .select()\n .orderBy(this.connection.driver.escape(\"id\"), \"DESC\")\n .from(this.migrationsTable, this.migrationsTableName)\n .getRawMany()];\n case 3:\n migrationsRaw = _a.sent();\n return [2 /*return*/, migrationsRaw.map(function (migrationRaw) {\n return new _Migration__WEBPACK_IMPORTED_MODULE_2__[\"Migration\"](parseInt(migrationRaw[\"id\"]), parseInt(migrationRaw[\"timestamp\"]), migrationRaw[\"name\"]);\n })];\n }\n });\n });\n };\n /**\n * Gets all migrations that setup for this connection.\n */\n MigrationExecutor.prototype.getMigrations = function () {\n var migrations = this.connection.migrations.map(function (migration) {\n var migrationClassName = migration.name || migration.constructor.name;\n var migrationTimestamp = parseInt(migrationClassName.substr(-13), 10);\n if (!migrationTimestamp || isNaN(migrationTimestamp)) {\n throw new Error(migrationClassName + \" migration name is wrong. Migration class name should have a JavaScript timestamp appended.\");\n }\n return new _Migration__WEBPACK_IMPORTED_MODULE_2__[\"Migration\"](undefined, migrationTimestamp, migrationClassName, migration);\n });\n this.checkForDuplicateMigrations(migrations);\n // sort them by timestamp\n return migrations.sort(function (a, b) { return a.timestamp - b.timestamp; });\n };\n MigrationExecutor.prototype.checkForDuplicateMigrations = function (migrations) {\n var migrationNames = migrations.map(function (migration) { return migration.name; });\n var duplicates = Array.from(new Set(migrationNames.filter(function (migrationName, index) { return migrationNames.indexOf(migrationName) < index; })));\n if (duplicates.length > 0) {\n throw Error(\"Duplicate migrations: \" + duplicates.join(\", \"));\n }\n };\n /**\n * Finds the latest migration (sorts by timestamp) in the given array of migrations.\n */\n MigrationExecutor.prototype.getLatestTimestampMigration = function (migrations) {\n var sortedMigrations = migrations.map(function (migration) { return migration; }).sort(function (a, b) { return (a.timestamp - b.timestamp) * -1; });\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n };\n /**\n * Finds the latest migration in the given array of migrations.\n * PRE: Migration array must be sorted by descending id.\n */\n MigrationExecutor.prototype.getLatestExecutedMigration = function (sortedMigrations) {\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n };\n /**\n * Inserts new executed migration's data into migrations table.\n */\n MigrationExecutor.prototype.insertExecutedMigration = function (queryRunner, migration) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var values, mongoRunner, qb;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n values = {};\n if (this.connection.driver instanceof _driver_sqlserver_SqlServerDriver__WEBPACK_IMPORTED_MODULE_3__[\"SqlServerDriver\"]) {\n values[\"timestamp\"] = new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_4__[\"MssqlParameter\"](migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }));\n values[\"name\"] = new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_4__[\"MssqlParameter\"](migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }));\n }\n else {\n values[\"timestamp\"] = migration.timestamp;\n values[\"name\"] = migration.name;\n }\n if (!(this.connection.driver instanceof _driver_sqlserver_SqlServerDriver__WEBPACK_IMPORTED_MODULE_3__[\"MongoDriver\"])) return [3 /*break*/, 2];\n mongoRunner = queryRunner;\n return [4 /*yield*/, mongoRunner.databaseConnection.db(this.connection.driver.database).collection(this.migrationsTableName).insert(values)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n qb = queryRunner.manager.createQueryBuilder();\n return [4 /*yield*/, qb.insert()\n .into(this.migrationsTable)\n .values(values)\n .execute()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Delete previously executed migration's data from the migrations table.\n */\n MigrationExecutor.prototype.deleteExecutedMigration = function (queryRunner, migration) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var conditions, mongoRunner, qb;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n conditions = {};\n if (this.connection.driver instanceof _driver_sqlserver_SqlServerDriver__WEBPACK_IMPORTED_MODULE_3__[\"SqlServerDriver\"]) {\n conditions[\"timestamp\"] = new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_4__[\"MssqlParameter\"](migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }));\n conditions[\"name\"] = new _driver_sqlserver_MssqlParameter__WEBPACK_IMPORTED_MODULE_4__[\"MssqlParameter\"](migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }));\n }\n else {\n conditions[\"timestamp\"] = migration.timestamp;\n conditions[\"name\"] = migration.name;\n }\n if (!(this.connection.driver instanceof _driver_sqlserver_SqlServerDriver__WEBPACK_IMPORTED_MODULE_3__[\"MongoDriver\"])) return [3 /*break*/, 2];\n mongoRunner = queryRunner;\n return [4 /*yield*/, mongoRunner.databaseConnection.db(this.connection.driver.database).collection(this.migrationsTableName).deleteOne(conditions)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n qb = queryRunner.manager.createQueryBuilder();\n return [4 /*yield*/, qb.delete()\n .from(this.migrationsTable)\n .where(qb.escape(\"timestamp\") + \" = :timestamp\")\n .andWhere(qb.escape(\"name\") + \" = :name\")\n .setParameters(conditions)\n .execute()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n MigrationExecutor.prototype.withQueryRunner = function (callback) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 2, 5]);\n return [2 /*return*/, callback(queryRunner)];\n case 2:\n if (!!this.queryRunner) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.release()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n return MigrationExecutor;\n}());\n\n\n//# sourceMappingURL=MigrationExecutor.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/migration/MigrationExecutor.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/naming-strategy/DefaultNamingStrategy.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/naming-strategy/DefaultNamingStrategy.js ***! - \*******************************************************************************/ -/*! exports provided: DefaultNamingStrategy */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DefaultNamingStrategy\", function() { return DefaultNamingStrategy; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/RandomGenerator */ \"./node_modules/typeorm/browser/util/RandomGenerator.js\");\n/* harmony import */ var _util_StringUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/StringUtils */ \"./node_modules/typeorm/browser/util/StringUtils.js\");\n/* harmony import */ var _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../schema-builder/table/Table */ \"./node_modules/typeorm/browser/schema-builder/table/Table.js\");\n\n\n\n\n/**\n * Naming strategy that is used by default.\n */\nvar DefaultNamingStrategy = /** @class */ (function () {\n function DefaultNamingStrategy() {\n this.nestedSetColumnNames = { left: \"nsleft\", right: \"nsright\" };\n this.materializedPathColumnName = \"mpath\";\n }\n /**\n * Normalizes table name.\n *\n * @param targetName Name of the target entity that can be used to generate a table name.\n * @param userSpecifiedName For example if user specified a table name in a decorator, e.g. @Entity(\"name\")\n */\n DefaultNamingStrategy.prototype.tableName = function (targetName, userSpecifiedName) {\n return userSpecifiedName ? userSpecifiedName : Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_2__[\"snakeCase\"])(targetName);\n };\n /**\n * Creates a table name for a junction table of a closure table.\n *\n * @param originalClosureTableName Name of the closure table which owns this junction table.\n */\n DefaultNamingStrategy.prototype.closureJunctionTableName = function (originalClosureTableName) {\n return originalClosureTableName + \"_closure\";\n };\n DefaultNamingStrategy.prototype.columnName = function (propertyName, customName, embeddedPrefixes) {\n var name = customName || propertyName;\n if (embeddedPrefixes.length)\n return Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_2__[\"camelCase\"])(embeddedPrefixes.join(\"_\")) + Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_2__[\"titleCase\"])(name);\n return name;\n };\n DefaultNamingStrategy.prototype.relationName = function (propertyName) {\n return propertyName;\n };\n DefaultNamingStrategy.prototype.primaryKeyName = function (tableOrName, columnNames) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n return \"PK_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.uniqueConstraintName = function (tableOrName, columnNames) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n return \"UQ_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.relationConstraintName = function (tableOrName, columnNames, where) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n if (where)\n key += \"_\" + where;\n return \"REL_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 26);\n };\n DefaultNamingStrategy.prototype.defaultConstraintName = function (tableOrName, columnName) {\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + columnName;\n return \"DF_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.foreignKeyName = function (tableOrName, columnNames, _referencedTablePath, _referencedColumnNames) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n return \"FK_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.indexName = function (tableOrName, columnNames, where) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n if (where)\n key += \"_\" + where;\n return \"IDX_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 26);\n };\n DefaultNamingStrategy.prototype.checkConstraintName = function (tableOrName, expression, isEnum) {\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + expression;\n var name = \"CHK_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 26);\n return isEnum ? name + \"_ENUM\" : name;\n };\n DefaultNamingStrategy.prototype.exclusionConstraintName = function (tableOrName, expression) {\n var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_3__[\"Table\"] ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + expression;\n return \"XCL_\" + _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_1__[\"RandomGenerator\"].sha1(key).substr(0, 26);\n };\n DefaultNamingStrategy.prototype.joinColumnName = function (relationName, referencedColumnName) {\n return Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_2__[\"camelCase\"])(relationName + \"_\" + referencedColumnName);\n };\n DefaultNamingStrategy.prototype.joinTableName = function (firstTableName, secondTableName, firstPropertyName, secondPropertyName) {\n return Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_2__[\"snakeCase\"])(firstTableName + \"_\" + firstPropertyName.replace(/\\./gi, \"_\") + \"_\" + secondTableName);\n };\n DefaultNamingStrategy.prototype.joinTableColumnDuplicationPrefix = function (columnName, index) {\n return columnName + \"_\" + index;\n };\n DefaultNamingStrategy.prototype.joinTableColumnName = function (tableName, propertyName, columnName) {\n return Object(_util_StringUtils__WEBPACK_IMPORTED_MODULE_2__[\"camelCase\"])(tableName + \"_\" + (columnName ? columnName : propertyName));\n };\n DefaultNamingStrategy.prototype.joinTableInverseColumnName = function (tableName, propertyName, columnName) {\n return this.joinTableColumnName(tableName, propertyName, columnName);\n };\n /**\n * Adds globally set prefix to the table name.\n * This method is executed no matter if prefix was set or not.\n * Table name is either user's given table name, either name generated from entity target.\n * Note that table name comes here already normalized by #tableName method.\n */\n DefaultNamingStrategy.prototype.prefixTableName = function (prefix, tableName) {\n return prefix + tableName;\n };\n DefaultNamingStrategy.prototype.eagerJoinRelationAlias = function (alias, propertyPath) {\n return alias + \"_\" + propertyPath.replace(\".\", \"_\");\n };\n return DefaultNamingStrategy;\n}());\n\n\n//# sourceMappingURL=DefaultNamingStrategy.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/naming-strategy/DefaultNamingStrategy.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/EntityPersistExecutor.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/EntityPersistExecutor.js ***! - \***************************************************************************/ -/*! exports provided: EntityPersistExecutor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EntityPersistExecutor\", function() { return EntityPersistExecutor; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_MustBeEntityError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/MustBeEntityError */ \"./node_modules/typeorm/browser/error/MustBeEntityError.js\");\n/* harmony import */ var _SubjectExecutor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SubjectExecutor */ \"./node_modules/typeorm/browser/persistence/SubjectExecutor.js\");\n/* harmony import */ var _error_CannotDetermineEntityError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/CannotDetermineEntityError */ \"./node_modules/typeorm/browser/error/CannotDetermineEntityError.js\");\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Subject */ \"./node_modules/typeorm/browser/persistence/Subject.js\");\n/* harmony import */ var _subject_builder_OneToManySubjectBuilder__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./subject-builder/OneToManySubjectBuilder */ \"./node_modules/typeorm/browser/persistence/subject-builder/OneToManySubjectBuilder.js\");\n/* harmony import */ var _subject_builder_OneToOneInverseSideSubjectBuilder__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./subject-builder/OneToOneInverseSideSubjectBuilder */ \"./node_modules/typeorm/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js\");\n/* harmony import */ var _subject_builder_ManyToManySubjectBuilder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./subject-builder/ManyToManySubjectBuilder */ \"./node_modules/typeorm/browser/persistence/subject-builder/ManyToManySubjectBuilder.js\");\n/* harmony import */ var _SubjectDatabaseEntityLoader__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SubjectDatabaseEntityLoader */ \"./node_modules/typeorm/browser/persistence/SubjectDatabaseEntityLoader.js\");\n/* harmony import */ var _subject_builder_CascadesSubjectBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./subject-builder/CascadesSubjectBuilder */ \"./node_modules/typeorm/browser/persistence/subject-builder/CascadesSubjectBuilder.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Persists a single entity or multiple entities - saves or removes them.\n */\nvar EntityPersistExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function EntityPersistExecutor(connection, queryRunner, mode, target, entity, options) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n this.mode = mode;\n this.target = target;\n this.entity = entity;\n this.options = options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes persistence operation ob given entity or entities.\n */\n EntityPersistExecutor.prototype.execute = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, entities, entitiesInChunks, executors, executorsWithExecutableOperations, isTransactionStartedByUs, executorsWithExecutableOperations_1, executorsWithExecutableOperations_1_1, executor, e_1_1, error_1, rollbackError_1;\n var e_1, _a;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n // check if entity we are going to save is valid and is an object\n if (!this.entity || typeof this.entity !== \"object\")\n return [2 /*return*/, Promise.reject(new _error_MustBeEntityError__WEBPACK_IMPORTED_MODULE_1__[\"MustBeEntityError\"](this.mode, this.entity))];\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n return [4 /*yield*/, Promise.resolve()];\n case 1:\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n _b.sent();\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // save data in the query runner - this is useful functionality to share data from outside of the world\n // with third classes - like subscribers and listener methods\n if (this.options && this.options.data)\n queryRunner.data = this.options.data;\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 22, 25]);\n entities = Array.isArray(this.entity) ? this.entity : [this.entity];\n entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? _util_OrmUtils__WEBPACK_IMPORTED_MODULE_10__[\"OrmUtils\"].chunk(entities, this.options.chunk) : [entities];\n return [4 /*yield*/, Promise.all(entitiesInChunks.map(function (entities) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var subjects, cascadesSubjectBuilder;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n subjects = [];\n // create subjects for all entities we received for the persistence\n entities.forEach(function (entity) {\n var entityTarget = _this.target ? _this.target : entity.constructor;\n if (entityTarget === Object)\n throw new _error_CannotDetermineEntityError__WEBPACK_IMPORTED_MODULE_3__[\"CannotDetermineEntityError\"](_this.mode);\n subjects.push(new _Subject__WEBPACK_IMPORTED_MODULE_4__[\"Subject\"]({\n metadata: _this.connection.getMetadata(entityTarget),\n entity: entity,\n canBeInserted: _this.mode === \"save\",\n canBeUpdated: _this.mode === \"save\",\n mustBeRemoved: _this.mode === \"remove\",\n canBeSoftRemoved: _this.mode === \"soft-remove\",\n canBeRecovered: _this.mode === \"recover\"\n }));\n });\n cascadesSubjectBuilder = new _subject_builder_CascadesSubjectBuilder__WEBPACK_IMPORTED_MODULE_9__[\"CascadesSubjectBuilder\"](subjects);\n subjects.forEach(function (subject) {\n // next step we build list of subjects we will operate with\n // these subjects are subjects that we need to insert or update alongside with main persisted entity\n cascadesSubjectBuilder.build(subject, _this.mode);\n });\n // console.timeEnd(\"building cascades...\");\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n return [4 /*yield*/, new _SubjectDatabaseEntityLoader__WEBPACK_IMPORTED_MODULE_8__[\"SubjectDatabaseEntityLoader\"](queryRunner, subjects).load(this.mode)];\n case 1:\n // console.timeEnd(\"building cascades...\");\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n _a.sent();\n // console.timeEnd(\"loading...\");\n // console.time(\"other subjects...\");\n // build all related subjects and change maps\n if (this.mode === \"save\" || this.mode === \"soft-remove\" || this.mode === \"recover\") {\n new _subject_builder_OneToManySubjectBuilder__WEBPACK_IMPORTED_MODULE_5__[\"OneToManySubjectBuilder\"](subjects).build();\n new _subject_builder_OneToOneInverseSideSubjectBuilder__WEBPACK_IMPORTED_MODULE_6__[\"OneToOneInverseSideSubjectBuilder\"](subjects).build();\n new _subject_builder_ManyToManySubjectBuilder__WEBPACK_IMPORTED_MODULE_7__[\"ManyToManySubjectBuilder\"](subjects).build();\n }\n else {\n subjects.forEach(function (subject) {\n if (subject.mustBeRemoved) {\n new _subject_builder_ManyToManySubjectBuilder__WEBPACK_IMPORTED_MODULE_7__[\"ManyToManySubjectBuilder\"](subjects).buildForAllRemoval(subject);\n }\n });\n }\n // console.timeEnd(\"other subjects...\");\n // console.timeEnd(\"building subjects...\");\n // console.log(\"subjects\", subjects);\n // create a subject executor\n return [2 /*return*/, new _SubjectExecutor__WEBPACK_IMPORTED_MODULE_2__[\"SubjectExecutor\"](queryRunner, subjects, this.options)];\n }\n });\n }); }))];\n case 3:\n executors = _b.sent();\n executorsWithExecutableOperations = executors.filter(function (executor) { return executor.hasExecutableOperations; });\n if (executorsWithExecutableOperations.length === 0)\n return [2 /*return*/];\n isTransactionStartedByUs = false;\n _b.label = 4;\n case 4:\n _b.trys.push([4, 16, , 21]);\n if (!!queryRunner.isTransactionActive) return [3 /*break*/, 6];\n if (!(!this.options || this.options.transaction !== false)) return [3 /*break*/, 6];\n isTransactionStartedByUs = true;\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n _b.trys.push([6, 11, 12, 13]);\n executorsWithExecutableOperations_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(executorsWithExecutableOperations), executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();\n _b.label = 7;\n case 7:\n if (!!executorsWithExecutableOperations_1_1.done) return [3 /*break*/, 10];\n executor = executorsWithExecutableOperations_1_1.value;\n return [4 /*yield*/, executor.execute()];\n case 8:\n _b.sent();\n _b.label = 9;\n case 9:\n executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();\n return [3 /*break*/, 7];\n case 10: return [3 /*break*/, 13];\n case 11:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 13];\n case 12:\n try {\n if (executorsWithExecutableOperations_1_1 && !executorsWithExecutableOperations_1_1.done && (_a = executorsWithExecutableOperations_1.return)) _a.call(executorsWithExecutableOperations_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 13:\n if (!(isTransactionStartedByUs === true)) return [3 /*break*/, 15];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 14:\n _b.sent();\n _b.label = 15;\n case 15: return [3 /*break*/, 21];\n case 16:\n error_1 = _b.sent();\n if (!isTransactionStartedByUs) return [3 /*break*/, 20];\n _b.label = 17;\n case 17:\n _b.trys.push([17, 19, , 20]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 18:\n _b.sent();\n return [3 /*break*/, 20];\n case 19:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 20];\n case 20: throw error_1;\n case 21: return [3 /*break*/, 25];\n case 22:\n if (!!this.queryRunner) return [3 /*break*/, 24];\n return [4 /*yield*/, queryRunner.release()];\n case 23:\n _b.sent();\n _b.label = 24;\n case 24: return [7 /*endfinally*/];\n case 25: return [2 /*return*/];\n }\n });\n });\n };\n return EntityPersistExecutor;\n}());\n\n\n//# sourceMappingURL=EntityPersistExecutor.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/EntityPersistExecutor.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/Subject.js": -/*!*************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/Subject.js ***! - \*************************************************************/ -/*! exports provided: Subject */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Subject\", function() { return Subject; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n\n\n/**\n * Subject is a subject of persistence.\n * It holds information about each entity that needs to be persisted:\n * - what entity should be persisted\n * - what is database representation of the persisted entity\n * - what entity metadata of the persisted entity\n * - what is allowed to with persisted entity (insert/update/remove)\n *\n * Having this collection of subjects we can perform database queries.\n */\nvar Subject = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Subject(options) {\n var _a;\n /**\n * Subject identifier.\n * This identifier is not limited to table entity primary columns.\n * This can be entity id or ids as well as some unique entity properties, like name or title.\n * Insert / Update / Remove operation will be executed by a given identifier.\n */\n this.identifier = undefined;\n /**\n * Copy of entity but with relational ids fulfilled.\n */\n this.entityWithFulfilledIds = undefined;\n /**\n * Indicates if database entity was loaded.\n * No matter if it was found or not, it indicates the fact of loading.\n */\n this.databaseEntityLoaded = false;\n /**\n * Changes needs to be applied in the database for the given subject.\n */\n this.changeMaps = [];\n /**\n * Indicates if this subject can be inserted into the database.\n * This means that this subject either is newly persisted, either can be inserted by cascades.\n */\n this.canBeInserted = false;\n /**\n * Indicates if this subject can be updated in the database.\n * This means that this subject either was persisted, either can be updated by cascades.\n */\n this.canBeUpdated = false;\n /**\n * Indicates if this subject MUST be removed from the database.\n * This means that this subject either was removed, either was removed by cascades.\n */\n this.mustBeRemoved = false;\n /**\n * Indicates if this subject can be soft-removed from the database.\n * This means that this subject either was soft-removed, either was soft-removed by cascades.\n */\n this.canBeSoftRemoved = false;\n /**\n * Indicates if this subject can be recovered from the database.\n * This means that this subject either was recovered, either was recovered by cascades.\n */\n this.canBeRecovered = false;\n /**\n * Relations updated by the change maps.\n */\n this.updatedRelationMaps = [];\n /**\n * List of updated columns\n */\n this.diffColumns = [];\n /**\n * List of updated relations\n */\n this.diffRelations = [];\n this.metadata = options.metadata;\n this.entity = options.entity;\n this.parentSubject = options.parentSubject;\n if (options.canBeInserted !== undefined)\n this.canBeInserted = options.canBeInserted;\n if (options.canBeUpdated !== undefined)\n this.canBeUpdated = options.canBeUpdated;\n if (options.mustBeRemoved !== undefined)\n this.mustBeRemoved = options.mustBeRemoved;\n if (options.canBeSoftRemoved !== undefined)\n this.canBeSoftRemoved = options.canBeSoftRemoved;\n if (options.canBeRecovered !== undefined)\n this.canBeRecovered = options.canBeRecovered;\n if (options.identifier !== undefined)\n this.identifier = options.identifier;\n if (options.changeMaps !== undefined)\n (_a = this.changeMaps).push.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(options.changeMaps)));\n this.recompute();\n }\n Object.defineProperty(Subject.prototype, \"mustBeInserted\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Checks if this subject must be inserted into the database.\n * Subject can be inserted into the database if it is allowed to be inserted (explicitly persisted or by cascades)\n * and if it does not have database entity set.\n */\n get: function () {\n return this.canBeInserted && !this.databaseEntity;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Subject.prototype, \"mustBeUpdated\", {\n /**\n * Checks if this subject must be updated into the database.\n * Subject can be updated in the database if it is allowed to be updated (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get: function () {\n return this.canBeUpdated &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity)) &&\n // ((this.entity && this.databaseEntity) || (!this.entity && !this.databaseEntity)) &&\n this.changeMaps.length > 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Subject.prototype, \"mustBeSoftRemoved\", {\n /**\n * Checks if this subject must be soft-removed into the database.\n * Subject can be updated in the database if it is allowed to be soft-removed (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get: function () {\n return this.canBeSoftRemoved &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Subject.prototype, \"mustBeRecovered\", {\n /**\n * Checks if this subject must be recovered into the database.\n * Subject can be updated in the database if it is allowed to be recovered (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get: function () {\n return this.canBeRecovered &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a value set needs to be inserted / updated in the database.\n * Value set is based on the entity and change maps of the subject.\n * Important note: this method pops data from this subject's change maps.\n */\n Subject.prototype.createValueSetAndPopChangeMap = function () {\n var _this = this;\n var changeMapsWithoutValues = [];\n var changeSet = this.changeMaps.reduce(function (updateMap, changeMap) {\n var value = changeMap.value;\n if (value instanceof Subject) {\n // referenced columns can refer on values both which were just inserted and which were present in the model\n // if entity was just inserted valueSets must contain all values from the entity and values just inserted in the database\n // so, here we check if we have a value set then we simply use it as value to get our reference column values\n // otherwise simply use an entity which cannot be just inserted at the moment and have all necessary data\n value = value.insertedValueSet ? value.insertedValueSet : value.entity;\n }\n // value = changeMap.valueFactory ? changeMap.valueFactory(value) : changeMap.column.createValueMap(value);\n var valueMap;\n if (_this.metadata.isJunction && changeMap.column) {\n valueMap = changeMap.column.createValueMap(changeMap.column.referencedColumn.getEntityValue(value));\n }\n else if (changeMap.column) {\n valueMap = changeMap.column.createValueMap(value);\n }\n else if (changeMap.relation) {\n // value can be a related object, for example: post.question = { id: 1 }\n // or value can be a null or direct relation id, e.g. post.question = 1\n // if its a direction relation id then we just set it to the valueMap,\n // however if its an object then we need to extract its relation id map and set it to the valueMap\n if (value instanceof Object) {\n // get relation id, e.g. referenced column name and its value,\n // for example: { id: 1 } which then will be set to relation, e.g. post.category = { id: 1 }\n var relationId = changeMap.relation.getRelationIdMap(value);\n // but relation id can be empty, for example in the case when you insert a new post with category\n // and both post and category are newly inserted objects (by cascades) and in this case category will not have id\n // this means we need to insert post without question id and update post's questionId once question be inserted\n // that's why we create a new changeMap operation for future updation of the post entity\n if (relationId === undefined) {\n changeMapsWithoutValues.push(changeMap);\n _this.canBeUpdated = true;\n return updateMap;\n }\n valueMap = changeMap.relation.createValueMap(relationId);\n _this.updatedRelationMaps.push({ relation: changeMap.relation, value: relationId });\n }\n else { // value can be \"null\" or direct relation id here\n valueMap = changeMap.relation.createValueMap(value);\n _this.updatedRelationMaps.push({ relation: changeMap.relation, value: value });\n }\n }\n _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(updateMap, valueMap);\n return updateMap;\n }, {});\n this.changeMaps = changeMapsWithoutValues;\n return changeSet;\n };\n /**\n * Recomputes entityWithFulfilledIds and identifier when entity changes.\n */\n Subject.prototype.recompute = function () {\n var _this = this;\n if (this.entity) {\n this.entityWithFulfilledIds = Object.assign({}, this.entity);\n if (this.parentSubject) {\n this.metadata.primaryColumns.forEach(function (primaryColumn) {\n if (primaryColumn.relationMetadata && primaryColumn.relationMetadata.inverseEntityMetadata === _this.parentSubject.metadata) {\n var value = primaryColumn.referencedColumn.getEntityValue(_this.parentSubject.entity);\n primaryColumn.setEntityValue(_this.entityWithFulfilledIds, value);\n }\n });\n }\n this.identifier = this.metadata.getEntityIdMap(this.entityWithFulfilledIds);\n }\n else if (this.databaseEntity) {\n this.identifier = this.metadata.getEntityIdMap(this.databaseEntity);\n }\n };\n return Subject;\n}());\n\n\n//# sourceMappingURL=Subject.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/Subject.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/SubjectChangedColumnsComputer.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/SubjectChangedColumnsComputer.js ***! - \***********************************************************************************/ -/*! exports provided: SubjectChangedColumnsComputer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectChangedColumnsComputer\", function() { return SubjectChangedColumnsComputer; });\n/* harmony import */ var _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/DateUtils */ \"./node_modules/typeorm/browser/util/DateUtils.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ApplyValueTransformers */ \"./node_modules/typeorm/browser/util/ApplyValueTransformers.js\");\n\n\n\n/**\n * Finds what columns are changed in the subject entities.\n */\nvar SubjectChangedColumnsComputer = /** @class */ (function () {\n function SubjectChangedColumnsComputer() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Finds what columns are changed in the subject entities.\n */\n SubjectChangedColumnsComputer.prototype.compute = function (subjects) {\n var _this = this;\n subjects.forEach(function (subject) {\n _this.computeDiffColumns(subject);\n _this.computeDiffRelationalColumns(subjects, subject);\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Differentiate columns from the updated entity and entity stored in the database.\n */\n SubjectChangedColumnsComputer.prototype.computeDiffColumns = function (subject) {\n // if there is no persisted entity then nothing to compute changed in it\n if (!subject.entity)\n return;\n subject.metadata.columns.forEach(function (column) {\n // ignore special columns\n if (column.isVirtual ||\n column.isDiscriminator // ||\n // column.isUpdateDate ||\n // column.isVersion ||\n // column.isCreateDate\n )\n return;\n var changeMap = subject.changeMaps.find(function (changeMap) { return changeMap.column === column; });\n if (changeMap) {\n subject.changeMaps.splice(subject.changeMaps.indexOf(changeMap), 1);\n }\n // get user provided value - column value from the user provided persisted entity\n var entityValue = column.getEntityValue(subject.entity);\n // we don't perform operation over undefined properties (but we DO need null properties!)\n if (entityValue === undefined)\n return;\n // if there is no database entity then all columns are treated as new, e.g. changed\n if (subject.databaseEntity) {\n // skip transform database value for json / jsonb for comparison later on\n var shouldTransformDatabaseEntity = column.type !== \"json\" && column.type !== \"jsonb\";\n // get database value of the column\n var databaseValue = column.getEntityValue(subject.databaseEntity, shouldTransformDatabaseEntity);\n // filter out \"relational columns\" only in the case if there is a relation object in entity\n if (column.relationMetadata) {\n var value = column.relationMetadata.getEntityValue(subject.entity);\n if (value !== null && value !== undefined)\n return;\n }\n var normalizedValue = entityValue;\n // normalize special values to make proper comparision\n if (entityValue !== null) {\n switch (column.type) {\n case \"date\":\n normalizedValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].mixedDateToDateString(entityValue);\n break;\n case \"time\":\n case \"time with time zone\":\n case \"time without time zone\":\n case \"timetz\":\n normalizedValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].mixedDateToTimeString(entityValue);\n break;\n case \"datetime\":\n case \"datetime2\":\n case Date:\n case \"timestamp\":\n case \"timestamp without time zone\":\n case \"timestamp with time zone\":\n case \"timestamp with local time zone\":\n case \"timestamptz\":\n normalizedValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].mixedDateToUtcDatetimeString(entityValue);\n databaseValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].mixedDateToUtcDatetimeString(databaseValue);\n break;\n case \"json\":\n case \"jsonb\":\n // JSON.stringify doesn't work because postgresql sorts jsonb before save.\n // If you try to save json '[{\"messages\": \"\", \"attribute Key\": \"\", \"level\":\"\"}] ' as jsonb,\n // then postgresql will save it as '[{\"level\": \"\", \"message\":\"\", \"attributeKey\": \"\"}]'\n if (_util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].deepCompare(entityValue, databaseValue))\n return;\n break;\n case \"simple-array\":\n normalizedValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].simpleArrayToString(entityValue);\n databaseValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].simpleArrayToString(databaseValue);\n break;\n case \"simple-enum\":\n normalizedValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].simpleEnumToString(entityValue);\n databaseValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].simpleEnumToString(databaseValue);\n break;\n case \"simple-json\":\n normalizedValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].simpleJsonToString(entityValue);\n databaseValue = _util_DateUtils__WEBPACK_IMPORTED_MODULE_0__[\"DateUtils\"].simpleJsonToString(databaseValue);\n break;\n }\n if (column.transformer) {\n normalizedValue = _util_ApplyValueTransformers__WEBPACK_IMPORTED_MODULE_2__[\"ApplyValueTransformers\"].transformTo(column.transformer, entityValue);\n }\n }\n // if value is not changed - then do nothing\n if (normalizedValue === databaseValue)\n return;\n }\n subject.diffColumns.push(column);\n subject.changeMaps.push({\n column: column,\n value: entityValue\n });\n });\n };\n /**\n * Difference columns of the owning one-to-one and many-to-one columns.\n */\n SubjectChangedColumnsComputer.prototype.computeDiffRelationalColumns = function (allSubjects, subject) {\n // if there is no persisted entity then nothing to compute changed in it\n if (!subject.entity)\n return;\n subject.metadata.relationsWithJoinColumns.forEach(function (relation) {\n // get the related entity from the persisted entity\n var relatedEntity = relation.getEntityValue(subject.entity);\n // we don't perform operation over undefined properties (but we DO need null properties!)\n if (relatedEntity === undefined)\n return;\n // if there is no database entity then all relational columns are treated as new, e.g. changed\n if (subject.databaseEntity) {\n // here we cover two scenarios:\n // 1. related entity can be another entity which is natural way\n // 2. related entity can be just an entity id\n // if relation entity is just a relation id set (for example post.tag = 1)\n // then we create an id map from it to make a proper comparision\n var relatedEntityRelationIdMap = relatedEntity;\n if (relatedEntityRelationIdMap !== null && relatedEntityRelationIdMap instanceof Object)\n relatedEntityRelationIdMap = relation.getRelationIdMap(relatedEntityRelationIdMap);\n // get database related entity. Since loadRelationIds are used on databaseEntity\n // related entity will contain only its relation ids\n var databaseRelatedEntityRelationIdMap = relation.getEntityValue(subject.databaseEntity);\n // if relation ids are equal then we don't need to update anything\n var areRelatedIdsEqual = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].compareIds(relatedEntityRelationIdMap, databaseRelatedEntityRelationIdMap);\n if (areRelatedIdsEqual) {\n return;\n }\n else {\n subject.diffRelations.push(relation);\n }\n }\n // if there is an inserted subject for the related entity of the persisted entity then use it as related entity\n // this code is used for related entities without ids to be properly inserted (and then updated if needed)\n var valueSubject = allSubjects.find(function (subject) { return subject.mustBeInserted && subject.entity === relatedEntity; });\n if (valueSubject)\n relatedEntity = valueSubject;\n // find if there is already a relation to be changed\n var changeMap = subject.changeMaps.find(function (changeMap) { return changeMap.relation === relation; });\n if (changeMap) { // and update its value if it was found\n changeMap.value = relatedEntity;\n }\n else { // if it wasn't found add a new relation for change\n subject.changeMaps.push({\n relation: relation,\n value: relatedEntity\n });\n }\n });\n };\n return SubjectChangedColumnsComputer;\n}());\n\n\n//# sourceMappingURL=SubjectChangedColumnsComputer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/SubjectChangedColumnsComputer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/SubjectDatabaseEntityLoader.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/SubjectDatabaseEntityLoader.js ***! - \*********************************************************************************/ -/*! exports provided: SubjectDatabaseEntityLoader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectDatabaseEntityLoader\", function() { return SubjectDatabaseEntityLoader; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Loads database entities for all operate subjects which do not have database entity set.\n * All entities that we load database entities for are marked as updated or inserted.\n * To understand which of them really needs to be inserted or updated we need to load\n * their original representations from the database.\n */\nvar SubjectDatabaseEntityLoader = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function SubjectDatabaseEntityLoader(queryRunner, subjects) {\n this.queryRunner = queryRunner;\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Loads database entities for all subjects.\n *\n * loadAllRelations flag is used to load all relation ids of the object, no matter if they present in subject entity or not.\n * This option is used for deletion.\n */\n SubjectDatabaseEntityLoader.prototype.load = function (operationType) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = this.groupByEntityTargets().map(function (subjectGroup) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var allIds, allSubjects, loadRelationPropertyPaths, findOptions, entities, allSubjects_1, allSubjects_1_1, subject;\n var e_1, _a;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n allIds = [];\n allSubjects = [];\n subjectGroup.subjects.forEach(function (subject) {\n // we don't load if subject already has a database entity loaded\n if (subject.databaseEntity || !subject.identifier)\n return;\n allIds.push(subject.identifier);\n allSubjects.push(subject);\n });\n // if there no ids found (means all entities are new and have generated ids) - then nothing to load there\n if (!allIds.length)\n return [2 /*return*/];\n loadRelationPropertyPaths = [];\n // for the save, soft-remove and recover operation\n // extract all property paths of the relations we need to load relation ids for\n // this is for optimization purpose - this way we don't load relation ids for entities\n // whose relations are undefined, and since they are undefined its really pointless to\n // load something for them, since undefined properties are skipped by the orm\n if (operationType === \"save\" || operationType === \"soft-remove\" || operationType === \"recover\") {\n subjectGroup.subjects.forEach(function (subject) {\n // gets all relation property paths that exist in the persisted entity.\n subject.metadata.relations.forEach(function (relation) {\n var value = relation.getEntityValue(subject.entityWithFulfilledIds);\n if (value === undefined)\n return;\n if (loadRelationPropertyPaths.indexOf(relation.propertyPath) === -1)\n loadRelationPropertyPaths.push(relation.propertyPath);\n });\n });\n }\n else { // remove\n // for remove operation\n // we only need to load junction relation ids since only they are removed by cascades\n loadRelationPropertyPaths.push.apply(// remove\n loadRelationPropertyPaths, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(subjectGroup.subjects[0].metadata.manyToManyRelations.map(function (relation) { return relation.propertyPath; }))));\n }\n findOptions = {\n loadEagerRelations: false,\n loadRelationIds: {\n relations: loadRelationPropertyPaths,\n disableMixedMap: true\n },\n // the soft-deleted entities should be included in the loaded entities for recover operation\n withDeleted: true\n };\n return [4 /*yield*/, this.queryRunner.manager\n .getRepository(subjectGroup.target)\n .findByIds(allIds, findOptions)];\n case 1:\n entities = _b.sent();\n // now when we have entities we need to find subject of each entity\n // and insert that entity into database entity of the found subjects\n entities.forEach(function (entity) {\n var subjects = _this.findByPersistEntityLike(subjectGroup.target, entity);\n subjects.forEach(function (subject) {\n subject.databaseEntity = entity;\n if (!subject.identifier)\n subject.identifier = subject.metadata.hasAllPrimaryKeys(entity) ? subject.metadata.getEntityIdMap(entity) : undefined;\n });\n });\n try {\n // this way we tell what subjects we tried to load database entities of\n for (allSubjects_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(allSubjects), allSubjects_1_1 = allSubjects_1.next(); !allSubjects_1_1.done; allSubjects_1_1 = allSubjects_1.next()) {\n subject = allSubjects_1_1.value;\n subject.databaseEntityLoaded = true;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (allSubjects_1_1 && !allSubjects_1_1.done && (_a = allSubjects_1.return)) _a.call(allSubjects_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [2 /*return*/];\n }\n });\n }); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Finds subjects where entity like given subject's entity.\n * Comparision made by entity id.\n * Multiple subjects may be returned if duplicates are present in the subject array.\n * This will likely result in the same row being updated multiple times during a transaction.\n */\n SubjectDatabaseEntityLoader.prototype.findByPersistEntityLike = function (entityTarget, entity) {\n return this.subjects.filter(function (subject) {\n if (!subject.entity)\n return false;\n if (subject.entity === entity)\n return true;\n return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds, entity);\n });\n };\n /**\n * Groups given Subject objects into groups separated by entity targets.\n */\n SubjectDatabaseEntityLoader.prototype.groupByEntityTargets = function () {\n return this.subjects.reduce(function (groups, operatedEntity) {\n var group = groups.find(function (group) { return group.target === operatedEntity.metadata.target; });\n if (!group) {\n group = { target: operatedEntity.metadata.target, subjects: [] };\n groups.push(group);\n }\n group.subjects.push(operatedEntity);\n return groups;\n }, []);\n };\n return SubjectDatabaseEntityLoader;\n}());\n\n\n//# sourceMappingURL=SubjectDatabaseEntityLoader.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/SubjectDatabaseEntityLoader.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/SubjectExecutor.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/SubjectExecutor.js ***! - \*********************************************************************/ -/*! exports provided: SubjectExecutor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectExecutor\", function() { return SubjectExecutor; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/sap/SapDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _SubjectTopoligicalSorter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SubjectTopoligicalSorter */ \"./node_modules/typeorm/browser/persistence/SubjectTopoligicalSorter.js\");\n/* harmony import */ var _SubjectChangedColumnsComputer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SubjectChangedColumnsComputer */ \"./node_modules/typeorm/browser/persistence/SubjectChangedColumnsComputer.js\");\n/* harmony import */ var _error_SubjectWithoutIdentifierError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/SubjectWithoutIdentifierError */ \"./node_modules/typeorm/browser/error/SubjectWithoutIdentifierError.js\");\n/* harmony import */ var _error_SubjectRemovedAndUpdatedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/SubjectRemovedAndUpdatedError */ \"./node_modules/typeorm/browser/error/SubjectRemovedAndUpdatedError.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n/* harmony import */ var _tree_NestedSetSubjectExecutor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tree/NestedSetSubjectExecutor */ \"./node_modules/typeorm/browser/persistence/tree/NestedSetSubjectExecutor.js\");\n/* harmony import */ var _tree_ClosureSubjectExecutor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tree/ClosureSubjectExecutor */ \"./node_modules/typeorm/browser/persistence/tree/ClosureSubjectExecutor.js\");\n/* harmony import */ var _tree_MaterializedPathSubjectExecutor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./tree/MaterializedPathSubjectExecutor */ \"./node_modules/typeorm/browser/persistence/tree/MaterializedPathSubjectExecutor.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Executes all database operations (inserts, updated, deletes) that must be executed\n * with given persistence subjects.\n */\nvar SubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SubjectExecutor(queryRunner, subjects, options) {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed).\n */\n this.hasExecutableOperations = false;\n /**\n * Subjects that must be inserted.\n */\n this.insertSubjects = [];\n /**\n * Subjects that must be updated.\n */\n this.updateSubjects = [];\n /**\n * Subjects that must be removed.\n */\n this.removeSubjects = [];\n /**\n * Subjects that must be soft-removed.\n */\n this.softRemoveSubjects = [];\n /**\n * Subjects that must be recovered.\n */\n this.recoverSubjects = [];\n this.queryRunner = queryRunner;\n this.allSubjects = subjects;\n this.options = options;\n this.validate();\n this.recompute();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes all operations over given array of subjects.\n * Executes queries using given query runner.\n */\n SubjectExecutor.prototype.execute = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var broadcasterResult;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n broadcasterResult = undefined;\n if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 2];\n // console.time(\".broadcastBeforeEventsForAll\");\n broadcasterResult = this.broadcastBeforeEventsForAll();\n if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(broadcasterResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n // since event listeners and subscribers can call save methods and/or trigger entity changes we need to recompute operational subjects\n // recompute only in the case if any listener or subscriber was really executed\n if (broadcasterResult && broadcasterResult.count > 0) {\n // console.time(\".recompute\");\n this.insertSubjects.forEach(function (subject) { return subject.recompute(); });\n this.updateSubjects.forEach(function (subject) { return subject.recompute(); });\n this.removeSubjects.forEach(function (subject) { return subject.recompute(); });\n this.softRemoveSubjects.forEach(function (subject) { return subject.recompute(); });\n this.recoverSubjects.forEach(function (subject) { return subject.recompute(); });\n this.recompute();\n // console.timeEnd(\".recompute\");\n }\n // make sure our insert subjects are sorted (using topological sorting) to make cascade inserts work properly\n // console.timeEnd(\"prepare\");\n // execute all insert operations\n // console.time(\".insertion\");\n this.insertSubjects = new _SubjectTopoligicalSorter__WEBPACK_IMPORTED_MODULE_2__[\"SubjectTopoligicalSorter\"](this.insertSubjects).sort(\"insert\");\n return [4 /*yield*/, this.executeInsertOperations()];\n case 3:\n _a.sent();\n // console.timeEnd(\".insertion\");\n // recompute update operations since insertion can create updation operations for the\n // properties it wasn't able to handle on its own (referenced columns)\n this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; });\n // execute update operations\n // console.time(\".updation\");\n return [4 /*yield*/, this.executeUpdateOperations()];\n case 4:\n // execute update operations\n // console.time(\".updation\");\n _a.sent();\n // console.timeEnd(\".updation\");\n // make sure our remove subjects are sorted (using topological sorting) when multiple entities are passed for the removal\n // console.time(\".removal\");\n this.removeSubjects = new _SubjectTopoligicalSorter__WEBPACK_IMPORTED_MODULE_2__[\"SubjectTopoligicalSorter\"](this.removeSubjects).sort(\"delete\");\n return [4 /*yield*/, this.executeRemoveOperations()];\n case 5:\n _a.sent();\n // console.timeEnd(\".removal\");\n // recompute soft-remove operations\n this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; });\n // execute soft-remove operations\n return [4 /*yield*/, this.executeSoftRemoveOperations()];\n case 6:\n // execute soft-remove operations\n _a.sent();\n // recompute recover operations\n this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; });\n // execute recover operations\n return [4 /*yield*/, this.executeRecoverOperations()];\n case 7:\n // execute recover operations\n _a.sent();\n // update all special columns in persisted entities, like inserted id or remove ids from the removed entities\n // console.time(\".updateSpecialColumnsInPersistedEntities\");\n return [4 /*yield*/, this.updateSpecialColumnsInPersistedEntities()];\n case 8:\n // update all special columns in persisted entities, like inserted id or remove ids from the removed entities\n // console.time(\".updateSpecialColumnsInPersistedEntities\");\n _a.sent();\n if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 10];\n // console.time(\".broadcastAfterEventsForAll\");\n broadcasterResult = this.broadcastAfterEventsForAll();\n if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcasterResult.promises)];\n case 9:\n _a.sent();\n _a.label = 10;\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Validates all given subjects.\n */\n SubjectExecutor.prototype.validate = function () {\n this.allSubjects.forEach(function (subject) {\n if (subject.mustBeUpdated && subject.mustBeRemoved)\n throw new _error_SubjectRemovedAndUpdatedError__WEBPACK_IMPORTED_MODULE_5__[\"SubjectRemovedAndUpdatedError\"](subject);\n });\n };\n /**\n * Performs entity re-computations - finds changed columns, re-builds insert/update/remove subjects.\n */\n SubjectExecutor.prototype.recompute = function () {\n new _SubjectChangedColumnsComputer__WEBPACK_IMPORTED_MODULE_3__[\"SubjectChangedColumnsComputer\"]().compute(this.allSubjects);\n this.insertSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeInserted; });\n this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; });\n this.removeSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRemoved; });\n this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; });\n this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; });\n this.hasExecutableOperations = this.insertSubjects.length > 0 || this.updateSubjects.length > 0 || this.removeSubjects.length > 0 || this.softRemoveSubjects.length > 0 || this.recoverSubjects.length > 0;\n };\n /**\n * Broadcasts \"BEFORE_INSERT\", \"BEFORE_UPDATE\", \"BEFORE_REMOVE\" events for all given subjects.\n */\n SubjectExecutor.prototype.broadcastBeforeEventsForAll = function () {\n var _this = this;\n var result = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__[\"BroadcasterResult\"]();\n if (this.insertSubjects.length)\n this.insertSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity); });\n if (this.updateSubjects.length)\n this.updateSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.removeSubjects.length)\n this.removeSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity); });\n if (this.softRemoveSubjects.length)\n this.softRemoveSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.recoverSubjects.length)\n this.recoverSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n return result;\n };\n /**\n * Broadcasts \"AFTER_INSERT\", \"AFTER_UPDATE\", \"AFTER_REMOVE\" events for all given subjects.\n * Returns void if there wasn't any listener or subscriber executed.\n * Note: this method has a performance-optimized code organization.\n */\n SubjectExecutor.prototype.broadcastAfterEventsForAll = function () {\n var _this = this;\n var result = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__[\"BroadcasterResult\"]();\n if (this.insertSubjects.length)\n this.insertSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity); });\n if (this.updateSubjects.length)\n this.updateSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.removeSubjects.length)\n this.removeSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity); });\n if (this.softRemoveSubjects.length)\n this.softRemoveSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.recoverSubjects.length)\n this.recoverSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n return result;\n };\n /**\n * Executes insert operations.\n */\n SubjectExecutor.prototype.executeInsertOperations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, groupedInsertSubjects, groupedInsertSubjectKeys, _loop_1, this_1, groupedInsertSubjectKeys_1, groupedInsertSubjectKeys_1_1, groupName, e_1_1;\n var e_1, _b;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.groupBulkSubjects(this.insertSubjects, \"insert\"), 2), groupedInsertSubjects = _a[0], groupedInsertSubjectKeys = _a[1];\n _loop_1 = function (groupName) {\n var subjects, bulkInsertMaps, bulkInsertSubjects, singleInsertSubjects, manager, insertResult_1, insertResult_2, _loop_2, singleInsertSubjects_1, singleInsertSubjects_1_1, subject, e_2_1;\n var e_2, _d;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n subjects = groupedInsertSubjects[groupName];\n bulkInsertMaps = [];\n bulkInsertSubjects = [];\n singleInsertSubjects = [];\n if (this_1.queryRunner.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoDriver\"]) {\n subjects.forEach(function (subject) {\n if (subject.metadata.createDateColumn && subject.entity) {\n subject.entity[subject.metadata.createDateColumn.databaseName] = new Date();\n }\n if (subject.metadata.updateDateColumn && subject.entity) {\n subject.entity[subject.metadata.updateDateColumn.databaseName] = new Date();\n }\n subject.createValueSetAndPopChangeMap();\n bulkInsertSubjects.push(subject);\n bulkInsertMaps.push(subject.entity);\n });\n }\n else if (this_1.queryRunner.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) {\n subjects.forEach(function (subject) {\n singleInsertSubjects.push(subject);\n });\n }\n else {\n subjects.forEach(function (subject) {\n // we do not insert in bulk in following cases:\n // - when there is no values in insert (only defaults are inserted), since we cannot use DEFAULT VALUES expression for multiple inserted rows\n // - when entity is a tree table, since tree tables require extra operation per each inserted row\n // - when oracle is used, since oracle's bulk insertion is very bad\n if (subject.changeMaps.length === 0 ||\n subject.metadata.treeType ||\n _this.queryRunner.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] ||\n _this.queryRunner.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n singleInsertSubjects.push(subject);\n }\n else {\n bulkInsertSubjects.push(subject);\n bulkInsertMaps.push(subject.createValueSetAndPopChangeMap());\n }\n });\n }\n if (!(this_1.queryRunner instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoQueryRunner\"])) return [3 /*break*/, 2];\n manager = this_1.queryRunner.manager;\n return [4 /*yield*/, manager.insert(subjects[0].metadata.target, bulkInsertMaps)];\n case 1:\n insertResult_1 = _e.sent();\n subjects.forEach(function (subject, index) {\n subject.identifier = insertResult_1.identifiers[index];\n subject.generatedMap = insertResult_1.generatedMaps[index];\n subject.insertedValueSet = bulkInsertMaps[index];\n });\n return [3 /*break*/, 12];\n case 2:\n if (!(bulkInsertMaps.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, this_1.queryRunner\n .manager\n .createQueryBuilder()\n .insert()\n .into(subjects[0].metadata.target)\n .values(bulkInsertMaps)\n .updateEntity(this_1.options && this_1.options.reload === false ? false : true)\n .callListeners(false)\n .execute()];\n case 3:\n insertResult_2 = _e.sent();\n bulkInsertSubjects.forEach(function (subject, index) {\n subject.identifier = insertResult_2.identifiers[index];\n subject.generatedMap = insertResult_2.generatedMaps[index];\n subject.insertedValueSet = bulkInsertMaps[index];\n });\n _e.label = 4;\n case 4:\n if (!(singleInsertSubjects.length > 0)) return [3 /*break*/, 12];\n _loop_2 = function (subject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_f) {\n switch (_f.label) {\n case 0:\n subject.insertedValueSet = subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it\n if (!(subject.metadata.treeType === \"nested-set\")) return [3 /*break*/, 2];\n return [4 /*yield*/, new _tree_NestedSetSubjectExecutor__WEBPACK_IMPORTED_MODULE_7__[\"NestedSetSubjectExecutor\"](this_1.queryRunner).insert(subject)];\n case 1:\n _f.sent();\n _f.label = 2;\n case 2: return [4 /*yield*/, this_1.queryRunner\n .manager\n .createQueryBuilder()\n .insert()\n .into(subject.metadata.target)\n .values(subject.insertedValueSet)\n .updateEntity(this_1.options && this_1.options.reload === false ? false : true)\n .callListeners(false)\n .execute()\n .then(function (insertResult) {\n subject.identifier = insertResult.identifiers[0];\n subject.generatedMap = insertResult.generatedMaps[0];\n })];\n case 3:\n _f.sent();\n if (!(subject.metadata.treeType === \"closure-table\")) return [3 /*break*/, 5];\n return [4 /*yield*/, new _tree_ClosureSubjectExecutor__WEBPACK_IMPORTED_MODULE_8__[\"ClosureSubjectExecutor\"](this_1.queryRunner).insert(subject)];\n case 4:\n _f.sent();\n return [3 /*break*/, 7];\n case 5:\n if (!(subject.metadata.treeType === \"materialized-path\")) return [3 /*break*/, 7];\n return [4 /*yield*/, new _tree_MaterializedPathSubjectExecutor__WEBPACK_IMPORTED_MODULE_9__[\"MaterializedPathSubjectExecutor\"](this_1.queryRunner).insert(subject)];\n case 6:\n _f.sent();\n _f.label = 7;\n case 7: return [2 /*return*/];\n }\n });\n };\n _e.label = 5;\n case 5:\n _e.trys.push([5, 10, 11, 12]);\n singleInsertSubjects_1 = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(singleInsertSubjects)), singleInsertSubjects_1_1 = singleInsertSubjects_1.next();\n _e.label = 6;\n case 6:\n if (!!singleInsertSubjects_1_1.done) return [3 /*break*/, 9];\n subject = singleInsertSubjects_1_1.value;\n return [5 /*yield**/, _loop_2(subject)];\n case 7:\n _e.sent();\n _e.label = 8;\n case 8:\n singleInsertSubjects_1_1 = singleInsertSubjects_1.next();\n return [3 /*break*/, 6];\n case 9: return [3 /*break*/, 12];\n case 10:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 12];\n case 11:\n try {\n if (singleInsertSubjects_1_1 && !singleInsertSubjects_1_1.done && (_d = singleInsertSubjects_1.return)) _d.call(singleInsertSubjects_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 12:\n subjects.forEach(function (subject) {\n if (subject.generatedMap) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(subject.generatedMap);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(subject.generatedMap, preparedValue);\n }\n });\n }\n });\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 6, 7, 8]);\n groupedInsertSubjectKeys_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(groupedInsertSubjectKeys), groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();\n _c.label = 2;\n case 2:\n if (!!groupedInsertSubjectKeys_1_1.done) return [3 /*break*/, 5];\n groupName = groupedInsertSubjectKeys_1_1.value;\n return [5 /*yield**/, _loop_1(groupName)];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4:\n groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _c.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (groupedInsertSubjectKeys_1_1 && !groupedInsertSubjectKeys_1_1.done && (_b = groupedInsertSubjectKeys_1.return)) _b.call(groupedInsertSubjectKeys_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates all given subjects in the database.\n */\n SubjectExecutor.prototype.executeUpdateOperations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.updateSubjects.map(function (subject) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var partialEntity, manager, updateMap, updateQueryBuilder, updateResult, updateGeneratedMap_1;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!subject.identifier)\n throw new _error_SubjectWithoutIdentifierError__WEBPACK_IMPORTED_MODULE_4__[\"SubjectWithoutIdentifierError\"](subject);\n if (!(this.queryRunner instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoQueryRunner\"])) return [3 /*break*/, 2];\n partialEntity = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_10__[\"OrmUtils\"].mergeDeep({}, subject.entity);\n if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) {\n delete partialEntity[subject.metadata.objectIdColumn.propertyName];\n }\n if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) {\n delete partialEntity[subject.metadata.createDateColumn.propertyName];\n }\n if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) {\n partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();\n }\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n updateMap = subject.createValueSetAndPopChangeMap();\n updateQueryBuilder = this.queryRunner\n .manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set(updateMap)\n .updateEntity(this.options && this.options.reload === false ? false : true)\n .callListeners(false);\n if (subject.entity) {\n updateQueryBuilder.whereEntity(subject.identifier);\n }\n else { // in this case identifier is just conditions object to update by\n updateQueryBuilder.where(subject.identifier);\n }\n return [4 /*yield*/, updateQueryBuilder.execute()];\n case 3:\n updateResult = _a.sent();\n updateGeneratedMap_1 = updateResult.generatedMaps[0];\n if (updateGeneratedMap_1) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(updateGeneratedMap_1);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(updateGeneratedMap_1, preparedValue);\n }\n });\n if (!subject.generatedMap) {\n subject.generatedMap = {};\n }\n Object.assign(subject.generatedMap, updateGeneratedMap_1);\n }\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes all given subjects from the database.\n *\n * todo: we need to apply topological sort here as well\n */\n SubjectExecutor.prototype.executeRemoveOperations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, groupedRemoveSubjects, groupedRemoveSubjectKeys, groupedRemoveSubjectKeys_1, groupedRemoveSubjectKeys_1_1, groupName, subjects, deleteMaps, manager, e_3_1;\n var e_3, _b;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.groupBulkSubjects(this.removeSubjects, \"delete\"), 2), groupedRemoveSubjects = _a[0], groupedRemoveSubjectKeys = _a[1];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 8, 9, 10]);\n groupedRemoveSubjectKeys_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(groupedRemoveSubjectKeys), groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();\n _c.label = 2;\n case 2:\n if (!!groupedRemoveSubjectKeys_1_1.done) return [3 /*break*/, 7];\n groupName = groupedRemoveSubjectKeys_1_1.value;\n subjects = groupedRemoveSubjects[groupName];\n deleteMaps = subjects.map(function (subject) {\n if (!subject.identifier)\n throw new _error_SubjectWithoutIdentifierError__WEBPACK_IMPORTED_MODULE_4__[\"SubjectWithoutIdentifierError\"](subject);\n return subject.identifier;\n });\n if (!(this.queryRunner instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoQueryRunner\"])) return [3 /*break*/, 4];\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.delete(subjects[0].metadata.target, deleteMaps)];\n case 3:\n _c.sent();\n return [3 /*break*/, 6];\n case 4: \n // here we execute our deletion query\n // we don't need to specify entities and set update entity to true since the only thing query builder\n // will do for use is a primary keys deletion which is handled by us later once persistence is finished\n // also, we disable listeners because we call them on our own in persistence layer\n return [4 /*yield*/, this.queryRunner\n .manager\n .createQueryBuilder()\n .delete()\n .from(subjects[0].metadata.target)\n .where(deleteMaps)\n .callListeners(false)\n .execute()];\n case 5:\n // here we execute our deletion query\n // we don't need to specify entities and set update entity to true since the only thing query builder\n // will do for use is a primary keys deletion which is handled by us later once persistence is finished\n // also, we disable listeners because we call them on our own in persistence layer\n _c.sent();\n _c.label = 6;\n case 6:\n groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_3_1 = _c.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (groupedRemoveSubjectKeys_1_1 && !groupedRemoveSubjectKeys_1_1.done && (_b = groupedRemoveSubjectKeys_1.return)) _b.call(groupedRemoveSubjectKeys_1);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Soft-removes all given subjects in the database.\n */\n SubjectExecutor.prototype.executeSoftRemoveOperations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.softRemoveSubjects.map(function (subject) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var partialEntity, manager, softDeleteQueryBuilder, updateResult;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!subject.identifier)\n throw new _error_SubjectWithoutIdentifierError__WEBPACK_IMPORTED_MODULE_4__[\"SubjectWithoutIdentifierError\"](subject);\n if (!(this.queryRunner instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoQueryRunner\"])) return [3 /*break*/, 2];\n partialEntity = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_10__[\"OrmUtils\"].mergeDeep({}, subject.entity);\n if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) {\n delete partialEntity[subject.metadata.objectIdColumn.propertyName];\n }\n if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) {\n delete partialEntity[subject.metadata.createDateColumn.propertyName];\n }\n if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) {\n partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();\n }\n if (subject.metadata.deleteDateColumn && subject.metadata.deleteDateColumn.propertyName) {\n partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date();\n }\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n softDeleteQueryBuilder = this.queryRunner\n .manager\n .createQueryBuilder()\n .softDelete()\n .from(subject.metadata.target)\n .updateEntity(this.options && this.options.reload === false ? false : true)\n .callListeners(false);\n if (subject.entity) {\n softDeleteQueryBuilder.whereEntity(subject.identifier);\n }\n else { // in this case identifier is just conditions object to update by\n softDeleteQueryBuilder.where(subject.identifier);\n }\n return [4 /*yield*/, softDeleteQueryBuilder.execute()];\n case 3:\n updateResult = _a.sent();\n subject.generatedMap = updateResult.generatedMaps[0];\n if (subject.generatedMap) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(subject.generatedMap);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(subject.generatedMap, preparedValue);\n }\n });\n }\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Recovers all given subjects in the database.\n */\n SubjectExecutor.prototype.executeRecoverOperations = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.recoverSubjects.map(function (subject) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var partialEntity, manager, softDeleteQueryBuilder, updateResult;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!subject.identifier)\n throw new _error_SubjectWithoutIdentifierError__WEBPACK_IMPORTED_MODULE_4__[\"SubjectWithoutIdentifierError\"](subject);\n if (!(this.queryRunner instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoQueryRunner\"])) return [3 /*break*/, 2];\n partialEntity = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_10__[\"OrmUtils\"].mergeDeep({}, subject.entity);\n if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) {\n delete partialEntity[subject.metadata.objectIdColumn.propertyName];\n }\n if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) {\n delete partialEntity[subject.metadata.createDateColumn.propertyName];\n }\n if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) {\n partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();\n }\n if (subject.metadata.deleteDateColumn && subject.metadata.deleteDateColumn.propertyName) {\n partialEntity[subject.metadata.deleteDateColumn.propertyName] = null;\n }\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n softDeleteQueryBuilder = this.queryRunner\n .manager\n .createQueryBuilder()\n .restore()\n .from(subject.metadata.target)\n .updateEntity(this.options && this.options.reload === false ? false : true)\n .callListeners(false);\n if (subject.entity) {\n softDeleteQueryBuilder.whereEntity(subject.identifier);\n }\n else { // in this case identifier is just conditions object to update by\n softDeleteQueryBuilder.where(subject.identifier);\n }\n return [4 /*yield*/, softDeleteQueryBuilder.execute()];\n case 3:\n updateResult = _a.sent();\n subject.generatedMap = updateResult.generatedMaps[0];\n if (subject.generatedMap) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(subject.generatedMap);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(subject.generatedMap, preparedValue);\n }\n });\n }\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates all special columns of the saving entities (create date, update date, version, etc.).\n * Also updates nullable columns and columns with default values.\n */\n SubjectExecutor.prototype.updateSpecialColumnsInPersistedEntities = function () {\n var _this = this;\n // update inserted entity properties\n if (this.insertSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.insertSubjects);\n // update updated entity properties\n if (this.updateSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.updateSubjects);\n // update soft-removed entity properties\n if (this.updateSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.softRemoveSubjects);\n // update recovered entity properties\n if (this.updateSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.recoverSubjects);\n // remove ids from the entities that were removed\n if (this.removeSubjects.length) {\n this.removeSubjects.forEach(function (subject) {\n if (!subject.entity)\n return;\n subject.metadata.primaryColumns.forEach(function (primaryColumn) {\n primaryColumn.setEntityValue(subject.entity, undefined);\n });\n });\n }\n // other post-persist updations\n this.allSubjects.forEach(function (subject) {\n if (!subject.entity)\n return;\n subject.metadata.relationIds.forEach(function (relationId) {\n relationId.setValue(subject.entity);\n });\n // mongo _id remove\n if (_this.queryRunner instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MongoQueryRunner\"]) {\n if (subject.metadata.objectIdColumn\n && subject.metadata.objectIdColumn.databaseName\n && subject.metadata.objectIdColumn.databaseName !== subject.metadata.objectIdColumn.propertyName) {\n delete subject.entity[subject.metadata.objectIdColumn.databaseName];\n }\n }\n });\n };\n /**\n * Updates all special columns of the saving entities (create date, update date, version, etc.).\n * Also updates nullable columns and columns with default values.\n */\n SubjectExecutor.prototype.updateSpecialColumnsInInsertedAndUpdatedEntities = function (subjects) {\n var _this = this;\n subjects.forEach(function (subject) {\n if (!subject.entity)\n return;\n // set values to \"null\" for nullable columns that did not have values\n subject.metadata.columns.forEach(function (column) {\n // if table inheritance is used make sure this column is not child's column\n if (subject.metadata.childEntityMetadatas.length > 0 && subject.metadata.childEntityMetadatas.map(function (metadata) { return metadata.target; }).indexOf(column.target) !== -1)\n return;\n // entities does not have virtual columns\n if (column.isVirtual)\n return;\n // update nullable columns\n if (column.isNullable) {\n var columnValue = column.getEntityValue(subject.entity);\n if (columnValue === undefined)\n column.setEntityValue(subject.entity, null);\n }\n // update relational columns\n if (subject.updatedRelationMaps.length > 0) {\n subject.updatedRelationMaps.forEach(function (updatedRelationMap) {\n updatedRelationMap.relation.joinColumns.forEach(function (column) {\n if (column.isVirtual === true)\n return;\n column.setEntityValue(subject.entity, updatedRelationMap.value instanceof Object ? column.referencedColumn.getEntityValue(updatedRelationMap.value) : updatedRelationMap.value);\n });\n });\n }\n });\n // merge into entity all generated values returned by a database\n if (subject.generatedMap)\n _this.queryRunner.manager.merge(subject.metadata.target, subject.entity, subject.generatedMap);\n });\n };\n /**\n * Groups subjects by metadata names (by tables) to make bulk insertions and deletions possible.\n * However there are some limitations with bulk insertions of data into tables with generated (increment) columns\n * in some drivers. Some drivers like mysql and sqlite does not support returning multiple generated columns\n * after insertion and can only return a single generated column value, that's why its not possible to do bulk insertion,\n * because it breaks insertion result's generatedMap and leads to problems when this subject is used in other subjects saves.\n * That's why we only support bulking in junction tables for those drivers.\n *\n * Other drivers like postgres and sql server support RETURNING / OUTPUT statement which allows to return generated\n * id for each inserted row, that's why bulk insertion is not limited to junction tables in there.\n */\n SubjectExecutor.prototype.groupBulkSubjects = function (subjects, type) {\n var group = {};\n var keys = [];\n var groupingAllowed = type === \"delete\" || this.queryRunner.connection.driver.isReturningSqlSupported();\n subjects.forEach(function (subject, index) {\n var key = groupingAllowed || subject.metadata.isJunction ? subject.metadata.name : subject.metadata.name + \"_\" + index;\n if (!group[key]) {\n group[key] = [subject];\n keys.push(key);\n }\n else {\n group[key].push(subject);\n }\n });\n return [group, keys];\n };\n return SubjectExecutor;\n}());\n\n\n//# sourceMappingURL=SubjectExecutor.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/SubjectExecutor.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/SubjectTopoligicalSorter.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/SubjectTopoligicalSorter.js ***! - \******************************************************************************/ -/*! exports provided: SubjectTopoligicalSorter */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectTopoligicalSorter\", function() { return SubjectTopoligicalSorter; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Orders insert or remove subjects in proper order (using topological sorting)\n * to make sure insert or remove operations are executed in a proper order.\n */\nvar SubjectTopoligicalSorter = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SubjectTopoligicalSorter(subjects) {\n this.subjects = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(subjects)); // copy subjects to prevent changing of sent array\n this.metadatas = this.getUniqueMetadatas(this.subjects);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Sorts (orders) subjects in their topological order.\n */\n SubjectTopoligicalSorter.prototype.sort = function (direction) {\n var _this = this;\n // if there are no metadatas it probably mean there is no subjects... we don't have to do anything here\n if (!this.metadatas.length)\n return this.subjects;\n var sortedSubjects = [];\n // first if we sort for deletion all junction subjects\n // junction subjects are subjects without entity and database entity set\n if (direction === \"delete\") {\n var junctionSubjects = this.subjects.filter(function (subject) { return !subject.entity && !subject.databaseEntity; });\n sortedSubjects.push.apply(sortedSubjects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(junctionSubjects)));\n this.removeAlreadySorted(junctionSubjects);\n }\n // next we always insert entities with non-nullable relations, sort them first\n var nonNullableDependencies = this.getNonNullableDependencies();\n var sortedNonNullableEntityTargets = this.toposort(nonNullableDependencies);\n if (direction === \"insert\")\n sortedNonNullableEntityTargets = sortedNonNullableEntityTargets.reverse();\n // so we have a sorted entity targets\n // go thought each of them and find all subjects with sorted entity target\n // add those sorted targets and remove them from original array of targets\n sortedNonNullableEntityTargets.forEach(function (sortedEntityTarget) {\n var entityTargetSubjects = _this.subjects.filter(function (subject) { return subject.metadata.targetName === sortedEntityTarget; });\n sortedSubjects.push.apply(sortedSubjects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(entityTargetSubjects)));\n _this.removeAlreadySorted(entityTargetSubjects);\n });\n // next sort all other entities\n // same process as in above but with other entities\n var otherDependencies = this.getDependencies();\n var sortedOtherEntityTargets = this.toposort(otherDependencies);\n if (direction === \"insert\")\n sortedOtherEntityTargets = sortedOtherEntityTargets.reverse();\n sortedOtherEntityTargets.forEach(function (sortedEntityTarget) {\n var entityTargetSubjects = _this.subjects.filter(function (subject) { return subject.metadata.targetName === sortedEntityTarget; });\n sortedSubjects.push.apply(sortedSubjects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(entityTargetSubjects)));\n _this.removeAlreadySorted(entityTargetSubjects);\n });\n // if we have something left in the subjects add them as well\n sortedSubjects.push.apply(sortedSubjects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.subjects)));\n return sortedSubjects;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Removes already sorted subjects from this.subjects list of subjects.\n */\n SubjectTopoligicalSorter.prototype.removeAlreadySorted = function (subjects) {\n var _this = this;\n subjects.forEach(function (subject) {\n _this.subjects.splice(_this.subjects.indexOf(subject), 1);\n });\n };\n /**\n * Extracts all unique metadatas from the given subjects.\n */\n SubjectTopoligicalSorter.prototype.getUniqueMetadatas = function (subjects) {\n var metadatas = [];\n subjects.forEach(function (subject) {\n if (metadatas.indexOf(subject.metadata) === -1)\n metadatas.push(subject.metadata);\n });\n return metadatas;\n };\n /**\n * Gets dependency tree for all entity metadatas with non-nullable relations.\n * We need to execute insertions first for entities which non-nullable relations.\n */\n SubjectTopoligicalSorter.prototype.getNonNullableDependencies = function () {\n return this.metadatas.reduce(function (dependencies, metadata) {\n metadata.relationsWithJoinColumns.forEach(function (relation) {\n if (relation.isNullable)\n return;\n dependencies.push([metadata.targetName, relation.inverseEntityMetadata.targetName]);\n });\n return dependencies;\n }, []);\n };\n /**\n * Gets dependency tree for all entity metadatas with non-nullable relations.\n * We need to execute insertions first for entities which non-nullable relations.\n */\n SubjectTopoligicalSorter.prototype.getDependencies = function () {\n return this.metadatas.reduce(function (dependencies, metadata) {\n metadata.relationsWithJoinColumns.forEach(function (relation) {\n // if relation is self-referenced we skip it\n if (relation.inverseEntityMetadata === metadata)\n return;\n dependencies.push([metadata.targetName, relation.inverseEntityMetadata.targetName]);\n });\n return dependencies;\n }, []);\n };\n /**\n * Sorts given graph using topological sorting algorithm.\n *\n * Algorithm is kindly taken from https://github.com/marcelklehr/toposort repository.\n */\n SubjectTopoligicalSorter.prototype.toposort = function (edges) {\n function uniqueNodes(arr) {\n var res = [];\n for (var i_1 = 0, len = arr.length; i_1 < len; i_1++) {\n var edge = arr[i_1];\n if (res.indexOf(edge[0]) < 0)\n res.push(edge[0]);\n if (res.indexOf(edge[1]) < 0)\n res.push(edge[1]);\n }\n return res;\n }\n var nodes = uniqueNodes(edges);\n var cursor = nodes.length, sorted = new Array(cursor), visited = {}, i = cursor;\n while (i--) {\n if (!visited[i])\n visit(nodes[i], i, []);\n }\n function visit(node, i, predecessors) {\n if (predecessors.indexOf(node) >= 0) {\n throw new Error(\"Cyclic dependency: \" + JSON.stringify(node)); // todo: better error\n }\n if (!~nodes.indexOf(node)) {\n throw new Error(\"Found unknown node. Make sure to provided all involved nodes. Unknown node: \" + JSON.stringify(node));\n }\n if (visited[i])\n return;\n visited[i] = true;\n // outgoing edges\n var outgoing = edges.filter(function (edge) {\n return edge[0] === node;\n });\n if (i = outgoing.length) {\n var preds = predecessors.concat(node);\n do {\n var child = outgoing[--i][1];\n visit(child, nodes.indexOf(child), preds);\n } while (i);\n }\n sorted[--cursor] = node;\n }\n return sorted;\n };\n return SubjectTopoligicalSorter;\n}());\n\n\n//# sourceMappingURL=SubjectTopoligicalSorter.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/SubjectTopoligicalSorter.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/subject-builder/CascadesSubjectBuilder.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/subject-builder/CascadesSubjectBuilder.js ***! - \********************************************************************************************/ -/*! exports provided: CascadesSubjectBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CascadesSubjectBuilder\", function() { return CascadesSubjectBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ \"./node_modules/typeorm/browser/persistence/Subject.js\");\n\n\n/**\n * Finds all cascade operations of the given subject and cascade operations of the found cascaded subjects,\n * e.g. builds a cascade tree and creates a subjects for them.\n */\nvar CascadesSubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function CascadesSubjectBuilder(allSubjects) {\n this.allSubjects = allSubjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds a cascade subjects tree and pushes them in into the given array of subjects.\n */\n CascadesSubjectBuilder.prototype.build = function (subject, operationType) {\n var _this = this;\n subject.metadata\n .extractRelationValuesFromEntity(subject.entity, subject.metadata.relations) // todo: we can create EntityMetadata.cascadeRelations\n .forEach(function (_a) {\n var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_a, 3), relation = _b[0], relationEntity = _b[1], relationEntityMetadata = _b[2];\n // we need only defined values and insert, update, soft-remove or recover cascades of the relation should be set\n if (relationEntity === undefined ||\n relationEntity === null ||\n (!relation.isCascadeInsert && !relation.isCascadeUpdate && !relation.isCascadeSoftRemove && !relation.isCascadeRecover))\n return;\n // if relation entity is just a relation id set (for example post.tag = 1)\n // then we don't really need to check cascades since there is no object to insert or update\n if (!(relationEntity instanceof Object))\n return;\n // if we already has this entity in list of operated subjects then skip it to avoid recursion\n var alreadyExistRelationEntitySubject = _this.findByPersistEntityLike(relationEntityMetadata.target, relationEntity);\n if (alreadyExistRelationEntitySubject) {\n if (alreadyExistRelationEntitySubject.canBeInserted === false) // if its not marked for insertion yet\n alreadyExistRelationEntitySubject.canBeInserted = relation.isCascadeInsert === true && operationType === \"save\";\n if (alreadyExistRelationEntitySubject.canBeUpdated === false) // if its not marked for update yet\n alreadyExistRelationEntitySubject.canBeUpdated = relation.isCascadeUpdate === true && operationType === \"save\";\n if (alreadyExistRelationEntitySubject.canBeSoftRemoved === false) // if its not marked for removal yet\n alreadyExistRelationEntitySubject.canBeSoftRemoved = relation.isCascadeSoftRemove === true && operationType === \"soft-remove\";\n if (alreadyExistRelationEntitySubject.canBeRecovered === false) // if its not marked for recovery yet\n alreadyExistRelationEntitySubject.canBeRecovered = relation.isCascadeRecover === true && operationType === \"recover\";\n return;\n }\n // mark subject with what we can do with it\n // and add to the array of subjects to load only if there is no same entity there already\n var relationEntitySubject = new _Subject__WEBPACK_IMPORTED_MODULE_1__[\"Subject\"]({\n metadata: relationEntityMetadata,\n parentSubject: subject,\n entity: relationEntity,\n canBeInserted: relation.isCascadeInsert === true && operationType === \"save\",\n canBeUpdated: relation.isCascadeUpdate === true && operationType === \"save\",\n canBeSoftRemoved: relation.isCascadeSoftRemove === true && operationType === \"soft-remove\",\n canBeRecovered: relation.isCascadeRecover === true && operationType === \"recover\"\n });\n _this.allSubjects.push(relationEntitySubject);\n // go recursively and find other entities we need to insert/update\n _this.build(relationEntitySubject, operationType);\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Finds subject where entity like given subject's entity.\n * Comparision made by entity id.\n */\n CascadesSubjectBuilder.prototype.findByPersistEntityLike = function (entityTarget, entity) {\n return this.allSubjects.find(function (subject) {\n if (!subject.entity)\n return false;\n if (subject.entity === entity)\n return true;\n return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds, entity);\n });\n };\n return CascadesSubjectBuilder;\n}());\n\n\n//# sourceMappingURL=CascadesSubjectBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/subject-builder/CascadesSubjectBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/subject-builder/ManyToManySubjectBuilder.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/subject-builder/ManyToManySubjectBuilder.js ***! - \**********************************************************************************************/ -/*! exports provided: ManyToManySubjectBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ManyToManySubjectBuilder\", function() { return ManyToManySubjectBuilder; });\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subject */ \"./node_modules/typeorm/browser/persistence/Subject.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n\n\n/**\n * Builds operations needs to be executed for many-to-many relations of the given subjects.\n *\n * by example: post contains owner many-to-many relation with categories in the property called \"categories\", e.g.\n * @ManyToMany(type => Category, category => category.posts) categories: Category[]\n * If user adds categories into the post and saves post we need to bind them.\n * This operation requires updation of junction table.\n */\nvar ManyToManySubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ManyToManySubjectBuilder(subjects) {\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for any changes in the many-to-many relations of the subjects.\n */\n ManyToManySubjectBuilder.prototype.build = function () {\n var _this = this;\n this.subjects.forEach(function (subject) {\n // if subject doesn't have entity then no need to find something that should be inserted or removed\n if (!subject.entity)\n return;\n // go through all persistence enabled many-to-many relations and build subject operations for them\n subject.metadata.manyToManyRelations.forEach(function (relation) {\n // skip relations for which persistence is disabled\n if (relation.persistenceEnabled === false)\n return;\n _this.buildForSubjectRelation(subject, relation);\n });\n });\n };\n /**\n * Builds operations for removal of all many-to-many records of all many-to-many relations of the given subject.\n */\n ManyToManySubjectBuilder.prototype.buildForAllRemoval = function (subject) {\n var _this = this;\n // if subject does not have a database entity then it means it does not exist in the database\n // if it does not exist in the database then we don't have anything for deletion\n if (!subject.databaseEntity)\n return;\n // go through all persistence enabled many-to-many relations and build subject operations for them\n subject.metadata.manyToManyRelations.forEach(function (relation) {\n // skip relations for which persistence is disabled\n if (relation.persistenceEnabled === false)\n return;\n // get all related entities (actually related entity relation ids) bind to this subject entity\n // by example: returns category ids of the post we are currently working with (subject.entity is post)\n var relatedEntityRelationIdsInDatabase = relation.getEntityValue(subject.databaseEntity);\n // go through all related entities and create a new junction subject for each row in junction table\n relatedEntityRelationIdsInDatabase.forEach(function (relationId) {\n var junctionSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[\"Subject\"]({\n metadata: relation.junctionEntityMetadata,\n parentSubject: subject,\n mustBeRemoved: true,\n identifier: _this.buildJunctionIdentifier(subject, relation, relationId)\n });\n // we use unshift because we need to perform those operations before post deletion is performed\n // but post deletion was already added as an subject\n // this is temporary solution, later we need to implement proper sorting of subjects before their removal\n _this.subjects.push(junctionSubject);\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"categories\" inside it here.\n */\n ManyToManySubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) {\n var _this = this;\n // load from db all relation ids of inverse entities that are \"bind\" to the subject's entity\n // this way we gonna check which relation ids are missing and which are new (e.g. inserted or removed)\n var databaseRelatedEntityIds = [];\n // if subject don't have database entity it means all related entities in persisted subject are new and must be bind\n // and we don't need to remove something that is not exist\n if (subject.databaseEntity)\n databaseRelatedEntityIds = relation.getEntityValue(subject.databaseEntity);\n // extract entity's relation value\n // by example: categories inside our post (subject.entity is post)\n var relatedEntities = relation.getEntityValue(subject.entity);\n if (relatedEntities === null) // if value set to null its equal if we set it to empty array - all items must be removed from the database\n relatedEntities = [];\n if (!(Array.isArray(relatedEntities)))\n return;\n // from all related entities find only those which aren't found in the db - for them we will create operation subjects\n relatedEntities.forEach(function (relatedEntity) {\n // todo: check how it will work for entities which are saved by cascades, but aren't saved in the database yet\n // extract only relation id from the related entities, since we only need it for comparision\n // by example: extract from category only relation id (category id, or let's say category title, depend on join column options)\n var relatedEntityRelationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity);\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = _this.subjects.find(function (subject) {\n return subject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relatedEntityRelationIdMap = relatedEntitySubject.identifier;\n // if related entity relation id map is empty it means related entity is newly persisted\n if (!relatedEntityRelationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if related entity does not have a subject then it means user tries to bind entity which wasn't saved\n // in this persistence because he didn't pass this entity for save or he did not set cascades\n // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if (!relatedEntitySubject)\n // throw new Error(`Many-to-many relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entities which do not exist in the database yet, thus they cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entities before binding it.`);\n if (!relatedEntitySubject)\n return;\n }\n // try to find related entity in the database\n // by example: find post's category in the database post's categories\n var relatedEntityExistInDatabase = databaseRelatedEntityIds.find(function (databaseRelatedEntityRelationId) {\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].compareIds(databaseRelatedEntityRelationId, relatedEntityRelationIdMap);\n });\n // if entity is found then don't do anything - it means binding in junction table already exist, we don't need to add anything\n if (relatedEntityExistInDatabase)\n return;\n var ownerValue = relation.isOwning ? subject : (relatedEntitySubject || relatedEntity); // by example: ownerEntityMap is post from subject here\n var inverseValue = relation.isOwning ? (relatedEntitySubject || relatedEntity) : subject; // by example: inverseEntityMap is category from categories array here\n // create a new subject for insert operation of junction rows\n var junctionSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[\"Subject\"]({\n metadata: relation.junctionEntityMetadata,\n parentSubject: subject,\n canBeInserted: true,\n });\n _this.subjects.push(junctionSubject);\n relation.junctionEntityMetadata.ownerColumns.forEach(function (column) {\n junctionSubject.changeMaps.push({\n column: column,\n value: ownerValue,\n // valueFactory: (value) => column.referencedColumn!.getEntityValue(value) // column.referencedColumn!.getEntityValue(ownerEntityMap),\n });\n });\n relation.junctionEntityMetadata.inverseColumns.forEach(function (column) {\n junctionSubject.changeMaps.push({\n column: column,\n value: inverseValue,\n // valueFactory: (value) => column.referencedColumn!.getEntityValue(value) // column.referencedColumn!.getEntityValue(inverseEntityMap),\n });\n });\n });\n // get all inverse entities relation ids that are \"bind\" to the currently persisted entity\n var changedInverseEntityRelationIds = [];\n relatedEntities.forEach(function (relatedEntity) {\n // relation.inverseEntityMetadata!.getEntityIdMap(relatedEntity)\n var relatedEntityRelationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity);\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = _this.subjects.find(function (subject) {\n return subject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relatedEntityRelationIdMap = relatedEntitySubject.identifier;\n if (relatedEntityRelationIdMap !== undefined && relatedEntityRelationIdMap !== null)\n changedInverseEntityRelationIds.push(relatedEntityRelationIdMap);\n });\n // now from all entities in the persisted entity find only those which aren't found in the db\n var removedJunctionEntityIds = databaseRelatedEntityIds.filter(function (existRelationId) {\n return !changedInverseEntityRelationIds.find(function (changedRelationId) {\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].compareIds(changedRelationId, existRelationId);\n });\n });\n // finally create a new junction remove operations for missing related entities\n removedJunctionEntityIds.forEach(function (removedEntityRelationId) {\n var junctionSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[\"Subject\"]({\n metadata: relation.junctionEntityMetadata,\n parentSubject: subject,\n mustBeRemoved: true,\n identifier: _this.buildJunctionIdentifier(subject, relation, removedEntityRelationId)\n });\n _this.subjects.push(junctionSubject);\n });\n };\n /**\n * Creates identifiers for junction table.\n * Example: { postId: 1, categoryId: 2 }\n */\n ManyToManySubjectBuilder.prototype.buildJunctionIdentifier = function (subject, relation, relationId) {\n var ownerEntityMap = relation.isOwning ? subject.entity : relationId;\n var inverseEntityMap = relation.isOwning ? relationId : subject.entity;\n var identifier = {};\n relation.junctionEntityMetadata.ownerColumns.forEach(function (column) {\n _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(identifier, column.createValueMap(column.referencedColumn.getEntityValue(ownerEntityMap)));\n });\n relation.junctionEntityMetadata.inverseColumns.forEach(function (column) {\n _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(identifier, column.createValueMap(column.referencedColumn.getEntityValue(inverseEntityMap)));\n });\n return identifier;\n };\n return ManyToManySubjectBuilder;\n}());\n\n\n//# sourceMappingURL=ManyToManySubjectBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/subject-builder/ManyToManySubjectBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/subject-builder/OneToManySubjectBuilder.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/subject-builder/OneToManySubjectBuilder.js ***! - \*********************************************************************************************/ -/*! exports provided: OneToManySubjectBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OneToManySubjectBuilder\", function() { return OneToManySubjectBuilder; });\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subject */ \"./node_modules/typeorm/browser/persistence/Subject.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../metadata/EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n\n\n\n/**\n * Builds operations needs to be executed for one-to-many relations of the given subjects.\n *\n * by example: post contains one-to-many relation with category in the property called \"categories\", e.g.\n * @OneToMany(type => Category, category => category.post) categories: Category[]\n * If user adds categories into the post and saves post we need to bind them.\n * This operation requires updation of category table since its owner of the relation and contains a join column.\n *\n * note: this class shares lot of things with OneToOneInverseSideOperationBuilder, so when you change this class\n * make sure to reflect changes there as well.\n */\nvar OneToManySubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function OneToManySubjectBuilder(subjects) {\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds all required operations.\n */\n OneToManySubjectBuilder.prototype.build = function () {\n var _this = this;\n this.subjects.forEach(function (subject) {\n subject.metadata.oneToManyRelations.forEach(function (relation) {\n // skip relations for which persistence is disabled\n if (relation.persistenceEnabled === false)\n return;\n _this.buildForSubjectRelation(subject, relation);\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"categories\" inside it here.\n */\n OneToManySubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) {\n var _this = this;\n // prepare objects (relation id maps) for the database entity\n // note: subject.databaseEntity contains relations with loaded relation ids only\n // by example: since subject is a post, we are expecting to get all post's categories saved in the database here,\n // particularly their relation ids, e.g. category ids stored in the database\n var relatedEntityDatabaseRelationIds = [];\n if (subject.databaseEntity) { // related entities in the database can exist only if this entity (post) is saved\n relatedEntityDatabaseRelationIds = relation.getEntityValue(subject.databaseEntity);\n }\n // get related entities of persisted entity\n // by example: get categories from the passed to persist post entity\n var relatedEntities = relation.getEntityValue(subject.entity);\n if (relatedEntities === null) // we treat relations set to null as removed, so we don't skip it\n relatedEntities = [];\n if (relatedEntities === undefined) // if relation is undefined then nothing to update\n return;\n // extract only relation ids from the related entities, since we only need them for comparision\n // by example: extract from categories only relation ids (category id, or let's say category title, depend on join column options)\n var relatedPersistedEntityRelationIds = [];\n relatedEntities.forEach(function (relatedEntity) {\n var relationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); // by example: relationIdMap is category.id map here, e.g. { id: ... }\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = _this.subjects.find(function (subject) {\n return subject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relationIdMap = relatedEntitySubject.identifier;\n // if relationIdMap is undefined then it means user binds object which is not saved in the database yet\n // by example: if post contains categories which does not have ids yet (because they are new)\n // it means they are always newly inserted and relation update operation always must be created for them\n // it does not make sense to perform difference operation for them for both add and remove actions\n if (!relationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if (!relatedEntitySubject)\n // throw new Error(`One-to-many relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entities which do not exist in the database yet, thus they cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entities before binding it.`);\n if (!relatedEntitySubject)\n return;\n // okay, so related subject exist and its marked for insertion, then add a new change map\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n return;\n }\n // check if this binding really exist in the database\n // by example: find our category if its already bind in the database\n var relationIdInDatabaseSubjectRelation = relatedEntityDatabaseRelationIds.find(function (relatedDatabaseEntityRelationId) {\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].compareIds(relationIdMap, relatedDatabaseEntityRelationId);\n });\n // if relationIdMap DOES NOT exist in the subject's relation in the database it means its a new relation and we need to \"bind\" them\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n if (!relationIdInDatabaseSubjectRelation) {\n // if there is no relatedEntitySubject then it means \"category\" wasn't persisted,\n // but since we are going to update \"category\" table (since its an owning side of relation with join column)\n // we create a new subject here:\n if (!relatedEntitySubject) {\n relatedEntitySubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[\"Subject\"]({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n canBeUpdated: true,\n identifier: relationIdMap\n });\n _this.subjects.push(relatedEntitySubject);\n }\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n }\n // if related entity has relation id then we add it to the list of relation ids\n // this list will be used later to compare with database relation ids to find a difference\n // what exist in this array and does not exist in the database are newly inserted relations\n // what does not exist in this array, but exist in the database are removed relations\n // removed relations are set to null from inverse side of relation\n relatedPersistedEntityRelationIds.push(relationIdMap);\n });\n // find what related entities were added and what were removed based on difference between what we save and what database has\n _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_2__[\"EntityMetadata\"]\n .difference(relatedEntityDatabaseRelationIds, relatedPersistedEntityRelationIds)\n .forEach(function (removedRelatedEntityRelationId) {\n // todo: probably we can improve this in the future by finding entity with column those values,\n // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns\n // we create a new subject which operations will be executed in subject operation executor\n var removedRelatedEntitySubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[\"Subject\"]({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n identifier: removedRelatedEntityRelationId,\n });\n if (!relation.inverseRelation || relation.inverseRelation.orphanedRowAction === \"nullify\") {\n removedRelatedEntitySubject.canBeUpdated = true;\n removedRelatedEntitySubject.changeMaps = [{\n relation: relation.inverseRelation,\n value: null\n }];\n }\n else if (relation.inverseRelation.orphanedRowAction === \"delete\") {\n removedRelatedEntitySubject.mustBeRemoved = true;\n }\n _this.subjects.push(removedRelatedEntitySubject);\n });\n };\n return OneToManySubjectBuilder;\n}());\n\n\n//# sourceMappingURL=OneToManySubjectBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/subject-builder/OneToManySubjectBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js ***! - \*******************************************************************************************************/ -/*! exports provided: OneToOneInverseSideSubjectBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OneToOneInverseSideSubjectBuilder\", function() { return OneToOneInverseSideSubjectBuilder; });\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subject */ \"./node_modules/typeorm/browser/persistence/Subject.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n\n\n/**\n * Builds operations needs to be executed for one-to-one non-owner relations of the given subjects.\n *\n * by example: post contains one-to-one non-owner relation with category in the property called \"category\", e.g.\n * @OneToOne(type => Category, category => category.post) category: Category\n * If user sets a category into the post and saves post we need to bind them.\n * This operation requires updation of category table since its owner of the relation and contains a join column.\n *\n * note: this class shares lot of things with OneToManyUpdateBuilder, so when you change this class\n * make sure to reflect changes there as well.\n */\nvar OneToOneInverseSideSubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function OneToOneInverseSideSubjectBuilder(subjects) {\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds all required operations.\n */\n OneToOneInverseSideSubjectBuilder.prototype.build = function () {\n var _this = this;\n this.subjects.forEach(function (subject) {\n subject.metadata.oneToOneRelations.forEach(function (relation) {\n // we don't need owning relations, this operation is only for inverse side of one-to-one relations\n // skip relations for which persistence is disabled\n if (relation.isOwning || relation.persistenceEnabled === false)\n return;\n _this.buildForSubjectRelation(subject, relation);\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"category\" inside it here.\n */\n OneToOneInverseSideSubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) {\n // prepare objects (relation id map) for the database entity\n // note: subject.databaseEntity contains relation with loaded relation id only (id map)\n // by example: since subject is a post, we are expecting to get post's category saved in the database here,\n // particularly its relation id, e.g. category id stored in the database\n var relatedEntityDatabaseRelationId = undefined;\n if (subject.databaseEntity) // related entity in the database can exist only if this entity (post) is saved\n relatedEntityDatabaseRelationId = relation.getEntityValue(subject.databaseEntity);\n // get related entities of persisted entity\n // by example: get category from the passed to persist post entity\n var relatedEntity = relation.getEntityValue(subject.entity); // by example: relatedEntity is a category here\n if (relatedEntity === undefined) // if relation is undefined then nothing to update\n return;\n // if related entity is null then we need to check if there a bind in the database and unset it\n // if there is no bind in the entity then we don't need to do anything\n // by example: if post.category = null and category has this post in the database then we unset it\n if (relatedEntity === null) {\n // it makes sense to update database only there is a previously set value in the database\n if (relatedEntityDatabaseRelationId) {\n // todo: probably we can improve this in the future by finding entity with column those values,\n // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns\n // we create a new subject which operations will be executed in subject operation executor\n var removedRelatedEntitySubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[\"Subject\"]({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n canBeUpdated: true,\n identifier: relatedEntityDatabaseRelationId,\n changeMaps: [{\n relation: relation.inverseRelation,\n value: null\n }]\n });\n this.subjects.push(removedRelatedEntitySubject);\n }\n return;\n } // else means entity is bind in the database\n // extract only relation id from the related entities, since we only need it for comparision\n // by example: extract from category only relation id (category id, or let's say category title, depend on join column options)\n var relationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); // by example: relationIdMap is category.id map here, e.g. { id: ... }\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = this.subjects.find(function (operateSubject) {\n return !!operateSubject.entity && operateSubject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relationIdMap = relatedEntitySubject.identifier;\n // if relationIdMap is undefined then it means user binds object which is not saved in the database yet\n // by example: if post contains category which does not have id(s) yet (because its a new category)\n // it means its always newly inserted and relation update operation always must be created for it\n // it does not make sense to perform difference operation for it for both add and remove actions\n if (!relationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if related entity does not have a subject then it means user tries to bind entity which wasn't saved\n // in this persistence because he didn't pass this entity for save or he did not set cascades\n // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here\n // if (!relatedEntitySubject)\n // throw new Error(`One-to-one inverse relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entity which does not exist in the database yet, thus cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entity before binding it.`);\n if (!relatedEntitySubject)\n return;\n // okay, so related subject exist and its marked for insertion, then add a new change map\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is OneToOne owner relation inside Category\n // subject is Post needs to be inserted into Category\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n }\n // check if this binding really exist in the database\n // by example: find our post if its already bind to category in the database and its not equal to what user tries to set\n var areRelatedIdEqualWithDatabase = relatedEntityDatabaseRelationId && _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].compareIds(relationIdMap, relatedEntityDatabaseRelationId);\n // if they aren't equal it means its a new relation and we need to \"bind\" them\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n if (!areRelatedIdEqualWithDatabase) {\n // if there is no relatedEntitySubject then it means \"category\" wasn't persisted,\n // but since we are going to update \"category\" table (since its an owning side of relation with join column)\n // we create a new subject here:\n if (!relatedEntitySubject) {\n relatedEntitySubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[\"Subject\"]({\n metadata: relation.inverseEntityMetadata,\n canBeUpdated: true,\n identifier: relationIdMap\n });\n this.subjects.push(relatedEntitySubject);\n }\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n }\n };\n return OneToOneInverseSideSubjectBuilder;\n}());\n\n\n//# sourceMappingURL=OneToOneInverseSideSubjectBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/tree/ClosureSubjectExecutor.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/tree/ClosureSubjectExecutor.js ***! - \*********************************************************************************/ -/*! exports provided: ClosureSubjectExecutor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClosureSubjectExecutor\", function() { return ClosureSubjectExecutor; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _error_CannotAttachTreeChildrenEntityError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/CannotAttachTreeChildrenEntityError */ \"./node_modules/typeorm/browser/error/CannotAttachTreeChildrenEntityError.js\");\n\n\n/**\n * Executes subject operations for closure entities.\n */\nvar ClosureSubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ClosureSubjectExecutor(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Removes all children of the given subject's entity.\n\n async deleteChildrenOf(subject: Subject) {\n // const relationValue = subject.metadata.treeParentRelation.getEntityValue(subject.databaseEntity);\n // console.log(\"relationValue: \", relationValue);\n // this.queryRunner.manager\n // .createQueryBuilder()\n // .from(subject.metadata.closureJunctionTable.target, \"tree\")\n // .where(\"tree.\");\n }*/\n /**\n * Executes operations when subject is being inserted.\n */\n ClosureSubjectExecutor.prototype.insert = function (subject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var closureJunctionInsertMap, parent, escape_1, tableName, ancestorColumnNames, descendantColumnNames, firstQueryParameters_1, childEntityIdValues_1, childEntityIds1, whereCondition;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n closureJunctionInsertMap = {};\n subject.metadata.closureJunctionTable.ancestorColumns.forEach(function (column) {\n closureJunctionInsertMap[column.databaseName] = subject.identifier;\n });\n subject.metadata.closureJunctionTable.descendantColumns.forEach(function (column) {\n closureJunctionInsertMap[column.databaseName] = subject.identifier;\n });\n // insert values into the closure junction table\n return [4 /*yield*/, this.queryRunner\n .manager\n .createQueryBuilder()\n .insert()\n .into(subject.metadata.closureJunctionTable.tablePath)\n .values(closureJunctionInsertMap)\n .updateEntity(false)\n .callListeners(false)\n .execute()];\n case 1:\n // insert values into the closure junction table\n _a.sent();\n parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity);\n if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity;\n if (!parent) return [3 /*break*/, 3];\n escape_1 = function (alias) { return _this.queryRunner.connection.driver.escape(alias); };\n tableName = this.getTableName(subject.metadata.closureJunctionTable.tablePath);\n ancestorColumnNames = subject.metadata.closureJunctionTable.ancestorColumns.map(function (column) {\n return escape_1(column.databaseName);\n });\n descendantColumnNames = subject.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n return escape_1(column.databaseName);\n });\n firstQueryParameters_1 = [];\n childEntityIdValues_1 = subject.metadata.primaryColumns.map(function (column) { return column.getEntityValue(subject.insertedValueSet); });\n childEntityIds1 = subject.metadata.primaryColumns.map(function (column, index) {\n firstQueryParameters_1.push(childEntityIdValues_1[index]);\n return _this.queryRunner.connection.driver.createParameter(\"child_entity_\" + column.databaseName, firstQueryParameters_1.length - 1);\n });\n whereCondition = subject.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n var columnName = escape_1(column.databaseName);\n var parentId = column.referencedColumn.getEntityValue(parent);\n if (!parentId)\n throw new _error_CannotAttachTreeChildrenEntityError__WEBPACK_IMPORTED_MODULE_1__[\"CannotAttachTreeChildrenEntityError\"](subject.metadata.name);\n firstQueryParameters_1.push(parentId);\n var parameterName = _this.queryRunner.connection.driver.createParameter(\"parent_entity_\" + column.referencedColumn.databaseName, firstQueryParameters_1.length - 1);\n return columnName + \" = \" + parameterName;\n }).join(\", \");\n return [4 /*yield*/, this.queryRunner.query(\"INSERT INTO \" + tableName + \" (\" + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(ancestorColumnNames)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(descendantColumnNames)).join(\", \") + \") \" +\n (\"SELECT \" + ancestorColumnNames.join(\", \") + \", \" + childEntityIds1.join(\", \") + \" FROM \" + tableName + \" WHERE \" + whereCondition), firstQueryParameters_1)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom\n * schema name, otherwise returns escaped table name.\n */\n ClosureSubjectExecutor.prototype.getTableName = function (tablePath) {\n var _this = this;\n return tablePath.split(\".\")\n .map(function (i) {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n if (i === \"\")\n return i;\n return _this.queryRunner.connection.driver.escape(i);\n }).join(\".\");\n };\n return ClosureSubjectExecutor;\n}());\n\n\n//# sourceMappingURL=ClosureSubjectExecutor.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/tree/ClosureSubjectExecutor.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/tree/MaterializedPathSubjectExecutor.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/tree/MaterializedPathSubjectExecutor.js ***! - \******************************************************************************************/ -/*! exports provided: MaterializedPathSubjectExecutor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterializedPathSubjectExecutor\", function() { return MaterializedPathSubjectExecutor; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Executes subject operations for materialized-path tree entities.\n */\nvar MaterializedPathSubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function MaterializedPathSubjectExecutor(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes operations when subject is being inserted.\n */\n MaterializedPathSubjectExecutor.prototype.insert = function (subject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var parent, parentId, parentPath, insertedEntityId;\n var _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity);\n if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity;\n parentId = subject.metadata.getEntityIdMap(parent);\n parentPath = \"\";\n if (!parentId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(subject.metadata.targetName + \".\" + subject.metadata.materializedPathColumn.propertyPath, \"path\")\n .from(subject.metadata.target, subject.metadata.targetName)\n .whereInIds(parentId)\n .getRawOne()\n .then(function (result) { return result ? result[\"path\"] : undefined; })];\n case 1:\n parentPath = _b.sent();\n _b.label = 2;\n case 2:\n insertedEntityId = subject.metadata.treeParentRelation.joinColumns.map(function (joinColumn) {\n return joinColumn.referencedColumn.getEntityValue(subject.insertedValueSet);\n }).join(\"_\");\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set((_a = {},\n _a[subject.metadata.materializedPathColumn.propertyPath] = parentPath + insertedEntityId + \".\",\n _a))\n .where(subject.identifier)\n .execute()];\n case 3:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return MaterializedPathSubjectExecutor;\n}());\n\n\n//# sourceMappingURL=MaterializedPathSubjectExecutor.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/tree/MaterializedPathSubjectExecutor.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/persistence/tree/NestedSetSubjectExecutor.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/typeorm/browser/persistence/tree/NestedSetSubjectExecutor.js ***! - \***********************************************************************************/ -/*! exports provided: NestedSetSubjectExecutor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NestedSetSubjectExecutor\", function() { return NestedSetSubjectExecutor; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n\n\n/**\n * Executes subject operations for nested set tree entities.\n */\nvar NestedSetSubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function NestedSetSubjectExecutor(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes operations when subject is being inserted.\n */\n NestedSetSubjectExecutor.prototype.insert = function (subject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var escape, tableName, leftColumnName, rightColumnName, parent, parentId, parentNsRight;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n escape = function (alias) { return _this.queryRunner.connection.driver.escape(alias); };\n tableName = this.getTableName(subject.metadata.tablePath);\n leftColumnName = escape(subject.metadata.nestedSetLeftColumn.databaseName);\n rightColumnName = escape(subject.metadata.nestedSetRightColumn.databaseName);\n parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity);\n if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity;\n parentId = subject.metadata.getEntityIdMap(parent);\n parentNsRight = undefined;\n if (!parentId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(subject.metadata.targetName + \".\" + subject.metadata.nestedSetRightColumn.propertyPath, \"right\")\n .from(subject.metadata.target, subject.metadata.targetName)\n .whereInIds(parentId)\n .getRawOne()\n .then(function (result) {\n var value = result ? result[\"right\"] : undefined;\n // CockroachDB returns numeric types as string\n return typeof value === \"string\" ? parseInt(value) : value;\n })];\n case 1:\n parentNsRight = _a.sent();\n _a.label = 2;\n case 2:\n if (!(parentNsRight !== undefined)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.queryRunner.query(\"UPDATE \" + tableName + \" SET \" +\n (leftColumnName + \" = CASE WHEN \" + leftColumnName + \" > \" + parentNsRight + \" THEN \" + leftColumnName + \" + 2 ELSE \" + leftColumnName + \" END,\") +\n (rightColumnName + \" = \" + rightColumnName + \" + 2 \") +\n (\"WHERE \" + rightColumnName + \" >= \" + parentNsRight))];\n case 3:\n _a.sent();\n _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(subject.insertedValueSet, subject.metadata.nestedSetLeftColumn.createValueMap(parentNsRight), subject.metadata.nestedSetRightColumn.createValueMap(parentNsRight + 1));\n return [3 /*break*/, 5];\n case 4:\n _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(subject.insertedValueSet, subject.metadata.nestedSetLeftColumn.createValueMap(1), subject.metadata.nestedSetRightColumn.createValueMap(2));\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom\n * schema name, otherwise returns escaped table name.\n */\n NestedSetSubjectExecutor.prototype.getTableName = function (tablePath) {\n var _this = this;\n return tablePath.split(\".\")\n .map(function (i) {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n if (i === \"\")\n return i;\n return _this.queryRunner.connection.driver.escape(i);\n }).join(\".\");\n };\n return NestedSetSubjectExecutor;\n}());\n\n\n//# sourceMappingURL=NestedSetSubjectExecutor.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/persistence/tree/NestedSetSubjectExecutor.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/platform/BrowserConnectionOptionsReaderDummy.js": -/*!**************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/platform/BrowserConnectionOptionsReaderDummy.js ***! - \**************************************************************************************/ -/*! exports provided: ConnectionOptionsEnvReader, ConnectionOptionsXmlReader, ConnectionOptionsYmlReader, ConnectionOptionsReader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionOptionsEnvReader\", function() { return ConnectionOptionsEnvReader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionOptionsXmlReader\", function() { return ConnectionOptionsXmlReader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionOptionsYmlReader\", function() { return ConnectionOptionsYmlReader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectionOptionsReader\", function() { return ConnectionOptionsReader; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsEnvReader = /** @class */ (function () {\n function ConnectionOptionsEnvReader() {\n }\n ConnectionOptionsEnvReader.prototype.read = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsEnvReader;\n}());\n\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsXmlReader = /** @class */ (function () {\n function ConnectionOptionsXmlReader() {\n }\n ConnectionOptionsXmlReader.prototype.read = function (path) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsXmlReader;\n}());\n\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsYmlReader = /** @class */ (function () {\n function ConnectionOptionsYmlReader() {\n }\n ConnectionOptionsYmlReader.prototype.read = function (path) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsYmlReader;\n}());\n\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsReader = /** @class */ (function () {\n function ConnectionOptionsReader() {\n }\n ConnectionOptionsReader.prototype.all = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n ConnectionOptionsReader.prototype.get = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n ConnectionOptionsReader.prototype.has = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsReader;\n}());\n\n\n//# sourceMappingURL=BrowserConnectionOptionsReaderDummy.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/platform/BrowserConnectionOptionsReaderDummy.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/platform/BrowserDirectoryExportedClassesLoader.js": -/*!****************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/platform/BrowserDirectoryExportedClassesLoader.js ***! - \****************************************************************************************/ -/*! exports provided: importClassesFromDirectories, importJsonsFromDirectories */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importClassesFromDirectories\", function() { return importClassesFromDirectories; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importJsonsFromDirectories\", function() { return importJsonsFromDirectories; });\n/**\n * Dummy functions for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\n/**\n * Loads all exported classes from the given directory.\n */\nfunction importClassesFromDirectories(logger, directories, formats) {\n if (formats === void 0) { formats = [\".js\", \".cjs\", \".ts\"]; }\n return [];\n}\n/**\n * Loads all json files from the given directory.\n */\nfunction importJsonsFromDirectories(directories, format) {\n if (format === void 0) { format = \".json\"; }\n return [];\n}\n\n//# sourceMappingURL=BrowserDirectoryExportedClassesLoader.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/platform/BrowserDirectoryExportedClassesLoader.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js ***! - \******************************************************************************/ -/*! exports provided: MongoDriver, MongoQueryRunner, MongoEntityManager, MongoRepository, PostgresDriver, AuroraDataApiDriver, CockroachDriver, AuroraDataApiPostgresDriver, SqlServerDriver, SapDriver, MysqlDriver, OracleDriver, SqliteDriver, BetterSqlite3Driver */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MongoDriver\", function() { return MongoDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MongoQueryRunner\", function() { return MongoQueryRunner; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MongoEntityManager\", function() { return MongoEntityManager; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MongoRepository\", function() { return MongoRepository; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PostgresDriver\", function() { return PostgresDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AuroraDataApiDriver\", function() { return AuroraDataApiDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CockroachDriver\", function() { return CockroachDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AuroraDataApiPostgresDriver\", function() { return AuroraDataApiPostgresDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SqlServerDriver\", function() { return SqlServerDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SapDriver\", function() { return SapDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MysqlDriver\", function() { return MysqlDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OracleDriver\", function() { return OracleDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SqliteDriver\", function() { return SqliteDriver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BetterSqlite3Driver\", function() { return BetterSqlite3Driver; });\n/**\n * Dummy driver classes for replacement via `package.json` in browser builds.\n * Using those classes reduces the build size by one third.\n *\n * If we don't include those dummy classes (and just disable the driver import\n * with `false` in `package.json`) typeorm will throw an error on runtime and\n * during webpack builds even if those driver are not used.\n */\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoDriver = /** @class */ (function () {\n function MongoDriver() {\n }\n return MongoDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoQueryRunner = /** @class */ (function () {\n function MongoQueryRunner() {\n }\n return MongoQueryRunner;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoEntityManager = /** @class */ (function () {\n function MongoEntityManager() {\n }\n return MongoEntityManager;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoRepository = /** @class */ (function () {\n function MongoRepository() {\n }\n return MongoRepository;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar PostgresDriver = /** @class */ (function () {\n function PostgresDriver() {\n }\n return PostgresDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar AuroraDataApiDriver = /** @class */ (function () {\n function AuroraDataApiDriver() {\n }\n return AuroraDataApiDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar CockroachDriver = /** @class */ (function () {\n function CockroachDriver() {\n }\n return CockroachDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar AuroraDataApiPostgresDriver = /** @class */ (function () {\n function AuroraDataApiPostgresDriver() {\n }\n return AuroraDataApiPostgresDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar SqlServerDriver = /** @class */ (function () {\n function SqlServerDriver() {\n }\n return SqlServerDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar SapDriver = /** @class */ (function () {\n function SapDriver() {\n }\n return SapDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MysqlDriver = /** @class */ (function () {\n function MysqlDriver() {\n }\n return MysqlDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar OracleDriver = /** @class */ (function () {\n function OracleDriver() {\n }\n return OracleDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar SqliteDriver = /** @class */ (function () {\n function SqliteDriver() {\n }\n return SqliteDriver;\n}());\n\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar BetterSqlite3Driver = /** @class */ (function () {\n function BetterSqlite3Driver() {\n }\n return BetterSqlite3Driver;\n}());\n\n\n//# sourceMappingURL=BrowserDisabledDriversDummy.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/platform/BrowserFileLoggerDummy.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/platform/BrowserFileLoggerDummy.js ***! - \*************************************************************************/ -/*! exports provided: DummyLogger, FileLogger */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DummyLogger\", function() { return DummyLogger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FileLogger\", function() { return FileLogger; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger logs everything into ormlogs.log file.\n */\nvar DummyLogger = /** @class */ (function () {\n function DummyLogger() {\n }\n /**\n * Logs query and parameters used in it.\n */\n DummyLogger.prototype.logQuery = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs query that is failed.\n */\n DummyLogger.prototype.logQueryError = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs query that is slow.\n */\n DummyLogger.prototype.logQuerySlow = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs events from the schema build process.\n */\n DummyLogger.prototype.logSchemaBuild = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs events from the migrations run process.\n */\n DummyLogger.prototype.logMigration = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Perform logging using given logger, or by default to the console.\n * Log has its own level and message.\n */\n DummyLogger.prototype.log = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n return DummyLogger;\n}());\n\nvar FileLogger = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(FileLogger, _super);\n function FileLogger() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FileLogger;\n}(DummyLogger));\n\n\n//# sourceMappingURL=BrowserFileLoggerDummy.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/platform/BrowserFileLoggerDummy.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/platform/BrowserPlatformTools.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/platform/BrowserPlatformTools.js ***! - \***********************************************************************/ -/*! exports provided: PlatformTools, EventEmitter, Readable, Writable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlatformTools\", function() { return PlatformTools; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventEmitter\", function() { return EventEmitter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Readable\", function() { return Readable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Writable\", function() { return Writable; });\n/**\n * Browser's implementation of the platform-specific tools.\n *\n * This file gonna replace PlatformTools for browser environment.\n * For node.js environment this class is not getting packaged.\n * Don't use methods of this class in the code, use PlatformTools methods instead.\n */\nvar PlatformTools = /** @class */ (function () {\n function PlatformTools() {\n }\n /**\n * Gets global variable where global stuff can be stored.\n */\n PlatformTools.getGlobalVariable = function () {\n if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n // NativeScript uses global, not window\n return global;\n }\n };\n /**\n * Loads (\"require\"-s) given file or package.\n * This operation only supports on node platform\n */\n PlatformTools.load = function (name) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: require(\\\"\" + name + \"\\\").\");\n return \"\";\n };\n /**\n * Normalizes given path. Does \"path.normalize\".\n */\n PlatformTools.pathNormalize = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: path.normalize(\\\"\" + pathStr + \"\\\").\");\n return \"\";\n };\n /**\n * Gets file extension. Does \"path.extname\".\n */\n PlatformTools.pathExtname = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: path.extname(\\\"\" + pathStr + \"\\\").\");\n return \"\";\n };\n /**\n * Resolved given path. Does \"path.resolve\".\n */\n PlatformTools.pathResolve = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: path.resolve(\\\"\" + pathStr + \"\\\").\");\n return \"\";\n };\n /**\n * Synchronously checks if file exist. Does \"fs.existsSync\".\n */\n PlatformTools.fileExist = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.existsSync(\\\"\" + pathStr + \"\\\").\");\n return false;\n };\n PlatformTools.dotenv = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: dotenv.config({ path: \\\"\" + pathStr + \"\\\" }).\");\n };\n /**\n * Gets environment variable.\n */\n PlatformTools.getEnvVariable = function (name) {\n // if (this.type === \"browser\")\n // throw new Error(`This option/function is not supported in the browser environment. Failed operation: process.env[\"${name}\"].`);\n return undefined;\n };\n PlatformTools.readFileSync = function (filename) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.readFileSync(\\\"\" + filename + \"\\\").\");\n return null;\n };\n PlatformTools.appendFileSync = function (filename, data) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.appendFileSync(\\\"\" + filename + \"\\\").\");\n };\n PlatformTools.writeFile = function (path, data) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.writeFile(\\\"\" + path + \"\\\").\");\n return Promise.reject(null);\n };\n /**\n * Highlights sql string to be print in the console.\n */\n PlatformTools.highlightSql = function (sql) {\n return sql;\n };\n /**\n * Highlights json string to be print in the console.\n */\n PlatformTools.highlightJson = function (json) {\n return json;\n };\n /**\n * Logging functions needed by AdvancedConsoleLogger (but here without chalk)\n */\n PlatformTools.logInfo = function (prefix, info) {\n console.info(prefix + \" \", info);\n };\n PlatformTools.logError = function (prefix, error) {\n console.error(prefix + \" \", error);\n };\n PlatformTools.logWarn = function (prefix, warning) {\n console.warn(prefix + \" \", warning);\n };\n PlatformTools.log = function (message) {\n console.log(message);\n };\n PlatformTools.warn = function (message) {\n return message;\n };\n /**\n * Type of the currently running platform.\n */\n PlatformTools.type = \"browser\";\n return PlatformTools;\n}());\n\n/**\n * These classes are needed for stream operations or\n * in the mongodb driver. Both aren't supported in the browser.\n */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n }\n return EventEmitter;\n}());\n\nvar Readable = /** @class */ (function () {\n function Readable() {\n }\n return Readable;\n}());\n\nvar Writable = /** @class */ (function () {\n function Writable() {\n }\n return Writable;\n}());\n\nif (typeof window !== \"undefined\") {\n window.Buffer = __webpack_require__(/*! buffer/ */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer;\n}\n// NativeScript uses global, not window\nif (typeof global !== \"undefined\") {\n global.Buffer = __webpack_require__(/*! buffer/ */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer;\n}\n\n//# sourceMappingURL=BrowserPlatformTools.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/platform/BrowserPlatformTools.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/Alias.js": -/*!*************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/Alias.js ***! - \*************************************************************/ -/*! exports provided: Alias */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Alias\", function() { return Alias; });\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n\n/**\n */\nvar Alias = /** @class */ (function () {\n function Alias(alias) {\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_0__[\"ObjectUtils\"].assign(this, alias || {});\n }\n Object.defineProperty(Alias.prototype, \"target\", {\n get: function () {\n return this.metadata.target;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Alias.prototype, \"hasMetadata\", {\n get: function () {\n return !!this._metadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Alias.prototype, \"metadata\", {\n get: function () {\n if (!this._metadata)\n throw new Error(\"Cannot get entity metadata for the given alias \\\"\" + this.name + \"\\\"\");\n return this._metadata;\n },\n set: function (metadata) {\n this._metadata = metadata;\n },\n enumerable: false,\n configurable: true\n });\n return Alias;\n}());\n\n\n//# sourceMappingURL=Alias.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/Alias.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/Brackets.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/Brackets.js ***! - \****************************************************************/ -/*! exports provided: Brackets */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Brackets\", function() { return Brackets; });\n/**\n * Syntax sugar.\n * Allows to use brackets in WHERE expressions for better syntax.\n */\nvar Brackets = /** @class */ (function () {\n /**\n * Given WHERE query builder that will build a WHERE expression that will be taken into brackets.\n */\n function Brackets(whereFactory) {\n this.whereFactory = whereFactory;\n }\n return Brackets;\n}());\n\n\n//# sourceMappingURL=Brackets.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/Brackets.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/DeleteQueryBuilder.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/DeleteQueryBuilder.js ***! - \**************************************************************************/ -/*! exports provided: DeleteQueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DeleteQueryBuilder\", function() { return DeleteQueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/cockroachdb/CockroachDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./QueryBuilder */ \"./node_modules/typeorm/browser/query-builder/QueryBuilder.js\");\n/* harmony import */ var _result_DeleteResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./result/DeleteResult */ \"./node_modules/typeorm/browser/query-builder/result/DeleteResult.js\");\n/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/ReturningStatementNotSupportedError */ \"./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js\");\n/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../driver/sqljs/SqljsDriver */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar DeleteQueryBuilder = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(DeleteQueryBuilder, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function DeleteQueryBuilder(connectionOrQueryBuilder, queryRunner) {\n var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this;\n _this.expressionMap.aliasNamePrefixingEnabled = false;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n DeleteQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createDeleteExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n DeleteQueryBuilder.prototype.execute = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, sql, parameters, queryRunner, transactionStartedByUs, broadcastResult, deleteResult, result, driver, broadcastResult, error_1, rollbackError_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 11, 16, 21]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__[\"BroadcasterResult\"]();\n queryRunner.broadcaster.broadcastBeforeRemoveEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n deleteResult = new _result_DeleteResult__WEBPACK_IMPORTED_MODULE_3__[\"DeleteResult\"]();\n return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 6:\n result = _b.sent();\n driver = queryRunner.connection.driver;\n if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"]) {\n deleteResult.raw = result;\n deleteResult.affected = result.affectedRows;\n }\n else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n deleteResult.raw = result;\n deleteResult.affected = result.numberOfRecordsUpdated;\n }\n else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"] || driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] || driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"]) {\n deleteResult.raw = result[0] ? result[0] : null;\n // don't return 0 because it could confuse. null means that we did not receive this value\n deleteResult.affected = typeof result[1] === \"number\" ? result[1] : null;\n }\n else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) {\n deleteResult.affected = result;\n }\n else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"BetterSqlite3Driver\"]) { // only works for better-sqlite3\n deleteResult.raw = result;\n deleteResult.affected = result.changes;\n }\n else {\n deleteResult.raw = result;\n }\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 8];\n broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__[\"BroadcasterResult\"]();\n queryRunner.broadcaster.broadcastAfterRemoveEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 8];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8:\n if (!transactionStartedByUs) return [3 /*break*/, 10];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10: return [2 /*return*/, deleteResult];\n case 11:\n error_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 15];\n _b.label = 12;\n case 12:\n _b.trys.push([12, 14, , 15]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 13:\n _b.sent();\n return [3 /*break*/, 15];\n case 14:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 15];\n case 15: throw error_1;\n case 16:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 18];\n return [4 /*yield*/, queryRunner.release()];\n case 17:\n _b.sent();\n _b.label = 18;\n case 18:\n if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_5__[\"SqljsDriver\"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 20];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 19:\n _b.sent();\n _b.label = 20;\n case 20: return [7 /*endfinally*/];\n case 21: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n DeleteQueryBuilder.prototype.from = function (entityTarget, aliasName) {\n entityTarget = entityTarget instanceof _index__WEBPACK_IMPORTED_MODULE_7__[\"EntitySchema\"] ? entityTarget.options.name : entityTarget;\n var mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n DeleteQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n DeleteQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n DeleteQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n DeleteQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n DeleteQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n DeleteQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Optional returning/output clause.\n */\n DeleteQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n DeleteQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__[\"ReturningStatementNotSupportedError\"]();\n this.expressionMap.returning = returning;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates DELETE express used to perform query.\n */\n DeleteQueryBuilder.prototype.createDeleteExpression = function () {\n var tableName = this.getTableName(this.getMainTableName());\n var whereExpression = this.createWhereExpression();\n var returningExpression = this.createReturningExpression();\n if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"])) {\n return \"DELETE FROM \" + tableName + whereExpression + \" RETURNING \" + returningExpression;\n }\n else if (returningExpression !== \"\" && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n return \"DELETE FROM \" + tableName + \" OUTPUT \" + returningExpression + whereExpression;\n }\n else {\n return \"DELETE FROM \" + tableName + whereExpression;\n }\n };\n return DeleteQueryBuilder;\n}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[\"QueryBuilder\"]));\n\n\n//# sourceMappingURL=DeleteQueryBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/DeleteQueryBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/InsertQueryBuilder.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/InsertQueryBuilder.js ***! - \**************************************************************************/ -/*! exports provided: InsertQueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertQueryBuilder\", function() { return InsertQueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/cockroachdb/CockroachDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./QueryBuilder */ \"./node_modules/typeorm/browser/query-builder/QueryBuilder.js\");\n/* harmony import */ var _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/RandomGenerator */ \"./node_modules/typeorm/browser/util/RandomGenerator.js\");\n/* harmony import */ var _result_InsertResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./result/InsertResult */ \"./node_modules/typeorm/browser/query-builder/result/InsertResult.js\");\n/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/ReturningStatementNotSupportedError */ \"./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js\");\n/* harmony import */ var _error_InsertValuesMissingError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../error/InsertValuesMissingError */ \"./node_modules/typeorm/browser/error/InsertValuesMissingError.js\");\n/* harmony import */ var _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ReturningResultsEntityUpdator */ \"./node_modules/typeorm/browser/query-builder/ReturningResultsEntityUpdator.js\");\n/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../driver/sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../driver/sqljs/SqljsDriver */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n/* harmony import */ var _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../entity-schema/EntitySchema */ \"./node_modules/typeorm/browser/entity-schema/EntitySchema.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar InsertQueryBuilder = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(InsertQueryBuilder, _super);\n function InsertQueryBuilder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n InsertQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createInsertExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n InsertQueryBuilder.prototype.execute = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var valueSets, queryRunner, transactionStartedByUs, broadcastResult_1, declareSql, selectOutputSql, returningResultsEntityUpdator, _a, insertSql, parameters, insertResult, statements, _b, broadcastResult_2, error_1, rollbackError_1;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n valueSets = this.getValueSets();\n // console.timeEnd(\".value sets\");\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0)\n return [2 /*return*/, new _result_InsertResult__WEBPACK_IMPORTED_MODULE_4__[\"InsertResult\"]()];\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 13, 18, 23]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _c.sent();\n transactionStartedByUs = true;\n _c.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult_1 = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_10__[\"BroadcasterResult\"]();\n valueSets.forEach(function (valueSet) {\n queryRunner.broadcaster.broadcastBeforeInsertEvent(broadcastResult_1, _this.expressionMap.mainAlias.metadata, valueSet);\n });\n if (!(broadcastResult_1.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult_1.promises)];\n case 4:\n _c.sent();\n _c.label = 5;\n case 5:\n declareSql = null;\n selectOutputSql = null;\n returningResultsEntityUpdator = new _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_7__[\"ReturningResultsEntityUpdator\"](queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias.hasMetadata) {\n if (!(valueSets.length > 1 && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"])) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns();\n }\n if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", this.expressionMap.extraReturningColumns);\n selectOutputSql = \"SELECT * FROM @OutputTable\";\n }\n }\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), insertSql = _a[0], parameters = _a[1];\n insertResult = new _result_InsertResult__WEBPACK_IMPORTED_MODULE_4__[\"InsertResult\"]();\n statements = [declareSql, insertSql, selectOutputSql];\n _b = insertResult;\n return [4 /*yield*/, queryRunner.query(statements.filter(function (sql) { return sql != null; }).join(\";\\n\\n\"), parameters)];\n case 6:\n _b.raw = _c.sent();\n if (!(this.expressionMap.updateEntity === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 8];\n // console.time(\".updating entity\");\n return [4 /*yield*/, returningResultsEntityUpdator.insert(insertResult, valueSets)];\n case 7:\n // console.time(\".updating entity\");\n _c.sent();\n _c.label = 8;\n case 8:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult_2 = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_10__[\"BroadcasterResult\"]();\n valueSets.forEach(function (valueSet) {\n queryRunner.broadcaster.broadcastAfterInsertEvent(broadcastResult_2, _this.expressionMap.mainAlias.metadata, valueSet);\n });\n if (!(broadcastResult_2.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult_2.promises)];\n case 9:\n _c.sent();\n _c.label = 10;\n case 10:\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 11:\n _c.sent();\n _c.label = 12;\n case 12: \n // console.timeEnd(\".commit\");\n return [2 /*return*/, insertResult];\n case 13:\n error_1 = _c.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 17];\n _c.label = 14;\n case 14:\n _c.trys.push([14, 16, , 17]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 15:\n _c.sent();\n return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _c.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20];\n return [4 /*yield*/, queryRunner.release()];\n case 19:\n _c.sent();\n _c.label = 20;\n case 20:\n if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_9__[\"SqljsDriver\"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 22];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 21:\n _c.sent();\n _c.label = 22;\n case 22: return [7 /*endfinally*/];\n case 23: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Specifies INTO which entity's table insertion will be executed.\n */\n InsertQueryBuilder.prototype.into = function (entityTarget, columns) {\n entityTarget = entityTarget instanceof _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_11__[\"EntitySchema\"] ? entityTarget.options.name : entityTarget;\n var mainAlias = this.createFromAlias(entityTarget);\n this.expressionMap.setMainAlias(mainAlias);\n this.expressionMap.insertColumns = columns || [];\n return this;\n };\n /**\n * Values needs to be inserted into table.\n */\n InsertQueryBuilder.prototype.values = function (values) {\n this.expressionMap.valuesSet = values;\n return this;\n };\n /**\n * Optional returning/output clause.\n */\n InsertQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n InsertQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__[\"ReturningStatementNotSupportedError\"]();\n this.expressionMap.returning = returning;\n return this;\n };\n /**\n * Indicates if entity must be updated after insertion operations.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n InsertQueryBuilder.prototype.updateEntity = function (enabled) {\n this.expressionMap.updateEntity = enabled;\n return this;\n };\n /**\n * Adds additional ON CONFLICT statement supported in postgres and cockroach.\n */\n InsertQueryBuilder.prototype.onConflict = function (statement) {\n this.expressionMap.onConflict = statement;\n return this;\n };\n /**\n * Adds additional ignore statement supported in databases.\n */\n InsertQueryBuilder.prototype.orIgnore = function (statement) {\n if (statement === void 0) { statement = true; }\n this.expressionMap.onIgnore = statement;\n return this;\n };\n /**\n * Adds additional update statement supported in databases.\n */\n InsertQueryBuilder.prototype.orUpdate = function (statement) {\n var _this = this;\n this.expressionMap.onUpdate = {};\n if (statement && Array.isArray(statement.conflict_target))\n this.expressionMap.onUpdate.conflict = \" ( \" + statement.conflict_target.map(function (columnName) { return _this.escape(columnName); }).join(\", \") + \" ) \";\n if (statement && typeof statement.conflict_target === \"string\")\n this.expressionMap.onUpdate.conflict = \" ON CONSTRAINT \" + this.escape(statement.conflict_target) + \" \";\n if (statement && Array.isArray(statement.columns))\n this.expressionMap.onUpdate.columns = statement.columns.map(function (column) { return _this.escape(column) + \" = :\" + column; }).join(\", \");\n if (statement && Array.isArray(statement.overwrite)) {\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n this.expressionMap.onUpdate.overwrite = statement.overwrite.map(function (column) { return column + \" = VALUES(\" + column + \")\"; }).join(\", \");\n }\n else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] || this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[\"AbstractSqliteDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"]) {\n this.expressionMap.onUpdate.overwrite = statement.overwrite.map(function (column) { return _this.escape(column) + \" = EXCLUDED.\" + _this.escape(column); }).join(\", \");\n }\n }\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates INSERT express used to perform insert query.\n */\n InsertQueryBuilder.prototype.createInsertExpression = function () {\n var _this = this;\n var tableName = this.getTableName(this.getMainTableName());\n var valuesExpression = this.createValuesExpression(); // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important\n var returningExpression = (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] && this.getValueSets().length > 1) ? null : this.createReturningExpression(); // oracle doesnt support returning with multi-row insert\n var columnsExpression = this.createColumnNamesExpression();\n var query = \"INSERT \";\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n query += \"\" + (this.expressionMap.onIgnore ? \" IGNORE \" : \"\");\n }\n query += \"INTO \" + tableName;\n // add columns expression\n if (columnsExpression) {\n query += \"(\" + columnsExpression + \")\";\n }\n else {\n if (!valuesExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"])) // special syntax for mysql DEFAULT VALUES insertion\n query += \"()\";\n }\n // add OUTPUT expression\n if (returningExpression && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n query += \" OUTPUT \" + returningExpression;\n }\n // add VALUES expression\n if (valuesExpression) {\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] && this.getValueSets().length > 1) {\n query += \" \" + valuesExpression;\n }\n else {\n query += \" VALUES \" + valuesExpression;\n }\n }\n else {\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) { // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\";\n }\n else {\n query += \" DEFAULT VALUES\";\n }\n }\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] || this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[\"AbstractSqliteDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"]) {\n query += \"\" + (this.expressionMap.onIgnore ? \" ON CONFLICT DO NOTHING \" : \"\");\n query += \"\" + (this.expressionMap.onConflict ? \" ON CONFLICT \" + this.expressionMap.onConflict : \"\");\n if (this.expressionMap.onUpdate) {\n var _a = this.expressionMap.onUpdate, overwrite = _a.overwrite, columns = _a.columns, conflict = _a.conflict;\n query += \"\" + (columns ? \" ON CONFLICT \" + conflict + \" DO UPDATE SET \" + columns : \"\");\n query += \"\" + (overwrite ? \" ON CONFLICT \" + conflict + \" DO UPDATE SET \" + overwrite : \"\");\n }\n }\n else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n if (this.expressionMap.onUpdate) {\n var _b = this.expressionMap.onUpdate, overwrite = _b.overwrite, columns = _b.columns;\n query += \"\" + (columns ? \" ON DUPLICATE KEY UPDATE \" + columns : \"\");\n query += \"\" + (overwrite ? \" ON DUPLICATE KEY UPDATE \" + overwrite : \"\");\n }\n }\n // add RETURNING expression\n if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"])) {\n query += \" RETURNING \" + returningExpression;\n }\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]\n && this.expressionMap.mainAlias.hasMetadata\n && this.expressionMap.mainAlias.metadata.columns\n .filter(function (column) { return _this.expressionMap.insertColumns.length > 0 ? _this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert; })\n .some(function (column) { return _this.isOverridingAutoIncrementBehavior(column); })) {\n query = \"SET IDENTITY_INSERT \" + tableName + \" ON; \" + query + \"; SET IDENTITY_INSERT \" + tableName + \" OFF\";\n }\n return query;\n };\n /**\n * Gets list of columns where values must be inserted to.\n */\n InsertQueryBuilder.prototype.getInsertedColumns = function () {\n var _this = this;\n if (!this.expressionMap.mainAlias.hasMetadata)\n return [];\n return this.expressionMap.mainAlias.metadata.columns.filter(function (column) {\n // if user specified list of columns he wants to insert to, then we filter only them\n if (_this.expressionMap.insertColumns.length)\n return _this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1;\n // skip columns the user doesn't want included by default\n if (!column.isInsert) {\n return false;\n }\n // if user did not specified such list then return all columns except auto-increment one\n // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression\n if (column.isGenerated && column.generationStrategy === \"increment\"\n && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"])\n && !(_this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[\"AbstractSqliteDriver\"])\n && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"])\n && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"])\n && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"] && _this.isOverridingAutoIncrementBehavior(column)))\n return false;\n return true;\n });\n };\n /**\n * Creates a columns string where values must be inserted to for INSERT INTO expression.\n */\n InsertQueryBuilder.prototype.createColumnNamesExpression = function () {\n var _this = this;\n var columns = this.getInsertedColumns();\n if (columns.length > 0)\n return columns.map(function (column) { return _this.escape(column.databaseName); }).join(\", \");\n // in the case if there are no insert columns specified and table without metadata used\n // we get columns from the inserted value map, in the case if only one inserted map is specified\n if (!this.expressionMap.mainAlias.hasMetadata && !this.expressionMap.insertColumns.length) {\n var valueSets = this.getValueSets();\n if (valueSets.length === 1)\n return Object.keys(valueSets[0]).map(function (columnName) { return _this.escape(columnName); }).join(\", \");\n }\n // get a table name and all column database names\n return this.expressionMap.insertColumns.map(function (columnName) { return _this.escape(columnName); }).join(\", \");\n };\n /**\n * Creates list of values needs to be inserted in the VALUES expression.\n */\n InsertQueryBuilder.prototype.createValuesExpression = function () {\n var _this = this;\n var valueSets = this.getValueSets();\n var columns = this.getInsertedColumns();\n // if column metadatas are given then apply all necessary operations with values\n if (columns.length > 0) {\n var expression_1 = \"\";\n var parametersCount_1 = Object.keys(this.expressionMap.nativeParameters).length;\n valueSets.forEach(function (valueSet, valueSetIndex) {\n columns.forEach(function (column, columnIndex) {\n if (columnIndex === 0) {\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] && valueSets.length > 1) {\n expression_1 += \" SELECT \";\n }\n else {\n expression_1 += \"(\";\n }\n }\n var paramName = \"i\" + valueSetIndex + \"_\" + column.databaseName;\n // extract real value from the entity\n var value = column.getEntityValue(valueSet);\n // if column is relational and value is an object then get real referenced column value from this object\n // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 }\n // and we extract \"1\" from this object\n /*if (column.referencedColumn && value instanceof Object && !(value instanceof Function)) { // todo: check if we still need it since getEntityValue already has similar code\n value = column.referencedColumn.getEntityValue(value);\n }*/\n if (!(value instanceof Function)) {\n // make sure our value is normalized by a driver\n value = _this.connection.driver.preparePersistentValue(value, column);\n }\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\n expression_1 += \"1\";\n // } else if (column.isNestedSetLeft) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n //\n // } else if (column.isNestedSetRight) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n }\n else if (column.isDiscriminator) {\n _this.expressionMap.nativeParameters[\"discriminator_value_\" + parametersCount_1] = _this.expressionMap.mainAlias.metadata.discriminatorValue;\n expression_1 += _this.connection.driver.createParameter(\"discriminator_value_\" + parametersCount_1, parametersCount_1);\n parametersCount_1++;\n // return \"1\";\n // for create and update dates we insert current date\n // no, we don't do it because this constant is already in \"default\" value of the column\n // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example\n // } else if (column.isCreateDate || column.isUpdateDate) {\n // return \"CURRENT_TIMESTAMP\";\n // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion\n }\n else if (column.isGenerated && column.generationStrategy === \"uuid\" && !_this.connection.driver.isUUIDGenerationSupported() && value === undefined) {\n var paramName_1 = \"uuid_\" + column.databaseName + valueSetIndex;\n value = _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_3__[\"RandomGenerator\"].uuid4();\n _this.expressionMap.nativeParameters[paramName_1] = value;\n expression_1 += _this.connection.driver.createParameter(paramName_1, parametersCount_1);\n parametersCount_1++;\n // if value for this column was not provided then insert default value\n }\n else if (value === undefined) {\n if ((_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] && valueSets.length > 1) || _this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[\"AbstractSqliteDriver\"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (column.default !== undefined && column.default !== null) { // try to use default defined in the column\n expression_1 += _this.connection.driver.normalizeDefault(column);\n }\n else {\n expression_1 += \"NULL\"; // otherwise simply use NULL and pray if column is nullable\n }\n }\n else {\n expression_1 += \"DEFAULT\";\n }\n // support for SQL expressions in queries\n }\n else if (value instanceof Function) {\n expression_1 += value();\n // just any other regular value\n }\n else {\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"])\n value = _this.connection.driver.parametrizeValue(column, value);\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n _this.expressionMap.nativeParameters[paramName] = value;\n if ((_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n var useLegacy = _this.connection.driver.options.legacySpatialSupport;\n var geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression_1 += geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \", \" + column.srid + \")\";\n }\n else {\n expression_1 += geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \")\";\n }\n }\n else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression_1 += \"ST_SetSRID(ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \"), \" + column.srid + \")::\" + column.type;\n }\n else {\n expression_1 += \"ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \")::\" + column.type;\n }\n }\n else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression_1 += column.type + \"::STGeomFromText(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \", \" + (column.srid || \"0\") + \")\";\n }\n else {\n expression_1 += _this.connection.driver.createParameter(paramName, parametersCount_1);\n }\n parametersCount_1++;\n }\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] && valueSets.length > 1) {\n expression_1 += \" FROM DUAL \";\n }\n else {\n expression_1 += \")\";\n }\n }\n else {\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] && valueSets.length > 1) {\n expression_1 += \" FROM DUAL UNION ALL \";\n }\n else {\n expression_1 += \"), \";\n }\n }\n }\n else {\n expression_1 += \", \";\n }\n });\n });\n if (expression_1 === \"()\")\n return \"\";\n return expression_1;\n }\n else { // for tables without metadata\n // get values needs to be inserted\n var expression_2 = \"\";\n var parametersCount_2 = Object.keys(this.expressionMap.nativeParameters).length;\n valueSets.forEach(function (valueSet, insertionIndex) {\n var columns = Object.keys(valueSet);\n columns.forEach(function (columnName, columnIndex) {\n if (columnIndex === 0) {\n expression_2 += \"(\";\n }\n var paramName = \"i\" + insertionIndex + \"_\" + columnName;\n var value = valueSet[columnName];\n // support for SQL expressions in queries\n if (value instanceof Function) {\n expression_2 += value();\n // if value for this column was not provided then insert default value\n }\n else if (value === undefined) {\n if (_this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[\"AbstractSqliteDriver\"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n expression_2 += \"NULL\";\n }\n else {\n expression_2 += \"DEFAULT\";\n }\n // just any other regular value\n }\n else {\n _this.expressionMap.nativeParameters[paramName] = value;\n expression_2 += _this.connection.driver.createParameter(paramName, parametersCount_2);\n parametersCount_2++;\n }\n if (columnIndex === Object.keys(valueSet).length - 1) {\n if (insertionIndex === valueSets.length - 1) {\n expression_2 += \")\";\n }\n else {\n expression_2 += \"), \";\n }\n }\n else {\n expression_2 += \", \";\n }\n });\n });\n if (expression_2 === \"()\")\n return \"\";\n return expression_2;\n }\n };\n /**\n * Gets array of values need to be inserted into the target table.\n */\n InsertQueryBuilder.prototype.getValueSets = function () {\n if (Array.isArray(this.expressionMap.valuesSet))\n return this.expressionMap.valuesSet;\n if (this.expressionMap.valuesSet instanceof Object)\n return [this.expressionMap.valuesSet];\n throw new _error_InsertValuesMissingError__WEBPACK_IMPORTED_MODULE_6__[\"InsertValuesMissingError\"]();\n };\n /**\n * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n InsertQueryBuilder.prototype.isOverridingAutoIncrementBehavior = function (column) {\n return column.isPrimary\n && column.isGenerated\n && column.generationStrategy === \"increment\"\n && this.getValueSets().some(function (valueSet) {\n return column.getEntityValue(valueSet) !== undefined\n && column.getEntityValue(valueSet) !== null;\n });\n };\n return InsertQueryBuilder;\n}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[\"QueryBuilder\"]));\n\n\n//# sourceMappingURL=InsertQueryBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/InsertQueryBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/JoinAttribute.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/JoinAttribute.js ***! - \*********************************************************************/ -/*! exports provided: JoinAttribute */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JoinAttribute\", function() { return JoinAttribute; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueryBuilderUtils */ \"./node_modules/typeorm/browser/query-builder/QueryBuilderUtils.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n\n\n\n/**\n * Stores all join attributes which will be used to build a JOIN query.\n */\nvar JoinAttribute = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function JoinAttribute(connection, queryExpressionMap, joinAttribute) {\n this.connection = connection;\n this.queryExpressionMap = queryExpressionMap;\n this.isSelectedEvaluated = false;\n this.relationEvaluated = false;\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__[\"ObjectUtils\"].assign(this, joinAttribute || {});\n }\n Object.defineProperty(JoinAttribute.prototype, \"isMany\", {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n get: function () {\n if (this.isMappingMany !== undefined)\n return this.isMappingMany;\n if (this.relation)\n return this.relation.isManyToMany || this.relation.isOneToMany;\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"isSelected\", {\n /**\n * Indicates if this join is selected.\n */\n get: function () {\n var _this = this;\n if (!this.isSelectedEvaluated) {\n var getValue = function () {\n var e_1, _a;\n var _loop_1 = function (select) {\n if (select.selection === _this.alias.name)\n return { value: true };\n if (_this.metadata && !!_this.metadata.columns.find(function (column) { return select.selection === _this.alias.name + \".\" + column.propertyPath; }))\n return { value: true };\n };\n try {\n for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(_this.queryExpressionMap.selects), _c = _b.next(); !_c.done; _c = _b.next()) {\n var select = _c.value;\n var state_1 = _loop_1(select);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n };\n this.isSelectedCache = getValue();\n this.isSelectedEvaluated = true;\n }\n return this.isSelectedCache;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"tablePath\", {\n /**\n * Name of the table which we should join.\n */\n get: function () {\n return this.metadata ? this.metadata.tablePath : this.entityOrProperty;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"parentAlias\", {\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.entityOrProperty))\n return undefined;\n return this.entityOrProperty.substr(0, this.entityOrProperty.indexOf(\".\"));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"relationPropertyPath\", {\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.entityOrProperty))\n return undefined;\n return this.entityOrProperty.substr(this.entityOrProperty.indexOf(\".\") + 1);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"relation\", {\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n * Relation can be undefined if entityOrProperty is regular entity or custom table.\n */\n get: function () {\n var _this = this;\n if (!this.relationEvaluated) {\n var getValue = function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(_this.entityOrProperty))\n return undefined;\n var relationOwnerSelection = _this.queryExpressionMap.findAliasByName(_this.parentAlias);\n var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(_this.relationPropertyPath);\n if (relation) {\n return relation;\n }\n if (relationOwnerSelection.metadata.parentEntityMetadata) {\n relation = relationOwnerSelection.metadata.parentEntityMetadata.findRelationWithPropertyPath(_this.relationPropertyPath);\n if (relation) {\n return relation;\n }\n }\n throw new Error(\"Relation with property path \" + _this.relationPropertyPath + \" in entity was not found.\");\n };\n this.relationCache = getValue.bind(this)();\n this.relationEvaluated = true;\n }\n return this.relationCache;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"metadata\", {\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get: function () {\n // entityOrProperty is relation, e.g. \"post.category\"\n if (this.relation)\n return this.relation.inverseEntityMetadata;\n // entityOrProperty is Entity class\n if (this.connection.hasMetadata(this.entityOrProperty))\n return this.connection.getMetadata(this.entityOrProperty);\n return undefined;\n /*if (typeof this.entityOrProperty === \"string\") { // entityOrProperty is a custom table\n \n // first try to find entity with such name, this is needed when entity does not have a target class,\n // and its target is a string name (scenario when plain old javascript is used or entity schema is loaded from files)\n const metadata = this.connection.entityMetadatas.find(metadata => metadata.name === this.entityOrProperty);\n if (metadata)\n return metadata;\n \n // check if we have entity with such table name, and use its metadata if found\n return this.connection.entityMetadatas.find(metadata => metadata.tableName === this.entityOrProperty);\n }*/\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"junctionAlias\", {\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get: function () {\n if (!this.relation)\n throw new Error(\"Cannot get junction table for join without relation.\");\n return this.relation.isOwning ? this.parentAlias + \"_\" + this.alias.name : this.alias.name + \"_\" + this.parentAlias;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"mapToPropertyParentAlias\", {\n get: function () {\n if (!this.mapToProperty)\n return undefined;\n return this.mapToProperty.split(\".\")[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"mapToPropertyPropertyName\", {\n get: function () {\n if (!this.mapToProperty)\n return undefined;\n return this.mapToProperty.split(\".\")[1];\n },\n enumerable: false,\n configurable: true\n });\n return JoinAttribute;\n}());\n\n\n//# sourceMappingURL=JoinAttribute.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/JoinAttribute.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/QueryBuilder.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/QueryBuilder.js ***! - \********************************************************************/ -/*! exports provided: QueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryBuilder\", function() { return QueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _QueryExpressionMap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueryExpressionMap */ \"./node_modules/typeorm/browser/query-builder/QueryExpressionMap.js\");\n/* harmony import */ var _Brackets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Brackets */ \"./node_modules/typeorm/browser/query-builder/Brackets.js\");\n/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../metadata/EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../driver/sqljs/SqljsDriver */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js\");\n/* harmony import */ var _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../driver/postgres/PostgresDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../find-options/FindOperator */ \"./node_modules/typeorm/browser/find-options/FindOperator.js\");\n/* harmony import */ var _find_options_operator_In__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../find-options/operator/In */ \"./node_modules/typeorm/browser/find-options/operator/In.js\");\n/* harmony import */ var _error_EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../error/EntityColumnNotFound */ \"./node_modules/typeorm/browser/error/EntityColumnNotFound.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n// todo: completely cover query builder with tests\n// todo: entityOrProperty can be target name. implement proper behaviour if it is.\n// todo: check in persistment if id exist on object and throw exception (can be in partial selection?)\n// todo: fix problem with long aliases eg getMaxIdentifierLength\n// todo: fix replacing in .select(\"COUNT(post.id) AS cnt\") statement\n// todo: implement joinAlways in relations and relationId\n// todo: finish partial selection\n// todo: sugar methods like: .addCount and .selectCount, selectCountAndMap, selectSum, selectSumAndMap, ...\n// todo: implement @Select decorator\n// todo: add select and map functions\n// todo: implement relation/entity loading and setting them into properties within a separate query\n// .loadAndMap(\"post.categories\", \"post.categories\", qb => ...)\n// .loadAndMap(\"post.categories\", Category, qb => ...)\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar QueryBuilder = /** @class */ (function () {\n /**\n * QueryBuilder can be initialized from given Connection and QueryRunner objects or from given other QueryBuilder.\n */\n function QueryBuilder(connectionOrQueryBuilder, queryRunner) {\n if (connectionOrQueryBuilder instanceof QueryBuilder) {\n this.connection = connectionOrQueryBuilder.connection;\n this.queryRunner = connectionOrQueryBuilder.queryRunner;\n this.expressionMap = connectionOrQueryBuilder.expressionMap.clone();\n }\n else {\n this.connection = connectionOrQueryBuilder;\n this.queryRunner = queryRunner;\n this.expressionMap = new _QueryExpressionMap__WEBPACK_IMPORTED_MODULE_1__[\"QueryExpressionMap\"](this.connection);\n }\n }\n Object.defineProperty(QueryBuilder.prototype, \"alias\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Gets the main alias string used in this query builder.\n */\n get: function () {\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Main alias is not set\"); // todo: better exception\n return this.expressionMap.mainAlias.name;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Creates SELECT query and selects given data.\n * Replaces all previous selections if they exist.\n */\n QueryBuilder.prototype.select = function (selection, selectionAliasName) {\n this.expressionMap.queryType = \"select\";\n if (Array.isArray(selection)) {\n this.expressionMap.selects = selection.map(function (selection) { return ({ selection: selection }); });\n }\n else if (selection) {\n this.expressionMap.selects = [{ selection: selection, aliasName: selectionAliasName }];\n }\n // loading it dynamically because of circular issue\n var SelectQueryBuilderCls = __webpack_require__(/*! ./SelectQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js\").SelectQueryBuilder;\n if (this instanceof SelectQueryBuilderCls)\n return this;\n return new SelectQueryBuilderCls(this);\n };\n /**\n * Creates INSERT query.\n */\n QueryBuilder.prototype.insert = function () {\n this.expressionMap.queryType = \"insert\";\n // loading it dynamically because of circular issue\n var InsertQueryBuilderCls = __webpack_require__(/*! ./InsertQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/InsertQueryBuilder.js\").InsertQueryBuilder;\n if (this instanceof InsertQueryBuilderCls)\n return this;\n return new InsertQueryBuilderCls(this);\n };\n /**\n * Creates UPDATE query and applies given update values.\n */\n QueryBuilder.prototype.update = function (entityOrTableNameUpdateSet, maybeUpdateSet) {\n var updateSet = maybeUpdateSet ? maybeUpdateSet : entityOrTableNameUpdateSet;\n entityOrTableNameUpdateSet = entityOrTableNameUpdateSet instanceof ___WEBPACK_IMPORTED_MODULE_6__[\"EntitySchema\"] ? entityOrTableNameUpdateSet.options.name : entityOrTableNameUpdateSet;\n if (entityOrTableNameUpdateSet instanceof Function || typeof entityOrTableNameUpdateSet === \"string\") {\n var mainAlias = this.createFromAlias(entityOrTableNameUpdateSet);\n this.expressionMap.setMainAlias(mainAlias);\n }\n this.expressionMap.queryType = \"update\";\n this.expressionMap.valuesSet = updateSet;\n // loading it dynamically because of circular issue\n var UpdateQueryBuilderCls = __webpack_require__(/*! ./UpdateQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/UpdateQueryBuilder.js\").UpdateQueryBuilder;\n if (this instanceof UpdateQueryBuilderCls)\n return this;\n return new UpdateQueryBuilderCls(this);\n };\n /**\n * Creates DELETE query.\n */\n QueryBuilder.prototype.delete = function () {\n this.expressionMap.queryType = \"delete\";\n // loading it dynamically because of circular issue\n var DeleteQueryBuilderCls = __webpack_require__(/*! ./DeleteQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/DeleteQueryBuilder.js\").DeleteQueryBuilder;\n if (this instanceof DeleteQueryBuilderCls)\n return this;\n return new DeleteQueryBuilderCls(this);\n };\n QueryBuilder.prototype.softDelete = function () {\n this.expressionMap.queryType = \"soft-delete\";\n // loading it dynamically because of circular issue\n var SoftDeleteQueryBuilderCls = __webpack_require__(/*! ./SoftDeleteQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/SoftDeleteQueryBuilder.js\").SoftDeleteQueryBuilder;\n if (this instanceof SoftDeleteQueryBuilderCls)\n return this;\n return new SoftDeleteQueryBuilderCls(this);\n };\n QueryBuilder.prototype.restore = function () {\n this.expressionMap.queryType = \"restore\";\n // loading it dynamically because of circular issue\n var SoftDeleteQueryBuilderCls = __webpack_require__(/*! ./SoftDeleteQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/SoftDeleteQueryBuilder.js\").SoftDeleteQueryBuilder;\n if (this instanceof SoftDeleteQueryBuilderCls)\n return this;\n return new SoftDeleteQueryBuilderCls(this);\n };\n /**\n * Sets entity's relation with which this query builder gonna work.\n */\n QueryBuilder.prototype.relation = function (entityTargetOrPropertyPath, maybePropertyPath) {\n var entityTarget = arguments.length === 2 ? entityTargetOrPropertyPath : undefined;\n var propertyPath = arguments.length === 2 ? maybePropertyPath : entityTargetOrPropertyPath;\n this.expressionMap.queryType = \"relation\";\n this.expressionMap.relationPropertyPath = propertyPath;\n if (entityTarget) {\n var mainAlias = this.createFromAlias(entityTarget);\n this.expressionMap.setMainAlias(mainAlias);\n }\n // loading it dynamically because of circular issue\n var RelationQueryBuilderCls = __webpack_require__(/*! ./RelationQueryBuilder */ \"./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js\").RelationQueryBuilder;\n if (this instanceof RelationQueryBuilderCls)\n return this;\n return new RelationQueryBuilderCls(this);\n };\n /**\n * Checks if given relation or relations exist in the entity.\n * Returns true if relation exists, false otherwise.\n *\n * todo: move this method to manager? or create a shortcut?\n */\n QueryBuilder.prototype.hasRelation = function (target, relation) {\n var entityMetadata = this.connection.getMetadata(target);\n var relations = Array.isArray(relation) ? relation : [relation];\n return relations.every(function (relation) {\n return !!entityMetadata.findRelationWithPropertyPath(relation);\n });\n };\n /**\n * Sets parameter name and its value.\n */\n QueryBuilder.prototype.setParameter = function (key, value) {\n this.expressionMap.parameters[key] = value;\n return this;\n };\n /**\n * Adds all parameters from the given object.\n */\n QueryBuilder.prototype.setParameters = function (parameters) {\n var _this = this;\n // remove function parameters\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] instanceof Function) {\n throw new Error(\"Function parameter isn't supported in the parameters. Please check \\\"\" + key + \"\\\" parameter.\");\n }\n });\n // set parent query builder parameters as well in sub-query mode\n if (this.expressionMap.parentQueryBuilder)\n this.expressionMap.parentQueryBuilder.setParameters(parameters);\n Object.keys(parameters).forEach(function (key) { return _this.setParameter(key, parameters[key]); });\n return this;\n };\n /**\n * Adds native parameters from the given object.\n */\n QueryBuilder.prototype.setNativeParameters = function (parameters) {\n var _this = this;\n // set parent query builder parameters as well in sub-query mode\n if (this.expressionMap.parentQueryBuilder)\n this.expressionMap.parentQueryBuilder.setNativeParameters(parameters);\n Object.keys(parameters).forEach(function (key) {\n _this.expressionMap.nativeParameters[key] = parameters[key];\n });\n return this;\n };\n /**\n * Gets all parameters.\n */\n QueryBuilder.prototype.getParameters = function () {\n var parameters = Object.assign({}, this.expressionMap.parameters);\n // add discriminator column parameter if it exist\n if (this.expressionMap.mainAlias && this.expressionMap.mainAlias.hasMetadata) {\n var metadata = this.expressionMap.mainAlias.metadata;\n if (metadata.discriminatorColumn && metadata.parentEntityMetadata) {\n var values = metadata.childEntityMetadatas\n .filter(function (childMetadata) { return childMetadata.discriminatorColumn; })\n .map(function (childMetadata) { return childMetadata.discriminatorValue; });\n values.push(metadata.discriminatorValue);\n parameters[\"discriminatorColumnValues\"] = values;\n }\n }\n return parameters;\n };\n /**\n * Prints sql to stdout using console.log.\n */\n QueryBuilder.prototype.printSql = function () {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n this.connection.logger.logQuery(query, parameters);\n return this;\n };\n /**\n * Gets generated sql that will be executed.\n * Parameters in the query are escaped for the currently used driver.\n */\n QueryBuilder.prototype.getSql = function () {\n return this.getQueryAndParameters()[0];\n };\n /**\n * Gets query to be executed with all parameters used in it.\n */\n QueryBuilder.prototype.getQueryAndParameters = function () {\n // this execution order is important because getQuery method generates this.expressionMap.nativeParameters values\n var query = this.getQuery();\n var parameters = this.getParameters();\n return this.connection.driver.escapeQueryWithParameters(query, parameters, this.expressionMap.nativeParameters);\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n QueryBuilder.prototype.execute = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, sql, parameters, queryRunner;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryRunner = this.obtainQueryRunner();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 3, 8]);\n return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 2: return [2 /*return*/, _b.sent()]; // await is needed here because we are using finally\n case 3:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 5];\n return [4 /*yield*/, queryRunner.release()];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_4__[\"SqljsDriver\"])) return [3 /*break*/, 7];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 6:\n _b.sent();\n _b.label = 7;\n case 7: return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a completely new query builder.\n * Uses same query runner as current QueryBuilder.\n */\n QueryBuilder.prototype.createQueryBuilder = function () {\n return new this.constructor(this.connection, this.queryRunner);\n };\n /**\n * Clones query builder as it is.\n * Note: it uses new query runner, if you want query builder that uses exactly same query runner,\n * you can create query builder using its constructor, for example new SelectQueryBuilder(queryBuilder)\n * where queryBuilder is cloned QueryBuilder.\n */\n QueryBuilder.prototype.clone = function () {\n return new this.constructor(this);\n };\n /**\n * Includes a Query comment in the query builder. This is helpful for debugging purposes,\n * such as finding a specific query in the database server's logs, or for categorization using\n * an APM product.\n */\n QueryBuilder.prototype.comment = function (comment) {\n this.expressionMap.comment = comment;\n return this;\n };\n /**\n * Disables escaping.\n */\n QueryBuilder.prototype.disableEscaping = function () {\n this.expressionMap.disableEscaping = false;\n return this;\n };\n /**\n * Escapes table name, column name or alias name using current database's escaping character.\n */\n QueryBuilder.prototype.escape = function (name) {\n if (!this.expressionMap.disableEscaping)\n return name;\n return this.connection.driver.escape(name);\n };\n /**\n * Sets or overrides query builder's QueryRunner.\n */\n QueryBuilder.prototype.setQueryRunner = function (queryRunner) {\n this.queryRunner = queryRunner;\n return this;\n };\n /**\n * Indicates if listeners and subscribers must be called before and after query execution.\n * Enabled by default.\n */\n QueryBuilder.prototype.callListeners = function (enabled) {\n this.expressionMap.callListeners = enabled;\n return this;\n };\n /**\n * If set to true the query will be wrapped into a transaction.\n */\n QueryBuilder.prototype.useTransaction = function (enabled) {\n this.expressionMap.useTransaction = enabled;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Gets escaped table name with schema name if SqlServer driver used with custom\n * schema name, otherwise returns escaped table name.\n */\n QueryBuilder.prototype.getTableName = function (tablePath) {\n var _this = this;\n return tablePath.split(\".\")\n .map(function (i) {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n if (i === \"\")\n return i;\n return _this.escape(i);\n }).join(\".\");\n };\n /**\n * Gets name of the table where insert should be performed.\n */\n QueryBuilder.prototype.getMainTableName = function () {\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Entity where values should be inserted is not specified. Call \\\"qb.into(entity)\\\" method to specify it.\");\n if (this.expressionMap.mainAlias.hasMetadata)\n return this.expressionMap.mainAlias.metadata.tablePath;\n return this.expressionMap.mainAlias.tablePath;\n };\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n QueryBuilder.prototype.createFromAlias = function (entityTarget, aliasName) {\n // if table has a metadata then find it to properly escape its properties\n // const metadata = this.connection.entityMetadatas.find(metadata => metadata.tableName === tableName);\n if (this.connection.hasMetadata(entityTarget)) {\n var metadata = this.connection.getMetadata(entityTarget);\n return this.expressionMap.createAlias({\n type: \"from\",\n name: aliasName,\n metadata: this.connection.getMetadata(entityTarget),\n tablePath: metadata.tablePath\n });\n }\n else {\n if (typeof entityTarget === \"string\") {\n var isSubquery = entityTarget.substr(0, 1) === \"(\" && entityTarget.substr(-1) === \")\";\n return this.expressionMap.createAlias({\n type: \"from\",\n name: aliasName,\n tablePath: !isSubquery ? entityTarget : undefined,\n subQuery: isSubquery ? entityTarget : undefined,\n });\n }\n var subQueryBuilder = entityTarget(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n var subquery = subQueryBuilder.getQuery();\n return this.expressionMap.createAlias({\n type: \"from\",\n name: aliasName,\n subQuery: subquery\n });\n }\n };\n /**\n * Replaces all entity's propertyName to name in the given statement.\n */\n QueryBuilder.prototype.replacePropertyNames = function (statement) {\n var e_1, _a;\n var _this = this;\n // Escape special characters in regular expressions\n // Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n var escapeRegExp = function (s) { return s.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, \"\\\\$&\"); };\n var _loop_1 = function (alias) {\n var e_2, _d, e_3, _e, e_4, _f, e_5, _g, e_6, _h, e_7, _j;\n if (!alias.hasMetadata)\n return \"continue\";\n var replaceAliasNamePrefix = this_1.expressionMap.aliasNamePrefixingEnabled ? alias.name + \".\" : \"\";\n var replacementAliasNamePrefix = this_1.expressionMap.aliasNamePrefixingEnabled ? this_1.escape(alias.name) + \".\" : \"\";\n var replacements = {};\n try {\n // Insert & overwrite the replacements from least to most relevant in our replacements object.\n // To do this we iterate and overwrite in the order of relevance.\n // Least to Most Relevant:\n // * Relation Property Path to first join column key\n // * Relation Property Path + Column Path\n // * Column Database Name\n // * Column Propety Name\n // * Column Property Path\n for (var _k = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(alias.metadata.relations)), _l = _k.next(); !_l.done; _l = _k.next()) {\n var relation = _l.value;\n if (relation.joinColumns.length > 0)\n replacements[relation.propertyPath] = relation.joinColumns[0].databaseName;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_d = _k.return)) _d.call(_k);\n }\n finally { if (e_2) throw e_2.error; }\n }\n try {\n for (var _m = (e_3 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(alias.metadata.relations)), _o = _m.next(); !_o.done; _o = _m.next()) {\n var relation = _o.value;\n try {\n for (var _p = (e_4 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(relation.joinColumns)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(relation.inverseJoinColumns)))), _q = _p.next(); !_q.done; _q = _p.next()) {\n var joinColumn = _q.value;\n var propertyKey = relation.propertyPath + \".\" + joinColumn.referencedColumn.propertyPath;\n replacements[propertyKey] = joinColumn.databaseName;\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_q && !_q.done && (_f = _p.return)) _f.call(_p);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_e = _m.return)) _e.call(_m);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _r = (e_5 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(alias.metadata.columns)), _s = _r.next(); !_s.done; _s = _r.next()) {\n var column = _s.value;\n replacements[column.databaseName] = column.databaseName;\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_s && !_s.done && (_g = _r.return)) _g.call(_r);\n }\n finally { if (e_5) throw e_5.error; }\n }\n try {\n for (var _t = (e_6 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(alias.metadata.columns)), _u = _t.next(); !_u.done; _u = _t.next()) {\n var column = _u.value;\n replacements[column.propertyName] = column.databaseName;\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_u && !_u.done && (_h = _t.return)) _h.call(_t);\n }\n finally { if (e_6) throw e_6.error; }\n }\n try {\n for (var _v = (e_7 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(alias.metadata.columns)), _w = _v.next(); !_w.done; _w = _v.next()) {\n var column = _w.value;\n replacements[column.propertyPath] = column.databaseName;\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_w && !_w.done && (_j = _v.return)) _j.call(_v);\n }\n finally { if (e_7) throw e_7.error; }\n }\n var replacementKeys = Object.keys(replacements);\n if (replacementKeys.length) {\n statement = statement.replace(new RegExp(\n // Avoid a lookbehind here since it's not well supported\n \"([ =(]|^.{0})\" +\n (escapeRegExp(replaceAliasNamePrefix) + \"(\" + replacementKeys.map(escapeRegExp).join(\"|\") + \")\") +\n \"(?=[ =),]|.{0}$)\", \"gm\"), function (_, pre, p) {\n return \"\" + pre + replacementAliasNamePrefix + _this.escape(replacements[p]);\n });\n }\n };\n var this_1 = this;\n try {\n for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.expressionMap.aliases), _c = _b.next(); !_c.done; _c = _b.next()) {\n var alias = _c.value;\n _loop_1(alias);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return statement;\n };\n QueryBuilder.prototype.createComment = function () {\n if (!this.expressionMap.comment) {\n return \"\";\n }\n // ANSI SQL 2003 support C style comments - comments that start with `/*` and end with `*/`\n // In some dialects query nesting is available - but not all. Because of this, we'll need\n // to scrub \"ending\" characters from the SQL but otherwise we can leave everything else\n // as-is and it should be valid.\n return \"/* \" + this.expressionMap.comment.replace(\"*/\", \"\") + \" */ \";\n };\n /**\n * Creates \"WHERE\" expression.\n */\n QueryBuilder.prototype.createWhereExpression = function () {\n var conditionsArray = [];\n var whereExpression = this.createWhereExpressionString();\n whereExpression.trim() && conditionsArray.push(this.createWhereExpressionString());\n if (this.expressionMap.mainAlias.hasMetadata) {\n var metadata = this.expressionMap.mainAlias.metadata;\n // Adds the global condition of \"non-deleted\" for the entity with delete date columns in select query.\n if (this.expressionMap.queryType === \"select\" && !this.expressionMap.withDeleted && metadata.deleteDateColumn) {\n var column = this.expressionMap.aliasNamePrefixingEnabled\n ? this.expressionMap.mainAlias.name + \".\" + metadata.deleteDateColumn.propertyName\n : metadata.deleteDateColumn.propertyName;\n var condition = this.replacePropertyNames(column) + \" IS NULL\";\n conditionsArray.push(condition);\n }\n if (metadata.discriminatorColumn && metadata.parentEntityMetadata) {\n var column = this.expressionMap.aliasNamePrefixingEnabled\n ? this.expressionMap.mainAlias.name + \".\" + metadata.discriminatorColumn.databaseName\n : metadata.discriminatorColumn.databaseName;\n var condition = this.replacePropertyNames(column) + \" IN (:...discriminatorColumnValues)\";\n conditionsArray.push(condition);\n }\n }\n if (this.expressionMap.extraAppendedAndWhereCondition) {\n var condition = this.replacePropertyNames(this.expressionMap.extraAppendedAndWhereCondition);\n conditionsArray.push(condition);\n }\n if (!conditionsArray.length) {\n return \"\";\n }\n else if (conditionsArray.length === 1) {\n return \" WHERE \" + conditionsArray[0];\n }\n else {\n return \" WHERE ( \" + conditionsArray.join(\" ) AND ( \") + \" )\";\n }\n };\n /**\n * Creates \"RETURNING\" / \"OUTPUT\" expression.\n */\n QueryBuilder.prototype.createReturningExpression = function () {\n var _this = this;\n var columns = this.getReturningColumns();\n var driver = this.connection.driver;\n // also add columns we must auto-return to perform entity updation\n // if user gave his own returning\n if (typeof this.expressionMap.returning !== \"string\" &&\n this.expressionMap.extraReturningColumns.length > 0 &&\n driver.isReturningSqlSupported()) {\n columns.push.apply(columns, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.expressionMap.extraReturningColumns.filter(function (column) {\n return columns.indexOf(column) === -1;\n }))));\n }\n if (columns.length) {\n var columnsExpression = columns.map(function (column) {\n var name = _this.escape(column.databaseName);\n if (driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_5__[\"SqlServerDriver\"]) {\n if (_this.expressionMap.queryType === \"insert\" || _this.expressionMap.queryType === \"update\" || _this.expressionMap.queryType === \"soft-delete\" || _this.expressionMap.queryType === \"restore\") {\n return \"INSERTED.\" + name;\n }\n else {\n return _this.escape(_this.getMainTableName()) + \".\" + name;\n }\n }\n else {\n return name;\n }\n }).join(\", \");\n if (driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_5__[\"OracleDriver\"]) {\n columnsExpression += \" INTO \" + columns.map(function (column) {\n var parameterName = \"output_\" + column.databaseName;\n _this.expressionMap.nativeParameters[parameterName] = { type: driver.columnTypeToNativeParameter(column.type), dir: driver.oracle.BIND_OUT };\n return _this.connection.driver.createParameter(parameterName, Object.keys(_this.expressionMap.nativeParameters).length);\n }).join(\", \");\n }\n if (driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_5__[\"SqlServerDriver\"]) {\n if (this.expressionMap.queryType === \"insert\" || this.expressionMap.queryType === \"update\") {\n columnsExpression += \" INTO @OutputTable\";\n }\n }\n return columnsExpression;\n }\n else if (typeof this.expressionMap.returning === \"string\") {\n return this.expressionMap.returning;\n }\n return \"\";\n };\n /**\n * If returning / output cause is set to array of column names,\n * then this method will return all column metadatas of those column names.\n */\n QueryBuilder.prototype.getReturningColumns = function () {\n var _this = this;\n var columns = [];\n if (Array.isArray(this.expressionMap.returning)) {\n this.expressionMap.returning.forEach(function (columnName) {\n if (_this.expressionMap.mainAlias.hasMetadata) {\n columns.push.apply(columns, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_this.expressionMap.mainAlias.metadata.findColumnsWithPropertyPath(columnName))));\n }\n });\n }\n return columns;\n };\n /**\n * Concatenates all added where expressions into one string.\n */\n QueryBuilder.prototype.createWhereExpressionString = function () {\n var _this = this;\n return this.expressionMap.wheres.map(function (where, index) {\n switch (where.type) {\n case \"and\":\n return (index > 0 ? \"AND \" : \"\") + _this.replacePropertyNames(where.condition);\n case \"or\":\n return (index > 0 ? \"OR \" : \"\") + _this.replacePropertyNames(where.condition);\n default:\n return _this.replacePropertyNames(where.condition);\n }\n }).join(\" \");\n };\n /**\n * Creates \"WHERE\" expression and variables for the given \"ids\".\n */\n QueryBuilder.prototype.createWhereIdsExpression = function (ids) {\n var _a;\n var _this = this;\n var metadata = this.expressionMap.mainAlias.metadata;\n var normalized = (Array.isArray(ids) ? ids : [ids]).map(function (id) { return metadata.ensureEntityIdMap(id); });\n // using in(...ids) for single primary key entities\n if (!metadata.hasMultiplePrimaryKeys\n && metadata.embeddeds.length === 0) {\n var primaryColumn_1 = metadata.primaryColumns[0];\n // getEntityValue will try to transform `In`, it is a bug\n // todo: remove this transformer check after #2390 is fixed\n if (!primaryColumn_1.transformer) {\n return this.computeWhereParameter((_a = {},\n _a[primaryColumn_1.propertyName] = Object(_find_options_operator_In__WEBPACK_IMPORTED_MODULE_8__[\"In\"])(normalized.map(function (id) { return primaryColumn_1.getEntityValue(id, false); })),\n _a));\n }\n }\n // create shortcuts for better readability\n var alias = this.expressionMap.aliasNamePrefixingEnabled ? this.escape(this.expressionMap.mainAlias.name) + \".\" : \"\";\n var parameterIndex = Object.keys(this.expressionMap.nativeParameters).length;\n var whereStrings = normalized.map(function (id, index) {\n var whereSubStrings = [];\n metadata.primaryColumns.forEach(function (primaryColumn, secondIndex) {\n var parameterName = \"id_\" + index + \"_\" + secondIndex;\n // whereSubStrings.push(alias + this.escape(primaryColumn.databaseName) + \"=:id_\" + index + \"_\" + secondIndex);\n whereSubStrings.push(alias + _this.escape(primaryColumn.databaseName) + \" = \" + _this.connection.driver.createParameter(parameterName, parameterIndex));\n _this.expressionMap.nativeParameters[parameterName] = primaryColumn.getEntityValue(id, true);\n parameterIndex++;\n });\n return whereSubStrings.join(\" AND \");\n });\n return whereStrings.length > 1\n ? \"(\" + whereStrings.map(function (whereString) { return \"(\" + whereString + \")\"; }).join(\" OR \") + \")\"\n : whereStrings[0];\n };\n /**\n * Computes given where argument - transforms to a where string all forms it can take.\n */\n QueryBuilder.prototype.computeWhereParameter = function (where) {\n var _this = this;\n if (typeof where === \"string\")\n return where;\n if (where instanceof _Brackets__WEBPACK_IMPORTED_MODULE_2__[\"Brackets\"]) {\n var whereQueryBuilder = this.createQueryBuilder();\n whereQueryBuilder.expressionMap.mainAlias = this.expressionMap.mainAlias;\n whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = this.expressionMap.aliasNamePrefixingEnabled;\n whereQueryBuilder.expressionMap.nativeParameters = this.expressionMap.nativeParameters;\n where.whereFactory(whereQueryBuilder);\n var whereString = whereQueryBuilder.createWhereExpressionString();\n this.setParameters(whereQueryBuilder.getParameters());\n return whereString ? \"(\" + whereString + \")\" : \"\";\n }\n else if (where instanceof Function) {\n return where(this);\n }\n else if (where instanceof Object) {\n var wheres = Array.isArray(where) ? where : [where];\n var andConditions = void 0;\n var parameterIndex_1 = Object.keys(this.expressionMap.nativeParameters).length;\n if (this.expressionMap.mainAlias.hasMetadata) {\n andConditions = wheres.map(function (where, whereIndex) {\n var propertyPaths = _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__[\"EntityMetadata\"].createPropertyPath(_this.expressionMap.mainAlias.metadata, where);\n return propertyPaths.map(function (propertyPath, propertyIndex) {\n var columns = _this.expressionMap.mainAlias.metadata.findColumnsWithPropertyPath(propertyPath);\n if (!columns.length) {\n throw new _error_EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_9__[\"EntityColumnNotFound\"](propertyPath);\n }\n return columns.map(function (column, columnIndex) {\n var aliasPath = _this.expressionMap.aliasNamePrefixingEnabled ? _this.alias + \".\" + propertyPath : column.propertyPath;\n var parameterValue = column.getEntityValue(where, true);\n var parameterName = \"where_\" + whereIndex + \"_\" + propertyIndex + \"_\" + columnIndex;\n var parameterBaseCount = Object.keys(_this.expressionMap.nativeParameters).filter(function (x) { return x.startsWith(parameterName); }).length;\n if (parameterValue === null) {\n return aliasPath + \" IS NULL\";\n }\n else if (parameterValue instanceof _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_7__[\"FindOperator\"]) {\n var parameters_1 = [];\n if (parameterValue.useParameter) {\n if (parameterValue.objectLiteralParameters) {\n _this.setParameters(parameterValue.objectLiteralParameters);\n }\n else {\n var realParameterValues = parameterValue.multipleParameters ? parameterValue.value : [parameterValue.value];\n realParameterValues.forEach(function (realParameterValue, realParameterValueIndex) {\n _this.expressionMap.nativeParameters[parameterName + (parameterBaseCount + realParameterValueIndex)] = realParameterValue;\n parameterIndex_1++;\n parameters_1.push(_this.connection.driver.createParameter(parameterName + (parameterBaseCount + realParameterValueIndex), parameterIndex_1 - 1));\n });\n }\n }\n return _this.computeFindOperatorExpression(parameterValue, aliasPath, parameters_1);\n }\n else {\n _this.expressionMap.nativeParameters[parameterName] = parameterValue;\n parameterIndex_1++;\n var parameter = _this.connection.driver.createParameter(parameterName, parameterIndex_1 - 1);\n return aliasPath + \" = \" + parameter;\n }\n }).filter(function (expression) { return !!expression; }).join(\" AND \");\n }).filter(function (expression) { return !!expression; }).join(\" AND \");\n });\n }\n else {\n andConditions = wheres.map(function (where, whereIndex) {\n return Object.keys(where).map(function (key, parameterIndex) {\n var parameterValue = where[key];\n var aliasPath = _this.expressionMap.aliasNamePrefixingEnabled ? _this.alias + \".\" + key : key;\n if (parameterValue === null) {\n return aliasPath + \" IS NULL\";\n }\n else {\n var parameterName = \"where_\" + whereIndex + \"_\" + parameterIndex;\n _this.expressionMap.nativeParameters[parameterName] = parameterValue;\n parameterIndex++;\n return aliasPath + \" = \" + _this.connection.driver.createParameter(parameterName, parameterIndex - 1);\n }\n }).join(\" AND \");\n });\n }\n if (andConditions.length > 1)\n return andConditions.map(function (where) { return \"(\" + where + \")\"; }).join(\" OR \");\n return andConditions.join(\"\");\n }\n return \"\";\n };\n /**\n * Gets SQL needs to be inserted into final query.\n */\n QueryBuilder.prototype.computeFindOperatorExpression = function (operator, aliasPath, parameters) {\n var driver = this.connection.driver;\n switch (operator.type) {\n case \"not\":\n if (operator.child) {\n return \"NOT(\" + this.computeFindOperatorExpression(operator.child, aliasPath, parameters) + \")\";\n }\n else {\n return aliasPath + \" != \" + parameters[0];\n }\n case \"lessThan\":\n return aliasPath + \" < \" + parameters[0];\n case \"lessThanOrEqual\":\n return aliasPath + \" <= \" + parameters[0];\n case \"moreThan\":\n return aliasPath + \" > \" + parameters[0];\n case \"moreThanOrEqual\":\n return aliasPath + \" >= \" + parameters[0];\n case \"equal\":\n return aliasPath + \" = \" + parameters[0];\n case \"ilike\":\n if (driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_5__[\"PostgresDriver\"] || driver instanceof _driver_postgres_PostgresDriver__WEBPACK_IMPORTED_MODULE_5__[\"CockroachDriver\"]) {\n return aliasPath + \" ILIKE \" + parameters[0];\n }\n return \"UPPER(\" + aliasPath + \") LIKE UPPER(\" + parameters[0] + \")\";\n case \"like\":\n return aliasPath + \" LIKE \" + parameters[0];\n case \"between\":\n return aliasPath + \" BETWEEN \" + parameters[0] + \" AND \" + parameters[1];\n case \"in\":\n if (parameters.length === 0) {\n return \"0=1\";\n }\n return aliasPath + \" IN (\" + parameters.join(\", \") + \")\";\n case \"any\":\n return aliasPath + \" = ANY(\" + parameters[0] + \")\";\n case \"isNull\":\n return aliasPath + \" IS NULL\";\n case \"raw\":\n if (operator.getSql) {\n return operator.getSql(aliasPath);\n }\n else {\n return aliasPath + \" = \" + operator.value;\n }\n }\n throw new TypeError(\"Unsupported FindOperator \" + _find_options_FindOperator__WEBPACK_IMPORTED_MODULE_7__[\"FindOperator\"].constructor.name);\n };\n /**\n * Creates a query builder used to execute sql queries inside this query builder.\n */\n QueryBuilder.prototype.obtainQueryRunner = function () {\n return this.queryRunner || this.connection.createQueryRunner();\n };\n return QueryBuilder;\n}());\n\n\n//# sourceMappingURL=QueryBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/QueryBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/QueryBuilderUtils.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/QueryBuilderUtils.js ***! - \*************************************************************************/ -/*! exports provided: QueryBuilderUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryBuilderUtils\", function() { return QueryBuilderUtils; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Helper utility functions for QueryBuilder.\n */\nvar QueryBuilderUtils = /** @class */ (function () {\n function QueryBuilderUtils() {\n }\n /**\n * Checks if given value is a string representation of alias property,\n * e.g. \"post.category\" or \"post.id\".\n */\n QueryBuilderUtils.isAliasProperty = function (str) {\n // alias property must be a string and must have a dot separator\n if (typeof str !== \"string\" || str.indexOf(\".\") === -1)\n return false;\n // extra alias and its property relation\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(str.split(\".\"), 2), aliasName = _a[0], propertyName = _a[1]; // todo: what about relations in embedded?\n if (!aliasName || !propertyName)\n return false;\n // alias and property must be represented in a special format\n // const aliasNameRegexp = /^[a-zA-Z0-9_-]+$/;\n // if (!aliasNameRegexp.test(aliasName) || !aliasNameRegexp.test(propertyName))\n // return false;\n // make sure string is not a subquery\n if (str.indexOf(\"(\") !== -1 || str.indexOf(\")\") !== -1)\n return false;\n return true;\n };\n return QueryBuilderUtils;\n}());\n\n\n//# sourceMappingURL=QueryBuilderUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/QueryBuilderUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/QueryExpressionMap.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/QueryExpressionMap.js ***! - \**************************************************************************/ -/*! exports provided: QueryExpressionMap */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryExpressionMap\", function() { return QueryExpressionMap; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Alias__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Alias */ \"./node_modules/typeorm/browser/query-builder/Alias.js\");\n/* harmony import */ var _JoinAttribute__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./JoinAttribute */ \"./node_modules/typeorm/browser/query-builder/JoinAttribute.js\");\n/* harmony import */ var _relation_id_RelationIdAttribute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./relation-id/RelationIdAttribute */ \"./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js\");\n/* harmony import */ var _relation_count_RelationCountAttribute__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./relation-count/RelationCountAttribute */ \"./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js\");\n\n\n\n\n\n/**\n * Contains all properties of the QueryBuilder that needs to be build a final query.\n */\nvar QueryExpressionMap = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function QueryExpressionMap(connection) {\n this.connection = connection;\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates if QueryBuilder used to select entities and not a raw results.\n */\n this.queryEntity = false;\n /**\n * All aliases (including main alias) used in the query.\n */\n this.aliases = [];\n /**\n * Represents query type. QueryBuilder is able to build SELECT, UPDATE and DELETE queries.\n */\n this.queryType = \"select\";\n /**\n * Data needs to be SELECT-ed.\n */\n this.selects = [];\n /**\n * Whether SELECT is DISTINCT.\n */\n this.selectDistinct = false;\n /**\n * SELECT DISTINCT ON query (postgres).\n */\n this.selectDistinctOn = [];\n /**\n * Extra returning columns to be added to the returning statement if driver supports it.\n */\n this.extraReturningColumns = [];\n /**\n * Optional on conflict statement used in insertion query in postgres.\n */\n this.onConflict = \"\";\n /**\n * Optional on ignore statement used in insertion query in databases.\n */\n this.onIgnore = false;\n /**\n * JOIN queries.\n */\n this.joinAttributes = [];\n /**\n * RelationId queries.\n */\n this.relationIdAttributes = [];\n /**\n * Relation count queries.\n */\n this.relationCountAttributes = [];\n /**\n * WHERE queries.\n */\n this.wheres = [];\n /**\n * HAVING queries.\n */\n this.havings = [];\n /**\n * ORDER BY queries.\n */\n this.orderBys = {};\n /**\n * GROUP BY queries.\n */\n this.groupBys = [];\n /**\n * Indicates if soft-deleted rows should be included in entity result.\n * By default the soft-deleted rows are not included.\n */\n this.withDeleted = false;\n /**\n * Parameters used to be escaped in final query.\n */\n this.parameters = {};\n /**\n * Indicates if alias, table names and column names will be ecaped by driver, or not.\n *\n * todo: rename to isQuotingDisabled, also think if it should be named \"escaping\"\n */\n this.disableEscaping = true;\n /**\n * Indicates if virtual columns should be included in entity result.\n *\n * todo: what to do with it? is it properly used? what about persistence?\n */\n this.enableRelationIdValues = false;\n /**\n * Extra where condition appended to the end of original where conditions with AND keyword.\n * Original condition will be wrapped into brackets.\n */\n this.extraAppendedAndWhereCondition = \"\";\n /**\n * Indicates if query builder creates a subquery.\n */\n this.subQuery = false;\n /**\n * Indicates if property names are prefixed with alias names during property replacement.\n * By default this is enabled, however we need this because aliases are not supported in UPDATE and DELETE queries,\n * but user can use them in WHERE expressions.\n */\n this.aliasNamePrefixingEnabled = true;\n /**\n * Indicates if query result cache is enabled or not.\n */\n this.cache = false;\n /**\n * Options that define QueryBuilder behaviour.\n */\n this.options = [];\n /**\n * List of columns where data should be inserted.\n * Used in INSERT query.\n */\n this.insertColumns = [];\n /**\n * Used if user wants to update or delete a specific entities.\n */\n this.whereEntities = [];\n /**\n * Indicates if entity must be updated after insertion / updation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n */\n this.updateEntity = true;\n /**\n * Indicates if listeners and subscribers must be called before and after query execution.\n */\n this.callListeners = true;\n /**\n * Indicates if query must be wrapped into transaction.\n */\n this.useTransaction = false;\n /**\n * Extra parameters.\n * Used in InsertQueryBuilder to avoid default parameters mechanizm and execute high performance insertions.\n */\n this.nativeParameters = {};\n }\n Object.defineProperty(QueryExpressionMap.prototype, \"allOrderBys\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Get all ORDER BY queries - if order by is specified by user then it uses them,\n * otherwise it uses default entity order by if it was set.\n */\n get: function () {\n var _this = this;\n if (!Object.keys(this.orderBys).length && this.mainAlias.hasMetadata && this.options.indexOf(\"disable-global-order\") === -1) {\n var entityOrderBy_1 = this.mainAlias.metadata.orderBy || {};\n return Object.keys(entityOrderBy_1).reduce(function (orderBy, key) {\n orderBy[_this.mainAlias.name + \".\" + key] = entityOrderBy_1[key];\n return orderBy;\n }, {});\n }\n return this.orderBys;\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a main alias and adds it to the current expression map.\n */\n QueryExpressionMap.prototype.setMainAlias = function (alias) {\n // if main alias is already set then remove it from the array\n // if (this.mainAlias)\n // this.aliases.splice(this.aliases.indexOf(this.mainAlias));\n // set new main alias\n this.mainAlias = alias;\n return alias;\n };\n /**\n * Creates a new alias and adds it to the current expression map.\n */\n QueryExpressionMap.prototype.createAlias = function (options) {\n var aliasName = options.name;\n if (!aliasName && options.tablePath)\n aliasName = options.tablePath;\n if (!aliasName && options.target instanceof Function)\n aliasName = options.target.name;\n if (!aliasName && typeof options.target === \"string\")\n aliasName = options.target;\n var alias = new _Alias__WEBPACK_IMPORTED_MODULE_1__[\"Alias\"]();\n alias.type = options.type;\n if (aliasName)\n alias.name = aliasName;\n if (options.metadata)\n alias.metadata = options.metadata;\n if (options.target && !alias.hasMetadata)\n alias.metadata = this.connection.getMetadata(options.target);\n if (options.tablePath)\n alias.tablePath = options.tablePath;\n if (options.subQuery)\n alias.subQuery = options.subQuery;\n this.aliases.push(alias);\n return alias;\n };\n /**\n * Finds alias with the given name.\n * If alias was not found it throw an exception.\n */\n QueryExpressionMap.prototype.findAliasByName = function (aliasName) {\n var alias = this.aliases.find(function (alias) { return alias.name === aliasName; });\n if (!alias)\n throw new Error(\"\\\"\" + aliasName + \"\\\" alias was not found. Maybe you forgot to join it?\");\n return alias;\n };\n QueryExpressionMap.prototype.findColumnByAliasExpression = function (aliasExpression) {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(aliasExpression.split(\".\"), 2), aliasName = _a[0], propertyPath = _a[1];\n var alias = this.findAliasByName(aliasName);\n return alias.metadata.findColumnWithPropertyName(propertyPath);\n };\n Object.defineProperty(QueryExpressionMap.prototype, \"relationMetadata\", {\n /**\n * Gets relation metadata of the relation this query builder works with.\n *\n * todo: add proper exceptions\n */\n get: function () {\n if (!this.mainAlias)\n throw new Error(\"Entity to work with is not specified!\"); // todo: better message\n var relationMetadata = this.mainAlias.metadata.findRelationWithPropertyPath(this.relationPropertyPath);\n if (!relationMetadata)\n throw new Error(\"Relation \" + this.relationPropertyPath + \" was not found in entity \" + this.mainAlias.name); // todo: better message\n return relationMetadata;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Copies all properties of the current QueryExpressionMap into a new one.\n * Useful when QueryBuilder needs to create a copy of itself.\n */\n QueryExpressionMap.prototype.clone = function () {\n var _this = this;\n var map = new QueryExpressionMap(this.connection);\n map.queryType = this.queryType;\n map.selects = this.selects.map(function (select) { return select; });\n map.selectDistinct = this.selectDistinct;\n map.selectDistinctOn = this.selectDistinctOn;\n this.aliases.forEach(function (alias) { return map.aliases.push(new _Alias__WEBPACK_IMPORTED_MODULE_1__[\"Alias\"](alias)); });\n map.mainAlias = this.mainAlias;\n map.valuesSet = this.valuesSet;\n map.returning = this.returning;\n map.onConflict = this.onConflict;\n map.onIgnore = this.onIgnore;\n map.onUpdate = this.onUpdate;\n map.joinAttributes = this.joinAttributes.map(function (join) { return new _JoinAttribute__WEBPACK_IMPORTED_MODULE_2__[\"JoinAttribute\"](_this.connection, _this, join); });\n map.relationIdAttributes = this.relationIdAttributes.map(function (relationId) { return new _relation_id_RelationIdAttribute__WEBPACK_IMPORTED_MODULE_3__[\"RelationIdAttribute\"](_this, relationId); });\n map.relationCountAttributes = this.relationCountAttributes.map(function (relationCount) { return new _relation_count_RelationCountAttribute__WEBPACK_IMPORTED_MODULE_4__[\"RelationCountAttribute\"](_this, relationCount); });\n map.wheres = this.wheres.map(function (where) { return (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, where)); });\n map.havings = this.havings.map(function (having) { return (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, having)); });\n map.orderBys = Object.assign({}, this.orderBys);\n map.groupBys = this.groupBys.map(function (groupBy) { return groupBy; });\n map.limit = this.limit;\n map.offset = this.offset;\n map.skip = this.skip;\n map.take = this.take;\n map.lockMode = this.lockMode;\n map.lockVersion = this.lockVersion;\n map.lockTables = this.lockTables;\n map.withDeleted = this.withDeleted;\n map.parameters = Object.assign({}, this.parameters);\n map.disableEscaping = this.disableEscaping;\n map.enableRelationIdValues = this.enableRelationIdValues;\n map.extraAppendedAndWhereCondition = this.extraAppendedAndWhereCondition;\n map.subQuery = this.subQuery;\n map.aliasNamePrefixingEnabled = this.aliasNamePrefixingEnabled;\n map.cache = this.cache;\n map.cacheId = this.cacheId;\n map.cacheDuration = this.cacheDuration;\n map.relationPropertyPath = this.relationPropertyPath;\n map.of = this.of;\n map.insertColumns = this.insertColumns;\n map.whereEntities = this.whereEntities;\n map.updateEntity = this.updateEntity;\n map.callListeners = this.callListeners;\n map.useTransaction = this.useTransaction;\n map.nativeParameters = Object.assign({}, this.nativeParameters);\n map.comment = this.comment;\n return map;\n };\n return QueryExpressionMap;\n}());\n\n\n//# sourceMappingURL=QueryExpressionMap.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/QueryExpressionMap.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/RelationIdLoader.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/RelationIdLoader.js ***! - \************************************************************************/ -/*! exports provided: RelationIdLoader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationIdLoader\", function() { return RelationIdLoader; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _metadata_RelationMetadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../metadata/RelationMetadata */ \"./node_modules/typeorm/browser/metadata/RelationMetadata.js\");\n\n\n/**\n * Loads relation ids for the given entities.\n */\nvar RelationIdLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdLoader(connection) {\n this.connection = connection;\n }\n /**\n * Loads relation ids of the given entity or entities.\n */\n RelationIdLoader.prototype.load = function (relationOrTarget, relationNameOrEntities, entitiesOrRelatedEntities, maybeRelatedEntities) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var relation, entities, relatedEntities, entityMetadata;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n if (relationOrTarget instanceof _metadata_RelationMetadata__WEBPACK_IMPORTED_MODULE_1__[\"RelationMetadata\"]) {\n relation = relationOrTarget;\n entities = Array.isArray(relationNameOrEntities) ? relationNameOrEntities : [relationNameOrEntities];\n relatedEntities = Array.isArray(entitiesOrRelatedEntities) ? entitiesOrRelatedEntities : (entitiesOrRelatedEntities ? [entitiesOrRelatedEntities] : undefined);\n }\n else {\n entityMetadata = this.connection.getMetadata(relationOrTarget);\n relation = entityMetadata.findRelationWithPropertyPath(relationNameOrEntities);\n if (!relation)\n throw new Error(\"Relation \\\"\" + relation + \"\\\" was not found in \\\"\" + entityMetadata.name + \"\\\".\");\n entities = Array.isArray(entitiesOrRelatedEntities) ? entitiesOrRelatedEntities : [entitiesOrRelatedEntities];\n relatedEntities = Array.isArray(maybeRelatedEntities) ? maybeRelatedEntities : (maybeRelatedEntities ? [maybeRelatedEntities] : undefined);\n }\n // load relation ids depend of relation type\n if (relation.isManyToMany) {\n return [2 /*return*/, this.loadForManyToMany(relation, entities, relatedEntities)];\n }\n else if (relation.isManyToOne || relation.isOneToOneOwner) {\n return [2 /*return*/, this.loadForManyToOneAndOneToOneOwner(relation, entities, relatedEntities)];\n }\n else { // if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return [2 /*return*/, this.loadForOneToManyAndOneToOneNotOwner(relation, entities, relatedEntities)];\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Loads relation ids of the given entities and groups them into the object with parent and children.\n *\n * todo: extract this method?\n */\n RelationIdLoader.prototype.loadManyToManyRelationIdsAndGroup = function (relation, entitiesOrEntities, relatedEntityOrEntities) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var isMany, entities, relationIds, relatedEntities, columns, inverseColumns;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n isMany = relation.isManyToMany || relation.isOneToMany;\n entities = Array.isArray(entitiesOrEntities) ? entitiesOrEntities : [entitiesOrEntities];\n if (!!relatedEntityOrEntities) return [3 /*break*/, 2];\n return [4 /*yield*/, this.connection.relationLoader.load(relation, entitiesOrEntities)];\n case 1:\n relatedEntityOrEntities = _a.sent();\n if (!relatedEntityOrEntities.length)\n return [2 /*return*/, entities.map(function (entity) { return ({ entity: entity, related: isMany ? [] : undefined }); })];\n _a.label = 2;\n case 2: return [4 /*yield*/, this.load(relation, entitiesOrEntities, relatedEntityOrEntities)];\n case 3:\n relationIds = _a.sent();\n relatedEntities = Array.isArray(relatedEntityOrEntities) ? relatedEntityOrEntities : [relatedEntityOrEntities];\n if (relation.isManyToManyOwner) {\n columns = relation.junctionEntityMetadata.inverseColumns.map(function (column) { return column.referencedColumn; });\n inverseColumns = relation.junctionEntityMetadata.ownerColumns.map(function (column) { return column.referencedColumn; });\n }\n else if (relation.isManyToManyNotOwner) {\n columns = relation.junctionEntityMetadata.ownerColumns.map(function (column) { return column.referencedColumn; });\n inverseColumns = relation.junctionEntityMetadata.inverseColumns.map(function (column) { return column.referencedColumn; });\n }\n else if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns.map(function (column) { return column.referencedColumn; });\n inverseColumns = relation.entityMetadata.primaryColumns;\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation.entityMetadata.primaryColumns;\n inverseColumns = relation.inverseRelation.joinColumns.map(function (column) { return column.referencedColumn; });\n }\n else {\n }\n return [2 /*return*/, entities.map(function (entity) {\n var group = { entity: entity, related: isMany ? [] : undefined };\n relationIds.forEach(function (relationId) {\n var entityMatched = inverseColumns.every(function (column) {\n return column.getEntityValue(entity) === relationId[column.entityMetadata.name + \"_\" + column.propertyPath.replace(\".\", \"_\")];\n });\n if (entityMatched) {\n relatedEntities.forEach(function (relatedEntity) {\n var relatedEntityMatched = columns.every(function (column) {\n return column.getEntityValue(relatedEntity) === relationId[column.entityMetadata.name + \"_\" + relation.propertyPath.replace(\".\", \"_\") + \"_\" + column.propertyPath.replace(\".\", \"_\")];\n });\n if (relatedEntityMatched) {\n if (isMany) {\n group.related.push(relatedEntity);\n }\n else {\n group.related = relatedEntity;\n }\n }\n });\n }\n });\n return group;\n })];\n }\n });\n });\n };\n /**\n * Loads relation ids of the given entities and maps them into the given entity property.\n\n async loadManyToManyRelationIdsAndMap(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral|ObjectLiteral[],\n mapToEntityOrEntities: ObjectLiteral|ObjectLiteral[],\n propertyName: string\n ): Promise {\n\n const relationIds = await this.loadManyToManyRelationIds(relation, entityOrEntities, mapToEntityOrEntities);\n const mapToEntities = mapToEntityOrEntities instanceof Array ? mapToEntityOrEntities : [mapToEntityOrEntities];\n const junctionMetadata = relation.junctionEntityMetadata!;\n const mainAlias = junctionMetadata.name;\n const columns = relation.isOwning ? junctionMetadata.inverseColumns : junctionMetadata.ownerColumns;\n const inverseColumns = relation.isOwning ? junctionMetadata.ownerColumns : junctionMetadata.inverseColumns;\n\n mapToEntities.forEach(mapToEntity => {\n mapToEntity[propertyName] = [];\n relationIds.forEach(relationId => {\n const match = inverseColumns.every(column => {\n return column.referencedColumn!.getEntityValue(mapToEntity) === relationId[mainAlias + \"_\" + column.propertyName];\n });\n if (match) {\n if (columns.length === 1) {\n mapToEntity[propertyName].push(relationId[mainAlias + \"_\" + columns[0].propertyName]);\n\n } else {\n const value = {};\n columns.forEach(column => {\n column.referencedColumn!.setEntityValue(value, relationId[mainAlias + \"_\" + column.propertyName]);\n });\n mapToEntity[propertyName].push(value);\n }\n }\n });\n });\n }*/\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Loads relation ids for the many-to-many relation.\n */\n RelationIdLoader.prototype.loadForManyToMany = function (relation, entities, relatedEntities) {\n var junctionMetadata = relation.junctionEntityMetadata;\n var mainAlias = junctionMetadata.name;\n var columns = relation.isOwning ? junctionMetadata.ownerColumns : junctionMetadata.inverseColumns;\n var inverseColumns = relation.isOwning ? junctionMetadata.inverseColumns : junctionMetadata.ownerColumns;\n var qb = this.connection.createQueryBuilder();\n // select all columns from junction table\n junctionMetadata.ownerColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n junctionMetadata.inverseColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + relation.propertyPath.replace(\".\", \"_\") + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n // add conditions for the given entities\n var condition1 = \"\";\n if (columns.length === 1) {\n qb.setParameter(\"values1\", entities.map(function (entity) { return columns[0].referencedColumn.getEntityValue(entity); }));\n condition1 = mainAlias + \".\" + columns[0].propertyPath + \" IN (:...values1)\"; // todo: use ANY for postgres\n }\n else {\n condition1 = \"(\" + entities.map(function (entity, entityIndex) {\n return columns.map(function (column) {\n var paramName = \"entity1_\" + entityIndex + \"_\" + column.propertyName;\n qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity));\n return mainAlias + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \") + \")\";\n }\n // add conditions for the given inverse entities\n var condition2 = \"\";\n if (relatedEntities) {\n if (inverseColumns.length === 1) {\n qb.setParameter(\"values2\", relatedEntities.map(function (entity) { return inverseColumns[0].referencedColumn.getEntityValue(entity); }));\n condition2 = mainAlias + \".\" + inverseColumns[0].propertyPath + \" IN (:...values2)\"; // todo: use ANY for postgres\n }\n else {\n condition2 = \"(\" + relatedEntities.map(function (entity, entityIndex) {\n return inverseColumns.map(function (column) {\n var paramName = \"entity2_\" + entityIndex + \"_\" + column.propertyName;\n qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity));\n return mainAlias + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \") + \")\";\n }\n }\n // execute query\n return qb\n .from(junctionMetadata.target, mainAlias)\n .where(condition1 + (condition2 ? \" AND \" + condition2 : \"\"))\n .getRawMany();\n };\n /**\n * Loads relation ids for the many-to-one and one-to-one owner relations.\n */\n RelationIdLoader.prototype.loadForManyToOneAndOneToOneOwner = function (relation, entities, relatedEntities) {\n var mainAlias = relation.entityMetadata.targetName;\n // select all columns we need\n var qb = this.connection.createQueryBuilder();\n relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n var columnName = primaryColumn.entityMetadata.name + \"_\" + primaryColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + primaryColumn.propertyPath, columnName);\n });\n relation.joinColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + relation.propertyPath.replace(\".\", \"_\") + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n // add condition for entities\n var condition = \"\";\n if (relation.entityMetadata.primaryColumns.length === 1) {\n qb.setParameter(\"values\", entities.map(function (entity) { return relation.entityMetadata.primaryColumns[0].getEntityValue(entity); }));\n condition = mainAlias + \".\" + relation.entityMetadata.primaryColumns[0].propertyPath + \" IN (:...values)\";\n }\n else {\n condition = entities.map(function (entity, entityIndex) {\n return relation.entityMetadata.primaryColumns.map(function (column, columnIndex) {\n var paramName = \"entity\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return mainAlias + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n }\n // execute query\n return qb.from(relation.entityMetadata.target, mainAlias)\n .where(condition)\n .getRawMany();\n };\n /**\n * Loads relation ids for the one-to-many and one-to-one not owner relations.\n */\n RelationIdLoader.prototype.loadForOneToManyAndOneToOneNotOwner = function (relation, entities, relatedEntities) {\n relation = relation.inverseRelation;\n var mainAlias = relation.entityMetadata.targetName;\n // select all columns we need\n var qb = this.connection.createQueryBuilder();\n relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n var columnName = primaryColumn.entityMetadata.name + \"_\" + relation.inverseRelation.propertyPath.replace(\".\", \"_\") + \"_\" + primaryColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + primaryColumn.propertyPath, columnName);\n });\n relation.joinColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n // add condition for entities\n var condition = \"\";\n if (relation.joinColumns.length === 1) {\n qb.setParameter(\"values\", entities.map(function (entity) { return relation.joinColumns[0].referencedColumn.getEntityValue(entity); }));\n condition = mainAlias + \".\" + relation.joinColumns[0].propertyPath + \" IN (:...values)\";\n }\n else {\n condition = entities.map(function (entity, entityIndex) {\n return relation.joinColumns.map(function (joinColumn, joinColumnIndex) {\n var paramName = \"entity\" + entityIndex + \"_\" + joinColumnIndex;\n qb.setParameter(paramName, joinColumn.referencedColumn.getEntityValue(entity));\n return mainAlias + \".\" + joinColumn.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n }\n // execute query\n return qb.from(relation.entityMetadata.target, mainAlias)\n .where(condition)\n .getRawMany();\n };\n return RelationIdLoader;\n}());\n\n\n//# sourceMappingURL=RelationIdLoader.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/RelationIdLoader.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/RelationLoader.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/RelationLoader.js ***! - \**********************************************************************/ -/*! exports provided: RelationLoader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationLoader\", function() { return RelationLoader; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Wraps entities and creates getters/setters for their relations\n * to be able to lazily load relations when accessing these relations.\n */\nvar RelationLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationLoader(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Loads relation data for the given entity and its relation.\n */\n RelationLoader.prototype.load = function (relation, entityOrEntities, queryRunner) {\n if (queryRunner && queryRunner.isReleased)\n queryRunner = undefined; // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner);\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(relation, entityOrEntities, queryRunner);\n }\n else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(relation, entityOrEntities, queryRunner);\n }\n else { // many-to-many non owner\n return this.loadManyToManyNotOwner(relation, entityOrEntities, queryRunner);\n }\n };\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n * example: SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n */\n RelationLoader.prototype.loadManyToOneOrOneToOneOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var columns = relation.entityMetadata.primaryColumns;\n var joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation.joinColumns;\n var conditions = joinColumns.map(function (joinColumn) {\n return relation.entityMetadata.name + \".\" + joinColumn.propertyName + \" = \" + relation.propertyName + \".\" + joinColumn.referencedColumn.propertyName;\n }).join(\" AND \");\n var joinAliasName = relation.entityMetadata.name;\n var qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName) // category\n .from(relation.type, relation.propertyName) // Category, category\n .innerJoin(relation.entityMetadata.target, joinAliasName, conditions);\n if (columns.length === 1) {\n qb.where(joinAliasName + \".\" + columns[0].propertyPath + \" IN (:...\" + (joinAliasName + \"_\" + columns[0].propertyName) + \")\");\n qb.setParameter(joinAliasName + \"_\" + columns[0].propertyName, entities.map(function (entity) { return columns[0].getEntityValue(entity); }));\n }\n else {\n var condition = entities.map(function (entity, entityIndex) {\n return columns.map(function (column, columnIndex) {\n var paramName = joinAliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return joinAliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n qb.where(condition);\n }\n return qb.getMany();\n // return qb.getOne(); todo: fix all usages\n };\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n */\n RelationLoader.prototype.loadOneToManyOrOneToOneNotOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var aliasName = relation.propertyName;\n var columns = relation.inverseRelation.joinColumns;\n var qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(aliasName)\n .from(relation.inverseRelation.entityMetadata.target, aliasName);\n if (columns.length === 1) {\n qb.where(aliasName + \".\" + columns[0].propertyPath + \" IN (:...\" + (aliasName + \"_\" + columns[0].propertyName) + \")\");\n qb.setParameter(aliasName + \"_\" + columns[0].propertyName, entities.map(function (entity) { return columns[0].referencedColumn.getEntityValue(entity); }));\n }\n else {\n var condition = entities.map(function (entity, entityIndex) {\n return columns.map(function (column, columnIndex) {\n var paramName = aliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity));\n return aliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n qb.where(condition);\n }\n return qb.getMany();\n // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages\n };\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n */\n RelationLoader.prototype.loadManyToManyOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var mainAlias = relation.propertyName;\n var joinAlias = relation.junctionEntityMetadata.tableName;\n var joinColumnConditions = relation.joinColumns.map(function (joinColumn) {\n return joinAlias + \".\" + joinColumn.propertyName + \" IN (:...\" + joinColumn.propertyName + \")\";\n });\n var inverseJoinColumnConditions = relation.inverseJoinColumns.map(function (inverseJoinColumn) {\n return joinAlias + \".\" + inverseJoinColumn.propertyName + \"=\" + mainAlias + \".\" + inverseJoinColumn.referencedColumn.propertyName;\n });\n var parameters = relation.joinColumns.reduce(function (parameters, joinColumn) {\n parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); });\n return parameters;\n }, {});\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(joinColumnConditions)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(inverseJoinColumnConditions)).join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n };\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n */\n RelationLoader.prototype.loadManyToManyNotOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var mainAlias = relation.propertyName;\n var joinAlias = relation.junctionEntityMetadata.tableName;\n var joinColumnConditions = relation.inverseRelation.joinColumns.map(function (joinColumn) {\n return joinAlias + \".\" + joinColumn.propertyName + \" = \" + mainAlias + \".\" + joinColumn.referencedColumn.propertyName;\n });\n var inverseJoinColumnConditions = relation.inverseRelation.inverseJoinColumns.map(function (inverseJoinColumn) {\n return joinAlias + \".\" + inverseJoinColumn.propertyName + \" IN (:...\" + inverseJoinColumn.propertyName + \")\";\n });\n var parameters = relation.inverseRelation.inverseJoinColumns.reduce(function (parameters, joinColumn) {\n parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); });\n return parameters;\n }, {});\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(joinColumnConditions)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(inverseJoinColumnConditions)).join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n };\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n */\n RelationLoader.prototype.enableLazyLoad = function (relation, entity, queryRunner) {\n var relationLoader = this;\n var dataIndex = \"__\" + relation.propertyName + \"__\"; // in what property of the entity loaded data will be stored\n var promiseIndex = \"__promise_\" + relation.propertyName + \"__\"; // in what property of the entity loading promise will be stored\n var resolveIndex = \"__has_\" + relation.propertyName + \"__\"; // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n var setData = function (entity, value) {\n entity[dataIndex] = value;\n entity[resolveIndex] = true;\n delete entity[promiseIndex];\n return value;\n };\n var setPromise = function (entity, value) {\n delete entity[resolveIndex];\n delete entity[dataIndex];\n entity[promiseIndex] = value;\n value.then(\n // ensure different value is not assigned yet\n function (result) { return entity[promiseIndex] === value ? setData(entity, result) : result; });\n return value;\n };\n Object.defineProperty(entity, relation.propertyName, {\n get: function () {\n if (this[resolveIndex] === true || this[dataIndex] !== undefined) // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex]);\n if (this[promiseIndex]) // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex];\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n var loader = relationLoader.load(relation, this, queryRunner).then(function (result) { return relation.isOneToOne || relation.isManyToOne ? (result.length === 0 ? null : result[0]) : result; });\n return setPromise(this, loader);\n },\n set: function (value) {\n if (value instanceof Promise) { // if set data is a promise then wait for its resolve and save in the object\n setPromise(this, value);\n }\n else { // if its direct data set (non promise, probably not safe-typed)\n setData(this, value);\n }\n },\n configurable: true\n });\n };\n return RelationLoader;\n}());\n\n\n//# sourceMappingURL=RelationLoader.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/RelationLoader.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js": -/*!****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js ***! - \****************************************************************************/ -/*! exports provided: RelationQueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationQueryBuilder\", function() { return RelationQueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueryBuilder */ \"./node_modules/typeorm/browser/query-builder/QueryBuilder.js\");\n/* harmony import */ var _RelationUpdater__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RelationUpdater */ \"./node_modules/typeorm/browser/query-builder/RelationUpdater.js\");\n/* harmony import */ var _RelationRemover__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RelationRemover */ \"./node_modules/typeorm/browser/query-builder/RelationRemover.js\");\n\n\n\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nvar RelationQueryBuilder = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(RelationQueryBuilder, _super);\n function RelationQueryBuilder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n RelationQueryBuilder.prototype.getQuery = function () {\n return \"\";\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Sets entity (target) which relations will be updated.\n */\n RelationQueryBuilder.prototype.of = function (entity) {\n this.expressionMap.of = entity;\n return this;\n };\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n */\n RelationQueryBuilder.prototype.set = function (value) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var relation, updater;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n relation = this.expressionMap.relationMetadata;\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(\"Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.\");\n if (relation.isManyToMany || relation.isOneToMany)\n throw new Error(\"Set operation is only supported for many-to-one and one-to-one relations. \" +\n (\"However given \\\"\" + relation.propertyPath + \"\\\" has \" + relation.relationType + \" relation. \") +\n \"Use .add() method instead.\");\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(\"Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \\\"...\\\", lastName: \\\"...\\\" })\");\n updater = new _RelationUpdater__WEBPACK_IMPORTED_MODULE_2__[\"RelationUpdater\"](this, this.expressionMap);\n return [2 /*return*/, updater.update(value)];\n });\n });\n };\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n RelationQueryBuilder.prototype.add = function (value) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var relation, updater;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n if (Array.isArray(value) && value.length === 0)\n return [2 /*return*/];\n relation = this.expressionMap.relationMetadata;\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(\"Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.\");\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(\"Add operation is only supported for many-to-many and one-to-many relations. \" +\n (\"However given \\\"\" + relation.propertyPath + \"\\\" has \" + relation.relationType + \" relation. \") +\n \"Use .set() method instead.\");\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(\"Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \\\"...\\\", lastName: \\\"...\\\" })\");\n updater = new _RelationUpdater__WEBPACK_IMPORTED_MODULE_2__[\"RelationUpdater\"](this, this.expressionMap);\n return [2 /*return*/, updater.update(value)];\n });\n });\n };\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n RelationQueryBuilder.prototype.remove = function (value) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var relation, remover;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n if (Array.isArray(value) && value.length === 0)\n return [2 /*return*/];\n relation = this.expressionMap.relationMetadata;\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(\"Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.\");\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(\"Add operation is only supported for many-to-many and one-to-many relations. \" +\n (\"However given \\\"\" + relation.propertyPath + \"\\\" has \" + relation.relationType + \" relation. \") +\n \"Use .set(null) method instead.\");\n remover = new _RelationRemover__WEBPACK_IMPORTED_MODULE_3__[\"RelationRemover\"](this, this.expressionMap);\n return [2 /*return*/, remover.remove(value)];\n });\n });\n };\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n RelationQueryBuilder.prototype.addAndRemove = function (added, removed) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.remove(removed)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.add(added)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets entity's relation id.\n async getId(): Promise {\n\n }*/\n /**\n * Gets entity's relation ids.\n async getIds(): Promise {\n return [];\n }*/\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n RelationQueryBuilder.prototype.loadOne = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/, this.loadMany().then(function (results) { return results[0]; })];\n });\n });\n };\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n RelationQueryBuilder.prototype.loadMany = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var of, metadata;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n of = this.expressionMap.of;\n if (!(of instanceof Object)) {\n metadata = this.expressionMap.mainAlias.metadata;\n if (metadata.hasMultiplePrimaryKeys)\n throw new Error(\"Cannot load entity because only one primary key was specified, however entity contains multiple primary keys\");\n of = metadata.primaryColumns[0].createValueMap(of);\n }\n return [2 /*return*/, this.connection.relationLoader.load(this.expressionMap.relationMetadata, of, this.queryRunner)];\n });\n });\n };\n return RelationQueryBuilder;\n}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilder\"]));\n\n\n//# sourceMappingURL=RelationQueryBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/RelationRemover.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/RelationRemover.js ***! - \***********************************************************************/ -/*! exports provided: RelationRemover */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationRemover\", function() { return RelationRemover; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nvar RelationRemover = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationRemover(queryBuilder, expressionMap) {\n this.queryBuilder = queryBuilder;\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs remove operation on a relation.\n */\n RelationRemover.prototype.remove = function (value) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var relation, ofs, values_1, updateSet_1, parameters_1, conditions_1, condition, junctionMetadata_1, ofs, values, firstColumnValues, secondColumnValues_1, parameters_2, conditions_2, condition;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n relation = this.expressionMap.relationMetadata;\n if (!relation.isOneToMany) return [3 /*break*/, 2];\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n values_1 = Array.isArray(value) ? value : [value];\n updateSet_1 = {};\n relation.inverseRelation.joinColumns.forEach(function (column) {\n updateSet_1[column.propertyName] = null;\n });\n parameters_1 = {};\n conditions_1 = [];\n ofs.forEach(function (of, ofIndex) {\n conditions_1.push.apply(conditions_1, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(values_1.map(function (value, valueIndex) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(relation.inverseRelation.joinColumns.map(function (column, columnIndex) {\n var parameterName = \"joinColumn_\" + ofIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters_1[parameterName] = of instanceof Object ? column.referencedColumn.getEntityValue(of) : of;\n return column.propertyPath + \" = :\" + parameterName;\n }))), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(relation.inverseRelation.entityMetadata.primaryColumns.map(function (column, columnIndex) {\n var parameterName = \"primaryColumn_\" + valueIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters_1[parameterName] = value instanceof Object ? column.getEntityValue(value) : value;\n return column.propertyPath + \" = :\" + parameterName;\n }))).join(\" AND \");\n }))));\n });\n condition = conditions_1.map(function (str) { return \"(\" + str + \")\"; }).join(\" OR \");\n if (!condition)\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet_1)\n .where(condition)\n .setParameters(parameters_1)\n .execute()];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n junctionMetadata_1 = relation.junctionEntityMetadata;\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n values = Array.isArray(value) ? value : [value];\n firstColumnValues = relation.isManyToManyOwner ? ofs : values;\n secondColumnValues_1 = relation.isManyToManyOwner ? values : ofs;\n parameters_2 = {};\n conditions_2 = [];\n firstColumnValues.forEach(function (firstColumnVal, firstColumnValIndex) {\n conditions_2.push.apply(conditions_2, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(secondColumnValues_1.map(function (secondColumnVal, secondColumnValIndex) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(junctionMetadata_1.ownerColumns.map(function (column, columnIndex) {\n var parameterName = \"firstValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters_2[parameterName] = firstColumnVal instanceof Object ? column.referencedColumn.getEntityValue(firstColumnVal) : firstColumnVal;\n return column.databaseName + \" = :\" + parameterName;\n }))), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(junctionMetadata_1.inverseColumns.map(function (column, columnIndex) {\n var parameterName = \"secondValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters_2[parameterName] = secondColumnVal instanceof Object ? column.referencedColumn.getEntityValue(secondColumnVal) : secondColumnVal;\n return column.databaseName + \" = :\" + parameterName;\n }))).join(\" AND \");\n }))));\n });\n condition = conditions_2.map(function (str) { return \"(\" + str + \")\"; }).join(\" OR \");\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata_1.tableName)\n .where(condition)\n .setParameters(parameters_2)\n .execute()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return RelationRemover;\n}());\n\n\n//# sourceMappingURL=RelationRemover.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/RelationRemover.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/RelationUpdater.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/RelationUpdater.js ***! - \***********************************************************************/ -/*! exports provided: RelationUpdater */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationUpdater\", function() { return RelationUpdater; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/sap/SapDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n\n\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nvar RelationUpdater = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationUpdater(queryBuilder, expressionMap) {\n this.queryBuilder = queryBuilder;\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs set or add operation on a relation.\n */\n RelationUpdater.prototype.update = function (value) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var relation, updateSet, updateSet_1, ofs, parameters_1, conditions_1, condition, of_1, updateSet, junctionMetadata_1, ofs, values, firstColumnValues, secondColumnValues_1, bulkInserted_1;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n relation = this.expressionMap.relationMetadata;\n if (!(relation.isManyToOne || relation.isOneToOneOwner)) return [3 /*break*/, 2];\n updateSet = relation.joinColumns.reduce(function (updateSet, joinColumn) {\n var relationValue = value instanceof Object ? joinColumn.referencedColumn.getEntityValue(value) : value;\n joinColumn.setEntityValue(updateSet, relationValue);\n return updateSet;\n }, {});\n if (!this.expressionMap.of || (Array.isArray(this.expressionMap.of) && !this.expressionMap.of.length))\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.entityMetadata.target)\n .set(updateSet)\n .whereInIds(this.expressionMap.of)\n .execute()];\n case 1:\n _a.sent();\n return [3 /*break*/, 10];\n case 2:\n if (!((relation.isOneToOneNotOwner || relation.isOneToMany) && value === null)) return [3 /*break*/, 4];\n updateSet_1 = {};\n relation.inverseRelation.joinColumns.forEach(function (column) {\n updateSet_1[column.propertyName] = null;\n });\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n parameters_1 = {};\n conditions_1 = [];\n ofs.forEach(function (of, ofIndex) {\n relation.inverseRelation.joinColumns.map(function (column, columnIndex) {\n var parameterName = \"joinColumn_\" + ofIndex + \"_\" + columnIndex;\n parameters_1[parameterName] = of instanceof Object ? column.referencedColumn.getEntityValue(of) : of;\n conditions_1.push(column.propertyPath + \" = :\" + parameterName);\n });\n });\n condition = conditions_1.map(function (str) { return \"(\" + str + \")\"; }).join(\" OR \");\n if (!condition)\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet_1)\n .where(condition)\n .setParameters(parameters_1)\n .execute()];\n case 3:\n _a.sent();\n return [3 /*break*/, 10];\n case 4:\n if (!(relation.isOneToOneNotOwner || relation.isOneToMany)) return [3 /*break*/, 6];\n if (Array.isArray(this.expressionMap.of))\n throw new Error(\"You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.\");\n of_1 = this.expressionMap.of;\n updateSet = relation.inverseRelation.joinColumns.reduce(function (updateSet, joinColumn) {\n var relationValue = of_1 instanceof Object ? joinColumn.referencedColumn.getEntityValue(of_1) : of_1;\n joinColumn.setEntityValue(updateSet, relationValue);\n return updateSet;\n }, {});\n if (!value || (Array.isArray(value) && !value.length))\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .whereInIds(value)\n .execute()];\n case 5:\n _a.sent();\n return [3 /*break*/, 10];\n case 6:\n junctionMetadata_1 = relation.junctionEntityMetadata;\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n values = Array.isArray(value) ? value : [value];\n firstColumnValues = relation.isManyToManyOwner ? ofs : values;\n secondColumnValues_1 = relation.isManyToManyOwner ? values : ofs;\n bulkInserted_1 = [];\n firstColumnValues.forEach(function (firstColumnVal) {\n secondColumnValues_1.forEach(function (secondColumnVal) {\n var inserted = {};\n junctionMetadata_1.ownerColumns.forEach(function (column) {\n inserted[column.databaseName] = firstColumnVal instanceof Object ? column.referencedColumn.getEntityValue(firstColumnVal) : firstColumnVal;\n });\n junctionMetadata_1.inverseColumns.forEach(function (column) {\n inserted[column.databaseName] = secondColumnVal instanceof Object ? column.referencedColumn.getEntityValue(secondColumnVal) : secondColumnVal;\n });\n bulkInserted_1.push(inserted);\n });\n });\n if (!bulkInserted_1.length)\n return [2 /*return*/];\n if (!(this.queryBuilder.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] || this.queryBuilder.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"])) return [3 /*break*/, 8];\n return [4 /*yield*/, Promise.all(bulkInserted_1.map(function (value) {\n return _this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata_1.tableName)\n .values(value)\n .execute();\n }))];\n case 7:\n _a.sent();\n return [3 /*break*/, 10];\n case 8: return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata_1.tableName)\n .values(bulkInserted_1)\n .execute()];\n case 9:\n _a.sent();\n _a.label = 10;\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n return RelationUpdater;\n}());\n\n\n//# sourceMappingURL=RelationUpdater.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/RelationUpdater.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/ReturningResultsEntityUpdator.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/ReturningResultsEntityUpdator.js ***! - \*************************************************************************************/ -/*! exports provided: ReturningResultsEntityUpdator */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReturningResultsEntityUpdator\", function() { return ReturningResultsEntityUpdator; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../driver/oracle/OracleDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n\n\n\n/**\n * Updates entity with returning results in the entity insert and update operations.\n */\nvar ReturningResultsEntityUpdator = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ReturningResultsEntityUpdator(queryRunner, expressionMap) {\n this.queryRunner = queryRunner;\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Updates entities with a special columns after updation query execution.\n */\n ReturningResultsEntityUpdator.prototype.update = function (updateResult, entities) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.expressionMap.mainAlias.metadata;\n return [4 /*yield*/, Promise.all(entities.map(function (entity, entityIndex) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var result, returningColumns, updationColumns, entityId, loadedReturningColumns;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.queryRunner.connection.driver.isReturningSqlSupported()) return [3 /*break*/, 1];\n if (this.queryRunner.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_2__[\"OracleDriver\"] && Array.isArray(updateResult.raw) && this.expressionMap.extraReturningColumns.length > 0) {\n updateResult.raw = updateResult.raw.reduce(function (newRaw, rawItem, rawItemIndex) {\n newRaw[_this.expressionMap.extraReturningColumns[rawItemIndex].databaseName] = rawItem[0];\n return newRaw;\n }, {});\n }\n result = Array.isArray(updateResult.raw) ? updateResult.raw[entityIndex] : updateResult.raw;\n returningColumns = this.queryRunner.connection.driver.createGeneratedMap(metadata, result);\n if (returningColumns) {\n this.queryRunner.manager.merge(metadata.target, entity, returningColumns);\n updateResult.generatedMaps.push(returningColumns);\n }\n return [3 /*break*/, 3];\n case 1:\n updationColumns = this.getUpdationReturningColumns();\n if (!(updationColumns.length > 0)) return [3 /*break*/, 3];\n entityId = this.expressionMap.mainAlias.metadata.getEntityIdMap(entity);\n if (!entityId)\n throw new Error(\"Cannot update entity because entity id is not set in the entity.\");\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(metadata.primaryColumns.map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .addSelect(this.getUpdationReturningColumns().map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .from(metadata.target, metadata.targetName)\n .where(entityId)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties maight be overridden by merge process\n .getOne()];\n case 2:\n loadedReturningColumns = _a.sent();\n if (loadedReturningColumns) {\n this.queryRunner.manager.merge(metadata.target, entity, loadedReturningColumns);\n updateResult.generatedMaps.push(loadedReturningColumns);\n }\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates entities with a special columns after insertion query execution.\n */\n ReturningResultsEntityUpdator.prototype.insert = function (insertResult, entities) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, insertionColumns, generatedMaps, entityIds, returningResult_1;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.expressionMap.mainAlias.metadata;\n insertionColumns = this.getInsertionReturningColumns();\n generatedMaps = entities.map(function (entity, entityIndex) {\n if (_this.queryRunner.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_2__[\"OracleDriver\"] && Array.isArray(insertResult.raw) && _this.expressionMap.extraReturningColumns.length > 0) {\n insertResult.raw = insertResult.raw.reduce(function (newRaw, rawItem, rawItemIndex) {\n newRaw[_this.expressionMap.extraReturningColumns[rawItemIndex].databaseName] = rawItem[0];\n return newRaw;\n }, {});\n }\n // get all values generated by a database for us\n var result = Array.isArray(insertResult.raw) ? insertResult.raw[entityIndex] : insertResult.raw;\n var generatedMap = _this.queryRunner.connection.driver.createGeneratedMap(metadata, result, entityIndex, entities.length) || {};\n // if database does not support uuid generation we need to get uuid values\n // generated by orm and set them to the generatedMap\n if (_this.queryRunner.connection.driver.isUUIDGenerationSupported() === false) {\n metadata.generatedColumns.forEach(function (generatedColumn) {\n if (generatedColumn.generationStrategy === \"uuid\") {\n // uuid can be defined by user in a model, that's why first we get it\n var uuid = generatedColumn.getEntityValue(entity);\n if (!uuid) // if it was not defined by a user then InsertQueryBuilder generates it by its own, get this generated uuid value\n uuid = _this.expressionMap.nativeParameters[\"uuid_\" + generatedColumn.databaseName + entityIndex];\n _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(generatedMap, generatedColumn.createValueMap(uuid));\n }\n });\n }\n _this.queryRunner.manager.merge(metadata.target, entity, generatedMap); // todo: this should not be here, but problem with below line\n return generatedMap;\n });\n if (!(this.queryRunner.connection.driver.isReturningSqlSupported() === false && insertionColumns.length > 0)) return [3 /*break*/, 2];\n entityIds = entities.map(function (entity) {\n var entityId = metadata.getEntityIdMap(entity);\n // We have to check for an empty `entityId` - if we don't, the query against the database\n // effectively drops the `where` clause entirely and the first record will be returned -\n // not what we want at all.\n if (!entityId)\n throw new Error(\"Cannot update entity because entity id is not set in the entity.\");\n return entityId;\n });\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(metadata.primaryColumns.map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .addSelect(insertionColumns.map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .from(metadata.target, metadata.targetName)\n .where(entityIds)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties maight be overridden by merge process\n .getMany()];\n case 1:\n returningResult_1 = _a.sent();\n entities.forEach(function (entity, entityIndex) {\n _this.queryRunner.manager.merge(metadata.target, generatedMaps[entityIndex], returningResult_1[entityIndex]);\n });\n _a.label = 2;\n case 2:\n entities.forEach(function (entity, entityIndex) {\n var entityId = metadata.getEntityIdMap(entity);\n insertResult.identifiers.push(entityId);\n insertResult.generatedMaps.push(generatedMaps[entityIndex]);\n _this.queryRunner.manager.merge(_this.expressionMap.mainAlias.metadata.target, entity, generatedMaps[entityIndex], generatedMaps[entityIndex]); // todo: why twice?!\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Columns we need to be returned from the database when we insert entity.\n */\n ReturningResultsEntityUpdator.prototype.getInsertionReturningColumns = function () {\n // for databases which support returning statement we need to return extra columns like id\n // for other databases we don't need to return id column since its returned by a driver already\n var needToCheckGenerated = this.queryRunner.connection.driver.isReturningSqlSupported();\n // filter out the columns of which we need database inserted values to update our entity\n return this.expressionMap.mainAlias.metadata.columns.filter(function (column) {\n return column.default !== undefined ||\n (needToCheckGenerated && column.isGenerated) ||\n column.isCreateDate ||\n column.isUpdateDate ||\n column.isDeleteDate ||\n column.isVersion;\n });\n };\n /**\n * Columns we need to be returned from the database when we update entity.\n */\n ReturningResultsEntityUpdator.prototype.getUpdationReturningColumns = function () {\n return this.expressionMap.mainAlias.metadata.columns.filter(function (column) {\n return column.isUpdateDate || column.isVersion;\n });\n };\n return ReturningResultsEntityUpdator;\n}());\n\n\n//# sourceMappingURL=ReturningResultsEntityUpdator.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/ReturningResultsEntityUpdator.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js ***! - \**************************************************************************/ -/*! exports provided: SelectQueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SelectQueryBuilder\", function() { return SelectQueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/sap/SapDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _transformer_RawSqlResultsToEntityTransformer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transformer/RawSqlResultsToEntityTransformer */ \"./node_modules/typeorm/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js\");\n/* harmony import */ var _error_PessimisticLockTransactionRequiredError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/PessimisticLockTransactionRequiredError */ \"./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js\");\n/* harmony import */ var _error_NoVersionOrUpdateDateColumnError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/NoVersionOrUpdateDateColumnError */ \"./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js\");\n/* harmony import */ var _error_OptimisticLockVersionMismatchError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/OptimisticLockVersionMismatchError */ \"./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js\");\n/* harmony import */ var _error_OptimisticLockCanNotBeUsedError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../error/OptimisticLockCanNotBeUsedError */ \"./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js\");\n/* harmony import */ var _JoinAttribute__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./JoinAttribute */ \"./node_modules/typeorm/browser/query-builder/JoinAttribute.js\");\n/* harmony import */ var _relation_id_RelationIdAttribute__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./relation-id/RelationIdAttribute */ \"./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js\");\n/* harmony import */ var _relation_count_RelationCountAttribute__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./relation-count/RelationCountAttribute */ \"./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js\");\n/* harmony import */ var _relation_id_RelationIdLoader__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./relation-id/RelationIdLoader */ \"./node_modules/typeorm/browser/query-builder/relation-id/RelationIdLoader.js\");\n/* harmony import */ var _relation_id_RelationIdMetadataToAttributeTransformer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./relation-id/RelationIdMetadataToAttributeTransformer */ \"./node_modules/typeorm/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js\");\n/* harmony import */ var _relation_count_RelationCountLoader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./relation-count/RelationCountLoader */ \"./node_modules/typeorm/browser/query-builder/relation-count/RelationCountLoader.js\");\n/* harmony import */ var _relation_count_RelationCountMetadataToAttributeTransformer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./relation-count/RelationCountMetadataToAttributeTransformer */ \"./node_modules/typeorm/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js\");\n/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./QueryBuilder */ \"./node_modules/typeorm/browser/query-builder/QueryBuilder.js\");\n/* harmony import */ var _error_LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../error/LockNotSupportedOnGivenDriverError */ \"./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js\");\n/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../driver/sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _error_OffsetWithoutLimitNotSupportedError__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../error/OffsetWithoutLimitNotSupportedError */ \"./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n/* harmony import */ var _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../driver/DriverUtils */ \"./node_modules/typeorm/browser/driver/DriverUtils.js\");\n/* harmony import */ var _error_EntityNotFoundError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../error/EntityNotFoundError */ \"./node_modules/typeorm/browser/error/EntityNotFoundError.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar SelectQueryBuilder = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(SelectQueryBuilder, _super);\n function SelectQueryBuilder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n SelectQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createSelectExpression();\n sql += this.createJoinExpression();\n sql += this.createWhereExpression();\n sql += this.createGroupByExpression();\n sql += this.createHavingExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitOffsetExpression();\n sql += this.createLockExpression();\n sql = sql.trim();\n if (this.expressionMap.subQuery)\n sql = \"(\" + sql + \")\";\n return sql;\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a subquery - query that can be used inside other queries.\n */\n SelectQueryBuilder.prototype.subQuery = function () {\n var qb = this.createQueryBuilder();\n qb.expressionMap.subQuery = true;\n qb.expressionMap.parentQueryBuilder = this;\n return qb;\n };\n /**\n * Creates SELECT query and selects given data.\n * Replaces all previous selections if they exist.\n */\n SelectQueryBuilder.prototype.select = function (selection, selectionAliasName) {\n this.expressionMap.queryType = \"select\";\n if (Array.isArray(selection)) {\n this.expressionMap.selects = selection.map(function (selection) { return ({ selection: selection }); });\n }\n else if (selection instanceof Function) {\n var subQueryBuilder = selection(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n this.expressionMap.selects.push({ selection: subQueryBuilder.getQuery(), aliasName: selectionAliasName });\n }\n else if (selection) {\n this.expressionMap.selects = [{ selection: selection, aliasName: selectionAliasName }];\n }\n return this;\n };\n /**\n * Adds new selection to the SELECT query.\n */\n SelectQueryBuilder.prototype.addSelect = function (selection, selectionAliasName) {\n if (!selection)\n return this;\n if (Array.isArray(selection)) {\n this.expressionMap.selects = this.expressionMap.selects.concat(selection.map(function (selection) { return ({ selection: selection }); }));\n }\n else if (selection instanceof Function) {\n var subQueryBuilder = selection(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n this.expressionMap.selects.push({ selection: subQueryBuilder.getQuery(), aliasName: selectionAliasName });\n }\n else if (selection) {\n this.expressionMap.selects.push({ selection: selection, aliasName: selectionAliasName });\n }\n return this;\n };\n /**\n * Sets whether the selection is DISTINCT.\n */\n SelectQueryBuilder.prototype.distinct = function (distinct) {\n if (distinct === void 0) { distinct = true; }\n this.expressionMap.selectDistinct = distinct;\n return this;\n };\n /**\n * Sets the distinct on clause for Postgres.\n */\n SelectQueryBuilder.prototype.distinctOn = function (distinctOn) {\n this.expressionMap.selectDistinctOn = distinctOn;\n return this;\n };\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n * Removes all previously set from-s.\n */\n SelectQueryBuilder.prototype.from = function (entityTarget, aliasName) {\n var mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return this;\n };\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n SelectQueryBuilder.prototype.addFrom = function (entityTarget, aliasName) {\n var alias = this.createFromAlias(entityTarget, aliasName);\n if (!this.expressionMap.mainAlias)\n this.expressionMap.setMainAlias(alias);\n return this;\n };\n /**\n * INNER JOINs (without selection).\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoin = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.join(\"INNER\", entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * LEFT JOINs (without selection).\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoin = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.join(\"LEFT\", entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * INNER JOINs and adds all selection properties to SELECT.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoinAndSelect = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.innerJoin(entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * LEFT JOINs and adds all selection properties to SELECT.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoinAndSelect = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.leftJoin(entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there are multiple rows of selecting data, and mapped result will be an array.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoinAndMapMany = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"INNER\", entityOrProperty, alias, condition, parameters, mapToProperty, true);\n return this;\n };\n /**\n * INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there is a single row of selecting data, and mapped result will be a single selected value.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoinAndMapOne = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"INNER\", entityOrProperty, alias, condition, parameters, mapToProperty, false);\n return this;\n };\n /**\n * LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there are multiple rows of selecting data, and mapped result will be an array.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoinAndMapMany = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"LEFT\", entityOrProperty, alias, condition, parameters, mapToProperty, true);\n return this;\n };\n /**\n * LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there is a single row of selecting data, and mapped result will be a single selected value.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoinAndMapOne = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"LEFT\", entityOrProperty, alias, condition, parameters, mapToProperty, false);\n return this;\n };\n /**\n * LEFT JOINs relation id and maps it into some entity's property.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.loadRelationIdAndMap = function (mapToProperty, relationName, aliasNameOrOptions, queryBuilderFactory) {\n var relationIdAttribute = new _relation_id_RelationIdAttribute__WEBPACK_IMPORTED_MODULE_8__[\"RelationIdAttribute\"](this.expressionMap);\n relationIdAttribute.mapToProperty = mapToProperty;\n relationIdAttribute.relationName = relationName;\n if (typeof aliasNameOrOptions === \"string\")\n relationIdAttribute.alias = aliasNameOrOptions;\n if (aliasNameOrOptions instanceof Object && aliasNameOrOptions.disableMixedMap)\n relationIdAttribute.disableMixedMap = true;\n relationIdAttribute.queryBuilderFactory = queryBuilderFactory;\n this.expressionMap.relationIdAttributes.push(relationIdAttribute);\n if (relationIdAttribute.relation.junctionEntityMetadata) {\n this.expressionMap.createAlias({\n type: \"other\",\n name: relationIdAttribute.junctionAlias,\n metadata: relationIdAttribute.relation.junctionEntityMetadata\n });\n }\n return this;\n };\n /**\n * Counts number of entities of entity's relation and maps the value into some entity's property.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.loadRelationCountAndMap = function (mapToProperty, relationName, aliasName, queryBuilderFactory) {\n var relationCountAttribute = new _relation_count_RelationCountAttribute__WEBPACK_IMPORTED_MODULE_9__[\"RelationCountAttribute\"](this.expressionMap);\n relationCountAttribute.mapToProperty = mapToProperty;\n relationCountAttribute.relationName = relationName;\n relationCountAttribute.alias = aliasName;\n relationCountAttribute.queryBuilderFactory = queryBuilderFactory;\n this.expressionMap.relationCountAttributes.push(relationCountAttribute);\n this.expressionMap.createAlias({\n type: \"other\",\n name: relationCountAttribute.junctionAlias\n });\n if (relationCountAttribute.relation.junctionEntityMetadata) {\n this.expressionMap.createAlias({\n type: \"other\",\n name: relationCountAttribute.junctionAlias,\n metadata: relationCountAttribute.relation.junctionEntityMetadata\n });\n }\n return this;\n };\n /**\n * Loads all relation ids for all relations of the selected entity.\n * All relation ids will be mapped to relation property themself.\n * If array of strings is given then loads only relation ids of the given properties.\n */\n SelectQueryBuilder.prototype.loadAllRelationIds = function (options) {\n var _this = this;\n this.expressionMap.mainAlias.metadata.relations.forEach(function (relation) {\n if (options !== undefined && options.relations !== undefined && options.relations.indexOf(relation.propertyPath) === -1)\n return;\n _this.loadRelationIdAndMap(_this.expressionMap.mainAlias.name + \".\" + relation.propertyPath, _this.expressionMap.mainAlias.name + \".\" + relation.propertyPath, options);\n });\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n *\n * Ids are mixed.\n * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3].\n * If you have multiple primary keys you need to pass object with property names and values specified,\n * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]\n */\n SelectQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n *\n * Ids are mixed.\n * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3].\n * If you have multiple primary keys you need to pass object with property names and values specified,\n * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]\n */\n SelectQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n *\n * Ids are mixed.\n * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3].\n * If you have multiple primary keys you need to pass object with property names and values specified,\n * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]\n */\n SelectQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Sets HAVING condition in the query builder.\n * If you had previously HAVING expression defined,\n * calling this function will override previously set HAVING conditions.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.having = function (having, parameters) {\n this.expressionMap.havings.push({ type: \"simple\", condition: having });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND HAVING condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.andHaving = function (having, parameters) {\n this.expressionMap.havings.push({ type: \"and\", condition: having });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR HAVING condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.orHaving = function (having, parameters) {\n this.expressionMap.havings.push({ type: \"or\", condition: having });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Sets GROUP BY condition in the query builder.\n * If you had previously GROUP BY expression defined,\n * calling this function will override previously set GROUP BY conditions.\n */\n SelectQueryBuilder.prototype.groupBy = function (groupBy) {\n if (groupBy) {\n this.expressionMap.groupBys = [groupBy];\n }\n else {\n this.expressionMap.groupBys = [];\n }\n return this;\n };\n /**\n * Adds GROUP BY condition in the query builder.\n */\n SelectQueryBuilder.prototype.addGroupBy = function (groupBy) {\n this.expressionMap.groupBys.push(groupBy);\n return this;\n };\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n SelectQueryBuilder.prototype.orderBy = function (sort, order, nulls) {\n var _a, _b;\n if (order === void 0) { order = \"ASC\"; }\n if (order !== undefined && order !== \"ASC\" && order !== \"DESC\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"order\\\" can accept only \\\"ASC\\\" and \\\"DESC\\\" values.\");\n if (nulls !== undefined && nulls !== \"NULLS FIRST\" && nulls !== \"NULLS LAST\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"nulls\\\" can accept only \\\"NULLS FIRST\\\" and \\\"NULLS LAST\\\" values.\");\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort;\n }\n else {\n if (nulls) {\n this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a);\n }\n else {\n this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b);\n }\n }\n }\n else {\n this.expressionMap.orderBys = {};\n }\n return this;\n };\n /**\n * Adds ORDER BY condition in the query builder.\n */\n SelectQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) {\n if (order === void 0) { order = \"ASC\"; }\n if (order !== undefined && order !== \"ASC\" && order !== \"DESC\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"order\\\" can accept only \\\"ASC\\\" and \\\"DESC\\\" values.\");\n if (nulls !== undefined && nulls !== \"NULLS FIRST\" && nulls !== \"NULLS LAST\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"nulls\\\" can accept only \\\"NULLS FIRST\\\" and \\\"NULLS LAST\\\" values.\");\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order: order, nulls: nulls };\n }\n else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n };\n /**\n * Set's LIMIT - maximum number of rows to be selected.\n * NOTE that it may not work as you expect if you are using joins.\n * If you want to implement pagination, and you are having join in your query,\n * then use instead take method instead.\n */\n SelectQueryBuilder.prototype.limit = function (limit) {\n this.expressionMap.limit = this.normalizeNumber(limit);\n if (this.expressionMap.limit !== undefined && isNaN(this.expressionMap.limit))\n throw new Error(\"Provided \\\"limit\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Set's OFFSET - selection offset.\n * NOTE that it may not work as you expect if you are using joins.\n * If you want to implement pagination, and you are having join in your query,\n * then use instead skip method instead.\n */\n SelectQueryBuilder.prototype.offset = function (offset) {\n this.expressionMap.offset = this.normalizeNumber(offset);\n if (this.expressionMap.offset !== undefined && isNaN(this.expressionMap.offset))\n throw new Error(\"Provided \\\"offset\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Sets maximal number of entities to take.\n */\n SelectQueryBuilder.prototype.take = function (take) {\n this.expressionMap.take = this.normalizeNumber(take);\n if (this.expressionMap.take !== undefined && isNaN(this.expressionMap.take))\n throw new Error(\"Provided \\\"take\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Sets number of entities to skip.\n */\n SelectQueryBuilder.prototype.skip = function (skip) {\n this.expressionMap.skip = this.normalizeNumber(skip);\n if (this.expressionMap.skip !== undefined && isNaN(this.expressionMap.skip))\n throw new Error(\"Provided \\\"skip\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Sets locking mode.\n */\n SelectQueryBuilder.prototype.setLock = function (lockMode, lockVersion, lockTables) {\n this.expressionMap.lockMode = lockMode;\n this.expressionMap.lockVersion = lockVersion;\n this.expressionMap.lockTables = lockTables;\n return this;\n };\n /**\n * Disables the global condition of \"non-deleted\" for the entity with delete date columns.\n */\n SelectQueryBuilder.prototype.withDeleted = function () {\n this.expressionMap.withDeleted = true;\n return this;\n };\n /**\n * Gets first raw result returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getRawOne = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRawMany()];\n case 1: return [2 /*return*/, (_a.sent())[0]];\n }\n });\n });\n };\n /**\n * Gets all raw results returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getRawMany = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, results, error_1, rollbackError_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new _error_OptimisticLockCanNotBeUsedError__WEBPACK_IMPORTED_MODULE_6__[\"OptimisticLockCanNotBeUsedError\"]();\n this.expressionMap.queryEntity = false;\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, 12, 15]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3: return [4 /*yield*/, this.loadRawResults(queryRunner)];\n case 4:\n results = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 6];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/, results];\n case 7:\n error_1 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 11];\n _a.label = 8;\n case 8:\n _a.trys.push([8, 10, , 11]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 9:\n _a.sent();\n return [3 /*break*/, 11];\n case 10:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 11];\n case 11: throw error_1;\n case 12:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14];\n return [4 /*yield*/, queryRunner.release()];\n case 13:\n _a.sent();\n _a.label = 14;\n case 14: return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes sql generated by query builder and returns object with raw results and entities created from them.\n */\n SelectQueryBuilder.prototype.getRawAndEntities = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, results, error_2, rollbackError_2;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, 12, 15]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3:\n this.expressionMap.queryEntity = true;\n return [4 /*yield*/, this.executeEntitiesAndRawResults(queryRunner)];\n case 4:\n results = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 6];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/, results];\n case 7:\n error_2 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 11];\n _a.label = 8;\n case 8:\n _a.trys.push([8, 10, , 11]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 9:\n _a.sent();\n return [3 /*break*/, 11];\n case 10:\n rollbackError_2 = _a.sent();\n return [3 /*break*/, 11];\n case 11: throw error_2;\n case 12:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14];\n return [4 /*yield*/, queryRunner.release()];\n case 13:\n _a.sent();\n _a.label = 14;\n case 14: return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets single entity returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getOne = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var results, result, metadata, actualVersion, actualVersion;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRawAndEntities()];\n case 1:\n results = _a.sent();\n result = results.entities[0];\n if (result && this.expressionMap.lockMode === \"optimistic\" && this.expressionMap.lockVersion) {\n metadata = this.expressionMap.mainAlias.metadata;\n if (this.expressionMap.lockVersion instanceof Date) {\n actualVersion = metadata.updateDateColumn.getEntityValue(result);\n if (actualVersion.getTime() !== this.expressionMap.lockVersion.getTime())\n throw new _error_OptimisticLockVersionMismatchError__WEBPACK_IMPORTED_MODULE_5__[\"OptimisticLockVersionMismatchError\"](metadata.name, this.expressionMap.lockVersion, actualVersion);\n }\n else {\n actualVersion = metadata.versionColumn.getEntityValue(result);\n if (actualVersion !== this.expressionMap.lockVersion)\n throw new _error_OptimisticLockVersionMismatchError__WEBPACK_IMPORTED_MODULE_5__[\"OptimisticLockVersionMismatchError\"](metadata.name, this.expressionMap.lockVersion, actualVersion);\n }\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n /**\n * Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error.\n */\n SelectQueryBuilder.prototype.getOneOrFail = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var entity;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getOne()];\n case 1:\n entity = _a.sent();\n if (!entity) {\n throw new _error_EntityNotFoundError__WEBPACK_IMPORTED_MODULE_21__[\"EntityNotFoundError\"](this.expressionMap.mainAlias.target, this);\n }\n return [2 /*return*/, entity];\n }\n });\n });\n };\n /**\n * Gets entities returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getMany = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var results;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new _error_OptimisticLockCanNotBeUsedError__WEBPACK_IMPORTED_MODULE_6__[\"OptimisticLockCanNotBeUsedError\"]();\n return [4 /*yield*/, this.getRawAndEntities()];\n case 1:\n results = _a.sent();\n return [2 /*return*/, results.entities];\n }\n });\n });\n };\n /**\n * Gets count - number of entities selected by sql generated by this query builder.\n * Count excludes all limitations set by setFirstResult and setMaxResults methods call.\n */\n SelectQueryBuilder.prototype.getCount = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, results, error_3, rollbackError_3;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new _error_OptimisticLockCanNotBeUsedError__WEBPACK_IMPORTED_MODULE_6__[\"OptimisticLockCanNotBeUsedError\"]();\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, 12, 15]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3:\n this.expressionMap.queryEntity = false;\n return [4 /*yield*/, this.executeCountQuery(queryRunner)];\n case 4:\n results = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 6];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/, results];\n case 7:\n error_3 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 11];\n _a.label = 8;\n case 8:\n _a.trys.push([8, 10, , 11]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 9:\n _a.sent();\n return [3 /*break*/, 11];\n case 10:\n rollbackError_3 = _a.sent();\n return [3 /*break*/, 11];\n case 11: throw error_3;\n case 12:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14];\n return [4 /*yield*/, queryRunner.release()];\n case 13:\n _a.sent();\n _a.label = 14;\n case 14: return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes built SQL query and returns entities and overall entities count (without limitation).\n * This method is useful to build pagination.\n */\n SelectQueryBuilder.prototype.getManyAndCount = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, entitiesAndRaw, count, results, error_4, rollbackError_4;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new _error_OptimisticLockCanNotBeUsedError__WEBPACK_IMPORTED_MODULE_6__[\"OptimisticLockCanNotBeUsedError\"]();\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 8, 13, 16]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3:\n this.expressionMap.queryEntity = true;\n return [4 /*yield*/, this.executeEntitiesAndRawResults(queryRunner)];\n case 4:\n entitiesAndRaw = _a.sent();\n this.expressionMap.queryEntity = false;\n return [4 /*yield*/, this.executeCountQuery(queryRunner)];\n case 5:\n count = _a.sent();\n results = [entitiesAndRaw.entities, count];\n if (!transactionStartedByUs) return [3 /*break*/, 7];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [2 /*return*/, results];\n case 8:\n error_4 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n _a.label = 9;\n case 9:\n _a.trys.push([9, 11, , 12]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 10:\n _a.sent();\n return [3 /*break*/, 12];\n case 11:\n rollbackError_4 = _a.sent();\n return [3 /*break*/, 12];\n case 12: throw error_4;\n case 13:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 15];\n return [4 /*yield*/, queryRunner.release()];\n case 14:\n _a.sent();\n _a.label = 15;\n case 15: return [7 /*endfinally*/];\n case 16: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes built SQL query and returns raw data stream.\n */\n SelectQueryBuilder.prototype.stream = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, sql, parameters, queryRunner, transactionStartedByUs, releaseFn, results, error_5, rollbackError_5;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.expressionMap.queryEntity = false;\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, , 11]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n releaseFn = function () {\n if (queryRunner !== _this.queryRunner) // means we created our own query runner\n return queryRunner.release();\n return;\n };\n results = queryRunner.stream(sql, parameters, releaseFn, releaseFn);\n if (!transactionStartedByUs) return [3 /*break*/, 5];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/, results];\n case 6:\n error_5 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 10];\n _b.label = 7;\n case 7:\n _b.trys.push([7, 9, , 10]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 8:\n _b.sent();\n return [3 /*break*/, 10];\n case 9:\n rollbackError_5 = _b.sent();\n return [3 /*break*/, 10];\n case 10: throw error_5;\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Enables or disables query result caching.\n */\n SelectQueryBuilder.prototype.cache = function (enabledOrMillisecondsOrId, maybeMilliseconds) {\n if (typeof enabledOrMillisecondsOrId === \"boolean\") {\n this.expressionMap.cache = enabledOrMillisecondsOrId;\n }\n else if (typeof enabledOrMillisecondsOrId === \"number\") {\n this.expressionMap.cache = true;\n this.expressionMap.cacheDuration = enabledOrMillisecondsOrId;\n }\n else if (typeof enabledOrMillisecondsOrId === \"string\" || typeof enabledOrMillisecondsOrId === \"number\") {\n this.expressionMap.cache = true;\n this.expressionMap.cacheId = enabledOrMillisecondsOrId;\n }\n if (maybeMilliseconds) {\n this.expressionMap.cacheDuration = maybeMilliseconds;\n }\n return this;\n };\n /**\n * Sets extra options that can be used to configure how query builder works.\n */\n SelectQueryBuilder.prototype.setOption = function (option) {\n this.expressionMap.options.push(option);\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n SelectQueryBuilder.prototype.join = function (direction, entityOrProperty, aliasName, condition, parameters, mapToProperty, isMappingMany) {\n this.setParameters(parameters || {});\n var joinAttribute = new _JoinAttribute__WEBPACK_IMPORTED_MODULE_7__[\"JoinAttribute\"](this.connection, this.expressionMap);\n joinAttribute.direction = direction;\n joinAttribute.mapToProperty = mapToProperty;\n joinAttribute.isMappingMany = isMappingMany;\n joinAttribute.entityOrProperty = entityOrProperty; // relationName\n joinAttribute.condition = condition; // joinInverseSideCondition\n // joinAttribute.junctionAlias = joinAttribute.relation.isOwning ? parentAlias + \"_\" + destinationTableAlias : destinationTableAlias + \"_\" + parentAlias;\n this.expressionMap.joinAttributes.push(joinAttribute);\n if (joinAttribute.metadata) {\n if (joinAttribute.metadata.deleteDateColumn && !this.expressionMap.withDeleted) {\n var conditionDeleteColumn = aliasName + \".\" + joinAttribute.metadata.deleteDateColumn.propertyName + \" IS NULL\";\n joinAttribute.condition += joinAttribute.condition ? \" AND \" + conditionDeleteColumn : \"\" + conditionDeleteColumn;\n }\n // todo: find and set metadata right there?\n joinAttribute.alias = this.expressionMap.createAlias({\n type: \"join\",\n name: aliasName,\n metadata: joinAttribute.metadata\n });\n if (joinAttribute.relation && joinAttribute.relation.junctionEntityMetadata) {\n this.expressionMap.createAlias({\n type: \"join\",\n name: joinAttribute.junctionAlias,\n metadata: joinAttribute.relation.junctionEntityMetadata\n });\n }\n }\n else {\n var subQuery = \"\";\n if (entityOrProperty instanceof Function) {\n var subQueryBuilder = entityOrProperty(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n subQuery = subQueryBuilder.getQuery();\n }\n else {\n subQuery = entityOrProperty;\n }\n var isSubQuery = entityOrProperty instanceof Function || entityOrProperty.substr(0, 1) === \"(\" && entityOrProperty.substr(-1) === \")\";\n joinAttribute.alias = this.expressionMap.createAlias({\n type: \"join\",\n name: aliasName,\n tablePath: isSubQuery === false ? entityOrProperty : undefined,\n subQuery: isSubQuery === true ? subQuery : undefined,\n });\n }\n };\n /**\n * Creates \"SELECT FROM\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createSelectExpression = function () {\n var _this = this;\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Cannot build query because main alias is not set (call qb#from method)\");\n // todo throw exception if selects or from is missing\n var allSelects = [];\n var excludedSelects = [];\n if (this.expressionMap.mainAlias.hasMetadata) {\n var metadata = this.expressionMap.mainAlias.metadata;\n allSelects.push.apply(allSelects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.buildEscapedEntityColumnSelects(this.expressionMap.mainAlias.name, metadata))));\n excludedSelects.push.apply(excludedSelects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.findEntityColumnSelects(this.expressionMap.mainAlias.name, metadata))));\n }\n // add selects from joins\n this.expressionMap.joinAttributes\n .forEach(function (join) {\n if (join.metadata) {\n allSelects.push.apply(allSelects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_this.buildEscapedEntityColumnSelects(join.alias.name, join.metadata))));\n excludedSelects.push.apply(excludedSelects, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_this.findEntityColumnSelects(join.alias.name, join.metadata))));\n }\n else {\n var hasMainAlias = _this.expressionMap.selects.some(function (select) { return select.selection === join.alias.name; });\n if (hasMainAlias) {\n allSelects.push({ selection: _this.escape(join.alias.name) + \".*\" });\n var excludedSelect = _this.expressionMap.selects.find(function (select) { return select.selection === join.alias.name; });\n excludedSelects.push(excludedSelect);\n }\n }\n });\n // add all other selects\n this.expressionMap.selects\n .filter(function (select) { return excludedSelects.indexOf(select) === -1; })\n .forEach(function (select) { return allSelects.push({ selection: _this.replacePropertyNames(select.selection), aliasName: select.aliasName }); });\n // if still selection is empty, then simply set it to all (*)\n if (allSelects.length === 0)\n allSelects.push({ selection: \"*\" });\n var lock = \"\";\n if (this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n switch (this.expressionMap.lockMode) {\n case \"pessimistic_read\":\n lock = \" WITH (HOLDLOCK, ROWLOCK)\";\n break;\n case \"pessimistic_write\":\n lock = \" WITH (UPDLOCK, ROWLOCK)\";\n break;\n case \"dirty_read\":\n lock = \" WITH (NOLOCK)\";\n break;\n }\n }\n // create a selection query\n var froms = this.expressionMap.aliases\n .filter(function (alias) { return alias.type === \"from\" && (alias.tablePath || alias.subQuery); })\n .map(function (alias) {\n if (alias.subQuery)\n return alias.subQuery + \" \" + _this.escape(alias.name);\n return _this.getTableName(alias.tablePath) + \" \" + _this.escape(alias.name);\n });\n var select = this.createSelectDistinctExpression();\n var selection = allSelects.map(function (select) { return select.selection + (select.aliasName ? \" AS \" + _this.escape(select.aliasName) : \"\"); }).join(\", \");\n return select + selection + \" FROM \" + froms.join(\", \") + lock;\n };\n /**\n * Creates select | select distinct part of SQL query.\n */\n SelectQueryBuilder.prototype.createSelectDistinctExpression = function () {\n var _this = this;\n var _a = this.expressionMap, selectDistinct = _a.selectDistinct, selectDistinctOn = _a.selectDistinctOn;\n var driver = this.connection.driver;\n var select = \"SELECT \";\n if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] && selectDistinctOn.length > 0) {\n var selectDistinctOnMap = selectDistinctOn.map(function (on) { return _this.replacePropertyNames(on); }).join(\", \");\n select = \"SELECT DISTINCT ON (\" + selectDistinctOnMap + \") \";\n }\n else if (selectDistinct) {\n select = \"SELECT DISTINCT \";\n }\n return select;\n };\n /**\n * Creates \"JOIN\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createJoinExpression = function () {\n // examples:\n // select from owning side\n // qb.select(\"post\")\n // .leftJoinAndSelect(\"post.category\", \"category\");\n // select from non-owning side\n // qb.select(\"category\")\n // .leftJoinAndSelect(\"category.post\", \"post\");\n var _this = this;\n var joins = this.expressionMap.joinAttributes.map(function (joinAttr) {\n var relation = joinAttr.relation;\n var destinationTableName = joinAttr.tablePath;\n var destinationTableAlias = joinAttr.alias.name;\n var appendedCondition = joinAttr.condition ? \" AND (\" + joinAttr.condition + \")\" : \"\";\n var parentAlias = joinAttr.parentAlias;\n // if join was build without relation (e.g. without \"post.category\") then it means that we have direct\n // table to join, without junction table involved. This means we simply join direct table.\n if (!parentAlias || !relation) {\n var destinationJoin = joinAttr.alias.subQuery ? joinAttr.alias.subQuery : _this.getTableName(destinationTableName);\n return \" \" + joinAttr.direction + \" JOIN \" + destinationJoin + \" \" + _this.escape(destinationTableAlias) +\n (joinAttr.condition ? \" ON \" + _this.replacePropertyNames(joinAttr.condition) : \"\");\n }\n // if real entity relation is involved\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n // JOIN `category` `category` ON `category`.`id` = `post`.`categoryId`\n var condition = relation.joinColumns.map(function (joinColumn) {\n return destinationTableAlias + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" +\n parentAlias + \".\" + relation.propertyPath + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n return \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(destinationTableName) + \" \" + _this.escape(destinationTableAlias) + \" ON \" + _this.replacePropertyNames(condition + appendedCondition);\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n // JOIN `post` `post` ON `post`.`categoryId` = `category`.`id`\n var condition = relation.inverseRelation.joinColumns.map(function (joinColumn) {\n if (relation.inverseEntityMetadata.tableType === \"entity-child\" && relation.inverseEntityMetadata.discriminatorColumn) {\n appendedCondition += \" AND \" + destinationTableAlias + \".\" + relation.inverseEntityMetadata.discriminatorColumn.databaseName + \"='\" + relation.inverseEntityMetadata.discriminatorValue + \"'\";\n }\n return destinationTableAlias + \".\" + relation.inverseRelation.propertyPath + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" +\n parentAlias + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n return \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(destinationTableName) + \" \" + _this.escape(destinationTableAlias) + \" ON \" + _this.replacePropertyNames(condition + appendedCondition);\n }\n else { // means many-to-many\n var junctionTableName = relation.junctionEntityMetadata.tablePath;\n var junctionAlias_1 = joinAttr.junctionAlias;\n var junctionCondition = \"\", destinationCondition = \"\";\n if (relation.isOwning) {\n junctionCondition = relation.joinColumns.map(function (joinColumn) {\n // `post_category`.`postId` = `post`.`id`\n return junctionAlias_1 + \".\" + joinColumn.propertyPath + \"=\" + parentAlias + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n destinationCondition = relation.inverseJoinColumns.map(function (joinColumn) {\n // `category`.`id` = `post_category`.`categoryId`\n return destinationTableAlias + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" + junctionAlias_1 + \".\" + joinColumn.propertyPath;\n }).join(\" AND \");\n }\n else {\n junctionCondition = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) {\n // `post_category`.`categoryId` = `category`.`id`\n return junctionAlias_1 + \".\" + joinColumn.propertyPath + \"=\" + parentAlias + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n destinationCondition = relation.inverseRelation.joinColumns.map(function (joinColumn) {\n // `post`.`id` = `post_category`.`postId`\n return destinationTableAlias + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" + junctionAlias_1 + \".\" + joinColumn.propertyPath;\n }).join(\" AND \");\n }\n return \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(junctionTableName) + \" \" + _this.escape(junctionAlias_1) + \" ON \" + _this.replacePropertyNames(junctionCondition) +\n \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(destinationTableName) + \" \" + _this.escape(destinationTableAlias) + \" ON \" + _this.replacePropertyNames(destinationCondition + appendedCondition);\n }\n });\n return joins.join(\" \");\n };\n /**\n * Creates \"GROUP BY\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createGroupByExpression = function () {\n if (!this.expressionMap.groupBys || !this.expressionMap.groupBys.length)\n return \"\";\n return \" GROUP BY \" + this.replacePropertyNames(this.expressionMap.groupBys.join(\", \"));\n };\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createOrderByExpression = function () {\n var _this = this;\n var orderBys = this.expressionMap.allOrderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(function (columnName) {\n if (typeof orderBys[columnName] === \"string\") {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n }\n else {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName].order + \" \" + orderBys[columnName].nulls;\n }\n })\n .join(\", \");\n return \"\";\n };\n /**\n * Creates \"LIMIT\" and \"OFFSET\" parts of SQL query.\n */\n SelectQueryBuilder.prototype.createLimitOffsetExpression = function () {\n // in the case if nothing is joined in the query builder we don't need to make two requests to get paginated results\n // we can use regular limit / offset, that's why we add offset and limit construction here based on skip and take values\n var offset = this.expressionMap.offset, limit = this.expressionMap.limit;\n if (!offset && !limit && this.expressionMap.joinAttributes.length === 0) {\n offset = this.expressionMap.skip;\n limit = this.expressionMap.take;\n }\n if (this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n // Due to a limitation in SQL Server's parser implementation it does not support using\n // OFFSET or FETCH NEXT without an ORDER BY clause being provided. In cases where the\n // user does not request one we insert a dummy ORDER BY that does nothing and should\n // have no effect on the query planner or on the order of the results returned.\n // https://dba.stackexchange.com/a/193799\n var prefix = \"\";\n if ((limit || offset) && Object.keys(this.expressionMap.allOrderBys).length <= 0) {\n prefix = \" ORDER BY (SELECT NULL)\";\n }\n if (limit && offset)\n return prefix + \" OFFSET \" + offset + \" ROWS FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (limit)\n return prefix + \" OFFSET 0 ROWS FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (offset)\n return prefix + \" OFFSET \" + offset + \" ROWS\";\n }\n else if (this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"] || this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n if (limit && offset)\n return \" LIMIT \" + limit + \" OFFSET \" + offset;\n if (limit)\n return \" LIMIT \" + limit;\n if (offset)\n throw new _error_OffsetWithoutLimitNotSupportedError__WEBPACK_IMPORTED_MODULE_17__[\"OffsetWithoutLimitNotSupportedError\"]();\n }\n else if (this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_16__[\"AbstractSqliteDriver\"]) {\n if (limit && offset)\n return \" LIMIT \" + limit + \" OFFSET \" + offset;\n if (limit)\n return \" LIMIT \" + limit;\n if (offset)\n return \" LIMIT -1 OFFSET \" + offset;\n }\n else if (this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) {\n if (limit && offset)\n return \" OFFSET \" + offset + \" ROWS FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (limit)\n return \" FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (offset)\n return \" OFFSET \" + offset + \" ROWS\";\n }\n else {\n if (limit && offset)\n return \" LIMIT \" + limit + \" OFFSET \" + offset;\n if (limit)\n return \" LIMIT \" + limit;\n if (offset)\n return \" OFFSET \" + offset;\n }\n return \"\";\n };\n /**\n * Creates \"LOCK\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createLockExpression = function () {\n var driver = this.connection.driver;\n var lockTablesClause = \"\";\n if (this.expressionMap.lockTables) {\n if (!(driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"])) {\n throw new Error(\"Lock tables not supported in selected driver\");\n }\n if (this.expressionMap.lockTables.length < 1) {\n throw new Error(\"lockTables cannot be an empty array\");\n }\n lockTablesClause = \" OF \" + this.expressionMap.lockTables.join(\", \");\n }\n switch (this.expressionMap.lockMode) {\n case \"pessimistic_read\":\n if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n return \" LOCK IN SHARE MODE\";\n }\n else if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n return \" FOR SHARE\" + lockTablesClause;\n }\n else if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) {\n return \" FOR UPDATE\";\n }\n else if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n return \"\";\n }\n else {\n throw new _error_LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_15__[\"LockNotSupportedOnGivenDriverError\"]();\n }\n case \"pessimistic_write\":\n if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"] || driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"]) {\n return \" FOR UPDATE\";\n }\n else if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n return \" FOR UPDATE\" + lockTablesClause;\n }\n else if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n return \"\";\n }\n else {\n throw new _error_LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_15__[\"LockNotSupportedOnGivenDriverError\"]();\n }\n case \"pessimistic_partial_write\":\n if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n return \" FOR UPDATE\" + lockTablesClause + \" SKIP LOCKED\";\n }\n else if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"]) {\n return \" FOR UPDATE SKIP LOCKED\";\n }\n else {\n throw new _error_LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_15__[\"LockNotSupportedOnGivenDriverError\"]();\n }\n case \"pessimistic_write_or_fail\":\n if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n return \" FOR UPDATE\" + lockTablesClause + \" NOWAIT\";\n }\n else if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"]) {\n return \" FOR UPDATE NOWAIT\";\n }\n else {\n throw new _error_LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_15__[\"LockNotSupportedOnGivenDriverError\"]();\n }\n case \"for_no_key_update\":\n if (driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n return \" FOR NO KEY UPDATE\" + lockTablesClause;\n }\n else {\n throw new _error_LockNotSupportedOnGivenDriverError__WEBPACK_IMPORTED_MODULE_15__[\"LockNotSupportedOnGivenDriverError\"]();\n }\n default:\n return \"\";\n }\n };\n /**\n * Creates \"HAVING\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createHavingExpression = function () {\n var _this = this;\n if (!this.expressionMap.havings || !this.expressionMap.havings.length)\n return \"\";\n var conditions = this.expressionMap.havings.map(function (having, index) {\n switch (having.type) {\n case \"and\":\n return (index > 0 ? \"AND \" : \"\") + _this.replacePropertyNames(having.condition);\n case \"or\":\n return (index > 0 ? \"OR \" : \"\") + _this.replacePropertyNames(having.condition);\n default:\n return _this.replacePropertyNames(having.condition);\n }\n }).join(\" \");\n if (!conditions.length)\n return \"\";\n return \" HAVING \" + conditions;\n };\n SelectQueryBuilder.prototype.buildEscapedEntityColumnSelects = function (aliasName, metadata) {\n var _this = this;\n var hasMainAlias = this.expressionMap.selects.some(function (select) { return select.selection === aliasName; });\n var columns = [];\n if (hasMainAlias) {\n columns.push.apply(columns, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(metadata.columns.filter(function (column) { return column.isSelect === true; }))));\n }\n columns.push.apply(columns, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(metadata.columns.filter(function (column) {\n return _this.expressionMap.selects.some(function (select) { return select.selection === aliasName + \".\" + column.propertyPath; });\n }))));\n // if user used partial selection and did not select some primary columns which are required to be selected\n // we select those primary columns and mark them as \"virtual\". Later virtual column values will be removed from final entity\n // to make entity contain exactly what user selected\n if (columns.length === 0) // however not in the case when nothing (even partial) was selected from this target (for example joins without selection)\n return [];\n var nonSelectedPrimaryColumns = this.expressionMap.queryEntity ? metadata.primaryColumns.filter(function (primaryColumn) { return columns.indexOf(primaryColumn) === -1; }) : [];\n var allColumns = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(columns)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(nonSelectedPrimaryColumns));\n return allColumns.map(function (column) {\n var selection = _this.expressionMap.selects.find(function (select) { return select.selection === aliasName + \".\" + column.propertyPath; });\n var selectionPath = _this.escape(aliasName) + \".\" + _this.escape(column.databaseName);\n if (_this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (_this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || _this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n var useLegacy = _this.connection.driver.options.legacySpatialSupport;\n var asText = useLegacy ? \"AsText\" : \"ST_AsText\";\n selectionPath = asText + \"(\" + selectionPath + \")\";\n }\n if (_this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"])\n // cast to JSON to trigger parsing in the driver\n if (column.precision) {\n selectionPath = \"ST_AsGeoJSON(\" + selectionPath + \", \" + column.precision + \")::json\";\n }\n else {\n selectionPath = \"ST_AsGeoJSON(\" + selectionPath + \")::json\";\n }\n if (_this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"])\n selectionPath = selectionPath + \".ToString()\";\n }\n return {\n selection: selectionPath,\n aliasName: selection && selection.aliasName ? selection.aliasName : _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, aliasName, column.databaseName),\n // todo: need to keep in mind that custom selection.aliasName breaks hydrator. fix it later!\n virtual: selection ? selection.virtual === true : (hasMainAlias ? false : true),\n };\n });\n };\n SelectQueryBuilder.prototype.findEntityColumnSelects = function (aliasName, metadata) {\n var mainSelect = this.expressionMap.selects.find(function (select) { return select.selection === aliasName; });\n if (mainSelect)\n return [mainSelect];\n return this.expressionMap.selects.filter(function (select) {\n return metadata.columns.some(function (column) { return select.selection === aliasName + \".\" + column.propertyPath; });\n });\n };\n SelectQueryBuilder.prototype.computeCountExpression = function () {\n var _this = this;\n var mainAlias = this.expressionMap.mainAlias.name; // todo: will this work with \"fromTableName\"?\n var metadata = this.expressionMap.mainAlias.metadata;\n var primaryColumns = metadata.primaryColumns;\n var distinctAlias = this.escape(mainAlias);\n // If we aren't doing anything that will create a join, we can use a simpler `COUNT` instead\n // so we prevent poor query patterns in the most likely cases\n if (this.expressionMap.joinAttributes.length === 0 &&\n this.expressionMap.relationIdAttributes.length === 0 &&\n this.expressionMap.relationCountAttributes.length === 0) {\n return \"COUNT(1)\";\n }\n // For everything else, we'll need to do some hackery to get the correct count values.\n if (this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"] || this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n // Postgres and CockroachDB can pass multiple parameters to the `DISTINCT` function\n // https://www.postgresql.org/docs/9.5/sql-select.html#SQL-DISTINCT\n return \"COUNT(DISTINCT(\" +\n primaryColumns.map(function (c) { return distinctAlias + \".\" + _this.escape(c.databaseName); }).join(\", \") +\n \"))\";\n }\n if (this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"]) {\n // MySQL & MariaDB can pass multiple parameters to the `DISTINCT` language construct\n // https://mariadb.com/kb/en/count-distinct/\n return \"COUNT(DISTINCT \" +\n primaryColumns.map(function (c) { return distinctAlias + \".\" + _this.escape(c.databaseName); }).join(\", \") +\n \")\";\n }\n if (this.connection.driver instanceof _driver_sap_SapDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n // SQL Server has gotta be different from everyone else. They don't support\n // distinct counting multiple columns & they don't have the same operator\n // characteristic for concatenating, so we gotta use the `CONCAT` function.\n // However, If it's exactly 1 column we can omit the `CONCAT` for better performance.\n var columnsExpression = primaryColumns.map(function (primaryColumn) { return distinctAlias + \".\" + _this.escape(primaryColumn.databaseName); }).join(\", '|;|', \");\n if (primaryColumns.length === 1) {\n return \"COUNT(DISTINCT(\" + columnsExpression + \"))\";\n }\n return \"COUNT(DISTINCT(CONCAT(\" + columnsExpression + \")))\";\n }\n // If all else fails, fall back to a `COUNT` and `DISTINCT` across all the primary columns concatenated.\n // Per the SQL spec, this is the canonical string concatenation mechanism which is most\n // likely to work across servers implementing the SQL standard.\n // Please note, if there is only one primary column that the concatenation does not occur in this\n // query and the query is a standard `COUNT DISTINCT` in that case.\n return \"COUNT(DISTINCT(\" +\n primaryColumns.map(function (c) { return distinctAlias + \".\" + _this.escape(c.databaseName); }).join(\" || '|;|' || \") +\n \"))\";\n };\n SelectQueryBuilder.prototype.executeCountQuery = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var countSql, results;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n countSql = this.computeCountExpression();\n return [4 /*yield*/, this.clone()\n .orderBy()\n .groupBy()\n .offset(undefined)\n .limit(undefined)\n .skip(undefined)\n .take(undefined)\n .select(countSql, \"cnt\")\n .setOption(\"disable-global-order\")\n .loadRawResults(queryRunner)];\n case 1:\n results = _a.sent();\n if (!results || !results[0] || !results[0][\"cnt\"])\n return [2 /*return*/, 0];\n return [2 /*return*/, parseInt(results[0][\"cnt\"])];\n }\n });\n });\n };\n /**\n * Executes sql generated by query builder and returns object with raw results and entities created from them.\n */\n SelectQueryBuilder.prototype.executeEntitiesAndRawResults = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var metadata, relationIdLoader, relationCountLoader, relationIdMetadataTransformer, relationCountMetadataTransformer, rawResults, entities, _a, selects, orderBys_1, metadata_1, mainAliasName_1, querySelects, condition, parameters_1, alias_1, ids, areAllNumbers, rawRelationIdResults, rawRelationCountResults, transformer, broadcastResult;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Alias is not set. Use \\\"from\\\" method to set an alias.\");\n if ((this.expressionMap.lockMode === \"pessimistic_read\" || this.expressionMap.lockMode === \"pessimistic_write\" || this.expressionMap.lockMode === \"pessimistic_partial_write\" || this.expressionMap.lockMode === \"pessimistic_write_or_fail\" || this.expressionMap.lockMode === \"for_no_key_update\") && !queryRunner.isTransactionActive)\n throw new _error_PessimisticLockTransactionRequiredError__WEBPACK_IMPORTED_MODULE_3__[\"PessimisticLockTransactionRequiredError\"]();\n if (this.expressionMap.lockMode === \"optimistic\") {\n metadata = this.expressionMap.mainAlias.metadata;\n if (!metadata.versionColumn && !metadata.updateDateColumn)\n throw new _error_NoVersionOrUpdateDateColumnError__WEBPACK_IMPORTED_MODULE_4__[\"NoVersionOrUpdateDateColumnError\"](metadata.name);\n }\n relationIdLoader = new _relation_id_RelationIdLoader__WEBPACK_IMPORTED_MODULE_10__[\"RelationIdLoader\"](this.connection, queryRunner, this.expressionMap.relationIdAttributes);\n relationCountLoader = new _relation_count_RelationCountLoader__WEBPACK_IMPORTED_MODULE_12__[\"RelationCountLoader\"](this.connection, queryRunner, this.expressionMap.relationCountAttributes);\n relationIdMetadataTransformer = new _relation_id_RelationIdMetadataToAttributeTransformer__WEBPACK_IMPORTED_MODULE_11__[\"RelationIdMetadataToAttributeTransformer\"](this.expressionMap);\n relationIdMetadataTransformer.transform();\n relationCountMetadataTransformer = new _relation_count_RelationCountMetadataToAttributeTransformer__WEBPACK_IMPORTED_MODULE_13__[\"RelationCountMetadataToAttributeTransformer\"](this.expressionMap);\n relationCountMetadataTransformer.transform();\n rawResults = [], entities = [];\n if (!((this.expressionMap.skip || this.expressionMap.take) && this.expressionMap.joinAttributes.length > 0)) return [3 /*break*/, 4];\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.createOrderByCombinedWithSelectExpression(\"distinctAlias\"), 2), selects = _a[0], orderBys_1 = _a[1];\n metadata_1 = this.expressionMap.mainAlias.metadata;\n mainAliasName_1 = this.expressionMap.mainAlias.name;\n querySelects = metadata_1.primaryColumns.map(function (primaryColumn) {\n var distinctAlias = _this.escape(\"distinctAlias\");\n var columnAlias = _this.escape(_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, mainAliasName_1, primaryColumn.databaseName));\n if (!orderBys_1[columnAlias]) // make sure we aren't overriding user-defined order in inverse direction\n orderBys_1[columnAlias] = \"ASC\";\n var alias = _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, \"ids_\" + mainAliasName_1, primaryColumn.databaseName);\n return distinctAlias + \".\" + columnAlias + \" as \\\"\" + alias + \"\\\"\";\n });\n return [4 /*yield*/, new SelectQueryBuilder(this.connection, queryRunner)\n .select(\"DISTINCT \" + querySelects.join(\", \"))\n .addSelect(selects)\n .from(\"(\" + this.clone().orderBy().getQuery() + \")\", \"distinctAlias\")\n .offset(this.expressionMap.skip)\n .limit(this.expressionMap.take)\n .orderBy(orderBys_1)\n .cache(this.expressionMap.cache ? this.expressionMap.cache : this.expressionMap.cacheId, this.expressionMap.cacheDuration)\n .setParameters(this.getParameters())\n .setNativeParameters(this.expressionMap.nativeParameters)\n .getRawMany()];\n case 1:\n rawResults = _b.sent();\n if (!(rawResults.length > 0)) return [3 /*break*/, 3];\n condition = \"\";\n parameters_1 = {};\n if (metadata_1.hasMultiplePrimaryKeys) {\n condition = rawResults.map(function (result, index) {\n return metadata_1.primaryColumns.map(function (primaryColumn) {\n var paramKey = \"orm_distinct_ids_\" + index + \"_\" + primaryColumn.databaseName;\n parameters_1[paramKey] = result[\"ids_\" + mainAliasName_1 + \"_\" + primaryColumn.databaseName];\n return mainAliasName_1 + \".\" + primaryColumn.propertyPath + \"=:\" + paramKey;\n }).join(\" AND \");\n }).join(\" OR \");\n }\n else {\n alias_1 = _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildColumnAlias(this.connection.driver, \"ids_\" + mainAliasName_1, metadata_1.primaryColumns[0].databaseName);\n ids = rawResults.map(function (result) { return result[alias_1]; });\n areAllNumbers = ids.every(function (id) { return typeof id === \"number\"; });\n if (areAllNumbers) {\n // fixes #190. if all numbers then its safe to perform query without parameter\n condition = mainAliasName_1 + \".\" + metadata_1.primaryColumns[0].propertyPath + \" IN (\" + ids.join(\", \") + \")\";\n }\n else {\n parameters_1[\"orm_distinct_ids\"] = ids;\n condition = mainAliasName_1 + \".\" + metadata_1.primaryColumns[0].propertyPath + \" IN (:...orm_distinct_ids)\";\n }\n }\n return [4 /*yield*/, this.clone()\n .mergeExpressionMap({ extraAppendedAndWhereCondition: condition })\n .setParameters(parameters_1)\n .loadRawResults(queryRunner)];\n case 2:\n rawResults = _b.sent();\n _b.label = 3;\n case 3: return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, this.loadRawResults(queryRunner)];\n case 5:\n rawResults = _b.sent();\n _b.label = 6;\n case 6:\n if (!(rawResults.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, relationIdLoader.load(rawResults)];\n case 7:\n rawRelationIdResults = _b.sent();\n return [4 /*yield*/, relationCountLoader.load(rawResults)];\n case 8:\n rawRelationCountResults = _b.sent();\n transformer = new _transformer_RawSqlResultsToEntityTransformer__WEBPACK_IMPORTED_MODULE_2__[\"RawSqlResultsToEntityTransformer\"](this.expressionMap, this.connection.driver, rawRelationIdResults, rawRelationCountResults, this.queryRunner);\n entities = transformer.transform(rawResults, this.expressionMap.mainAlias);\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_18__[\"BroadcasterResult\"]();\n queryRunner.broadcaster.broadcastLoadEventsForAll(broadcastResult, this.expressionMap.mainAlias.metadata, entities);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10: return [2 /*return*/, {\n raw: rawResults,\n entities: entities,\n }];\n }\n });\n });\n };\n SelectQueryBuilder.prototype.createOrderByCombinedWithSelectExpression = function (parentAlias) {\n var _this = this;\n // if table has a default order then apply it\n var orderBys = this.expressionMap.allOrderBys;\n var selectString = Object.keys(orderBys)\n .map(function (orderCriteria) {\n if (orderCriteria.indexOf(\".\") !== -1) {\n var criteriaParts = orderCriteria.split(\".\");\n var aliasName = criteriaParts[0];\n var propertyPath = criteriaParts.slice(1).join(\".\");\n var alias = _this.expressionMap.findAliasByName(aliasName);\n var column = alias.metadata.findColumnWithPropertyPath(propertyPath);\n return _this.escape(parentAlias) + \".\" + _this.escape(_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, aliasName, column.databaseName));\n }\n else {\n if (_this.expressionMap.selects.find(function (select) { return select.selection === orderCriteria || select.aliasName === orderCriteria; }))\n return _this.escape(parentAlias) + \".\" + orderCriteria;\n return \"\";\n }\n })\n .join(\", \");\n var orderByObject = {};\n Object.keys(orderBys).forEach(function (orderCriteria) {\n if (orderCriteria.indexOf(\".\") !== -1) {\n var criteriaParts = orderCriteria.split(\".\");\n var aliasName = criteriaParts[0];\n var propertyPath = criteriaParts.slice(1).join(\".\");\n var alias = _this.expressionMap.findAliasByName(aliasName);\n var column = alias.metadata.findColumnWithPropertyPath(propertyPath);\n orderByObject[_this.escape(parentAlias) + \".\" + _this.escape(_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_20__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, aliasName, column.databaseName))] = orderBys[orderCriteria];\n }\n else {\n if (_this.expressionMap.selects.find(function (select) { return select.selection === orderCriteria || select.aliasName === orderCriteria; })) {\n orderByObject[_this.escape(parentAlias) + \".\" + orderCriteria] = orderBys[orderCriteria];\n }\n else {\n orderByObject[orderCriteria] = orderBys[orderCriteria];\n }\n }\n });\n return [selectString, orderByObject];\n };\n /**\n * Loads raw results from the database.\n */\n SelectQueryBuilder.prototype.loadRawResults = function (queryRunner) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, sql, parameters, queryId, cacheOptions, savedQueryResultCacheOptions, results;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryId = sql + \" -- PARAMETERS: \" + JSON.stringify(parameters);\n cacheOptions = typeof this.connection.options.cache === \"object\" ? this.connection.options.cache : {};\n savedQueryResultCacheOptions = undefined;\n if (!(this.connection.queryResultCache && (this.expressionMap.cache || cacheOptions.alwaysEnabled))) return [3 /*break*/, 2];\n return [4 /*yield*/, this.connection.queryResultCache.getFromCache({\n identifier: this.expressionMap.cacheId,\n query: queryId,\n duration: this.expressionMap.cacheDuration || cacheOptions.duration || 1000\n }, queryRunner)];\n case 1:\n savedQueryResultCacheOptions = _b.sent();\n if (savedQueryResultCacheOptions && !this.connection.queryResultCache.isExpired(savedQueryResultCacheOptions))\n return [2 /*return*/, JSON.parse(savedQueryResultCacheOptions.result)];\n _b.label = 2;\n case 2: return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 3:\n results = _b.sent();\n if (!(this.connection.queryResultCache && (this.expressionMap.cache || cacheOptions.alwaysEnabled))) return [3 /*break*/, 5];\n return [4 /*yield*/, this.connection.queryResultCache.storeInCache({\n identifier: this.expressionMap.cacheId,\n query: queryId,\n time: new Date().getTime(),\n duration: this.expressionMap.cacheDuration || cacheOptions.duration || 1000,\n result: JSON.stringify(results)\n }, savedQueryResultCacheOptions, queryRunner)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/, results];\n }\n });\n });\n };\n /**\n * Merges into expression map given expression map properties.\n */\n SelectQueryBuilder.prototype.mergeExpressionMap = function (expressionMap) {\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_19__[\"ObjectUtils\"].assign(this.expressionMap, expressionMap);\n return this;\n };\n /**\n * Normalizes a give number - converts to int if possible.\n */\n SelectQueryBuilder.prototype.normalizeNumber = function (num) {\n if (typeof num === \"number\" || num === undefined || num === null)\n return num;\n return Number(num);\n };\n /**\n * Creates a query builder used to execute sql queries inside this query builder.\n */\n SelectQueryBuilder.prototype.obtainQueryRunner = function () {\n return this.queryRunner || this.connection.createQueryRunner(\"slave\");\n };\n return SelectQueryBuilder;\n}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_14__[\"QueryBuilder\"]));\n\n\n//# sourceMappingURL=SelectQueryBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/SoftDeleteQueryBuilder.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/SoftDeleteQueryBuilder.js ***! - \******************************************************************************/ -/*! exports provided: SoftDeleteQueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SoftDeleteQueryBuilder\", function() { return SoftDeleteQueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/cockroachdb/CockroachDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./QueryBuilder */ \"./node_modules/typeorm/browser/query-builder/QueryBuilder.js\");\n/* harmony import */ var _result_UpdateResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./result/UpdateResult */ \"./node_modules/typeorm/browser/query-builder/result/UpdateResult.js\");\n/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/ReturningStatementNotSupportedError */ \"./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js\");\n/* harmony import */ var _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ReturningResultsEntityUpdator */ \"./node_modules/typeorm/browser/query-builder/ReturningResultsEntityUpdator.js\");\n/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../driver/sqljs/SqljsDriver */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../driver/sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../error/LimitOnUpdateNotSupportedError */ \"./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js\");\n/* harmony import */ var _error_MissingDeleteDateColumnError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../error/MissingDeleteDateColumnError */ \"./node_modules/typeorm/browser/error/MissingDeleteDateColumnError.js\");\n/* harmony import */ var _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../error/UpdateValuesMissingError */ \"./node_modules/typeorm/browser/error/UpdateValuesMissingError.js\");\n/* harmony import */ var _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../entity-schema/EntitySchema */ \"./node_modules/typeorm/browser/entity-schema/EntitySchema.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar SoftDeleteQueryBuilder = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(SoftDeleteQueryBuilder, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SoftDeleteQueryBuilder(connectionOrQueryBuilder, queryRunner) {\n var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this;\n _this.expressionMap.aliasNamePrefixingEnabled = false;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n SoftDeleteQueryBuilder.prototype.getQuery = function () {\n var sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n SoftDeleteQueryBuilder.prototype.execute = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, broadcastResult, returningResultsEntityUpdator, _a, sql, parameters, updateResult, result, driver, broadcastResult, error_1, rollbackError_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 13, 18, 23]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n returningResultsEntityUpdator = new _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_5__[\"ReturningResultsEntityUpdator\"](queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n }\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n updateResult = new _result_UpdateResult__WEBPACK_IMPORTED_MODULE_3__[\"UpdateResult\"]();\n return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 6:\n result = _b.sent();\n driver = queryRunner.connection.driver;\n if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else {\n updateResult.raw = result;\n }\n if (!(this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0)) return [3 /*break*/, 8];\n return [4 /*yield*/, returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[\"BroadcasterResult\"]();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10:\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [2 /*return*/, updateResult];\n case 13:\n error_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 17];\n _b.label = 14;\n case 14:\n _b.trys.push([14, 16, , 17]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 15:\n _b.sent();\n return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20];\n return [4 /*yield*/, queryRunner.release()];\n case 19:\n _b.sent();\n _b.label = 20;\n case 20:\n if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_6__[\"SqljsDriver\"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 22];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 21:\n _b.sent();\n _b.label = 22;\n case 22: return [7 /*endfinally*/];\n case 23: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Specifies FROM which entity's table select/update/delete/soft-delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n SoftDeleteQueryBuilder.prototype.from = function (entityTarget, aliasName) {\n entityTarget = entityTarget instanceof _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_12__[\"EntitySchema\"] ? entityTarget.options.name : entityTarget;\n var mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n SoftDeleteQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SoftDeleteQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SoftDeleteQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n SoftDeleteQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n SoftDeleteQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n SoftDeleteQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Optional returning/output clause.\n */\n SoftDeleteQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n SoftDeleteQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__[\"ReturningStatementNotSupportedError\"]();\n this.expressionMap.returning = returning;\n return this;\n };\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n SoftDeleteQueryBuilder.prototype.orderBy = function (sort, order, nulls) {\n var _a, _b;\n if (order === void 0) { order = \"ASC\"; }\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort;\n }\n else {\n if (nulls) {\n this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a);\n }\n else {\n this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b);\n }\n }\n }\n else {\n this.expressionMap.orderBys = {};\n }\n return this;\n };\n /**\n * Adds ORDER BY condition in the query builder.\n */\n SoftDeleteQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) {\n if (order === void 0) { order = \"ASC\"; }\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order: order, nulls: nulls };\n }\n else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n };\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n SoftDeleteQueryBuilder.prototype.limit = function (limit) {\n this.expressionMap.limit = limit;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n SoftDeleteQueryBuilder.prototype.whereEntity = function (entity) {\n var _this = this;\n if (!this.expressionMap.mainAlias.hasMetadata)\n throw new Error(\".whereEntity method can only be used on queries which update real entity table.\");\n this.expressionMap.wheres = [];\n var entities = Array.isArray(entity) ? entity : [entity];\n entities.forEach(function (entity) {\n var entityIdMap = _this.expressionMap.mainAlias.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(\"Provided entity does not have ids set, cannot perform operation.\");\n _this.orWhereInIds(entityIdMap);\n });\n this.expressionMap.whereEntities = entities;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n SoftDeleteQueryBuilder.prototype.updateEntity = function (enabled) {\n this.expressionMap.updateEntity = enabled;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates UPDATE express used to perform insert query.\n */\n SoftDeleteQueryBuilder.prototype.createUpdateExpression = function () {\n var metadata = this.expressionMap.mainAlias.hasMetadata ? this.expressionMap.mainAlias.metadata : undefined;\n if (!metadata)\n throw new Error(\"Cannot get entity metadata for the given alias \\\"\" + this.expressionMap.mainAlias + \"\\\"\");\n if (!metadata.deleteDateColumn) {\n throw new _error_MissingDeleteDateColumnError__WEBPACK_IMPORTED_MODULE_10__[\"MissingDeleteDateColumnError\"](metadata);\n }\n // prepare columns and values to be updated\n var updateColumnAndValues = [];\n var newParameters = {};\n switch (this.expressionMap.queryType) {\n case \"soft-delete\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\");\n break;\n case \"restore\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = NULL\");\n break;\n default:\n throw new Error(\"The queryType must be \\\"soft-delete\\\" or \\\"restore\\\"\");\n }\n if (metadata.versionColumn)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n if (updateColumnAndValues.length <= 0) {\n throw new _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__[\"UpdateValuesMissingError\"]();\n }\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] ||\n this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] ||\n this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[\"AbstractSqliteDriver\"]) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n // get a table name and all column database names\n var whereExpression = this.createWhereExpression();\n var returningExpression = this.createReturningExpression();\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"])) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression + \" RETURNING \" + returningExpression;\n }\n else if (returningExpression && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + \" OUTPUT \" + returningExpression + whereExpression;\n }\n else {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression; // todo: how do we replace aliases in where to nothing?\n }\n };\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n SoftDeleteQueryBuilder.prototype.createOrderByExpression = function () {\n var _this = this;\n var orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(function (columnName) {\n if (typeof orderBys[columnName] === \"string\") {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n }\n else {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName].order + \" \" + orderBys[columnName].nulls;\n }\n })\n .join(\", \");\n return \"\";\n };\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n SoftDeleteQueryBuilder.prototype.createLimitExpression = function () {\n var limit = this.expressionMap.limit;\n if (limit) {\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"]) {\n return \" LIMIT \" + limit;\n }\n else {\n throw new _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_9__[\"LimitOnUpdateNotSupportedError\"]();\n }\n }\n return \"\";\n };\n return SoftDeleteQueryBuilder;\n}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[\"QueryBuilder\"]));\n\n\n//# sourceMappingURL=SoftDeleteQueryBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/SoftDeleteQueryBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/UpdateQueryBuilder.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/UpdateQueryBuilder.js ***! - \**************************************************************************/ -/*! exports provided: UpdateQueryBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UpdateQueryBuilder\", function() { return UpdateQueryBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/cockroachdb/CockroachDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./QueryBuilder */ \"./node_modules/typeorm/browser/query-builder/QueryBuilder.js\");\n/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../metadata/EntityMetadata */ \"./node_modules/typeorm/browser/metadata/EntityMetadata.js\");\n/* harmony import */ var _result_UpdateResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./result/UpdateResult */ \"./node_modules/typeorm/browser/query-builder/result/UpdateResult.js\");\n/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/ReturningStatementNotSupportedError */ \"./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js\");\n/* harmony import */ var _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ReturningResultsEntityUpdator */ \"./node_modules/typeorm/browser/query-builder/ReturningResultsEntityUpdator.js\");\n/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../driver/sqljs/SqljsDriver */ \"./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js\");\n/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../subscriber/BroadcasterResult */ \"./node_modules/typeorm/browser/subscriber/BroadcasterResult.js\");\n/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../driver/sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n/* harmony import */ var _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../error/LimitOnUpdateNotSupportedError */ \"./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js\");\n/* harmony import */ var _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../error/UpdateValuesMissingError */ \"./node_modules/typeorm/browser/error/UpdateValuesMissingError.js\");\n/* harmony import */ var _error_EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../error/EntityColumnNotFound */ \"./node_modules/typeorm/browser/error/EntityColumnNotFound.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar UpdateQueryBuilder = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(UpdateQueryBuilder, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function UpdateQueryBuilder(connectionOrQueryBuilder, queryRunner) {\n var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this;\n _this.expressionMap.aliasNamePrefixingEnabled = false;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n UpdateQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n UpdateQueryBuilder.prototype.execute = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, broadcastResult, declareSql, selectOutputSql, returningResultsEntityUpdator, _a, updateSql, parameters, updateResult, statements, result, broadcastResult, error_1, rollbackError_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 13, 18, 23]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_8__[\"BroadcasterResult\"]();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata, this.expressionMap.valuesSet);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n declareSql = null;\n selectOutputSql = null;\n returningResultsEntityUpdator = new _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_6__[\"ReturningResultsEntityUpdator\"](queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", this.expressionMap.extraReturningColumns);\n selectOutputSql = \"SELECT * FROM @OutputTable\";\n }\n }\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.getQueryAndParameters(), 2), updateSql = _a[0], parameters = _a[1];\n updateResult = new _result_UpdateResult__WEBPACK_IMPORTED_MODULE_4__[\"UpdateResult\"]();\n statements = [declareSql, updateSql, selectOutputSql];\n return [4 /*yield*/, queryRunner.query(statements.filter(function (sql) { return sql != null; }).join(\";\\n\\n\"), parameters)];\n case 6:\n result = _b.sent();\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"]) {\n updateResult.raw = result;\n updateResult.affected = result.affectedRows;\n }\n else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n updateResult.raw = result;\n updateResult.affected = result.numberOfRecordsUpdated;\n }\n else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"BetterSqlite3Driver\"]) { // only works for better-sqlite3\n updateResult.raw = result;\n updateResult.affected = result.changes;\n }\n else {\n updateResult.raw = result;\n }\n if (!(this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0)) return [3 /*break*/, 8];\n return [4 /*yield*/, returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_8__[\"BroadcasterResult\"]();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10:\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [2 /*return*/, updateResult];\n case 13:\n error_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 17];\n _b.label = 14;\n case 14:\n _b.trys.push([14, 16, , 17]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 15:\n _b.sent();\n return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20];\n return [4 /*yield*/, queryRunner.release()];\n case 19:\n _b.sent();\n _b.label = 20;\n case 20:\n if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_7__[\"SqljsDriver\"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 22];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 21:\n _b.sent();\n _b.label = 22;\n case 22: return [7 /*endfinally*/];\n case 23: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Values needs to be updated.\n */\n UpdateQueryBuilder.prototype.set = function (values) {\n this.expressionMap.valuesSet = values;\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n UpdateQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n UpdateQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n UpdateQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n UpdateQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n UpdateQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n UpdateQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Optional returning/output clause.\n */\n UpdateQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n UpdateQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__[\"ReturningStatementNotSupportedError\"]();\n this.expressionMap.returning = returning;\n return this;\n };\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n UpdateQueryBuilder.prototype.orderBy = function (sort, order, nulls) {\n var _a, _b;\n if (order === void 0) { order = \"ASC\"; }\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort;\n }\n else {\n if (nulls) {\n this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a);\n }\n else {\n this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b);\n }\n }\n }\n else {\n this.expressionMap.orderBys = {};\n }\n return this;\n };\n /**\n * Adds ORDER BY condition in the query builder.\n */\n UpdateQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) {\n if (order === void 0) { order = \"ASC\"; }\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order: order, nulls: nulls };\n }\n else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n };\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n UpdateQueryBuilder.prototype.limit = function (limit) {\n this.expressionMap.limit = limit;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n UpdateQueryBuilder.prototype.whereEntity = function (entity) {\n var _this = this;\n if (!this.expressionMap.mainAlias.hasMetadata)\n throw new Error(\".whereEntity method can only be used on queries which update real entity table.\");\n this.expressionMap.wheres = [];\n var entities = Array.isArray(entity) ? entity : [entity];\n entities.forEach(function (entity) {\n var entityIdMap = _this.expressionMap.mainAlias.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(\"Provided entity does not have ids set, cannot perform operation.\");\n _this.orWhereInIds(entityIdMap);\n });\n this.expressionMap.whereEntities = entities;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n UpdateQueryBuilder.prototype.updateEntity = function (enabled) {\n this.expressionMap.updateEntity = enabled;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates UPDATE express used to perform insert query.\n */\n UpdateQueryBuilder.prototype.createUpdateExpression = function () {\n var _this = this;\n var valuesSet = this.getValueSet();\n var metadata = this.expressionMap.mainAlias.hasMetadata ? this.expressionMap.mainAlias.metadata : undefined;\n // prepare columns and values to be updated\n var updateColumnAndValues = [];\n var updatedColumns = [];\n var newParameters = {};\n var parametersCount = this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] ||\n this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"] ||\n this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] ||\n this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[\"AbstractSqliteDriver\"] ||\n this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]\n ? 0 : Object.keys(this.expressionMap.nativeParameters).length;\n if (metadata) {\n _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__[\"EntityMetadata\"].createPropertyPath(metadata, valuesSet).forEach(function (propertyPath) {\n // todo: make this and other query builder to work with properly with tables without metadata\n var columns = metadata.findColumnsWithPropertyPath(propertyPath);\n if (columns.length <= 0) {\n throw new _error_EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_12__[\"EntityColumnNotFound\"](propertyPath);\n }\n columns.forEach(function (column) {\n if (!column.isUpdate) {\n return;\n }\n updatedColumns.push(column);\n var paramName = \"upd_\" + column.databaseName;\n //\n var value = column.getEntityValue(valuesSet);\n if (column.referencedColumn && value instanceof Object) {\n value = column.referencedColumn.getEntityValue(value);\n }\n else if (!(value instanceof Function)) {\n value = _this.connection.driver.preparePersistentValue(value, column);\n }\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(_this.escape(column.databaseName) + \" = \" + value());\n }\n else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"] && value === null) {\n updateColumnAndValues.push(_this.escape(column.databaseName) + \" = NULL\");\n }\n else {\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n value = _this.connection.driver.parametrizeValue(column, value);\n // } else if (value instanceof Array) {\n // value = new ArrayParameter(value);\n }\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] ||\n _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"] ||\n _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] ||\n _this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[\"AbstractSqliteDriver\"] ||\n _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n newParameters[paramName] = value;\n }\n else {\n _this.expressionMap.nativeParameters[paramName] = value;\n }\n var expression = null;\n if ((_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n var useLegacy = _this.connection.driver.options.legacySpatialSupport;\n var geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression = geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \", \" + column.srid + \")\";\n }\n else {\n expression = geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \")\";\n }\n }\n else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression = \"ST_SetSRID(ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \"), \" + column.srid + \")::\" + column.type;\n }\n else {\n expression = \"ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \")::\" + column.type;\n }\n }\n else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression = column.type + \"::STGeomFromText(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \", \" + (column.srid || \"0\") + \")\";\n }\n else {\n expression = _this.connection.driver.createParameter(paramName, parametersCount);\n }\n updateColumnAndValues.push(_this.escape(column.databaseName) + \" = \" + expression);\n parametersCount++;\n }\n });\n });\n if (metadata.versionColumn && updatedColumns.indexOf(metadata.versionColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn && updatedColumns.indexOf(metadata.updateDateColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n }\n else {\n Object.keys(valuesSet).map(function (key) {\n var value = valuesSet[key];\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(_this.escape(key) + \" = \" + value());\n }\n else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"] && value === null) {\n updateColumnAndValues.push(_this.escape(key) + \" = NULL\");\n }\n else {\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] ||\n _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"] ||\n _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] ||\n _this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[\"AbstractSqliteDriver\"] ||\n _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n newParameters[key] = value;\n }\n else {\n _this.expressionMap.nativeParameters[key] = value;\n }\n updateColumnAndValues.push(_this.escape(key) + \" = \" + _this.connection.driver.createParameter(key, parametersCount));\n parametersCount++;\n }\n });\n }\n if (updateColumnAndValues.length <= 0) {\n throw new _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__[\"UpdateValuesMissingError\"]();\n }\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] ||\n this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"] ||\n this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] ||\n this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[\"AbstractSqliteDriver\"] ||\n this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SapDriver\"]) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n // get a table name and all column database names\n var whereExpression = this.createWhereExpression();\n var returningExpression = this.createReturningExpression();\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"OracleDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"])) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression + \" RETURNING \" + returningExpression;\n }\n else if (returningExpression && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"SqlServerDriver\"]) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + \" OUTPUT \" + returningExpression + whereExpression;\n }\n else {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression; // todo: how do we replace aliases in where to nothing?\n }\n };\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n UpdateQueryBuilder.prototype.createOrderByExpression = function () {\n var _this = this;\n var orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(function (columnName) {\n if (typeof orderBys[columnName] === \"string\") {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n }\n else {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName].order + \" \" + orderBys[columnName].nulls;\n }\n })\n .join(\", \");\n return \"\";\n };\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n UpdateQueryBuilder.prototype.createLimitExpression = function () {\n var limit = this.expressionMap.limit;\n if (limit) {\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"]) {\n return \" LIMIT \" + limit;\n }\n else {\n throw new _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_10__[\"LimitOnUpdateNotSupportedError\"]();\n }\n }\n return \"\";\n };\n /**\n * Gets array of values need to be inserted into the target table.\n */\n UpdateQueryBuilder.prototype.getValueSet = function () {\n if (this.expressionMap.valuesSet instanceof Object)\n return this.expressionMap.valuesSet;\n throw new _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__[\"UpdateValuesMissingError\"]();\n };\n return UpdateQueryBuilder;\n}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[\"QueryBuilder\"]));\n\n\n//# sourceMappingURL=UpdateQueryBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/UpdateQueryBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js ***! - \*********************************************************************************************/ -/*! exports provided: RelationCountAttribute */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationCountAttribute\", function() { return RelationCountAttribute; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../QueryBuilderUtils */ \"./node_modules/typeorm/browser/query-builder/QueryBuilderUtils.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n\n\n\nvar RelationCountAttribute = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationCountAttribute(expressionMap, relationCountAttribute) {\n this.expressionMap = expressionMap;\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__[\"ObjectUtils\"].assign(this, relationCountAttribute || {});\n }\n Object.defineProperty(RelationCountAttribute.prototype, \"joinInverseSideMetadata\", {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n get: function () {\n return this.relation.inverseEntityMetadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"parentAlias\", {\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n return this.relationName.split(\".\")[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"relationProperty\", {\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.relationName))\n throw new Error(\"Given value is a string representation of alias property\");\n return this.relationName.split(\".\")[1];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"junctionAlias\", {\n get: function () {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.relationName.split(\".\"), 2), parentAlias = _a[0], relationProperty = _a[1];\n return parentAlias + \"_\" + relationProperty + \"_rc\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"relation\", {\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.relationName))\n throw new Error(\"Given value is a string representation of alias property\");\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.relationName.split(\".\"), 2), parentAlias = _a[0], propertyPath = _a[1];\n var relationOwnerSelection = this.expressionMap.findAliasByName(parentAlias);\n var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(\"Relation with property path \" + propertyPath + \" in entity was not found.\");\n return relation;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"metadata\", {\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.relationName))\n throw new Error(\"Given value is a string representation of alias property\");\n var parentAlias = this.relationName.split(\".\")[0];\n var selection = this.expressionMap.findAliasByName(parentAlias);\n return selection.metadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"mapToPropertyPropertyName\", {\n get: function () {\n return this.mapToProperty.split(\".\")[1];\n },\n enumerable: false,\n configurable: true\n });\n return RelationCountAttribute;\n}());\n\n\n//# sourceMappingURL=RelationCountAttribute.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/relation-count/RelationCountLoader.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/relation-count/RelationCountLoader.js ***! - \******************************************************************************************/ -/*! exports provided: RelationCountLoader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationCountLoader\", function() { return RelationCountLoader; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar RelationCountLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationCountLoader(connection, queryRunner, relationCountAttributes) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n this.relationCountAttributes = relationCountAttributes;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationCountLoader.prototype.load = function (rawEntities) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var onlyUnique, promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n onlyUnique = function (value, index, self) {\n return self.indexOf(value) === index;\n };\n promises = this.relationCountAttributes.map(function (relationCountAttr) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var relation, inverseRelation, referenceColumnName_1, inverseSideTable, inverseSideTableName, inverseSideTableAlias, inverseSidePropertyName, referenceColumnValues, qb, joinTableColumnName_1, inverseJoinColumnName, firstJunctionColumn, secondJunctionColumn, referenceColumnValues, junctionAlias, inverseSideTableName, inverseSideTableAlias, junctionTableName, condition, qb;\n var _a, _b;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!relationCountAttr.relation.isOneToMany) return [3 /*break*/, 2];\n relation = relationCountAttr.relation;\n inverseRelation = relation.inverseRelation;\n referenceColumnName_1 = inverseRelation.joinColumns[0].referencedColumn.propertyName;\n inverseSideTable = relation.inverseEntityMetadata.target;\n inverseSideTableName = relation.inverseEntityMetadata.tableName;\n inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n inverseSidePropertyName = inverseRelation.propertyName;\n referenceColumnValues = rawEntities\n .map(function (rawEntity) { return rawEntity[relationCountAttr.parentAlias + \"_\" + referenceColumnName_1]; })\n .filter(function (value) { return !!value; });\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return [2 /*return*/, { relationCountAttribute: relationCountAttr, results: [] }];\n qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(inverseSideTableAlias + \".\" + inverseSidePropertyName, \"parentId\")\n .addSelect(\"COUNT(*)\", \"cnt\")\n .from(inverseSideTable, inverseSideTableAlias)\n .where(inverseSideTableAlias + \".\" + inverseSidePropertyName + \" IN (:...ids)\")\n .addGroupBy(inverseSideTableAlias + \".\" + inverseSidePropertyName)\n .setParameter(\"ids\", referenceColumnValues);\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n _a = {\n relationCountAttribute: relationCountAttr\n };\n return [4 /*yield*/, qb.getRawMany()];\n case 1: return [2 /*return*/, (_a.results = _c.sent(),\n _a)];\n case 2:\n inverseJoinColumnName = void 0;\n firstJunctionColumn = void 0;\n secondJunctionColumn = void 0;\n if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0].\n joinTableColumnName_1 = relationCountAttr.relation.joinColumns[0].referencedColumn.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[0];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[1];\n }\n else {\n joinTableColumnName_1 = relationCountAttr.relation.inverseRelation.inverseJoinColumns[0].referencedColumn.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseRelation.joinColumns[0].referencedColumn.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[1];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[0];\n }\n referenceColumnValues = rawEntities\n .map(function (rawEntity) { return rawEntity[relationCountAttr.parentAlias + \"_\" + joinTableColumnName_1]; })\n .filter(function (value) { return !!value; });\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return [2 /*return*/, { relationCountAttribute: relationCountAttr, results: [] }];\n junctionAlias = relationCountAttr.junctionAlias;\n inverseSideTableName = relationCountAttr.joinInverseSideMetadata.tableName;\n inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n junctionTableName = relationCountAttr.relation.junctionEntityMetadata.tableName;\n condition = junctionAlias + \".\" + firstJunctionColumn.propertyName + \" IN (\" + referenceColumnValues.map(function (vals) { return isNaN(vals) ? \"'\" + vals + \"'\" : vals; }) + \")\" +\n \" AND \" + junctionAlias + \".\" + secondJunctionColumn.propertyName + \" = \" + inverseSideTableAlias + \".\" + inverseJoinColumnName;\n qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(junctionAlias + \".\" + firstJunctionColumn.propertyName, \"parentId\")\n .addSelect(\"COUNT(\" + qb.escape(inverseSideTableAlias) + \".\" + qb.escape(inverseJoinColumnName) + \")\", \"cnt\")\n .from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .addGroupBy(junctionAlias + \".\" + firstJunctionColumn.propertyName);\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n _b = {\n relationCountAttribute: relationCountAttr\n };\n return [4 /*yield*/, qb.getRawMany()];\n case 3: return [2 /*return*/, (_b.results = _c.sent(),\n _b)];\n }\n });\n }); });\n return [2 /*return*/, Promise.all(promises)];\n });\n });\n };\n return RelationCountLoader;\n}());\n\n\n//# sourceMappingURL=RelationCountLoader.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/relation-count/RelationCountLoader.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js ***! - \******************************************************************************************************************/ -/*! exports provided: RelationCountMetadataToAttributeTransformer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationCountMetadataToAttributeTransformer\", function() { return RelationCountMetadataToAttributeTransformer; });\n/* harmony import */ var _RelationCountAttribute__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RelationCountAttribute */ \"./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js\");\n\nvar RelationCountMetadataToAttributeTransformer = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationCountMetadataToAttributeTransformer(expressionMap) {\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationCountMetadataToAttributeTransformer.prototype.transform = function () {\n // by example:\n // post has relation count:\n // @RelationCount(post => post.categories) categoryCount\n // category has relation count\n // @RelationCount(category => category.images) imageCount\n // we load post and join category\n // we expect post.categoryCount and post.category.imageCount to have relation counts\n var _this = this;\n // first create relation count attributes for all relation count metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationCounts.forEach(function (relationCount) {\n var attribute = _this.metadataToAttribute(_this.expressionMap.mainAlias.name, relationCount);\n _this.expressionMap.relationCountAttributes.push(attribute);\n });\n }\n // second create relation count attributes for all relation count metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(function (join) {\n // ensure this join has a metadata, because relation count can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n join.metadata.relationCounts.forEach(function (relationCount) {\n var attribute = _this.metadataToAttribute(join.alias.name, relationCount);\n _this.expressionMap.relationCountAttributes.push(attribute);\n });\n });\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n RelationCountMetadataToAttributeTransformer.prototype.metadataToAttribute = function (parentAliasName, relationCount) {\n return new _RelationCountAttribute__WEBPACK_IMPORTED_MODULE_0__[\"RelationCountAttribute\"](this.expressionMap, {\n relationName: parentAliasName + \".\" + relationCount.relation.propertyName,\n mapToProperty: parentAliasName + \".\" + relationCount.propertyName,\n alias: relationCount.alias,\n queryBuilderFactory: relationCount.queryBuilderFactory\n });\n };\n return RelationCountMetadataToAttributeTransformer;\n}());\n\n\n//# sourceMappingURL=RelationCountMetadataToAttributeTransformer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js ***! - \***************************************************************************************/ -/*! exports provided: RelationIdAttribute */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationIdAttribute\", function() { return RelationIdAttribute; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../QueryBuilderUtils */ \"./node_modules/typeorm/browser/query-builder/QueryBuilderUtils.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n\n\n\n/**\n * Stores all join relation id attributes which will be used to build a JOIN query.\n */\nvar RelationIdAttribute = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdAttribute(queryExpressionMap, relationIdAttribute) {\n this.queryExpressionMap = queryExpressionMap;\n /**\n * Indicates if relation id should NOT be loaded as id map.\n */\n this.disableMixedMap = false;\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__[\"ObjectUtils\"].assign(this, relationIdAttribute || {});\n }\n Object.defineProperty(RelationIdAttribute.prototype, \"joinInverseSideMetadata\", {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n get: function () {\n return this.relation.inverseEntityMetadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"parentAlias\", {\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n return this.relationName.substr(0, this.relationName.indexOf(\".\"));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"relationPropertyPath\", {\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n return this.relationName.substr(this.relationName.indexOf(\".\") + 1);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"relation\", {\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[\"QueryBuilderUtils\"].isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n var relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias);\n var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath);\n if (!relation)\n throw new Error(\"Relation with property path \" + this.relationPropertyPath + \" in entity was not found.\");\n return relation;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"junctionAlias\", {\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get: function () {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.relationName.split(\".\"), 2), parentAlias = _a[0], relationProperty = _a[1];\n return parentAlias + \"_\" + relationProperty + \"_rid\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"junctionMetadata\", {\n /**\n * Metadata of the joined entity.\n * If extra condition without entity was joined, then it will return undefined.\n */\n get: function () {\n return this.relation.junctionEntityMetadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"mapToPropertyParentAlias\", {\n get: function () {\n return this.mapToProperty.substr(0, this.mapToProperty.indexOf(\".\"));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"mapToPropertyPropertyPath\", {\n get: function () {\n return this.mapToProperty.substr(this.mapToProperty.indexOf(\".\") + 1);\n },\n enumerable: false,\n configurable: true\n });\n return RelationIdAttribute;\n}());\n\n\n//# sourceMappingURL=RelationIdAttribute.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/relation-id/RelationIdLoader.js": -/*!************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/relation-id/RelationIdLoader.js ***! - \************************************************************************************/ -/*! exports provided: RelationIdLoader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationIdLoader\", function() { return RelationIdLoader; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../driver/DriverUtils */ \"./node_modules/typeorm/browser/driver/DriverUtils.js\");\n\n\nvar RelationIdLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdLoader(connection, queryRunner, relationIdAttributes) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n this.relationIdAttributes = relationIdAttributes;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationIdLoader.prototype.load = function (rawEntities) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n promises = this.relationIdAttributes.map(function (relationIdAttr) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var duplicates_1, results, relation_1, joinColumns_1, table, tableName, tableAlias_1, duplicates_2, parameters_1, condition, qb_1, results, relation, joinColumns_2, inverseJoinColumns_1, junctionAlias_1, inverseSideTableName, inverseSideTableAlias_1, junctionTableName, mappedColumns, parameters_2, duplicates_3, joinColumnConditions, inverseJoinColumnCondition_1, condition, qb_2, results;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner)) return [3 /*break*/, 1];\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n if (relationIdAttr.queryBuilderFactory)\n throw new Error(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n duplicates_1 = [];\n results = rawEntities.map(function (rawEntity) {\n var result = {};\n var duplicateParts = [];\n relationIdAttr.relation.joinColumns.forEach(function (joinColumn) {\n result[joinColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_1__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn);\n var duplicatePart = joinColumn.databaseName + \":\" + result[joinColumn.databaseName];\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n result[primaryColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_1__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n var duplicatePart = primaryColumn.databaseName + \":\" + result[primaryColumn.databaseName];\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n duplicateParts.sort();\n var duplicate = duplicateParts.join(\"::\");\n if (duplicates_1.indexOf(duplicate) !== -1) {\n return null;\n }\n duplicates_1.push(duplicate);\n return result;\n }).filter(function (v) { return v; });\n return [2 /*return*/, {\n relationIdAttribute: relationIdAttr,\n results: results\n }];\n case 1:\n if (!(relationIdAttr.relation.isOneToMany || relationIdAttr.relation.isOneToOneNotOwner)) return [3 /*break*/, 3];\n relation_1 = relationIdAttr.relation;\n joinColumns_1 = relation_1.isOwning ? relation_1.joinColumns : relation_1.inverseRelation.joinColumns;\n table = relation_1.inverseEntityMetadata.target;\n tableName = relation_1.inverseEntityMetadata.tableName;\n tableAlias_1 = relationIdAttr.alias || tableName;\n duplicates_2 = [];\n parameters_1 = {};\n condition = rawEntities.map(function (rawEntity, index) {\n var duplicateParts = [];\n var parameterParts = {};\n var queryPart = joinColumns_1.map(function (joinColumn) {\n var parameterName = joinColumn.databaseName + index;\n var parameterValue = rawEntity[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_1__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn.databaseName)];\n var duplicatePart = tableAlias_1 + \":\" + joinColumn.propertyPath + \":\" + parameterValue;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return tableAlias_1 + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).filter(function (v) { return v; }).join(\" AND \");\n duplicateParts.sort();\n var duplicate = duplicateParts.join(\"::\");\n if (duplicates_2.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates_2.push(duplicate);\n Object.assign(parameters_1, parameterParts);\n return queryPart;\n }).filter(function (v) { return v; }).map(function (condition) { return \"(\" + condition + \")\"; })\n .join(\" OR \");\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return [2 /*return*/, { relationIdAttribute: relationIdAttr, results: [] }];\n qb_1 = this.connection.createQueryBuilder(this.queryRunner);\n joinColumns_1.forEach(function (joinColumn) {\n qb_1.addSelect(tableAlias_1 + \".\" + joinColumn.propertyPath, joinColumn.databaseName);\n });\n relation_1.inverseRelation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n qb_1.addSelect(tableAlias_1 + \".\" + primaryColumn.propertyPath, primaryColumn.databaseName);\n });\n qb_1.from(table, tableAlias_1)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters_1);\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb_1);\n return [4 /*yield*/, qb_1.getRawMany()];\n case 2:\n results = _a.sent();\n results.forEach(function (result) {\n joinColumns_1.forEach(function (column) {\n result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn);\n });\n relation_1.inverseRelation.entityMetadata.primaryColumns.forEach(function (column) {\n result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column);\n });\n });\n return [2 /*return*/, {\n relationIdAttribute: relationIdAttr,\n results: results\n }];\n case 3:\n relation = relationIdAttr.relation;\n joinColumns_2 = relation.isOwning ? relation.joinColumns : relation.inverseRelation.inverseJoinColumns;\n inverseJoinColumns_1 = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation.joinColumns;\n junctionAlias_1 = relationIdAttr.junctionAlias;\n inverseSideTableName = relationIdAttr.joinInverseSideMetadata.tableName;\n inverseSideTableAlias_1 = relationIdAttr.alias || inverseSideTableName;\n junctionTableName = relation.isOwning ? relation.junctionEntityMetadata.tableName : relation.inverseRelation.junctionEntityMetadata.tableName;\n mappedColumns = rawEntities.map(function (rawEntity) {\n return joinColumns_2.reduce(function (map, joinColumn) {\n map[joinColumn.propertyPath] = rawEntity[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_1__[\"DriverUtils\"].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn.databaseName)];\n return map;\n }, {});\n });\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return [2 /*return*/, { relationIdAttribute: relationIdAttr, results: [] }];\n parameters_2 = {};\n duplicates_3 = [];\n joinColumnConditions = mappedColumns.map(function (mappedColumn, index) {\n var duplicateParts = [];\n var parameterParts = {};\n var queryPart = Object.keys(mappedColumn).map(function (key) {\n var parameterName = key + index;\n var parameterValue = mappedColumn[key];\n var duplicatePart = junctionAlias_1 + \":\" + key + \":\" + parameterValue;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return junctionAlias_1 + \".\" + key + \" = :\" + parameterName;\n }).filter(function (s) { return s; }).join(\" AND \");\n duplicateParts.sort();\n var duplicate = duplicateParts.join(\"::\");\n if (duplicates_3.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates_3.push(duplicate);\n Object.assign(parameters_2, parameterParts);\n return queryPart;\n }).filter(function (s) { return s; });\n inverseJoinColumnCondition_1 = inverseJoinColumns_1.map(function (joinColumn) {\n return junctionAlias_1 + \".\" + joinColumn.propertyPath + \" = \" + inverseSideTableAlias_1 + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n condition = joinColumnConditions.map(function (condition) {\n return \"(\" + condition + \" AND \" + inverseJoinColumnCondition_1 + \")\";\n }).join(\" OR \");\n qb_2 = this.connection.createQueryBuilder(this.queryRunner);\n inverseJoinColumns_1.forEach(function (joinColumn) {\n qb_2.addSelect(junctionAlias_1 + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias_1 + \".\" + joinColumn.propertyPath);\n });\n joinColumns_2.forEach(function (joinColumn) {\n qb_2.addSelect(junctionAlias_1 + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias_1 + \".\" + joinColumn.propertyPath);\n });\n qb_2.from(inverseSideTableName, inverseSideTableAlias_1)\n .innerJoin(junctionTableName, junctionAlias_1, condition)\n .setParameters(parameters_2);\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb_2);\n return [4 /*yield*/, qb_2.getRawMany()];\n case 4:\n results = _a.sent();\n results.forEach(function (result) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(joinColumns_2)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(inverseJoinColumns_1)).forEach(function (column) {\n result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn);\n });\n });\n return [2 /*return*/, {\n relationIdAttribute: relationIdAttr,\n results: results\n }];\n }\n });\n }); });\n return [2 /*return*/, Promise.all(promises)];\n });\n });\n };\n return RelationIdLoader;\n}());\n\n\n//# sourceMappingURL=RelationIdLoader.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/relation-id/RelationIdLoader.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js ***! - \************************************************************************************************************/ -/*! exports provided: RelationIdMetadataToAttributeTransformer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RelationIdMetadataToAttributeTransformer\", function() { return RelationIdMetadataToAttributeTransformer; });\n/* harmony import */ var _RelationIdAttribute__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RelationIdAttribute */ \"./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js\");\n\nvar RelationIdMetadataToAttributeTransformer = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdMetadataToAttributeTransformer(expressionMap) {\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationIdMetadataToAttributeTransformer.prototype.transform = function () {\n // by example:\n // post has relation id:\n // @RelationId(post => post.categories) categoryIds\n // category has relation id\n // @RelationId(category => category.images) imageIds\n // we load post and join category\n // we expect post.categoryIds and post.category.imageIds to have relation ids\n var _this = this;\n // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationIds.forEach(function (relationId) {\n var attribute = _this.metadataToAttribute(_this.expressionMap.mainAlias.name, relationId);\n _this.expressionMap.relationIdAttributes.push(attribute);\n });\n }\n // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(function (join) {\n // ensure this join has a metadata, because relation id can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n join.metadata.relationIds.forEach(function (relationId) {\n var attribute = _this.metadataToAttribute(join.alias.name, relationId);\n _this.expressionMap.relationIdAttributes.push(attribute);\n });\n });\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n RelationIdMetadataToAttributeTransformer.prototype.metadataToAttribute = function (parentAliasName, relationId) {\n return new _RelationIdAttribute__WEBPACK_IMPORTED_MODULE_0__[\"RelationIdAttribute\"](this.expressionMap, {\n relationName: parentAliasName + \".\" + relationId.relation.propertyName,\n mapToProperty: parentAliasName + \".\" + relationId.propertyName,\n alias: relationId.alias,\n queryBuilderFactory: relationId.queryBuilderFactory\n });\n };\n return RelationIdMetadataToAttributeTransformer;\n}());\n\n\n//# sourceMappingURL=RelationIdMetadataToAttributeTransformer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/result/DeleteResult.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/result/DeleteResult.js ***! - \***************************************************************************/ -/*! exports provided: DeleteResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DeleteResult\", function() { return DeleteResult; });\n/**\n * Result object returned by DeleteQueryBuilder execution.\n */\nvar DeleteResult = /** @class */ (function () {\n function DeleteResult() {\n }\n return DeleteResult;\n}());\n\n\n//# sourceMappingURL=DeleteResult.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/result/DeleteResult.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/result/InsertResult.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/result/InsertResult.js ***! - \***************************************************************************/ -/*! exports provided: InsertResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertResult\", function() { return InsertResult; });\n/**\n * Result object returned by InsertQueryBuilder execution.\n */\nvar InsertResult = /** @class */ (function () {\n function InsertResult() {\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n this.identifiers = [];\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n this.generatedMaps = [];\n }\n return InsertResult;\n}());\n\n\n//# sourceMappingURL=InsertResult.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/result/InsertResult.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/result/UpdateResult.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/result/UpdateResult.js ***! - \***************************************************************************/ -/*! exports provided: UpdateResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UpdateResult\", function() { return UpdateResult; });\n/**\n * Result object returned by UpdateQueryBuilder execution.\n */\nvar UpdateResult = /** @class */ (function () {\n function UpdateResult() {\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n // identifier: ObjectLiteral[] = [];\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n this.generatedMaps = [];\n }\n return UpdateResult;\n}());\n\n\n//# sourceMappingURL=UpdateResult.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/result/UpdateResult.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js ***! - \**********************************************************************************************************/ -/*! exports provided: PlainObjectToDatabaseEntityTransformer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlainObjectToDatabaseEntityTransformer\", function() { return PlainObjectToDatabaseEntityTransformer; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n */\nvar LoadMapItem = /** @class */ (function () {\n function LoadMapItem(plainEntity, metadata, parentLoadMapItem, relation) {\n this.plainEntity = plainEntity;\n this.metadata = metadata;\n this.parentLoadMapItem = parentLoadMapItem;\n this.relation = relation;\n }\n Object.defineProperty(LoadMapItem.prototype, \"target\", {\n get: function () {\n return this.metadata.target;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LoadMapItem.prototype, \"id\", {\n get: function () {\n return this.metadata.getEntityIdMixedMap(this.plainEntity);\n },\n enumerable: false,\n configurable: true\n });\n return LoadMapItem;\n}());\nvar LoadMap = /** @class */ (function () {\n function LoadMap() {\n this.loadMapItems = [];\n }\n Object.defineProperty(LoadMap.prototype, \"mainLoadMapItem\", {\n get: function () {\n return this.loadMapItems.find(function (item) { return !item.relation && !item.parentLoadMapItem; });\n },\n enumerable: false,\n configurable: true\n });\n LoadMap.prototype.addLoadMap = function (newLoadMap) {\n var item = this.loadMapItems.find(function (item) { return item.target === newLoadMap.target && item.id === newLoadMap.id; });\n if (!item)\n this.loadMapItems.push(newLoadMap);\n };\n LoadMap.prototype.fillEntities = function (target, entities) {\n var _this = this;\n entities.forEach(function (entity) {\n var item = _this.loadMapItems.find(function (loadMapItem) {\n return loadMapItem.target === target && loadMapItem.metadata.compareEntities(entity, loadMapItem.plainEntity);\n });\n if (item)\n item.entity = entity;\n });\n };\n LoadMap.prototype.groupByTargetIds = function () {\n var groups = [];\n this.loadMapItems.forEach(function (loadMapItem) {\n var group = groups.find(function (group) { return group.target === loadMapItem.target; });\n if (!group) {\n group = { target: loadMapItem.target, ids: [] };\n groups.push(group);\n }\n group.ids.push(loadMapItem.id);\n });\n return groups;\n };\n return LoadMap;\n}());\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nvar PlainObjectToDatabaseEntityTransformer = /** @class */ (function () {\n function PlainObjectToDatabaseEntityTransformer(manager) {\n this.manager = manager;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n PlainObjectToDatabaseEntityTransformer.prototype.transform = function (plainObject, metadata) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var loadMap, fillLoadMap;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return [2 /*return*/, Promise.reject(\"Given object does not have a primary column, cannot transform it to database entity.\")];\n loadMap = new LoadMap();\n fillLoadMap = function (entity, entityMetadata, parentLoadMapItem, relation) {\n var item = new LoadMapItem(entity, entityMetadata, parentLoadMapItem, relation);\n loadMap.addLoadMap(item);\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter(function (value) { return value !== null && value !== undefined; })\n .forEach(function (_a) {\n var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(_a, 3), relation = _b[0], value = _b[1], inverseEntityMetadata = _b[2];\n return fillLoadMap(value, inverseEntityMetadata, item, relation);\n });\n };\n fillLoadMap(plainObject, metadata);\n // load all entities and store them in the load map\n return [4 /*yield*/, Promise.all(loadMap.groupByTargetIds().map(function (targetWithIds) {\n return _this.manager\n .findByIds(targetWithIds.target, targetWithIds.ids)\n .then(function (entities) { return loadMap.fillEntities(targetWithIds.target, entities); });\n }))];\n case 1:\n // load all entities and store them in the load map\n _a.sent();\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach(function (loadMapItem) {\n if (!loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity)\n return;\n if (loadMapItem.relation.isManyToMany || loadMapItem.relation.isOneToMany) {\n if (!loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName])\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = [];\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName].push(loadMapItem.entity);\n }\n else {\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = loadMapItem.entity;\n }\n });\n return [2 /*return*/, loadMap.mainLoadMapItem ? loadMap.mainLoadMapItem.entity : undefined];\n }\n });\n });\n };\n return PlainObjectToDatabaseEntityTransformer;\n}());\n\n\n//# sourceMappingURL=PlainObjectToDatabaseEntityTransformer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js ***! - \*****************************************************************************************************/ -/*! exports provided: PlainObjectToNewEntityTransformer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlainObjectToNewEntityTransformer\", function() { return PlainObjectToNewEntityTransformer; });\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nvar PlainObjectToNewEntityTransformer = /** @class */ (function () {\n function PlainObjectToNewEntityTransformer() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n PlainObjectToNewEntityTransformer.prototype.transform = function (newEntity, object, metadata, getLazyRelationsPromiseValue) {\n if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; }\n // console.log(\"groupAndTransform entity:\", newEntity);\n // console.log(\"groupAndTransform object:\", object);\n this.groupAndTransform(newEntity, object, metadata, getLazyRelationsPromiseValue);\n // console.log(\"result:\", newEntity);\n return newEntity;\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n PlainObjectToNewEntityTransformer.prototype.groupAndTransform = function (entity, object, metadata, getLazyRelationsPromiseValue) {\n // console.log(\"groupAndTransform entity:\", entity);\n // console.log(\"groupAndTransform object:\", object);\n var _this = this;\n if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; }\n // copy regular column properties from the given object\n metadata.nonVirtualColumns.forEach(function (column) {\n var objectColumnValue = column.getEntityValue(object);\n if (objectColumnValue !== undefined)\n column.setEntityValue(entity, objectColumnValue);\n });\n // // copy relation properties from the given object\n if (metadata.relations.length) {\n metadata.relations.forEach(function (relation) {\n var entityRelatedValue = relation.getEntityValue(entity);\n var objectRelatedValue = relation.getEntityValue(object, getLazyRelationsPromiseValue);\n if (objectRelatedValue === undefined)\n return;\n if (relation.isOneToMany || relation.isManyToMany) {\n if (!Array.isArray(objectRelatedValue))\n return;\n if (!entityRelatedValue) {\n entityRelatedValue = [];\n relation.setEntityValue(entity, entityRelatedValue);\n }\n objectRelatedValue.forEach(function (objectRelatedValueItem) {\n // check if we have this item from the merging object in the original entity we merge into\n var objectRelatedValueEntity = entityRelatedValue.find(function (entityRelatedValueItem) {\n return relation.inverseEntityMetadata.compareEntities(objectRelatedValueItem, entityRelatedValueItem);\n });\n // if such item already exist then merge new data into it, if its not we create a new entity and merge it into the array\n if (!objectRelatedValueEntity) {\n objectRelatedValueEntity = relation.inverseEntityMetadata.create();\n entityRelatedValue.push(objectRelatedValueEntity);\n }\n _this.groupAndTransform(objectRelatedValueEntity, objectRelatedValueItem, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n });\n }\n else {\n // if related object isn't an object (direct relation id for example)\n // we just set it to the entity relation, we don't need anything more from it\n // however we do it only if original entity does not have this relation set to object\n // to prevent full overriding of objects\n if (!(objectRelatedValue instanceof Object)) {\n if (!(entityRelatedValue instanceof Object))\n relation.setEntityValue(entity, objectRelatedValue);\n return;\n }\n if (!entityRelatedValue) {\n entityRelatedValue = relation.inverseEntityMetadata.create();\n relation.setEntityValue(entity, entityRelatedValue);\n }\n _this.groupAndTransform(entityRelatedValue, objectRelatedValue, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n }\n });\n }\n };\n return PlainObjectToNewEntityTransformer;\n}());\n\n\n//# sourceMappingURL=PlainObjectToNewEntityTransformer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js ***! - \****************************************************************************************************/ -/*! exports provided: RawSqlResultsToEntityTransformer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RawSqlResultsToEntityTransformer\", function() { return RawSqlResultsToEntityTransformer; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/OrmUtils */ \"./node_modules/typeorm/browser/util/OrmUtils.js\");\n/* harmony import */ var _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../driver/DriverUtils */ \"./node_modules/typeorm/browser/driver/DriverUtils.js\");\n\n\n\n/**\n * Transforms raw sql results returned from the database into entity object.\n * Entity is constructed based on its entity metadata.\n */\nvar RawSqlResultsToEntityTransformer = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RawSqlResultsToEntityTransformer(expressionMap, driver, rawRelationIdResults, rawRelationCountResults, queryRunner) {\n this.expressionMap = expressionMap;\n this.driver = driver;\n this.rawRelationIdResults = rawRelationIdResults;\n this.rawRelationCountResults = rawRelationCountResults;\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n RawSqlResultsToEntityTransformer.prototype.transform = function (rawResults, alias) {\n var _this = this;\n var group = this.group(rawResults, alias);\n var entities = [];\n group.forEach(function (results) {\n var entity = _this.transformRawResultsGroup(results, alias);\n if (entity !== undefined && !Object.values(entity).every(function (value) { return value === null; }))\n entities.push(entity);\n });\n return entities;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Groups given raw results by ids of given alias.\n */\n RawSqlResultsToEntityTransformer.prototype.group = function (rawResults, alias) {\n var _this = this;\n var map = new Map();\n var keys = [];\n if (alias.metadata.tableType === \"view\") {\n keys.push.apply(keys, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(alias.metadata.columns.map(function (column) { return _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[\"DriverUtils\"].buildColumnAlias(_this.driver, alias.name, column.databaseName); }))));\n }\n else {\n keys.push.apply(keys, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(alias.metadata.primaryColumns.map(function (column) { return _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[\"DriverUtils\"].buildColumnAlias(_this.driver, alias.name, column.databaseName); }))));\n }\n rawResults.forEach(function (rawResult) {\n var id = keys.map(function (key) {\n var keyValue = rawResult[key];\n if (Buffer.isBuffer(keyValue)) {\n return keyValue.toString(\"hex\");\n }\n if (typeof keyValue === \"object\") {\n return JSON.stringify(keyValue);\n }\n return keyValue;\n }).join(\"_\"); // todo: check partial\n var items = map.get(id);\n if (!items) {\n map.set(id, [rawResult]);\n }\n else {\n items.push(rawResult);\n }\n });\n return map;\n };\n /**\n * Transforms set of data results into single entity.\n */\n RawSqlResultsToEntityTransformer.prototype.transformRawResultsGroup = function (rawResults, alias) {\n var _this = this;\n // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false;\n var metadata = alias.metadata;\n if (metadata.discriminatorColumn) {\n var discriminatorValues_1 = rawResults.map(function (result) { return result[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[\"DriverUtils\"].buildColumnAlias(_this.driver, alias.name, alias.metadata.discriminatorColumn.databaseName)]; });\n var discriminatorMetadata = metadata.childEntityMetadatas.find(function (childEntityMetadata) {\n return typeof discriminatorValues_1.find(function (value) { return value === childEntityMetadata.discriminatorValue; }) !== 'undefined';\n });\n if (discriminatorMetadata)\n metadata = discriminatorMetadata;\n }\n var entity = this.expressionMap.options.indexOf(\"create-pojo\") !== -1 ? {} : metadata.create(this.queryRunner);\n // get value from columns selections and put them into newly created entity\n var hasColumns = this.transformColumns(rawResults, alias, entity, metadata);\n var hasRelations = this.transformJoins(rawResults, entity, alias, metadata);\n var hasRelationIds = this.transformRelationIds(rawResults, alias, entity, metadata);\n var hasRelationCounts = this.transformRelationCounts(rawResults, alias, entity);\n // if we have at least one selected column then return this entity\n // since entity must have at least primary columns to be really selected and transformed into entity\n if (hasColumns)\n return entity;\n // if we don't have any selected column we should not return entity,\n // except for the case when entity only contain a primary column as a relation to another entity\n // in this case its absolutely possible our entity to not have any columns except a single relation\n var hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.filter(function (column) { return column.isVirtual === false; }).length === 0; // todo: create metadata.hasOnlyVirtualPrimaryColumns\n if (hasOnlyVirtualPrimaryColumns && (hasRelations || hasRelationIds || hasRelationCounts))\n return entity;\n return undefined;\n };\n // get value from columns selections and put them into object\n RawSqlResultsToEntityTransformer.prototype.transformColumns = function (rawResults, alias, entity, metadata) {\n var _this = this;\n var hasData = false;\n metadata.columns.forEach(function (column) {\n // if table inheritance is used make sure this column is not child's column\n if (metadata.childEntityMetadatas.length > 0 && metadata.childEntityMetadatas.map(function (metadata) { return metadata.target; }).indexOf(column.target) !== -1)\n return;\n var value = rawResults[0][_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[\"DriverUtils\"].buildColumnAlias(_this.driver, alias.name, column.databaseName)];\n if (value === undefined || column.isVirtual)\n return;\n // if user does not selected the whole entity or he used partial selection and does not select this particular column\n // then we don't add this column and its value into the entity\n if (!_this.expressionMap.selects.find(function (select) { return select.selection === alias.name || select.selection === alias.name + \".\" + column.propertyPath; }))\n return;\n column.setEntityValue(entity, _this.driver.prepareHydratedValue(value, column));\n if (value !== null) // we don't mark it as has data because if we will have all nulls in our object - we don't need such object\n hasData = true;\n });\n return hasData;\n };\n /**\n * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity\n */\n RawSqlResultsToEntityTransformer.prototype.transformJoins = function (rawResults, entity, alias, metadata) {\n var _this = this;\n var hasData = false;\n // let discriminatorValue: string = \"\";\n // if (metadata.discriminatorColumn)\n // discriminatorValue = rawResults[0][DriverUtils.buildColumnAlias(this.connection.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)];\n this.expressionMap.joinAttributes.forEach(function (join) {\n // skip joins without metadata\n if (!join.metadata)\n return;\n // if simple left or inner join was performed without selection then we don't need to do anything\n if (!join.isSelected)\n return;\n // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)\n // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);\n if (join.relation && !metadata.relations.find(function (relation) { return relation === join.relation; }))\n return;\n // some checks to make sure this join is for current alias\n if (join.mapToProperty) {\n if (join.mapToPropertyParentAlias !== alias.name)\n return;\n }\n else {\n if (!join.relation || join.parentAlias !== alias.name || join.relationPropertyPath !== join.relation.propertyPath)\n return;\n }\n // transform joined data into entities\n var result = _this.transform(rawResults, join.alias);\n result = !join.isMany ? result[0] : result;\n result = !join.isMany && result === undefined ? null : result; // this is needed to make relations to return null when its joined but nothing was found in the database\n if (result === undefined) // if nothing was joined then simply return\n return;\n // if join was mapped to some property then save result to that property\n if (join.mapToPropertyPropertyName) {\n entity[join.mapToPropertyPropertyName] = result; // todo: fix embeds\n }\n else { // otherwise set to relation\n join.relation.setEntityValue(entity, result);\n }\n hasData = true;\n });\n return hasData;\n };\n RawSqlResultsToEntityTransformer.prototype.transformRelationIds = function (rawSqlResults, alias, entity, metadata) {\n var _this = this;\n var hasData = false;\n this.rawRelationIdResults.forEach(function (rawRelationIdResult) {\n if (rawRelationIdResult.relationIdAttribute.parentAlias !== alias.name)\n return;\n var relation = rawRelationIdResult.relationIdAttribute.relation;\n var valueMap = _this.createValueMapFromJoinColumns(relation, rawRelationIdResult.relationIdAttribute.parentAlias, rawSqlResults);\n if (valueMap === undefined || valueMap === null)\n return;\n var idMaps = rawRelationIdResult.results.map(function (result) {\n var entityPrimaryIds = _this.extractEntityPrimaryIds(relation, result);\n if (_util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].compareIds(entityPrimaryIds, valueMap) === false)\n return;\n var columns;\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseEntityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; });\n // columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn.referencedColumn!); //.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n }\n else { // ManyToMany\n if (relation.isOwning) {\n columns = relation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n }\n var idMap = columns.reduce(function (idMap, column) {\n var value = result[column.databaseName];\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n if (column.isVirtual && column.referencedColumn && column.referencedColumn.propertyName !== column.propertyName) // if column is a relation\n value = column.referencedColumn.createValueMap(value);\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(idMap, column.createValueMap(value));\n }\n else {\n if (column.referencedColumn.referencedColumn) // if column is a relation\n value = column.referencedColumn.referencedColumn.createValueMap(value);\n return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[\"OrmUtils\"].mergeDeep(idMap, column.referencedColumn.createValueMap(value));\n }\n }, {});\n if (columns.length === 1 && rawRelationIdResult.relationIdAttribute.disableMixedMap === false) {\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return columns[0].getEntityValue(idMap);\n }\n else {\n return columns[0].referencedColumn.getEntityValue(idMap);\n }\n }\n return idMap;\n }).filter(function (result) { return result !== undefined; });\n var properties = rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split(\".\");\n var mapToProperty = function (properties, map, value) {\n var property = properties.shift();\n if (property && properties.length === 0) {\n map[property] = value;\n return map;\n }\n else if (property && properties.length > 0) {\n mapToProperty(properties, map[property], value);\n }\n else {\n return map;\n }\n };\n if (relation.isOneToOne || relation.isManyToOne) {\n if (idMaps[0] !== undefined) {\n mapToProperty(properties, entity, idMaps[0]);\n hasData = true;\n }\n }\n else {\n mapToProperty(properties, entity, idMaps);\n if (idMaps.length > 0) {\n hasData = true;\n }\n }\n });\n return hasData;\n };\n RawSqlResultsToEntityTransformer.prototype.transformRelationCounts = function (rawSqlResults, alias, entity) {\n var _this = this;\n var hasData = false;\n this.rawRelationCountResults\n .filter(function (rawRelationCountResult) { return rawRelationCountResult.relationCountAttribute.parentAlias === alias.name; })\n .forEach(function (rawRelationCountResult) {\n var relation = rawRelationCountResult.relationCountAttribute.relation;\n var referenceColumnName;\n if (relation.isOneToMany) {\n referenceColumnName = relation.inverseRelation.joinColumns[0].referencedColumn.databaseName; // todo: fix joinColumns[0]\n }\n else {\n referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn.databaseName : relation.inverseRelation.joinColumns[0].referencedColumn.databaseName;\n }\n var referenceColumnValue = rawSqlResults[0][_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[\"DriverUtils\"].buildColumnAlias(_this.driver, alias.name, referenceColumnName)]; // we use zero index since its grouped data // todo: selection with alias for entity columns wont work\n if (referenceColumnValue !== undefined && referenceColumnValue !== null) {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = 0;\n rawRelationCountResult.results\n .filter(function (result) { return result[\"parentId\"] === referenceColumnValue; })\n .forEach(function (result) {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = parseInt(result[\"cnt\"]);\n hasData = true;\n });\n }\n });\n return hasData;\n };\n RawSqlResultsToEntityTransformer.prototype.createValueMapFromJoinColumns = function (relation, parentAlias, rawSqlResults) {\n var _this = this;\n var columns;\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; });\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n columns = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; });\n }\n }\n return columns.reduce(function (valueMap, column) {\n rawSqlResults.forEach(function (rawSqlResult) {\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n valueMap[column.databaseName] = _this.driver.prepareHydratedValue(rawSqlResult[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[\"DriverUtils\"].buildColumnAlias(_this.driver, parentAlias, column.databaseName)], column);\n }\n else {\n valueMap[column.databaseName] = _this.driver.prepareHydratedValue(rawSqlResult[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[\"DriverUtils\"].buildColumnAlias(_this.driver, parentAlias, column.referencedColumn.databaseName)], column);\n }\n });\n return valueMap;\n }, {});\n };\n RawSqlResultsToEntityTransformer.prototype.extractEntityPrimaryIds = function (relation, relationIdRawResult) {\n var columns;\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; });\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n columns = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; });\n }\n }\n return columns.reduce(function (data, column) {\n data[column.databaseName] = relationIdRawResult[column.databaseName];\n return data;\n }, {});\n };\n return RawSqlResultsToEntityTransformer;\n}());\n\n\n//# sourceMappingURL=RawSqlResultsToEntityTransformer.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js ***! - \**********************************************************************/ -/*! exports provided: BaseQueryRunner */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseQueryRunner\", function() { return BaseQueryRunner; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_Query__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/Query */ \"./node_modules/typeorm/browser/driver/Query.js\");\n/* harmony import */ var _driver_SqlInMemory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../driver/SqlInMemory */ \"./node_modules/typeorm/browser/driver/SqlInMemory.js\");\n\n\n\nvar BaseQueryRunner = /** @class */ (function () {\n function BaseQueryRunner() {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n this.isReleased = false;\n /**\n * Indicates if transaction is in progress.\n */\n this.isTransactionActive = false;\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n this.data = {};\n /**\n * All synchronized tables in the database.\n */\n this.loadedTables = [];\n /**\n * All synchronized views in the database.\n */\n this.loadedViews = [];\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n this.sqlMemoryMode = false;\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n this.sqlInMemory = new _driver_SqlInMemory__WEBPACK_IMPORTED_MODULE_2__[\"SqlInMemory\"]();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Loads given table's data from the database.\n */\n BaseQueryRunner.prototype.getTable = function (tablePath) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadTables([tablePath])];\n case 1:\n _a.loadedTables = _b.sent();\n return [2 /*return*/, this.loadedTables.length > 0 ? this.loadedTables[0] : undefined];\n }\n });\n });\n };\n /**\n * Loads all tables (with given names) from the database.\n */\n BaseQueryRunner.prototype.getTables = function (tableNames) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadTables(tableNames)];\n case 1:\n _a.loadedTables = _b.sent();\n return [2 /*return*/, this.loadedTables];\n }\n });\n });\n };\n /**\n * Loads given view's data from the database.\n */\n BaseQueryRunner.prototype.getView = function (viewPath) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadViews([viewPath])];\n case 1:\n _a.loadedViews = _b.sent();\n return [2 /*return*/, this.loadedViews.length > 0 ? this.loadedViews[0] : undefined];\n }\n });\n });\n };\n /**\n * Loads given view's data from the database.\n */\n BaseQueryRunner.prototype.getViews = function (viewPaths) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadViews(viewPaths)];\n case 1:\n _a.loadedViews = _b.sent();\n return [2 /*return*/, this.loadedViews];\n }\n });\n });\n };\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n BaseQueryRunner.prototype.enableSqlMemory = function () {\n this.sqlInMemory = new _driver_SqlInMemory__WEBPACK_IMPORTED_MODULE_2__[\"SqlInMemory\"]();\n this.sqlMemoryMode = true;\n };\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n BaseQueryRunner.prototype.disableSqlMemory = function () {\n this.sqlInMemory = new _driver_SqlInMemory__WEBPACK_IMPORTED_MODULE_2__[\"SqlInMemory\"]();\n this.sqlMemoryMode = false;\n };\n /**\n * Flushes all memorized sqls.\n */\n BaseQueryRunner.prototype.clearSqlMemory = function () {\n this.sqlInMemory = new _driver_SqlInMemory__WEBPACK_IMPORTED_MODULE_2__[\"SqlInMemory\"]();\n };\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n BaseQueryRunner.prototype.getMemorySql = function () {\n return this.sqlInMemory;\n };\n /**\n * Executes up sql queries.\n */\n BaseQueryRunner.prototype.executeMemoryUpSql = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, _b, _c, query, parameters, e_1_1;\n var e_1, _d;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n _e.trys.push([0, 5, 6, 7]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.sqlInMemory.upQueries), _b = _a.next();\n _e.label = 1;\n case 1:\n if (!!_b.done) return [3 /*break*/, 4];\n _c = _b.value, query = _c.query, parameters = _c.parameters;\n return [4 /*yield*/, this.query(query, parameters)];\n case 2:\n _e.sent();\n _e.label = 3;\n case 3:\n _b = _a.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes down sql queries.\n */\n BaseQueryRunner.prototype.executeMemoryDownSql = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _a, _b, _c, query, parameters, e_2_1;\n var e_2, _d;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n _e.trys.push([0, 5, 6, 7]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.sqlInMemory.downQueries.reverse()), _b = _a.next();\n _e.label = 1;\n case 1:\n if (!!_b.done) return [3 /*break*/, 4];\n _c = _b.value, query = _c.query, parameters = _c.parameters;\n return [4 /*yield*/, this.query(query, parameters)];\n case 2:\n _e.sent();\n _e.label = 3;\n case 3:\n _b = _a.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n */\n BaseQueryRunner.prototype.getCachedView = function (viewName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var view, foundViews;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n view = this.loadedViews.find(function (view) { return view.name === viewName; });\n if (view)\n return [2 /*return*/, view];\n return [4 /*yield*/, this.loadViews([viewName])];\n case 1:\n foundViews = _a.sent();\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0]);\n return [2 /*return*/, foundViews[0]];\n }\n else {\n throw new Error(\"View \\\"\" + viewName + \"\\\" does not exist.\");\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n */\n BaseQueryRunner.prototype.getCachedTable = function (tableName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, foundTables;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n table = this.loadedTables.find(function (table) { return table.name === tableName; });\n if (table)\n return [2 /*return*/, table];\n return [4 /*yield*/, this.loadTables([tableName])];\n case 1:\n foundTables = _a.sent();\n if (foundTables.length > 0) {\n this.loadedTables.push(foundTables[0]);\n return [2 /*return*/, foundTables[0]];\n }\n else {\n throw new Error(\"Table \\\"\" + tableName + \"\\\" does not exist.\");\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Replaces loaded table with given changed table.\n */\n BaseQueryRunner.prototype.replaceCachedTable = function (table, changedTable) {\n var foundTable = this.loadedTables.find(function (loadedTable) { return loadedTable.name === table.name; });\n if (foundTable) {\n foundTable.name = changedTable.name;\n foundTable.columns = changedTable.columns;\n foundTable.indices = changedTable.indices;\n foundTable.foreignKeys = changedTable.foreignKeys;\n foundTable.uniques = changedTable.uniques;\n foundTable.checks = changedTable.checks;\n foundTable.justCreated = changedTable.justCreated;\n foundTable.engine = changedTable.engine;\n }\n };\n BaseQueryRunner.prototype.getTypeormMetadataTableName = function () {\n var options = this.connection.driver.options;\n return this.connection.driver.buildTableName(\"typeorm_metadata\", options.schema, options.database);\n };\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n */\n BaseQueryRunner.prototype.isColumnChanged = function (oldColumn, newColumn, checkDefault, checkComment) {\n // this logs need to debug issues in column change detection. Do not delete it!\n // console.log(\"charset ---------------\");\n // console.log(oldColumn.charset !== newColumn.charset);\n // console.log(oldColumn.charset, newColumn.charset);\n // console.log(\"collation ---------------\");\n // console.log(oldColumn.collation !== newColumn.collation);\n // console.log(oldColumn.collation, newColumn.collation);\n // console.log(\"precision ---------------\");\n // console.log(oldColumn.precision !== newColumn.precision);\n // console.log(oldColumn.precision, newColumn.precision);\n // console.log(\"scale ---------------\");\n // console.log(oldColumn.scale !== newColumn.scale);\n // console.log(oldColumn.scale, newColumn.scale);\n // console.log(\"default ---------------\");\n // console.log((checkDefault && oldColumn.default !== newColumn.default));\n // console.log(oldColumn.default, newColumn.default);\n // console.log(\"isNullable ---------------\");\n // console.log(oldColumn.isNullable !== newColumn.isNullable);\n // console.log(oldColumn.isNullable, newColumn.isNullable);\n // console.log(\"comment ---------------\");\n // console.log((checkComment && oldColumn.comment !== newColumn.comment));\n // console.log(oldColumn.comment, newColumn.comment);\n // console.log(\"enum ---------------\");\n // console.log(oldColumn.enum !== newColumn.enum);\n // console.log(oldColumn.enum, newColumn.enum);\n return oldColumn.charset !== newColumn.charset\n || oldColumn.collation !== newColumn.collation\n || oldColumn.precision !== newColumn.precision\n || oldColumn.scale !== newColumn.scale\n || oldColumn.width !== newColumn.width // MySQL only\n || oldColumn.zerofill !== newColumn.zerofill // MySQL only\n || oldColumn.unsigned !== newColumn.unsigned // MySQL only\n || oldColumn.asExpression !== newColumn.asExpression // MySQL only\n || (checkDefault && oldColumn.default !== newColumn.default)\n || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only\n || oldColumn.isNullable !== newColumn.isNullable\n || (checkComment && oldColumn.comment !== newColumn.comment)\n || oldColumn.enum !== newColumn.enum;\n };\n /**\n * Checks if column length is by default.\n */\n BaseQueryRunner.prototype.isDefaultColumnLength = function (table, column, length) {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n var metadata = this.connection.getMetadata(table.name);\n var columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.length)\n return false;\n }\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].length) {\n return this.connection.driver.dataTypeDefaults[column.type].length.toString() === length.toString();\n }\n return false;\n };\n /**\n * Checks if column precision is by default.\n */\n BaseQueryRunner.prototype.isDefaultColumnPrecision = function (table, column, precision) {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n var metadata = this.connection.getMetadata(table.name);\n var columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.precision !== null && columnMetadata.precision !== undefined)\n return false;\n }\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].precision !== null\n && this.connection.driver.dataTypeDefaults[column.type].precision !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].precision === precision;\n return false;\n };\n /**\n * Checks if column scale is by default.\n */\n BaseQueryRunner.prototype.isDefaultColumnScale = function (table, column, scale) {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n var metadata = this.connection.getMetadata(table.name);\n var columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.scale !== null && columnMetadata.scale !== undefined)\n return false;\n }\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].scale !== null\n && this.connection.driver.dataTypeDefaults[column.type].scale !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].scale === scale;\n return false;\n };\n /**\n * Executes sql used special for schema build.\n */\n BaseQueryRunner.prototype.executeQueries = function (upQueries, downQueries) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var upQueries_1, upQueries_1_1, _a, query, parameters, e_3_1;\n var _b, _c, e_3, _d;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (upQueries instanceof _driver_Query__WEBPACK_IMPORTED_MODULE_1__[\"Query\"])\n upQueries = [upQueries];\n if (downQueries instanceof _driver_Query__WEBPACK_IMPORTED_MODULE_1__[\"Query\"])\n downQueries = [downQueries];\n (_b = this.sqlInMemory.upQueries).push.apply(_b, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(upQueries)));\n (_c = this.sqlInMemory.downQueries).push.apply(_c, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(downQueries)));\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return [2 /*return*/, Promise.resolve()];\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n upQueries_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(upQueries), upQueries_1_1 = upQueries_1.next();\n _e.label = 2;\n case 2:\n if (!!upQueries_1_1.done) return [3 /*break*/, 5];\n _a = upQueries_1_1.value, query = _a.query, parameters = _a.parameters;\n return [4 /*yield*/, this.query(query, parameters)];\n case 3:\n _e.sent();\n _e.label = 4;\n case 4:\n upQueries_1_1 = upQueries_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_3_1 = _e.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (upQueries_1_1 && !upQueries_1_1.done && (_d = upQueries_1.return)) _d.call(upQueries_1);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n return BaseQueryRunner;\n}());\n\n\n//# sourceMappingURL=BaseQueryRunner.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/repository/AbstractRepository.js": -/*!***********************************************************************!*\ - !*** ./node_modules/typeorm/browser/repository/AbstractRepository.js ***! - \***********************************************************************/ -/*! exports provided: AbstractRepository */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AbstractRepository\", function() { return AbstractRepository; });\n/* harmony import */ var _error_CustomRepositoryDoesNotHaveEntityError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/CustomRepositoryDoesNotHaveEntityError */ \"./node_modules/typeorm/browser/error/CustomRepositoryDoesNotHaveEntityError.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _error_CustomRepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../error/CustomRepositoryNotFoundError */ \"./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js\");\n\n\n\n/**\n * Provides abstract class for custom repositories that do not inherit from original orm Repository.\n * Contains all most-necessary methods to simplify code in the custom repository.\n * All methods are protected thus not exposed and it allows to create encapsulated custom repository.\n *\n * @experimental\n */\nvar AbstractRepository = /** @class */ (function () {\n function AbstractRepository() {\n }\n Object.defineProperty(AbstractRepository.prototype, \"repository\", {\n // -------------------------------------------------------------------------\n // Protected Accessors\n // -------------------------------------------------------------------------\n /**\n * Gets the original ORM repository for the entity that is managed by this repository.\n * If current repository does not manage any entity, then exception will be thrown.\n */\n get: function () {\n var target = this.getCustomRepositoryTarget(this);\n if (!target)\n throw new _error_CustomRepositoryDoesNotHaveEntityError__WEBPACK_IMPORTED_MODULE_0__[\"CustomRepositoryDoesNotHaveEntityError\"](this.constructor);\n return this.manager.getRepository(target);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AbstractRepository.prototype, \"treeRepository\", {\n /**\n * Gets the original ORM tree repository for the entity that is managed by this repository.\n * If current repository does not manage any entity, then exception will be thrown.\n */\n get: function () {\n var target = this.getCustomRepositoryTarget(this);\n if (!target)\n throw new _error_CustomRepositoryDoesNotHaveEntityError__WEBPACK_IMPORTED_MODULE_0__[\"CustomRepositoryDoesNotHaveEntityError\"](this.constructor);\n return this.manager.getTreeRepository(target);\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new query builder for the repository's entity that can be used to build a sql query.\n * If current repository does not manage any entity, then exception will be thrown.\n */\n AbstractRepository.prototype.createQueryBuilder = function (alias) {\n var target = this.getCustomRepositoryTarget(this.constructor);\n if (!target)\n throw new _error_CustomRepositoryDoesNotHaveEntityError__WEBPACK_IMPORTED_MODULE_0__[\"CustomRepositoryDoesNotHaveEntityError\"](this.constructor);\n return this.manager.getRepository(target).createQueryBuilder(alias);\n };\n /**\n * Creates a new query builder for the given entity that can be used to build a sql query.\n */\n AbstractRepository.prototype.createQueryBuilderFor = function (entity, alias) {\n return this.getRepositoryFor(entity).createQueryBuilder(alias);\n };\n /**\n * Gets the original ORM repository for the given entity class.\n */\n AbstractRepository.prototype.getRepositoryFor = function (entity) {\n return this.manager.getRepository(entity);\n };\n /**\n * Gets the original ORM tree repository for the given entity class.\n */\n AbstractRepository.prototype.getTreeRepositoryFor = function (entity) {\n return this.manager.getTreeRepository(entity);\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n /**\n * Gets custom repository's managed entity.\n * If given custom repository does not manage any entity then undefined will be returned.\n */\n AbstractRepository.prototype.getCustomRepositoryTarget = function (customRepository) {\n var entityRepositoryMetadataArgs = Object(_index__WEBPACK_IMPORTED_MODULE_1__[\"getMetadataArgsStorage\"])().entityRepositories.find(function (repository) {\n return repository.target === (customRepository instanceof Function ? customRepository : customRepository.constructor);\n });\n if (!entityRepositoryMetadataArgs)\n throw new _error_CustomRepositoryNotFoundError__WEBPACK_IMPORTED_MODULE_2__[\"CustomRepositoryNotFoundError\"](customRepository);\n return entityRepositoryMetadataArgs.entity;\n };\n return AbstractRepository;\n}());\n\n\n//# sourceMappingURL=AbstractRepository.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/repository/AbstractRepository.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/repository/BaseEntity.js": -/*!***************************************************************!*\ - !*** ./node_modules/typeorm/browser/repository/BaseEntity.js ***! - \***************************************************************/ -/*! exports provided: BaseEntity */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseEntity\", function() { return BaseEntity; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../index */ \"./node_modules/typeorm/browser/index.js\");\n/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ObjectUtils */ \"./node_modules/typeorm/browser/util/ObjectUtils.js\");\n\n\n\n/**\n * Base abstract entity for all entities, used in ActiveRecord patterns.\n */\nvar BaseEntity = /** @class */ (function () {\n function BaseEntity() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n BaseEntity.prototype.hasId = function () {\n return this.constructor.getRepository().hasId(this);\n };\n /**\n * Saves current entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n BaseEntity.prototype.save = function (options) {\n return this.constructor.getRepository().save(this, options);\n };\n /**\n * Removes current entity from the database.\n */\n BaseEntity.prototype.remove = function (options) {\n return this.constructor.getRepository().remove(this, options);\n };\n /**\n * Records the delete date of current entity.\n */\n BaseEntity.prototype.softRemove = function (options) {\n return this.constructor.getRepository().softRemove(this, options);\n };\n /**\n * Recovers a given entity in the database.\n */\n BaseEntity.prototype.recover = function (options) {\n return this.constructor.getRepository().recover(this, options);\n };\n /**\n * Reloads entity data from the database.\n */\n BaseEntity.prototype.reload = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var base, newestEntity;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n base = this.constructor;\n return [4 /*yield*/, base.getRepository().findOneOrFail(base.getId(this))];\n case 1:\n newestEntity = _a.sent();\n _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__[\"ObjectUtils\"].assign(this, newestEntity);\n return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Sets connection to be used by entity.\n */\n BaseEntity.useConnection = function (connection) {\n this.usedConnection = connection;\n };\n /**\n * Gets current entity's Repository.\n */\n BaseEntity.getRepository = function () {\n var connection = this.usedConnection || Object(_index__WEBPACK_IMPORTED_MODULE_1__[\"getConnection\"])();\n return connection.getRepository(this);\n };\n Object.defineProperty(BaseEntity, \"target\", {\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n get: function () {\n return this.getRepository().target;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Checks entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n BaseEntity.hasId = function (entity) {\n return this.getRepository().hasId(entity);\n };\n /**\n * Gets entity mixed id.\n */\n BaseEntity.getId = function (entity) {\n return this.getRepository().getId(entity);\n };\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n BaseEntity.createQueryBuilder = function (alias) {\n return this.getRepository().createQueryBuilder(alias);\n };\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that present in entity schema.\n */\n BaseEntity.create = function (entityOrEntities) {\n return this.getRepository().create(entityOrEntities);\n };\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n BaseEntity.merge = function (mergeIntoEntity) {\n var _a;\n var entityLikes = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n entityLikes[_i - 1] = arguments[_i];\n }\n return (_a = this.getRepository()).merge.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([mergeIntoEntity], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(entityLikes)));\n };\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n BaseEntity.preload = function (entityLike) {\n return this.getRepository().preload(entityLike);\n };\n /**\n * Saves one or many given entities.\n */\n BaseEntity.save = function (entityOrEntities, options) {\n return this.getRepository().save(entityOrEntities, options);\n };\n /**\n * Removes one or many given entities.\n */\n BaseEntity.remove = function (entityOrEntities, options) {\n return this.getRepository().remove(entityOrEntities, options);\n };\n /**\n * Records the delete date of one or many given entities.\n */\n BaseEntity.softRemove = function (entityOrEntities, options) {\n return this.getRepository().softRemove(entityOrEntities, options);\n };\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n BaseEntity.insert = function (entity, options) {\n return this.getRepository().insert(entity, options);\n };\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n BaseEntity.update = function (criteria, partialEntity, options) {\n return this.getRepository().update(criteria, partialEntity, options);\n };\n /**\n * Deletes entities by a given criteria.\n * Unlike remove method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n BaseEntity.delete = function (criteria, options) {\n return this.getRepository().delete(criteria, options);\n };\n /**\n * Counts entities that match given find options or conditions.\n */\n BaseEntity.count = function (optionsOrConditions) {\n return this.getRepository().count(optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n */\n BaseEntity.find = function (optionsOrConditions) {\n return this.getRepository().find(optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n BaseEntity.findAndCount = function (optionsOrConditions) {\n return this.getRepository().findAndCount(optionsOrConditions);\n };\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n BaseEntity.findByIds = function (ids, optionsOrConditions) {\n return this.getRepository().findByIds(ids, optionsOrConditions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n BaseEntity.findOne = function (optionsOrConditions, maybeOptions) {\n return this.getRepository().findOne(optionsOrConditions, maybeOptions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n BaseEntity.findOneOrFail = function (optionsOrConditions, maybeOptions) {\n return this.getRepository().findOneOrFail(optionsOrConditions, maybeOptions);\n };\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n BaseEntity.query = function (query, parameters) {\n return this.getRepository().query(query, parameters);\n };\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n */\n BaseEntity.clear = function () {\n return this.getRepository().clear();\n };\n return BaseEntity;\n}());\n\n\n//# sourceMappingURL=BaseEntity.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/repository/BaseEntity.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/repository/RemoveOptions.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/repository/RemoveOptions.js ***! - \******************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=RemoveOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/repository/RemoveOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/repository/Repository.js": -/*!***************************************************************!*\ - !*** ./node_modules/typeorm/browser/repository/Repository.js ***! - \***************************************************************/ -/*! exports provided: Repository */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Repository\", function() { return Repository; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc.\n */\nvar Repository = /** @class */ (function () {\n function Repository() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n Repository.prototype.createQueryBuilder = function (alias, queryRunner) {\n return this.manager.createQueryBuilder(this.metadata.target, alias || this.metadata.targetName, queryRunner || this.queryRunner);\n };\n Object.defineProperty(Repository.prototype, \"target\", {\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n get: function () {\n return this.metadata.target;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n Repository.prototype.hasId = function (entity) {\n return this.manager.hasId(this.metadata.target, entity);\n };\n /**\n * Gets entity mixed id.\n */\n Repository.prototype.getId = function (entity) {\n return this.manager.getId(this.metadata.target, entity);\n };\n /**\n * Creates a new entity instance or instances.\n * Can copy properties from the given object into new entities.\n */\n Repository.prototype.create = function (plainEntityLikeOrPlainEntityLikes) {\n return this.manager.create(this.metadata.target, plainEntityLikeOrPlainEntityLikes);\n };\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n Repository.prototype.merge = function (mergeIntoEntity) {\n var _a;\n var entityLikes = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n entityLikes[_i - 1] = arguments[_i];\n }\n return (_a = this.manager).merge.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([this.metadata.target, mergeIntoEntity], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(entityLikes)));\n };\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n Repository.prototype.preload = function (entityLike) {\n return this.manager.preload(this.metadata.target, entityLike);\n };\n /**\n * Saves one or many given entities.\n */\n Repository.prototype.save = function (entityOrEntities, options) {\n return this.manager.save(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Removes one or many given entities.\n */\n Repository.prototype.remove = function (entityOrEntities, options) {\n return this.manager.remove(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Records the delete date of one or many given entities.\n */\n Repository.prototype.softRemove = function (entityOrEntities, options) {\n return this.manager.softRemove(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Recovers one or many given entities.\n */\n Repository.prototype.recover = function (entityOrEntities, options) {\n return this.manager.recover(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n Repository.prototype.insert = function (entity) {\n return this.manager.insert(this.metadata.target, entity);\n };\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.update = function (criteria, partialEntity) {\n return this.manager.update(this.metadata.target, criteria, partialEntity);\n };\n /**\n * Deletes entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.delete = function (criteria) {\n return this.manager.delete(this.metadata.target, criteria);\n };\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.softDelete = function (criteria) {\n return this.manager.softDelete(this.metadata.target, criteria);\n };\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.restore = function (criteria) {\n return this.manager.restore(this.metadata.target, criteria);\n };\n /**\n * Counts entities that match given find options or conditions.\n */\n Repository.prototype.count = function (optionsOrConditions) {\n return this.manager.count(this.metadata.target, optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n */\n Repository.prototype.find = function (optionsOrConditions) {\n return this.manager.find(this.metadata.target, optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n Repository.prototype.findAndCount = function (optionsOrConditions) {\n return this.manager.findAndCount(this.metadata.target, optionsOrConditions);\n };\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n Repository.prototype.findByIds = function (ids, optionsOrConditions) {\n return this.manager.findByIds(this.metadata.target, ids, optionsOrConditions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n Repository.prototype.findOne = function (optionsOrConditions, maybeOptions) {\n return this.manager.findOne(this.metadata.target, optionsOrConditions, maybeOptions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n Repository.prototype.findOneOrFail = function (optionsOrConditions, maybeOptions) {\n return this.manager.findOneOrFail(this.metadata.target, optionsOrConditions, maybeOptions);\n };\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n Repository.prototype.query = function (query, parameters) {\n return this.manager.query(query, parameters);\n };\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n Repository.prototype.clear = function () {\n return this.manager.clear(this.metadata.target);\n };\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n Repository.prototype.increment = function (conditions, propertyPath, value) {\n return this.manager.increment(this.metadata.target, conditions, propertyPath, value);\n };\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n Repository.prototype.decrement = function (conditions, propertyPath, value) {\n return this.manager.decrement(this.metadata.target, conditions, propertyPath, value);\n };\n return Repository;\n}());\n\n\n//# sourceMappingURL=Repository.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/repository/Repository.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/repository/RepositoryFactory.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/repository/RepositoryFactory.js ***! - \**********************************************************************/ -/*! exports provided: RepositoryFactory */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RepositoryFactory\", function() { return RepositoryFactory; });\n/* harmony import */ var _TreeRepository__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TreeRepository */ \"./node_modules/typeorm/browser/repository/TreeRepository.js\");\n/* harmony import */ var _Repository__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Repository */ \"./node_modules/typeorm/browser/repository/Repository.js\");\n/* harmony import */ var _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../driver/mongodb/MongoDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n\n\n\n\n/**\n * Factory used to create different types of repositories.\n */\nvar RepositoryFactory = /** @class */ (function () {\n function RepositoryFactory() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a repository.\n */\n RepositoryFactory.prototype.create = function (manager, metadata, queryRunner) {\n if (metadata.treeType) {\n // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed,\n // however we need these properties for internal work of the class\n var repository = new _TreeRepository__WEBPACK_IMPORTED_MODULE_0__[\"TreeRepository\"]();\n Object.assign(repository, {\n manager: manager,\n metadata: metadata,\n queryRunner: queryRunner,\n });\n return repository;\n }\n else {\n // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed,\n // however we need these properties for internal work of the class\n var repository = void 0;\n if (manager.connection.driver instanceof _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_2__[\"MongoDriver\"]) {\n repository = new _driver_mongodb_MongoDriver__WEBPACK_IMPORTED_MODULE_2__[\"MongoRepository\"]();\n }\n else {\n repository = new _Repository__WEBPACK_IMPORTED_MODULE_1__[\"Repository\"]();\n }\n Object.assign(repository, {\n manager: manager,\n metadata: metadata,\n queryRunner: queryRunner,\n });\n return repository;\n }\n };\n return RepositoryFactory;\n}());\n\n\n//# sourceMappingURL=RepositoryFactory.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/repository/RepositoryFactory.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/repository/SaveOptions.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/repository/SaveOptions.js ***! - \****************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=SaveOptions.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/repository/SaveOptions.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/repository/TreeRepository.js": -/*!*******************************************************************!*\ - !*** ./node_modules/typeorm/browser/repository/TreeRepository.js ***! - \*******************************************************************/ -/*! exports provided: TreeRepository */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TreeRepository\", function() { return TreeRepository; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Repository__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Repository */ \"./node_modules/typeorm/browser/repository/Repository.js\");\n/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../driver/sqlite-abstract/AbstractSqliteDriver */ \"./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js\");\n\n\n\n/**\n * Repository with additional functions to work with trees.\n *\n * @see Repository\n */\nvar TreeRepository = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TreeRepository, _super);\n function TreeRepository() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // todo: implement moving\n // todo: implement removing\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Gets complete trees for all roots in the table.\n */\n TreeRepository.prototype.findTrees = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var roots;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.findRoots()];\n case 1:\n roots = _a.sent();\n return [4 /*yield*/, Promise.all(roots.map(function (root) { return _this.findDescendantsTree(root); }))];\n case 2:\n _a.sent();\n return [2 /*return*/, roots];\n }\n });\n });\n };\n /**\n * Roots are entities that have no ancestors. Finds them all.\n */\n TreeRepository.prototype.findRoots = function () {\n var _this = this;\n var escapeAlias = function (alias) { return _this.manager.connection.driver.escape(alias); };\n var escapeColumn = function (column) { return _this.manager.connection.driver.escape(column); };\n var parentPropertyName = this.manager.connection.namingStrategy.joinColumnName(this.metadata.treeParentRelation.propertyName, this.metadata.primaryColumns[0].propertyName);\n return this.createQueryBuilder(\"treeEntity\")\n .where(escapeAlias(\"treeEntity\") + \".\" + escapeColumn(parentPropertyName) + \" IS NULL\")\n .getMany();\n };\n /**\n * Gets all children (descendants) of the given entity. Returns them all in a flat array.\n */\n TreeRepository.prototype.findDescendants = function (entity) {\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getMany();\n };\n /**\n * Gets all children (descendants) of the given entity. Returns them in a tree - nested into each other.\n */\n TreeRepository.prototype.findDescendantsTree = function (entity) {\n var _this = this;\n // todo: throw exception if there is no column of this relation?\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getRawAndEntities()\n .then(function (entitiesAndScalars) {\n var relationMaps = _this.createRelationMaps(\"treeEntity\", entitiesAndScalars.raw);\n _this.buildChildrenEntityTree(entity, entitiesAndScalars.entities, relationMaps);\n return entity;\n });\n };\n /**\n * Gets number of descendants of the entity.\n */\n TreeRepository.prototype.countDescendants = function (entity) {\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n };\n /**\n * Creates a query builder used to get descendants of the entities in a tree.\n */\n TreeRepository.prototype.createDescendantsQueryBuilder = function (alias, closureTableAlias, entity) {\n var _this = this;\n // create shortcuts for better readability\n var escape = function (alias) { return _this.manager.connection.driver.escape(alias); };\n if (this.metadata.treeType === \"closure-table\") {\n var joinCondition = this.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = \" + escape(alias) + \".\" + escape(column.referencedColumn.propertyPath);\n }).join(\" AND \");\n var parameters_1 = {};\n var whereCondition = this.metadata.closureJunctionTable.ancestorColumns.map(function (column) {\n parameters_1[column.referencedColumn.propertyName] = column.referencedColumn.getEntityValue(entity);\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = :\" + column.referencedColumn.propertyName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters_1);\n }\n else if (this.metadata.treeType === \"nested-set\") {\n var whereCondition = alias + \".\" + this.metadata.nestedSetLeftColumn.propertyPath + \" BETWEEN \" +\n \"joined.\" + this.metadata.nestedSetLeftColumn.propertyPath + \" AND joined.\" + this.metadata.nestedSetRightColumn.propertyPath;\n var parameters_2 = {};\n var joinCondition = this.metadata.treeParentRelation.joinColumns.map(function (joinColumn) {\n var parameterName = joinColumn.referencedColumn.propertyPath.replace(\".\", \"_\");\n parameters_2[parameterName] = joinColumn.referencedColumn.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", whereCondition)\n .where(joinCondition, parameters_2);\n }\n else if (this.metadata.treeType === \"materialized-path\") {\n return this\n .createQueryBuilder(alias)\n .where(function (qb) {\n var subQuery = qb.subQuery()\n .select(_this.metadata.targetName + \".\" + _this.metadata.materializedPathColumn.propertyPath, \"path\")\n .from(_this.metadata.target, _this.metadata.targetName)\n .whereInIds(_this.metadata.getEntityIdMap(entity));\n qb.setNativeParameters(subQuery.expressionMap.nativeParameters);\n if (_this.manager.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_2__[\"AbstractSqliteDriver\"]) {\n return alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \" LIKE \" + subQuery.getQuery() + \" || '%'\";\n }\n else {\n return alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \" LIKE CONCAT(\" + subQuery.getQuery() + \", '%')\";\n }\n });\n }\n throw new Error(\"Supported only in tree entities\");\n };\n /**\n * Gets all parents (ancestors) of the given entity. Returns them all in a flat array.\n */\n TreeRepository.prototype.findAncestors = function (entity) {\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getMany();\n };\n /**\n * Gets all parents (ancestors) of the given entity. Returns them in a tree - nested into each other.\n */\n TreeRepository.prototype.findAncestorsTree = function (entity) {\n var _this = this;\n // todo: throw exception if there is no column of this relation?\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getRawAndEntities()\n .then(function (entitiesAndScalars) {\n var relationMaps = _this.createRelationMaps(\"treeEntity\", entitiesAndScalars.raw);\n _this.buildParentEntityTree(entity, entitiesAndScalars.entities, relationMaps);\n return entity;\n });\n };\n /**\n * Gets number of ancestors of the entity.\n */\n TreeRepository.prototype.countAncestors = function (entity) {\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n };\n /**\n * Creates a query builder used to get ancestors of the entities in the tree.\n */\n TreeRepository.prototype.createAncestorsQueryBuilder = function (alias, closureTableAlias, entity) {\n // create shortcuts for better readability\n // const escape = (alias: string) => this.manager.connection.driver.escape(alias);\n var _this = this;\n if (this.metadata.treeType === \"closure-table\") {\n var joinCondition = this.metadata.closureJunctionTable.ancestorColumns.map(function (column) {\n return closureTableAlias + \".\" + column.propertyPath + \" = \" + alias + \".\" + column.referencedColumn.propertyPath;\n }).join(\" AND \");\n var parameters_3 = {};\n var whereCondition = this.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n parameters_3[column.referencedColumn.propertyName] = column.referencedColumn.getEntityValue(entity);\n return closureTableAlias + \".\" + column.propertyPath + \" = :\" + column.referencedColumn.propertyName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters_3);\n }\n else if (this.metadata.treeType === \"nested-set\") {\n var joinCondition = \"joined.\" + this.metadata.nestedSetLeftColumn.propertyPath + \" BETWEEN \" +\n alias + \".\" + this.metadata.nestedSetLeftColumn.propertyPath + \" AND \" + alias + \".\" + this.metadata.nestedSetRightColumn.propertyPath;\n var parameters_4 = {};\n var whereCondition = this.metadata.treeParentRelation.joinColumns.map(function (joinColumn) {\n var parameterName = joinColumn.referencedColumn.propertyPath.replace(\".\", \"_\");\n parameters_4[parameterName] = joinColumn.referencedColumn.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", joinCondition)\n .where(whereCondition, parameters_4);\n }\n else if (this.metadata.treeType === \"materialized-path\") {\n // example: SELECT * FROM category category WHERE (SELECT mpath FROM `category` WHERE id = 2) LIKE CONCAT(category.mpath, '%');\n return this\n .createQueryBuilder(alias)\n .where(function (qb) {\n var subQuery = qb.subQuery()\n .select(_this.metadata.targetName + \".\" + _this.metadata.materializedPathColumn.propertyPath, \"path\")\n .from(_this.metadata.target, _this.metadata.targetName)\n .whereInIds(_this.metadata.getEntityIdMap(entity));\n qb.setNativeParameters(subQuery.expressionMap.nativeParameters);\n if (_this.manager.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_2__[\"AbstractSqliteDriver\"]) {\n return subQuery.getQuery() + \" LIKE \" + alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \" || '%'\";\n }\n else {\n return subQuery.getQuery() + \" LIKE CONCAT(\" + alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \", '%')\";\n }\n });\n }\n throw new Error(\"Supported only in tree entities\");\n };\n /**\n * Moves entity to the children of then given entity.\n *\n move(entity: Entity, to: Entity): Promise {\n return Promise.resolve();\n } */\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n TreeRepository.prototype.createRelationMaps = function (alias, rawResults) {\n var _this = this;\n return rawResults.map(function (rawResult) {\n var joinColumn = _this.metadata.treeParentRelation.joinColumns[0];\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n var joinColumnName = joinColumn.givenDatabaseName || joinColumn.databaseName;\n var id = rawResult[alias + \"_\" + _this.metadata.primaryColumns[0].databaseName];\n var parentId = rawResult[alias + \"_\" + joinColumnName];\n return {\n id: _this.manager.connection.driver.prepareHydratedValue(id, _this.metadata.primaryColumns[0]),\n parentId: _this.manager.connection.driver.prepareHydratedValue(parentId, joinColumn),\n };\n });\n };\n TreeRepository.prototype.buildChildrenEntityTree = function (entity, entities, relationMaps) {\n var _this = this;\n var childProperty = this.metadata.treeChildrenRelation.propertyName;\n var parentEntityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n var childRelationMaps = relationMaps.filter(function (relationMap) { return relationMap.parentId === parentEntityId; });\n var childIds = new Set(childRelationMaps.map(function (relationMap) { return relationMap.id; }));\n entity[childProperty] = entities.filter(function (entity) { return childIds.has(_this.metadata.primaryColumns[0].getEntityValue(entity)); });\n entity[childProperty].forEach(function (childEntity) {\n _this.buildChildrenEntityTree(childEntity, entities, relationMaps);\n });\n };\n TreeRepository.prototype.buildParentEntityTree = function (entity, entities, relationMaps) {\n var _this = this;\n var parentProperty = this.metadata.treeParentRelation.propertyName;\n var entityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n var parentRelationMap = relationMaps.find(function (relationMap) { return relationMap.id === entityId; });\n var parentEntity = entities.find(function (entity) {\n if (!parentRelationMap)\n return false;\n return _this.metadata.primaryColumns[0].getEntityValue(entity) === parentRelationMap.parentId;\n });\n if (parentEntity) {\n entity[parentProperty] = parentEntity;\n this.buildParentEntityTree(entity[parentProperty], entities, relationMaps);\n }\n };\n return TreeRepository;\n}(_Repository__WEBPACK_IMPORTED_MODULE_1__[\"Repository\"]));\n\n\n//# sourceMappingURL=TreeRepository.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/repository/TreeRepository.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/RdbmsSchemaBuilder.js": -/*!***************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/RdbmsSchemaBuilder.js ***! - \***************************************************************************/ -/*! exports provided: RdbmsSchemaBuilder */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RdbmsSchemaBuilder\", function() { return RdbmsSchemaBuilder; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../driver/cockroachdb/CockroachDriver */ \"./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js\");\n/* harmony import */ var _table_Table__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./table/Table */ \"./node_modules/typeorm/browser/schema-builder/table/Table.js\");\n/* harmony import */ var _table_TableColumn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./table/TableColumn */ \"./node_modules/typeorm/browser/schema-builder/table/TableColumn.js\");\n/* harmony import */ var _table_TableForeignKey__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./table/TableForeignKey */ \"./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js\");\n/* harmony import */ var _table_TableIndex__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./table/TableIndex */ \"./node_modules/typeorm/browser/schema-builder/table/TableIndex.js\");\n/* harmony import */ var _util_TableUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/TableUtils */ \"./node_modules/typeorm/browser/schema-builder/util/TableUtils.js\");\n/* harmony import */ var _table_TableUnique__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./table/TableUnique */ \"./node_modules/typeorm/browser/schema-builder/table/TableUnique.js\");\n/* harmony import */ var _table_TableCheck__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./table/TableCheck */ \"./node_modules/typeorm/browser/schema-builder/table/TableCheck.js\");\n/* harmony import */ var _table_TableExclusion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./table/TableExclusion */ \"./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js\");\n/* harmony import */ var _view_View__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./view/View */ \"./node_modules/typeorm/browser/schema-builder/view/View.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Creates complete tables schemas in the database based on the entity metadatas.\n *\n * Steps how schema is being built:\n * 1. load list of all tables with complete column and keys information from the db\n * 2. drop all (old) foreign keys that exist in the table, but does not exist in the metadata\n * 3. create new tables that does not exist in the db, but exist in the metadata\n * 4. drop all columns exist (left old) in the db table, but does not exist in the metadata\n * 5. add columns from metadata which does not exist in the table\n * 6. update all exist columns which metadata has changed\n * 7. update primary keys - update old and create new primary key from changed columns\n * 8. create foreign keys which does not exist in the table yet\n * 9. create indices which are missing in db yet, and drops indices which exist in the db, but does not exist in the metadata anymore\n */\nvar RdbmsSchemaBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RdbmsSchemaBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates complete schemas for the given entity metadatas.\n */\n RdbmsSchemaBuilder.prototype.build = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var tablePaths, error_1, rollbackError_1;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.queryRunner = this.connection.createQueryRunner();\n if (!!(this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"])) return [3 /*break*/, 2];\n return [4 /*yield*/, this.queryRunner.startTransaction()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 12, 18, 20]);\n tablePaths = this.entityToSyncMetadatas.map(function (metadata) { return metadata.tablePath; });\n if (!(this.viewEntityToSyncMetadatas.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.createTypeormMetadataTable()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [4 /*yield*/, this.queryRunner.getTables(tablePaths)];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.queryRunner.getViews([])];\n case 6:\n _a.sent();\n return [4 /*yield*/, this.executeSchemaSyncOperationsInProperOrder()];\n case 7:\n _a.sent();\n if (!this.connection.queryResultCache) return [3 /*break*/, 9];\n return [4 /*yield*/, this.connection.queryResultCache.synchronize(this.queryRunner)];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9:\n if (!!(this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"])) return [3 /*break*/, 11];\n return [4 /*yield*/, this.queryRunner.commitTransaction()];\n case 10:\n _a.sent();\n _a.label = 11;\n case 11: return [3 /*break*/, 20];\n case 12:\n error_1 = _a.sent();\n _a.label = 13;\n case 13:\n _a.trys.push([13, 16, , 17]);\n if (!!(this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"CockroachDriver\"])) return [3 /*break*/, 15];\n return [4 /*yield*/, this.queryRunner.rollbackTransaction()];\n case 14:\n _a.sent();\n _a.label = 15;\n case 15: return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18: return [4 /*yield*/, this.queryRunner.release()];\n case 19:\n _a.sent();\n return [7 /*endfinally*/];\n case 20: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns sql queries to be executed by schema builder.\n */\n RdbmsSchemaBuilder.prototype.log = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var tablePaths;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.queryRunner = this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 9, 11]);\n tablePaths = this.entityToSyncMetadatas.map(function (metadata) { return metadata.tablePath; });\n if (!(this.viewEntityToSyncMetadatas.length > 0)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.createTypeormMetadataTable()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [4 /*yield*/, this.queryRunner.getTables(tablePaths)];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.queryRunner.getViews([])];\n case 5:\n _a.sent();\n this.queryRunner.enableSqlMemory();\n return [4 /*yield*/, this.executeSchemaSyncOperationsInProperOrder()];\n case 6:\n _a.sent();\n if (!this.connection.queryResultCache) return [3 /*break*/, 8];\n return [4 /*yield*/, this.connection.queryResultCache.synchronize(this.queryRunner)];\n case 7:\n _a.sent();\n _a.label = 8;\n case 8: return [2 /*return*/, this.queryRunner.getMemorySql()];\n case 9:\n // its important to disable this mode despite the fact we are release query builder\n // because there exist drivers which reuse same query runner. Also its important to disable\n // sql memory after call of getMemorySql() method because last one flushes sql memory.\n this.queryRunner.disableSqlMemory();\n return [4 /*yield*/, this.queryRunner.release()];\n case 10:\n _a.sent();\n return [7 /*endfinally*/];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(RdbmsSchemaBuilder.prototype, \"entityToSyncMetadatas\", {\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Returns only entities that should be synced in the database.\n */\n get: function () {\n return this.connection.entityMetadatas.filter(function (metadata) { return metadata.synchronize && metadata.tableType !== \"entity-child\" && metadata.tableType !== \"view\"; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RdbmsSchemaBuilder.prototype, \"viewEntityToSyncMetadatas\", {\n /**\n * Returns only entities that should be synced in the database.\n */\n get: function () {\n return this.connection.entityMetadatas.filter(function (metadata) { return metadata.tableType === \"view\" && metadata.synchronize; });\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Executes schema sync operations in a proper order.\n * Order of operations matter here.\n */\n RdbmsSchemaBuilder.prototype.executeSchemaSyncOperationsInProperOrder = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.dropOldViews()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.dropOldForeignKeys()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.dropOldIndices()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.dropOldChecks()];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.dropOldExclusions()];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.dropCompositeUniqueConstraints()];\n case 6:\n _a.sent();\n // await this.renameTables();\n return [4 /*yield*/, this.renameColumns()];\n case 7:\n // await this.renameTables();\n _a.sent();\n return [4 /*yield*/, this.createNewTables()];\n case 8:\n _a.sent();\n return [4 /*yield*/, this.dropRemovedColumns()];\n case 9:\n _a.sent();\n return [4 /*yield*/, this.addNewColumns()];\n case 10:\n _a.sent();\n return [4 /*yield*/, this.updatePrimaryKeys()];\n case 11:\n _a.sent();\n return [4 /*yield*/, this.updateExistColumns()];\n case 12:\n _a.sent();\n return [4 /*yield*/, this.createNewIndices()];\n case 13:\n _a.sent();\n return [4 /*yield*/, this.createNewChecks()];\n case 14:\n _a.sent();\n return [4 /*yield*/, this.createNewExclusions()];\n case 15:\n _a.sent();\n return [4 /*yield*/, this.createCompositeUniqueConstraints()];\n case 16:\n _a.sent();\n return [4 /*yield*/, this.createForeignKeys()];\n case 17:\n _a.sent();\n return [4 /*yield*/, this.createViews()];\n case 18:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all (old) foreign keys that exist in the tables, but do not exist in the entity metadata.\n */\n RdbmsSchemaBuilder.prototype.dropOldForeignKeys = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_1, this_1, _a, _b, metadata, e_1_1;\n var e_1, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_1 = function (metadata) {\n var table, tableForeignKeysToDrop;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_1.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n tableForeignKeysToDrop = table.foreignKeys.filter(function (tableForeignKey) {\n var metadataFK = metadata.foreignKeys.find(function (metadataForeignKey) { return foreignKeysMatch(tableForeignKey, metadataForeignKey); });\n return !metadataFK\n || (metadataFK.onDelete && metadataFK.onDelete !== tableForeignKey.onDelete)\n || (metadataFK.onUpdate && metadataFK.onUpdate !== tableForeignKey.onUpdate);\n });\n if (tableForeignKeysToDrop.length === 0)\n return [2 /*return*/, \"continue\"];\n this_1.connection.logger.logSchemaBuild(\"dropping old foreign keys of \" + table.name + \": \" + tableForeignKeysToDrop.map(function (dbForeignKey) { return dbForeignKey.name; }).join(\", \"));\n // drop foreign keys from the database\n return [4 /*yield*/, this_1.queryRunner.dropForeignKeys(table, tableForeignKeysToDrop)];\n case 1:\n // drop foreign keys from the database\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_1(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _d.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rename tables\n */\n RdbmsSchemaBuilder.prototype.renameTables = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Renames columns.\n * Works if only one column per table was changed.\n * Changes only column name. If something besides name was changed, these changes will be ignored.\n */\n RdbmsSchemaBuilder.prototype.renameColumns = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_2, this_2, _a, _b, metadata, e_2_1;\n var e_2, _c;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_2 = function (metadata) {\n var table, renamedMetadataColumns, renamedTableColumns, renamedColumn;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_2.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n if (metadata.columns.length !== table.columns.length)\n return [2 /*return*/, \"continue\"];\n renamedMetadataColumns = metadata.columns.filter(function (column) {\n return !table.columns.find(function (tableColumn) {\n return tableColumn.name === column.databaseName\n && tableColumn.type === _this.connection.driver.normalizeType(column)\n && tableColumn.isNullable === column.isNullable\n && tableColumn.isUnique === _this.connection.driver.normalizeIsUnique(column);\n });\n });\n if (renamedMetadataColumns.length === 0 || renamedMetadataColumns.length > 1)\n return [2 /*return*/, \"continue\"];\n renamedTableColumns = table.columns.filter(function (tableColumn) {\n return !metadata.columns.find(function (column) {\n return column.databaseName === tableColumn.name\n && _this.connection.driver.normalizeType(column) === tableColumn.type\n && column.isNullable === tableColumn.isNullable\n && _this.connection.driver.normalizeIsUnique(column) === tableColumn.isUnique;\n });\n });\n if (renamedTableColumns.length === 0 || renamedTableColumns.length > 1)\n return [2 /*return*/, \"continue\"];\n renamedColumn = renamedTableColumns[0].clone();\n renamedColumn.name = renamedMetadataColumns[0].databaseName;\n this_2.connection.logger.logSchemaBuild(\"renaming column \\\"\" + renamedTableColumns[0].name + \"\\\" in to \\\"\" + renamedColumn.name + \"\\\"\");\n return [4 /*yield*/, this_2.queryRunner.renameColumn(table, renamedTableColumns[0], renamedColumn)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_2 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_2(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_2_1 = _d.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldIndices = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_3, this_3, _a, _b, metadata, e_3_1;\n var e_3, _c;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_3 = function (metadata) {\n var table, dropQueries;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_3.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n dropQueries = table.indices\n .filter(function (tableIndex) {\n var indexMetadata = metadata.indices.find(function (index) { return index.name === tableIndex.name; });\n if (indexMetadata) {\n if (indexMetadata.synchronize === false)\n return false;\n if (indexMetadata.isUnique !== tableIndex.isUnique)\n return true;\n if (indexMetadata.isSpatial !== tableIndex.isSpatial)\n return true;\n if (_this.connection.driver.isFullTextColumnTypeSupported() && indexMetadata.isFulltext !== tableIndex.isFulltext)\n return true;\n if (indexMetadata.columns.length !== tableIndex.columnNames.length)\n return true;\n return !indexMetadata.columns.every(function (column) { return tableIndex.columnNames.indexOf(column.databaseName) !== -1; });\n }\n return true;\n })\n .map(function (tableIndex) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.connection.logger.logSchemaBuild(\"dropping an index: \\\"\" + tableIndex.name + \"\\\" from table \" + table.name);\n return [4 /*yield*/, this.queryRunner.dropIndex(table, tableIndex)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n return [4 /*yield*/, Promise.all(dropQueries)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_3 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_3(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_3_1 = _d.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldChecks = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_4, this_4, _a, _b, metadata, e_4_1;\n var e_4, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Mysql does not support check constraints\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"])\n return [2 /*return*/];\n _loop_4 = function (metadata) {\n var table, oldChecks;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_4.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n oldChecks = table.checks.filter(function (tableCheck) {\n return !metadata.checks.find(function (checkMetadata) { return checkMetadata.name === tableCheck.name; });\n });\n if (oldChecks.length === 0)\n return [2 /*return*/, \"continue\"];\n this_4.connection.logger.logSchemaBuild(\"dropping old check constraint: \" + oldChecks.map(function (check) { return \"\\\"\" + check.name + \"\\\"\"; }).join(\", \") + \" from table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_4.queryRunner.dropCheckConstraints(table, oldChecks)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_4 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_4(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_4_1 = _d.sent();\n e_4 = { error: e_4_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_4) throw e_4.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropCompositeUniqueConstraints = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_5, this_5, _a, _b, metadata, e_5_1;\n var e_5, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_5 = function (metadata) {\n var table, compositeUniques;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_5.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n compositeUniques = table.uniques.filter(function (tableUnique) {\n return tableUnique.columnNames.length > 1 && !metadata.uniques.find(function (uniqueMetadata) { return uniqueMetadata.name === tableUnique.name; });\n });\n if (compositeUniques.length === 0)\n return [2 /*return*/, \"continue\"];\n this_5.connection.logger.logSchemaBuild(\"dropping old unique constraint: \" + compositeUniques.map(function (unique) { return \"\\\"\" + unique.name + \"\\\"\"; }).join(\", \") + \" from table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_5.queryRunner.dropUniqueConstraints(table, compositeUniques)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_5 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_5(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_5_1 = _d.sent();\n e_5 = { error: e_5_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_5) throw e_5.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldExclusions = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_6, this_6, _a, _b, metadata, e_6_1;\n var e_6, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Only PostgreSQL supports exclusion constraints\n if (!(this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]))\n return [2 /*return*/];\n _loop_6 = function (metadata) {\n var table, oldExclusions;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_6.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n oldExclusions = table.exclusions.filter(function (tableExclusion) {\n return !metadata.exclusions.find(function (exclusionMetadata) { return exclusionMetadata.name === tableExclusion.name; });\n });\n if (oldExclusions.length === 0)\n return [2 /*return*/, \"continue\"];\n this_6.connection.logger.logSchemaBuild(\"dropping old exclusion constraint: \" + oldExclusions.map(function (exclusion) { return \"\\\"\" + exclusion.name + \"\\\"\"; }).join(\", \") + \" from table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_6.queryRunner.dropExclusionConstraints(table, oldExclusions)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_6 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_6(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_6_1 = _d.sent();\n e_6 = { error: e_6_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_6) throw e_6.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates tables that do not exist in the database yet.\n * New tables are created without foreign and primary keys.\n * Primary key only can be created in conclusion with auto generated column.\n */\n RdbmsSchemaBuilder.prototype.createNewTables = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_7, this_7, _a, _b, metadata, e_7_1;\n var e_7, _c;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_7 = function (metadata) {\n var existTable, table;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n existTable = this_7.queryRunner.loadedTables.find(function (table) {\n var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined;\n var schema = metadata.schema || _this.connection.driver.options.schema;\n var fullTableName = _this.connection.driver.buildTableName(metadata.tableName, schema, database);\n return table.name === fullTableName;\n });\n if (existTable)\n return [2 /*return*/, \"continue\"];\n this_7.connection.logger.logSchemaBuild(\"creating a new table: \" + metadata.tablePath);\n table = _table_Table__WEBPACK_IMPORTED_MODULE_2__[\"Table\"].create(metadata, this_7.connection.driver);\n return [4 /*yield*/, this_7.queryRunner.createTable(table, false, false)];\n case 1:\n _e.sent();\n this_7.queryRunner.loadedTables.push(table);\n return [2 /*return*/];\n }\n });\n };\n this_7 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_7(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_7_1 = _d.sent();\n e_7 = { error: e_7_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_7) throw e_7.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.createViews = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_8, this_8, _a, _b, metadata, e_8_1;\n var e_8, _c;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_8 = function (metadata) {\n var existView, view;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n existView = this_8.queryRunner.loadedViews.find(function (view) {\n var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined;\n var schema = metadata.schema || _this.connection.driver.options.schema;\n var fullViewName = _this.connection.driver.buildTableName(metadata.tableName, schema, database);\n var viewExpression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(_this.connection).getQuery();\n var metadataExpression = typeof metadata.expression === \"string\" ? metadata.expression.trim() : metadata.expression(_this.connection).getQuery();\n return view.name === fullViewName && viewExpression === metadataExpression;\n });\n if (existView)\n return [2 /*return*/, \"continue\"];\n this_8.connection.logger.logSchemaBuild(\"creating a new view: \" + metadata.tablePath);\n view = _view_View__WEBPACK_IMPORTED_MODULE_10__[\"View\"].create(metadata, this_8.connection.driver);\n return [4 /*yield*/, this_8.queryRunner.createView(view)];\n case 1:\n _e.sent();\n this_8.queryRunner.loadedViews.push(view);\n return [2 /*return*/];\n }\n });\n };\n this_8 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.viewEntityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_8(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_8_1 = _d.sent();\n e_8 = { error: e_8_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_8) throw e_8.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldViews = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_9, this_9, _a, _b, view, e_9_1;\n var e_9, _c;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_9 = function (view) {\n var existViewMetadata;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n existViewMetadata = this_9.viewEntityToSyncMetadatas.find(function (metadata) {\n var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined;\n var schema = metadata.schema || _this.connection.driver.options.schema;\n var fullViewName = _this.connection.driver.buildTableName(metadata.tableName, schema, database);\n var viewExpression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(_this.connection).getQuery();\n var metadataExpression = typeof metadata.expression === \"string\" ? metadata.expression.trim() : metadata.expression(_this.connection).getQuery();\n return view.name === fullViewName && viewExpression === metadataExpression;\n });\n if (existViewMetadata)\n return [2 /*return*/, \"continue\"];\n this_9.connection.logger.logSchemaBuild(\"dropping an old view: \" + view.name);\n // drop an old view\n return [4 /*yield*/, this_9.queryRunner.dropView(view)];\n case 1:\n // drop an old view\n _e.sent();\n this_9.queryRunner.loadedViews.splice(this_9.queryRunner.loadedViews.indexOf(view), 1);\n return [2 /*return*/];\n }\n });\n };\n this_9 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.queryRunner.loadedViews), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n view = _b.value;\n return [5 /*yield**/, _loop_9(view)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_9_1 = _d.sent();\n e_9 = { error: e_9_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_9) throw e_9.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all columns that exist in the table, but does not exist in the metadata (left old).\n * We drop their keys too, since it should be safe.\n */\n RdbmsSchemaBuilder.prototype.dropRemovedColumns = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_10, this_10, _a, _b, metadata, e_10_1;\n var e_10, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_10 = function (metadata) {\n var table, droppedTableColumns;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_10.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n droppedTableColumns = table.columns.filter(function (tableColumn) {\n return !metadata.columns.find(function (columnMetadata) { return columnMetadata.databaseName === tableColumn.name; });\n });\n if (droppedTableColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n this_10.connection.logger.logSchemaBuild(\"columns dropped in \" + table.name + \": \" + droppedTableColumns.map(function (column) { return column.name; }).join(\", \"));\n // drop columns from the database\n return [4 /*yield*/, this_10.queryRunner.dropColumns(table, droppedTableColumns)];\n case 1:\n // drop columns from the database\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_10 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_10(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_10_1 = _d.sent();\n e_10 = { error: e_10_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_10) throw e_10.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Adds columns from metadata which does not exist in the table.\n * Columns are created without keys.\n */\n RdbmsSchemaBuilder.prototype.addNewColumns = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_11, this_11, _a, _b, metadata, e_11_1;\n var e_11, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_11 = function (metadata) {\n var table, newColumnMetadatas, newTableColumnOptions, newTableColumns;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_11.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newColumnMetadatas = metadata.columns.filter(function (columnMetadata) {\n return !table.columns.find(function (tableColumn) { return tableColumn.name === columnMetadata.databaseName; });\n });\n if (newColumnMetadatas.length === 0)\n return [2 /*return*/, \"continue\"];\n newTableColumnOptions = this_11.metadataColumnsToTableColumnOptions(newColumnMetadatas);\n newTableColumns = newTableColumnOptions.map(function (option) { return new _table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"](option); });\n if (newTableColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n this_11.connection.logger.logSchemaBuild(\"new columns added: \" + newColumnMetadatas.map(function (column) { return column.databaseName; }).join(\", \"));\n return [4 /*yield*/, this_11.queryRunner.addColumns(table, newTableColumns)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_11 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_11(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_11_1 = _d.sent();\n e_11 = { error: e_11_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_11) throw e_11.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates composite primary keys.\n */\n RdbmsSchemaBuilder.prototype.updatePrimaryKeys = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_12, this_12, _a, _b, metadata, e_12_1;\n var e_12, _c;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_12 = function (metadata) {\n var table, primaryMetadataColumns, primaryTableColumns, changedPrimaryColumns;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_12.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n primaryMetadataColumns = metadata.columns.filter(function (column) { return column.isPrimary; });\n primaryTableColumns = table.columns.filter(function (column) { return column.isPrimary; });\n if (!(primaryTableColumns.length !== primaryMetadataColumns.length && primaryMetadataColumns.length > 1)) return [3 /*break*/, 2];\n changedPrimaryColumns = primaryMetadataColumns.map(function (primaryMetadataColumn) {\n return new _table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"](_util_TableUtils__WEBPACK_IMPORTED_MODULE_6__[\"TableUtils\"].createTableColumnOptions(primaryMetadataColumn, _this.connection.driver));\n });\n return [4 /*yield*/, this_12.queryRunner.updatePrimaryKeys(table, changedPrimaryColumns)];\n case 1:\n _e.sent();\n _e.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n };\n this_12 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_12(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_12_1 = _d.sent();\n e_12 = { error: e_12_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_12) throw e_12.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Update all exist columns which metadata has changed.\n * Still don't create keys. Also we don't touch foreign keys of the changed columns.\n */\n RdbmsSchemaBuilder.prototype.updateExistColumns = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_13, this_13, _a, _b, metadata, e_13_1;\n var e_13, _c;\n var _this = this;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_13 = function (metadata) {\n var table, changedColumns, changedColumns_1, changedColumns_1_1, changedColumn, e_14_1, changedColumns_2, changedColumns_2_1, changedColumn, e_15_1, changedColumns_3, changedColumns_3_1, changedColumn, e_16_1, newAndOldTableColumns;\n var e_14, _e, e_15, _f, e_16, _g;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_h) {\n switch (_h.label) {\n case 0:\n table = this_13.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n changedColumns = this_13.connection.driver.findChangedColumns(table.columns, metadata.columns);\n if (changedColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n _h.label = 1;\n case 1:\n _h.trys.push([1, 6, 7, 8]);\n changedColumns_1 = (e_14 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(changedColumns)), changedColumns_1_1 = changedColumns_1.next();\n _h.label = 2;\n case 2:\n if (!!changedColumns_1_1.done) return [3 /*break*/, 5];\n changedColumn = changedColumns_1_1.value;\n return [4 /*yield*/, this_13.dropColumnReferencedForeignKeys(metadata.tablePath, changedColumn.databaseName)];\n case 3:\n _h.sent();\n _h.label = 4;\n case 4:\n changedColumns_1_1 = changedColumns_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_14_1 = _h.sent();\n e_14 = { error: e_14_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (changedColumns_1_1 && !changedColumns_1_1.done && (_e = changedColumns_1.return)) _e.call(changedColumns_1);\n }\n finally { if (e_14) throw e_14.error; }\n return [7 /*endfinally*/];\n case 8:\n _h.trys.push([8, 13, 14, 15]);\n changedColumns_2 = (e_15 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(changedColumns)), changedColumns_2_1 = changedColumns_2.next();\n _h.label = 9;\n case 9:\n if (!!changedColumns_2_1.done) return [3 /*break*/, 12];\n changedColumn = changedColumns_2_1.value;\n return [4 /*yield*/, this_13.dropColumnCompositeIndices(metadata.tablePath, changedColumn.databaseName)];\n case 10:\n _h.sent();\n _h.label = 11;\n case 11:\n changedColumns_2_1 = changedColumns_2.next();\n return [3 /*break*/, 9];\n case 12: return [3 /*break*/, 15];\n case 13:\n e_15_1 = _h.sent();\n e_15 = { error: e_15_1 };\n return [3 /*break*/, 15];\n case 14:\n try {\n if (changedColumns_2_1 && !changedColumns_2_1.done && (_f = changedColumns_2.return)) _f.call(changedColumns_2);\n }\n finally { if (e_15) throw e_15.error; }\n return [7 /*endfinally*/];\n case 15:\n if (!!(this_13.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this_13.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"])) return [3 /*break*/, 23];\n _h.label = 16;\n case 16:\n _h.trys.push([16, 21, 22, 23]);\n changedColumns_3 = (e_16 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(changedColumns)), changedColumns_3_1 = changedColumns_3.next();\n _h.label = 17;\n case 17:\n if (!!changedColumns_3_1.done) return [3 /*break*/, 20];\n changedColumn = changedColumns_3_1.value;\n return [4 /*yield*/, this_13.dropColumnCompositeUniques(metadata.tablePath, changedColumn.databaseName)];\n case 18:\n _h.sent();\n _h.label = 19;\n case 19:\n changedColumns_3_1 = changedColumns_3.next();\n return [3 /*break*/, 17];\n case 20: return [3 /*break*/, 23];\n case 21:\n e_16_1 = _h.sent();\n e_16 = { error: e_16_1 };\n return [3 /*break*/, 23];\n case 22:\n try {\n if (changedColumns_3_1 && !changedColumns_3_1.done && (_g = changedColumns_3.return)) _g.call(changedColumns_3);\n }\n finally { if (e_16) throw e_16.error; }\n return [7 /*endfinally*/];\n case 23:\n newAndOldTableColumns = changedColumns.map(function (changedColumn) {\n var oldTableColumn = table.columns.find(function (column) { return column.name === changedColumn.databaseName; });\n var newTableColumnOptions = _util_TableUtils__WEBPACK_IMPORTED_MODULE_6__[\"TableUtils\"].createTableColumnOptions(changedColumn, _this.connection.driver);\n var newTableColumn = new _table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[\"TableColumn\"](newTableColumnOptions);\n return {\n oldColumn: oldTableColumn,\n newColumn: newTableColumn\n };\n });\n if (newAndOldTableColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n this_13.connection.logger.logSchemaBuild(\"columns changed in \\\"\" + table.name + \"\\\". updating: \" + changedColumns.map(function (column) { return column.databaseName; }).join(\", \"));\n return [4 /*yield*/, this_13.queryRunner.changeColumns(table, newAndOldTableColumns)];\n case 24:\n _h.sent();\n return [2 /*return*/];\n }\n });\n };\n this_13 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_13(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_13_1 = _d.sent();\n e_13 = { error: e_13_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_13) throw e_13.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates composite indices which are missing in db yet.\n */\n RdbmsSchemaBuilder.prototype.createNewIndices = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_14, this_14, _a, _b, metadata, e_17_1;\n var e_17, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_14 = function (metadata) {\n var table, newIndices;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_14.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newIndices = metadata.indices\n .filter(function (indexMetadata) { return !table.indices.find(function (tableIndex) { return tableIndex.name === indexMetadata.name; }) && indexMetadata.synchronize === true; })\n .map(function (indexMetadata) { return _table_TableIndex__WEBPACK_IMPORTED_MODULE_5__[\"TableIndex\"].create(indexMetadata); });\n if (newIndices.length === 0)\n return [2 /*return*/, \"continue\"];\n this_14.connection.logger.logSchemaBuild(\"adding new indices \" + newIndices.map(function (index) { return \"\\\"\" + index.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_14.queryRunner.createIndices(table, newIndices)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_14 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_14(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_17_1 = _d.sent();\n e_17 = { error: e_17_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_17) throw e_17.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.createNewChecks = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_15, this_15, _a, _b, metadata, e_18_1;\n var e_18, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Mysql does not support check constraints\n if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"MysqlDriver\"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"AuroraDataApiDriver\"])\n return [2 /*return*/];\n _loop_15 = function (metadata) {\n var table, newChecks;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_15.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newChecks = metadata.checks\n .filter(function (checkMetadata) { return !table.checks.find(function (tableCheck) { return tableCheck.name === checkMetadata.name; }); })\n .map(function (checkMetadata) { return _table_TableCheck__WEBPACK_IMPORTED_MODULE_8__[\"TableCheck\"].create(checkMetadata); });\n if (newChecks.length === 0)\n return [2 /*return*/, \"continue\"];\n this_15.connection.logger.logSchemaBuild(\"adding new check constraints: \" + newChecks.map(function (index) { return \"\\\"\" + index.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_15.queryRunner.createCheckConstraints(table, newChecks)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_15 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_15(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_18_1 = _d.sent();\n e_18 = { error: e_18_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_18) throw e_18.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates composite uniques which are missing in db yet.\n */\n RdbmsSchemaBuilder.prototype.createCompositeUniqueConstraints = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_16, this_16, _a, _b, metadata, e_19_1;\n var e_19, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_16 = function (metadata) {\n var table, compositeUniques;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_16.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n compositeUniques = metadata.uniques\n .filter(function (uniqueMetadata) { return uniqueMetadata.columns.length > 1 && !table.uniques.find(function (tableUnique) { return tableUnique.name === uniqueMetadata.name; }); })\n .map(function (uniqueMetadata) { return _table_TableUnique__WEBPACK_IMPORTED_MODULE_7__[\"TableUnique\"].create(uniqueMetadata); });\n if (compositeUniques.length === 0)\n return [2 /*return*/, \"continue\"];\n this_16.connection.logger.logSchemaBuild(\"adding new unique constraints: \" + compositeUniques.map(function (unique) { return \"\\\"\" + unique.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_16.queryRunner.createUniqueConstraints(table, compositeUniques)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_16 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_16(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_19_1 = _d.sent();\n e_19 = { error: e_19_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_19) throw e_19.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates exclusions which are missing in db yet.\n */\n RdbmsSchemaBuilder.prototype.createNewExclusions = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_17, this_17, _a, _b, metadata, e_20_1;\n var e_20, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Only PostgreSQL supports exclusion constraints\n if (!(this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[\"PostgresDriver\"]))\n return [2 /*return*/];\n _loop_17 = function (metadata) {\n var table, newExclusions;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_17.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newExclusions = metadata.exclusions\n .filter(function (exclusionMetadata) { return !table.exclusions.find(function (tableExclusion) { return tableExclusion.name === exclusionMetadata.name; }); })\n .map(function (exclusionMetadata) { return _table_TableExclusion__WEBPACK_IMPORTED_MODULE_9__[\"TableExclusion\"].create(exclusionMetadata); });\n if (newExclusions.length === 0)\n return [2 /*return*/, \"continue\"];\n this_17.connection.logger.logSchemaBuild(\"adding new exclusion constraints: \" + newExclusions.map(function (exclusion) { return \"\\\"\" + exclusion.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_17.queryRunner.createExclusionConstraints(table, newExclusions)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_17 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_17(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_20_1 = _d.sent();\n e_20 = { error: e_20_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_20) throw e_20.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates foreign keys which does not exist in the table yet.\n */\n RdbmsSchemaBuilder.prototype.createForeignKeys = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var _loop_18, this_18, _a, _b, metadata, e_21_1;\n var e_21, _c;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_18 = function (metadata) {\n var table, newKeys, dbForeignKeys;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_18.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newKeys = metadata.foreignKeys\n .filter(function (foreignKey) {\n return !table.foreignKeys.find(function (dbForeignKey) { return foreignKeysMatch(dbForeignKey, foreignKey); });\n });\n if (newKeys.length === 0)\n return [2 /*return*/, \"continue\"];\n dbForeignKeys = newKeys.map(function (foreignKeyMetadata) { return _table_TableForeignKey__WEBPACK_IMPORTED_MODULE_4__[\"TableForeignKey\"].create(foreignKeyMetadata); });\n this_18.connection.logger.logSchemaBuild(\"creating a foreign keys: \" + newKeys.map(function (key) { return key.name; }).join(\", \") + \" on table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_18.queryRunner.createForeignKeys(table, dbForeignKeys)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_18 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_18(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_21_1 = _d.sent();\n e_21 = { error: e_21_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_21) throw e_21.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all foreign keys where given column of the given table is being used.\n */\n RdbmsSchemaBuilder.prototype.dropColumnReferencedForeignKeys = function (tablePath, columnName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, tablesWithFK, columnForeignKey, clonedTable, tablesWithFK_1, tablesWithFK_1_1, tableWithFK, e_22_1;\n var e_22, _a;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_b) {\n switch (_b.label) {\n case 0:\n table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; });\n if (!table)\n return [2 /*return*/];\n tablesWithFK = [];\n columnForeignKey = table.foreignKeys.find(function (foreignKey) { return foreignKey.columnNames.indexOf(columnName) !== -1; });\n if (columnForeignKey) {\n clonedTable = table.clone();\n clonedTable.foreignKeys = [columnForeignKey];\n tablesWithFK.push(clonedTable);\n table.removeForeignKey(columnForeignKey);\n }\n this.queryRunner.loadedTables.forEach(function (loadedTable) {\n var dependForeignKeys = loadedTable.foreignKeys.filter(function (foreignKey) {\n return foreignKey.referencedTableName === tablePath && foreignKey.referencedColumnNames.indexOf(columnName) !== -1;\n });\n if (dependForeignKeys.length > 0) {\n var clonedTable = loadedTable.clone();\n clonedTable.foreignKeys = dependForeignKeys;\n tablesWithFK.push(clonedTable);\n dependForeignKeys.forEach(function (dependForeignKey) { return loadedTable.removeForeignKey(dependForeignKey); });\n }\n });\n if (!(tablesWithFK.length > 0)) return [3 /*break*/, 8];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, 7, 8]);\n tablesWithFK_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(tablesWithFK), tablesWithFK_1_1 = tablesWithFK_1.next();\n _b.label = 2;\n case 2:\n if (!!tablesWithFK_1_1.done) return [3 /*break*/, 5];\n tableWithFK = tablesWithFK_1_1.value;\n this.connection.logger.logSchemaBuild(\"dropping related foreign keys of \" + tableWithFK.name + \": \" + tableWithFK.foreignKeys.map(function (foreignKey) { return foreignKey.name; }).join(\", \"));\n return [4 /*yield*/, this.queryRunner.dropForeignKeys(tableWithFK, tableWithFK.foreignKeys)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n tablesWithFK_1_1 = tablesWithFK_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_22_1 = _b.sent();\n e_22 = { error: e_22_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (tablesWithFK_1_1 && !tablesWithFK_1_1.done && (_a = tablesWithFK_1.return)) _a.call(tablesWithFK_1);\n }\n finally { if (e_22) throw e_22.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all composite indices, related to given column.\n */\n RdbmsSchemaBuilder.prototype.dropColumnCompositeIndices = function (tablePath, columnName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, relatedIndices;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; });\n if (!table)\n return [2 /*return*/];\n relatedIndices = table.indices.filter(function (index) { return index.columnNames.length > 1 && index.columnNames.indexOf(columnName) !== -1; });\n if (relatedIndices.length === 0)\n return [2 /*return*/];\n this.connection.logger.logSchemaBuild(\"dropping related indices of \\\"\" + tablePath + \"\\\".\\\"\" + columnName + \"\\\": \" + relatedIndices.map(function (index) { return index.name; }).join(\", \"));\n return [4 /*yield*/, this.queryRunner.dropIndices(table, relatedIndices)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all composite uniques, related to given column.\n */\n RdbmsSchemaBuilder.prototype.dropColumnCompositeUniques = function (tablePath, columnName) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var table, relatedUniques;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; });\n if (!table)\n return [2 /*return*/];\n relatedUniques = table.uniques.filter(function (unique) { return unique.columnNames.length > 1 && unique.columnNames.indexOf(columnName) !== -1; });\n if (relatedUniques.length === 0)\n return [2 /*return*/];\n this.connection.logger.logSchemaBuild(\"dropping related unique constraints of \\\"\" + tablePath + \"\\\".\\\"\" + columnName + \"\\\": \" + relatedUniques.map(function (unique) { return unique.name; }).join(\", \"));\n return [4 /*yield*/, this.queryRunner.dropUniqueConstraints(table, relatedUniques)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new columns from the given column metadatas.\n */\n RdbmsSchemaBuilder.prototype.metadataColumnsToTableColumnOptions = function (columns) {\n var _this = this;\n return columns.map(function (columnMetadata) { return _util_TableUtils__WEBPACK_IMPORTED_MODULE_6__[\"TableUtils\"].createTableColumnOptions(columnMetadata, _this.connection.driver); });\n };\n /**\n * Creates typeorm service table for storing user defined Views.\n */\n RdbmsSchemaBuilder.prototype.createTypeormMetadataTable = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var options, typeormMetadataTable;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n options = this.connection.driver.options;\n typeormMetadataTable = this.connection.driver.buildTableName(\"typeorm_metadata\", options.schema, options.database);\n return [4 /*yield*/, this.queryRunner.createTable(new _table_Table__WEBPACK_IMPORTED_MODULE_2__[\"Table\"]({\n name: typeormMetadataTable,\n columns: [\n {\n name: \"type\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataType }),\n isNullable: false\n },\n {\n name: \"database\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataDatabase }),\n isNullable: true\n },\n {\n name: \"schema\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataSchema }),\n isNullable: true\n },\n {\n name: \"table\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataTable }),\n isNullable: true\n },\n {\n name: \"name\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataName }),\n isNullable: true\n },\n {\n name: \"value\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataValue }),\n isNullable: true\n },\n ]\n }), true)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return RdbmsSchemaBuilder;\n}());\n\nfunction foreignKeysMatch(tableForeignKey, metadataForeignKey) {\n return (tableForeignKey.name === metadataForeignKey.name)\n && (tableForeignKey.referencedTableName === metadataForeignKey.referencedTablePath);\n}\n\n//# sourceMappingURL=RdbmsSchemaBuilder.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/RdbmsSchemaBuilder.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/table/Table.js": -/*!********************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/table/Table.js ***! - \********************************************************************/ -/*! exports provided: Table */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Table\", function() { return Table; });\n/* harmony import */ var _TableColumn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TableColumn */ \"./node_modules/typeorm/browser/schema-builder/table/TableColumn.js\");\n/* harmony import */ var _TableIndex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TableIndex */ \"./node_modules/typeorm/browser/schema-builder/table/TableIndex.js\");\n/* harmony import */ var _TableForeignKey__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableForeignKey */ \"./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js\");\n/* harmony import */ var _util_TableUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/TableUtils */ \"./node_modules/typeorm/browser/schema-builder/util/TableUtils.js\");\n/* harmony import */ var _TableUnique__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TableUnique */ \"./node_modules/typeorm/browser/schema-builder/table/TableUnique.js\");\n/* harmony import */ var _TableCheck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./TableCheck */ \"./node_modules/typeorm/browser/schema-builder/table/TableCheck.js\");\n/* harmony import */ var _TableExclusion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TableExclusion */ \"./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js\");\n\n\n\n\n\n\n\n/**\n * Table in the database represented in this class.\n */\nvar Table = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Table(options) {\n /**\n * Table columns.\n */\n this.columns = [];\n /**\n * Table indices.\n */\n this.indices = [];\n /**\n * Table foreign keys.\n */\n this.foreignKeys = [];\n /**\n * Table unique constraints.\n */\n this.uniques = [];\n /**\n * Table check constraints.\n */\n this.checks = [];\n /**\n * Table exclusion constraints.\n */\n this.exclusions = [];\n /**\n * Indicates if table was just created.\n * This is needed, for example to check if we need to skip primary keys creation\n * for new tables.\n */\n this.justCreated = false;\n if (options) {\n this.name = options.name;\n if (options.columns)\n this.columns = options.columns.map(function (column) { return new _TableColumn__WEBPACK_IMPORTED_MODULE_0__[\"TableColumn\"](column); });\n if (options.indices)\n this.indices = options.indices.map(function (index) { return new _TableIndex__WEBPACK_IMPORTED_MODULE_1__[\"TableIndex\"](index); });\n if (options.foreignKeys)\n this.foreignKeys = options.foreignKeys.map(function (foreignKey) { return new _TableForeignKey__WEBPACK_IMPORTED_MODULE_2__[\"TableForeignKey\"](foreignKey); });\n if (options.uniques)\n this.uniques = options.uniques.map(function (unique) { return new _TableUnique__WEBPACK_IMPORTED_MODULE_4__[\"TableUnique\"](unique); });\n if (options.checks)\n this.checks = options.checks.map(function (check) { return new _TableCheck__WEBPACK_IMPORTED_MODULE_5__[\"TableCheck\"](check); });\n if (options.exclusions)\n this.exclusions = options.exclusions.map(function (exclusion) { return new _TableExclusion__WEBPACK_IMPORTED_MODULE_6__[\"TableExclusion\"](exclusion); });\n if (options.justCreated !== undefined)\n this.justCreated = options.justCreated;\n this.engine = options.engine;\n }\n }\n Object.defineProperty(Table.prototype, \"primaryColumns\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n get: function () {\n return this.columns.filter(function (column) { return column.isPrimary; });\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Clones this table to a new table with all properties cloned.\n */\n Table.prototype.clone = function () {\n return new Table({\n name: this.name,\n columns: this.columns.map(function (column) { return column.clone(); }),\n indices: this.indices.map(function (constraint) { return constraint.clone(); }),\n foreignKeys: this.foreignKeys.map(function (constraint) { return constraint.clone(); }),\n uniques: this.uniques.map(function (constraint) { return constraint.clone(); }),\n checks: this.checks.map(function (constraint) { return constraint.clone(); }),\n exclusions: this.exclusions.map(function (constraint) { return constraint.clone(); }),\n justCreated: this.justCreated,\n engine: this.engine,\n });\n };\n /**\n * Add column and creates its constraints.\n */\n Table.prototype.addColumn = function (column) {\n this.columns.push(column);\n };\n /**\n * Remove column and its constraints.\n */\n Table.prototype.removeColumn = function (column) {\n var foundColumn = this.columns.find(function (c) { return c.name === column.name; });\n if (foundColumn)\n this.columns.splice(this.columns.indexOf(foundColumn), 1);\n };\n /**\n * Adds unique constraint.\n */\n Table.prototype.addUniqueConstraint = function (uniqueConstraint) {\n this.uniques.push(uniqueConstraint);\n if (uniqueConstraint.columnNames.length === 1) {\n var uniqueColumn = this.columns.find(function (column) { return column.name === uniqueConstraint.columnNames[0]; });\n if (uniqueColumn)\n uniqueColumn.isUnique = true;\n }\n };\n /**\n * Removes unique constraint.\n */\n Table.prototype.removeUniqueConstraint = function (removedUnique) {\n var foundUnique = this.uniques.find(function (unique) { return unique.name === removedUnique.name; });\n if (foundUnique) {\n this.uniques.splice(this.uniques.indexOf(foundUnique), 1);\n if (foundUnique.columnNames.length === 1) {\n var uniqueColumn = this.columns.find(function (column) { return column.name === foundUnique.columnNames[0]; });\n if (uniqueColumn)\n uniqueColumn.isUnique = false;\n }\n }\n };\n /**\n * Adds check constraint.\n */\n Table.prototype.addCheckConstraint = function (checkConstraint) {\n this.checks.push(checkConstraint);\n };\n /**\n * Removes check constraint.\n */\n Table.prototype.removeCheckConstraint = function (removedCheck) {\n var foundCheck = this.checks.find(function (check) { return check.name === removedCheck.name; });\n if (foundCheck) {\n this.checks.splice(this.checks.indexOf(foundCheck), 1);\n }\n };\n /**\n * Adds exclusion constraint.\n */\n Table.prototype.addExclusionConstraint = function (exclusionConstraint) {\n this.exclusions.push(exclusionConstraint);\n };\n /**\n * Removes exclusion constraint.\n */\n Table.prototype.removeExclusionConstraint = function (removedExclusion) {\n var foundExclusion = this.exclusions.find(function (exclusion) { return exclusion.name === removedExclusion.name; });\n if (foundExclusion) {\n this.exclusions.splice(this.exclusions.indexOf(foundExclusion), 1);\n }\n };\n /**\n * Adds foreign keys.\n */\n Table.prototype.addForeignKey = function (foreignKey) {\n this.foreignKeys.push(foreignKey);\n };\n /**\n * Removes foreign key.\n */\n Table.prototype.removeForeignKey = function (removedForeignKey) {\n var fk = this.foreignKeys.find(function (foreignKey) { return foreignKey.name === removedForeignKey.name; });\n if (fk)\n this.foreignKeys.splice(this.foreignKeys.indexOf(fk), 1);\n };\n /**\n * Adds index.\n */\n Table.prototype.addIndex = function (index, isMysql) {\n if (isMysql === void 0) { isMysql = false; }\n this.indices.push(index);\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we mark this column as unique\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n var column = this.columns.find(function (c) { return c.name === index.columnNames[0]; });\n if (column)\n column.isUnique = true;\n }\n };\n /**\n * Removes index.\n */\n Table.prototype.removeIndex = function (tableIndex, isMysql) {\n if (isMysql === void 0) { isMysql = false; }\n var index = this.indices.find(function (index) { return index.name === tableIndex.name; });\n if (index) {\n this.indices.splice(this.indices.indexOf(index), 1);\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we move `unique` attribute from its column\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n var column_1 = this.columns.find(function (c) { return c.name === index.columnNames[0]; });\n if (column_1)\n column_1.isUnique = this.indices.some(function (ind) { return ind.columnNames.length === 1 && ind.columnNames[0] === column_1.name && !!index.isUnique; });\n }\n }\n };\n Table.prototype.findColumnByName = function (name) {\n return this.columns.find(function (column) { return column.name === name; });\n };\n /**\n * Returns all column indices.\n */\n Table.prototype.findColumnIndices = function (column) {\n return this.indices.filter(function (index) {\n return !!index.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n /**\n * Returns all column foreign keys.\n */\n Table.prototype.findColumnForeignKeys = function (column) {\n return this.foreignKeys.filter(function (foreignKey) {\n return !!foreignKey.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n /**\n * Returns all column uniques.\n */\n Table.prototype.findColumnUniques = function (column) {\n return this.uniques.filter(function (unique) {\n return !!unique.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n /**\n * Returns all column checks.\n */\n Table.prototype.findColumnChecks = function (column) {\n return this.checks.filter(function (check) {\n return !!check.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates table from a given entity metadata.\n */\n Table.create = function (entityMetadata, driver) {\n var options = {\n name: driver.buildTableName(entityMetadata.tableName, entityMetadata.schema, entityMetadata.database),\n engine: entityMetadata.engine,\n columns: entityMetadata.columns\n .filter(function (column) { return column; })\n .map(function (column) { return _util_TableUtils__WEBPACK_IMPORTED_MODULE_3__[\"TableUtils\"].createTableColumnOptions(column, driver); }),\n indices: entityMetadata.indices\n .filter(function (index) { return index.synchronize === true; })\n .map(function (index) { return _TableIndex__WEBPACK_IMPORTED_MODULE_1__[\"TableIndex\"].create(index); }),\n uniques: entityMetadata.uniques.map(function (unique) { return _TableUnique__WEBPACK_IMPORTED_MODULE_4__[\"TableUnique\"].create(unique); }),\n checks: entityMetadata.checks.map(function (check) { return _TableCheck__WEBPACK_IMPORTED_MODULE_5__[\"TableCheck\"].create(check); }),\n exclusions: entityMetadata.exclusions.map(function (exclusion) { return _TableExclusion__WEBPACK_IMPORTED_MODULE_6__[\"TableExclusion\"].create(exclusion); }),\n };\n return new Table(options);\n };\n return Table;\n}());\n\n\n//# sourceMappingURL=Table.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/table/Table.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/table/TableCheck.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/table/TableCheck.js ***! - \*************************************************************************/ -/*! exports provided: TableCheck */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableCheck\", function() { return TableCheck; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Database's table check constraint stored in this class.\n */\nvar TableCheck = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableCheck(options) {\n /**\n * Column that contains this constraint.\n */\n this.columnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n this.expression = options.expression;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n TableCheck.prototype.clone = function () {\n return new TableCheck({\n name: this.name,\n columnNames: this.columnNames ? Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.columnNames)) : [],\n expression: this.expression,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates checks from the check metadata object.\n */\n TableCheck.create = function (checkMetadata) {\n return new TableCheck({\n name: checkMetadata.name,\n expression: checkMetadata.expression\n });\n };\n return TableCheck;\n}());\n\n\n//# sourceMappingURL=TableCheck.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/table/TableCheck.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/table/TableColumn.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/table/TableColumn.js ***! - \**************************************************************************/ -/*! exports provided: TableColumn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableColumn\", function() { return TableColumn; });\n/**\n * Table's columns in the database represented in this class.\n */\nvar TableColumn = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableColumn(options) {\n /**\n * Indicates if column is NULL, or is NOT NULL in the database.\n */\n this.isNullable = false;\n /**\n * Indicates if column is auto-generated sequence.\n */\n this.isGenerated = false;\n /**\n * Indicates if column is a primary key.\n */\n this.isPrimary = false;\n /**\n * Indicates if column has unique value.\n */\n this.isUnique = false;\n /**\n * Indicates if column stores array.\n */\n this.isArray = false;\n /**\n * Column type's length. Used only on some column types.\n * For example type = \"string\" and length = \"100\" means that ORM will create a column with type varchar(100).\n */\n this.length = \"\";\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n this.zerofill = false;\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n this.unsigned = false;\n if (options) {\n this.name = options.name;\n this.type = options.type || \"\";\n this.length = options.length || \"\";\n this.width = options.width;\n this.charset = options.charset;\n this.collation = options.collation;\n this.precision = options.precision;\n this.scale = options.scale;\n this.zerofill = options.zerofill || false;\n this.unsigned = this.zerofill ? true : (options.unsigned || false);\n this.default = options.default;\n this.onUpdate = options.onUpdate;\n this.isNullable = options.isNullable || false;\n this.isGenerated = options.isGenerated || false;\n this.generationStrategy = options.generationStrategy;\n this.isPrimary = options.isPrimary || false;\n this.isUnique = options.isUnique || false;\n this.isArray = options.isArray || false;\n this.comment = options.comment;\n this.enum = options.enum;\n this.enumName = options.enumName;\n this.asExpression = options.asExpression;\n this.generatedType = options.generatedType;\n this.spatialFeatureType = options.spatialFeatureType;\n this.srid = options.srid;\n }\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Clones this column to a new column with exact same properties as this column has.\n */\n TableColumn.prototype.clone = function () {\n return new TableColumn({\n name: this.name,\n type: this.type,\n length: this.length,\n width: this.width,\n charset: this.charset,\n collation: this.collation,\n precision: this.precision,\n scale: this.scale,\n zerofill: this.zerofill,\n unsigned: this.unsigned,\n enum: this.enum,\n enumName: this.enumName,\n asExpression: this.asExpression,\n generatedType: this.generatedType,\n default: this.default,\n onUpdate: this.onUpdate,\n isNullable: this.isNullable,\n isGenerated: this.isGenerated,\n generationStrategy: this.generationStrategy,\n isPrimary: this.isPrimary,\n isUnique: this.isUnique,\n isArray: this.isArray,\n comment: this.comment,\n spatialFeatureType: this.spatialFeatureType,\n srid: this.srid\n });\n };\n return TableColumn;\n}());\n\n\n//# sourceMappingURL=TableColumn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/table/TableColumn.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js ***! - \*****************************************************************************/ -/*! exports provided: TableExclusion */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableExclusion\", function() { return TableExclusion; });\n/**\n * Database's table exclusion constraint stored in this class.\n */\nvar TableExclusion = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableExclusion(options) {\n this.name = options.name;\n this.expression = options.expression;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n TableExclusion.prototype.clone = function () {\n return new TableExclusion({\n name: this.name,\n expression: this.expression,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates exclusions from the exclusion metadata object.\n */\n TableExclusion.create = function (exclusionMetadata) {\n return new TableExclusion({\n name: exclusionMetadata.name,\n expression: exclusionMetadata.expression\n });\n };\n return TableExclusion;\n}());\n\n\n//# sourceMappingURL=TableExclusion.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js": -/*!******************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js ***! - \******************************************************************************/ -/*! exports provided: TableForeignKey */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableForeignKey\", function() { return TableForeignKey; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Foreign key from the database stored in this class.\n */\nvar TableForeignKey = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableForeignKey(options) {\n /**\n * Column names which included by this foreign key.\n */\n this.columnNames = [];\n /**\n * Column names which included by this foreign key.\n */\n this.referencedColumnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n this.referencedColumnNames = options.referencedColumnNames;\n this.referencedTableName = options.referencedTableName;\n this.onDelete = options.onDelete;\n this.onUpdate = options.onUpdate;\n this.deferrable = options.deferrable;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this foreign key with exactly same properties.\n */\n TableForeignKey.prototype.clone = function () {\n return new TableForeignKey({\n name: this.name,\n columnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.columnNames)),\n referencedColumnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.referencedColumnNames)),\n referencedTableName: this.referencedTableName,\n onDelete: this.onDelete,\n onUpdate: this.onUpdate,\n deferrable: this.deferrable,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new table foreign key from the given foreign key metadata.\n */\n TableForeignKey.create = function (metadata) {\n return new TableForeignKey({\n name: metadata.name,\n columnNames: metadata.columnNames,\n referencedColumnNames: metadata.referencedColumnNames,\n referencedTableName: metadata.referencedTablePath,\n onDelete: metadata.onDelete,\n onUpdate: metadata.onUpdate,\n deferrable: metadata.deferrable,\n });\n };\n return TableForeignKey;\n}());\n\n\n//# sourceMappingURL=TableForeignKey.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/table/TableIndex.js": -/*!*************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/table/TableIndex.js ***! - \*************************************************************************/ -/*! exports provided: TableIndex */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableIndex\", function() { return TableIndex; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Database's table index stored in this class.\n */\nvar TableIndex = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableIndex(options) {\n /**\n * Columns included in this index.\n */\n this.columnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n this.isUnique = !!options.isUnique;\n this.isSpatial = !!options.isSpatial;\n this.isFulltext = !!options.isFulltext;\n this.parser = options.parser;\n this.where = options.where ? options.where : \"\";\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this index with exactly same properties.\n */\n TableIndex.prototype.clone = function () {\n return new TableIndex({\n name: this.name,\n columnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.columnNames)),\n isUnique: this.isUnique,\n isSpatial: this.isSpatial,\n isFulltext: this.isFulltext,\n parser: this.parser,\n where: this.where\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates index from the index metadata object.\n */\n TableIndex.create = function (indexMetadata) {\n return new TableIndex({\n name: indexMetadata.name,\n columnNames: indexMetadata.columns.map(function (column) { return column.databaseName; }),\n isUnique: indexMetadata.isUnique,\n isSpatial: indexMetadata.isSpatial,\n isFulltext: indexMetadata.isFulltext,\n parser: indexMetadata.parser,\n where: indexMetadata.where\n });\n };\n return TableIndex;\n}());\n\n\n//# sourceMappingURL=TableIndex.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/table/TableIndex.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/table/TableUnique.js": -/*!**************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/table/TableUnique.js ***! - \**************************************************************************/ -/*! exports provided: TableUnique */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableUnique\", function() { return TableUnique; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Database's table unique constraint stored in this class.\n */\nvar TableUnique = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableUnique(options) {\n /**\n * Columns that contains this constraint.\n */\n this.columnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n TableUnique.prototype.clone = function () {\n return new TableUnique({\n name: this.name,\n columnNames: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(this.columnNames))\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates unique from the unique metadata object.\n */\n TableUnique.create = function (uniqueMetadata) {\n return new TableUnique({\n name: uniqueMetadata.name,\n columnNames: uniqueMetadata.columns.map(function (column) { return column.databaseName; })\n });\n };\n return TableUnique;\n}());\n\n\n//# sourceMappingURL=TableUnique.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/table/TableUnique.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/util/TableUtils.js": -/*!************************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/util/TableUtils.js ***! - \************************************************************************/ -/*! exports provided: TableUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableUtils\", function() { return TableUtils; });\nvar TableUtils = /** @class */ (function () {\n function TableUtils() {\n }\n TableUtils.createTableColumnOptions = function (columnMetadata, driver) {\n return {\n name: columnMetadata.databaseName,\n length: columnMetadata.length,\n width: columnMetadata.width,\n charset: columnMetadata.charset,\n collation: columnMetadata.collation,\n precision: columnMetadata.precision,\n scale: columnMetadata.scale,\n zerofill: columnMetadata.zerofill,\n unsigned: columnMetadata.unsigned,\n asExpression: columnMetadata.asExpression,\n generatedType: columnMetadata.generatedType,\n default: driver.normalizeDefault(columnMetadata),\n onUpdate: columnMetadata.onUpdate,\n comment: columnMetadata.comment,\n isGenerated: columnMetadata.isGenerated,\n generationStrategy: columnMetadata.generationStrategy,\n isNullable: columnMetadata.isNullable,\n type: driver.normalizeType(columnMetadata),\n isPrimary: columnMetadata.isPrimary,\n isUnique: driver.normalizeIsUnique(columnMetadata),\n isArray: columnMetadata.isArray || false,\n enum: columnMetadata.enum ? columnMetadata.enum.map(function (val) { return val + \"\"; }) : columnMetadata.enum,\n enumName: columnMetadata.enumName,\n spatialFeatureType: columnMetadata.spatialFeatureType,\n srid: columnMetadata.srid\n };\n };\n return TableUtils;\n}());\n\n\n//# sourceMappingURL=TableUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/util/TableUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/schema-builder/view/View.js": -/*!******************************************************************!*\ - !*** ./node_modules/typeorm/browser/schema-builder/view/View.js ***! - \******************************************************************/ -/*! exports provided: View */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"View\", function() { return View; });\n/**\n * View in the database represented in this class.\n */\nvar View = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function View(options) {\n if (options) {\n this.name = options.name;\n this.expression = options.expression;\n this.materialized = !!options.materialized;\n }\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Clones this table to a new table with all properties cloned.\n */\n View.prototype.clone = function () {\n return new View({\n name: this.name,\n expression: this.expression,\n materialized: this.materialized,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates view from a given entity metadata.\n */\n View.create = function (entityMetadata, driver) {\n var options = {\n name: driver.buildTableName(entityMetadata.tableName, entityMetadata.schema, entityMetadata.database),\n expression: entityMetadata.expression,\n materialized: entityMetadata.tableMetadataArgs.materialized\n };\n return new View(options);\n };\n return View;\n}());\n\n\n//# sourceMappingURL=View.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/schema-builder/view/View.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/subscriber/Broadcaster.js": -/*!****************************************************************!*\ - !*** ./node_modules/typeorm/browser/subscriber/Broadcaster.js ***! - \****************************************************************/ -/*! exports provided: Broadcaster */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Broadcaster\", function() { return Broadcaster; });\n/**\n * Broadcaster provides a helper methods to broadcast events to the subscribers.\n */\nvar Broadcaster = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Broadcaster(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Broadcasts \"BEFORE_INSERT\" event.\n * Before insert event is executed before entity is being inserted to the database for the first time.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastBeforeInsertEvent = function (result, metadata, entity) {\n var _this = this;\n if (entity && metadata.beforeInsertListeners.length) {\n metadata.beforeInsertListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeInsert) {\n var executionResult = subscriber.beforeInsert({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_UPDATE\" event.\n * Before update event is executed before entity is being updated in the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastBeforeUpdateEvent = function (result, metadata, entity, databaseEntity, updatedColumns, updatedRelations) {\n var _this = this;\n if (entity && metadata.beforeUpdateListeners.length) {\n metadata.beforeUpdateListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeUpdate) {\n var executionResult = subscriber.beforeUpdate({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n updatedColumns: updatedColumns || [],\n updatedRelations: updatedRelations || []\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_REMOVE\" event.\n * Before remove event is executed before entity is being removed from the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastBeforeRemoveEvent = function (result, metadata, entity, databaseEntity) {\n var _this = this;\n if (entity && metadata.beforeRemoveListeners.length) {\n metadata.beforeRemoveListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeRemove) {\n var executionResult = subscriber.beforeRemove({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n entityId: metadata.getEntityIdMixedMap(databaseEntity)\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_INSERT\" event.\n * After insert event is executed after entity is being persisted to the database for the first time.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastAfterInsertEvent = function (result, metadata, entity) {\n var _this = this;\n if (entity && metadata.afterInsertListeners.length) {\n metadata.afterInsertListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterInsert) {\n var executionResult = subscriber.afterInsert({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_TRANSACTION_START\" event.\n */\n Broadcaster.prototype.broadcastBeforeTransactionStartEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.beforeTransactionStart) {\n var executionResult = subscriber.beforeTransactionStart({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_TRANSACTION_START\" event.\n */\n Broadcaster.prototype.broadcastAfterTransactionStartEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.afterTransactionStart) {\n var executionResult = subscriber.afterTransactionStart({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_TRANSACTION_COMMIT\" event.\n */\n Broadcaster.prototype.broadcastBeforeTransactionCommitEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.beforeTransactionCommit) {\n var executionResult = subscriber.beforeTransactionCommit({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_TRANSACTION_COMMIT\" event.\n */\n Broadcaster.prototype.broadcastAfterTransactionCommitEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.afterTransactionCommit) {\n var executionResult = subscriber.afterTransactionCommit({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_TRANSACTION_ROLLBACK\" event.\n */\n Broadcaster.prototype.broadcastBeforeTransactionRollbackEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.beforeTransactionRollback) {\n var executionResult = subscriber.beforeTransactionRollback({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_TRANSACTION_ROLLBACK\" event.\n */\n Broadcaster.prototype.broadcastAfterTransactionRollbackEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.afterTransactionRollback) {\n var executionResult = subscriber.afterTransactionRollback({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_UPDATE\" event.\n * After update event is executed after entity is being updated in the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastAfterUpdateEvent = function (result, metadata, entity, databaseEntity, updatedColumns, updatedRelations) {\n var _this = this;\n if (entity && metadata.afterUpdateListeners.length) {\n metadata.afterUpdateListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterUpdate) {\n var executionResult = subscriber.afterUpdate({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n updatedColumns: updatedColumns || [],\n updatedRelations: updatedRelations || []\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_REMOVE\" event.\n * After remove event is executed after entity is being removed from the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastAfterRemoveEvent = function (result, metadata, entity, databaseEntity) {\n var _this = this;\n if (entity && metadata.afterRemoveListeners.length) {\n metadata.afterRemoveListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterRemove) {\n var executionResult = subscriber.afterRemove({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n entityId: metadata.getEntityIdMixedMap(databaseEntity)\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_LOAD\" event for all given entities, and their sub-entities.\n * After load event is executed after entity has been loaded from the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastLoadEventsForAll = function (result, metadata, entities) {\n var _this = this;\n entities.forEach(function (entity) {\n if (entity instanceof Promise) // todo: check why need this?\n return;\n // collect load events for all children entities that were loaded with the main entity\n if (metadata.relations.length) {\n metadata.relations.forEach(function (relation) {\n // in lazy relations we cannot simply access to entity property because it will cause a getter and a database query\n if (relation.isLazy && !entity.hasOwnProperty(relation.propertyName))\n return;\n var value = relation.getEntityValue(entity);\n if (value instanceof Object)\n _this.broadcastLoadEventsForAll(result, relation.inverseEntityMetadata, Array.isArray(value) ? value : [value]);\n });\n }\n if (metadata.afterLoadListeners.length) {\n metadata.afterLoadListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (_this.queryRunner.connection.subscribers.length) {\n _this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterLoad) {\n var executionResult = subscriber.afterLoad(entity, {\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if subscriber's methods can be executed by checking if its don't listen to the particular entity,\n * or listens our entity.\n */\n Broadcaster.prototype.isAllowedSubscriber = function (subscriber, target) {\n return !subscriber.listenTo ||\n !subscriber.listenTo() ||\n subscriber.listenTo() === Object ||\n subscriber.listenTo() === target ||\n subscriber.listenTo().isPrototypeOf(target);\n };\n return Broadcaster;\n}());\n\n\n//# sourceMappingURL=Broadcaster.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/subscriber/Broadcaster.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/subscriber/BroadcasterResult.js": -/*!**********************************************************************!*\ - !*** ./node_modules/typeorm/browser/subscriber/BroadcasterResult.js ***! - \**********************************************************************/ -/*! exports provided: BroadcasterResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BroadcasterResult\", function() { return BroadcasterResult; });\n/**\n * Broadcaster execution result - promises executed by operations and number of executed listeners and subscribers.\n */\nvar BroadcasterResult = /** @class */ (function () {\n function BroadcasterResult() {\n /**\n * Number of executed listeners and subscribers.\n */\n this.count = 0;\n /**\n * Promises returned by listeners and subscribers which needs to be awaited.\n */\n this.promises = [];\n }\n return BroadcasterResult;\n}());\n\n\n//# sourceMappingURL=BroadcasterResult.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/subscriber/BroadcasterResult.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/util/ApplyValueTransformers.js": -/*!*********************************************************************!*\ - !*** ./node_modules/typeorm/browser/util/ApplyValueTransformers.js ***! - \*********************************************************************/ -/*! exports provided: ApplyValueTransformers */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ApplyValueTransformers\", function() { return ApplyValueTransformers; });\nvar ApplyValueTransformers = /** @class */ (function () {\n function ApplyValueTransformers() {\n }\n ApplyValueTransformers.transformFrom = function (transformer, databaseValue) {\n if (Array.isArray(transformer)) {\n var reverseTransformers = transformer.slice().reverse();\n return reverseTransformers.reduce(function (transformedValue, _transformer) {\n return _transformer.from(transformedValue);\n }, databaseValue);\n }\n return transformer.from(databaseValue);\n };\n ApplyValueTransformers.transformTo = function (transformer, entityValue) {\n if (Array.isArray(transformer)) {\n return transformer.reduce(function (transformedValue, _transformer) {\n return _transformer.to(transformedValue);\n }, entityValue);\n }\n return transformer.to(entityValue);\n };\n return ApplyValueTransformers;\n}());\n\n\n//# sourceMappingURL=ApplyValueTransformers.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/util/ApplyValueTransformers.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/util/DateUtils.js": -/*!********************************************************!*\ - !*** ./node_modules/typeorm/browser/util/DateUtils.js ***! - \********************************************************/ -/*! exports provided: DateUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DateUtils\", function() { return DateUtils; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\n/**\n * Provides utilities to transform hydrated and persisted data.\n */\nvar DateUtils = /** @class */ (function () {\n function DateUtils() {\n }\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Normalizes date object hydrated from the database.\n */\n DateUtils.normalizeHydratedDate = function (mixedDate) {\n if (!mixedDate)\n return mixedDate;\n return typeof mixedDate === \"string\" ? new Date(mixedDate) : mixedDate;\n };\n /**\n * Converts given value into date string in a \"YYYY-MM-DD\" format.\n */\n DateUtils.mixedDateToDateString = function (value) {\n if (value instanceof Date)\n return this.formatZerolessValue(value.getFullYear()) + \"-\" + this.formatZerolessValue(value.getMonth() + 1) + \"-\" + this.formatZerolessValue(value.getDate());\n return value;\n };\n /**\n * Converts given value into date object.\n */\n DateUtils.mixedDateToDate = function (mixedDate, toUtc, useMilliseconds) {\n if (toUtc === void 0) { toUtc = false; }\n if (useMilliseconds === void 0) { useMilliseconds = true; }\n var date = typeof mixedDate === \"string\" ? new Date(mixedDate) : mixedDate;\n if (toUtc)\n date = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n if (!useMilliseconds)\n date.setUTCMilliseconds(0);\n return date;\n };\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n DateUtils.mixedDateToTimeString = function (value, skipSeconds) {\n if (skipSeconds === void 0) { skipSeconds = false; }\n if (value instanceof Date)\n return this.formatZerolessValue(value.getHours()) +\n \":\" + this.formatZerolessValue(value.getMinutes()) +\n (!skipSeconds ? \":\" + this.formatZerolessValue(value.getSeconds()) : \"\");\n return value;\n };\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n DateUtils.mixedTimeToDate = function (value) {\n if (typeof value === \"string\") {\n var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(value.split(\":\"), 3), hours = _a[0], minutes = _a[1], seconds = _a[2];\n var date = new Date();\n if (hours)\n date.setHours(parseInt(hours));\n if (minutes)\n date.setMinutes(parseInt(minutes));\n if (seconds)\n date.setSeconds(parseInt(seconds));\n return date;\n }\n return value;\n };\n /**\n * Converts given string value with \"-\" separator into a \"HH:mm:ss\" format.\n */\n DateUtils.mixedTimeToString = function (value, skipSeconds) {\n if (skipSeconds === void 0) { skipSeconds = false; }\n value = value instanceof Date ? (value.getHours() + \":\" + value.getMinutes() + (!skipSeconds ? \":\" + value.getSeconds() : \"\")) : value;\n if (typeof value === \"string\") {\n return value.split(\":\")\n .map(function (v) { return v.length === 1 ? \"0\" + v : v; }) // append zero at beginning if we have a first-zero-less number\n .join(\":\");\n }\n return value;\n };\n /**\n * Converts given value into datetime string in a \"YYYY-MM-DD HH-mm-ss\" format.\n */\n DateUtils.mixedDateToDatetimeString = function (value, useMilliseconds) {\n if (typeof value === \"string\") {\n value = new Date(value);\n }\n if (value instanceof Date) {\n var finalValue = this.formatZerolessValue(value.getFullYear()) + \"-\" +\n this.formatZerolessValue(value.getMonth() + 1) + \"-\" +\n this.formatZerolessValue(value.getDate()) + \" \" +\n this.formatZerolessValue(value.getHours()) + \":\" +\n this.formatZerolessValue(value.getMinutes()) + \":\" +\n this.formatZerolessValue(value.getSeconds());\n if (useMilliseconds)\n finalValue += \".\" + this.formatMilliseconds(value.getMilliseconds());\n value = finalValue;\n }\n return value;\n };\n /**\n * Converts given value into utc datetime string in a \"YYYY-MM-DD HH-mm-ss.sss\" format.\n */\n DateUtils.mixedDateToUtcDatetimeString = function (value) {\n if (typeof value === \"string\") {\n value = new Date(value);\n }\n if (value instanceof Date) {\n return this.formatZerolessValue(value.getUTCFullYear()) + \"-\" +\n this.formatZerolessValue(value.getUTCMonth() + 1) + \"-\" +\n this.formatZerolessValue(value.getUTCDate()) + \" \" +\n this.formatZerolessValue(value.getUTCHours()) + \":\" +\n this.formatZerolessValue(value.getUTCMinutes()) + \":\" +\n this.formatZerolessValue(value.getUTCSeconds()) + \".\" +\n this.formatMilliseconds(value.getUTCMilliseconds());\n }\n return value;\n };\n /**\n * Converts each item in the given array to string joined by \",\" separator.\n */\n DateUtils.simpleArrayToString = function (value) {\n if (Array.isArray(value)) {\n return value\n .map(function (i) { return String(i); })\n .join(\",\");\n }\n return value;\n };\n /**\n * Converts given string to simple array split by \",\" separator.\n */\n DateUtils.stringToSimpleArray = function (value) {\n if (value instanceof String || typeof value === \"string\") {\n if (value.length > 0) {\n return value.split(\",\");\n }\n else {\n return [];\n }\n }\n return value;\n };\n DateUtils.simpleJsonToString = function (value) {\n return JSON.stringify(value);\n };\n DateUtils.stringToSimpleJson = function (value) {\n return typeof value === \"string\" ? JSON.parse(value) : value;\n };\n DateUtils.simpleEnumToString = function (value) {\n return \"\" + value;\n };\n DateUtils.stringToSimpleEnum = function (value, columnMetadata) {\n if (columnMetadata.enum\n && !isNaN(value)\n && columnMetadata.enum.indexOf(parseInt(value)) >= 0) {\n // convert to number if that exists in poosible enum options\n value = parseInt(value);\n }\n return value;\n };\n // -------------------------------------------------------------------------\n // Private Static Methods\n // -------------------------------------------------------------------------\n /**\n * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n */\n DateUtils.formatZerolessValue = function (value) {\n if (value < 10)\n return \"0\" + value;\n return String(value);\n };\n /**\n * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n */\n DateUtils.formatMilliseconds = function (value) {\n if (value < 10) {\n return \"00\" + value;\n }\n else if (value < 100) {\n return \"0\" + value;\n }\n else {\n return String(value);\n }\n };\n return DateUtils;\n}());\n\n\n//# sourceMappingURL=DateUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/util/DateUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/util/DepGraph.js": -/*!*******************************************************!*\ - !*** ./node_modules/typeorm/browser/util/DepGraph.js ***! - \*******************************************************/ -/*! exports provided: DepGraph */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DepGraph\", function() { return DepGraph; });\n/**\n * This source code is from https://github.com/jriecken/dependency-graph\n * Just added \"any\" types here, wrapper everything into exported class.\n * We cant use a package itself because we want to package \"everything-in-it\" for the frontend users of TypeORM.\n */\n/**\n * A simple dependency graph\n */\n/**\n * Helper for creating a Depth-First-Search on\n * a set of edges.\n *\n * Detects cycles and throws an Error if one is detected.\n *\n * @param edges The set of edges to DFS through\n * @param leavesOnly Whether to only return \"leaf\" nodes (ones who have no edges)\n * @param result An array in which the results will be populated\n */\nfunction createDFS(edges, leavesOnly, result) {\n var currentPath = [];\n var visited = {};\n return function DFS(currentNode) {\n visited[currentNode] = true;\n currentPath.push(currentNode);\n edges[currentNode].forEach(function (node) {\n if (!visited[node]) {\n DFS(node);\n }\n else if (currentPath.indexOf(node) >= 0) {\n currentPath.push(node);\n throw new Error(\"Dependency Cycle Found: \" + currentPath.join(\" -> \"));\n }\n });\n currentPath.pop();\n if ((!leavesOnly || edges[currentNode].length === 0) && result.indexOf(currentNode) === -1) {\n result.push(currentNode);\n }\n };\n}\nvar DepGraph = /** @class */ (function () {\n function DepGraph() {\n this.nodes = {};\n this.outgoingEdges = {}; // Node -> [Dependency Node]\n this.incomingEdges = {}; // Node -> [Dependant Node]\n }\n /**\n * Add a node to the dependency graph. If a node already exists, this method will do nothing.\n */\n DepGraph.prototype.addNode = function (node, data) {\n if (!this.hasNode(node)) {\n // Checking the arguments length allows the user to add a node with undefined data\n if (arguments.length === 2) {\n this.nodes[node] = data;\n }\n else {\n this.nodes[node] = node;\n }\n this.outgoingEdges[node] = [];\n this.incomingEdges[node] = [];\n }\n };\n /**\n * Remove a node from the dependency graph. If a node does not exist, this method will do nothing.\n */\n DepGraph.prototype.removeNode = function (node) {\n if (this.hasNode(node)) {\n delete this.nodes[node];\n delete this.outgoingEdges[node];\n delete this.incomingEdges[node];\n [this.incomingEdges, this.outgoingEdges].forEach(function (edgeList) {\n Object.keys(edgeList).forEach(function (key) {\n var idx = edgeList[key].indexOf(node);\n if (idx >= 0) {\n edgeList[key].splice(idx, 1);\n }\n }, this);\n });\n }\n };\n /**\n * Check if a node exists in the graph\n */\n DepGraph.prototype.hasNode = function (node) {\n return this.nodes.hasOwnProperty(node);\n };\n /**\n * Get the data associated with a node name\n */\n DepGraph.prototype.getNodeData = function (node) {\n if (this.hasNode(node)) {\n return this.nodes[node];\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * Set the associated data for a given node name. If the node does not exist, this method will throw an error\n */\n DepGraph.prototype.setNodeData = function (node, data) {\n if (this.hasNode(node)) {\n this.nodes[node] = data;\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * Add a dependency between two nodes. If either of the nodes does not exist,\n * an Error will be thrown.\n */\n DepGraph.prototype.addDependency = function (from, to) {\n if (!this.hasNode(from)) {\n throw new Error(\"Node does not exist: \" + from);\n }\n if (!this.hasNode(to)) {\n throw new Error(\"Node does not exist: \" + to);\n }\n if (this.outgoingEdges[from].indexOf(to) === -1) {\n this.outgoingEdges[from].push(to);\n }\n if (this.incomingEdges[to].indexOf(from) === -1) {\n this.incomingEdges[to].push(from);\n }\n return true;\n };\n /**\n * Remove a dependency between two nodes.\n */\n DepGraph.prototype.removeDependency = function (from, to) {\n var idx;\n if (this.hasNode(from)) {\n idx = this.outgoingEdges[from].indexOf(to);\n if (idx >= 0) {\n this.outgoingEdges[from].splice(idx, 1);\n }\n }\n if (this.hasNode(to)) {\n idx = this.incomingEdges[to].indexOf(from);\n if (idx >= 0) {\n this.incomingEdges[to].splice(idx, 1);\n }\n }\n };\n /**\n * Get an array containing the nodes that the specified node depends on (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned\n * in the array.\n */\n DepGraph.prototype.dependenciesOf = function (node, leavesOnly) {\n if (this.hasNode(node)) {\n var result = [];\n var DFS = createDFS(this.outgoingEdges, leavesOnly, result);\n DFS(node);\n var idx = result.indexOf(node);\n if (idx >= 0) {\n result.splice(idx, 1);\n }\n return result;\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * get an array containing the nodes that depend on the specified node (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not have any dependants will be returned in the array.\n */\n DepGraph.prototype.dependantsOf = function (node, leavesOnly) {\n if (this.hasNode(node)) {\n var result = [];\n var DFS = createDFS(this.incomingEdges, leavesOnly, result);\n DFS(node);\n var idx = result.indexOf(node);\n if (idx >= 0) {\n result.splice(idx, 1);\n }\n return result;\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * Construct the overall processing order for the dependency graph.\n *\n * Throws an Error if the graph has a cycle.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned.\n */\n DepGraph.prototype.overallOrder = function (leavesOnly) {\n var self = this;\n var result = [];\n var keys = Object.keys(this.nodes);\n if (keys.length === 0) {\n return result; // Empty graph\n }\n else {\n // Look for cycles - we run the DFS starting at all the nodes in case there\n // are several disconnected subgraphs inside this dependency graph.\n var CycleDFS_1 = createDFS(this.outgoingEdges, false, []);\n keys.forEach(function (n) {\n CycleDFS_1(n);\n });\n var DFS_1 = createDFS(this.outgoingEdges, leavesOnly, result);\n // Find all potential starting points (nodes with nothing depending on them) an\n // run a DFS starting at these points to get the order\n keys.filter(function (node) {\n return self.incomingEdges[node].length === 0;\n }).forEach(function (n) {\n DFS_1(n);\n });\n return result;\n }\n };\n return DepGraph;\n}());\n\n\n//# sourceMappingURL=DepGraph.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/util/DepGraph.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/util/ObjectUtils.js": -/*!**********************************************************!*\ - !*** ./node_modules/typeorm/browser/util/ObjectUtils.js ***! - \**********************************************************/ -/*! exports provided: ObjectUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObjectUtils\", function() { return ObjectUtils; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar ObjectUtils = /** @class */ (function () {\n function ObjectUtils() {\n }\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target The target object to copy to.\n * @param sources One or more source objects from which to copy properties\n */\n ObjectUtils.assign = function (target) {\n var e_1, _a, e_2, _b;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n try {\n for (var sources_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(sources), sources_1_1 = sources_1.next(); !sources_1_1.done; sources_1_1 = sources_1.next()) {\n var source = sources_1_1.value;\n try {\n for (var _c = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__values\"])(Object.getOwnPropertyNames(source))), _d = _c.next(); !_d.done; _d = _c.next()) {\n var prop = _d.value;\n target[prop] = source[prop];\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (sources_1_1 && !sources_1_1.done && (_a = sources_1.return)) _a.call(sources_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n return ObjectUtils;\n}());\n\n\n//# sourceMappingURL=ObjectUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/util/ObjectUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/util/OrmUtils.js": -/*!*******************************************************!*\ - !*** ./node_modules/typeorm/browser/util/OrmUtils.js ***! - \*******************************************************/ -/*! exports provided: OrmUtils */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OrmUtils\", function() { return OrmUtils; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar OrmUtils = /** @class */ (function () {\n function OrmUtils() {\n }\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n /**\n * Chunks array into peaces.\n */\n OrmUtils.chunk = function (array, size) {\n return Array.from(Array(Math.ceil(array.length / size)), function (_, i) {\n return array.slice(i * size, i * size + size);\n });\n };\n OrmUtils.splitClassesAndStrings = function (clsesAndStrings) {\n return [\n (clsesAndStrings).filter(function (cls) { return typeof cls !== \"string\"; }),\n (clsesAndStrings).filter(function (str) { return typeof str === \"string\"; }),\n ];\n };\n OrmUtils.groupBy = function (array, propertyCallback) {\n return array.reduce(function (groupedArray, value) {\n var key = propertyCallback(value);\n var grouped = groupedArray.find(function (i) { return i.id === key; });\n if (!grouped) {\n grouped = { id: key, items: [] };\n groupedArray.push(grouped);\n }\n grouped.items.push(value);\n return groupedArray;\n }, []);\n };\n OrmUtils.uniq = function (array, criteriaOrProperty) {\n return array.reduce(function (uniqueArray, item) {\n var found = false;\n if (criteriaOrProperty instanceof Function) {\n var itemValue_1 = criteriaOrProperty(item);\n found = !!uniqueArray.find(function (uniqueItem) { return criteriaOrProperty(uniqueItem) === itemValue_1; });\n }\n else if (typeof criteriaOrProperty === \"string\") {\n found = !!uniqueArray.find(function (uniqueItem) { return uniqueItem[criteriaOrProperty] === item[criteriaOrProperty]; });\n }\n else {\n found = uniqueArray.indexOf(item) !== -1;\n }\n if (!found)\n uniqueArray.push(item);\n return uniqueArray;\n }, []);\n };\n OrmUtils.isObject = function (item) {\n return (item && typeof item === \"object\" && !Array.isArray(item));\n };\n /**\n * Deep Object.assign.\n *\n * @see http://stackoverflow.com/a/34749873\n */\n OrmUtils.mergeDeep = function (target) {\n var _a, _b;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n if (!sources.length)\n return target;\n var source = sources.shift();\n if (this.isObject(target) && this.isObject(source)) {\n for (var key in source) {\n var value = source[key];\n if (key === \"__proto__\" || value instanceof Promise)\n continue;\n if (this.isObject(value)\n && !(value instanceof Map)\n && !(value instanceof Set)\n && !(value instanceof Date)\n && !(value instanceof Buffer)\n && !(value instanceof RegExp)) {\n if (!target[key])\n Object.assign(target, (_a = {}, _a[key] = Object.create(Object.getPrototypeOf(value)), _a));\n this.mergeDeep(target[key], value);\n }\n else {\n Object.assign(target, (_b = {}, _b[key] = value, _b));\n }\n }\n }\n return this.mergeDeep.apply(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([target], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__read\"])(sources)));\n };\n /**\n * Deep compare objects.\n *\n * @see http://stackoverflow.com/a/1144249\n */\n OrmUtils.deepCompare = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var i, l, leftChain, rightChain;\n if (arguments.length < 1) {\n return true; // Die silently? Don't know how to handle such case, please help...\n // throw \"Need two or more arguments to compare\";\n }\n for (i = 1, l = arguments.length; i < l; i++) {\n leftChain = []; // Todo: this can be cached\n rightChain = [];\n if (!this.compare2Objects(leftChain, rightChain, arguments[0], arguments[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * Check if two entity-id-maps are the same\n */\n OrmUtils.compareIds = function (firstId, secondId) {\n if (firstId === undefined || firstId === null || secondId === undefined || secondId === null)\n return false;\n // Optimized version for the common case\n if (((typeof firstId.id === \"string\" && typeof secondId.id === \"string\") ||\n (typeof firstId.id === \"number\" && typeof secondId.id === \"number\")) &&\n Object.keys(firstId).length === 1 &&\n Object.keys(secondId).length === 1) {\n return firstId.id === secondId.id;\n }\n return OrmUtils.deepCompare(firstId, secondId);\n };\n /**\n * Transforms given value into boolean value.\n */\n OrmUtils.toBoolean = function (value) {\n if (typeof value === \"boolean\")\n return value;\n if (typeof value === \"string\")\n return value === \"true\" || value === \"1\";\n if (typeof value === \"number\")\n return value > 0;\n return false;\n };\n /**\n * Composes an object from the given array of keys and values.\n */\n OrmUtils.zipObject = function (keys, values) {\n return keys.reduce(function (object, column, index) {\n object[column] = values[index];\n return object;\n }, {});\n };\n /**\n * Compares two arrays.\n */\n OrmUtils.isArraysEqual = function (arr1, arr2) {\n if (arr1.length !== arr2.length)\n return false;\n return arr1.every(function (element) {\n return arr2.indexOf(element) !== -1;\n });\n };\n // -------------------------------------------------------------------------\n // Private methods\n // -------------------------------------------------------------------------\n OrmUtils.compare2Objects = function (leftChain, rightChain, x, y) {\n var p;\n // remember that NaN === NaN returns false\n // and isNaN(undefined) returns true\n if (Number.isNaN(x) && Number.isNaN(y))\n return true;\n // Compare primitives and functions.\n // Check if both arguments link to the same object.\n // Especially useful on the step where we compare prototypes\n if (x === y)\n return true;\n // Unequal, but either is null or undefined (use case: jsonb comparasion)\n // PR #3776, todo: add tests\n if (x === null || y === null || x === undefined || y === undefined)\n return false;\n // Fix the buffer compare bug.\n // See: https://github.com/typeorm/typeorm/issues/3654\n if ((typeof x.equals === \"function\" || x.equals instanceof Function) && x.equals(y))\n return true;\n // Works in case when functions are created in constructor.\n // Comparing dates is a common scenario. Another built-ins?\n // We can even handle functions passed across iframes\n if ((typeof x === \"function\" && typeof y === \"function\") ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (x instanceof String && y instanceof String) ||\n (x instanceof Number && y instanceof Number))\n return x.toString() === y.toString();\n // At last checking prototypes as good as we can\n if (!(x instanceof Object && y instanceof Object))\n return false;\n if (x.isPrototypeOf(y) || y.isPrototypeOf(x))\n return false;\n if (x.constructor !== y.constructor)\n return false;\n if (x.prototype !== y.prototype)\n return false;\n // Check for infinitive linking loops\n if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1)\n return false;\n // Quick checking of one object being a subset of another.\n // todo: cache the structure of arguments[0] for performance\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if (typeof y[p] !== typeof x[p]) {\n return false;\n }\n }\n for (p in x) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if (typeof y[p] !== typeof x[p]) {\n return false;\n }\n switch (typeof (x[p])) {\n case \"object\":\n case \"function\":\n leftChain.push(x);\n rightChain.push(y);\n if (!this.compare2Objects(leftChain, rightChain, x[p], y[p])) {\n return false;\n }\n leftChain.pop();\n rightChain.pop();\n break;\n default:\n if (x[p] !== y[p]) {\n return false;\n }\n break;\n }\n }\n return true;\n };\n return OrmUtils;\n}());\n\n\n//# sourceMappingURL=OrmUtils.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/util/OrmUtils.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/util/RandomGenerator.js": -/*!**************************************************************!*\ - !*** ./node_modules/typeorm/browser/util/RandomGenerator.js ***! - \**************************************************************/ -/*! exports provided: RandomGenerator */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RandomGenerator\", function() { return RandomGenerator; });\nvar RandomGenerator = /** @class */ (function () {\n function RandomGenerator() {\n }\n /**\n * discuss at: http://locutus.io/php/sha1/\n * original by: Webtoolkit.info (http://www.webtoolkit.info/)\n * improved by: Michael White (http://getsprink.com)\n * improved by: Kevin van Zonneveld (http://kvz.io)\n * input by: Brett Zamir (http://brett-zamir.me)\n * note 1: Keep in mind that in accordance with PHP, the whole string is buffered and then\n * note 1: hashed. If available, we'd recommend using Node's native crypto modules directly\n * note 1: in a steaming fashion for faster and more efficient hashing\n * example 1: sha1('Kevin van Zonneveld')\n * returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897'\n */\n RandomGenerator.sha1 = function (str) {\n var _rotLeft = function (n, s) {\n var t4 = (n << s) | (n >>> (32 - s));\n return t4;\n };\n var _cvtHex = function (val) {\n var str = \"\";\n var i;\n var v;\n for (i = 7; i >= 0; i--) {\n v = (val >>> (i * 4)) & 0x0f;\n str += v.toString(16);\n }\n return str;\n };\n var blockstart;\n var i, j;\n var W = new Array(80);\n var H0 = 0x67452301;\n var H1 = 0xEFCDAB89;\n var H2 = 0x98BADCFE;\n var H3 = 0x10325476;\n var H4 = 0xC3D2E1F0;\n var A, B, C, D, E;\n var temp;\n // utf8_encode\n str = /*unescape*/ (encodeURIComponent(str));\n var strLen = str.length;\n var wordArray = [];\n for (i = 0; i < strLen - 3; i += 4) {\n j = str.charCodeAt(i) << 24 |\n str.charCodeAt(i + 1) << 16 |\n str.charCodeAt(i + 2) << 8 |\n str.charCodeAt(i + 3);\n wordArray.push(j);\n }\n switch (strLen % 4) {\n case 0:\n i = 0x080000000;\n break;\n case 1:\n i = str.charCodeAt(strLen - 1) << 24 | 0x0800000;\n break;\n case 2:\n i = str.charCodeAt(strLen - 2) << 24 | str.charCodeAt(strLen - 1) << 16 | 0x08000;\n break;\n case 3:\n i = str.charCodeAt(strLen - 3) << 24 |\n str.charCodeAt(strLen - 2) << 16 |\n str.charCodeAt(strLen - 1) <<\n 8 | 0x80;\n break;\n }\n wordArray.push(i);\n while ((wordArray.length % 16) !== 14) {\n wordArray.push(0);\n }\n wordArray.push(strLen >>> 29);\n wordArray.push((strLen << 3) & 0x0ffffffff);\n for (blockstart = 0; blockstart < wordArray.length; blockstart += 16) {\n for (i = 0; i < 16; i++) {\n W[i] = wordArray[blockstart + i];\n }\n for (i = 16; i <= 79; i++) {\n W[i] = _rotLeft(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n }\n A = H0;\n B = H1;\n C = H2;\n D = H3;\n E = H4;\n for (i = 0; i <= 19; i++) {\n temp = (_rotLeft(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n for (i = 20; i <= 39; i++) {\n temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n for (i = 40; i <= 59; i++) {\n temp = (_rotLeft(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n for (i = 60; i <= 79; i++) {\n temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n H0 = (H0 + A) & 0x0ffffffff;\n H1 = (H1 + B) & 0x0ffffffff;\n H2 = (H2 + C) & 0x0ffffffff;\n H3 = (H3 + D) & 0x0ffffffff;\n H4 = (H4 + E) & 0x0ffffffff;\n }\n temp = _cvtHex(H0) + _cvtHex(H1) + _cvtHex(H2) + _cvtHex(H3) + _cvtHex(H4);\n return temp.toLowerCase();\n };\n /**\n * RFC4122 compliant UUID v4 generator.\n */\n RandomGenerator.uuid4 = function () {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c === \"x\" ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n return RandomGenerator;\n}());\n\n\n//# sourceMappingURL=RandomGenerator.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/util/RandomGenerator.js?"); - -/***/ }), - -/***/ "./node_modules/typeorm/browser/util/StringUtils.js": -/*!**********************************************************!*\ - !*** ./node_modules/typeorm/browser/util/StringUtils.js ***! - \**********************************************************/ -/*! exports provided: camelCase, snakeCase, titleCase, abbreviate, shorten, hash */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"camelCase\", function() { return camelCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"snakeCase\", function() { return snakeCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"titleCase\", function() { return titleCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"abbreviate\", function() { return abbreviate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shorten\", function() { return shorten; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hash\", function() { return hash; });\n/* harmony import */ var sha_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! sha.js */ \"./node_modules/sha.js/index.js\");\n/* harmony import */ var sha_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(sha_js__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Converts string into camelCase.\n *\n * @see http://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case\n */\nfunction camelCase(str, firstCapital) {\n if (firstCapital === void 0) { firstCapital = false; }\n return str.replace(/^([A-Z])|[\\s-_](\\w)/g, function (match, p1, p2, offset) {\n if (firstCapital === true && offset === 0)\n return p1;\n if (p2)\n return p2.toUpperCase();\n return p1.toLowerCase();\n });\n}\n/**\n * Converts string into snake_case.\n *\n * @see https://regex101.com/r/QeSm2I/1\n */\nfunction snakeCase(str) {\n return str.replace(/(?:([a-z])([A-Z]))|(?:((?!^)[A-Z])([a-z]))/g, \"$1_$3$2$4\").toLowerCase();\n}\n/**\n * Converts string into Title Case.\n *\n * @see http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript\n */\nfunction titleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });\n}\n/**\n * Builds abbreviated string from given string;\n */\nfunction abbreviate(str, abbrLettersCount) {\n if (abbrLettersCount === void 0) { abbrLettersCount = 1; }\n var words = str.replace(/([a-z\\xE0-\\xFF])([A-Z\\xC0\\xDF])/g, \"$1 $2\").split(\" \");\n return words.reduce(function (res, word) {\n res += word.substr(0, abbrLettersCount);\n return res;\n }, \"\");\n}\n/**\n * Shorten a given `input`. Useful for RDBMS imposing a limit on the\n * maximum length of aliases and column names in SQL queries.\n *\n * @param input String to be shortened.\n * @param options Default to `4` for segments length, `2` for terms length, `'__'` as a separator.\n *\n * @return Shortened `input`.\n *\n * @example\n * // returns: \"UsShCa__orde__mark__dire\"\n * shorten('UserShoppingCart__order__market__director')\n *\n * // returns: \"cat_wit_ver_lon_nam_pos_wit_ver_lon_nam_pos_wit_ver_lon_nam\"\n * shorten(\n * 'category_with_very_long_name_posts_with_very_long_name_post_with_very_long_name',\n * { separator: '_', segmentLength: 3 }\n * )\n *\n * // equals: UsShCa__orde__mark_market_id\n * `${shorten('UserShoppingCart__order__market')}_market_id`\n */\nfunction shorten(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.segmentLength, segmentLength = _a === void 0 ? 4 : _a, _b = options.separator, separator = _b === void 0 ? \"__\" : _b, _c = options.termLength, termLength = _c === void 0 ? 2 : _c;\n var segments = input.split(separator);\n var shortSegments = segments.reduce(function (acc, val) {\n // split the given segment into many terms based on an eventual camel cased name\n var segmentTerms = val.replace(/([a-z\\xE0-\\xFF])([A-Z\\xC0-\\xDF])/g, \"$1 $2\").split(\" \");\n // \"OrderItemList\" becomes \"OrItLi\", while \"company\" becomes \"comp\"\n var length = segmentTerms.length > 1 ? termLength : segmentLength;\n var shortSegment = segmentTerms.map(function (term) { return term.substr(0, length); }).join(\"\");\n acc.push(shortSegment);\n return acc;\n }, []);\n return shortSegments.join(separator);\n}\n/**\n * Returns a hashed input.\n *\n * @param input String to be hashed.\n * @param options.length Optionally, shorten the output to desired length.\n */\nfunction hash(input, options) {\n if (options === void 0) { options = {}; }\n var hashFunction = sha_js__WEBPACK_IMPORTED_MODULE_0___default()(\"sha256\");\n hashFunction.update(input, \"utf8\");\n var hashedInput = hashFunction.digest(\"hex\");\n if (options.length) {\n return hashedInput.slice(0, options.length);\n }\n return hashedInput;\n}\n\n//# sourceMappingURL=StringUtils.js.map\n\n\n//# sourceURL=webpack:///./node_modules/typeorm/browser/util/StringUtils.js?"); - -/***/ }), - -/***/ "./node_modules/webpack/buildin/global.js": -/*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ -/*! no static exports found */ +// optional / simple context binding +var aFunction = __webpack_require__(63); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), +/* 63 */ /***/ (function(module, exports) { -eval("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\n\n//# sourceURL=webpack:///(webpack)/buildin/global.js?"); +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; + /***/ }), +/* 64 */ +/***/ (function(module, exports) { -/***/ "./src/client/html/fragment/settings.html": -/*!************************************************!*\ - !*** ./src/client/html/fragment/settings.html ***! - \************************************************/ -/*! no static exports found */ +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + + +/***/ }), +/* 65 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/settings.html\";\n\n//# sourceURL=webpack:///./src/client/html/fragment/settings.html?"); +var pIE = __webpack_require__(123); +var createDesc = __webpack_require__(86); +var toIObject = __webpack_require__(53); +var toPrimitive = __webpack_require__(82); +var has = __webpack_require__(51); +var IE8_DOM_DEFINE = __webpack_require__(213); +var gOPD = Object.getOwnPropertyDescriptor; + +exports.f = __webpack_require__(28) ? gOPD : function getOwnPropertyDescriptor(O, P) { + O = toIObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return gOPD(O, P); + } catch (e) { /* empty */ } + if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); +}; + /***/ }), - -/***/ "./src/client/html/sites/contactSite.html": -/*!************************************************!*\ - !*** ./src/client/html/sites/contactSite.html ***! - \************************************************/ -/*! no static exports found */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/contactSite.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/contactSite.html?"); +// most Object methods by ES6 should accept primitives +var $export = __webpack_require__(3); +var core = __webpack_require__(26); +var fails = __webpack_require__(12); +module.exports = function (KEY, exec) { + var fn = (core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); +}; + /***/ }), - -/***/ "./src/client/html/sites/credits.html": -/*!********************************************!*\ - !*** ./src/client/html/sites/credits.html ***! - \********************************************/ -/*! no static exports found */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/credits.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/credits.html?"); +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = __webpack_require__(62); +var IObject = __webpack_require__(122); +var toObject = __webpack_require__(36); +var toLength = __webpack_require__(23); +var asc = __webpack_require__(229); +module.exports = function (TYPE, $create) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + var create = $create || asc; + return function ($this, callbackfn, that) { + var O = toObject($this); + var self = IObject(O); + var f = ctx(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var val, res; + for (;length > index; index++) if (NO_HOLES || index in self) { + val = self[index]; + res = f(val, index, O); + if (TYPE) { + if (IS_MAP) result[index] = res; // map + else if (res) switch (TYPE) { + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; + /***/ }), - -/***/ "./src/client/html/sites/end.html": -/*!****************************************!*\ - !*** ./src/client/html/sites/end.html ***! - \****************************************/ -/*! no static exports found */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/end.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/end.html?"); +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DataManager = void 0; + +var Helper_1 = __webpack_require__(15); + +var NotOnlineError_1 = __webpack_require__(254); +/** + * Ein Manager, welches das Laden von Resourcen übernimmt. + */ + + +var DataManager = /*#__PURE__*/function () { + function DataManager() { + _classCallCheck(this, DataManager); + } + + _createClass(DataManager, null, [{ + key: "fetch", + value: + /** + * Diese Funktion sollte anstelle von dem nativen "fetch" verwendet werden! + * Das native Fetch kann keine file://, welches von Cordova unter Android (und whs iOS) verwendet wird + * Daher wird heir auf XMLHttpRequest zurückgegriffen + * + * @param url + * @param useArrayBuffer + * @returns {Promise<*>} + */ + function fetch(url, useArrayBuffer) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", new Promise(function (resolve, reject) { + var xhr = new XMLHttpRequest(); + useArrayBuffer = Helper_1.Helper.nonNull(useArrayBuffer, false); + + if (useArrayBuffer) { + xhr.responseType = "arraybuffer"; + } + + xhr.onload = function () { + resolve(new Response(useArrayBuffer ? xhr.response : xhr.responseText, { + status: xhr.status === 0 ? 200 : xhr.status + })); + }; + + xhr.onerror = function (e) { + console.error(e); + debugger; + reject(new NotOnlineError_1.NotOnlineError("not-online", url)); + }; + + xhr.open('GET', url); //set headers + + //set headers + Object.keys(DataManager._additionalHeaders).forEach(function (header) { + xhr.setRequestHeader(header, DataManager._additionalHeaders[header]); + }); + xhr.send(null); + }).then(function (res) { + if (DataManager.onlineCallback) { + DataManager.onlineCallback(true); + } + + return res; + }).catch(function (e) { + if (DataManager.onlineCallback) { + DataManager.onlineCallback(false); + } + + throw e; + })); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }, { + key: "fetchBlob", + value: function fetchBlob(url) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", new Promise(function (resolve, reject) { + var xhr = new XMLHttpRequest(); + + xhr.onload = function (e) { + resolve(xhr.response); + }; + + xhr.onerror = function (e) { + console.error(e); + debugger; + reject(new NotOnlineError_1.NotOnlineError("not-online", url)); + }; + + xhr.open('GET', url); + xhr.responseType = "blob"; //set headers + + //set headers + Object.keys(DataManager._additionalHeaders).forEach(function (header) { + xhr.setRequestHeader(header, DataManager._additionalHeaders[header]); + }); + xhr.send(null); + }).then(function (res) { + if (DataManager.onlineCallback) { + DataManager.onlineCallback(true); + } + + return res; + }).catch(function (e) { + if (DataManager.onlineCallback) { + DataManager.onlineCallback(false); + } + + throw e; + })); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + /** + * Vereinfachung von Laden von Resourcen. + * Lädt per GET die angegebene URL und gibt diese als JSON oder Text zurück + * + * @param url + * @param format + * @param useBasePath + * @returns {Promise<* | void>} + */ + + }, { + key: "load", + value: function load(url, format, useBasePath) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + format = Helper_1.Helper.nonNull(format, true); + + if (format === true) { + format = "json"; + } else if (format === false) { + format = "text"; + } else if (format !== "json" && format !== "text") { + format = "raw"; + } + + useBasePath = Helper_1.Helper.nonNull(useBasePath, true); + + if (useBasePath === true) { + useBasePath = DataManager._basePath; + } else if (typeof useBasePath !== "string") { + useBasePath = ""; + } + + url = DataManager.basePath(url, useBasePath); + return _context3.abrupt("return", DataManager.fetch(url, format === "raw").catch(function (e) { + if (DataManager.onlineCallback) { + DataManager.onlineCallback(false); + } + + throw new NotOnlineError_1.NotOnlineError(e, url); + }).then(function (res) { + if (DataManager.onlineCallback) { + DataManager.onlineCallback(true); + } + + if (format === "json") { + return res.json(); + } else if (format === "text") { + return res.text(); + } else { + return res; + } + })); + + case 6: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + } + /** + * Vereinfachung von Laden von Resourcen. + * Lädt per GET das angegebene Asset und gibt diese als JSON oder Text zurück + * + * @param url + * @param format + * @returns {Promise<* | void>} + */ + + }, { + key: "loadAsset", + value: function loadAsset(url, format) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var assetPath; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + assetPath = DataManager._assetBasePath; + + if (!url.startsWith("/") && assetPath.length > 0 && !assetPath.endsWith("/")) { + assetPath += "/"; + } + + return _context4.abrupt("return", this.load(url, Helper_1.Helper.nonNull(format, "text"), assetPath)); + + case 3: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + /** + * Wandelt ein Key-Value-Objekt in einen QueryString um + * + * @param values + * @return {string} + */ + + }, { + key: "buildQuery", + value: function buildQuery(values) { + var queryStrings = []; + + for (var k in values) { + queryStrings.push(encodeURIComponent(k) + "=" + encodeURIComponent(values[k])); + } + + return "?" + queryStrings.join("&"); + } + /** + * Wandelt ein Key-Value-Objekt in einen QueryString um + * + * @param values + * @return {string} + */ + + }, { + key: "buildQueryWithoutNullValues", + value: function buildQueryWithoutNullValues(values) { + var queryValues = {}; + + for (var k in values) { + if (Helper_1.Helper.isNotNull(values[k])) { + queryValues[k] = values[k]; + } + } + + return this.buildQuery(queryValues); + } + }, { + key: "send", + value: function send(url, params) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var headers; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + url = DataManager.basePath(url); + headers = {}; + + if (!(params instanceof FormData) && _typeof(params) === "object") { + params = JSON.stringify(params); + headers = { + "Content-Type": "application/json" + }; + } + + Object.keys(DataManager._additionalHeaders).forEach(function (header) { + headers[header] = DataManager._additionalHeaders[header]; + }); + return _context5.abrupt("return", fetch(url, { + "credentials": "same-origin", + "method": "POST", + "headers": headers, + "body": params + }).then(function (res) { + return res.json(); + }).catch(function (e) { + debugger; + console.error("error", e); + + if (DataManager.onlineCallback) { + DataManager.onlineCallback(false); + } + + return { + "success": false, + "errors": ["not-online"] + }; + })); + + case 5: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); + } + }, { + key: "basePath", + value: function basePath(url, _basePath) { + _basePath = Helper_1.Helper.nonNull(_basePath, DataManager._basePath); + return _basePath + (url ? url : ""); + } + }, { + key: "setHeader", + value: function setHeader(header, value) { + DataManager._additionalHeaders[header] = value; + } + }]); + + return DataManager; +}(); + +exports.DataManager = DataManager; +DataManager.onlineCallback = null; +DataManager._additionalHeaders = {}; +DataManager._basePath = ""; +DataManager._assetBasePath = ""; /***/ }), - -/***/ "./src/client/html/sites/impressum.html": -/*!**********************************************!*\ - !*** ./src/client/html/sites/impressum.html ***! - \**********************************************/ -/*! no static exports found */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/impressum.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/impressum.html?"); +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MenuSite = void 0; + +var TemplateSite_1 = __webpack_require__(199); + +var defaultMenuTemplate = __webpack_require__(510); + +var NavbarFragment_1 = __webpack_require__(160); + +var Context_1 = __webpack_require__(111); + +var Helper_1 = __webpack_require__(15); +/** + * Seite benutzt das menuTemplate, welches das ContainerTemplate includiert. + * + * Außerdem beinhaltet die MenuSite ein NavbarFragment, wo Menüelemente hinzugefügt werden können + */ + + +var MenuSite = /*#__PURE__*/function (_TemplateSite_1$Templ) { + _inherits(MenuSite, _TemplateSite_1$Templ); + + var _super2 = _createSuper(MenuSite); + + /** + * Constructor für eine MenuSite + * + * @param siteManager + * @param view + * @param menuTemplate + */ + function MenuSite(siteManager, view, menuTemplate) { + var _this; + + _classCallCheck(this, MenuSite); + + _this = _super2.call(this, siteManager, view, Helper_1.Helper.nonNull(menuTemplate, defaultMenuTemplate), "#site-content"); + _this._navbarFragment = new NavbarFragment_1.NavbarFragment(_assertThisInitialized(_this)); + + _this.addFragment("#navbar-fragment", _this._navbarFragment); + + return _this; + } + + _createClass(MenuSite, [{ + key: "getNavbarFragment", + value: function getNavbarFragment() { + return this._navbarFragment; + } + /** + * Während des onConstructs werden die Menüelemente hinzugefügt => aufrufen des onCreateMenu + * + * @param constructParameters + * @returns {Promise} + */ + + }, { + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this2 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return _get(_getPrototypeOf(MenuSite.prototype), "onConstruct", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var res; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return _super.onConstruct.call(this, constructParameters); + + case 2: + res = _context.sent; + this.onCreateMenu(this._navbarFragment); + return _context.abrupt("return", res); + + case 5: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onMenuPressed", + value: function onMenuPressed() { + this._navbarFragment.openMenu(); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this3 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(MenuSite.prototype), "onViewLoaded", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var res; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + res = _super.onViewLoaded.call(this); + + this._navbarFragment.setScrollWidget(this.findBy("#main-content-container")); + + return _context2.abrupt("return", res); + + case 3: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + /** + * Überschreibt updateTtle, um Element in der Statusbar zu setzen + * + * @protected + */ + + }, { + key: "_updateTitle", + value: function _updateTitle() { + _get(_getPrototypeOf(MenuSite.prototype), "_updateTitle", this).call(this); + + if (this._title.element && this._state === Context_1.Context.STATE_RUNNING) { + this._navbarFragment.setTitleElement(this._title.element); + } + } + /** + * Überschreiben durch Kinder-Klassen, um ein Menü zu erstellen + * + * @param {NavbarFragment} navbar + */ + + }, { + key: "onCreateMenu", + value: function onCreateMenu(navbar) {} + }]); + + return MenuSite; +}(TemplateSite_1.TemplateSite); + +exports.MenuSite = MenuSite; /***/ }), +/* 70 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ "./src/client/html/sites/level.html": -/*!******************************************!*\ - !*** ./src/client/html/sites/level.html ***! - \******************************************/ -/*! no static exports found */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TransactionAlreadyStartedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when transaction is already started and user tries to run it again. + */ +var TransactionAlreadyStartedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(TransactionAlreadyStartedError, _super); + function TransactionAlreadyStartedError() { + var _this = _super.call(this) || this; + _this.name = "TransactionAlreadyStartedError"; + Object.setPrototypeOf(_this, TransactionAlreadyStartedError.prototype); + _this.message = "Transaction already started for the given connection, commit current transaction before starting a new one."; + return _this; + } + return TransactionAlreadyStartedError; +}(Error)); + + +//# sourceMappingURL=TransactionAlreadyStartedError.js.map + + +/***/ }), +/* 71 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DriverPackageNotInstalledError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when required driver's package is not installed. + */ +var DriverPackageNotInstalledError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(DriverPackageNotInstalledError, _super); + function DriverPackageNotInstalledError(driverName, packageName) { + var _this = _super.call(this) || this; + _this.name = "DriverPackageNotInstalledError"; + Object.setPrototypeOf(_this, DriverPackageNotInstalledError.prototype); + _this.message = driverName + " package has not been found installed. Try to install it: npm install " + packageName + " --save"; + return _this; + } + return DriverPackageNotInstalledError; +}(Error)); + + +//# sourceMappingURL=DriverPackageNotInstalledError.js.map + + +/***/ }), +/* 72 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ReturningStatementNotSupportedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when user tries to build a query with RETURNING / OUTPUT statement, + * but used database does not support it. + */ +var ReturningStatementNotSupportedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(ReturningStatementNotSupportedError, _super); + function ReturningStatementNotSupportedError() { + var _this = _super.call(this) || this; + _this.name = "ReturningStatementNotSupportedError"; + Object.setPrototypeOf(_this, ReturningStatementNotSupportedError.prototype); + _this.message = "OUTPUT or RETURNING clause only supported by Microsoft SQL Server or PostgreSQL databases."; + return _this; + } + return ReturningStatementNotSupportedError; +}(Error)); + + +//# sourceMappingURL=ReturningStatementNotSupportedError.js.map + + +/***/ }), +/* 73 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractSqliteQueryRunner; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(70); +/* harmony import */ var _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44); +/* harmony import */ var _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(25); +/* harmony import */ var _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31); +/* harmony import */ var _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5); +/* harmony import */ var _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(38); +/* harmony import */ var _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48); +/* harmony import */ var _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(56); +/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(8); +/* harmony import */ var _Query__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(2); +/* harmony import */ var _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(30); +/* harmony import */ var _query_runner_BaseQueryRunner__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(163); +/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(6); +/* harmony import */ var _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(43); + + + + + + + + + + + + + + + +/** + * Runs queries on a single sqlite database connection. + */ +var AbstractSqliteQueryRunner = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(AbstractSqliteQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function AbstractSqliteQueryRunner() { + return _super.call(this) || this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates/uses database connection from the connection pool to perform further operations. + * Returns obtained database connection. + */ + AbstractSqliteQueryRunner.prototype.connect = function () { + return Promise.resolve(this.driver.databaseConnection); + }; + /** + * Releases used database connection. + * We just clear loaded tables and sql in memory, because sqlite do not support multiple connections thus query runners. + */ + AbstractSqliteQueryRunner.prototype.release = function () { + this.loadedTables = []; + this.clearSqlMemory(); + return Promise.resolve(); + }; + /** + * Starts transaction. + */ + AbstractSqliteQueryRunner.prototype.startTransaction = function (isolationLevel) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isTransactionActive) + throw new _error_TransactionAlreadyStartedError__WEBPACK_IMPORTED_MODULE_1__[/* TransactionAlreadyStartedError */ "a"](); + if (!isolationLevel) return [3 /*break*/, 4]; + if (isolationLevel !== "READ UNCOMMITTED" && isolationLevel !== "SERIALIZABLE") { + throw new Error("SQLite only supports SERIALIZABLE and READ UNCOMMITTED isolation"); + } + if (!(isolationLevel === "READ UNCOMMITTED")) return [3 /*break*/, 2]; + return [4 /*yield*/, this.query("PRAGMA read_uncommitted = true")]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: return [4 /*yield*/, this.query("PRAGMA read_uncommitted = false")]; + case 3: + _a.sent(); + _a.label = 4; + case 4: + beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[/* BroadcasterResult */ "a"](); + this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 6]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 5: + _a.sent(); + _a.label = 6; + case 6: + this.isTransactionActive = true; + return [4 /*yield*/, this.query("BEGIN TRANSACTION")]; + case 7: + _a.sent(); + afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[/* BroadcasterResult */ "a"](); + this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 9]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 8: + _a.sent(); + _a.label = 9; + case 9: return [2 /*return*/]; + } + }); + }); + }; + /** + * Commits transaction. + * Error will be thrown if transaction was not started. + */ + AbstractSqliteQueryRunner.prototype.commitTransaction = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive) + throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_2__[/* TransactionNotStartedError */ "a"](); + beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[/* BroadcasterResult */ "a"](); + this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: return [4 /*yield*/, this.query("COMMIT")]; + case 3: + _a.sent(); + this.isTransactionActive = false; + afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[/* BroadcasterResult */ "a"](); + this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Rollbacks transaction. + * Error will be thrown if transaction was not started. + */ + AbstractSqliteQueryRunner.prototype.rollbackTransaction = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var beforeBroadcastResult, afterBroadcastResult; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.isTransactionActive) + throw new _error_TransactionNotStartedError__WEBPACK_IMPORTED_MODULE_2__[/* TransactionNotStartedError */ "a"](); + beforeBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[/* BroadcasterResult */ "a"](); + this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult); + if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2]; + return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: return [4 /*yield*/, this.query("ROLLBACK")]; + case 3: + _a.sent(); + this.isTransactionActive = false; + afterBroadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_9__[/* BroadcasterResult */ "a"](); + this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult); + if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [2 /*return*/]; + } + }); + }); + }; + /** + * Returns raw data stream. + */ + AbstractSqliteQueryRunner.prototype.stream = function (query, parameters, onEnd, onError) { + throw new Error("Stream is not supported by sqlite driver."); + }; + /** + * Returns all available database names including system databases. + */ + AbstractSqliteQueryRunner.prototype.getDatabases = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, Promise.resolve([])]; + }); + }); + }; + /** + * Returns all available schema names including system schemas. + * If database parameter specified, returns schemas of that database. + */ + AbstractSqliteQueryRunner.prototype.getSchemas = function (database) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, Promise.resolve([])]; + }); + }); + }; + /** + * Checks if database with the given name exist. + */ + AbstractSqliteQueryRunner.prototype.hasDatabase = function (database) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, Promise.resolve(false)]; + }); + }); + }; + /** + * Checks if schema with the given name exist. + */ + AbstractSqliteQueryRunner.prototype.hasSchema = function (schema) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + throw new Error("This driver does not support table schemas"); + }); + }); + }; + /** + * Checks if table with the given name exist in the database. + */ + AbstractSqliteQueryRunner.prototype.hasTable = function (tableOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var tableName, sql, result; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"] ? tableOrName.name : tableOrName; + sql = "SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" = '" + tableName + "'"; + return [4 /*yield*/, this.query(sql)]; + case 1: + result = _a.sent(); + return [2 /*return*/, result.length ? true : false]; + } + }); + }); + }; + /** + * Checks if column with the given name exist in the given table. + */ + AbstractSqliteQueryRunner.prototype.hasColumn = function (tableOrName, columnName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var tableName, sql, columns; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"] ? tableOrName.name : tableOrName; + sql = "PRAGMA table_info(\"" + tableName + "\")"; + return [4 /*yield*/, this.query(sql)]; + case 1: + columns = _a.sent(); + return [2 /*return*/, !!columns.find(function (column) { return column["name"] === columnName; })]; + } + }); + }); + }; + /** + * Creates a new database. + */ + AbstractSqliteQueryRunner.prototype.createDatabase = function (database, ifNotExist) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, Promise.resolve()]; + }); + }); + }; + /** + * Drops database. + */ + AbstractSqliteQueryRunner.prototype.dropDatabase = function (database, ifExist) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, Promise.resolve()]; + }); + }); + }; + /** + * Creates a new table schema. + */ + AbstractSqliteQueryRunner.prototype.createSchema = function (schema, ifNotExist) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, Promise.resolve()]; + }); + }); + }; + /** + * Drops table schema. + */ + AbstractSqliteQueryRunner.prototype.dropSchema = function (schemaPath, ifExist) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, Promise.resolve()]; + }); + }); + }; + /** + * Creates a new table. + */ + AbstractSqliteQueryRunner.prototype.createTable = function (table, ifNotExist, createForeignKeys, createIndices) { + if (ifNotExist === void 0) { ifNotExist = false; } + if (createForeignKeys === void 0) { createForeignKeys = true; } + if (createIndices === void 0) { createIndices = true; } + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var upQueries, downQueries, isTableExist; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + upQueries = []; + downQueries = []; + if (!ifNotExist) return [3 /*break*/, 2]; + return [4 /*yield*/, this.hasTable(table)]; + case 1: + isTableExist = _a.sent(); + if (isTableExist) + return [2 /*return*/, Promise.resolve()]; + _a.label = 2; + case 2: + upQueries.push(this.createTableSql(table, createForeignKeys)); + downQueries.push(this.dropTableSql(table)); + if (createIndices) { + table.indices.forEach(function (index) { + // new index may be passed without name. In this case we generate index name manually. + if (!index.name) + index.name = _this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where); + upQueries.push(_this.createIndexSql(table, index)); + downQueries.push(_this.dropIndexSql(index)); + }); + } + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops the table. + */ + AbstractSqliteQueryRunner.prototype.dropTable = function (tableOrName, ifExist, dropForeignKeys, dropIndices) { + if (dropForeignKeys === void 0) { dropForeignKeys = true; } + if (dropIndices === void 0) { dropIndices = true; } + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var isTableExist, createForeignKeys, table, _a, upQueries, downQueries; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!ifExist) return [3 /*break*/, 2]; + return [4 /*yield*/, this.hasTable(tableOrName)]; + case 1: + isTableExist = _b.sent(); + if (!isTableExist) + return [2 /*return*/, Promise.resolve()]; + _b.label = 2; + case 2: + createForeignKeys = dropForeignKeys; + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 3]; + _a = tableOrName; + return [3 /*break*/, 5]; + case 3: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 4: + _a = _b.sent(); + _b.label = 5; + case 5: + table = _a; + upQueries = []; + downQueries = []; + if (dropIndices) { + table.indices.forEach(function (index) { + upQueries.push(_this.dropIndexSql(index)); + downQueries.push(_this.createIndexSql(table, index)); + }); + } + upQueries.push(this.dropTableSql(table, ifExist)); + downQueries.push(this.createTableSql(table, createForeignKeys)); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 6: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new view. + */ + AbstractSqliteQueryRunner.prototype.createView = function (view) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var upQueries, downQueries; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + upQueries = []; + downQueries = []; + upQueries.push(this.createViewSql(view)); + upQueries.push(this.insertViewDefinitionSql(view)); + downQueries.push(this.dropViewSql(view)); + downQueries.push(this.deleteViewDefinitionSql(view)); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops the view. + */ + AbstractSqliteQueryRunner.prototype.dropView = function (target) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var viewName, view, upQueries, downQueries; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + viewName = target instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[/* View */ "a"] ? target.name : target; + return [4 /*yield*/, this.getCachedView(viewName)]; + case 1: + view = _a.sent(); + upQueries = []; + downQueries = []; + upQueries.push(this.deleteViewDefinitionSql(view)); + upQueries.push(this.dropViewSql(view)); + downQueries.push(this.insertViewDefinitionSql(view)); + downQueries.push(this.createViewSql(view)); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Renames the given table. + */ + AbstractSqliteQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var oldTable, _a, newTable, up, down; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(oldTableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = oldTableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(oldTableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + oldTable = _a; + newTable = oldTable.clone(); + newTable.name = newTableName; + up = new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("ALTER TABLE \"" + oldTable.name + "\" RENAME TO \"" + newTableName + "\""); + down = new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("ALTER TABLE \"" + newTableName + "\" RENAME TO \"" + oldTable.name + "\""); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + // rename old table; + oldTable.name = newTable.name; + // rename unique constraints + newTable.uniques.forEach(function (unique) { + unique.name = _this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames); + }); + // rename foreign key constraints + newTable.foreignKeys.forEach(function (foreignKey) { + foreignKey.name = _this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames); + }); + // rename indices + newTable.indices.forEach(function (index) { + index.name = _this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where); + }); + // recreate table with new constraint names + return [4 /*yield*/, this.recreateTable(newTable, oldTable)]; + case 5: + // recreate table with new constraint names + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new column from the column in the table. + */ + AbstractSqliteQueryRunner.prototype.addColumn = function (tableOrName, column) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + return [2 /*return*/, this.addColumns(table, [column])]; + } + }); + }); + }; + /** + * Creates a new columns from the column in the table. + */ + AbstractSqliteQueryRunner.prototype.addColumns = function (tableOrName, columns) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + columns.forEach(function (column) { return changedTable.addColumn(column); }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Renames column in the given table. + */ + AbstractSqliteQueryRunner.prototype.renameColumn = function (tableOrName, oldTableColumnOrName, newTableColumnOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, oldColumn, newColumn; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + oldColumn = oldTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[/* TableColumn */ "a"] ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; }); + if (!oldColumn) + throw new Error("Column \"" + oldTableColumnOrName + "\" was not found in the \"" + table.name + "\" table."); + newColumn = undefined; + if (newTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[/* TableColumn */ "a"]) { + newColumn = newTableColumnOrName; + } + else { + newColumn = oldColumn.clone(); + newColumn.name = newTableColumnOrName; + } + return [2 /*return*/, this.changeColumn(table, oldColumn, newColumn)]; + } + }); + }); + }; + /** + * Changes a column in the table. + */ + AbstractSqliteQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, oldColumn; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + oldColumn = oldTableColumnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[/* TableColumn */ "a"] ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; }); + if (!oldColumn) + throw new Error("Column \"" + oldTableColumnOrName + "\" was not found in the \"" + table.name + "\" table."); + return [4 /*yield*/, this.changeColumns(table, [{ oldColumn: oldColumn, newColumn: newColumn }])]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Changes a column in the table. + * Changed column looses all its keys in the db. + */ + AbstractSqliteQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + changedColumns.forEach(function (changedColumnSet) { + if (changedColumnSet.newColumn.name !== changedColumnSet.oldColumn.name) { + changedTable.findColumnUniques(changedColumnSet.oldColumn).forEach(function (unique) { + unique.columnNames.splice(unique.columnNames.indexOf(changedColumnSet.oldColumn.name), 1); + unique.columnNames.push(changedColumnSet.newColumn.name); + unique.name = _this.connection.namingStrategy.uniqueConstraintName(changedTable, unique.columnNames); + }); + changedTable.findColumnForeignKeys(changedColumnSet.oldColumn).forEach(function (fk) { + fk.columnNames.splice(fk.columnNames.indexOf(changedColumnSet.oldColumn.name), 1); + fk.columnNames.push(changedColumnSet.newColumn.name); + fk.name = _this.connection.namingStrategy.foreignKeyName(changedTable, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames); + }); + changedTable.findColumnIndices(changedColumnSet.oldColumn).forEach(function (index) { + index.columnNames.splice(index.columnNames.indexOf(changedColumnSet.oldColumn.name), 1); + index.columnNames.push(changedColumnSet.newColumn.name); + index.name = _this.connection.namingStrategy.indexName(changedTable, index.columnNames, index.where); + }); + } + var originalColumn = changedTable.columns.find(function (column) { return column.name === changedColumnSet.oldColumn.name; }); + if (originalColumn) + changedTable.columns[changedTable.columns.indexOf(originalColumn)] = changedColumnSet.newColumn; + }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops column in the table. + */ + AbstractSqliteQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, column; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + column = columnOrName instanceof _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[/* TableColumn */ "a"] ? columnOrName : table.findColumnByName(columnOrName); + if (!column) + throw new Error("Column \"" + columnOrName + "\" was not found in table \"" + table.name + "\""); + return [4 /*yield*/, this.dropColumns(table, [column])]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops the columns in the table. + */ + AbstractSqliteQueryRunner.prototype.dropColumns = function (tableOrName, columns) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + columns.forEach(function (column) { + changedTable.removeColumn(column); + changedTable.findColumnUniques(column).forEach(function (unique) { return changedTable.removeUniqueConstraint(unique); }); + changedTable.findColumnIndices(column).forEach(function (index) { return changedTable.removeIndex(index); }); + changedTable.findColumnForeignKeys(column).forEach(function (fk) { return changedTable.removeForeignKey(fk); }); + }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + // remove column and its constraints from original table. + columns.forEach(function (column) { + table.removeColumn(column); + table.findColumnUniques(column).forEach(function (unique) { return table.removeUniqueConstraint(unique); }); + table.findColumnIndices(column).forEach(function (index) { return table.removeIndex(index); }); + table.findColumnForeignKeys(column).forEach(function (fk) { return table.removeForeignKey(fk); }); + }); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new primary key. + */ + AbstractSqliteQueryRunner.prototype.createPrimaryKey = function (tableOrName, columnNames) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + changedTable.columns.forEach(function (column) { + if (columnNames.find(function (columnName) { return columnName === column.name; })) + column.isPrimary = true; + }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + // mark columns as primary in original table + table.columns.forEach(function (column) { + if (columnNames.find(function (columnName) { return columnName === column.name; })) + column.isPrimary = true; + }); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Updates composite primary keys. + */ + AbstractSqliteQueryRunner.prototype.updatePrimaryKeys = function (tableOrName, columns) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, Promise.resolve()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops a primary key. + */ + AbstractSqliteQueryRunner.prototype.dropPrimaryKey = function (tableOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + changedTable.primaryColumns.forEach(function (column) { + column.isPrimary = false; + }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + // mark primary columns as non-primary in original table + table.primaryColumns.forEach(function (column) { + column.isPrimary = false; + }); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new unique constraint. + */ + AbstractSqliteQueryRunner.prototype.createUniqueConstraint = function (tableOrName, uniqueConstraint) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createUniqueConstraints(tableOrName, [uniqueConstraint])]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new unique constraints. + */ + AbstractSqliteQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + uniqueConstraints.forEach(function (uniqueConstraint) { return changedTable.addUniqueConstraint(uniqueConstraint); }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops an unique constraint. + */ + AbstractSqliteQueryRunner.prototype.dropUniqueConstraint = function (tableOrName, uniqueOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, uniqueConstraint; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + uniqueConstraint = uniqueOrName instanceof _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__[/* TableUnique */ "a"] ? uniqueOrName : table.uniques.find(function (u) { return u.name === uniqueOrName; }); + if (!uniqueConstraint) + throw new Error("Supplied unique constraint was not found in table " + table.name); + return [4 /*yield*/, this.dropUniqueConstraints(table, [uniqueConstraint])]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates an unique constraints. + */ + AbstractSqliteQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + uniqueConstraints.forEach(function (uniqueConstraint) { return changedTable.removeUniqueConstraint(uniqueConstraint); }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new check constraint. + */ + AbstractSqliteQueryRunner.prototype.createCheckConstraint = function (tableOrName, checkConstraint) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createCheckConstraints(tableOrName, [checkConstraint])]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates new check constraints. + */ + AbstractSqliteQueryRunner.prototype.createCheckConstraints = function (tableOrName, checkConstraints) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + checkConstraints.forEach(function (checkConstraint) { return changedTable.addCheckConstraint(checkConstraint); }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops check constraint. + */ + AbstractSqliteQueryRunner.prototype.dropCheckConstraint = function (tableOrName, checkOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, checkConstraint; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + checkConstraint = checkOrName instanceof _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_14__[/* TableCheck */ "a"] ? checkOrName : table.checks.find(function (c) { return c.name === checkOrName; }); + if (!checkConstraint) + throw new Error("Supplied check constraint was not found in table " + table.name); + return [4 /*yield*/, this.dropCheckConstraints(table, [checkConstraint])]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops check constraints. + */ + AbstractSqliteQueryRunner.prototype.dropCheckConstraints = function (tableOrName, checkConstraints) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + checkConstraints.forEach(function (checkConstraint) { return changedTable.removeCheckConstraint(checkConstraint); }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new exclusion constraint. + */ + AbstractSqliteQueryRunner.prototype.createExclusionConstraint = function (tableOrName, exclusionConstraint) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + throw new Error("Sqlite does not support exclusion constraints."); + }); + }); + }; + /** + * Creates a new exclusion constraints. + */ + AbstractSqliteQueryRunner.prototype.createExclusionConstraints = function (tableOrName, exclusionConstraints) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + throw new Error("Sqlite does not support exclusion constraints."); + }); + }); + }; + /** + * Drops exclusion constraint. + */ + AbstractSqliteQueryRunner.prototype.dropExclusionConstraint = function (tableOrName, exclusionOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + throw new Error("Sqlite does not support exclusion constraints."); + }); + }); + }; + /** + * Drops exclusion constraints. + */ + AbstractSqliteQueryRunner.prototype.dropExclusionConstraints = function (tableOrName, exclusionConstraints) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + throw new Error("Sqlite does not support exclusion constraints."); + }); + }); + }; + /** + * Creates a new foreign key. + */ + AbstractSqliteQueryRunner.prototype.createForeignKey = function (tableOrName, foreignKey) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createForeignKeys(tableOrName, [foreignKey])]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new foreign keys. + */ + AbstractSqliteQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + foreignKeys.forEach(function (foreignKey) { return changedTable.addForeignKey(foreignKey); }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops a foreign key from the table. + */ + AbstractSqliteQueryRunner.prototype.dropForeignKey = function (tableOrName, foreignKeyOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, foreignKey; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + foreignKey = foreignKeyOrName instanceof _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_7__[/* TableForeignKey */ "a"] ? foreignKeyOrName : table.foreignKeys.find(function (fk) { return fk.name === foreignKeyOrName; }); + if (!foreignKey) + throw new Error("Supplied foreign key was not found in table " + table.name); + return [4 /*yield*/, this.dropForeignKeys(tableOrName, [foreignKey])]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops a foreign keys from the table. + */ + AbstractSqliteQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, changedTable; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + changedTable = table.clone(); + foreignKeys.forEach(function (foreignKey) { return changedTable.removeForeignKey(foreignKey); }); + return [4 /*yield*/, this.recreateTable(changedTable, table)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new index. + */ + AbstractSqliteQueryRunner.prototype.createIndex = function (tableOrName, index) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, up, down; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + // new index may be passed without name. In this case we generate index name manually. + if (!index.name) + index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where); + up = this.createIndexSql(table, index); + down = this.dropIndexSql(index); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.addIndex(index); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Creates a new indices + */ + AbstractSqliteQueryRunner.prototype.createIndices = function (tableOrName, indices) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + promises = indices.map(function (index) { return _this.createIndex(tableOrName, index); }); + return [4 /*yield*/, Promise.all(promises)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops an index from the table. + */ + AbstractSqliteQueryRunner.prototype.dropIndex = function (tableOrName, indexOrName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var table, _a, index, up, down; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + if (!(tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"])) return [3 /*break*/, 1]; + _a = tableOrName; + return [3 /*break*/, 3]; + case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)]; + case 2: + _a = _b.sent(); + _b.label = 3; + case 3: + table = _a; + index = indexOrName instanceof _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__[/* TableIndex */ "a"] ? indexOrName : table.indices.find(function (i) { return i.name === indexOrName; }); + if (!index) + throw new Error("Supplied index was not found in table " + table.name); + up = this.dropIndexSql(index); + down = this.createIndexSql(table, index); + return [4 /*yield*/, this.executeQueries(up, down)]; + case 4: + _b.sent(); + table.removeIndex(index); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Drops an indices from the table. + */ + AbstractSqliteQueryRunner.prototype.dropIndices = function (tableOrName, indices) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + promises = indices.map(function (index) { return _this.dropIndex(tableOrName, index); }); + return [4 /*yield*/, Promise.all(promises)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Clears all table contents. + * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions. + */ + AbstractSqliteQueryRunner.prototype.clearTable = function (tableName) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.query("DELETE FROM \"" + tableName + "\"")]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Removes all tables from the currently connected database. + */ + AbstractSqliteQueryRunner.prototype.clearDatabase = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.query("PRAGMA foreign_keys = OFF;")]; + case 1: + _a.sent(); + return [4 /*yield*/, this.startTransaction()]; + case 2: + _a.sent(); + _a.label = 3; + case 3: + _a.trys.push([3, 9, 14, 16]); + selectViewDropsQuery = "SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'"; + return [4 /*yield*/, this.query(selectViewDropsQuery)]; + case 4: + dropViewQueries = _a.sent(); + return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q["query"]); }))]; + case 5: + _a.sent(); + selectTableDropsQuery = "SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'"; + return [4 /*yield*/, this.query(selectTableDropsQuery)]; + case 6: + dropTableQueries = _a.sent(); + return [4 /*yield*/, Promise.all(dropTableQueries.map(function (q) { return _this.query(q["query"]); }))]; + case 7: + _a.sent(); + return [4 /*yield*/, this.commitTransaction()]; + case 8: + _a.sent(); + return [3 /*break*/, 16]; + case 9: + error_1 = _a.sent(); + _a.label = 10; + case 10: + _a.trys.push([10, 12, , 13]); + return [4 /*yield*/, this.rollbackTransaction()]; + case 11: + _a.sent(); + return [3 /*break*/, 13]; + case 12: + rollbackError_1 = _a.sent(); + return [3 /*break*/, 13]; + case 13: throw error_1; + case 14: return [4 /*yield*/, this.query("PRAGMA foreign_keys = ON;")]; + case 15: + _a.sent(); + return [7 /*endfinally*/]; + case 16: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + AbstractSqliteQueryRunner.prototype.loadViews = function (viewNames) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var hasTable, viewNamesString, query, dbViews; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.hasTable(this.getTypeormMetadataTableName())]; + case 1: + hasTable = _a.sent(); + if (!hasTable) + return [2 /*return*/, Promise.resolve([])]; + viewNamesString = viewNames.map(function (name) { return "'" + name + "'"; }).join(", "); + query = "SELECT \"t\".* FROM \"" + this.getTypeormMetadataTableName() + "\" \"t\" INNER JOIN \"sqlite_master\" s ON \"s\".\"name\" = \"t\".\"name\" AND \"s\".\"type\" = 'view' WHERE \"t\".\"type\" = 'VIEW'"; + if (viewNamesString.length > 0) + query += " AND \"t\".\"name\" IN (" + viewNamesString + ")"; + return [4 /*yield*/, this.query(query)]; + case 2: + dbViews = _a.sent(); + return [2 /*return*/, dbViews.map(function (dbView) { + var view = new _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[/* View */ "a"](); + view.name = dbView["name"]; + view.expression = dbView["value"]; + return view; + })]; + } + }); + }); + }; + /** + * Loads all tables (with given names) from the database and creates a Table from them. + */ + AbstractSqliteQueryRunner.prototype.loadTables = function (tableNames) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var tableNamesString, dbTables, dbIndicesDef; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + // if no tables given then no need to proceed + if (!tableNames || !tableNames.length) + return [2 /*return*/, []]; + tableNamesString = tableNames.map(function (tableName) { return "'" + tableName + "'"; }).join(", "); + return [4 /*yield*/, this.query("SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" IN (" + tableNamesString + ")")]; + case 1: + dbTables = _a.sent(); + return [4 /*yield*/, this.query("SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'index' AND \"tbl_name\" IN (" + tableNamesString + ")")]; + case 2: + dbIndicesDef = _a.sent(); + // if tables were not found in the db, no need to proceed + if (!dbTables || !dbTables.length) + return [2 /*return*/, []]; + // create table schemas for loaded tables + return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(_this, void 0, void 0, function () { + var table, sql, _a, dbColumns, dbIndices, dbForeignKeys, autoIncrementColumnName, tableSql, autoIncrementIndex, comma, bracket, tableForeignKeyConstraints, tableUniquePromises, _b, result, regexp, indicesPromises, indices; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_c) { + switch (_c.label) { + case 0: + table = new _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"]({ name: dbTable["name"] }); + sql = dbTable["sql"]; + return [4 /*yield*/, Promise.all([ + this.query("PRAGMA table_info(\"" + dbTable["name"] + "\")"), + this.query("PRAGMA index_list(\"" + dbTable["name"] + "\")"), + this.query("PRAGMA foreign_key_list(\"" + dbTable["name"] + "\")"), + ])]; + case 1: + _a = tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"].apply(void 0, [_c.sent(), 3]), dbColumns = _a[0], dbIndices = _a[1], dbForeignKeys = _a[2]; + autoIncrementColumnName = undefined; + tableSql = dbTable["sql"]; + autoIncrementIndex = tableSql.toUpperCase().indexOf("AUTOINCREMENT"); + if (autoIncrementIndex !== -1) { + autoIncrementColumnName = tableSql.substr(0, autoIncrementIndex); + comma = autoIncrementColumnName.lastIndexOf(","); + bracket = autoIncrementColumnName.lastIndexOf("("); + if (comma !== -1) { + autoIncrementColumnName = autoIncrementColumnName.substr(comma); + autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf("\"")); + autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf("\"") + 1); + } + else if (bracket !== -1) { + autoIncrementColumnName = autoIncrementColumnName.substr(bracket); + autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf("\"")); + autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf("\"") + 1); + } + } + // create columns from the loaded columns + table.columns = dbColumns.map(function (dbColumn) { + var tableColumn = new _schema_builder_table_TableColumn__WEBPACK_IMPORTED_MODULE_3__[/* TableColumn */ "a"](); + tableColumn.name = dbColumn["name"]; + tableColumn.type = dbColumn["type"].toLowerCase(); + tableColumn.default = dbColumn["dflt_value"] !== null && dbColumn["dflt_value"] !== undefined ? dbColumn["dflt_value"] : undefined; + tableColumn.isNullable = dbColumn["notnull"] === 0; + // primary keys are numbered starting with 1, columns that aren't primary keys are marked with 0 + tableColumn.isPrimary = dbColumn["pk"] > 0; + tableColumn.comment = ""; // SQLite does not support column comments + tableColumn.isGenerated = autoIncrementColumnName === dbColumn["name"]; + if (tableColumn.isGenerated) { + tableColumn.generationStrategy = "increment"; + } + if (tableColumn.type === "varchar") { + // Check if this is an enum + var enumMatch = sql.match(new RegExp("\"(" + tableColumn.name + ")\" varchar CHECK\\s*\\(\\s*\\1\\s+IN\\s*\\(('[^']+'(?:\\s*,\\s*'[^']+')+)\\s*\\)\\s*\\)")); + if (enumMatch) { + // This is an enum + tableColumn.enum = enumMatch[2].substr(1, enumMatch[2].length - 2).split("','"); + } + } + // parse datatype and attempt to retrieve length, precision and scale + var pos = tableColumn.type.indexOf("("); + if (pos !== -1) { + var fullType = tableColumn.type; + var dataType_1 = fullType.substr(0, pos); + if (!!_this.driver.withLengthColumnTypes.find(function (col) { return col === dataType_1; })) { + var len = parseInt(fullType.substring(pos + 1, fullType.length - 1)); + if (len) { + tableColumn.length = len.toString(); + tableColumn.type = dataType_1; // remove the length part from the datatype + } + } + if (!!_this.driver.withPrecisionColumnTypes.find(function (col) { return col === dataType_1; })) { + var re = new RegExp("^" + dataType_1 + "\\((\\d+),?\\s?(\\d+)?\\)"); + var matches = fullType.match(re); + if (matches && matches[1]) { + tableColumn.precision = +matches[1]; + } + if (!!_this.driver.withScaleColumnTypes.find(function (col) { return col === dataType_1; })) { + if (matches && matches[2]) { + tableColumn.scale = +matches[2]; + } + } + tableColumn.type = dataType_1; // remove the precision/scale part from the datatype + } + } + return tableColumn; + }); + tableForeignKeyConstraints = _util_OrmUtils__WEBPACK_IMPORTED_MODULE_13__[/* OrmUtils */ "a"].uniq(dbForeignKeys, function (dbForeignKey) { return dbForeignKey["id"]; }); + table.foreignKeys = tableForeignKeyConstraints.map(function (foreignKey) { + var ownForeignKeys = dbForeignKeys.filter(function (dbForeignKey) { return dbForeignKey["id"] === foreignKey["id"] && dbForeignKey["table"] === foreignKey["table"]; }); + var columnNames = ownForeignKeys.map(function (dbForeignKey) { return dbForeignKey["from"]; }); + var referencedColumnNames = ownForeignKeys.map(function (dbForeignKey) { return dbForeignKey["to"]; }); + // build foreign key name, because we can not get it directly. + var fkName = _this.connection.namingStrategy.foreignKeyName(table, columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames); + return new _schema_builder_table_TableForeignKey__WEBPACK_IMPORTED_MODULE_7__[/* TableForeignKey */ "a"]({ + name: fkName, + columnNames: columnNames, + referencedTableName: foreignKey["table"], + referencedColumnNames: referencedColumnNames, + onDelete: foreignKey["on_delete"], + onUpdate: foreignKey["on_update"] + }); + }); + tableUniquePromises = dbIndices + .filter(function (dbIndex) { return dbIndex["origin"] === "u"; }) + .map(function (dbIndex) { return dbIndex["name"]; }) + .filter(function (value, index, self) { return self.indexOf(value) === index; }) + .map(function (dbIndexName) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(_this, void 0, void 0, function () { + var dbIndex, indexInfos, indexColumns, column; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + dbIndex = dbIndices.find(function (dbIndex) { return dbIndex["name"] === dbIndexName; }); + return [4 /*yield*/, this.query("PRAGMA index_info(\"" + dbIndex["name"] + "\")")]; + case 1: + indexInfos = _a.sent(); + indexColumns = indexInfos + .sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1["seqno"]) - parseInt(indexInfo2["seqno"]); }) + .map(function (indexInfo) { return indexInfo["name"]; }); + if (indexColumns.length === 1) { + column = table.columns.find(function (column) { + return !!indexColumns.find(function (indexColumn) { return indexColumn === column.name; }); + }); + if (column) + column.isUnique = true; + } + // Sqlite does not store unique constraint name, so we generate its name manually. + return [2 /*return*/, new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__[/* TableUnique */ "a"]({ + name: this.connection.namingStrategy.uniqueConstraintName(table, indexColumns), + columnNames: indexColumns + })]; + } + }); + }); }); + _b = table; + return [4 /*yield*/, Promise.all(tableUniquePromises)]; + case 2: + _b.uniques = (_c.sent()); + regexp = /CONSTRAINT "([^"]*)" CHECK (\(.*?\))([,]|[)]$)/g; + while (((result = regexp.exec(sql)) !== null)) { + table.checks.push(new _schema_builder_table_TableCheck__WEBPACK_IMPORTED_MODULE_14__[/* TableCheck */ "a"]({ name: result[1], expression: result[2] })); + } + indicesPromises = dbIndices + .filter(function (dbIndex) { return dbIndex["origin"] === "c"; }) + .map(function (dbIndex) { return dbIndex["name"]; }) + .filter(function (value, index, self) { return self.indexOf(value) === index; }) // unqiue + .map(function (dbIndexName) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(_this, void 0, void 0, function () { + var indexDef, condition, dbIndex, indexInfos, indexColumns, isUnique; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + indexDef = dbIndicesDef.find(function (dbIndexDef) { return dbIndexDef["name"] === dbIndexName; }); + condition = /WHERE (.*)/.exec(indexDef["sql"]); + dbIndex = dbIndices.find(function (dbIndex) { return dbIndex["name"] === dbIndexName; }); + return [4 /*yield*/, this.query("PRAGMA index_info(\"" + dbIndex["name"] + "\")")]; + case 1: + indexInfos = _a.sent(); + indexColumns = indexInfos + .sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1["seqno"]) - parseInt(indexInfo2["seqno"]); }) + .map(function (indexInfo) { return indexInfo["name"]; }); + isUnique = dbIndex["unique"] === "1" || dbIndex["unique"] === 1; + return [2 /*return*/, new _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__[/* TableIndex */ "a"]({ + table: table, + name: dbIndex["name"], + columnNames: indexColumns, + isUnique: isUnique, + where: condition ? condition[1] : undefined + })]; + } + }); + }); }); + return [4 /*yield*/, Promise.all(indicesPromises)]; + case 3: + indices = _c.sent(); + table.indices = indices.filter(function (index) { return !!index; }); + return [2 /*return*/, table]; + } + }); + }); }))]; + } + }); + }); + }; + /** + * Builds create table sql. + */ + AbstractSqliteQueryRunner.prototype.createTableSql = function (table, createForeignKeys) { + var _this = this; + var primaryColumns = table.columns.filter(function (column) { return column.isPrimary; }); + var hasAutoIncrement = primaryColumns.find(function (column) { return column.isGenerated && column.generationStrategy === "increment"; }); + var skipPrimary = primaryColumns.length > 1; + if (skipPrimary && hasAutoIncrement) + throw new Error("Sqlite does not support AUTOINCREMENT on composite primary key"); + var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(column, skipPrimary); }).join(", "); + var sql = "CREATE TABLE \"" + table.name + "\" (" + columnDefinitions; + // need for `addColumn()` method, because it recreates table. + table.columns + .filter(function (column) { return column.isUnique; }) + .forEach(function (column) { + var isUniqueExist = table.uniques.some(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; }); + if (!isUniqueExist) + table.uniques.push(new _schema_builder_table_TableUnique__WEBPACK_IMPORTED_MODULE_11__[/* TableUnique */ "a"]({ + name: _this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]), + columnNames: [column.name] + })); + }); + if (table.uniques.length > 0) { + var uniquesSql = table.uniques.map(function (unique) { + var uniqueName = unique.name ? unique.name : _this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames); + var columnNames = unique.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + return "CONSTRAINT \"" + uniqueName + "\" UNIQUE (" + columnNames + ")"; + }).join(", "); + sql += ", " + uniquesSql; + } + if (table.checks.length > 0) { + var checksSql = table.checks.map(function (check) { + var checkName = check.name ? check.name : _this.connection.namingStrategy.checkConstraintName(table.name, check.expression); + return "CONSTRAINT \"" + checkName + "\" CHECK (" + check.expression + ")"; + }).join(", "); + sql += ", " + checksSql; + } + if (table.foreignKeys.length > 0 && createForeignKeys) { + var foreignKeysSql = table.foreignKeys.map(function (fk) { + var columnNames = fk.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + if (!fk.name) + fk.name = _this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames); + var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + var constraint = "CONSTRAINT \"" + fk.name + "\" FOREIGN KEY (" + columnNames + ") REFERENCES \"" + fk.referencedTableName + "\" (" + referencedColumnNames + ")"; + if (fk.onDelete) + constraint += " ON DELETE " + fk.onDelete; + if (fk.onUpdate) + constraint += " ON UPDATE " + fk.onUpdate; + return constraint; + }).join(", "); + sql += ", " + foreignKeysSql; + } + if (primaryColumns.length > 1) { + var columnNames = primaryColumns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + sql += ", PRIMARY KEY (" + columnNames + ")"; + } + sql += ")"; + var tableMetadata = this.connection.entityMetadatas.find(function (metadata) { return metadata.tableName === table.name; }); + if (tableMetadata && tableMetadata.withoutRowid) { + sql += " WITHOUT ROWID"; + } + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"](sql); + }; + /** + * Builds drop table sql. + */ + AbstractSqliteQueryRunner.prototype.dropTableSql = function (tableOrName, ifExist) { + var tableName = tableOrName instanceof _schema_builder_table_Table__WEBPACK_IMPORTED_MODULE_5__[/* Table */ "a"] ? tableOrName.name : tableOrName; + var query = ifExist ? "DROP TABLE IF EXISTS \"" + tableName + "\"" : "DROP TABLE \"" + tableName + "\""; + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"](query); + }; + AbstractSqliteQueryRunner.prototype.createViewSql = function (view) { + if (typeof view.expression === "string") { + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("CREATE VIEW \"" + view.name + "\" AS " + view.expression); + } + else { + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("CREATE VIEW \"" + view.name + "\" AS " + view.expression(this.connection).getQuery()); + } + }; + AbstractSqliteQueryRunner.prototype.insertViewDefinitionSql = function (view) { + var expression = typeof view.expression === "string" ? view.expression.trim() : view.expression(this.connection).getQuery(); + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.connection.createQueryBuilder() + .insert() + .into(this.getTypeormMetadataTableName()) + .values({ type: "VIEW", name: view.name, value: expression }) + .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1]; + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"](query, parameters); + }; + /** + * Builds drop view sql. + */ + AbstractSqliteQueryRunner.prototype.dropViewSql = function (viewOrPath) { + var viewName = viewOrPath instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[/* View */ "a"] ? viewOrPath.name : viewOrPath; + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("DROP VIEW \"" + viewName + "\""); + }; + /** + * Builds remove view sql. + */ + AbstractSqliteQueryRunner.prototype.deleteViewDefinitionSql = function (viewOrPath) { + var viewName = viewOrPath instanceof _schema_builder_view_View__WEBPACK_IMPORTED_MODULE_8__[/* View */ "a"] ? viewOrPath.name : viewOrPath; + var qb = this.connection.createQueryBuilder(); + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(qb.delete() + .from(this.getTypeormMetadataTableName()) + .where(qb.escape("type") + " = 'VIEW'") + .andWhere(qb.escape("name") + " = :name", { name: viewName }) + .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1]; + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"](query, parameters); + }; + /** + * Builds create index sql. + */ + AbstractSqliteQueryRunner.prototype.createIndexSql = function (table, index) { + var columns = index.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", "); + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("CREATE " + (index.isUnique ? "UNIQUE " : "") + "INDEX \"" + index.name + "\" ON \"" + table.name + "\" (" + columns + ") " + (index.where ? "WHERE " + index.where : "")); + }; + /** + * Builds drop index sql. + */ + AbstractSqliteQueryRunner.prototype.dropIndexSql = function (indexOrName) { + var indexName = indexOrName instanceof _schema_builder_table_TableIndex__WEBPACK_IMPORTED_MODULE_6__[/* TableIndex */ "a"] ? indexOrName.name : indexOrName; + return new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("DROP INDEX \"" + indexName + "\""); + }; + /** + * Builds a query for create column. + */ + AbstractSqliteQueryRunner.prototype.buildCreateColumnSql = function (column, skipPrimary) { + var c = "\"" + column.name + "\""; + if (column instanceof _metadata_ColumnMetadata__WEBPACK_IMPORTED_MODULE_4__[/* ColumnMetadata */ "a"]) { + c += " " + this.driver.normalizeType(column); + } + else { + c += " " + this.connection.driver.createFullType(column); + } + if (column.enum) + c += " CHECK( " + column.name + " IN (" + column.enum.map(function (val) { return "'" + val + "'"; }).join(",") + ") )"; + if (column.isPrimary && !skipPrimary) + c += " PRIMARY KEY"; + if (column.isGenerated === true && column.generationStrategy === "increment") // don't use skipPrimary here since updates can update already exist primary without auto inc. + c += " AUTOINCREMENT"; + if (column.collation) + c += " COLLATE " + column.collation; + if (column.isNullable !== true) + c += " NOT NULL"; + if (column.default !== undefined && column.default !== null) + c += " DEFAULT (" + column.default + ")"; + return c; + }; + AbstractSqliteQueryRunner.prototype.recreateTable = function (newTable, oldTable, migrateData) { + if (migrateData === void 0) { migrateData = true; } + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var upQueries, downQueries, newColumnNames, oldColumnNames; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + upQueries = []; + downQueries = []; + // drop old table indices + oldTable.indices.forEach(function (index) { + upQueries.push(_this.dropIndexSql(index)); + downQueries.push(_this.createIndexSql(oldTable, index)); + }); + // change table name into 'temporary_table' + newTable.name = "temporary_" + newTable.name; + // create new table + upQueries.push(this.createTableSql(newTable, true)); + downQueries.push(this.dropTableSql(newTable)); + // migrate all data from the old table into new table + if (migrateData) { + newColumnNames = newTable.columns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + oldColumnNames = oldTable.columns.map(function (column) { return "\"" + column.name + "\""; }).join(", "); + if (oldTable.columns.length < newTable.columns.length) { + newColumnNames = newTable.columns.filter(function (column) { + return oldTable.columns.find(function (c) { return c.name === column.name; }); + }).map(function (column) { return "\"" + column.name + "\""; }).join(", "); + } + else if (oldTable.columns.length > newTable.columns.length) { + oldColumnNames = oldTable.columns.filter(function (column) { + return newTable.columns.find(function (c) { return c.name === column.name; }); + }).map(function (column) { return "\"" + column.name + "\""; }).join(", "); + } + upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("INSERT INTO \"" + newTable.name + "\"(" + newColumnNames + ") SELECT " + oldColumnNames + " FROM \"" + oldTable.name + "\"")); + downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("INSERT INTO \"" + oldTable.name + "\"(" + oldColumnNames + ") SELECT " + newColumnNames + " FROM \"" + newTable.name + "\"")); + } + // drop old table + upQueries.push(this.dropTableSql(oldTable)); + downQueries.push(this.createTableSql(oldTable, true)); + // rename old table + upQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("ALTER TABLE \"" + newTable.name + "\" RENAME TO \"" + oldTable.name + "\"")); + downQueries.push(new _Query__WEBPACK_IMPORTED_MODULE_10__[/* Query */ "a"]("ALTER TABLE \"" + oldTable.name + "\" RENAME TO \"" + newTable.name + "\"")); + newTable.name = oldTable.name; + // recreate table indices + newTable.indices.forEach(function (index) { + // new index may be passed without name. In this case we generate index name manually. + if (!index.name) + index.name = _this.connection.namingStrategy.indexName(newTable.name, index.columnNames, index.where); + upQueries.push(_this.createIndexSql(newTable, index)); + downQueries.push(_this.dropIndexSql(index)); + }); + return [4 /*yield*/, this.executeQueries(upQueries, downQueries)]; + case 1: + _a.sent(); + this.replaceCachedTable(oldTable, newTable); + return [2 /*return*/]; + } + }); + }); + }; + return AbstractSqliteQueryRunner; +}(_query_runner_BaseQueryRunner__WEBPACK_IMPORTED_MODULE_12__[/* BaseQueryRunner */ "a"])); + + +//# sourceMappingURL=AbstractSqliteQueryRunner.js.map + + +/***/ }), +/* 74 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EntitySchema; }); +/** + * Interface for entity metadata mappings stored inside "schemas" instead of models decorated by decorators. + */ +var EntitySchema = /** @class */ (function () { + function EntitySchema(options) { + this.options = options; + } + return EntitySchema; +}()); + + +//# sourceMappingURL=EntitySchema.js.map + + +/***/ }), +/* 75 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), +/* 76 */ +/***/ (function(module, exports) { + +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), +/* 77 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/level.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/level.html?"); +"use strict"; + +if (__webpack_require__(28)) { + var LIBRARY = __webpack_require__(88); + var global = __webpack_require__(11); + var fails = __webpack_require__(12); + var $export = __webpack_require__(3); + var $typed = __webpack_require__(145); + var $buffer = __webpack_require__(188); + var ctx = __webpack_require__(62); + var anInstance = __webpack_require__(107); + var propertyDesc = __webpack_require__(86); + var hide = __webpack_require__(52); + var redefineAll = __webpack_require__(108); + var toInteger = __webpack_require__(64); + var toLength = __webpack_require__(23); + var toIndex = __webpack_require__(240); + var toAbsoluteIndex = __webpack_require__(90); + var toPrimitive = __webpack_require__(82); + var has = __webpack_require__(51); + var classof = __webpack_require__(124); + var isObject = __webpack_require__(14); + var toObject = __webpack_require__(36); + var isArrayIter = __webpack_require__(180); + var create = __webpack_require__(91); + var getPrototypeOf = __webpack_require__(93); + var gOPN = __webpack_require__(92).f; + var getIterFn = __webpack_require__(182); + var uid = __webpack_require__(87); + var wks = __webpack_require__(18); + var createArrayMethod = __webpack_require__(67); + var createArrayIncludes = __webpack_require__(135); + var speciesConstructor = __webpack_require__(125); + var ArrayIterators = __webpack_require__(184); + var Iterators = __webpack_require__(105); + var $iterDetect = __webpack_require__(138); + var setSpecies = __webpack_require__(106); + var arrayFill = __webpack_require__(183); + var arrayCopyWithin = __webpack_require__(231); + var $DP = __webpack_require__(29); + var $GOPD = __webpack_require__(65); + var dP = $DP.f; + var gOPD = $GOPD.f; + var RangeError = global.RangeError; + var TypeError = global.TypeError; + var Uint8Array = global.Uint8Array; + var ARRAY_BUFFER = 'ArrayBuffer'; + var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER; + var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; + var PROTOTYPE = 'prototype'; + var ArrayProto = Array[PROTOTYPE]; + var $ArrayBuffer = $buffer.ArrayBuffer; + var $DataView = $buffer.DataView; + var arrayForEach = createArrayMethod(0); + var arrayFilter = createArrayMethod(2); + var arraySome = createArrayMethod(3); + var arrayEvery = createArrayMethod(4); + var arrayFind = createArrayMethod(5); + var arrayFindIndex = createArrayMethod(6); + var arrayIncludes = createArrayIncludes(true); + var arrayIndexOf = createArrayIncludes(false); + var arrayValues = ArrayIterators.values; + var arrayKeys = ArrayIterators.keys; + var arrayEntries = ArrayIterators.entries; + var arrayLastIndexOf = ArrayProto.lastIndexOf; + var arrayReduce = ArrayProto.reduce; + var arrayReduceRight = ArrayProto.reduceRight; + var arrayJoin = ArrayProto.join; + var arraySort = ArrayProto.sort; + var arraySlice = ArrayProto.slice; + var arrayToString = ArrayProto.toString; + var arrayToLocaleString = ArrayProto.toLocaleString; + var ITERATOR = wks('iterator'); + var TAG = wks('toStringTag'); + var TYPED_CONSTRUCTOR = uid('typed_constructor'); + var DEF_CONSTRUCTOR = uid('def_constructor'); + var ALL_CONSTRUCTORS = $typed.CONSTR; + var TYPED_ARRAY = $typed.TYPED; + var VIEW = $typed.VIEW; + var WRONG_LENGTH = 'Wrong length!'; + + var $map = createArrayMethod(1, function (O, length) { + return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length); + }); + + var LITTLE_ENDIAN = fails(function () { + // eslint-disable-next-line no-undef + return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1; + }); + + var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () { + new Uint8Array(1).set({}); + }); + + var toOffset = function (it, BYTES) { + var offset = toInteger(it); + if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!'); + return offset; + }; + + var validate = function (it) { + if (isObject(it) && TYPED_ARRAY in it) return it; + throw TypeError(it + ' is not a typed array!'); + }; + + var allocate = function (C, length) { + if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) { + throw TypeError('It is not a typed array constructor!'); + } return new C(length); + }; + + var speciesFromList = function (O, list) { + return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list); + }; + + var fromList = function (C, list) { + var index = 0; + var length = list.length; + var result = allocate(C, length); + while (length > index) result[index] = list[index++]; + return result; + }; + + var addGetter = function (it, key, internal) { + dP(it, key, { get: function () { return this._d[internal]; } }); + }; + + var $from = function from(source /* , mapfn, thisArg */) { + var O = toObject(source); + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iterFn = getIterFn(O); + var i, length, values, result, step, iterator; + if (iterFn != undefined && !isArrayIter(iterFn)) { + for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) { + values.push(step.value); + } O = values; + } + if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2); + for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) { + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; + }; + + var $of = function of(/* ...items */) { + var index = 0; + var length = arguments.length; + var result = allocate(this, length); + while (length > index) result[index] = arguments[index++]; + return result; + }; + + // iOS Safari 6.x fails here + var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); }); + + var $toLocaleString = function toLocaleString() { + return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments); + }; + + var proto = { + copyWithin: function copyWithin(target, start /* , end */) { + return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined); + }, + every: function every(callbackfn /* , thisArg */) { + return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars + return arrayFill.apply(validate(this), arguments); + }, + filter: function filter(callbackfn /* , thisArg */) { + return speciesFromList(this, arrayFilter(validate(this), callbackfn, + arguments.length > 1 ? arguments[1] : undefined)); + }, + find: function find(predicate /* , thisArg */) { + return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + findIndex: function findIndex(predicate /* , thisArg */) { + return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + forEach: function forEach(callbackfn /* , thisArg */) { + arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + indexOf: function indexOf(searchElement /* , fromIndex */) { + return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + includes: function includes(searchElement /* , fromIndex */) { + return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + join: function join(separator) { // eslint-disable-line no-unused-vars + return arrayJoin.apply(validate(this), arguments); + }, + lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars + return arrayLastIndexOf.apply(validate(this), arguments); + }, + map: function map(mapfn /* , thisArg */) { + return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined); + }, + reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduce.apply(validate(this), arguments); + }, + reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduceRight.apply(validate(this), arguments); + }, + reverse: function reverse() { + var that = this; + var length = validate(that).length; + var middle = Math.floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; + }, + some: function some(callbackfn /* , thisArg */) { + return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + sort: function sort(comparefn) { + return arraySort.call(validate(this), comparefn); + }, + subarray: function subarray(begin, end) { + var O = validate(this); + var length = O.length; + var $begin = toAbsoluteIndex(begin, length); + return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))( + O.buffer, + O.byteOffset + $begin * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin) + ); + } + }; + + var $slice = function slice(start, end) { + return speciesFromList(this, arraySlice.call(validate(this), start, end)); + }; + + var $set = function set(arrayLike /* , offset */) { + validate(this); + var offset = toOffset(arguments[1], 1); + var length = this.length; + var src = toObject(arrayLike); + var len = toLength(src.length); + var index = 0; + if (len + offset > length) throw RangeError(WRONG_LENGTH); + while (index < len) this[offset + index] = src[index++]; + }; + + var $iterators = { + entries: function entries() { + return arrayEntries.call(validate(this)); + }, + keys: function keys() { + return arrayKeys.call(validate(this)); + }, + values: function values() { + return arrayValues.call(validate(this)); + } + }; + + var isTAIndex = function (target, key) { + return isObject(target) + && target[TYPED_ARRAY] + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); + }; + var $getDesc = function getOwnPropertyDescriptor(target, key) { + return isTAIndex(target, key = toPrimitive(key, true)) + ? propertyDesc(2, target[key]) + : gOPD(target, key); + }; + var $setDesc = function defineProperty(target, key, desc) { + if (isTAIndex(target, key = toPrimitive(key, true)) + && isObject(desc) + && has(desc, 'value') + && !has(desc, 'get') + && !has(desc, 'set') + // TODO: add validation descriptor w/o calling accessors + && !desc.configurable + && (!has(desc, 'writable') || desc.writable) + && (!has(desc, 'enumerable') || desc.enumerable) + ) { + target[key] = desc.value; + return target; + } return dP(target, key, desc); + }; + + if (!ALL_CONSTRUCTORS) { + $GOPD.f = $getDesc; + $DP.f = $setDesc; + } + + $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', { + getOwnPropertyDescriptor: $getDesc, + defineProperty: $setDesc + }); + + if (fails(function () { arrayToString.call({}); })) { + arrayToString = arrayToLocaleString = function toString() { + return arrayJoin.call(this); + }; + } + + var $TypedArrayPrototype$ = redefineAll({}, proto); + redefineAll($TypedArrayPrototype$, $iterators); + hide($TypedArrayPrototype$, ITERATOR, $iterators.values); + redefineAll($TypedArrayPrototype$, { + slice: $slice, + set: $set, + constructor: function () { /* noop */ }, + toString: arrayToString, + toLocaleString: $toLocaleString + }); + addGetter($TypedArrayPrototype$, 'buffer', 'b'); + addGetter($TypedArrayPrototype$, 'byteOffset', 'o'); + addGetter($TypedArrayPrototype$, 'byteLength', 'l'); + addGetter($TypedArrayPrototype$, 'length', 'e'); + dP($TypedArrayPrototype$, TAG, { + get: function () { return this[TYPED_ARRAY]; } + }); + + // eslint-disable-next-line max-statements + module.exports = function (KEY, BYTES, wrapper, CLAMPED) { + CLAMPED = !!CLAMPED; + var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + KEY; + var SETTER = 'set' + KEY; + var TypedArray = global[NAME]; + var Base = TypedArray || {}; + var TAC = TypedArray && getPrototypeOf(TypedArray); + var FORCED = !TypedArray || !$typed.ABV; + var O = {}; + var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE]; + var getter = function (that, index) { + var data = that._d; + return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN); + }; + var setter = function (that, index, value) { + var data = that._d; + if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff; + data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN); + }; + var addElement = function (that, index) { + dP(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + if (FORCED) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME, '_d'); + var index = 0; + var offset = 0; + var buffer, byteLength, length, klass; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new $ArrayBuffer(byteLength); + } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + buffer = data; + offset = toOffset($offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw RangeError(WRONG_LENGTH); + byteLength = $len - offset; + if (byteLength < 0) throw RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (TYPED_ARRAY in data) { + return fromList(TypedArray, data); + } else { + return $from.call(TypedArray, data); + } + hide(that, '_d', { + b: buffer, + o: offset, + l: byteLength, + e: length, + v: new $DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$); + hide(TypedArrayPrototype, 'constructor', TypedArray); + } else if (!fails(function () { + TypedArray(1); + }) || !fails(function () { + new TypedArray(-1); // eslint-disable-line no-new + }) || !$iterDetect(function (iter) { + new TypedArray(); // eslint-disable-line no-new + new TypedArray(null); // eslint-disable-line no-new + new TypedArray(1.5); // eslint-disable-line no-new + new TypedArray(iter); // eslint-disable-line no-new + }, true)) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME); + var klass; + // `ws` module bug, temporarily remove validation length for Uint8Array + // https://github.com/websockets/ws/pull/645 + if (!isObject(data)) return new Base(toIndex(data)); + if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + return $length !== undefined + ? new Base(data, toOffset($offset, BYTES), $length) + : $offset !== undefined + ? new Base(data, toOffset($offset, BYTES)) + : new Base(data); + } + if (TYPED_ARRAY in data) return fromList(TypedArray, data); + return $from.call(TypedArray, data); + }); + arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) { + if (!(key in TypedArray)) hide(TypedArray, key, Base[key]); + }); + TypedArray[PROTOTYPE] = TypedArrayPrototype; + if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray; + } + var $nativeIterator = TypedArrayPrototype[ITERATOR]; + var CORRECT_ITER_NAME = !!$nativeIterator + && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined); + var $iterator = $iterators.values; + hide(TypedArray, TYPED_CONSTRUCTOR, true); + hide(TypedArrayPrototype, TYPED_ARRAY, NAME); + hide(TypedArrayPrototype, VIEW, true); + hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray); + + if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) { + dP(TypedArrayPrototype, TAG, { + get: function () { return NAME; } + }); + } + + O[NAME] = TypedArray; + + $export($export.G + $export.W + $export.F * (TypedArray != Base), O); + + $export($export.S, NAME, { + BYTES_PER_ELEMENT: BYTES + }); + + $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, { + from: $from, + of: $of + }); + + if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES); + + $export($export.P, NAME, proto); + + setSpecies(NAME); + + $export($export.P + $export.F * FORCED_SET, NAME, { set: $set }); + + $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators); + + if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString; + + $export($export.P + $export.F * fails(function () { + new TypedArray(1).slice(); + }), NAME, { slice: $slice }); + + $export($export.P + $export.F * (fails(function () { + return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString(); + }) || !fails(function () { + TypedArrayPrototype.toLocaleString.call([1, 2]); + })), NAME, { toLocaleString: $toLocaleString }); + + Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator; + if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator); + }; +} else module.exports = function () { /* empty */ }; + /***/ }), - -/***/ "./src/client/html/sites/menu.html": -/*!*****************************************!*\ - !*** ./src/client/html/sites/menu.html ***! - \*****************************************/ -/*! no static exports found */ +/* 78 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/menu.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/menu.html?"); +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EasySyncBaseModel = void 0; + +var cordova_sites_database_1 = __webpack_require__(19); + +var shared_1 = __webpack_require__(22); + +var EasySyncBaseModel = /*#__PURE__*/function (_cordova_sites_databa) { + _inherits(EasySyncBaseModel, _cordova_sites_databa); + + var _super = _createSuper(EasySyncBaseModel); + + function EasySyncBaseModel() { + var _this; + + _classCallCheck(this, EasySyncBaseModel); + + _this = _super.call(this); + _this._delegate = null; + _this.createdAt = new Date(); + _this.updatedAt = new Date(); + _this.version = 1; + _this.deleted = false; + return _this; + } + + _createClass(EasySyncBaseModel, [{ + key: "toJSON", + value: function toJSON(includeFull) { + var _this2 = this; + + var relations = this.constructor.getRelationDefinitions(); + var columns = this.constructor.getColumnDefinitions(); + var obj = {}; + Object.keys(columns).forEach(function (attribute) { + obj[attribute] = _this2[attribute]; + }); + Object.keys(relations).forEach(function (relationName) { + if (includeFull === true) { + obj[relationName] = _this2[relationName]; + } else { + if (Array.isArray(_this2[relationName])) { + var ids = []; + + _this2[relationName].forEach(function (child) { + return child && ids.push(child.id); + }); + + obj[relationName] = ids; + } else if (_this2[relationName] instanceof cordova_sites_database_1.BaseModel) { + obj[relationName] = _this2[relationName].id; + } else { + obj[relationName] = null; + } + } + }); + return obj; + } + }], [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(EasySyncBaseModel), "getColumnDefinitions", this).call(this); + + columns["createdAt"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }; + columns["updatedAt"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }; + columns["version"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }; + columns["deleted"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN + }; + return columns; + } + }, { + key: "_fromJson", + value: function _fromJson(jsonObjects, entities, includeRelations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this3 = this; + + var isArray, loadPromises, addLoadPromises; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + entities = entities || []; + isArray = Array.isArray(jsonObjects); + + if (!isArray) { + jsonObjects = [jsonObjects]; + } + + if (!Array.isArray(entities)) { + entities = [entities]; + } + + loadPromises = []; + addLoadPromises = []; + jsonObjects.forEach(function (jsonObject, index) { + addLoadPromises.push(new Promise(function (resolve) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var entity; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + entity = null; + + if (!(entities.length > index)) { + _context.next = 5; + break; + } + + entity = entities[index]; + _context.next = 9; + break; + + case 5: + if (!shared_1.Helper.isNotNull(jsonObject.id)) { + _context.next = 9; + break; + } + + _context.next = 8; + return this.findById(jsonObject.id, this.getRelations()); + + case 8: + entity = _context.sent; + + case 9: + if (entity === null) { + entity = new this(); + } + + if (!jsonObject.version && jsonObject.version !== 0) { + jsonObject.version = 1; + } + + entities[index] = Object.assign(entity, jsonObject); + + this._handleColumns(entities[index]); + + this._handleRelations(entities[index], includeRelations, loadPromises); + + resolve(); + + case 15: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + })); + }); //addLoadPromises adds other loadPromises. Therefore wait until done, then wait for other + + _context2.next = 9; + return Promise.all(addLoadPromises); + + case 9: + _context2.next = 11; + return Promise.all(loadPromises); + + case 11: + if (!isArray) { + entities = entities.length > 0 ? entities[0] : null; + } + + return _context2.abrupt("return", entities); + + case 13: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + }, { + key: "_handleRelations", + value: function _handleRelations(entity, includeRelations, loadPromises) { + var relations = this.getRelationDefinitions(); + Object.keys(relations).forEach(function (relationName) { + var values = entity[relationName]; + + if (typeof values === "number" || Array.isArray(values) && values.length >= 1 && typeof values[0] === "number") { + if (includeRelations === true) { + var loadPromise = null; + + if (Array.isArray(values)) { + loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findByIds(values); + } else { + loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findById(values); + } + + loadPromises.push(loadPromise.then(function (value) { + entity[relationName] = value; + })); + } else if (includeRelations === false) { + if (relations[relationName].type === "many-to-many" || relations[relationName].type === "one-to-many") { + entity[relationName] = []; + } else { + entity[relationName] = null; + } + } + } + }); + } + }, { + key: "_handleColumns", + value: function _handleColumns(entity) { + var schemaDefinition = this.getSchemaDefinition(); + var columns = schemaDefinition["columns"]; + Object.keys(columns).forEach(function (columnName) { + if (columns[columnName].escapeHTML) { + entity[columnName] = shared_1.XSSHelper.escapeHTML(entity[columnName]); + } + + if (columns[columnName].escapeJS) { + entity[columnName] = shared_1.XSSHelper.escapeJS(entity[columnName]); + } + }); + } + }, { + key: "prepareSync", + value: function prepareSync(entities) { + return entities; + } + }]); + + return EasySyncBaseModel; +}(cordova_sites_database_1.BaseModel); + +exports.EasySyncBaseModel = EasySyncBaseModel; +EasySyncBaseModel.delegateClass = null; +EasySyncBaseModel.CAN_BE_SYNCED = true; /***/ }), - -/***/ "./src/client/html/sites/privacyPolicy.html": -/*!**************************************************!*\ - !*** ./src/client/html/sites/privacyPolicy.html ***! - \**************************************************/ -/*! no static exports found */ +/* 79 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/privacyPolicy.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/privacyPolicy.html?"); +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AbstractFragment = void 0; + +var Context_1 = __webpack_require__(111); + +var Helper_1 = __webpack_require__(15); +/** + * Ein Fragment ist ein TeilView einer Ansicht. + */ + + +var AbstractFragment = /*#__PURE__*/function (_Context_1$Context) { + _inherits(AbstractFragment, _Context_1$Context); + + var _super = _createSuper(AbstractFragment); + + /** + * Erstellt ein neues Fragment + * + * @param site + * @param view + */ + function AbstractFragment(site, view) { + var _this; + + _classCallCheck(this, AbstractFragment); + + _this = _super.call(this, view); + _this._site = site; + _this._viewQuery = null; + _this._active = true; + return _this; + } + /** + * Gibt die zugehörige Seite zurück + * + * @returns + */ + + + _createClass(AbstractFragment, [{ + key: "getSite", + value: function getSite() { + if (this._site instanceof AbstractFragment) { + return this._site.getSite(); + } + + return this._site; + } + }, { + key: "startSite", + value: function startSite(site, args) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", this._site.startSite(site, args)); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + /** + * Gibt zurück, ob das Fragment aktiv ist. Wenn nicht, wird es in der Seite nicht angezeigt + * + * @returns {boolean} + */ + + }, { + key: "isActive", + value: function isActive() { + return this._active; + } + }, { + key: "setViewQuery", + value: function setViewQuery(query) { + this._viewQuery = query; + } + }, { + key: "getViewQuery", + value: function getViewQuery() { + return this._viewQuery; + } + }, { + key: "setActive", + value: function setActive(active) { + this._active = active; + + if (Helper_1.Helper.isNotNull(this._view)) { + if (active) { + this._view.classList.remove("hidden"); + } else { + this._view.classList.add("hidden"); + } + } + } + }]); + + return AbstractFragment; +}(Context_1.Context); + +exports.AbstractFragment = AbstractFragment; /***/ }), - -/***/ "./src/client/html/sites/settingsSite.html": -/*!*************************************************!*\ - !*** ./src/client/html/sites/settingsSite.html ***! - \*************************************************/ -/*! no static exports found */ +/* 80 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/settingsSite.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/settingsSite.html?"); +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MenuAction = void 0; + +var Helper_1 = __webpack_require__(15); +/** + * Container für verschiedene Eigenschaften + */ + + +var MenuAction = /*#__PURE__*/function () { + /** + * Erstellt eine MenuAction. + * Außer name und action ist alles mit Default-werten vorbelegt + * + * @param name + * @param action + * @param showFor + * @param order + * @param icon + */ + function MenuAction(name, action, showFor, order, icon) { + _classCallCheck(this, MenuAction); + + this._liClass = ""; + this._shouldTranslate = true; + this._visible = true; + this._activated = true; + this._copies = []; + this._menu = null; + this._name = name; + this._action = action; + this._showFor = Helper_1.Helper.nonNull(showFor, MenuAction.SHOW_FOR_MEDIUM); + this._order = Helper_1.Helper.nonNull(order, 1000); + this._icon = icon; + this._id = MenuAction.lastId++; + this._liClass = ""; + this._shouldTranslate = true; + this._visible = true; + this._activated = true; + this._menu = null; + this._copies = []; + } + /** + * Erstellt eine neue MenuAction auf grundlage dieser MenuAction. Alle Eigenschaften sind identisch, bis auf die ID + * + * @param action + * @return {MenuAction} + */ + + + _createClass(MenuAction, [{ + key: "copy", + value: function copy(action) { + var copiedAction = Helper_1.Helper.nonNull(action, new MenuAction()); + copiedAction._name = this._name; + copiedAction._action = this._action; + copiedAction._showFor = this._showFor; + copiedAction._order = this._order; + copiedAction._liClass = this._liClass; + copiedAction._shouldTranslate = this._shouldTranslate; + copiedAction._visible = this._visible; + copiedAction._activated = this._activated; + copiedAction._icon = this._icon; + copiedAction._id = MenuAction.lastId++; + + this._copies.push(copiedAction); + + return copiedAction; // return new MenuActionSlave(this); + } // _triggerCopies(fn, args){ + // this._copies.forEach(copy => { + // copy[fn].apply(copy, args); + // }) + // } + + /** + * Sorgt dafür, dass die Action neu gezeichnet wird + */ + + }, { + key: "redraw", + value: function redraw() { + if (Helper_1.Helper.isNotNull(this._menu)) { + this._menu.redrawAction(this); + } + + this._copies.forEach(function (copy) { + return copy.redraw(); + }); + } + /** + * Sorgt dafür, dass die ActionElemente geupdatet wird + */ + + }, { + key: "update", + value: function update() { + this._menu.updateAction(this); + + this._copies.forEach(function (copy) { + return copy.update(); + }); + } + /** + * Gibt die Order der MenuAction zurück. Die Order bestimmt die Reihenfolge in der die Elemente angezeigt werden. + * Je kleiner die Order, desto weiter rechts/oben werden diese angezeigt + * + * @returns {*} + */ + + }, { + key: "getOrder", + value: function getOrder() { + return this._order; + } + /** + * Gibt zurück, ob die MenuAction aktiv ist + * + * @returns {boolean} + */ + + }, { + key: "isActivated", + value: function isActivated() { + return this._activated; + } + /** + * Gibt an, ob der Name übersetzt werden soll + * + * @returns {boolean} + */ + + }, { + key: "isShouldTranslate", + value: function isShouldTranslate() { + return this._shouldTranslate; + } + }, { + key: "setShouldTranslate", + value: function setShouldTranslate(shouldTranslate) { + this._shouldTranslate = shouldTranslate === true; + this.redraw(); + } + }, { + key: "setVisibility", + value: function setVisibility(visibility) { + this._visible = visibility; + this.redraw(); + + this._copies.forEach(function (copy) { + return copy.setVisibility(visibility); + }); + } + /** + * Gibt an, ob die MenuAction sichtbar ist + * + * @returns {boolean} + */ + + }, { + key: "isVisible", + value: function isVisible() { + return this._visible; + } + /** + * Gibt den Namen zurück + * + * @returns {*} + */ + + }, { + key: "getName", + value: function getName() { + return this._name; + } + }, { + key: "setName", + value: function setName(name) { + this._name = name; + this.redraw(); + } + /** + * Gibt die Action, welche beim Click ausgeführt werden soll zurück + * @returns {string|function} + */ + + }, { + key: "getAction", + value: function getAction() { + return this._action; + } + /** + * Gibt die ID der MenuAction zurück + * @returns {number} + */ + + }, { + key: "getId", + value: function getId() { + return this._id; + } + /** + * Gibt das Icon der MenuAction zurück + * @returns {string|null} + */ + + }, { + key: "getIcon", + value: function getIcon() { + return this._icon; + } + }, { + key: "setIcon", + value: function setIcon(icon) { + this._icon = icon; + this.redraw(); + } + /** + * Gibt die View-Klasse der Action zurück + * @returns {string} + */ + + }, { + key: "getShowFor", + value: function getShowFor() { + return this._showFor; + } + /** + * Gibt eine odder mehrere extra Klasse zurück, die dem li-Element der Action hinzugefügt werden kann + * @returns {string} + */ + + }, { + key: "getLiClass", + value: function getLiClass() { + return this._liClass; + } + }, { + key: "setLiClass", + value: function setLiClass(cssClass) { + this._liClass = cssClass; + + this._copies.forEach(function (c) { + return c.setLiClass(cssClass); + }); + + this.redraw(); + } + /** + * Gibt das zugehörige Menu zurück + * + * @returns {null} + */ + + }, { + key: "getMenu", + value: function getMenu() { + return this._menu; + } + /** + * Setzt das zugehörige Menu + * + * @param menu + */ + + }, { + key: "setMenu", + value: function setMenu(menu) { + this._menu = menu; + } + }]); + + return MenuAction; +}(); + +exports.MenuAction = MenuAction; +/** + * Letzte ID, die vergeben wurde. Wird beim Erstellen einer Acton um eins erhöht + * @type {number} + */ + +MenuAction.lastId = 0; +/** + * Die SHOW_ALWAYS-Visibility-Klasse + * Das Element wird bei jeder Größe in der NavBar angezeigt + * + * @type {string} + */ + +MenuAction.SHOW_ALWAYS = "always"; +/** + * Die SHOW_FOR_SMEDIUM-Visibility-Klasse + * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe "SMedium" (zwischen Small und Medium) hat + * + * @type {string} + */ + +MenuAction.SHOW_FOR_SMEDIUM = "smedium"; +/** + * Die SHOW_FOR_MEDIUM-Visibility-Klasse + * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe "Medium" hat + * + * @type {string} + */ + +MenuAction.SHOW_FOR_MEDIUM = "medium"; +/** + * Die SHOW_FOR_LARGE-Visibility-Klasse + * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe "Large" hat + * + * @type {string} + */ + +MenuAction.SHOW_FOR_LARGE = "large"; +/** + * Die SHOW_FOR_MEDIUM-Visibility-Klasse + * Das Element wird nie in der NavBar angezeigt, sondern immer nur im aufklapbaren Menu + * + * @type {string} + */ + +MenuAction.SHOW_NEVER = "never"; /***/ }), - -/***/ "./src/client/html/sites/tutorialSite.html": -/*!*************************************************!*\ - !*** ./src/client/html/sites/tutorialSite.html ***! - \*************************************************/ -/*! no static exports found */ +/* 81 */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"html/tutorialSite.html\";\n\n//# sourceURL=webpack:///./src/client/html/sites/tutorialSite.html?"); +/* WEBPACK VAR INJECTION */(function(process) {/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = __webpack_require__(486)(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(247))) /***/ }), +/* 82 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/img/help.png": -/*!*********************************!*\ - !*** ./src/client/img/help.png ***! - \*********************************/ -/*! exports provided: default */ +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(14); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +var META = __webpack_require__(87)('meta'); +var isObject = __webpack_require__(14); +var has = __webpack_require__(51); +var setDesc = __webpack_require__(29).f; +var id = 0; +var isExtensible = Object.isExtensible || function () { + return true; +}; +var FREEZE = !__webpack_require__(12)(function () { + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function (it) { + setDesc(it, META, { value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + } }); +}; +var fastKey = function (it, create) { + // return primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function (it, create) { + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; + + +/***/ }), +/* 84 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Dialog = void 0; + +var Helper_1 = __webpack_require__(15); + +var Translator_1 = __webpack_require__(32); + +var ViewInflater_1 = __webpack_require__(58); + +var Dialog = /*#__PURE__*/function () { + function Dialog(content, title) { + var _this = this; + + _classCallCheck(this, Dialog); + + this._resolver = null; + this._content = null; + this._backgroundElement = null; + this._cancelable = true; + this._title = Helper_1.Helper.nonNull(title, ""); + this._translatable = true; + this._additionalClasses = ""; + this._buttons = []; + this._result = null; + this._contentPromise = null; + this._addedToDomePromise = new Promise(function (r) { + _this._addedToDomePromiseResolver = r; + }); + + if (Helper_1.Helper.isNotNull(content)) { + this.setContent(content); + } + } + + _createClass(Dialog, [{ + key: "setTitle", + value: function setTitle(title) { + this._title = title; + return this; + } + }, { + key: "setTranslatable", + value: function setTranslatable(translatable) { + this._translatable = translatable; + } + }, { + key: "setAdditionalClasses", + value: function setAdditionalClasses(classes) { + this._additionalClasses = classes; + } + }, { + key: "getTitle", + value: function getTitle() { + return this._title; + } + }, { + key: "setCancelable", + value: function setCancelable(cancelable) { + this._cancelable = cancelable === true; + return this; + } + }, { + key: "setContent", + value: function setContent(content) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (typeof content === "string" && content.endsWith(".html")) { + content = ViewInflater_1.ViewInflater.getInstance().load(content); + } + + this._contentPromise = Promise.resolve(content); + _context.next = 4; + return this._contentPromise; + + case 4: + this._content = _context.sent; + return _context.abrupt("return", this); + + case 6: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "addButton", + value: function addButton(elementOrText, listenerOrResult, shouldClose) { + shouldClose = Helper_1.Helper.nonNull(shouldClose, true); + var button = null; + + if (typeof elementOrText === "string") { + button = document.createElement("button"); + button.classList.add("button"); + button.classList.add("right"); + button.appendChild(Translator_1.Translator.makePersistentTranslation(elementOrText)); + } else { + button = elementOrText; + } + + var self = this; + + if (typeof listenerOrResult !== "function") { + var result = listenerOrResult; + + listenerOrResult = function listenerOrResult() { + self._result = result; + }; + } + + var callback = null; + + if (shouldClose) { + callback = function callback(e) { + if (Helper_1.Helper.isNotNull(listenerOrResult)) { + listenerOrResult(e); + } + + self.close(); + }; + } else { + callback = listenerOrResult; + } + + if (Helper_1.Helper.isNotNull(callback)) { + button.addEventListener("click", callback); + } + + this._buttons.push(button); + } + }, { + key: "show", + value: function show() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this2 = this; + + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return this._contentPromise; + + case 2: + this._backgroundElement = this.createModalDialogElement(); + + this._backgroundElement.addEventListener("keyup", function (e) { + if (e.key === "Escape" && _this2._cancelable) { + _this2.close(); + } + }); + + document.body.appendChild(this._backgroundElement); + _context2.next = 7; + return Translator_1.Translator.getInstance().updateTranslations(); + + case 7: + this._addedToDomePromiseResolver(); + + return _context2.abrupt("return", new Promise(function (resolve) { + _this2._resolver = resolve; + })); + + case 9: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "createModalDialogElement", + value: function createModalDialogElement() { + var _this3 = this; + + var titleElement = document.createElement("span"); + titleElement.classList.add("title"); + + if (this._translatable && this._title !== "") { + titleElement.appendChild(Translator_1.Translator.makePersistentTranslation(this._title)); + } else { + titleElement.innerHTML = this._title; + } + + var titleBar = document.createElement("div"); + titleBar.appendChild(titleElement); + var contentContainer = document.createElement("div"); + contentContainer.classList.add("content-container"); + var modalDialog = document.createElement("div"); + modalDialog.className = this._additionalClasses; + modalDialog.classList.add("modal"); + modalDialog.appendChild(titleBar); + modalDialog.appendChild(contentContainer); + var buttonBar = document.createElement("div"); + buttonBar.classList.add("modal-button-container"); + + for (var i = 0, n = this._buttons.length; i < n; i++) { + buttonBar.appendChild(this._buttons[i]); + } + + if (!(this._content instanceof Node)) { + this._content = this._translatable ? Translator_1.Translator.makePersistentTranslation(this._content) : document.createTextNode(this._content); + } + + contentContainer.appendChild(this._content); + this._backgroundElement = document.createElement("div"); + + this._backgroundElement.classList.add("background"); + + this._backgroundElement.style.display = "block"; + + this._backgroundElement.appendChild(modalDialog); + + this._backgroundElement.querySelector(".modal").appendChild(buttonBar); + + if (this._cancelable) { + var closeButton = document.createElement("span"); + closeButton.classList.add("close"); + closeButton.innerHTML = "×"; + titleBar.appendChild(closeButton); + closeButton.addEventListener("click", function () { + _this3.close(); + }); + window.addEventListener("click", function (e) { + if (e.target === _this3._backgroundElement) { + _this3.close(); + } + }); + } + + return this._backgroundElement; + } + }, { + key: "waitForAddedToDom", + value: function waitForAddedToDom() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt("return", this._addedToDomePromise); + + case 1: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "close", + value: function close() { + var _this4 = this; + + this.waitForAddedToDom().then(function () { + if (Helper_1.Helper.isNotNull(_this4._backgroundElement)) { + _this4._backgroundElement.style.display = "none"; + + _this4._backgroundElement.remove(); + + _this4._backgroundElement = null; + } + }); + + if (Helper_1.Helper.isNotNull(this._resolver)) { + this._resolver(this._result); + } + } + }]); + + return Dialog; +}(); + +exports.Dialog = Dialog; + +/***/ }), +/* 85 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"img/help.png\");\n\n//# sourceURL=webpack:///./src/client/img/help.png?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return LockNotSupportedOnGivenDriverError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when selected sql driver does not supports locking. + */ +var LockNotSupportedOnGivenDriverError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(LockNotSupportedOnGivenDriverError, _super); + function LockNotSupportedOnGivenDriverError() { + var _this = _super.call(this) || this; + _this.name = "LockNotSupportedOnGivenDriverError"; + Object.setPrototypeOf(_this, LockNotSupportedOnGivenDriverError.prototype); + _this.message = "Locking not supported on given driver."; + return _this; + } + return LockNotSupportedOnGivenDriverError; +}(Error)); + + +//# sourceMappingURL=LockNotSupportedOnGivenDriverError.js.map + /***/ }), +/* 86 */ +/***/ (function(module, exports) { -/***/ "./src/client/img/settings.png": -/*!*************************************!*\ - !*** ./src/client/img/settings.png ***! - \*************************************/ -/*! exports provided: default */ +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), +/* 87 */ +/***/ (function(module, exports) { + +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + + +/***/ }), +/* 88 */ +/***/ (function(module, exports) { + +module.exports = false; + + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(215); +var enumBugKeys = __webpack_require__(167); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + + +/***/ }), +/* 90 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(64); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __webpack_require__(13); +var dPs = __webpack_require__(216); +var enumBugKeys = __webpack_require__(167); +var IE_PROTO = __webpack_require__(166)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = __webpack_require__(164)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + __webpack_require__(168).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), +/* 92 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = __webpack_require__(215); +var hiddenKeys = __webpack_require__(167).concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return $keys(O, hiddenKeys); +}; + + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __webpack_require__(51); +var toObject = __webpack_require__(36); +var IE_PROTO = __webpack_require__(166)('IE_PROTO'); +var ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +// 22.1.3.31 Array.prototype[@@unscopables] +var UNSCOPABLES = __webpack_require__(18)('unscopables'); +var ArrayProto = Array.prototype; +if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(52)(ArrayProto, UNSCOPABLES, {}); +module.exports = function (key) { + ArrayProto[UNSCOPABLES][key] = true; +}; + + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(14); +module.exports = function (it, TYPE) { + if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); + return it; +}; + + +/***/ }), +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(97) +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(480) +var ieee754 = __webpack_require__(481) +var isArray = __webpack_require__(482) + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(193))) + +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.OpenSubmenuAction = void 0; + +var MenuAction_1 = __webpack_require__(80); + +var Helper_1 = __webpack_require__(15); +/** + * Action, welche ein Untermenü öffnet + */ + + +var OpenSubmenuAction = /*#__PURE__*/function (_MenuAction_1$MenuAct) { + _inherits(OpenSubmenuAction, _MenuAction_1$MenuAct); + + var _super = _createSuper(OpenSubmenuAction); + + /** + * Bekommt ein submenu anstelle einer Action übergeben. + * Erstellt automatisch die action zum öffnen/schließen des Menüs + * + * @param title + * @param menu + * @param showFor + * @param order + * @param icon + */ + function OpenSubmenuAction(title, menu, showFor, order, icon) { + var _this; + + _classCallCheck(this, OpenSubmenuAction); + + //Erstellt die action zum schließen/öffnen des Submenüs + _this = _super.call(this, title, function (action) { + action.getSubmenu().toggle(); + action.update(); + }, showFor, order, icon); + _this._submenu = menu; + menu.setParentAction(_assertThisInitialized(_this)); + return _this; + } + /** + * Erstellt eine neue MenuAction auf grundlage dieser MenuAction. Alle Eigenschaften sind identisch, bis auf die ID + * und das Submenu, welches ebenfalls kopiert wird + * + * @param action + * @return {MenuAction} + */ + + + _createClass(OpenSubmenuAction, [{ + key: "copy", + value: function copy(action) { + action = Helper_1.Helper.nonNull(action, new OpenSubmenuAction(null, this._submenu.copy())); + action = _get(_getPrototypeOf(OpenSubmenuAction.prototype), "copy", this).call(this, action); + + action._submenu.setParentAction(action); + + return action; + } + /** + * Gibt das Submenu zurück + * + * @returns {*} + */ + + }, { + key: "getSubmenu", + value: function getSubmenu() { + return this._submenu; + } + }]); + + return OpenSubmenuAction; +}(MenuAction_1.MenuAction); + +exports.OpenSubmenuAction = OpenSubmenuAction; + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UserManager = void 0; + +var client_1 = __webpack_require__(4); + +var User_1 = __webpack_require__(112); + +var UserManager = /*#__PURE__*/function () { + function UserManager() { + _classCallCheck(this, UserManager); + + this._defaultUserData = { + id: null, + loggedIn: false, + online: false, + username: null, + email: null, + accesses: UserManager.OFFLINE_ACCESSES + }; + this._userData = this._defaultUserData; + this._lastLoginChangeCallbackId = -1; + this._loginChangeCallbacks = {}; + this._getMePromise = null; + } + + _createClass(UserManager, [{ + key: "addLoginChangeCallback", + value: function addLoginChangeCallback(callback, callImmediately) { + this._lastLoginChangeCallbackId++; + this._loginChangeCallbacks[this._lastLoginChangeCallbackId] = callback; + + if (client_1.Helper.nonNull(callImmediately, false)) { + callback(this._userData.loggedIn, this); + } + + return this._lastLoginChangeCallbackId; + } + }, { + key: "hasAccess", + value: function hasAccess(access) { + return this._userData.accesses.indexOf(access) !== -1; + } + }, { + key: "_checkChangedLogin", + value: function _checkChangedLogin(before) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!(this._userData.loggedIn !== before.loggedIn || this._userData.loggedIn === true && this._userData.id !== before.id)) { + _context.next = 3; + break; + } + + _context.next = 3; + return this._callLoginChangeCallbacks(); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "_callLoginChangeCallbacks", + value: function _callLoginChangeCallbacks() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this = this; + + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return client_1.Helper.asyncForEach(Object.keys(this._loginChangeCallbacks), function (callbackId) { + _this._loginChangeCallbacks[callbackId](_this._userData.loggedIn, _this); + }, true); + + case 2: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "getUserData", + value: function getUserData() { + return this._userData; + } + }, { + key: "getMe", + value: function getMe() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this2 = this; + + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + this._getMePromise = new Promise(function (r) { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var before, res; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + before = this._userData; + _context3.next = 3; + return this._doGetMe(); + + case 3: + res = _context3.sent; + _context3.next = 6; + return this._checkChangedLogin(before); + + case 6: + r(res); + + case 7: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + }); + return _context4.abrupt("return", this._getMePromise); + + case 2: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "waitForGetMe", + value: function waitForGetMe() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + if (this._getMePromise === null) { + this.getMe(); + } + + _context5.next = 3; + return this._getMePromise; + + case 3: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + }, { + key: "login", + value: function login(email, password, saveLogin) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _this3 = this; + + var before, res; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + before = this._userData; + _context6.next = 3; + return this._doLogin(email, password, saveLogin); + + case 3: + res = _context6.sent; + //do it after the result is returned + setTimeout(function () { + _this3._checkChangedLogin(before); + }, 1); + return _context6.abrupt("return", res); + + case 6: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "logout", + value: function logout() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var before, res; + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + before = this._userData; + _context7.next = 3; + return this._doLogout(); + + case 3: + res = _context7.sent; + _context7.next = 6; + return this._checkChangedLogin(before); + + case 6: + if (this._userData.loggedIn) { + _context7.next = 9; + break; + } + + _context7.next = 9; + return new client_1.Toast("goodbye").show(); + + case 9: + return _context7.abrupt("return", res); + + case 10: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + }, { + key: "register", + value: function register(email, username, password) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var before, res; + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + before = this._userData; + _context8.next = 3; + return this._doRegister(email, username, password); + + case 3: + res = _context8.sent; + _context8.next = 6; + return this._checkChangedLogin(before); + + case 6: + return _context8.abrupt("return", res); + + case 7: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "_doGetMe", + value: function _doGetMe() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + var data; + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return UserManager.updateHeaders(); + + case 2: + _context9.next = 4; + return client_1.DataManager.load("user"); + + case 4: + data = _context9.sent; + + if (!client_1.Helper.isSet(data, "userData")) { + _context9.next = 11; + break; + } + + _context9.next = 8; + return client_1.NativeStoragePromise.setItem("user-data", data.userData); + + case 8: + this._userData = data.userData; + _context9.next = 12; + break; + + case 11: + this._userData = this._defaultUserData; + + case 12: + this._updateAccessClasses(); + + if (!client_1.Helper.isSet(data, "token")) { + _context9.next = 23; + break; + } + + client_1.DataManager.setHeader("Authorization", "Bearer " + data.token); + sessionStorage.setItem("auth-token", data.token); + _context9.t0 = client_1.Helper; + _context9.next = 19; + return client_1.NativeStoragePromise.getItem("auth-token"); + + case 19: + _context9.t1 = _context9.sent; + + if (!_context9.t0.isNotNull.call(_context9.t0, _context9.t1)) { + _context9.next = 23; + break; + } + + _context9.next = 23; + return client_1.NativeStoragePromise.setItem("auth-token", data.token); + + case 23: + case "end": + return _context9.stop(); + } + } + }, _callee9, this); + })); + } + }, { + key: "_doLogin", + value: function _doLogin(email, password, saveLogin) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + var data; + return regeneratorRuntime.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + _context10.next = 2; + return client_1.DataManager.send("user/login", { + "email": email, + "password": password + }); + + case 2: + data = _context10.sent; + + if (!data.success) { + _context10.next = 14; + break; + } + + client_1.DataManager.setHeader("Authorization", "Bearer " + data.token); + sessionStorage.setItem("auth-token", data.token); + _context10.next = 8; + return this._doGetMe(); + + case 8: + if (!saveLogin) { + _context10.next = 11; + break; + } + + _context10.next = 11; + return client_1.NativeStoragePromise.setItem("auth-token", data.token); + + case 11: + return _context10.abrupt("return", true); + + case 14: + client_1.DataManager.setHeader("Authorization", ""); + sessionStorage.setItem("auth-token", ""); + _context10.next = 18; + return client_1.NativeStoragePromise.setItem("auth-token", ""); + + case 18: + _context10.next = 20; + return new client_1.Toast(data.message).show(); + + case 20: + return _context10.abrupt("return", false); + + case 21: + case "end": + return _context10.stop(); + } + } + }, _callee10, this); + })); + } + }, { + key: "_doLogout", + value: function _doLogout() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee11() { + return regeneratorRuntime.wrap(function _callee11$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + client_1.DataManager.setHeader("Authorization", ""); + sessionStorage.setItem("auth-token", ""); + _context11.next = 4; + return client_1.NativeStoragePromise.setItem("auth-token", ""); + + case 4: + _context11.next = 6; + return this._doGetMe(); + + case 6: + return _context11.abrupt("return", true); + + case 7: + case "end": + return _context11.stop(); + } + } + }, _callee11, this); + })); + } + }, { + key: "_doRegister", + value: function _doRegister(email, username, password) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee12() { + var data; + return regeneratorRuntime.wrap(function _callee12$(_context12) { + while (1) { + switch (_context12.prev = _context12.next) { + case 0: + _context12.next = 2; + return client_1.DataManager.send("user/register", { + "email": email, + "username": username, + "password": password + }); + + case 2: + data = _context12.sent; + + if (!data.success) { + _context12.next = 11; + break; + } + + client_1.DataManager.setHeader("Authorization", "Bearer " + data.token); + sessionStorage.setItem("auth-token", data.token); + _context12.next = 8; + return this._doGetMe(); + + case 8: + return _context12.abrupt("return", true); + + case 11: + client_1.DataManager.setHeader("Authorization", ""); + sessionStorage.setItem("auth-token", ""); + _context12.next = 15; + return client_1.NativeStoragePromise.setItem("auth-token", ""); + + case 15: + _context12.next = 17; + return new client_1.Toast(data.message).show(); + + case 17: + return _context12.abrupt("return", false); + + case 18: + case "end": + return _context12.stop(); + } + } + }, _callee12, this); + })); + } + /** + * @returns {UserManager} + */ + + }, { + key: "_updateAccessClasses", + value: function _updateAccessClasses() { + document.body.classList.forEach(function (cl) { + if (cl.startsWith(UserManager.ACCESS_CLASS_PREFIX)) { + document.body.classList.remove(cl); + } + }); + + this._userData.accesses.forEach(function (access) { + document.body.classList.add(UserManager.ACCESS_CLASS_PREFIX + access); + }); + } + }, { + key: "hasOfflineAccess", + value: function hasOfflineAccess(access) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee13() { + var offlineData; + return regeneratorRuntime.wrap(function _callee13$(_context13) { + while (1) { + switch (_context13.prev = _context13.next) { + case 0: + if (!this.isOnline()) { + _context13.next = 2; + break; + } + + return _context13.abrupt("return", false); + + case 2: + _context13.t0 = client_1.Helper; + _context13.next = 5; + return client_1.NativeStoragePromise.getItem("user-data"); + + case 5: + _context13.t1 = _context13.sent; + _context13.t2 = { + accesses: UserManager.OFFLINE_ACCESSES + }; + offlineData = _context13.t0.nonNull.call(_context13.t0, _context13.t1, _context13.t2); + return _context13.abrupt("return", offlineData.accesses.indexOf(access) !== -1); + + case 9: + case "end": + return _context13.stop(); + } + } + }, _callee13, this); + })); + } + }, { + key: "sendForgotPasswordEmail", + value: function sendForgotPasswordEmail(email) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee14() { + var data; + return regeneratorRuntime.wrap(function _callee14$(_context14) { + while (1) { + switch (_context14.prev = _context14.next) { + case 0: + _context14.next = 2; + return client_1.DataManager.send("user/forgotPW", { + email: email + }); + + case 2: + data = _context14.sent; + return _context14.abrupt("return", data.success); + + case 4: + case "end": + return _context14.stop(); + } + } + }, _callee14); + })); + } + }, { + key: "resetPassword", + value: function resetPassword(token, password) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee15() { + var data; + return regeneratorRuntime.wrap(function _callee15$(_context15) { + while (1) { + switch (_context15.prev = _context15.next) { + case 0: + _context15.next = 2; + return client_1.DataManager.send("user/forgotPW/2", { + token: token, + password: password + }); + + case 2: + data = _context15.sent; + return _context15.abrupt("return", data.success); + + case 4: + case "end": + return _context15.stop(); + } + } + }, _callee15); + })); + } + }, { + key: "isOnline", + value: function isOnline() { + return this._userData.online; + } + }, { + key: "isLoggedIn", + value: function isLoggedIn() { + return this._userData.loggedIn; + } + }], [{ + key: "getInstance", + value: function getInstance() { + if (!UserManager._instance) { + UserManager._instance = new UserManager(); + } + + return UserManager._instance; + } + }, { + key: "updateHeaders", + value: function updateHeaders() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee16() { + var token; + return regeneratorRuntime.wrap(function _callee16$(_context16) { + while (1) { + switch (_context16.prev = _context16.next) { + case 0: + _context16.t0 = client_1.Helper; + _context16.t1 = sessionStorage.getItem("auth-token"); + _context16.next = 4; + return client_1.NativeStoragePromise.getItem("auth-token"); + + case 4: + _context16.t2 = _context16.sent; + token = _context16.t0.nonNull.call(_context16.t0, _context16.t1, _context16.t2); + + if (token) { + client_1.DataManager.setHeader("Authorization", "Bearer " + token); + } + + case 7: + case "end": + return _context16.stop(); + } + } + }, _callee16); + })); + } + }, { + key: "syncParamFor", + value: function syncParamFor(model) { + return { + model: model, + where: { + user: { + id: this.getInstance().getUserData().id + } + } + }; + } + }, { + key: "userSyncParam", + value: function userSyncParam() { + return { + model: User_1.User, + where: { + id: this.getInstance().getUserData().id + } + }; + } + }]); + + return UserManager; +}(); + +exports.UserManager = UserManager; +UserManager.ACCESS_CLASS_PREFIX = "access-"; +UserManager.OFFLINE_ACCESSES = ["offline"]; + +/***/ }), +/* 100 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"img/settings.png\");\n\n//# sourceURL=webpack:///./src/client/img/settings.png?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UpdateValuesMissingError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when user tries to update using QueryBuilder but do not specify what to update. + */ +var UpdateValuesMissingError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(UpdateValuesMissingError, _super); + function UpdateValuesMissingError() { + var _this = _super.call(this) || this; + _this.name = "UpdateValuesMissingError"; + Object.setPrototypeOf(_this, UpdateValuesMissingError.prototype); + _this.message = "Cannot perform update query because update values are not defined. Call \"qb.set(...)\" method to specify updated values."; + return _this; + } + return UpdateValuesMissingError; +}(Error)); + + +//# sourceMappingURL=UpdateValuesMissingError.js.map + /***/ }), +/* 101 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/Fragment/WordRotatorSettingFragment.ts": -/*!**************************************************************!*\ - !*** ./src/client/js/Fragment/WordRotatorSettingFragment.ts ***! - \**************************************************************/ -/*! exports provided: WordRotatorSettingFragment */ +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Toast = void 0; + +var Helper_1 = __webpack_require__(15); + +var ToastManager_1 = __webpack_require__(259); + +var Toast = /*#__PURE__*/function () { + function Toast(message, duration, shouldTranslateOrTranslationArgs) { + _classCallCheck(this, Toast); + + this._message = message; + this._duration = Helper_1.Helper.nonNull(duration, Toast.DEFAULT_DURATION); + this._shouldTranslate = shouldTranslateOrTranslationArgs !== false; + this._translationArgs = Helper_1.Helper.nonNull(shouldTranslateOrTranslationArgs, []); + this._id = Toast.LAST_ID++; + this._toastElement = null; + } + + _createClass(Toast, [{ + key: "getId", + value: function getId() { + return this._id; + } + }, { + key: "getMessage", + value: function getMessage() { + return this._message; + } + }, { + key: "getDuration", + value: function getDuration() { + return this._duration; + } + }, { + key: "isShouldTranslate", + value: function isShouldTranslate() { + return this._shouldTranslate; + } + }, { + key: "getTranslationArgs", + value: function getTranslationArgs() { + return this._translationArgs; + } + }, { + key: "setToastElement", + value: function setToastElement(element) { + this._toastElement = element; + } + }, { + key: "getToastElement", + value: function getToastElement() { + return this._toastElement; + } + }, { + key: "show", + value: function show() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", ToastManager_1.ToastManager.getInstance().showToast(this)); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "hide", + value: function hide() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", ToastManager_1.ToastManager.getInstance().hideToast(this)); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }]); + + return Toast; +}(); + +exports.Toast = Toast; +Toast.LAST_ID = 0; +Toast.DEFAULT_DURATION = 2500; + +/***/ }), +/* 102 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WordRotatorSettingFragment\", function() { return WordRotatorSettingFragment; });\n/* harmony import */ var _Sites_TutorialSite__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Sites/TutorialSite */ \"./src/client/js/Sites/TutorialSite.ts\");\n/* harmony import */ var _Sites_CreditsSite__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Sites/CreditsSite */ \"./src/client/js/Sites/CreditsSite.ts\");\n/* harmony import */ var _Sites_PrivacyPolicySite__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Sites/PrivacyPolicySite */ \"./src/client/js/Sites/PrivacyPolicySite.ts\");\n/* harmony import */ var _Sites_ImpressumSite__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Sites/ImpressumSite */ \"./src/client/js/Sites/ImpressumSite.ts\");\n/* harmony import */ var cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! cordova-sites/dist/client/js/NativeStoragePromise */ \"./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js\");\n/* harmony import */ var cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var cordova_sites_dist_client_js_Context_AbstractFragment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! cordova-sites/dist/client/js/Context/AbstractFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Context_AbstractFragment__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Context_AbstractFragment__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../shared/model/LevelData */ \"./src/shared/model/LevelData.ts\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client_LastSyncDates__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! cordova-sites-easy-sync/dist/client/LastSyncDates */ \"./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client_LastSyncDates__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_easy_sync_dist_client_LastSyncDates__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! cordova-sites/dist/client/js/Sound/SoundManager */ \"./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! cordova-sites/dist/client/js/Legacy/Matomo */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _model_LevelPlayed__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../model/LevelPlayed */ \"./src/client/js/model/LevelPlayed.ts\");\n/* harmony import */ var _Sites_ContactSite__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Sites/ContactSite */ \"./src/client/js/Sites/ContactSite.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nconst view = __webpack_require__(/*! ../../html/fragment/settings.html */ \"./src/client/html/fragment/settings.html\");\n\n\n\n\n\n\n\n\n\n\n\nclass WordRotatorSettingFragment extends cordova_sites_dist_client_js_Context_AbstractFragment__WEBPACK_IMPORTED_MODULE_5__[\"AbstractFragment\"] {\n constructor(site) {\n super(site, view);\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this.findBy(\"#reset-levels\").addEventListener(\"click\", () => __awaiter(this, void 0, void 0, function* () {\n yield cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__[\"NativeStoragePromise\"].remove(\"currentLevel\");\n yield cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__[\"NativeStoragePromise\"].remove(\"levelCounter\");\n yield cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__[\"NativeStoragePromise\"].remove(\"tutorial-step\");\n yield _model_LevelPlayed__WEBPACK_IMPORTED_MODULE_10__[\"LevelPlayed\"].clear();\n yield _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_6__[\"LevelData\"].clear();\n yield cordova_sites_easy_sync_dist_client_LastSyncDates__WEBPACK_IMPORTED_MODULE_7__[\"LastSyncDates\"].clear();\n }));\n if (location.hostname.includes(\"beta\") || location.hostname.includes(\"127.0.0.1\") || location.hostname.includes(\"localhost\")) {\n // this.findBy(\"#reset-levels\").classList.remove(\"hidden\");\n }\n let playMusicButton = this.findBy(\"#play-music\");\n playMusicButton.checked = ((yield cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__[\"NativeStoragePromise\"].getItem(\"play-music\", \"1\")) === \"1\");\n playMusicButton.addEventListener(\"change\", () => __awaiter(this, void 0, void 0, function* () {\n yield cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__[\"NativeStoragePromise\"].setItem(\"play-music\", (playMusicButton.checked) ? \"1\" : \"0\");\n let soundManager = cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].getInstance();\n soundManager.set({ muted: !playMusicButton.checked }, cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.MUSIC);\n if (playMusicButton.checked) {\n yield soundManager.play(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.MUSIC);\n }\n //TODO [MIG] Matomo\n cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_9__[\"Matomo\"].push([\"trackEvent\", \"MainMenu\", \"PlayMusic\", \"Play Music\", (playMusicButton.checked) ? 1 : 0]);\n }));\n let playSoundButton = this.findBy(\"#play-sound\");\n playSoundButton.checked = ((yield cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__[\"NativeStoragePromise\"].getItem(\"play-sound\", \"1\")) === \"1\");\n playSoundButton.addEventListener(\"change\", () => __awaiter(this, void 0, void 0, function* () {\n yield cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_4__[\"NativeStoragePromise\"].setItem(\"play-sound\", (playSoundButton.checked) ? \"1\" : \"0\");\n let soundManager = cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].getInstance();\n soundManager.set({ muted: !playSoundButton.checked }, cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.SOUND);\n //TODO [MIG] Matomo\n cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_9__[\"Matomo\"].push([\"trackEvent\", \"MainMenu\", \"PlaySound\", \"Play Sound\", (playSoundButton.checked) ? 1 : 0]);\n }));\n this.findBy(\"#track-switch\").addEventListener(\"change\", function (e) {\n cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_9__[\"Matomo\"].setTrack(this.checked === true);\n e.stopPropagation();\n e.preventDefault();\n });\n this.findBy(\"#tutorial-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(_Sites_TutorialSite__WEBPACK_IMPORTED_MODULE_0__[\"TutorialSite\"]);\n });\n this.findBy(\"#credits-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(_Sites_CreditsSite__WEBPACK_IMPORTED_MODULE_1__[\"CreditsSite\"]);\n });\n this.findBy(\"#privacy-policy-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(_Sites_PrivacyPolicySite__WEBPACK_IMPORTED_MODULE_2__[\"PrivacyPolicySite\"]);\n });\n this.findBy(\"#contact-button\").addEventListener(\"click\", () => {\n // new Toast(\"contact site\").show();\n this.getSite().startSite(_Sites_ContactSite__WEBPACK_IMPORTED_MODULE_11__[\"ContactSite\"]);\n });\n this.findBy(\"#impressum-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(_Sites_ImpressumSite__WEBPACK_IMPORTED_MODULE_3__[\"ImpressumSite\"]);\n });\n // @ts-ignore\n this.findBy(\"#version-info\").innerText = '1.3.0';\n return res;\n });\n }\n onStart(args) {\n cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_9__[\"Matomo\"].update(\"Settings Sites\");\n return super.onStart(args);\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/Fragment/WordRotatorSettingFragment.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OptimisticLockCanNotBeUsedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when an optimistic lock cannot be used in query builder. + */ +var OptimisticLockCanNotBeUsedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(OptimisticLockCanNotBeUsedError, _super); + function OptimisticLockCanNotBeUsedError() { + var _this = _super.call(this) || this; + _this.name = "OptimisticLockCanNotBeUsedError"; + Object.setPrototypeOf(_this, OptimisticLockCanNotBeUsedError.prototype); + _this.message = "The optimistic lock can be used only with getOne() method."; + return _this; + } + return OptimisticLockCanNotBeUsedError; +}(Error)); + + +//# sourceMappingURL=OptimisticLockCanNotBeUsedError.js.map + /***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/Sites/ContactSite.ts": -/*!********************************************!*\ - !*** ./src/client/js/Sites/ContactSite.ts ***! - \********************************************/ -/*! exports provided: ContactSite */ +var def = __webpack_require__(29).f; +var has = __webpack_require__(51); +var TAG = __webpack_require__(18)('toStringTag'); + +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; + + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var defined = __webpack_require__(76); +var fails = __webpack_require__(12); +var spaces = __webpack_require__(170); +var space = '[' + spaces + ']'; +var non = '\u200b\u0085'; +var ltrim = RegExp('^' + space + space + '*'); +var rtrim = RegExp(space + space + '*$'); + +var exporter = function (KEY, exec, ALIAS) { + var exp = {}; + var FORCE = fails(function () { + return !!spaces[KEY]() || non[KEY]() != non; + }); + var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY]; + if (ALIAS) exp[ALIAS] = fn; + $export($export.P + $export.F * FORCE, 'String', exp); +}; + +// 1 -> String#trimLeft +// 2 -> String#trimRight +// 3 -> String#trim +var trim = exporter.trim = function (string, TYPE) { + string = String(defined(string)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; +}; + +module.exports = exporter; + + +/***/ }), +/* 105 */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(11); +var dP = __webpack_require__(29); +var DESCRIPTORS = __webpack_require__(28); +var SPECIES = __webpack_require__(18)('species'); + +module.exports = function (KEY) { + var C = global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); +}; + + +/***/ }), +/* 107 */ +/***/ (function(module, exports) { + +module.exports = function (it, Constructor, name, forbiddenField) { + if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { + throw TypeError(name + ': incorrect invocation!'); + } return it; +}; + + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +var redefine = __webpack_require__(45); +module.exports = function (target, src, safe) { + for (var key in src) redefine(target, key, src[key], safe); + return target; +}; + + +/***/ }), +/* 109 */ +/***/ (function(module, exports) { + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__(96).Buffer + +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = Buffer.alloc(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 +} + +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = Buffer.from(data, enc) + } + + var block = this._block + var blockSize = this._blockSize + var length = data.length + var accum = this._len + + for (var offset = 0; offset < length;) { + var assigned = accum % blockSize + var remainder = Math.min(length - offset, blockSize - assigned) + + for (var i = 0; i < remainder; i++) { + block[assigned + i] = data[offset + i] + } + + accum += remainder + offset += remainder + + if ((accum % blockSize) === 0) { + this._update(block) + } + } + + this._len += length + return this +} + +Hash.prototype.digest = function (enc) { + var rem = this._len % this._blockSize + + this._block[rem] = 0x80 + + // zero (rem + 1) trailing bits, where (rem + 1) is the smallest + // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize + this._block.fill(0, rem + 1) + + if (rem >= this._finalSize) { + this._update(this._block) + this._block.fill(0) + } + + var bits = this._len * 8 + + // uint32 + if (bits <= 0xffffffff) { + this._block.writeUInt32BE(bits, this._blockSize - 4) + + // uint64 + } else { + var lowBits = (bits & 0xffffffff) >>> 0 + var highBits = (bits - lowBits) / 0x100000000 + + this._block.writeUInt32BE(highBits, this._blockSize - 8) + this._block.writeUInt32BE(lowBits, this._blockSize - 4) + } + + this._update(this._block) + var hash = this._hash() + + return enc ? hash.toString(enc) : hash +} + +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +} + +module.exports = Hash + + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Context = void 0; + +var Helper_1 = __webpack_require__(15); + +var ViewInflater_1 = __webpack_require__(58); +/** + * Basis-Klasse für Seiten und Fragmente + */ + + +var Context = /*#__PURE__*/function () { + /** + * Erstellt einen neuen Context. Erwartet den Link zu einem HTML-File, welches vom ViewInflater geladen werden kann. + * Im Constructor sollten fragmente hinzugefügt werden (nachdem super.constructor(<>) aufgerufen wurde) + * + * @param view + */ + function Context(view) { + var _this = this; + + _classCallCheck(this, Context); + + this.onViewLoadedCalled = false; + this._pauseParameters = []; + this._view = null; + this._fragments = []; + this._state = Context.STATE_CREATED; + this._viewLoadedPromise = Helper_1.Helper.newPromiseWithResolve(); + this._viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then(function (siteContent) { + _this._view = siteContent; + return siteContent; + }).catch(function (e) { + // @ts-ignore + _this._viewLoadedPromise.reject(e); + }); + } + + _createClass(Context, [{ + key: "getState", + value: function getState() { + return this._state; + } + /** + * Wird von SiteManager aufgerufen, wenn Klasse erstellt wird. Das ViewPromise ist noch nicht zwangsweise geladen! + * Gibt ein Promise zurück. onViewLoaded wird erst aufgerufen, wenn onConstruct-Promise und view-Promise fullfilled sind. + * + * @param constructParameters, Object|Null + * @returns {Promise} + */ + + }, { + key: "onConstruct", + value: function onConstruct(constructParameters) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var onConstructPromises, k; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this._state = Context.STATE_CONSTRUCTED; + this.constructParameters = constructParameters; + onConstructPromises = []; + + for (k in this._fragments) { + onConstructPromises.push(this._fragments[k].onConstruct.apply(this._fragments[k], [constructParameters])); + onConstructPromises.push(this._fragments[k]._viewPromise); + } + + return _context.abrupt("return", Promise.all(onConstructPromises)); + + case 5: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "callOnViewLoaded", + value: function callOnViewLoaded() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var res; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (this.onViewLoadedCalled) { + _context2.next = 6; + break; + } + + this.onViewLoadedCalled = true; + _context2.next = 4; + return this.onViewLoaded(); + + case 4: + res = _context2.sent; + + // @ts-ignore + this._viewLoadedPromise.resolve(res); + + case 6: + return _context2.abrupt("return", this._viewLoadedPromise); + + case 7: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + /** + * Methode wird aufgerufen, sobald onConstruct-Promise und view-Promise fullfilled sind. + * View ist hier noch nicht im Dokument hinzugefügt. + * + * Benutze diese Methode, um die View beim starten zu manipulieren. + */ + + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this2 = this; + + var onViewLoadedPromises, _loop, k; + + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + this._state = Context.STATE_VIEW_LOADED; + onViewLoadedPromises = []; + + _loop = function _loop(k) { + onViewLoadedPromises.push(_this2._fragments[k]._viewPromise.then(function () { + return _this2._fragments[k].callOnViewLoaded(); + }).then(function () { + return _this2._fragments[k]._viewLoadedPromise.resolve(); + })); + }; + + for (k in this._fragments) { + _loop(k); + } + + return _context3.abrupt("return", Promise.all(onViewLoadedPromises)); + + case 5: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + /** + * onViewLoaded-Promise ist erfüllt => View wird dem Document hinzugefügt => onStart wird aufgerufen + * + * Seite wird pausiert => onPause wird aufgerufen => View wird aus dem Document entfernt => - etwas passiert - + * => Seite wird fortgesetzt => View wird dem Document hinzugefügt => onStart wird mit dem Rückgabewert von onPause ausgeführt + * + * Zurückgegebenes Promise wird ignoriert! + * @param pauseArguments, Object|NULL + */ + + }, { + key: "onStart", + value: function onStart(pauseArguments) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this3 = this; + + var _loop2, k; + + return regeneratorRuntime.wrap(function _callee4$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + this._state = Context.STATE_RUNNING; + _loop2 = /*#__PURE__*/regeneratorRuntime.mark(function _loop2(k) { + var fragment; + return regeneratorRuntime.wrap(function _loop2$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + fragment = _this3._fragments[k]; + _context4.t0 = fragment.onStart; + _context4.t1 = _this3._fragments[k]; + _context4.next = 5; + return _this3._fragments[k]._pauseParameters; + + case 5: + _context4.t2 = _context4.sent; + _context4.t3 = [_context4.t2]; + + _context4.t0.apply.call(_context4.t0, _context4.t1, _context4.t3); + + _this3._fragments[k]._viewPromise.then(function (fragmentView) { + if (fragment.isActive()) { + fragmentView.classList.remove("hidden"); + } else { + fragmentView.classList.add("hidden"); + } + }); + + case 9: + case "end": + return _context4.stop(); + } + } + }, _loop2); + }); + _context5.t0 = regeneratorRuntime.keys(this._fragments); + + case 3: + if ((_context5.t1 = _context5.t0()).done) { + _context5.next = 8; + break; + } + + k = _context5.t1.value; + return _context5.delegateYield(_loop2(k), "t2", 6); + + case 6: + _context5.next = 3; + break; + + case 8: + case "end": + return _context5.stop(); + } + } + }, _callee4, this); + })); + } + /** + * Seite wird pausiet => onPause wird ausgeführt => View wird aus dem Document entfernt + * Seite wird beendet => onPause wird ausgeführt (falls State === running) => View wird aus dem Document entfernt + * => onDestroy wird ausgeführt + * + * Rückgabe-Promise wird als Pause-Parameter gespeichert und wird beim Fortsetzen der Seite ausgeführt + * @returns {Promise} + */ + + }, { + key: "onPause", + value: function onPause() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var k, pauseParameters; + return regeneratorRuntime.wrap(function _callee5$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + this._state = Context.STATE_PAUSED; + + for (k in this._fragments) { + pauseParameters = this._fragments[k].onPause.apply(this._fragments[k], args); + + this._fragments[k].setPauseParameters(pauseParameters); + } + + case 2: + case "end": + return _context6.stop(); + } + } + }, _callee5, this); + })); + } + /** + * Seite wird beendet => onPause wird ausgeführt (falls State === running) => View wird aus dem Document entfernt + * => onDestroy wird ausgeführt + * + * Rückgabe-Promise wird ignoriert + */ + + }, { + key: "onDestroy", + value: function onDestroy() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var k; + return regeneratorRuntime.wrap(function _callee6$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + this._state = Context.STATE_DESTROYED; + + for (k in this._fragments) { + this._fragments[k].onDestroy.apply(this._fragments[k], args); + } + + case 2: + case "end": + return _context7.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "isShowing", + value: function isShowing() { + return this._state === Context.STATE_RUNNING; + } + /** + * Fügt ein neues Fragment hinzu. + * + * @param viewQuery + * @param fragment + */ + + }, { + key: "addFragment", + value: function addFragment(viewQuery, fragment) { + var _this4 = this; + + this._fragments.push(fragment); + + fragment.setViewQuery(viewQuery); + this._viewPromise = Promise.all([this._viewPromise, fragment._viewPromise]).then(function (res) { + res[0].querySelector(viewQuery).appendChild(res[1]); + return res[0]; + }).catch(function (e) { + return console.error(e); + }); + + if (this._state >= Context.STATE_CONSTRUCTED) { + fragment.onConstruct(this.constructParameters); + } + + if (this._state >= Context.STATE_VIEW_LOADED) { + Promise.all([this._viewLoadedPromise, fragment.getViewPromise()]).then(function () { + return fragment.callOnViewLoaded(); + }); + } + + if (this._state >= Context.STATE_RUNNING) { + fragment._viewLoadedPromise.then(function () { + if (_this4._state >= Context.STATE_RUNNING) { + fragment.onStart(); + } + }); + } + } + /** + * Entfernt ein Fragment. + * + * @param fragment + */ + + }, { + key: "removeFragment", + value: function removeFragment(fragment) { + var index = this._fragments.indexOf(fragment); + + if (index !== -1) { + this._fragments.splice(index, 1); + } + + fragment._viewPromise.then(function (res) { + return res.remove(); + }); + + this._fragments.push(fragment); + + if (this._state < Context.STATE_PAUSED) { + fragment.onPause(); + } + + if (this._state < Context.STATE_DESTROYING) { + fragment.onDestroy(); + } + } + /** + * Findet ein Element anhand eines Selectors + * + * Wenn all = true, werden alle gefundenen Elemente zurückgegeben + * + * Wenn asPromise = true, wird das Ergebnis als Promise zurückgegeben. Hier wird gewartet, bis das _viewPromise fullfilled ist + * Nutze das, um die View in onConstruct zu manipulieren. Evtl entfernen + * + * @param query + * @param all + * @param asPromise + * @returns {*} + */ + + }, { + key: "findBy", + value: function findBy(query, all, asPromise) { + all = Helper_1.Helper.nonNull(all, false); + asPromise = Helper_1.Helper.nonNull(asPromise, false); + + var getVal = function getVal(root) { + var res = null; + + if (all) { + res = root.querySelectorAll(query); + + if (root.matches(query)) { + res.push(root); + } + } else { + if (root.matches(query)) { + res = root; + } else { + res = root.querySelector(query); + } + } + + return res; + }; + + if (asPromise) { + return this._viewPromise.then(function (rootView) { + return getVal(rootView); + }); + } + + return getVal(this._view); + } + }, { + key: "find", + value: function find(selector) { + if (this._view.matches(selector)) { + return this._view; + } else { + return this._view.querySelector(selector); + } + } + }, { + key: "findAll", + value: function findAll(selector) { + var res = this._view.querySelectorAll(selector); + + if (this._view.matches(selector)) { + res.push(this._view); + } + + return res; + } + /** + * Setzt die PauseParameters + * @param pauseParameters + */ + + }, { + key: "setPauseParameters", + value: function setPauseParameters(pauseParameters) { + this._pauseParameters = pauseParameters; + } + /** + * Gibt das ViewPromise zurück + * @returns {*} + */ + + }, { + key: "getViewPromise", + value: function getViewPromise() { + return this._viewPromise; + } + }]); + + return Context; +}(); + +exports.Context = Context; +Context.STATE_CREATED = 0; +Context.STATE_CONSTRUCTED = 1; +Context.STATE_VIEW_LOADED = 2; +Context.STATE_RUNNING = 3; +Context.STATE_PAUSED = 4; +Context.STATE_DESTROYING = 5; +Context.STATE_DESTROYED = 6; + +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.User = void 0; + +var shared_1 = __webpack_require__(127); + +var cordova_sites_database_1 = __webpack_require__(19); + +var Role_1 = __webpack_require__(204); + +var User = /*#__PURE__*/function (_shared_1$EasySyncBas) { + _inherits(User, _shared_1$EasySyncBas); + + var _super = _createSuper(User); + + function User() { + var _this; + + _classCallCheck(this, User); + + _this = _super.call(this); + _this.username = null; + _this.email = null; + _this.password = null; + _this.roles = null; + _this.activated = false; + _this.blocked = false; + _this.salt = null; + return _this; + } + + _createClass(User, [{ + key: "toJSON", + value: function toJSON() { + return { + id: this.id, + username: this.username + }; + } + }], [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(User), "getColumnDefinitions", this).call(this); + + columns["username"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + unique: true + }; + columns["email"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + unique: true + }; + columns["password"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }; + columns["activated"] = cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN; + columns["blocked"] = cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN; + columns["salt"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }; + return columns; + } + }, { + key: "getRelationDefinitions", + value: function getRelationDefinitions() { + var relations = _get(_getPrototypeOf(User), "getRelationDefinitions", this).call(this); + + relations["roles"] = { + target: Role_1.Role.getSchemaName(), + type: "many-to-many", + joinTable: { + name: "userRole" + }, + cascade: false + }; + return relations; + } + }, { + key: "prepareSync", + value: function prepareSync(entities) { + var jsonEntities = []; + entities.forEach(function (entity) { + var jsonEntity = {}; + jsonEntity.id = entity.id; + jsonEntity.createdAt = new Date(); + jsonEntity.updatedAt = new Date(); + jsonEntity.username = ""; + jsonEntity.email = ""; + jsonEntity.password = ""; + jsonEntity.salt = ""; + jsonEntity.activated = 1; + jsonEntity.blocked = 1; + jsonEntity.version = 1; + jsonEntity.deleted = 0; + jsonEntities.push(jsonEntity); + }); + return jsonEntities; + } + }]); + + return User; +}(shared_1.EasySyncBaseModel); + +exports.User = User; +cordova_sites_database_1.BaseDatabase.addModel(User); + +/***/ }), +/* 113 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ContactSite\", function() { return ContactSite; });\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client/js/App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cordova_sites_dist_client_js_Form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cordova-sites/dist/client/js/Form */ \"./node_modules/cordova-sites/dist/client/js/Form.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Form__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Form__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var cordova_sites_dist_client_js_DataManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! cordova-sites/dist/client/js/DataManager */ \"./node_modules/cordova-sites/dist/client/js/DataManager.js\");\n/* harmony import */ var cordova_sites_dist_client_js_DataManager__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_DataManager__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var cordova_sites_dist_client_js_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! cordova-sites/dist/client/js/Toast/Toast */ \"./node_modules/cordova-sites/dist/client/js/Toast/Toast.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Toast_Toast__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! cordova-sites/dist/client/js/Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! cordova-sites/dist/client/js/Context/MenuSite */ \"./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_5__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst view = __webpack_require__(/*! ../../html/sites/contactSite.html */ \"./src/client/html/sites/contactSite.html\");\n\n\n\n\n\n\nclass ContactSite extends cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_5__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n }\n onViewLoaded() {\n let res = super.onViewLoaded();\n // @ts-ignore\n this.findBy(\"#contactText\").appendChild(cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_4__[\"Translator\"].makePersistentTranslation(\"contact text\", ['wordrotator@silas.link']));\n new cordova_sites_dist_client_js_Form__WEBPACK_IMPORTED_MODULE_1__[\"Form\"](this.findBy(\"#contact-form\"), (values) => __awaiter(this, void 0, void 0, function* () {\n let result = yield cordova_sites_dist_client_js_DataManager__WEBPACK_IMPORTED_MODULE_2__[\"DataManager\"].send(\"contact\", values);\n if (result.success) {\n new cordova_sites_dist_client_js_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__[\"Toast\"](\"the message was sent\").show();\n this.finish();\n }\n else {\n if (result) {\n new cordova_sites_dist_client_js_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__[\"Toast\"](result.message).show();\n }\n else {\n new cordova_sites_dist_client_js_Toast_Toast__WEBPACK_IMPORTED_MODULE_3__[\"Toast\"](\"Es ist ein Fehler aufgetreten...\").show();\n }\n }\n }));\n return res;\n }\n}\ncordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__[\"App\"].addInitialization((app) => {\n app.addDeepLink(\"contact\", ContactSite);\n});\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/ContactSite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EntityNotFoundError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47); + + +/** + * Thrown when no result could be found in methods which are not allowed to return undefined or an empty set. + */ +var EntityNotFoundError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(EntityNotFoundError, _super); + function EntityNotFoundError(entityClass, criteria) { + var _this = _super.call(this) || this; + _this.name = "EntityNotFound"; + Object.setPrototypeOf(_this, EntityNotFoundError.prototype); + var targetName; + if (entityClass instanceof _index__WEBPACK_IMPORTED_MODULE_1__["EntitySchema"]) { + targetName = entityClass.options.name; + } + else if (typeof entityClass === "function") { + targetName = entityClass.name; + } + else if (typeof entityClass === "object" && "name" in entityClass) { + targetName = entityClass.name; + } + else { + targetName = entityClass; + } + var criteriaString = _this.stringifyCriteria(criteria); + _this.message = "Could not find any entity of type \"" + targetName + "\" matching: " + criteriaString; + return _this; + } + EntityNotFoundError.prototype.stringifyCriteria = function (criteria) { + try { + return JSON.stringify(criteria, null, 4); + } + catch (e) { } + return "" + criteria; + }; + return EntityNotFoundError; +}(Error)); + + +//# sourceMappingURL=EntityNotFoundError.js.map + /***/ }), - -/***/ "./src/client/js/Sites/CreditsSite.ts": -/*!********************************************!*\ - !*** ./src/client/js/Sites/CreditsSite.ts ***! - \********************************************/ -/*! exports provided: CreditsSite */ +/* 114 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CreditsSite\", function() { return CreditsSite; });\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client/js/App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1__);\nconst view = __webpack_require__(/*! ../../html/sites/credits.html */ \"./src/client/html/sites/credits.html\");\n\n\nclass CreditsSite extends cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n }\n}\ncordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__[\"App\"].addInitialization(app => {\n app.addDeepLink(\"credits\", CreditsSite);\n});\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/CreditsSite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EntityColumnNotFound; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * + */ +var EntityColumnNotFound = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(EntityColumnNotFound, _super); + function EntityColumnNotFound(propertyPath) { + var _this = _super.call(this) || this; + _this.name = "EntityColumnNotFound"; + Object.setPrototypeOf(_this, EntityColumnNotFound.prototype); + _this.message = "No entity column \"" + propertyPath + "\" was found."; + return _this; + } + return EntityColumnNotFound; +}(Error)); + + +//# sourceMappingURL=EntityColumnNotFound.js.map + /***/ }), - -/***/ "./src/client/js/Sites/EndSite.ts": -/*!****************************************!*\ - !*** ./src/client/js/Sites/EndSite.ts ***! - \****************************************/ -/*! exports provided: EndSite */ +/* 115 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EndSite\", function() { return EndSite; });\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__);\nconst view = __webpack_require__(/*! ../../html/sites/end.html */ \"./src/client/html/sites/end.html\");\n\nclass EndSite extends cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/EndSite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UpdateResult; }); +/** + * Result object returned by UpdateQueryBuilder execution. + */ +var UpdateResult = /** @class */ (function () { + function UpdateResult() { + /** + * Contains inserted entity id. + * Has entity-like structure (not just column database name and values). + */ + // identifier: ObjectLiteral[] = []; + /** + * Generated values returned by a database. + * Has entity-like structure (not just column database name and values). + */ + this.generatedMaps = []; + } + return UpdateResult; +}()); + + +//# sourceMappingURL=UpdateResult.js.map + /***/ }), - -/***/ "./src/client/js/Sites/ImpressumSite.ts": -/*!**********************************************!*\ - !*** ./src/client/js/Sites/ImpressumSite.ts ***! - \**********************************************/ -/*! exports provided: ImpressumSite */ +/* 116 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImpressumSite\", function() { return ImpressumSite; });\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client/js/App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1__);\nconst view = __webpack_require__(/*! ../../html/sites/impressum.html */ \"./src/client/html/sites/impressum.html\");\n\n\nclass ImpressumSite extends cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_1__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n }\n}\ncordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__[\"App\"].addInitialization(app => {\n app.addDeepLink(\"impressum\", ImpressumSite);\n});\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/ImpressumSite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return LimitOnUpdateNotSupportedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when user tries to build an UPDATE query with LIMIT but the database does not support it. +*/ +var LimitOnUpdateNotSupportedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(LimitOnUpdateNotSupportedError, _super); + function LimitOnUpdateNotSupportedError() { + var _this = _super.call(this) || this; + _this.name = "LimitOnUpdateNotSupportedError"; + Object.setPrototypeOf(_this, LimitOnUpdateNotSupportedError.prototype); + _this.message = "Your database does not support LIMIT on UPDATE statements."; + return _this; + } + return LimitOnUpdateNotSupportedError; +}(Error)); + + +//# sourceMappingURL=LimitOnUpdateNotSupportedError.js.map + /***/ }), - -/***/ "./src/client/js/Sites/LevelSite.ts": -/*!******************************************!*\ - !*** ./src/client/js/Sites/LevelSite.ts ***! - \******************************************/ -/*! exports provided: LevelSite */ +/* 117 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelSite\", function() { return LevelSite; });\n/* harmony import */ var _wordrotator_Segment_TemplateContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../wordrotator/Segment/TemplateContainer */ \"./src/client/js/wordrotator/Segment/TemplateContainer.js\");\n/* harmony import */ var _wordrotator_Level_LevelHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../wordrotator/Level/LevelHelper */ \"./src/client/js/wordrotator/Level/LevelHelper.ts\");\n/* harmony import */ var _EndSite__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EndSite */ \"./src/client/js/Sites/EndSite.ts\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../shared/model/LevelData */ \"./src/shared/model/LevelData.ts\");\n/* harmony import */ var _model_LevelPlayed__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../model/LevelPlayed */ \"./src/client/js/model/LevelPlayed.ts\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! cordova-sites/dist/client/js/Sound/SoundManager */ \"./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! cordova-sites/dist/client/js/Context/MenuSite */ \"./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_9__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst helpIcon = __webpack_require__(/*! ../../img/help.png */ \"./src/client/img/help.png\").default;\nconst view = __webpack_require__(/*! ../../html/sites/level.html */ \"./src/client/html/sites/level.html\");\nconst coinSound = __webpack_require__(/*! ../../sound/single_coin_fall_on_concrete_.mp3 */ \"./src/client/sound/single_coin_fall_on_concrete_.mp3\").default;\n\n\n\n\n\n\n\n\n\n\nclass LevelSite extends cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_9__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n // this.getNavbarFragment().setBackgroundImage(null);\n }\n onCreateMenu(navbar) {\n const _super = Object.create(null, {\n onCreateMenu: { get: () => super.onCreateMenu }\n });\n return __awaiter(this, void 0, void 0, function* () {\n _super.onCreateMenu.call(this, navbar);\n let coinAction = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"MenuAction\"](js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coins\"), \"0\"), () => {\n }, cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"MenuAction\"].SHOW_ALWAYS, 900);\n coinAction._shouldTranslate = false;\n coinAction.setLiClass(\"coin-counter img\");\n navbar.addAction(coinAction);\n this.coinAction = coinAction;\n let levelCounterAction = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"MenuAction\"](js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(this.levelCounter, \"1\"), () => {\n }, cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"MenuAction\"].SHOW_ALWAYS, 900);\n levelCounterAction._shouldTranslate = false;\n levelCounterAction.setLiClass(\"level-counter\");\n navbar.addAction(levelCounterAction);\n this.levelCounterAction = levelCounterAction;\n let helpAction = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"MenuAction\"](\"\", () => {\n this.help();\n }, cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"MenuAction\"].SHOW_ALWAYS, 900);\n helpAction._shouldTranslate = false;\n helpAction._icon = helpIcon;\n helpAction.setLiClass(\"help-action show-while-playing\");\n navbar.addAction(helpAction);\n return navbar;\n });\n }\n onConstruct(args) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.levelCounter = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"levelCounter\"), 1);\n // this.levelCounter = 9999;\n this.levelScaler = () => {\n };\n this.wonParams = {\n aborted: false,\n coinCounterTimer: null,\n };\n this.coinPromise = Promise.resolve();\n let soundManager = cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].getInstance();\n soundManager.set({\n audio: coinSound,\n muted: ((yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"play-sound\", \"1\")) !== \"1\"),\n volume: 0.7\n }, cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.SOUND);\n soundManager.resume(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.MUSIC);\n return _super.onConstruct.call(this, args);\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n let leafSegmentTemplate = this.findBy(\"#segment-leaf-template\");\n let parentSegmentTemplate = this.findBy(\"#segment-parent-template\");\n let rowSegmentTemplate = this.findBy(\"#segment-row-template\");\n let triangleTemplate = this.findBy(\"#segment-triangle-template\");\n let columnTemplate = this.findBy(\"#segment-column-template\");\n leafSegmentTemplate.removeAttribute(\"id\");\n parentSegmentTemplate.removeAttribute(\"id\");\n rowSegmentTemplate.removeAttribute(\"id\");\n triangleTemplate.removeAttribute(\"id\");\n columnTemplate.removeAttribute(\"id\");\n leafSegmentTemplate.remove();\n parentSegmentTemplate.remove();\n rowSegmentTemplate.remove();\n triangleTemplate.remove();\n columnTemplate.remove();\n let continueButton = this.findBy(\"#continue-button\");\n continueButton.addEventListener(\"click\", () => {\n this.nextLevel();\n });\n let wonText = this.findBy(\"#won-text\");\n let scaleHelper = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"ScaleHelper\"]();\n this.continueButtonScaler = yield scaleHelper.scaleToFull(continueButton, continueButton.parentElement, false, true, 2);\n this.wonTextScaler = yield scaleHelper.scaleToFull(wonText, wonText.parentElement, false, false, 2, null, 5);\n this.wonText = wonText;\n this.wonText.style.fontSize = \"0\";\n this.templateContainer = new _wordrotator_Segment_TemplateContainer__WEBPACK_IMPORTED_MODULE_0__[\"TemplateContainer\"](leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate);\n this.coinTemplate = this.findBy(\"#coin-template\");\n this.coinContainer = this.findBy(\"#coin-container\");\n this.coinTemplate.id = null;\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_7__[\"ViewHelper\"].removeAllChildren(this.coinContainer);\n // this.findBy(\"#help-button\").addEventListener(\"click\", () => {\n // this.help();\n // });\n yield this.loadLastLevel();\n return res;\n });\n }\n loadLastLevel() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n let currentLevelInfo = yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"currentLevel\");\n if (js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].isNotNull(currentLevelInfo)) {\n currentLevelInfo = JSON.parse(currentLevelInfo);\n let levelData = yield _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_5__[\"LevelData\"].findById(currentLevelInfo[\"id\"]);\n if (js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].isNull(levelData)) {\n return this.nextLevel();\n }\n let level = _wordrotator_Level_LevelHelper__WEBPACK_IMPORTED_MODULE_1__[\"LevelHelper\"].inflateLevel(levelData, this.templateContainer);\n level.setStartRotations(currentLevelInfo[\"rotations\"]);\n level.getWonPromise().then(() => {\n this.levelWon(level);\n });\n level.createSegments();\n level.setLocks(currentLevelInfo[\"locks\"]);\n level.getRootSegment()._updateElement();\n level.saveAsCurrentLevel();\n let levelSegment = this.findBy(\"#level\");\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_7__[\"ViewHelper\"].removeAllChildren(levelSegment).appendChild(level.getRootSegment().getElement());\n let scaleHelper = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"ScaleHelper\"]();\n this.levelScaler = yield scaleHelper.scaleTo(1, levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0);\n this.level = level;\n cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"Matomo\"].push([\"trackEvent\", \"LevelSite\", \"LoadLastLevel\"]);\n this.level.checkHasWon();\n return;\n }\n }\n catch (e) {\n console.error(e);\n }\n return this.nextLevel();\n });\n }\n startEndSite() {\n this.startSite(_EndSite__WEBPACK_IMPORTED_MODULE_2__[\"EndSite\"]);\n this.finish();\n }\n updateLevelCounter() {\n this.levelCounterAction.setName(this.levelCounter);\n if (this.levelCounter >= 10 && this.levelCounter <= 99) {\n this.levelCounterAction.setLiClass(\"num-10 level-counter\");\n }\n else if (this.levelCounter >= 100 && this.levelCounter <= 999) {\n this.levelCounterAction.setLiClass(\"num-100 level-counter\");\n }\n else if (this.levelCounter >= 1000) {\n this.levelCounterAction.setLiClass(\"num-1000 level-counter\");\n }\n else {\n this.levelCounterAction.setLiClass(\"level-counter\");\n }\n }\n nextLevel() {\n return __awaiter(this, void 0, void 0, function* () {\n this.showLoadingSymbol();\n try {\n let levelData = yield _model_LevelPlayed__WEBPACK_IMPORTED_MODULE_6__[\"LevelPlayed\"].getNextLevelData(LevelSite.RENDERER_TYPES);\n if (js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].isNull(levelData)) {\n this.startEndSite();\n return;\n }\n const level = _wordrotator_Level_LevelHelper__WEBPACK_IMPORTED_MODULE_1__[\"LevelHelper\"].inflateLevel(levelData, this.templateContainer);\n //Waiting for Level to be done\n if (this.level && level.id === this.level.id) {\n console.log(\"Level is the same as before! reload!\");\n yield new Promise((resolve) => setTimeout(resolve, 50));\n // return;\n debugger;\n return this.nextLevel();\n }\n level.getWonPromise().then(() => __awaiter(this, void 0, void 0, function* () {\n yield this.levelWon(level);\n }));\n level.createSegments();\n level.getRootSegment()._updateElement();\n level.saveAsCurrentLevel();\n let levelSegment = this.findBy(\"#level\");\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_7__[\"ViewHelper\"].removeAllChildren(levelSegment).appendChild(level.getRootSegment().getElement());\n this._view.classList.remove('won');\n this.wonText.style.fontSize = \"0\";\n this.removeLoadingSymbol();\n let scaleHelper = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"ScaleHelper\"]();\n this.levelScaler = yield scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0);\n this.level = level;\n this.updateLevelCounter();\n this.coinAction.setName(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coins\"), \"0\"));\n // this.coinAction.redraw();\n this.wonParams.aborted = true;\n clearTimeout(this.wonParams.coinCounterTimer);\n cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"Matomo\"].push([\"trackEvent\", \"LevelSite\", \"NextLevel\", \"Level Number Normal\", this.levelCounter]);\n this.level.checkHasWon();\n return this.tutorial();\n }\n catch (e) {\n console.log(\"Fehler!\");\n console.error(e);\n this.startEndSite();\n }\n });\n }\n onStart(args) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.setTitle(\"WR\");\n cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"Matomo\"].update(\"Level Sites\");\n let res = _super.onStart.call(this, args);\n if (this.levelCounterAction) {\n this.updateLevelCounter();\n }\n this.levelScaler();\n //TODO Sound\n let soundManager = cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].getInstance();\n soundManager.set({\n audio: coinSound,\n muted: ((yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"play-sound\", \"1\")) !== \"1\"),\n volume: 0.7\n }, cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.SOUND);\n yield this.tutorial();\n return res;\n });\n }\n levelWon(level) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const savePromise = _model_LevelPlayed__WEBPACK_IMPORTED_MODULE_6__[\"LevelPlayed\"].setPlayed(level.getLevelData());\n savePromise.then((r) => console.log(\"levelSaved!\", r));\n this.levelCounter++;\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"levelCounter\", this.levelCounter);\n //Todo richtiges Element aufrufen?\n this._view.classList.add('won');\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].remove(\"currentLevel\");\n let continueButton = this.findBy(\"#continue-button\");\n continueButton.style.transition = \"none\";\n continueButton.style.opacity = 0;\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_7__[\"ViewHelper\"].removeAllChildren(this.coinContainer);\n let coinsPerLevel = yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coinsPerLevel\", 5);\n let coinsBefore = 0;\n let soundManager = cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].getInstance();\n let audioOptions = soundManager.get(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.SOUND);\n this.coinPromise = this.coinPromise.then(() => __awaiter(this, void 0, void 0, function* () {\n coinsBefore = parseInt(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coins\"), \"0\"));\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"coins\", coinsBefore + parseInt(coinsPerLevel));\n })).then(() => __awaiter(this, void 0, void 0, function* () {\n return Promise.all([new Promise((r) => {\n setTimeout(() => {\n //TODO animationen einbauen\n continueButton.style.opacity = 1;\n r();\n }, 500);\n }), audioOptions.loadedPromise.catch(e => {\n console.error(e);\n })]);\n }));\n this.wonParams.aborted = false;\n for (let i = 0; i < coinsPerLevel; i++) {\n let coinElem = this.coinTemplate.cloneNode(true);\n this.coinContainer.appendChild(coinElem);\n this.coinPromise = this.coinPromise.then(() => {\n return new Promise(r => {\n let timeout = 350;\n if (!this.wonParams.aborted) {\n //TODO animationen einbauen\n coinElem.style.opacity = \"1\";\n soundManager.play(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_8__[\"SoundManager\"].CHANNELS.SOUND);\n this.wonParams.coinCounterTimer = setTimeout(() => {\n if (!this.wonParams.aborted) {\n this.coinAction.setName(++coinsBefore);\n }\n }, timeout / 2);\n }\n else {\n r();\n }\n //Always do the next promise for garbage collection\n setTimeout(r, timeout);\n });\n });\n }\n this.coinPromise = this.coinPromise.catch((e) => {\n console.error(e);\n });\n this.wonTextScaler();\n this.continueButtonScaler();\n this.levelScaler();\n cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"Matomo\"].push([\"trackEvent\", \"LevelSite\", \"LevelWon\", \"Coins\", parseInt(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coins\"), \"0\"))]);\n let leafs = level.getLeafSegments();\n leafs.forEach((leaf, i) => {\n let elem = leaf.getElement();\n elem.style.animationDelay = i * 50 + \"ms\";\n elem.classList.add(\"jump-animation\");\n });\n yield savePromise;\n }\n catch (e) {\n console.error(e);\n }\n });\n }\n help() {\n return __awaiter(this, void 0, void 0, function* () {\n let cost = yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"costForHelp\", 25);\n let currentCoins = parseInt(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coins\"), 0));\n if (currentCoins >= cost) {\n currentCoins -= cost;\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"coins\", currentCoins);\n this.coinAction.setName(currentCoins);\n let rotatables = this.level.getRotatableSegments();\n rotatables = rotatables.filter((segment) => {\n return (!segment.isSolved(false));\n });\n let index = Math.floor(Math.random() * rotatables.length);\n let segmentToHelp = rotatables[index];\n while (segmentToHelp.rotation !== 0) {\n segmentToHelp.rotate();\n }\n segmentToHelp.setIsRotatable(false);\n this.level.saveAsCurrentLevel();\n // Matomo.push([\"trackEvent\", \"LevelSite\", \"Help\", \"Coins\", parseInt(Helper.nonNull(localStorage.getItem(\"coins\"), \"0\"))]);\n }\n else {\n new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"Toast\"](\"not-enough-coins\").show();\n // Matomo.push([\"trackEvent\", \"LevelSite\", \"Help\", \"Not enough Coins\", parseInt(Helper.nonNull(localStorage.getItem(\"coins\"), \"0\"))]);\n }\n });\n }\n tutorial() {\n return __awaiter(this, void 0, void 0, function* () {\n const tutorialScale = 0.01;\n if (this.level.id === LevelSite.TUTORIAL.FIRST_LEVEL) {\n let currentStep = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"tutorial-step\"), \"1\");\n let scaleHelper = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"ScaleHelper\"]();\n this._view.classList.add(\"tutorial\");\n this._view.classList.add(\"step-\" + currentStep);\n switch (currentStep) {\n case \"1\": {\n this.level.setSegmentClickedListener(() => __awaiter(this, void 0, void 0, function* () {\n this._view.classList.remove(\"step-1\");\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"tutorial-step\", \"2\");\n this.tutorial();\n }));\n // let textElem = this.findBy(\".tutorial-text .step-1\");\n yield this.levelScaler();\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 2, 2);\n break;\n }\n case \"2\": {\n this.level.setSegmentClickedListener(() => {\n });\n this.level.getWonPromise().then(() => __awaiter(this, void 0, void 0, function* () {\n this._view.classList.remove(\"tutorial\");\n this._view.classList.remove(\"step-2\");\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].remove(\"tutorial-step\");\n this.coinPromise = this.coinPromise.then(() => __awaiter(this, void 0, void 0, function* () {\n new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"Toast\"](\"extra-coins-after-first-level\").show();\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"coins\", parseInt(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coins\"), \"0\")) + 50);\n this.coinAction.setName(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"coins\"), \"0\"));\n // this.coinAction.redraw();\n }));\n }));\n // let textElem = this.findBy(\".tutorial-text .step-2\");\n yield this.levelScaler();\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 1, 2);\n break;\n }\n default: {\n this._view.classList.remove(\"tutorial\");\n }\n }\n }\n else if (this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL) {\n let currentStep = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"tutorial-step\"), \"3\");\n switch (currentStep) {\n case \"3\": {\n let scaleHelper = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"ScaleHelper\"]();\n this._view.classList.add(\"tutorial\");\n this._view.classList.add(\"step-\" + currentStep);\n let eventListener = () => __awaiter(this, void 0, void 0, function* () {\n this._view.classList.remove(\"tutorial\");\n this._view.classList.remove(\"step-3\");\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"tutorial-step\", \"4\");\n // this.findBy(\"#help-button\").removeEventListener(\"click\", eventListener);\n this.levelScaler();\n });\n this.findBy(\".help-action\").addEventListener(\"click\", eventListener);\n // let textElem = this.findBy(\".tutorial-text .step-3\");\n yield this.levelScaler();\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 1, 2);\n break;\n }\n default: {\n this._view.classList.remove(\"tutorial\");\n }\n }\n }\n else if (this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL) {\n let currentStep = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_4__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].getItem(\"tutorial-step\"), \"4\");\n switch (currentStep) {\n case \"4\": {\n let scaleHelper = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"ScaleHelper\"]();\n this._view.classList.add(\"tutorial\");\n this._view.classList.add(\"step-\" + currentStep);\n let rotatableSegments = this.level.getRotatableSegments();\n let firstSegment = rotatableSegments[2];\n let pointer = this.findBy(\"#tutorial-pointer\");\n pointer.remove();\n firstSegment.element.appendChild(pointer);\n this.level.setSegmentClickedListener((segment) => __awaiter(this, void 0, void 0, function* () {\n if (firstSegment === segment) {\n this._view.classList.remove(\"tutorial\");\n this._view.classList.remove(\"step-4\");\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"tutorial-step\", \"5\");\n this.levelScaler();\n }\n }));\n // let textElem = this.findBy(\".tutorial-text .step-4\");\n yield this.levelScaler();\n // debugger;\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 1, 2);\n break;\n }\n default: {\n this._view.classList.remove(\"tutorial\");\n }\n }\n }\n });\n }\n}\nLevelSite.RENDERER_TYPES = [20, 40, 60, 80, 81, 82, 83, 100, 110, 111, 112, 120, 140, 160];\nLevelSite.TUTORIAL = {\n FIRST_LEVEL: 67,\n SECOND_LEVEL: 15,\n BIG_SEGMENT_LEVEL: 1921\n};\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/LevelSite.ts?"); +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, "SelectQueryBuilder", function() { return /* binding */ SelectQueryBuilder_SelectQueryBuilder; }); + +// EXTERNAL MODULE: ./node_modules/typeorm/node_modules/tslib/tslib.es6.js +var tslib_es6 = __webpack_require__(0); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js +var BrowserDisabledDriversDummy = __webpack_require__(1); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +var RawSqlResultsToEntityTransformer = __webpack_require__(286); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js +var PessimisticLockTransactionRequiredError = __webpack_require__(152); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js +var NoVersionOrUpdateDateColumnError = __webpack_require__(153); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js +var OptimisticLockVersionMismatchError = __webpack_require__(130); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js +var OptimisticLockCanNotBeUsedError = __webpack_require__(102); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/JoinAttribute.js +var JoinAttribute = __webpack_require__(162); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js +var RelationIdAttribute = __webpack_require__(118); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js +var RelationCountAttribute = __webpack_require__(119); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/DriverUtils.js +var DriverUtils = __webpack_require__(20); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/relation-id/RelationIdLoader.js + + +var RelationIdLoader_RelationIdLoader = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationIdLoader(connection, queryRunner, relationIdAttributes) { + this.connection = connection; + this.queryRunner = queryRunner; + this.relationIdAttributes = relationIdAttributes; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + RelationIdLoader.prototype.load = function (rawEntities) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var promises; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + promises = this.relationIdAttributes.map(function (relationIdAttr) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var duplicates_1, results, relation_1, joinColumns_1, table, tableName, tableAlias_1, duplicates_2, parameters_1, condition, qb_1, results, relation, joinColumns_2, inverseJoinColumns_1, junctionAlias_1, inverseSideTableName, inverseSideTableAlias_1, junctionTableName, mappedColumns, parameters_2, duplicates_3, joinColumnConditions, inverseJoinColumnCondition_1, condition, qb_2, results; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (!(relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner)) return [3 /*break*/, 1]; + // example: Post and Tag + // loadRelationIdAndMap("post.tagId", "post.tag") + // we expect it to load id of tag + if (relationIdAttr.queryBuilderFactory) + throw new Error("Additional condition can not be used with ManyToOne or OneToOne owner relations."); + duplicates_1 = []; + results = rawEntities.map(function (rawEntity) { + var result = {}; + var duplicateParts = []; + relationIdAttr.relation.joinColumns.forEach(function (joinColumn) { + result[joinColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn); + var duplicatePart = joinColumn.databaseName + ":" + result[joinColumn.databaseName]; + if (duplicateParts.indexOf(duplicatePart) === -1) { + duplicateParts.push(duplicatePart); + } + }); + relationIdAttr.relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) { + result[primaryColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn); + var duplicatePart = primaryColumn.databaseName + ":" + result[primaryColumn.databaseName]; + if (duplicateParts.indexOf(duplicatePart) === -1) { + duplicateParts.push(duplicatePart); + } + }); + duplicateParts.sort(); + var duplicate = duplicateParts.join("::"); + if (duplicates_1.indexOf(duplicate) !== -1) { + return null; + } + duplicates_1.push(duplicate); + return result; + }).filter(function (v) { return v; }); + return [2 /*return*/, { + relationIdAttribute: relationIdAttr, + results: results + }]; + case 1: + if (!(relationIdAttr.relation.isOneToMany || relationIdAttr.relation.isOneToOneNotOwner)) return [3 /*break*/, 3]; + relation_1 = relationIdAttr.relation; + joinColumns_1 = relation_1.isOwning ? relation_1.joinColumns : relation_1.inverseRelation.joinColumns; + table = relation_1.inverseEntityMetadata.target; + tableName = relation_1.inverseEntityMetadata.tableName; + tableAlias_1 = relationIdAttr.alias || tableName; + duplicates_2 = []; + parameters_1 = {}; + condition = rawEntities.map(function (rawEntity, index) { + var duplicateParts = []; + var parameterParts = {}; + var queryPart = joinColumns_1.map(function (joinColumn) { + var parameterName = joinColumn.databaseName + index; + var parameterValue = rawEntity[DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn.databaseName)]; + var duplicatePart = tableAlias_1 + ":" + joinColumn.propertyPath + ":" + parameterValue; + if (duplicateParts.indexOf(duplicatePart) !== -1) { + return ""; + } + duplicateParts.push(duplicatePart); + parameterParts[parameterName] = parameterValue; + return tableAlias_1 + "." + joinColumn.propertyPath + " = :" + parameterName; + }).filter(function (v) { return v; }).join(" AND "); + duplicateParts.sort(); + var duplicate = duplicateParts.join("::"); + if (duplicates_2.indexOf(duplicate) !== -1) { + return ""; + } + duplicates_2.push(duplicate); + Object.assign(parameters_1, parameterParts); + return queryPart; + }).filter(function (v) { return v; }).map(function (condition) { return "(" + condition + ")"; }) + .join(" OR "); + // ensure we won't perform redundant queries for joined data which was not found in selection + // example: if post.category was not found in db then no need to execute query for category.imageIds + if (!condition) + return [2 /*return*/, { relationIdAttribute: relationIdAttr, results: [] }]; + qb_1 = this.connection.createQueryBuilder(this.queryRunner); + joinColumns_1.forEach(function (joinColumn) { + qb_1.addSelect(tableAlias_1 + "." + joinColumn.propertyPath, joinColumn.databaseName); + }); + relation_1.inverseRelation.entityMetadata.primaryColumns.forEach(function (primaryColumn) { + qb_1.addSelect(tableAlias_1 + "." + primaryColumn.propertyPath, primaryColumn.databaseName); + }); + qb_1.from(table, tableAlias_1) + .where("(" + condition + ")") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect + .setParameters(parameters_1); + // apply condition (custom query builder factory) + if (relationIdAttr.queryBuilderFactory) + relationIdAttr.queryBuilderFactory(qb_1); + return [4 /*yield*/, qb_1.getRawMany()]; + case 2: + results = _a.sent(); + results.forEach(function (result) { + joinColumns_1.forEach(function (column) { + result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn); + }); + relation_1.inverseRelation.entityMetadata.primaryColumns.forEach(function (column) { + result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column); + }); + }); + return [2 /*return*/, { + relationIdAttribute: relationIdAttr, + results: results + }]; + case 3: + relation = relationIdAttr.relation; + joinColumns_2 = relation.isOwning ? relation.joinColumns : relation.inverseRelation.inverseJoinColumns; + inverseJoinColumns_1 = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation.joinColumns; + junctionAlias_1 = relationIdAttr.junctionAlias; + inverseSideTableName = relationIdAttr.joinInverseSideMetadata.tableName; + inverseSideTableAlias_1 = relationIdAttr.alias || inverseSideTableName; + junctionTableName = relation.isOwning ? relation.junctionEntityMetadata.tableName : relation.inverseRelation.junctionEntityMetadata.tableName; + mappedColumns = rawEntities.map(function (rawEntity) { + return joinColumns_2.reduce(function (map, joinColumn) { + map[joinColumn.propertyPath] = rawEntity[DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn.databaseName)]; + return map; + }, {}); + }); + // ensure we won't perform redundant queries for joined data which was not found in selection + // example: if post.category was not found in db then no need to execute query for category.imageIds + if (mappedColumns.length === 0) + return [2 /*return*/, { relationIdAttribute: relationIdAttr, results: [] }]; + parameters_2 = {}; + duplicates_3 = []; + joinColumnConditions = mappedColumns.map(function (mappedColumn, index) { + var duplicateParts = []; + var parameterParts = {}; + var queryPart = Object.keys(mappedColumn).map(function (key) { + var parameterName = key + index; + var parameterValue = mappedColumn[key]; + var duplicatePart = junctionAlias_1 + ":" + key + ":" + parameterValue; + if (duplicateParts.indexOf(duplicatePart) !== -1) { + return ""; + } + duplicateParts.push(duplicatePart); + parameterParts[parameterName] = parameterValue; + return junctionAlias_1 + "." + key + " = :" + parameterName; + }).filter(function (s) { return s; }).join(" AND "); + duplicateParts.sort(); + var duplicate = duplicateParts.join("::"); + if (duplicates_3.indexOf(duplicate) !== -1) { + return ""; + } + duplicates_3.push(duplicate); + Object.assign(parameters_2, parameterParts); + return queryPart; + }).filter(function (s) { return s; }); + inverseJoinColumnCondition_1 = inverseJoinColumns_1.map(function (joinColumn) { + return junctionAlias_1 + "." + joinColumn.propertyPath + " = " + inverseSideTableAlias_1 + "." + joinColumn.referencedColumn.propertyPath; + }).join(" AND "); + condition = joinColumnConditions.map(function (condition) { + return "(" + condition + " AND " + inverseJoinColumnCondition_1 + ")"; + }).join(" OR "); + qb_2 = this.connection.createQueryBuilder(this.queryRunner); + inverseJoinColumns_1.forEach(function (joinColumn) { + qb_2.addSelect(junctionAlias_1 + "." + joinColumn.propertyPath, joinColumn.databaseName) + .addOrderBy(junctionAlias_1 + "." + joinColumn.propertyPath); + }); + joinColumns_2.forEach(function (joinColumn) { + qb_2.addSelect(junctionAlias_1 + "." + joinColumn.propertyPath, joinColumn.databaseName) + .addOrderBy(junctionAlias_1 + "." + joinColumn.propertyPath); + }); + qb_2.from(inverseSideTableName, inverseSideTableAlias_1) + .innerJoin(junctionTableName, junctionAlias_1, condition) + .setParameters(parameters_2); + // apply condition (custom query builder factory) + if (relationIdAttr.queryBuilderFactory) + relationIdAttr.queryBuilderFactory(qb_2); + return [4 /*yield*/, qb_2.getRawMany()]; + case 4: + results = _a.sent(); + results.forEach(function (result) { + Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(joinColumns_2)), Object(tslib_es6["e" /* __read */])(inverseJoinColumns_1)).forEach(function (column) { + result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn); + }); + }); + return [2 /*return*/, { + relationIdAttribute: relationIdAttr, + results: results + }]; + } + }); + }); }); + return [2 /*return*/, Promise.all(promises)]; + }); + }); + }; + return RelationIdLoader; +}()); + + +//# sourceMappingURL=RelationIdLoader.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js + +var RelationIdMetadataToAttributeTransformer_RelationIdMetadataToAttributeTransformer = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationIdMetadataToAttributeTransformer(expressionMap) { + this.expressionMap = expressionMap; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + RelationIdMetadataToAttributeTransformer.prototype.transform = function () { + // by example: + // post has relation id: + // @RelationId(post => post.categories) categoryIds + // category has relation id + // @RelationId(category => category.images) imageIds + // we load post and join category + // we expect post.categoryIds and post.category.imageIds to have relation ids + var _this = this; + // first create relation id attributes for all relation id metadatas of the main selected object (post from example) + if (this.expressionMap.mainAlias) { + this.expressionMap.mainAlias.metadata.relationIds.forEach(function (relationId) { + var attribute = _this.metadataToAttribute(_this.expressionMap.mainAlias.name, relationId); + _this.expressionMap.relationIdAttributes.push(attribute); + }); + } + // second create relation id attributes for all relation id metadatas of all joined objects (category from example) + this.expressionMap.joinAttributes.forEach(function (join) { + // ensure this join has a metadata, because relation id can only work for real orm entities + if (!join.metadata || join.metadata.isJunction) + return; + join.metadata.relationIds.forEach(function (relationId) { + var attribute = _this.metadataToAttribute(join.alias.name, relationId); + _this.expressionMap.relationIdAttributes.push(attribute); + }); + }); + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + RelationIdMetadataToAttributeTransformer.prototype.metadataToAttribute = function (parentAliasName, relationId) { + return new RelationIdAttribute["a" /* RelationIdAttribute */](this.expressionMap, { + relationName: parentAliasName + "." + relationId.relation.propertyName, + mapToProperty: parentAliasName + "." + relationId.propertyName, + alias: relationId.alias, + queryBuilderFactory: relationId.queryBuilderFactory + }); + }; + return RelationIdMetadataToAttributeTransformer; +}()); + + +//# sourceMappingURL=RelationIdMetadataToAttributeTransformer.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/relation-count/RelationCountLoader.js + +var RelationCountLoader_RelationCountLoader = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationCountLoader(connection, queryRunner, relationCountAttributes) { + this.connection = connection; + this.queryRunner = queryRunner; + this.relationCountAttributes = relationCountAttributes; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + RelationCountLoader.prototype.load = function (rawEntities) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var onlyUnique, promises; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + onlyUnique = function (value, index, self) { + return self.indexOf(value) === index; + }; + promises = this.relationCountAttributes.map(function (relationCountAttr) { return Object(tslib_es6["b" /* __awaiter */])(_this, void 0, void 0, function () { + var relation, inverseRelation, referenceColumnName_1, inverseSideTable, inverseSideTableName, inverseSideTableAlias, inverseSidePropertyName, referenceColumnValues, qb, joinTableColumnName_1, inverseJoinColumnName, firstJunctionColumn, secondJunctionColumn, referenceColumnValues, junctionAlias, inverseSideTableName, inverseSideTableAlias, junctionTableName, condition, qb; + var _a, _b; + return Object(tslib_es6["d" /* __generator */])(this, function (_c) { + switch (_c.label) { + case 0: + if (!relationCountAttr.relation.isOneToMany) return [3 /*break*/, 2]; + relation = relationCountAttr.relation; + inverseRelation = relation.inverseRelation; + referenceColumnName_1 = inverseRelation.joinColumns[0].referencedColumn.propertyName; + inverseSideTable = relation.inverseEntityMetadata.target; + inverseSideTableName = relation.inverseEntityMetadata.tableName; + inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName; + inverseSidePropertyName = inverseRelation.propertyName; + referenceColumnValues = rawEntities + .map(function (rawEntity) { return rawEntity[relationCountAttr.parentAlias + "_" + referenceColumnName_1]; }) + .filter(function (value) { return !!value; }); + referenceColumnValues = referenceColumnValues.filter(onlyUnique); + // ensure we won't perform redundant queries for joined data which was not found in selection + // example: if post.category was not found in db then no need to execute query for category.imageIds + if (referenceColumnValues.length === 0) + return [2 /*return*/, { relationCountAttribute: relationCountAttr, results: [] }]; + qb = this.connection.createQueryBuilder(this.queryRunner); + qb.select(inverseSideTableAlias + "." + inverseSidePropertyName, "parentId") + .addSelect("COUNT(*)", "cnt") + .from(inverseSideTable, inverseSideTableAlias) + .where(inverseSideTableAlias + "." + inverseSidePropertyName + " IN (:...ids)") + .addGroupBy(inverseSideTableAlias + "." + inverseSidePropertyName) + .setParameter("ids", referenceColumnValues); + // apply condition (custom query builder factory) + if (relationCountAttr.queryBuilderFactory) + relationCountAttr.queryBuilderFactory(qb); + _a = { + relationCountAttribute: relationCountAttr + }; + return [4 /*yield*/, qb.getRawMany()]; + case 1: return [2 /*return*/, (_a.results = _c.sent(), + _a)]; + case 2: + inverseJoinColumnName = void 0; + firstJunctionColumn = void 0; + secondJunctionColumn = void 0; + if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0]. + joinTableColumnName_1 = relationCountAttr.relation.joinColumns[0].referencedColumn.databaseName; + inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn.databaseName; + firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[0]; + secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[1]; + } + else { + joinTableColumnName_1 = relationCountAttr.relation.inverseRelation.inverseJoinColumns[0].referencedColumn.databaseName; + inverseJoinColumnName = relationCountAttr.relation.inverseRelation.joinColumns[0].referencedColumn.databaseName; + firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[1]; + secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[0]; + } + referenceColumnValues = rawEntities + .map(function (rawEntity) { return rawEntity[relationCountAttr.parentAlias + "_" + joinTableColumnName_1]; }) + .filter(function (value) { return !!value; }); + referenceColumnValues = referenceColumnValues.filter(onlyUnique); + // ensure we won't perform redundant queries for joined data which was not found in selection + // example: if post.category was not found in db then no need to execute query for category.imageIds + if (referenceColumnValues.length === 0) + return [2 /*return*/, { relationCountAttribute: relationCountAttr, results: [] }]; + junctionAlias = relationCountAttr.junctionAlias; + inverseSideTableName = relationCountAttr.joinInverseSideMetadata.tableName; + inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName; + junctionTableName = relationCountAttr.relation.junctionEntityMetadata.tableName; + condition = junctionAlias + "." + firstJunctionColumn.propertyName + " IN (" + referenceColumnValues.map(function (vals) { return isNaN(vals) ? "'" + vals + "'" : vals; }) + ")" + + " AND " + junctionAlias + "." + secondJunctionColumn.propertyName + " = " + inverseSideTableAlias + "." + inverseJoinColumnName; + qb = this.connection.createQueryBuilder(this.queryRunner); + qb.select(junctionAlias + "." + firstJunctionColumn.propertyName, "parentId") + .addSelect("COUNT(" + qb.escape(inverseSideTableAlias) + "." + qb.escape(inverseJoinColumnName) + ")", "cnt") + .from(inverseSideTableName, inverseSideTableAlias) + .innerJoin(junctionTableName, junctionAlias, condition) + .addGroupBy(junctionAlias + "." + firstJunctionColumn.propertyName); + // apply condition (custom query builder factory) + if (relationCountAttr.queryBuilderFactory) + relationCountAttr.queryBuilderFactory(qb); + _b = { + relationCountAttribute: relationCountAttr + }; + return [4 /*yield*/, qb.getRawMany()]; + case 3: return [2 /*return*/, (_b.results = _c.sent(), + _b)]; + } + }); + }); }); + return [2 /*return*/, Promise.all(promises)]; + }); + }); + }; + return RelationCountLoader; +}()); + + +//# sourceMappingURL=RelationCountLoader.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js + +var RelationCountMetadataToAttributeTransformer_RelationCountMetadataToAttributeTransformer = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationCountMetadataToAttributeTransformer(expressionMap) { + this.expressionMap = expressionMap; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + RelationCountMetadataToAttributeTransformer.prototype.transform = function () { + // by example: + // post has relation count: + // @RelationCount(post => post.categories) categoryCount + // category has relation count + // @RelationCount(category => category.images) imageCount + // we load post and join category + // we expect post.categoryCount and post.category.imageCount to have relation counts + var _this = this; + // first create relation count attributes for all relation count metadatas of the main selected object (post from example) + if (this.expressionMap.mainAlias) { + this.expressionMap.mainAlias.metadata.relationCounts.forEach(function (relationCount) { + var attribute = _this.metadataToAttribute(_this.expressionMap.mainAlias.name, relationCount); + _this.expressionMap.relationCountAttributes.push(attribute); + }); + } + // second create relation count attributes for all relation count metadatas of all joined objects (category from example) + this.expressionMap.joinAttributes.forEach(function (join) { + // ensure this join has a metadata, because relation count can only work for real orm entities + if (!join.metadata || join.metadata.isJunction) + return; + join.metadata.relationCounts.forEach(function (relationCount) { + var attribute = _this.metadataToAttribute(join.alias.name, relationCount); + _this.expressionMap.relationCountAttributes.push(attribute); + }); + }); + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + RelationCountMetadataToAttributeTransformer.prototype.metadataToAttribute = function (parentAliasName, relationCount) { + return new RelationCountAttribute["a" /* RelationCountAttribute */](this.expressionMap, { + relationName: parentAliasName + "." + relationCount.relation.propertyName, + mapToProperty: parentAliasName + "." + relationCount.propertyName, + alias: relationCount.alias, + queryBuilderFactory: relationCount.queryBuilderFactory + }); + }; + return RelationCountMetadataToAttributeTransformer; +}()); + + +//# sourceMappingURL=RelationCountMetadataToAttributeTransformer.js.map + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/QueryBuilder.js + 2 modules +var QueryBuilder = __webpack_require__(40); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js +var LockNotSupportedOnGivenDriverError = __webpack_require__(85); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js + 1 modules +var AbstractSqliteDriver = __webpack_require__(16); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js +var OffsetWithoutLimitNotSupportedError = __webpack_require__(159); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/subscriber/BroadcasterResult.js +var BroadcasterResult = __webpack_require__(8); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/util/ObjectUtils.js +var ObjectUtils = __webpack_require__(24); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/error/EntityNotFoundError.js +var EntityNotFoundError = __webpack_require__(113); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/** + * Allows to build complex sql queries in a fashion way and execute those queries. + */ +var SelectQueryBuilder_SelectQueryBuilder = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(SelectQueryBuilder, _super); + function SelectQueryBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + // ------------------------------------------------------------------------- + // Public Implemented Methods + // ------------------------------------------------------------------------- + /** + * Gets generated sql query without parameters being replaced. + */ + SelectQueryBuilder.prototype.getQuery = function () { + var sql = this.createComment(); + sql += this.createSelectExpression(); + sql += this.createJoinExpression(); + sql += this.createWhereExpression(); + sql += this.createGroupByExpression(); + sql += this.createHavingExpression(); + sql += this.createOrderByExpression(); + sql += this.createLimitOffsetExpression(); + sql += this.createLockExpression(); + sql = sql.trim(); + if (this.expressionMap.subQuery) + sql = "(" + sql + ")"; + return sql; + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Creates a subquery - query that can be used inside other queries. + */ + SelectQueryBuilder.prototype.subQuery = function () { + var qb = this.createQueryBuilder(); + qb.expressionMap.subQuery = true; + qb.expressionMap.parentQueryBuilder = this; + return qb; + }; + /** + * Creates SELECT query and selects given data. + * Replaces all previous selections if they exist. + */ + SelectQueryBuilder.prototype.select = function (selection, selectionAliasName) { + this.expressionMap.queryType = "select"; + if (Array.isArray(selection)) { + this.expressionMap.selects = selection.map(function (selection) { return ({ selection: selection }); }); + } + else if (selection instanceof Function) { + var subQueryBuilder = selection(this.subQuery()); + this.setParameters(subQueryBuilder.getParameters()); + this.expressionMap.selects.push({ selection: subQueryBuilder.getQuery(), aliasName: selectionAliasName }); + } + else if (selection) { + this.expressionMap.selects = [{ selection: selection, aliasName: selectionAliasName }]; + } + return this; + }; + /** + * Adds new selection to the SELECT query. + */ + SelectQueryBuilder.prototype.addSelect = function (selection, selectionAliasName) { + if (!selection) + return this; + if (Array.isArray(selection)) { + this.expressionMap.selects = this.expressionMap.selects.concat(selection.map(function (selection) { return ({ selection: selection }); })); + } + else if (selection instanceof Function) { + var subQueryBuilder = selection(this.subQuery()); + this.setParameters(subQueryBuilder.getParameters()); + this.expressionMap.selects.push({ selection: subQueryBuilder.getQuery(), aliasName: selectionAliasName }); + } + else if (selection) { + this.expressionMap.selects.push({ selection: selection, aliasName: selectionAliasName }); + } + return this; + }; + /** + * Sets whether the selection is DISTINCT. + */ + SelectQueryBuilder.prototype.distinct = function (distinct) { + if (distinct === void 0) { distinct = true; } + this.expressionMap.selectDistinct = distinct; + return this; + }; + /** + * Sets the distinct on clause for Postgres. + */ + SelectQueryBuilder.prototype.distinctOn = function (distinctOn) { + this.expressionMap.selectDistinctOn = distinctOn; + return this; + }; + /** + * Specifies FROM which entity's table select/update/delete will be executed. + * Also sets a main string alias of the selection data. + * Removes all previously set from-s. + */ + SelectQueryBuilder.prototype.from = function (entityTarget, aliasName) { + var mainAlias = this.createFromAlias(entityTarget, aliasName); + this.expressionMap.setMainAlias(mainAlias); + return this; + }; + /** + * Specifies FROM which entity's table select/update/delete will be executed. + * Also sets a main string alias of the selection data. + */ + SelectQueryBuilder.prototype.addFrom = function (entityTarget, aliasName) { + var alias = this.createFromAlias(entityTarget, aliasName); + if (!this.expressionMap.mainAlias) + this.expressionMap.setMainAlias(alias); + return this; + }; + /** + * INNER JOINs (without selection). + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.innerJoin = function (entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.join("INNER", entityOrProperty, alias, condition, parameters); + return this; + }; + /** + * LEFT JOINs (without selection). + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.leftJoin = function (entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.join("LEFT", entityOrProperty, alias, condition, parameters); + return this; + }; + /** + * INNER JOINs and adds all selection properties to SELECT. + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.innerJoinAndSelect = function (entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.addSelect(alias); + this.innerJoin(entityOrProperty, alias, condition, parameters); + return this; + }; + /** + * LEFT JOINs and adds all selection properties to SELECT. + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.leftJoinAndSelect = function (entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.addSelect(alias); + this.leftJoin(entityOrProperty, alias, condition, parameters); + return this; + }; + /** + * INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property. + * This is extremely useful when you want to select some data and map it to some virtual property. + * It will assume that there are multiple rows of selecting data, and mapped result will be an array. + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.innerJoinAndMapMany = function (mapToProperty, entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.addSelect(alias); + this.join("INNER", entityOrProperty, alias, condition, parameters, mapToProperty, true); + return this; + }; + /** + * INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property. + * This is extremely useful when you want to select some data and map it to some virtual property. + * It will assume that there is a single row of selecting data, and mapped result will be a single selected value. + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.innerJoinAndMapOne = function (mapToProperty, entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.addSelect(alias); + this.join("INNER", entityOrProperty, alias, condition, parameters, mapToProperty, false); + return this; + }; + /** + * LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property. + * This is extremely useful when you want to select some data and map it to some virtual property. + * It will assume that there are multiple rows of selecting data, and mapped result will be an array. + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.leftJoinAndMapMany = function (mapToProperty, entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.addSelect(alias); + this.join("LEFT", entityOrProperty, alias, condition, parameters, mapToProperty, true); + return this; + }; + /** + * LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property. + * This is extremely useful when you want to select some data and map it to some virtual property. + * It will assume that there is a single row of selecting data, and mapped result will be a single selected value. + * You also need to specify an alias of the joined data. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.leftJoinAndMapOne = function (mapToProperty, entityOrProperty, alias, condition, parameters) { + if (condition === void 0) { condition = ""; } + this.addSelect(alias); + this.join("LEFT", entityOrProperty, alias, condition, parameters, mapToProperty, false); + return this; + }; + /** + * LEFT JOINs relation id and maps it into some entity's property. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.loadRelationIdAndMap = function (mapToProperty, relationName, aliasNameOrOptions, queryBuilderFactory) { + var relationIdAttribute = new RelationIdAttribute["a" /* RelationIdAttribute */](this.expressionMap); + relationIdAttribute.mapToProperty = mapToProperty; + relationIdAttribute.relationName = relationName; + if (typeof aliasNameOrOptions === "string") + relationIdAttribute.alias = aliasNameOrOptions; + if (aliasNameOrOptions instanceof Object && aliasNameOrOptions.disableMixedMap) + relationIdAttribute.disableMixedMap = true; + relationIdAttribute.queryBuilderFactory = queryBuilderFactory; + this.expressionMap.relationIdAttributes.push(relationIdAttribute); + if (relationIdAttribute.relation.junctionEntityMetadata) { + this.expressionMap.createAlias({ + type: "other", + name: relationIdAttribute.junctionAlias, + metadata: relationIdAttribute.relation.junctionEntityMetadata + }); + } + return this; + }; + /** + * Counts number of entities of entity's relation and maps the value into some entity's property. + * Optionally, you can add condition and parameters used in condition. + */ + SelectQueryBuilder.prototype.loadRelationCountAndMap = function (mapToProperty, relationName, aliasName, queryBuilderFactory) { + var relationCountAttribute = new RelationCountAttribute["a" /* RelationCountAttribute */](this.expressionMap); + relationCountAttribute.mapToProperty = mapToProperty; + relationCountAttribute.relationName = relationName; + relationCountAttribute.alias = aliasName; + relationCountAttribute.queryBuilderFactory = queryBuilderFactory; + this.expressionMap.relationCountAttributes.push(relationCountAttribute); + this.expressionMap.createAlias({ + type: "other", + name: relationCountAttribute.junctionAlias + }); + if (relationCountAttribute.relation.junctionEntityMetadata) { + this.expressionMap.createAlias({ + type: "other", + name: relationCountAttribute.junctionAlias, + metadata: relationCountAttribute.relation.junctionEntityMetadata + }); + } + return this; + }; + /** + * Loads all relation ids for all relations of the selected entity. + * All relation ids will be mapped to relation property themself. + * If array of strings is given then loads only relation ids of the given properties. + */ + SelectQueryBuilder.prototype.loadAllRelationIds = function (options) { + var _this = this; + this.expressionMap.mainAlias.metadata.relations.forEach(function (relation) { + if (options !== undefined && options.relations !== undefined && options.relations.indexOf(relation.propertyPath) === -1) + return; + _this.loadRelationIdAndMap(_this.expressionMap.mainAlias.name + "." + relation.propertyPath, _this.expressionMap.mainAlias.name + "." + relation.propertyPath, options); + }); + return this; + }; + /** + * Sets WHERE condition in the query builder. + * If you had previously WHERE expression defined, + * calling this function will override previously set WHERE conditions. + * Additionally you can add parameters used in where expression. + */ + SelectQueryBuilder.prototype.where = function (where, parameters) { + this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions + var condition = this.computeWhereParameter(where); + if (condition) + this.expressionMap.wheres = [{ type: "simple", condition: condition }]; + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + SelectQueryBuilder.prototype.andWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "and", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new OR WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + SelectQueryBuilder.prototype.orWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "or", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE with conditions for the given ids. + * + * Ids are mixed. + * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3]. + * If you have multiple primary keys you need to pass object with property names and values specified, + * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...] + */ + SelectQueryBuilder.prototype.whereInIds = function (ids) { + return this.where(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new AND WHERE with conditions for the given ids. + * + * Ids are mixed. + * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3]. + * If you have multiple primary keys you need to pass object with property names and values specified, + * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...] + */ + SelectQueryBuilder.prototype.andWhereInIds = function (ids) { + return this.andWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new OR WHERE with conditions for the given ids. + * + * Ids are mixed. + * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3]. + * If you have multiple primary keys you need to pass object with property names and values specified, + * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...] + */ + SelectQueryBuilder.prototype.orWhereInIds = function (ids) { + return this.orWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Sets HAVING condition in the query builder. + * If you had previously HAVING expression defined, + * calling this function will override previously set HAVING conditions. + * Additionally you can add parameters used in where expression. + */ + SelectQueryBuilder.prototype.having = function (having, parameters) { + this.expressionMap.havings.push({ type: "simple", condition: having }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND HAVING condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + SelectQueryBuilder.prototype.andHaving = function (having, parameters) { + this.expressionMap.havings.push({ type: "and", condition: having }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new OR HAVING condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + SelectQueryBuilder.prototype.orHaving = function (having, parameters) { + this.expressionMap.havings.push({ type: "or", condition: having }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Sets GROUP BY condition in the query builder. + * If you had previously GROUP BY expression defined, + * calling this function will override previously set GROUP BY conditions. + */ + SelectQueryBuilder.prototype.groupBy = function (groupBy) { + if (groupBy) { + this.expressionMap.groupBys = [groupBy]; + } + else { + this.expressionMap.groupBys = []; + } + return this; + }; + /** + * Adds GROUP BY condition in the query builder. + */ + SelectQueryBuilder.prototype.addGroupBy = function (groupBy) { + this.expressionMap.groupBys.push(groupBy); + return this; + }; + /** + * Sets ORDER BY condition in the query builder. + * If you had previously ORDER BY expression defined, + * calling this function will override previously set ORDER BY conditions. + */ + SelectQueryBuilder.prototype.orderBy = function (sort, order, nulls) { + var _a, _b; + if (order === void 0) { order = "ASC"; } + if (order !== undefined && order !== "ASC" && order !== "DESC") + throw new Error("SelectQueryBuilder.addOrderBy \"order\" can accept only \"ASC\" and \"DESC\" values."); + if (nulls !== undefined && nulls !== "NULLS FIRST" && nulls !== "NULLS LAST") + throw new Error("SelectQueryBuilder.addOrderBy \"nulls\" can accept only \"NULLS FIRST\" and \"NULLS LAST\" values."); + if (sort) { + if (sort instanceof Object) { + this.expressionMap.orderBys = sort; + } + else { + if (nulls) { + this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a); + } + else { + this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b); + } + } + } + else { + this.expressionMap.orderBys = {}; + } + return this; + }; + /** + * Adds ORDER BY condition in the query builder. + */ + SelectQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) { + if (order === void 0) { order = "ASC"; } + if (order !== undefined && order !== "ASC" && order !== "DESC") + throw new Error("SelectQueryBuilder.addOrderBy \"order\" can accept only \"ASC\" and \"DESC\" values."); + if (nulls !== undefined && nulls !== "NULLS FIRST" && nulls !== "NULLS LAST") + throw new Error("SelectQueryBuilder.addOrderBy \"nulls\" can accept only \"NULLS FIRST\" and \"NULLS LAST\" values."); + if (nulls) { + this.expressionMap.orderBys[sort] = { order: order, nulls: nulls }; + } + else { + this.expressionMap.orderBys[sort] = order; + } + return this; + }; + /** + * Set's LIMIT - maximum number of rows to be selected. + * NOTE that it may not work as you expect if you are using joins. + * If you want to implement pagination, and you are having join in your query, + * then use instead take method instead. + */ + SelectQueryBuilder.prototype.limit = function (limit) { + this.expressionMap.limit = this.normalizeNumber(limit); + if (this.expressionMap.limit !== undefined && isNaN(this.expressionMap.limit)) + throw new Error("Provided \"limit\" value is not a number. Please provide a numeric value."); + return this; + }; + /** + * Set's OFFSET - selection offset. + * NOTE that it may not work as you expect if you are using joins. + * If you want to implement pagination, and you are having join in your query, + * then use instead skip method instead. + */ + SelectQueryBuilder.prototype.offset = function (offset) { + this.expressionMap.offset = this.normalizeNumber(offset); + if (this.expressionMap.offset !== undefined && isNaN(this.expressionMap.offset)) + throw new Error("Provided \"offset\" value is not a number. Please provide a numeric value."); + return this; + }; + /** + * Sets maximal number of entities to take. + */ + SelectQueryBuilder.prototype.take = function (take) { + this.expressionMap.take = this.normalizeNumber(take); + if (this.expressionMap.take !== undefined && isNaN(this.expressionMap.take)) + throw new Error("Provided \"take\" value is not a number. Please provide a numeric value."); + return this; + }; + /** + * Sets number of entities to skip. + */ + SelectQueryBuilder.prototype.skip = function (skip) { + this.expressionMap.skip = this.normalizeNumber(skip); + if (this.expressionMap.skip !== undefined && isNaN(this.expressionMap.skip)) + throw new Error("Provided \"skip\" value is not a number. Please provide a numeric value."); + return this; + }; + /** + * Sets locking mode. + */ + SelectQueryBuilder.prototype.setLock = function (lockMode, lockVersion, lockTables) { + this.expressionMap.lockMode = lockMode; + this.expressionMap.lockVersion = lockVersion; + this.expressionMap.lockTables = lockTables; + return this; + }; + /** + * Disables the global condition of "non-deleted" for the entity with delete date columns. + */ + SelectQueryBuilder.prototype.withDeleted = function () { + this.expressionMap.withDeleted = true; + return this; + }; + /** + * Gets first raw result returned by execution of generated query builder sql. + */ + SelectQueryBuilder.prototype.getRawOne = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getRawMany()]; + case 1: return [2 /*return*/, (_a.sent())[0]]; + } + }); + }); + }; + /** + * Gets all raw results returned by execution of generated query builder sql. + */ + SelectQueryBuilder.prototype.getRawMany = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, transactionStartedByUs, results, error_1, rollbackError_1; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.expressionMap.lockMode === "optimistic") + throw new OptimisticLockCanNotBeUsedError["a" /* OptimisticLockCanNotBeUsedError */](); + this.expressionMap.queryEntity = false; + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _a.label = 1; + case 1: + _a.trys.push([1, 7, 12, 15]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _a.sent(); + transactionStartedByUs = true; + _a.label = 3; + case 3: return [4 /*yield*/, this.loadRawResults(queryRunner)]; + case 4: + results = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 6]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 5: + _a.sent(); + _a.label = 6; + case 6: return [2 /*return*/, results]; + case 7: + error_1 = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 11]; + _a.label = 8; + case 8: + _a.trys.push([8, 10, , 11]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 9: + _a.sent(); + return [3 /*break*/, 11]; + case 10: + rollbackError_1 = _a.sent(); + return [3 /*break*/, 11]; + case 11: throw error_1; + case 12: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14]; + return [4 /*yield*/, queryRunner.release()]; + case 13: + _a.sent(); + _a.label = 14; + case 14: return [7 /*endfinally*/]; + case 15: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes sql generated by query builder and returns object with raw results and entities created from them. + */ + SelectQueryBuilder.prototype.getRawAndEntities = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, transactionStartedByUs, results, error_2, rollbackError_2; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _a.label = 1; + case 1: + _a.trys.push([1, 7, 12, 15]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _a.sent(); + transactionStartedByUs = true; + _a.label = 3; + case 3: + this.expressionMap.queryEntity = true; + return [4 /*yield*/, this.executeEntitiesAndRawResults(queryRunner)]; + case 4: + results = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 6]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 5: + _a.sent(); + _a.label = 6; + case 6: return [2 /*return*/, results]; + case 7: + error_2 = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 11]; + _a.label = 8; + case 8: + _a.trys.push([8, 10, , 11]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 9: + _a.sent(); + return [3 /*break*/, 11]; + case 10: + rollbackError_2 = _a.sent(); + return [3 /*break*/, 11]; + case 11: throw error_2; + case 12: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14]; + return [4 /*yield*/, queryRunner.release()]; + case 13: + _a.sent(); + _a.label = 14; + case 14: return [7 /*endfinally*/]; + case 15: return [2 /*return*/]; + } + }); + }); + }; + /** + * Gets single entity returned by execution of generated query builder sql. + */ + SelectQueryBuilder.prototype.getOne = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var results, result, metadata, actualVersion, actualVersion; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getRawAndEntities()]; + case 1: + results = _a.sent(); + result = results.entities[0]; + if (result && this.expressionMap.lockMode === "optimistic" && this.expressionMap.lockVersion) { + metadata = this.expressionMap.mainAlias.metadata; + if (this.expressionMap.lockVersion instanceof Date) { + actualVersion = metadata.updateDateColumn.getEntityValue(result); + if (actualVersion.getTime() !== this.expressionMap.lockVersion.getTime()) + throw new OptimisticLockVersionMismatchError["a" /* OptimisticLockVersionMismatchError */](metadata.name, this.expressionMap.lockVersion, actualVersion); + } + else { + actualVersion = metadata.versionColumn.getEntityValue(result); + if (actualVersion !== this.expressionMap.lockVersion) + throw new OptimisticLockVersionMismatchError["a" /* OptimisticLockVersionMismatchError */](metadata.name, this.expressionMap.lockVersion, actualVersion); + } + } + return [2 /*return*/, result]; + } + }); + }); + }; + /** + * Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error. + */ + SelectQueryBuilder.prototype.getOneOrFail = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var entity; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getOne()]; + case 1: + entity = _a.sent(); + if (!entity) { + throw new EntityNotFoundError["a" /* EntityNotFoundError */](this.expressionMap.mainAlias.target, this); + } + return [2 /*return*/, entity]; + } + }); + }); + }; + /** + * Gets entities returned by execution of generated query builder sql. + */ + SelectQueryBuilder.prototype.getMany = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var results; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.expressionMap.lockMode === "optimistic") + throw new OptimisticLockCanNotBeUsedError["a" /* OptimisticLockCanNotBeUsedError */](); + return [4 /*yield*/, this.getRawAndEntities()]; + case 1: + results = _a.sent(); + return [2 /*return*/, results.entities]; + } + }); + }); + }; + /** + * Gets count - number of entities selected by sql generated by this query builder. + * Count excludes all limitations set by setFirstResult and setMaxResults methods call. + */ + SelectQueryBuilder.prototype.getCount = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, transactionStartedByUs, results, error_3, rollbackError_3; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.expressionMap.lockMode === "optimistic") + throw new OptimisticLockCanNotBeUsedError["a" /* OptimisticLockCanNotBeUsedError */](); + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _a.label = 1; + case 1: + _a.trys.push([1, 7, 12, 15]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _a.sent(); + transactionStartedByUs = true; + _a.label = 3; + case 3: + this.expressionMap.queryEntity = false; + return [4 /*yield*/, this.executeCountQuery(queryRunner)]; + case 4: + results = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 6]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 5: + _a.sent(); + _a.label = 6; + case 6: return [2 /*return*/, results]; + case 7: + error_3 = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 11]; + _a.label = 8; + case 8: + _a.trys.push([8, 10, , 11]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 9: + _a.sent(); + return [3 /*break*/, 11]; + case 10: + rollbackError_3 = _a.sent(); + return [3 /*break*/, 11]; + case 11: throw error_3; + case 12: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14]; + return [4 /*yield*/, queryRunner.release()]; + case 13: + _a.sent(); + _a.label = 14; + case 14: return [7 /*endfinally*/]; + case 15: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes built SQL query and returns entities and overall entities count (without limitation). + * This method is useful to build pagination. + */ + SelectQueryBuilder.prototype.getManyAndCount = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var queryRunner, transactionStartedByUs, entitiesAndRaw, count, results, error_4, rollbackError_4; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + if (this.expressionMap.lockMode === "optimistic") + throw new OptimisticLockCanNotBeUsedError["a" /* OptimisticLockCanNotBeUsedError */](); + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _a.label = 1; + case 1: + _a.trys.push([1, 8, 13, 16]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _a.sent(); + transactionStartedByUs = true; + _a.label = 3; + case 3: + this.expressionMap.queryEntity = true; + return [4 /*yield*/, this.executeEntitiesAndRawResults(queryRunner)]; + case 4: + entitiesAndRaw = _a.sent(); + this.expressionMap.queryEntity = false; + return [4 /*yield*/, this.executeCountQuery(queryRunner)]; + case 5: + count = _a.sent(); + results = [entitiesAndRaw.entities, count]; + if (!transactionStartedByUs) return [3 /*break*/, 7]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 6: + _a.sent(); + _a.label = 7; + case 7: return [2 /*return*/, results]; + case 8: + error_4 = _a.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 12]; + _a.label = 9; + case 9: + _a.trys.push([9, 11, , 12]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 10: + _a.sent(); + return [3 /*break*/, 12]; + case 11: + rollbackError_4 = _a.sent(); + return [3 /*break*/, 12]; + case 12: throw error_4; + case 13: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 15]; + return [4 /*yield*/, queryRunner.release()]; + case 14: + _a.sent(); + _a.label = 15; + case 15: return [7 /*endfinally*/]; + case 16: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes built SQL query and returns raw data stream. + */ + SelectQueryBuilder.prototype.stream = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a, sql, parameters, queryRunner, transactionStartedByUs, releaseFn, results, error_5, rollbackError_5; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + this.expressionMap.queryEntity = false; + _a = Object(tslib_es6["e" /* __read */])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1]; + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _b.label = 1; + case 1: + _b.trys.push([1, 6, , 11]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _b.sent(); + transactionStartedByUs = true; + _b.label = 3; + case 3: + releaseFn = function () { + if (queryRunner !== _this.queryRunner) // means we created our own query runner + return queryRunner.release(); + return; + }; + results = queryRunner.stream(sql, parameters, releaseFn, releaseFn); + if (!transactionStartedByUs) return [3 /*break*/, 5]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 4: + _b.sent(); + _b.label = 5; + case 5: return [2 /*return*/, results]; + case 6: + error_5 = _b.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 10]; + _b.label = 7; + case 7: + _b.trys.push([7, 9, , 10]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 8: + _b.sent(); + return [3 /*break*/, 10]; + case 9: + rollbackError_5 = _b.sent(); + return [3 /*break*/, 10]; + case 10: throw error_5; + case 11: return [2 /*return*/]; + } + }); + }); + }; + /** + * Enables or disables query result caching. + */ + SelectQueryBuilder.prototype.cache = function (enabledOrMillisecondsOrId, maybeMilliseconds) { + if (typeof enabledOrMillisecondsOrId === "boolean") { + this.expressionMap.cache = enabledOrMillisecondsOrId; + } + else if (typeof enabledOrMillisecondsOrId === "number") { + this.expressionMap.cache = true; + this.expressionMap.cacheDuration = enabledOrMillisecondsOrId; + } + else if (typeof enabledOrMillisecondsOrId === "string" || typeof enabledOrMillisecondsOrId === "number") { + this.expressionMap.cache = true; + this.expressionMap.cacheId = enabledOrMillisecondsOrId; + } + if (maybeMilliseconds) { + this.expressionMap.cacheDuration = maybeMilliseconds; + } + return this; + }; + /** + * Sets extra options that can be used to configure how query builder works. + */ + SelectQueryBuilder.prototype.setOption = function (option) { + this.expressionMap.options.push(option); + return this; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + SelectQueryBuilder.prototype.join = function (direction, entityOrProperty, aliasName, condition, parameters, mapToProperty, isMappingMany) { + this.setParameters(parameters || {}); + var joinAttribute = new JoinAttribute["a" /* JoinAttribute */](this.connection, this.expressionMap); + joinAttribute.direction = direction; + joinAttribute.mapToProperty = mapToProperty; + joinAttribute.isMappingMany = isMappingMany; + joinAttribute.entityOrProperty = entityOrProperty; // relationName + joinAttribute.condition = condition; // joinInverseSideCondition + // joinAttribute.junctionAlias = joinAttribute.relation.isOwning ? parentAlias + "_" + destinationTableAlias : destinationTableAlias + "_" + parentAlias; + this.expressionMap.joinAttributes.push(joinAttribute); + if (joinAttribute.metadata) { + if (joinAttribute.metadata.deleteDateColumn && !this.expressionMap.withDeleted) { + var conditionDeleteColumn = aliasName + "." + joinAttribute.metadata.deleteDateColumn.propertyName + " IS NULL"; + joinAttribute.condition += joinAttribute.condition ? " AND " + conditionDeleteColumn : "" + conditionDeleteColumn; + } + // todo: find and set metadata right there? + joinAttribute.alias = this.expressionMap.createAlias({ + type: "join", + name: aliasName, + metadata: joinAttribute.metadata + }); + if (joinAttribute.relation && joinAttribute.relation.junctionEntityMetadata) { + this.expressionMap.createAlias({ + type: "join", + name: joinAttribute.junctionAlias, + metadata: joinAttribute.relation.junctionEntityMetadata + }); + } + } + else { + var subQuery = ""; + if (entityOrProperty instanceof Function) { + var subQueryBuilder = entityOrProperty(this.subQuery()); + this.setParameters(subQueryBuilder.getParameters()); + subQuery = subQueryBuilder.getQuery(); + } + else { + subQuery = entityOrProperty; + } + var isSubQuery = entityOrProperty instanceof Function || entityOrProperty.substr(0, 1) === "(" && entityOrProperty.substr(-1) === ")"; + joinAttribute.alias = this.expressionMap.createAlias({ + type: "join", + name: aliasName, + tablePath: isSubQuery === false ? entityOrProperty : undefined, + subQuery: isSubQuery === true ? subQuery : undefined, + }); + } + }; + /** + * Creates "SELECT FROM" part of SQL query. + */ + SelectQueryBuilder.prototype.createSelectExpression = function () { + var _this = this; + if (!this.expressionMap.mainAlias) + throw new Error("Cannot build query because main alias is not set (call qb#from method)"); + // todo throw exception if selects or from is missing + var allSelects = []; + var excludedSelects = []; + if (this.expressionMap.mainAlias.hasMetadata) { + var metadata = this.expressionMap.mainAlias.metadata; + allSelects.push.apply(allSelects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.buildEscapedEntityColumnSelects(this.expressionMap.mainAlias.name, metadata)))); + excludedSelects.push.apply(excludedSelects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(this.findEntityColumnSelects(this.expressionMap.mainAlias.name, metadata)))); + } + // add selects from joins + this.expressionMap.joinAttributes + .forEach(function (join) { + if (join.metadata) { + allSelects.push.apply(allSelects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(_this.buildEscapedEntityColumnSelects(join.alias.name, join.metadata)))); + excludedSelects.push.apply(excludedSelects, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(_this.findEntityColumnSelects(join.alias.name, join.metadata)))); + } + else { + var hasMainAlias = _this.expressionMap.selects.some(function (select) { return select.selection === join.alias.name; }); + if (hasMainAlias) { + allSelects.push({ selection: _this.escape(join.alias.name) + ".*" }); + var excludedSelect = _this.expressionMap.selects.find(function (select) { return select.selection === join.alias.name; }); + excludedSelects.push(excludedSelect); + } + } + }); + // add all other selects + this.expressionMap.selects + .filter(function (select) { return excludedSelects.indexOf(select) === -1; }) + .forEach(function (select) { return allSelects.push({ selection: _this.replacePropertyNames(select.selection), aliasName: select.aliasName }); }); + // if still selection is empty, then simply set it to all (*) + if (allSelects.length === 0) + allSelects.push({ selection: "*" }); + var lock = ""; + if (this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + switch (this.expressionMap.lockMode) { + case "pessimistic_read": + lock = " WITH (HOLDLOCK, ROWLOCK)"; + break; + case "pessimistic_write": + lock = " WITH (UPDLOCK, ROWLOCK)"; + break; + case "dirty_read": + lock = " WITH (NOLOCK)"; + break; + } + } + // create a selection query + var froms = this.expressionMap.aliases + .filter(function (alias) { return alias.type === "from" && (alias.tablePath || alias.subQuery); }) + .map(function (alias) { + if (alias.subQuery) + return alias.subQuery + " " + _this.escape(alias.name); + return _this.getTableName(alias.tablePath) + " " + _this.escape(alias.name); + }); + var select = this.createSelectDistinctExpression(); + var selection = allSelects.map(function (select) { return select.selection + (select.aliasName ? " AS " + _this.escape(select.aliasName) : ""); }).join(", "); + return select + selection + " FROM " + froms.join(", ") + lock; + }; + /** + * Creates select | select distinct part of SQL query. + */ + SelectQueryBuilder.prototype.createSelectDistinctExpression = function () { + var _this = this; + var _a = this.expressionMap, selectDistinct = _a.selectDistinct, selectDistinctOn = _a.selectDistinctOn; + var driver = this.connection.driver; + var select = "SELECT "; + if (driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */] && selectDistinctOn.length > 0) { + var selectDistinctOnMap = selectDistinctOn.map(function (on) { return _this.replacePropertyNames(on); }).join(", "); + select = "SELECT DISTINCT ON (" + selectDistinctOnMap + ") "; + } + else if (selectDistinct) { + select = "SELECT DISTINCT "; + } + return select; + }; + /** + * Creates "JOIN" part of SQL query. + */ + SelectQueryBuilder.prototype.createJoinExpression = function () { + // examples: + // select from owning side + // qb.select("post") + // .leftJoinAndSelect("post.category", "category"); + // select from non-owning side + // qb.select("category") + // .leftJoinAndSelect("category.post", "post"); + var _this = this; + var joins = this.expressionMap.joinAttributes.map(function (joinAttr) { + var relation = joinAttr.relation; + var destinationTableName = joinAttr.tablePath; + var destinationTableAlias = joinAttr.alias.name; + var appendedCondition = joinAttr.condition ? " AND (" + joinAttr.condition + ")" : ""; + var parentAlias = joinAttr.parentAlias; + // if join was build without relation (e.g. without "post.category") then it means that we have direct + // table to join, without junction table involved. This means we simply join direct table. + if (!parentAlias || !relation) { + var destinationJoin = joinAttr.alias.subQuery ? joinAttr.alias.subQuery : _this.getTableName(destinationTableName); + return " " + joinAttr.direction + " JOIN " + destinationJoin + " " + _this.escape(destinationTableAlias) + + (joinAttr.condition ? " ON " + _this.replacePropertyNames(joinAttr.condition) : ""); + } + // if real entity relation is involved + if (relation.isManyToOne || relation.isOneToOneOwner) { + // JOIN `category` `category` ON `category`.`id` = `post`.`categoryId` + var condition = relation.joinColumns.map(function (joinColumn) { + return destinationTableAlias + "." + joinColumn.referencedColumn.propertyPath + "=" + + parentAlias + "." + relation.propertyPath + "." + joinColumn.referencedColumn.propertyPath; + }).join(" AND "); + return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(condition + appendedCondition); + } + else if (relation.isOneToMany || relation.isOneToOneNotOwner) { + // JOIN `post` `post` ON `post`.`categoryId` = `category`.`id` + var condition = relation.inverseRelation.joinColumns.map(function (joinColumn) { + if (relation.inverseEntityMetadata.tableType === "entity-child" && relation.inverseEntityMetadata.discriminatorColumn) { + appendedCondition += " AND " + destinationTableAlias + "." + relation.inverseEntityMetadata.discriminatorColumn.databaseName + "='" + relation.inverseEntityMetadata.discriminatorValue + "'"; + } + return destinationTableAlias + "." + relation.inverseRelation.propertyPath + "." + joinColumn.referencedColumn.propertyPath + "=" + + parentAlias + "." + joinColumn.referencedColumn.propertyPath; + }).join(" AND "); + return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(condition + appendedCondition); + } + else { // means many-to-many + var junctionTableName = relation.junctionEntityMetadata.tablePath; + var junctionAlias_1 = joinAttr.junctionAlias; + var junctionCondition = "", destinationCondition = ""; + if (relation.isOwning) { + junctionCondition = relation.joinColumns.map(function (joinColumn) { + // `post_category`.`postId` = `post`.`id` + return junctionAlias_1 + "." + joinColumn.propertyPath + "=" + parentAlias + "." + joinColumn.referencedColumn.propertyPath; + }).join(" AND "); + destinationCondition = relation.inverseJoinColumns.map(function (joinColumn) { + // `category`.`id` = `post_category`.`categoryId` + return destinationTableAlias + "." + joinColumn.referencedColumn.propertyPath + "=" + junctionAlias_1 + "." + joinColumn.propertyPath; + }).join(" AND "); + } + else { + junctionCondition = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) { + // `post_category`.`categoryId` = `category`.`id` + return junctionAlias_1 + "." + joinColumn.propertyPath + "=" + parentAlias + "." + joinColumn.referencedColumn.propertyPath; + }).join(" AND "); + destinationCondition = relation.inverseRelation.joinColumns.map(function (joinColumn) { + // `post`.`id` = `post_category`.`postId` + return destinationTableAlias + "." + joinColumn.referencedColumn.propertyPath + "=" + junctionAlias_1 + "." + joinColumn.propertyPath; + }).join(" AND "); + } + return " " + joinAttr.direction + " JOIN " + _this.getTableName(junctionTableName) + " " + _this.escape(junctionAlias_1) + " ON " + _this.replacePropertyNames(junctionCondition) + + " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(destinationCondition + appendedCondition); + } + }); + return joins.join(" "); + }; + /** + * Creates "GROUP BY" part of SQL query. + */ + SelectQueryBuilder.prototype.createGroupByExpression = function () { + if (!this.expressionMap.groupBys || !this.expressionMap.groupBys.length) + return ""; + return " GROUP BY " + this.replacePropertyNames(this.expressionMap.groupBys.join(", ")); + }; + /** + * Creates "ORDER BY" part of SQL query. + */ + SelectQueryBuilder.prototype.createOrderByExpression = function () { + var _this = this; + var orderBys = this.expressionMap.allOrderBys; + if (Object.keys(orderBys).length > 0) + return " ORDER BY " + Object.keys(orderBys) + .map(function (columnName) { + if (typeof orderBys[columnName] === "string") { + return _this.replacePropertyNames(columnName) + " " + orderBys[columnName]; + } + else { + return _this.replacePropertyNames(columnName) + " " + orderBys[columnName].order + " " + orderBys[columnName].nulls; + } + }) + .join(", "); + return ""; + }; + /** + * Creates "LIMIT" and "OFFSET" parts of SQL query. + */ + SelectQueryBuilder.prototype.createLimitOffsetExpression = function () { + // in the case if nothing is joined in the query builder we don't need to make two requests to get paginated results + // we can use regular limit / offset, that's why we add offset and limit construction here based on skip and take values + var offset = this.expressionMap.offset, limit = this.expressionMap.limit; + if (!offset && !limit && this.expressionMap.joinAttributes.length === 0) { + offset = this.expressionMap.skip; + limit = this.expressionMap.take; + } + if (this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + // Due to a limitation in SQL Server's parser implementation it does not support using + // OFFSET or FETCH NEXT without an ORDER BY clause being provided. In cases where the + // user does not request one we insert a dummy ORDER BY that does nothing and should + // have no effect on the query planner or on the order of the results returned. + // https://dba.stackexchange.com/a/193799 + var prefix = ""; + if ((limit || offset) && Object.keys(this.expressionMap.allOrderBys).length <= 0) { + prefix = " ORDER BY (SELECT NULL)"; + } + if (limit && offset) + return prefix + " OFFSET " + offset + " ROWS FETCH NEXT " + limit + " ROWS ONLY"; + if (limit) + return prefix + " OFFSET 0 ROWS FETCH NEXT " + limit + " ROWS ONLY"; + if (offset) + return prefix + " OFFSET " + offset + " ROWS"; + } + else if (this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */] || this.connection.driver instanceof BrowserDisabledDriversDummy["l" /* SapDriver */]) { + if (limit && offset) + return " LIMIT " + limit + " OFFSET " + offset; + if (limit) + return " LIMIT " + limit; + if (offset) + throw new OffsetWithoutLimitNotSupportedError["a" /* OffsetWithoutLimitNotSupportedError */](); + } + else if (this.connection.driver instanceof AbstractSqliteDriver["a" /* AbstractSqliteDriver */]) { + if (limit && offset) + return " LIMIT " + limit + " OFFSET " + offset; + if (limit) + return " LIMIT " + limit; + if (offset) + return " LIMIT -1 OFFSET " + offset; + } + else if (this.connection.driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */]) { + if (limit && offset) + return " OFFSET " + offset + " ROWS FETCH NEXT " + limit + " ROWS ONLY"; + if (limit) + return " FETCH NEXT " + limit + " ROWS ONLY"; + if (offset) + return " OFFSET " + offset + " ROWS"; + } + else { + if (limit && offset) + return " LIMIT " + limit + " OFFSET " + offset; + if (limit) + return " LIMIT " + limit; + if (offset) + return " OFFSET " + offset; + } + return ""; + }; + /** + * Creates "LOCK" part of SQL query. + */ + SelectQueryBuilder.prototype.createLockExpression = function () { + var driver = this.connection.driver; + var lockTablesClause = ""; + if (this.expressionMap.lockTables) { + if (!(driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */])) { + throw new Error("Lock tables not supported in selected driver"); + } + if (this.expressionMap.lockTables.length < 1) { + throw new Error("lockTables cannot be an empty array"); + } + lockTablesClause = " OF " + this.expressionMap.lockTables.join(", "); + } + switch (this.expressionMap.lockMode) { + case "pessimistic_read": + if (driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) { + return " LOCK IN SHARE MODE"; + } + else if (driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) { + return " FOR SHARE" + lockTablesClause; + } + else if (driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */]) { + return " FOR UPDATE"; + } + else if (driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + return ""; + } + else { + throw new LockNotSupportedOnGivenDriverError["a" /* LockNotSupportedOnGivenDriverError */](); + } + case "pessimistic_write": + if (driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */] || driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */]) { + return " FOR UPDATE"; + } + else if (driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) { + return " FOR UPDATE" + lockTablesClause; + } + else if (driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + return ""; + } + else { + throw new LockNotSupportedOnGivenDriverError["a" /* LockNotSupportedOnGivenDriverError */](); + } + case "pessimistic_partial_write": + if (driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) { + return " FOR UPDATE" + lockTablesClause + " SKIP LOCKED"; + } + else if (driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */]) { + return " FOR UPDATE SKIP LOCKED"; + } + else { + throw new LockNotSupportedOnGivenDriverError["a" /* LockNotSupportedOnGivenDriverError */](); + } + case "pessimistic_write_or_fail": + if (driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) { + return " FOR UPDATE" + lockTablesClause + " NOWAIT"; + } + else if (driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */]) { + return " FOR UPDATE NOWAIT"; + } + else { + throw new LockNotSupportedOnGivenDriverError["a" /* LockNotSupportedOnGivenDriverError */](); + } + case "for_no_key_update": + if (driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) { + return " FOR NO KEY UPDATE" + lockTablesClause; + } + else { + throw new LockNotSupportedOnGivenDriverError["a" /* LockNotSupportedOnGivenDriverError */](); + } + default: + return ""; + } + }; + /** + * Creates "HAVING" part of SQL query. + */ + SelectQueryBuilder.prototype.createHavingExpression = function () { + var _this = this; + if (!this.expressionMap.havings || !this.expressionMap.havings.length) + return ""; + var conditions = this.expressionMap.havings.map(function (having, index) { + switch (having.type) { + case "and": + return (index > 0 ? "AND " : "") + _this.replacePropertyNames(having.condition); + case "or": + return (index > 0 ? "OR " : "") + _this.replacePropertyNames(having.condition); + default: + return _this.replacePropertyNames(having.condition); + } + }).join(" "); + if (!conditions.length) + return ""; + return " HAVING " + conditions; + }; + SelectQueryBuilder.prototype.buildEscapedEntityColumnSelects = function (aliasName, metadata) { + var _this = this; + var hasMainAlias = this.expressionMap.selects.some(function (select) { return select.selection === aliasName; }); + var columns = []; + if (hasMainAlias) { + columns.push.apply(columns, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(metadata.columns.filter(function (column) { return column.isSelect === true; })))); + } + columns.push.apply(columns, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(metadata.columns.filter(function (column) { + return _this.expressionMap.selects.some(function (select) { return select.selection === aliasName + "." + column.propertyPath; }); + })))); + // if user used partial selection and did not select some primary columns which are required to be selected + // we select those primary columns and mark them as "virtual". Later virtual column values will be removed from final entity + // to make entity contain exactly what user selected + if (columns.length === 0) // however not in the case when nothing (even partial) was selected from this target (for example joins without selection) + return []; + var nonSelectedPrimaryColumns = this.expressionMap.queryEntity ? metadata.primaryColumns.filter(function (primaryColumn) { return columns.indexOf(primaryColumn) === -1; }) : []; + var allColumns = Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(columns)), Object(tslib_es6["e" /* __read */])(nonSelectedPrimaryColumns)); + return allColumns.map(function (column) { + var selection = _this.expressionMap.selects.find(function (select) { return select.selection === aliasName + "." + column.propertyPath; }); + var selectionPath = _this.escape(aliasName) + "." + _this.escape(column.databaseName); + if (_this.connection.driver.spatialTypes.indexOf(column.type) !== -1) { + if (_this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */] || _this.connection.driver instanceof BrowserDisabledDriversDummy["a" /* AuroraDataApiDriver */]) { + var useLegacy = _this.connection.driver.options.legacySpatialSupport; + var asText = useLegacy ? "AsText" : "ST_AsText"; + selectionPath = asText + "(" + selectionPath + ")"; + } + if (_this.connection.driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) + // cast to JSON to trigger parsing in the driver + if (column.precision) { + selectionPath = "ST_AsGeoJSON(" + selectionPath + ", " + column.precision + ")::json"; + } + else { + selectionPath = "ST_AsGeoJSON(" + selectionPath + ")::json"; + } + if (_this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) + selectionPath = selectionPath + ".ToString()"; + } + return { + selection: selectionPath, + aliasName: selection && selection.aliasName ? selection.aliasName : DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, aliasName, column.databaseName), + // todo: need to keep in mind that custom selection.aliasName breaks hydrator. fix it later! + virtual: selection ? selection.virtual === true : (hasMainAlias ? false : true), + }; + }); + }; + SelectQueryBuilder.prototype.findEntityColumnSelects = function (aliasName, metadata) { + var mainSelect = this.expressionMap.selects.find(function (select) { return select.selection === aliasName; }); + if (mainSelect) + return [mainSelect]; + return this.expressionMap.selects.filter(function (select) { + return metadata.columns.some(function (column) { return select.selection === aliasName + "." + column.propertyPath; }); + }); + }; + SelectQueryBuilder.prototype.computeCountExpression = function () { + var _this = this; + var mainAlias = this.expressionMap.mainAlias.name; // todo: will this work with "fromTableName"? + var metadata = this.expressionMap.mainAlias.metadata; + var primaryColumns = metadata.primaryColumns; + var distinctAlias = this.escape(mainAlias); + // If we aren't doing anything that will create a join, we can use a simpler `COUNT` instead + // so we prevent poor query patterns in the most likely cases + if (this.expressionMap.joinAttributes.length === 0 && + this.expressionMap.relationIdAttributes.length === 0 && + this.expressionMap.relationCountAttributes.length === 0) { + return "COUNT(1)"; + } + // For everything else, we'll need to do some hackery to get the correct count values. + if (this.connection.driver instanceof BrowserDisabledDriversDummy["d" /* CockroachDriver */] || this.connection.driver instanceof BrowserDisabledDriversDummy["k" /* PostgresDriver */]) { + // Postgres and CockroachDB can pass multiple parameters to the `DISTINCT` function + // https://www.postgresql.org/docs/9.5/sql-select.html#SQL-DISTINCT + return "COUNT(DISTINCT(" + + primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(", ") + + "))"; + } + if (this.connection.driver instanceof BrowserDisabledDriversDummy["i" /* MysqlDriver */]) { + // MySQL & MariaDB can pass multiple parameters to the `DISTINCT` language construct + // https://mariadb.com/kb/en/count-distinct/ + return "COUNT(DISTINCT " + + primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(", ") + + ")"; + } + if (this.connection.driver instanceof BrowserDisabledDriversDummy["m" /* SqlServerDriver */]) { + // SQL Server has gotta be different from everyone else. They don't support + // distinct counting multiple columns & they don't have the same operator + // characteristic for concatenating, so we gotta use the `CONCAT` function. + // However, If it's exactly 1 column we can omit the `CONCAT` for better performance. + var columnsExpression = primaryColumns.map(function (primaryColumn) { return distinctAlias + "." + _this.escape(primaryColumn.databaseName); }).join(", '|;|', "); + if (primaryColumns.length === 1) { + return "COUNT(DISTINCT(" + columnsExpression + "))"; + } + return "COUNT(DISTINCT(CONCAT(" + columnsExpression + ")))"; + } + // If all else fails, fall back to a `COUNT` and `DISTINCT` across all the primary columns concatenated. + // Per the SQL spec, this is the canonical string concatenation mechanism which is most + // likely to work across servers implementing the SQL standard. + // Please note, if there is only one primary column that the concatenation does not occur in this + // query and the query is a standard `COUNT DISTINCT` in that case. + return "COUNT(DISTINCT(" + + primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(" || '|;|' || ") + + "))"; + }; + SelectQueryBuilder.prototype.executeCountQuery = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var countSql, results; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + countSql = this.computeCountExpression(); + return [4 /*yield*/, this.clone() + .orderBy() + .groupBy() + .offset(undefined) + .limit(undefined) + .skip(undefined) + .take(undefined) + .select(countSql, "cnt") + .setOption("disable-global-order") + .loadRawResults(queryRunner)]; + case 1: + results = _a.sent(); + if (!results || !results[0] || !results[0]["cnt"]) + return [2 /*return*/, 0]; + return [2 /*return*/, parseInt(results[0]["cnt"])]; + } + }); + }); + }; + /** + * Executes sql generated by query builder and returns object with raw results and entities created from them. + */ + SelectQueryBuilder.prototype.executeEntitiesAndRawResults = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var metadata, relationIdLoader, relationCountLoader, relationIdMetadataTransformer, relationCountMetadataTransformer, rawResults, entities, _a, selects, orderBys_1, metadata_1, mainAliasName_1, querySelects, condition, parameters_1, alias_1, ids, areAllNumbers, rawRelationIdResults, rawRelationCountResults, transformer, broadcastResult; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + if (!this.expressionMap.mainAlias) + throw new Error("Alias is not set. Use \"from\" method to set an alias."); + if ((this.expressionMap.lockMode === "pessimistic_read" || this.expressionMap.lockMode === "pessimistic_write" || this.expressionMap.lockMode === "pessimistic_partial_write" || this.expressionMap.lockMode === "pessimistic_write_or_fail" || this.expressionMap.lockMode === "for_no_key_update") && !queryRunner.isTransactionActive) + throw new PessimisticLockTransactionRequiredError["a" /* PessimisticLockTransactionRequiredError */](); + if (this.expressionMap.lockMode === "optimistic") { + metadata = this.expressionMap.mainAlias.metadata; + if (!metadata.versionColumn && !metadata.updateDateColumn) + throw new NoVersionOrUpdateDateColumnError["a" /* NoVersionOrUpdateDateColumnError */](metadata.name); + } + relationIdLoader = new RelationIdLoader_RelationIdLoader(this.connection, queryRunner, this.expressionMap.relationIdAttributes); + relationCountLoader = new RelationCountLoader_RelationCountLoader(this.connection, queryRunner, this.expressionMap.relationCountAttributes); + relationIdMetadataTransformer = new RelationIdMetadataToAttributeTransformer_RelationIdMetadataToAttributeTransformer(this.expressionMap); + relationIdMetadataTransformer.transform(); + relationCountMetadataTransformer = new RelationCountMetadataToAttributeTransformer_RelationCountMetadataToAttributeTransformer(this.expressionMap); + relationCountMetadataTransformer.transform(); + rawResults = [], entities = []; + if (!((this.expressionMap.skip || this.expressionMap.take) && this.expressionMap.joinAttributes.length > 0)) return [3 /*break*/, 4]; + _a = Object(tslib_es6["e" /* __read */])(this.createOrderByCombinedWithSelectExpression("distinctAlias"), 2), selects = _a[0], orderBys_1 = _a[1]; + metadata_1 = this.expressionMap.mainAlias.metadata; + mainAliasName_1 = this.expressionMap.mainAlias.name; + querySelects = metadata_1.primaryColumns.map(function (primaryColumn) { + var distinctAlias = _this.escape("distinctAlias"); + var columnAlias = _this.escape(DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, mainAliasName_1, primaryColumn.databaseName)); + if (!orderBys_1[columnAlias]) // make sure we aren't overriding user-defined order in inverse direction + orderBys_1[columnAlias] = "ASC"; + var alias = DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, "ids_" + mainAliasName_1, primaryColumn.databaseName); + return distinctAlias + "." + columnAlias + " as \"" + alias + "\""; + }); + return [4 /*yield*/, new SelectQueryBuilder(this.connection, queryRunner) + .select("DISTINCT " + querySelects.join(", ")) + .addSelect(selects) + .from("(" + this.clone().orderBy().getQuery() + ")", "distinctAlias") + .offset(this.expressionMap.skip) + .limit(this.expressionMap.take) + .orderBy(orderBys_1) + .cache(this.expressionMap.cache ? this.expressionMap.cache : this.expressionMap.cacheId, this.expressionMap.cacheDuration) + .setParameters(this.getParameters()) + .setNativeParameters(this.expressionMap.nativeParameters) + .getRawMany()]; + case 1: + rawResults = _b.sent(); + if (!(rawResults.length > 0)) return [3 /*break*/, 3]; + condition = ""; + parameters_1 = {}; + if (metadata_1.hasMultiplePrimaryKeys) { + condition = rawResults.map(function (result, index) { + return metadata_1.primaryColumns.map(function (primaryColumn) { + var paramKey = "orm_distinct_ids_" + index + "_" + primaryColumn.databaseName; + parameters_1[paramKey] = result["ids_" + mainAliasName_1 + "_" + primaryColumn.databaseName]; + return mainAliasName_1 + "." + primaryColumn.propertyPath + "=:" + paramKey; + }).join(" AND "); + }).join(" OR "); + } + else { + alias_1 = DriverUtils["a" /* DriverUtils */].buildColumnAlias(this.connection.driver, "ids_" + mainAliasName_1, metadata_1.primaryColumns[0].databaseName); + ids = rawResults.map(function (result) { return result[alias_1]; }); + areAllNumbers = ids.every(function (id) { return typeof id === "number"; }); + if (areAllNumbers) { + // fixes #190. if all numbers then its safe to perform query without parameter + condition = mainAliasName_1 + "." + metadata_1.primaryColumns[0].propertyPath + " IN (" + ids.join(", ") + ")"; + } + else { + parameters_1["orm_distinct_ids"] = ids; + condition = mainAliasName_1 + "." + metadata_1.primaryColumns[0].propertyPath + " IN (:...orm_distinct_ids)"; + } + } + return [4 /*yield*/, this.clone() + .mergeExpressionMap({ extraAppendedAndWhereCondition: condition }) + .setParameters(parameters_1) + .loadRawResults(queryRunner)]; + case 2: + rawResults = _b.sent(); + _b.label = 3; + case 3: return [3 /*break*/, 6]; + case 4: return [4 /*yield*/, this.loadRawResults(queryRunner)]; + case 5: + rawResults = _b.sent(); + _b.label = 6; + case 6: + if (!(rawResults.length > 0)) return [3 /*break*/, 10]; + return [4 /*yield*/, relationIdLoader.load(rawResults)]; + case 7: + rawRelationIdResults = _b.sent(); + return [4 /*yield*/, relationCountLoader.load(rawResults)]; + case 8: + rawRelationCountResults = _b.sent(); + transformer = new RawSqlResultsToEntityTransformer["a" /* RawSqlResultsToEntityTransformer */](this.expressionMap, this.connection.driver, rawRelationIdResults, rawRelationCountResults, this.queryRunner); + entities = transformer.transform(rawResults, this.expressionMap.mainAlias); + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10]; + broadcastResult = new BroadcasterResult["a" /* BroadcasterResult */](); + queryRunner.broadcaster.broadcastLoadEventsForAll(broadcastResult, this.expressionMap.mainAlias.metadata, entities); + if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10]; + return [4 /*yield*/, Promise.all(broadcastResult.promises)]; + case 9: + _b.sent(); + _b.label = 10; + case 10: return [2 /*return*/, { + raw: rawResults, + entities: entities, + }]; + } + }); + }); + }; + SelectQueryBuilder.prototype.createOrderByCombinedWithSelectExpression = function (parentAlias) { + var _this = this; + // if table has a default order then apply it + var orderBys = this.expressionMap.allOrderBys; + var selectString = Object.keys(orderBys) + .map(function (orderCriteria) { + if (orderCriteria.indexOf(".") !== -1) { + var criteriaParts = orderCriteria.split("."); + var aliasName = criteriaParts[0]; + var propertyPath = criteriaParts.slice(1).join("."); + var alias = _this.expressionMap.findAliasByName(aliasName); + var column = alias.metadata.findColumnWithPropertyPath(propertyPath); + return _this.escape(parentAlias) + "." + _this.escape(DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, aliasName, column.databaseName)); + } + else { + if (_this.expressionMap.selects.find(function (select) { return select.selection === orderCriteria || select.aliasName === orderCriteria; })) + return _this.escape(parentAlias) + "." + orderCriteria; + return ""; + } + }) + .join(", "); + var orderByObject = {}; + Object.keys(orderBys).forEach(function (orderCriteria) { + if (orderCriteria.indexOf(".") !== -1) { + var criteriaParts = orderCriteria.split("."); + var aliasName = criteriaParts[0]; + var propertyPath = criteriaParts.slice(1).join("."); + var alias = _this.expressionMap.findAliasByName(aliasName); + var column = alias.metadata.findColumnWithPropertyPath(propertyPath); + orderByObject[_this.escape(parentAlias) + "." + _this.escape(DriverUtils["a" /* DriverUtils */].buildColumnAlias(_this.connection.driver, aliasName, column.databaseName))] = orderBys[orderCriteria]; + } + else { + if (_this.expressionMap.selects.find(function (select) { return select.selection === orderCriteria || select.aliasName === orderCriteria; })) { + orderByObject[_this.escape(parentAlias) + "." + orderCriteria] = orderBys[orderCriteria]; + } + else { + orderByObject[orderCriteria] = orderBys[orderCriteria]; + } + } + }); + return [selectString, orderByObject]; + }; + /** + * Loads raw results from the database. + */ + SelectQueryBuilder.prototype.loadRawResults = function (queryRunner) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a, sql, parameters, queryId, cacheOptions, savedQueryResultCacheOptions, results; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _a = Object(tslib_es6["e" /* __read */])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1]; + queryId = sql + " -- PARAMETERS: " + JSON.stringify(parameters); + cacheOptions = typeof this.connection.options.cache === "object" ? this.connection.options.cache : {}; + savedQueryResultCacheOptions = undefined; + if (!(this.connection.queryResultCache && (this.expressionMap.cache || cacheOptions.alwaysEnabled))) return [3 /*break*/, 2]; + return [4 /*yield*/, this.connection.queryResultCache.getFromCache({ + identifier: this.expressionMap.cacheId, + query: queryId, + duration: this.expressionMap.cacheDuration || cacheOptions.duration || 1000 + }, queryRunner)]; + case 1: + savedQueryResultCacheOptions = _b.sent(); + if (savedQueryResultCacheOptions && !this.connection.queryResultCache.isExpired(savedQueryResultCacheOptions)) + return [2 /*return*/, JSON.parse(savedQueryResultCacheOptions.result)]; + _b.label = 2; + case 2: return [4 /*yield*/, queryRunner.query(sql, parameters)]; + case 3: + results = _b.sent(); + if (!(this.connection.queryResultCache && (this.expressionMap.cache || cacheOptions.alwaysEnabled))) return [3 /*break*/, 5]; + return [4 /*yield*/, this.connection.queryResultCache.storeInCache({ + identifier: this.expressionMap.cacheId, + query: queryId, + time: new Date().getTime(), + duration: this.expressionMap.cacheDuration || cacheOptions.duration || 1000, + result: JSON.stringify(results) + }, savedQueryResultCacheOptions, queryRunner)]; + case 4: + _b.sent(); + _b.label = 5; + case 5: return [2 /*return*/, results]; + } + }); + }); + }; + /** + * Merges into expression map given expression map properties. + */ + SelectQueryBuilder.prototype.mergeExpressionMap = function (expressionMap) { + ObjectUtils["a" /* ObjectUtils */].assign(this.expressionMap, expressionMap); + return this; + }; + /** + * Normalizes a give number - converts to int if possible. + */ + SelectQueryBuilder.prototype.normalizeNumber = function (num) { + if (typeof num === "number" || num === undefined || num === null) + return num; + return Number(num); + }; + /** + * Creates a query builder used to execute sql queries inside this query builder. + */ + SelectQueryBuilder.prototype.obtainQueryRunner = function () { + return this.queryRunner || this.connection.createQueryRunner("slave"); + }; + return SelectQueryBuilder; +}(QueryBuilder["a" /* QueryBuilder */])); + + +//# sourceMappingURL=SelectQueryBuilder.js.map + /***/ }), - -/***/ "./src/client/js/Sites/MainMenuSite.ts": -/*!*********************************************!*\ - !*** ./src/client/js/Sites/MainMenuSite.ts ***! - \*********************************************/ -/*! exports provided: MainMenuSite */ +/* 118 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MainMenuSite\", function() { return MainMenuSite; });\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\n/* harmony import */ var js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _LevelSite__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LevelSite */ \"./src/client/js/Sites/LevelSite.ts\");\n/* harmony import */ var _wordrotator_Segment_TemplateContainer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../wordrotator/Segment/TemplateContainer */ \"./src/client/js/wordrotator/Segment/TemplateContainer.js\");\n/* harmony import */ var _wordrotator_Level_MainMenuLevel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../wordrotator/Level/MainMenuLevel */ \"./src/client/js/wordrotator/Level/MainMenuLevel.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _model_LevelPlayed__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../model/LevelPlayed */ \"./src/client/js/model/LevelPlayed.ts\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client_SyncJob__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! cordova-sites-easy-sync/dist/client/SyncJob */ \"./node_modules/cordova-sites-easy-sync/dist/client/SyncJob.js\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client_SyncJob__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_easy_sync_dist_client_SyncJob__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../shared/model/LevelData */ \"./src/shared/model/LevelData.ts\");\n/* harmony import */ var cordova_sites_dist_client_js_ShareManager_ShareManager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! cordova-sites/dist/client/js/ShareManager/ShareManager */ \"./node_modules/cordova-sites/dist/client/js/ShareManager/ShareManager.js\");\n/* harmony import */ var cordova_sites_dist_client_js_ShareManager_ShareManager__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_ShareManager_ShareManager__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! cordova-sites/dist/client/js/Translator */ \"./node_modules/cordova-sites/dist/client/js/Translator.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! cordova-sites/dist/client/js/Sound/SoundManager */ \"./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! cordova-sites/dist/client/js/Legacy/Matomo */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var cordova_sites_dist_client_js_Context_Menu_MenuAction_MenuAction__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Context_Menu_MenuAction_MenuAction__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Context_Menu_MenuAction_MenuAction__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _SettingsSite__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./SettingsSite */ \"./src/client/js/Sites/SettingsSite.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst settingsIcon = __webpack_require__(/*! ../../img/settings.png */ \"./src/client/img/settings.png\").default;\nconst view = __webpack_require__(/*! ../../html/sites/menu.html */ \"./src/client/html/sites/menu.html\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass MainMenuSite extends cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n this.loadLevelPromise = new cordova_sites_easy_sync_dist_client_SyncJob__WEBPACK_IMPORTED_MODULE_7__[\"SyncJob\"]().sync([_shared_model_LevelData__WEBPACK_IMPORTED_MODULE_8__[\"LevelData\"]]).catch(e => console.error(e));\n this.listener = null;\n this.getNavbarFragment().setCanGoBack(false);\n }\n onCreateMenu(navbar) {\n super.onCreateMenu(navbar);\n let settingsAction = new cordova_sites_dist_client_js_Context_Menu_MenuAction_MenuAction__WEBPACK_IMPORTED_MODULE_13__[\"MenuAction\"](\"\", () => {\n this.startSite(_SettingsSite__WEBPACK_IMPORTED_MODULE_14__[\"SettingsSite\"]);\n }, cordova_sites_dist_client_js_Context_Menu_MenuAction_MenuAction__WEBPACK_IMPORTED_MODULE_13__[\"MenuAction\"].SHOW_ALWAYS, null, settingsIcon);\n navbar.addAction(settingsAction);\n return navbar;\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const res = _super.onViewLoaded.call(this);\n let playButton = this.findBy(\"#play-button\");\n playButton.addEventListener(\"click\", () => {\n // Matomo.push([\"trackEvent\", \"MainMenu\", \"startButton\"]);\n this.startLevelSite();\n });\n let leafSegmentTemplate = this.findBy(\"#segment-leaf-template\");\n let parentSegmentTemplate = this.findBy(\"#segment-parent-template\");\n let rowSegmentTemplate = this.findBy(\"#segment-row-template\");\n let triangleTemplate = this.findBy(\"#segment-triangle-template\");\n leafSegmentTemplate.id = null;\n parentSegmentTemplate.id = null;\n rowSegmentTemplate.id = null;\n triangleTemplate.id = null;\n leafSegmentTemplate.remove();\n parentSegmentTemplate.remove();\n rowSegmentTemplate.remove();\n triangleTemplate.remove();\n this.templateContainer = new _wordrotator_Segment_TemplateContainer__WEBPACK_IMPORTED_MODULE_3__[\"TemplateContainer\"](leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate);\n //TODO?\n // if (Helper.nonNull(MainMenuSite.app._cookieClosePromise)) {\n // MainMenuSite.app._cookieClosePromise.then(() => {\n // if (this.listener) {\n // this.listener();\n // }\n // });\n // }\n let soundManager = cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11__[\"SoundManager\"].getInstance();\n let playMusicButton = this.findBy(\"#play-music\");\n playMusicButton.checked = ((yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"NativeStoragePromise\"].getItem(\"play-music\", \"1\")) === \"1\");\n playMusicButton.addEventListener(\"change\", () => __awaiter(this, void 0, void 0, function* () {\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"NativeStoragePromise\"].setItem(\"play-music\", (playMusicButton.checked) ? \"1\" : \"0\");\n soundManager.set({ muted: !playMusicButton.checked }, cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11__[\"SoundManager\"].CHANNELS.MUSIC);\n if (playMusicButton.checked) {\n yield soundManager.play(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11__[\"SoundManager\"].CHANNELS.MUSIC);\n }\n //TODO [MIG] Matomo\n cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_12__[\"Matomo\"].push([\"trackEvent\", \"MainMenu\", \"PlayMusic\", \"Play Music\", (playMusicButton.checked) ? 1 : 0]);\n }));\n let playSoundButton = this.findBy(\"#play-sound\");\n playSoundButton.checked = ((yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"NativeStoragePromise\"].getItem(\"play-sound\", \"1\")) === \"1\");\n playSoundButton.addEventListener(\"change\", () => __awaiter(this, void 0, void 0, function* () {\n yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"NativeStoragePromise\"].setItem(\"play-sound\", (playSoundButton.checked) ? \"1\" : \"0\");\n soundManager.set({ muted: !playSoundButton.checked }, cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11__[\"SoundManager\"].CHANNELS.SOUND);\n //TODO [MIG] Matomo\n cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_12__[\"Matomo\"].push([\"trackEvent\", \"MainMenu\", \"PlaySound\", \"Play Sound\", (playSoundButton.checked) ? 1 : 0]);\n }));\n this.findBy(\"#share-button\").addEventListener(\"click\", () => {\n new cordova_sites_dist_client_js_ShareManager_ShareManager__WEBPACK_IMPORTED_MODULE_9__[\"ShareManager\"]().share(cordova_sites_dist_client_js_Translator__WEBPACK_IMPORTED_MODULE_10__[\"Translator\"].getInstance().translate(\"share-text\", [window.location]));\n });\n return res;\n // this.findBy(\"#share-buttons\").appendChild(ShareManager.generateDefaultShareElement(\"https://wordrotator.silas.link\"));\n });\n }\n onStart(args) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n // Matomo.update(\"Menu Sites\");\n let res = _super.onStart.call(this, args);\n let level = new _wordrotator_Level_MainMenuLevel__WEBPACK_IMPORTED_MODULE_4__[\"MainMenuLevel\"](this.templateContainer);\n level.setWords([\"WORD\", \"ROTA\", \"TORW\", \"ORDR\"]);\n level.createSegments();\n level.getWonPromise().then(() => {\n // Matomo.push([\"trackEvent\", \"MainMenu\", \"levelSolved\"]);\n this.startLevelSite();\n });\n let segment = level.getRootSegment();\n segment._updateElement();\n let levelSegment = this.findBy(\"#level\");\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_5__[\"ViewHelper\"].removeAllChildren(levelSegment).appendChild(segment.getElement());\n let rotationsSegments = level.getRotatableSegments();\n let randomRotationFunction = () => {\n let timeout = Math.random() * 4500 + 1500;\n this.randomRotateTimeout = setTimeout(() => {\n let indexBlocked = -1;\n let indexesNotRight = [];\n for (let i = 0; i < rotationsSegments.length; i++) {\n if (rotationsSegments[i].rotation !== 0) {\n indexesNotRight.push(i);\n if (indexesNotRight.length >= 2) {\n break;\n }\n }\n }\n if (indexesNotRight.length === 1) {\n indexBlocked = indexesNotRight[0];\n }\n let index = Math.floor(Math.random() * rotationsSegments.length);\n if (index === indexBlocked) {\n index = (index + 1) % rotationsSegments.length;\n }\n rotationsSegments[index].rotate();\n randomRotationFunction();\n }, timeout);\n };\n randomRotationFunction();\n this.listener = () => __awaiter(this, void 0, void 0, function* () {\n let playButton = this.findBy(\"#play-button\");\n let levelNumber = this.findBy(\"#level-number\");\n levelNumber.innerText = js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].nonNull(yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"NativeStoragePromise\"].getItem(\"levelCounter\"), 1);\n let levelSegment = this.findBy(\"#level\");\n let scaleHelper = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"ScaleHelper\"]();\n yield scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, 8, null, false);\n let levelStyle = getComputedStyle(levelSegment);\n playButton.style.width = levelStyle.getPropertyValue(\"width\");\n scaleHelper.scaleTo(0.65, playButton.children[0], playButton, null, null, null, 4, null, false);\n yield scaleHelper.scaleTo(0.1, levelNumber.parentElement, levelNumber.parentElement.parentElement, null, null, null, 10, null, false);\n scaleHelper.scaleTo(1, levelNumber, levelNumber.parentElement, false, false, 5, null, null, false);\n });\n // this.listener();\n window.addEventListener(\"resize\", this.listener);\n setTimeout(this.listener, 50);\n //Musikbuttons update, falls in den Einstellungen umgestellt\n // let settingsManager = SettingsManager.getInstance();\n let playSoundButton = this.findBy(\"#play-sound\");\n playSoundButton.checked = ((yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"NativeStoragePromise\"].getItem(\"play-sound\", \"1\")) === \"1\");\n let playMusicButton = this.findBy(\"#play-music\");\n playMusicButton.checked = ((yield cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"NativeStoragePromise\"].getItem(\"play-music\", \"1\")) === \"1\");\n return res;\n });\n }\n startLevelSite() {\n return __awaiter(this, void 0, void 0, function* () {\n cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_11__[\"SoundManager\"].getInstance().resumeContext();\n this.startSite(_LevelSite__WEBPACK_IMPORTED_MODULE_2__[\"LevelSite\"], Promise.race([this.loadLevelPromise, new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let levelData = yield _model_LevelPlayed__WEBPACK_IMPORTED_MODULE_6__[\"LevelPlayed\"].getNextLevelData(_LevelSite__WEBPACK_IMPORTED_MODULE_2__[\"LevelSite\"].RENDERER_TYPES);\n if (levelData !== null) {\n resolve();\n }\n }))]));\n });\n }\n onPause() {\n clearTimeout(this.randomRotateTimeout);\n window.removeEventListener(\"resize\", this.listener);\n return super.onPause();\n }\n}\ncordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"App\"].addInitialization(app => {\n MainMenuSite.app = app;\n});\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/MainMenuSite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return RelationIdAttribute; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50); +/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24); + + + +/** + * Stores all join relation id attributes which will be used to build a JOIN query. + */ +var RelationIdAttribute = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationIdAttribute(queryExpressionMap, relationIdAttribute) { + this.queryExpressionMap = queryExpressionMap; + /** + * Indicates if relation id should NOT be loaded as id map. + */ + this.disableMixedMap = false; + _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__[/* ObjectUtils */ "a"].assign(this, relationIdAttribute || {}); + } + Object.defineProperty(RelationIdAttribute.prototype, "joinInverseSideMetadata", { + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + get: function () { + return this.relation.inverseEntityMetadata; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationIdAttribute.prototype, "parentAlias", { + /** + * Alias of the parent of this join. + * For example, if we join ("post.category", "categoryAlias") then "post" is a parent alias. + * This value is extracted from entityOrProperty value. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.relationName)) + throw new Error("Given value must be a string representation of alias property"); + return this.relationName.substr(0, this.relationName.indexOf(".")); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationIdAttribute.prototype, "relationPropertyPath", { + /** + * Relation property name of the parent. + * This is used to understand what is joined. + * For example, if we join ("post.category", "categoryAlias") then "category" is a relation property. + * This value is extracted from entityOrProperty value. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.relationName)) + throw new Error("Given value must be a string representation of alias property"); + return this.relationName.substr(this.relationName.indexOf(".") + 1); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationIdAttribute.prototype, "relation", { + /** + * Relation of the parent. + * This is used to understand what is joined. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.relationName)) + throw new Error("Given value must be a string representation of alias property"); + var relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias); + var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath); + if (!relation) + throw new Error("Relation with property path " + this.relationPropertyPath + " in entity was not found."); + return relation; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationIdAttribute.prototype, "junctionAlias", { + /** + * Generates alias of junction table, whose ids we get. + */ + get: function () { + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.relationName.split("."), 2), parentAlias = _a[0], relationProperty = _a[1]; + return parentAlias + "_" + relationProperty + "_rid"; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationIdAttribute.prototype, "junctionMetadata", { + /** + * Metadata of the joined entity. + * If extra condition without entity was joined, then it will return undefined. + */ + get: function () { + return this.relation.junctionEntityMetadata; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationIdAttribute.prototype, "mapToPropertyParentAlias", { + get: function () { + return this.mapToProperty.substr(0, this.mapToProperty.indexOf(".")); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationIdAttribute.prototype, "mapToPropertyPropertyPath", { + get: function () { + return this.mapToProperty.substr(this.mapToProperty.indexOf(".") + 1); + }, + enumerable: false, + configurable: true + }); + return RelationIdAttribute; +}()); + + +//# sourceMappingURL=RelationIdAttribute.js.map + /***/ }), - -/***/ "./src/client/js/Sites/PrivacyPolicySite.ts": -/*!**************************************************!*\ - !*** ./src/client/js/Sites/PrivacyPolicySite.ts ***! - \**************************************************/ -/*! exports provided: PrivacyPolicySite */ +/* 119 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PrivacyPolicySite\", function() { return PrivacyPolicySite; });\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client/js/App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cordova-sites/dist/client/js/Legacy/Matomo */ \"./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst view = __webpack_require__(/*! ../../html/sites/privacyPolicy.html */ \"./src/client/html/sites/privacyPolicy.html\");\n\n\n\nclass PrivacyPolicySite extends cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let trackSwitch = this.findBy(\"#track-switch\");\n trackSwitch.addEventListener(\"change\", function (e) {\n cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_1__[\"Matomo\"].setTrack(this.checked === true);\n e.stopPropagation();\n e.preventDefault();\n });\n return _super.onViewLoaded.call(this);\n });\n }\n onStart(args) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let trackSwitch = this.findBy(\"#track-switch\");\n trackSwitch.checked = ((yield cordova_sites_dist_client_js_Legacy_Matomo__WEBPACK_IMPORTED_MODULE_1__[\"Matomo\"].getTrackingPromise()) === \"1\");\n // Matomo.update(\"Privacy Policy Sites\");\n return _super.onStart.call(this, args);\n });\n }\n}\ncordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_0__[\"App\"].addInitialization(app => {\n app.addDeepLink(\"privacyPolicy\", PrivacyPolicySite);\n});\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/PrivacyPolicySite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return RelationCountAttribute; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50); +/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24); + + + +var RelationCountAttribute = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationCountAttribute(expressionMap, relationCountAttribute) { + this.expressionMap = expressionMap; + _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__[/* ObjectUtils */ "a"].assign(this, relationCountAttribute || {}); + } + Object.defineProperty(RelationCountAttribute.prototype, "joinInverseSideMetadata", { + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + get: function () { + return this.relation.inverseEntityMetadata; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationCountAttribute.prototype, "parentAlias", { + /** + * Alias of the parent of this join. + * For example, if we join ("post.category", "categoryAlias") then "post" is a parent alias. + * This value is extracted from entityOrProperty value. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.relationName)) + throw new Error("Given value must be a string representation of alias property"); + return this.relationName.split(".")[0]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationCountAttribute.prototype, "relationProperty", { + /** + * Relation property name of the parent. + * This is used to understand what is joined. + * For example, if we join ("post.category", "categoryAlias") then "category" is a relation property. + * This value is extracted from entityOrProperty value. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.relationName)) + throw new Error("Given value is a string representation of alias property"); + return this.relationName.split(".")[1]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationCountAttribute.prototype, "junctionAlias", { + get: function () { + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.relationName.split("."), 2), parentAlias = _a[0], relationProperty = _a[1]; + return parentAlias + "_" + relationProperty + "_rc"; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationCountAttribute.prototype, "relation", { + /** + * Relation of the parent. + * This is used to understand what is joined. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.relationName)) + throw new Error("Given value is a string representation of alias property"); + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.relationName.split("."), 2), parentAlias = _a[0], propertyPath = _a[1]; + var relationOwnerSelection = this.expressionMap.findAliasByName(parentAlias); + var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(propertyPath); + if (!relation) + throw new Error("Relation with property path " + propertyPath + " in entity was not found."); + return relation; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationCountAttribute.prototype, "metadata", { + /** + * Metadata of the joined entity. + * If table without entity was joined, then it will return undefined. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.relationName)) + throw new Error("Given value is a string representation of alias property"); + var parentAlias = this.relationName.split(".")[0]; + var selection = this.expressionMap.findAliasByName(parentAlias); + return selection.metadata; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RelationCountAttribute.prototype, "mapToPropertyPropertyName", { + get: function () { + return this.mapToProperty.split(".")[1]; + }, + enumerable: false, + configurable: true + }); + return RelationCountAttribute; +}()); + + +//# sourceMappingURL=RelationCountAttribute.js.map + /***/ }), - -/***/ "./src/client/js/Sites/SettingsSite.ts": -/*!*********************************************!*\ - !*** ./src/client/js/Sites/SettingsSite.ts ***! - \*********************************************/ -/*! exports provided: SettingsSite */ +/* 120 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SettingsSite\", function() { return SettingsSite; });\n/* harmony import */ var cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client/js/Context/MenuSite */ \"./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Fragment_WordRotatorSettingFragment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Fragment/WordRotatorSettingFragment */ \"./src/client/js/Fragment/WordRotatorSettingFragment.ts\");\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! cordova-sites/dist/client/js/App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_2__);\nconst view = __webpack_require__(/*! ../../html/sites/settingsSite.html */ \"./src/client/html/sites/settingsSite.html\");\n\n\n\nclass SettingsSite extends cordova_sites_dist_client_js_Context_MenuSite__WEBPACK_IMPORTED_MODULE_0__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n this.addFragment(\"#wordRotatorSettings\", new _Fragment_WordRotatorSettingFragment__WEBPACK_IMPORTED_MODULE_1__[\"WordRotatorSettingFragment\"](this));\n }\n}\ncordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_2__[\"App\"].addInitialization((app) => {\n app.addDeepLink(\"settings\", SettingsSite);\n});\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/SettingsSite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ReturningResultsEntityUpdator; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6); +/* harmony import */ var _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1); + + + +/** + * Updates entity with returning results in the entity insert and update operations. + */ +var ReturningResultsEntityUpdator = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ReturningResultsEntityUpdator(queryRunner, expressionMap) { + this.queryRunner = queryRunner; + this.expressionMap = expressionMap; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Updates entities with a special columns after updation query execution. + */ + ReturningResultsEntityUpdator.prototype.update = function (updateResult, entities) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var metadata; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + metadata = this.expressionMap.mainAlias.metadata; + return [4 /*yield*/, Promise.all(entities.map(function (entity, entityIndex) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(_this, void 0, void 0, function () { + var result, returningColumns, updationColumns, entityId, loadedReturningColumns; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.queryRunner.connection.driver.isReturningSqlSupported()) return [3 /*break*/, 1]; + if (this.queryRunner.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_2__[/* OracleDriver */ "j"] && Array.isArray(updateResult.raw) && this.expressionMap.extraReturningColumns.length > 0) { + updateResult.raw = updateResult.raw.reduce(function (newRaw, rawItem, rawItemIndex) { + newRaw[_this.expressionMap.extraReturningColumns[rawItemIndex].databaseName] = rawItem[0]; + return newRaw; + }, {}); + } + result = Array.isArray(updateResult.raw) ? updateResult.raw[entityIndex] : updateResult.raw; + returningColumns = this.queryRunner.connection.driver.createGeneratedMap(metadata, result); + if (returningColumns) { + this.queryRunner.manager.merge(metadata.target, entity, returningColumns); + updateResult.generatedMaps.push(returningColumns); + } + return [3 /*break*/, 3]; + case 1: + updationColumns = this.getUpdationReturningColumns(); + if (!(updationColumns.length > 0)) return [3 /*break*/, 3]; + entityId = this.expressionMap.mainAlias.metadata.getEntityIdMap(entity); + if (!entityId) + throw new Error("Cannot update entity because entity id is not set in the entity."); + return [4 /*yield*/, this.queryRunner.manager + .createQueryBuilder() + .select(metadata.primaryColumns.map(function (column) { return metadata.targetName + "." + column.propertyPath; })) + .addSelect(this.getUpdationReturningColumns().map(function (column) { return metadata.targetName + "." + column.propertyPath; })) + .from(metadata.target, metadata.targetName) + .where(entityId) + .setOption("create-pojo") // use POJO because created object can contain default values, e.g. property = null and those properties maight be overridden by merge process + .getOne()]; + case 2: + loadedReturningColumns = _a.sent(); + if (loadedReturningColumns) { + this.queryRunner.manager.merge(metadata.target, entity, loadedReturningColumns); + updateResult.generatedMaps.push(loadedReturningColumns); + } + _a.label = 3; + case 3: return [2 /*return*/]; + } + }); + }); }))]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Updates entities with a special columns after insertion query execution. + */ + ReturningResultsEntityUpdator.prototype.insert = function (insertResult, entities) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var metadata, insertionColumns, generatedMaps, entityIds, returningResult_1; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: + metadata = this.expressionMap.mainAlias.metadata; + insertionColumns = this.getInsertionReturningColumns(); + generatedMaps = entities.map(function (entity, entityIndex) { + if (_this.queryRunner.connection.driver instanceof _driver_oracle_OracleDriver__WEBPACK_IMPORTED_MODULE_2__[/* OracleDriver */ "j"] && Array.isArray(insertResult.raw) && _this.expressionMap.extraReturningColumns.length > 0) { + insertResult.raw = insertResult.raw.reduce(function (newRaw, rawItem, rawItemIndex) { + newRaw[_this.expressionMap.extraReturningColumns[rawItemIndex].databaseName] = rawItem[0]; + return newRaw; + }, {}); + } + // get all values generated by a database for us + var result = Array.isArray(insertResult.raw) ? insertResult.raw[entityIndex] : insertResult.raw; + var generatedMap = _this.queryRunner.connection.driver.createGeneratedMap(metadata, result, entityIndex, entities.length) || {}; + // if database does not support uuid generation we need to get uuid values + // generated by orm and set them to the generatedMap + if (_this.queryRunner.connection.driver.isUUIDGenerationSupported() === false) { + metadata.generatedColumns.forEach(function (generatedColumn) { + if (generatedColumn.generationStrategy === "uuid") { + // uuid can be defined by user in a model, that's why first we get it + var uuid = generatedColumn.getEntityValue(entity); + if (!uuid) // if it was not defined by a user then InsertQueryBuilder generates it by its own, get this generated uuid value + uuid = _this.expressionMap.nativeParameters["uuid_" + generatedColumn.databaseName + entityIndex]; + _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[/* OrmUtils */ "a"].mergeDeep(generatedMap, generatedColumn.createValueMap(uuid)); + } + }); + } + _this.queryRunner.manager.merge(metadata.target, entity, generatedMap); // todo: this should not be here, but problem with below line + return generatedMap; + }); + if (!(this.queryRunner.connection.driver.isReturningSqlSupported() === false && insertionColumns.length > 0)) return [3 /*break*/, 2]; + entityIds = entities.map(function (entity) { + var entityId = metadata.getEntityIdMap(entity); + // We have to check for an empty `entityId` - if we don't, the query against the database + // effectively drops the `where` clause entirely and the first record will be returned - + // not what we want at all. + if (!entityId) + throw new Error("Cannot update entity because entity id is not set in the entity."); + return entityId; + }); + return [4 /*yield*/, this.queryRunner.manager + .createQueryBuilder() + .select(metadata.primaryColumns.map(function (column) { return metadata.targetName + "." + column.propertyPath; })) + .addSelect(insertionColumns.map(function (column) { return metadata.targetName + "." + column.propertyPath; })) + .from(metadata.target, metadata.targetName) + .where(entityIds) + .setOption("create-pojo") // use POJO because created object can contain default values, e.g. property = null and those properties maight be overridden by merge process + .getMany()]; + case 1: + returningResult_1 = _a.sent(); + entities.forEach(function (entity, entityIndex) { + _this.queryRunner.manager.merge(metadata.target, generatedMaps[entityIndex], returningResult_1[entityIndex]); + }); + _a.label = 2; + case 2: + entities.forEach(function (entity, entityIndex) { + var entityId = metadata.getEntityIdMap(entity); + insertResult.identifiers.push(entityId); + insertResult.generatedMaps.push(generatedMaps[entityIndex]); + _this.queryRunner.manager.merge(_this.expressionMap.mainAlias.metadata.target, entity, generatedMaps[entityIndex], generatedMaps[entityIndex]); // todo: why twice?! + }); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Columns we need to be returned from the database when we insert entity. + */ + ReturningResultsEntityUpdator.prototype.getInsertionReturningColumns = function () { + // for databases which support returning statement we need to return extra columns like id + // for other databases we don't need to return id column since its returned by a driver already + var needToCheckGenerated = this.queryRunner.connection.driver.isReturningSqlSupported(); + // filter out the columns of which we need database inserted values to update our entity + return this.expressionMap.mainAlias.metadata.columns.filter(function (column) { + return column.default !== undefined || + (needToCheckGenerated && column.isGenerated) || + column.isCreateDate || + column.isUpdateDate || + column.isDeleteDate || + column.isVersion; + }); + }; + /** + * Columns we need to be returned from the database when we update entity. + */ + ReturningResultsEntityUpdator.prototype.getUpdationReturningColumns = function () { + return this.expressionMap.mainAlias.metadata.columns.filter(function (column) { + return column.isUpdateDate || column.isVersion; + }); + }; + return ReturningResultsEntityUpdator; +}()); + + +//# sourceMappingURL=ReturningResultsEntityUpdator.js.map + /***/ }), - -/***/ "./src/client/js/Sites/TutorialSite.ts": -/*!*********************************************!*\ - !*** ./src/client/js/Sites/TutorialSite.ts ***! - \*********************************************/ -/*! exports provided: TutorialSite */ +/* 121 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TutorialSite\", function() { return TutorialSite; });\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cordova-sites/dist/client/js/App */ \"./node_modules/cordova-sites/dist/client/js/App.js\");\n/* harmony import */ var cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _wordrotator_Level_LevelHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../wordrotator/Level/LevelHelper */ \"./src/client/js/wordrotator/Level/LevelHelper.ts\");\n/* harmony import */ var _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../shared/model/LevelData */ \"./src/shared/model/LevelData.ts\");\n/* harmony import */ var _wordrotator_Segment_TemplateContainer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../wordrotator/Segment/TemplateContainer */ \"./src/client/js/wordrotator/Segment/TemplateContainer.js\");\n/* harmony import */ var _LevelSite__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LevelSite */ \"./src/client/js/Sites/LevelSite.ts\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! cordova-sites-easy-sync/dist/client */ \"./node_modules/cordova-sites-easy-sync/dist/client.js\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_6__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\nconst view = __webpack_require__(/*! ../../html/sites/tutorialSite.html */ \"./src/client/html/sites/tutorialSite.html\");\nclass TutorialSite extends cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"MenuSite\"] {\n constructor(siteManager) {\n super(siteManager, view);\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const res = _super.onConstruct.call(this, constructParameters);\n yield Promise.race([new cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_6__[\"SyncJob\"]().sync([_shared_model_LevelData__WEBPACK_IMPORTED_MODULE_3__[\"LevelData\"]]).catch(e => console.error(e)), new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let levelData = yield _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_3__[\"LevelData\"].findById(_LevelSite__WEBPACK_IMPORTED_MODULE_5__[\"LevelSite\"].TUTORIAL.FIRST_LEVEL);\n if (levelData !== null) {\n resolve();\n }\n }))]);\n return res;\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const res = _super.onViewLoaded.call(this);\n let leafSegmentTemplate = this.findBy(\"#segment-leaf-template\");\n let parentSegmentTemplate = this.findBy(\"#segment-parent-template\");\n let rowSegmentTemplate = this.findBy(\"#segment-row-template\");\n let triangleTemplate = this.findBy(\"#segment-triangle-template\");\n let columnTemplate = this.findBy(\"#segment-column-template\");\n leafSegmentTemplate.removeAttribute(\"id\");\n parentSegmentTemplate.removeAttribute(\"id\");\n rowSegmentTemplate.removeAttribute(\"id\");\n triangleTemplate.removeAttribute(\"id\");\n columnTemplate.removeAttribute(\"id\");\n leafSegmentTemplate.remove();\n parentSegmentTemplate.remove();\n rowSegmentTemplate.remove();\n triangleTemplate.remove();\n columnTemplate.remove();\n this.templateContainer = new _wordrotator_Segment_TemplateContainer__WEBPACK_IMPORTED_MODULE_4__[\"TemplateContainer\"](leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate);\n const tutorial1Container = this.findBy(\"#tutorial-1 .level-container\");\n const tutorial2Container = this.findBy(\"#tutorial-2 .level-container\");\n const tutorial3Container = this.findBy(\"#tutorial-3 .level-container\");\n const level1 = yield this.loadLevel(_LevelSite__WEBPACK_IMPORTED_MODULE_5__[\"LevelSite\"].TUTORIAL.FIRST_LEVEL);\n const level2 = yield this.loadLevel(_LevelSite__WEBPACK_IMPORTED_MODULE_5__[\"LevelSite\"].TUTORIAL.SECOND_LEVEL);\n const level3 = yield this.loadLevel(_LevelSite__WEBPACK_IMPORTED_MODULE_5__[\"LevelSite\"].TUTORIAL.BIG_SEGMENT_LEVEL);\n level1.setSaveAsCurrentAfterCheckWon(false);\n level2.setSaveAsCurrentAfterCheckWon(false);\n level3.setSaveAsCurrentAfterCheckWon(false);\n tutorial1Container.appendChild(level1.getRootSegment().getElement());\n tutorial2Container.appendChild(level2.getRootSegment().getElement());\n tutorial3Container.appendChild(level3.getRootSegment().getElement());\n let pointer = this.findBy(\"#tutorial-pointer\");\n pointer.remove();\n let rotatableSegments = level3.getRotatableSegments();\n let pointerSegment = rotatableSegments[2];\n pointerSegment.element.appendChild(pointer);\n this.find(\".help-action\").addEventListener(\"click\", () => {\n TutorialSite.help(level2);\n });\n return res;\n });\n }\n static help(level) {\n return __awaiter(this, void 0, void 0, function* () {\n let rotatables = level.getRotatableSegments();\n rotatables = rotatables.filter((segment) => {\n return (!segment.isSolved(false));\n });\n if (rotatables.length === 0) {\n return;\n }\n let index = Math.floor(Math.random() * rotatables.length);\n let segmentToHelp = rotatables[index];\n while (segmentToHelp.rotation !== 0) {\n segmentToHelp.rotate();\n }\n segmentToHelp.setIsRotatable(false);\n });\n }\n loadLevel(id) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n let levelData = yield _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_3__[\"LevelData\"].findById(id);\n const level = _wordrotator_Level_LevelHelper__WEBPACK_IMPORTED_MODULE_2__[\"LevelHelper\"].inflateLevel(levelData, this.templateContainer);\n level.getWonPromise().then(() => {\n console.log(\"level won!\");\n new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_0__[\"Toast\"](\"you solved the tutorial level!\").show();\n //TODO\n // this.levelWon(level);\n });\n level.createSegments();\n level.getRootSegment()._updateElement();\n return level;\n }\n catch (e) {\n console.log(\"Fehler!\");\n console.error(e);\n // this.startEndSite();\n return null;\n }\n });\n }\n}\ncordova_sites_dist_client_js_App__WEBPACK_IMPORTED_MODULE_1__[\"App\"].addInitialization(app => {\n app.addDeepLink(\"tutorial\", TutorialSite);\n});\n\n\n//# sourceURL=webpack:///./src/client/js/Sites/TutorialSite.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TableUtils; }); +var TableUtils = /** @class */ (function () { + function TableUtils() { + } + TableUtils.createTableColumnOptions = function (columnMetadata, driver) { + return { + name: columnMetadata.databaseName, + length: columnMetadata.length, + width: columnMetadata.width, + charset: columnMetadata.charset, + collation: columnMetadata.collation, + precision: columnMetadata.precision, + scale: columnMetadata.scale, + zerofill: columnMetadata.zerofill, + unsigned: columnMetadata.unsigned, + asExpression: columnMetadata.asExpression, + generatedType: columnMetadata.generatedType, + default: driver.normalizeDefault(columnMetadata), + onUpdate: columnMetadata.onUpdate, + comment: columnMetadata.comment, + isGenerated: columnMetadata.isGenerated, + generationStrategy: columnMetadata.generationStrategy, + isNullable: columnMetadata.isNullable, + type: driver.normalizeType(columnMetadata), + isPrimary: columnMetadata.isPrimary, + isUnique: driver.normalizeIsUnique(columnMetadata), + isArray: columnMetadata.isArray || false, + enum: columnMetadata.enum ? columnMetadata.enum.map(function (val) { return val + ""; }) : columnMetadata.enum, + enumName: columnMetadata.enumName, + spatialFeatureType: columnMetadata.spatialFeatureType, + srid: columnMetadata.srid + }; + }; + return TableUtils; +}()); + + +//# sourceMappingURL=TableUtils.js.map + /***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/model/LevelPlayed.ts": -/*!********************************************!*\ - !*** ./src/client/js/model/LevelPlayed.ts ***! - \********************************************/ -/*! exports provided: LevelPlayed */ +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__(75); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; + + +/***/ }), +/* 123 */ +/***/ (function(module, exports) { + +exports.f = {}.propertyIsEnumerable; + + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__(75); +var TAG = __webpack_require__(18)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; + +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = __webpack_require__(13); +var aFunction = __webpack_require__(63); +var SPECIES = __webpack_require__(18)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; + + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UserSite = void 0; + +var shared_1 = __webpack_require__(22); + +var client_1 = __webpack_require__(4); + +var UserManager_1 = __webpack_require__(99); + +var LoginSite_1 = __webpack_require__(148); + +var NotAllowedSite_1 = __webpack_require__(272); + +var UserSite = /*#__PURE__*/function (_client_1$DelegateSit) { + _inherits(UserSite, _client_1$DelegateSit); + + var _super2 = _createSuper(UserSite); + + function UserSite(site, access, allowOfflineAccess) { + var _this; + + _classCallCheck(this, UserSite); + + _this = _super2.call(this, site); + _this._access = access; + _this._allowOfflineAccess = shared_1.Helper.nonNull(allowOfflineAccess, false); + return _this; + } + + _createClass(UserSite, [{ + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this2 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return _get(_getPrototypeOf(UserSite.prototype), "onConstruct", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this3 = this; + + var res; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return UserManager_1.UserManager.getInstance().waitForGetMe(); + + case 2: + _context2.next = 4; + return this._checkRights(); + + case 4: + if (!_context2.sent) { + _context2.next = 10; + break; + } + + _context2.next = 7; + return _super.onConstruct.call(this, constructParameters); + + case 7: + res = _context2.sent; + UserManager_1.UserManager.getInstance().addLoginChangeCallback(function () { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this._checkRights(); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + }, false); + return _context2.abrupt("return", res); + + case 10: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "_checkRights", + value: function _checkRights() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.t0 = UserManager_1.UserManager.getInstance().hasAccess(this._access); + + if (_context3.t0) { + _context3.next = 8; + break; + } + + _context3.t1 = this._allowOfflineAccess; + + if (!_context3.t1) { + _context3.next = 7; + break; + } + + _context3.next = 6; + return UserManager_1.UserManager.getInstance().hasOfflineAccess(this._access); + + case 6: + _context3.t1 = _context3.sent; + + case 7: + _context3.t0 = _context3.t1; + + case 8: + if (_context3.t0) { + _context3.next = 21; + break; + } + + if (!(UserManager_1.UserManager.getInstance().isOnline() && !UserManager_1.UserManager.getInstance().isLoggedIn() && !(this._site instanceof LoginSite_1.LoginSite))) { + _context3.next = 13; + break; + } + + this.startSite(LoginSite_1.LoginSite, { + deepLink: this._site._siteManager.getDeepLinkFor(this._site), + args: this._site.getParameters() + }); + _context3.next = 17; + break; + + case 13: + if (!(this._site._siteManager.getCurrentSite() === this._site && !this.isDestroying())) { + _context3.next = 17; + break; + } + + new client_1.Toast("wrong rights").show(); + _context3.next = 17; + return this.startSite(NotAllowedSite_1.NotAllowedSite); + + case 17: + if (this.isDestroying()) { + _context3.next = 20; + break; + } + + _context3.next = 20; + return this.finish(); + + case 20: + return _context3.abrupt("return", false); + + case 21: + return _context3.abrupt("return", true); + + case 22: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "onStart", + value: function onStart(args) { + var _this4 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return _get(_getPrototypeOf(UserSite.prototype), "onStart", _this4); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return this._checkRights(); + + case 2: + if (!_context4.sent) { + _context4.next = 5; + break; + } + + _context4.next = 5; + return _super.onStart.call(this, args); + + case 5: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }]); + + return UserSite; +}(client_1.DelegateSite); + +exports.UserSite = UserSite; + +/***/ }), +/* 127 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +var __exportStar = this && this.__exportStar || function (m, exports) { + for (var p in m) { + if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); + } +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__exportStar(__webpack_require__(78), exports); + +__exportStar(__webpack_require__(202), exports); + +__exportStar(__webpack_require__(203), exports); + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EasySyncClientDb = void 0; + +var client_1 = __webpack_require__(4); + +var cordova_sites_database_1 = __webpack_require__(19); + +var ClientModel_1 = __webpack_require__(276); + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var EasySyncPartialModel_1 = __webpack_require__(202); + +var ClientPartialModel_1 = __webpack_require__(277); + +var FileMedium_1 = __webpack_require__(203); + +var ClientFileMedium_1 = __webpack_require__(150); + +var EasySyncClientDb = /*#__PURE__*/function (_cordova_sites_databa) { + _inherits(EasySyncClientDb, _cordova_sites_databa); + + var _super = _createSuper(EasySyncClientDb); + + function EasySyncClientDb(dbName) { + _classCallCheck(this, EasySyncClientDb); + + return _super.call(this, dbName || "EasySync"); + } + + _createClass(EasySyncClientDb, [{ + key: "_createConnectionOptions", + value: function _createConnectionOptions(database) { + JSObject.setPrototypeOf(EasySyncBaseModel_1.EasySyncBaseModel, ClientModel_1.ClientModel); + JSObject.setPrototypeOf(EasySyncPartialModel_1.EasySyncPartialModel, ClientPartialModel_1.ClientPartialModel); + JSObject.setPrototypeOf(EasySyncBaseModel_1.EasySyncBaseModel.prototype, ClientModel_1.ClientModel.prototype); + JSObject.setPrototypeOf(EasySyncPartialModel_1.EasySyncPartialModel.prototype, ClientPartialModel_1.ClientPartialModel.prototype); + JSObject.setPrototypeOf(FileMedium_1.FileMedium, ClientFileMedium_1.ClientFileMedium); + JSObject.setPrototypeOf(FileMedium_1.FileMedium.prototype, ClientFileMedium_1.ClientFileMedium.prototype); + + var options = _get(_getPrototypeOf(EasySyncClientDb.prototype), "_createConnectionOptions", this).call(this, database); + + options["migrationsTableName"] = "migrations"; + return options; + } + }]); + + return EasySyncClientDb; +}(cordova_sites_database_1.BaseDatabase); + +exports.EasySyncClientDb = EasySyncClientDb; +EasySyncClientDb.BASE_MODEL = null; +client_1.App.addInitialization(function () { + return __awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return EasySyncClientDb.getInstance()._connectionPromise.catch(function (e) { + if (typeof EasySyncClientDb.errorListener === "function") { + return EasySyncClientDb.errorListener.apply(EasySyncClientDb, arguments); + } else { + throw e; + } + }); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee); + })); +}); + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.LastSyncDates = void 0; + +var cordova_sites_database_1 = __webpack_require__(19); + +var LastSyncDates = /*#__PURE__*/function (_cordova_sites_databa) { + _inherits(LastSyncDates, _cordova_sites_databa); + + var _super = _createSuper(LastSyncDates); + + function LastSyncDates() { + var _this; + + _classCallCheck(this, LastSyncDates); + + _this = _super.call(this); + _this.model = ""; + _this.lastSynced = 0; + _this.where = {}; + return _this; + } + + _createClass(LastSyncDates, [{ + key: "getModel", + value: function getModel() { + return this.model; + } + }, { + key: "setModel", + value: function setModel(model) { + this.model = model; + } + }, { + key: "getLastSynced", + value: function getLastSynced() { + return this.lastSynced; + } + }, { + key: "setLastSynced", + value: function setLastSynced(lastSynced) { + this.lastSynced = lastSynced; + } + }], [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(LastSyncDates), "getColumnDefinitions", this).call(this); + + columns["model"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + nullable: true + }; + columns["lastSynced"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, + nullable: true + }; + columns["where"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.SIMPLE_JSON + }; + return columns; + } + }]); + + return LastSyncDates; +}(cordova_sites_database_1.BaseModel); + +exports.LastSyncDates = LastSyncDates; +LastSyncDates.SCHEMA_NAME = "easy-sync-last-sync-dates"; +cordova_sites_database_1.BaseDatabase.addModel(LastSyncDates); + +/***/ }), +/* 130 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelPlayed\", function() { return LevelPlayed; });\n/* harmony import */ var cordova_sites_database_dist_BaseModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites-database/dist/BaseModel */ \"./node_modules/cordova-sites-database/dist/BaseModel.js\");\n/* harmony import */ var cordova_sites_database_dist_BaseModel__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_database_dist_BaseModel__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\n/* harmony import */ var cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../shared/model/LevelData */ \"./src/shared/model/LevelData.ts\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_3__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\nclass LevelPlayed extends cordova_sites_database_dist_BaseModel__WEBPACK_IMPORTED_MODULE_0__[\"BaseModel\"] {\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"played\"] = { type: cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].TYPES.BOOLEAN, default: true };\n return columns;\n }\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"levelData\"] = {\n target: _shared_model_LevelData__WEBPACK_IMPORTED_MODULE_2__[\"LevelData\"].getSchemaName(),\n type: \"one-to-one\",\n joinColumn: true,\n // cascade: true,\n };\n return relations;\n }\n static setPlayed(levelData, played) {\n return __awaiter(this, void 0, void 0, function* () {\n played = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_3__[\"Helper\"].nonNull(played, true);\n let levelPlayed = new LevelPlayed();\n levelPlayed.levelData = levelData;\n levelPlayed.played = played;\n return yield levelPlayed.save();\n });\n }\n static getNextLevelData(renderer) {\n return __awaiter(this, void 0, void 0, function* () {\n let qb = yield this._database.createQueryBuilder(_shared_model_LevelData__WEBPACK_IMPORTED_MODULE_2__[\"LevelData\"]);\n qb = qb.select(\"COUNT(*) as count, difficulty\")\n .leftJoin(LevelPlayed, \"levelPlayed\", \"levelPlayed.levelData = LevelData.id\")\n .where(\"(deleted = 0 OR deleted = 'false')\")\n .andWhere(\"renderer IN (\" + renderer.join(\",\") + \")\")\n .andWhere(\"(levelPlayed.id IS NULL OR levelPlayed.played = 0)\")\n .groupBy(\"difficulty\")\n .orderBy(\"difficulty, LevelData.id\");\n let countRes = yield qb.getRawMany();\n let difficulty = null;\n let offset = null;\n if (!countRes.some(res => {\n if (res[\"count\"] > 0) {\n difficulty = res[\"difficulty\"];\n offset = Math.floor(Math.random() * Math.floor(res[\"count\"]));\n return true;\n }\n return false;\n })) {\n return null;\n }\n qb = (yield this._database.createQueryBuilder(_shared_model_LevelData__WEBPACK_IMPORTED_MODULE_2__[\"LevelData\"]));\n qb = qb\n .leftJoin(LevelPlayed, \"levelPlayed\", \"levelPlayed.levelData = LevelData.id\")\n .where(\"(deleted = 0 OR deleted = 'false')\")\n .andWhere(\"difficulty = \" + difficulty)\n .andWhere(\"renderer IN (\" + renderer.join(\",\") + \")\")\n .andWhere(\"(levelPlayed.id IS NULL OR levelPlayed.played = 0)\")\n .orderBy(\"LevelData.id\")\n .limit(1)\n .offset(offset);\n return yield qb.getOne();\n });\n }\n}\ncordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].addModel(LevelPlayed);\n\n\n//# sourceURL=webpack:///./src/client/js/model/LevelPlayed.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OptimisticLockVersionMismatchError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when a version check on an object that uses optimistic locking through a version field fails. + */ +var OptimisticLockVersionMismatchError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(OptimisticLockVersionMismatchError, _super); + function OptimisticLockVersionMismatchError(entity, expectedVersion, actualVersion) { + var _this = _super.call(this) || this; + _this.name = "OptimisticLockVersionMismatchError"; + Object.setPrototypeOf(_this, OptimisticLockVersionMismatchError.prototype); + _this.message = "The optimistic lock on entity " + entity + " failed, version " + expectedVersion + " was expected, but is actually " + actualVersion + "."; + return _this; + } + return OptimisticLockVersionMismatchError; +}(Error)); + + +//# sourceMappingURL=OptimisticLockVersionMismatchError.js.map + /***/ }), - -/***/ "./src/client/js/model/migration/ClientSetup.ts": -/*!******************************************************!*\ - !*** ./src/client/js/model/migration/ClientSetup.ts ***! - \******************************************************/ -/*! exports provided: ClientSetup1000000002001 */ +/* 131 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClientSetup1000000002001\", function() { return ClientSetup1000000002001; });\n/* harmony import */ var js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\n/* harmony import */ var js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _LevelPlayed__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../LevelPlayed */ \"./src/client/js/model/LevelPlayed.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\nclass ClientSetup1000000002001 {\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0__[\"MigrationHelper\"].addTableFromModelClass(_LevelPlayed__WEBPACK_IMPORTED_MODULE_1__[\"LevelPlayed\"], queryRunner);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/model/migration/ClientSetup.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return InsertResult; }); +/** + * Result object returned by InsertQueryBuilder execution. + */ +var InsertResult = /** @class */ (function () { + function InsertResult() { + /** + * Contains inserted entity id. + * Has entity-like structure (not just column database name and values). + */ + this.identifiers = []; + /** + * Generated values returned by a database. + * Has entity-like structure (not just column database name and values). + */ + this.generatedMaps = []; + } + return InsertResult; +}()); + + +//# sourceMappingURL=InsertResult.js.map + /***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/script.js": -/*!*********************************!*\ - !*** ./src/client/js/script.js ***! - \*********************************/ -/*! no exports provided */ +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +var __exportStar = this && this.__exportStar || function (m, exports) { + for (var p in m) { + if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); + } +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__exportStar(__webpack_require__(150), exports); + +__exportStar(__webpack_require__(276), exports); + +__exportStar(__webpack_require__(277), exports); + +__exportStar(__webpack_require__(128), exports); + +__exportStar(__webpack_require__(206), exports); + +__exportStar(__webpack_require__(274), exports); + +__exportStar(__webpack_require__(275), exports); + +__exportStar(__webpack_require__(129), exports); + +__exportStar(__webpack_require__(210), exports); + +__exportStar(__webpack_require__(530), exports); + +__exportStar(__webpack_require__(531), exports); + +__exportStar(__webpack_require__(532), exports); + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +var __exportStar = this && this.__exportStar || function (m, exports) { + for (var p in m) { + if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); + } +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__exportStar(__webpack_require__(126), exports); + +__exportStar(__webpack_require__(273), exports); + +__exportStar(__webpack_require__(205), exports); + +__exportStar(__webpack_require__(149), exports); + +__exportStar(__webpack_require__(529), exports); + +__exportStar(__webpack_require__(533), exports); + +__exportStar(__webpack_require__(271), exports); + +__exportStar(__webpack_require__(148), exports); + +__exportStar(__webpack_require__(272), exports); + +__exportStar(__webpack_require__(535), exports); + +__exportStar(__webpack_require__(99), exports); + +__exportStar(__webpack_require__(269), exports); + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +var core = __webpack_require__(26); +var global = __webpack_require__(11); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || (global[SHARED] = {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: core.version, + mode: __webpack_require__(88) ? 'pure' : 'global', + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +// false -> Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__(53); +var toLength = __webpack_require__(23); +var toAbsoluteIndex = __webpack_require__(90); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), +/* 136 */ +/***/ (function(module, exports) { + +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.2.2 IsArray(argument) +var cof = __webpack_require__(75); +module.exports = Array.isArray || function isArray(arg) { + return cof(arg) == 'Array'; +}; + + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + +var ITERATOR = __webpack_require__(18)('iterator'); +var SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } + +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; +}; + + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 21.2.5.3 get RegExp.prototype.flags +var anObject = __webpack_require__(13); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; + + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classof = __webpack_require__(124); +var builtinExec = RegExp.prototype.exec; + + // `RegExpExec` abstract operation +// https://tc39.github.io/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw new TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + if (classof(R) !== 'RegExp') { + throw new TypeError('RegExp#exec called on incompatible receiver'); + } + return builtinExec.call(R, S); +}; + + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +__webpack_require__(233); +var redefine = __webpack_require__(45); +var hide = __webpack_require__(52); +var fails = __webpack_require__(12); +var defined = __webpack_require__(76); +var wks = __webpack_require__(18); +var regexpExec = __webpack_require__(185); + +var SPECIES = wks('species'); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$') !== '7'; +}); + +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length === 2 && result[0] === 'a' && result[1] === 'b'; +})(); + +module.exports = function (KEY, length, exec) { + var SYMBOL = wks(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + re.exec = function () { execCalled = true; return null; }; + if (KEY === 'split') { + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + } + re[SYMBOL](''); + return !execCalled; + }) : undefined; + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var fns = exec( + defined, + SYMBOL, + ''[KEY], + function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + } + ); + var strfn = fns[0]; + var rxfn = fns[1]; + + redefine(String.prototype, KEY, strfn); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return rxfn.call(string, this); } + ); + } +}; + + +/***/ }), +/* 142 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(62); +var call = __webpack_require__(228); +var isArrayIter = __webpack_require__(180); +var anObject = __webpack_require__(13); +var toLength = __webpack_require__(23); +var getIterFn = __webpack_require__(182); +var BREAK = {}; +var RETURN = {}; +var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { + var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); + var f = ctx(fn, that, entries ? 2 : 1); + var index = 0; + var length, step, iterator, result; + if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if (result === BREAK || result === RETURN) return result; + } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { + result = call(iterator, f, step.value, entries); + if (result === BREAK || result === RETURN) return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; + + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(11); +var navigator = global.navigator; + +module.exports = navigator && navigator.userAgent || ''; + + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(11); +var $export = __webpack_require__(3); +var redefine = __webpack_require__(45); +var redefineAll = __webpack_require__(108); +var meta = __webpack_require__(83); +var forOf = __webpack_require__(142); +var anInstance = __webpack_require__(107); +var isObject = __webpack_require__(14); +var fails = __webpack_require__(12); +var $iterDetect = __webpack_require__(138); +var setToStringTag = __webpack_require__(103); +var inheritIfRequired = __webpack_require__(171); + +module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { + var Base = global[NAME]; + var C = Base; + var ADDER = IS_MAP ? 'set' : 'add'; + var proto = C && C.prototype; + var O = {}; + var fixMethod = function (KEY) { + var fn = proto[KEY]; + redefine(proto, KEY, + KEY == 'delete' ? function (a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a) { + return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { + new C().entries().next(); + }))) { + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + redefineAll(C.prototype, methods); + meta.NEED = true; + } else { + var instance = new C(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new C(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + if (!ACCEPT_ITERABLES) { + C = wrapper(function (target, iterable) { + anInstance(target, C, NAME); + var that = inheritIfRequired(new Base(), target, C); + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + // weak collections should not contains .clear method + if (IS_WEAK && proto.clear) delete proto.clear; + } + + setToStringTag(C, NAME); + + O[NAME] = C; + $export($export.G + $export.W + $export.F * (C != Base), O); + + if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); + + return C; +}; + + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(11); +var hide = __webpack_require__(52); +var uid = __webpack_require__(87); +var TYPED = uid('typed_array'); +var VIEW = uid('view'); +var ABV = !!(global.ArrayBuffer && global.DataView); +var CONSTR = ABV; +var i = 0; +var l = 9; +var Typed; + +var TypedArrayConstructors = ( + 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array' +).split(','); + +while (i < l) { + if (Typed = global[TypedArrayConstructors[i++]]) { + hide(Typed.prototype, TYPED, true); + hide(Typed.prototype, VIEW, true); + } else CONSTR = false; +} + +module.exports = { + ABV: ABV, + CONSTR: CONSTR, + TYPED: TYPED, + VIEW: VIEW +}; + + +/***/ }), +/* 146 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AbstractSite = void 0; + +var Context_1 = __webpack_require__(111); + +var Helper_1 = __webpack_require__(15); + +var Translator_1 = __webpack_require__(32); + +var ViewInflater_1 = __webpack_require__(58); + +var EventManager_1 = __webpack_require__(198); +/** + * Basisklasse für eine Seite + */ + + +var AbstractSite = /*#__PURE__*/function (_Context_1$Context) { + _inherits(AbstractSite, _Context_1$Context); + + var _super2 = _createSuper(AbstractSite); + + /** + * Construktor für eine Seite, sollte überladen werden und view sollte definiert werden. Seitenkonstruktoren bekommen NUR den siteManager übergebn + * @param siteManager + * @param view + */ + function AbstractSite(siteManager, view) { + var _this; + + _classCallCheck(this, AbstractSite); + + _this = _super2.call(this, view); + _this._isDestroying = false; + _this._isDestroying = false; //Promise und Resolver, welches erfüllt wird, wenn Seite beendet wird + + _this._finishPromiseResolver = { + resolve: null, + reject: null + }; + _this._finishPromise = new Promise(function (resolve, reject) { + _this._finishPromiseResolver = { + resolve: resolve, + reject: reject + }; + }); //Promise, welches erfüllt wird, wenn onConstruct-Promsise erfüllt wurde. Wird für onDestroy gebraucht + + _this._onConstructPromise = null; + _this._parameters = {}; + _this._result = null; + _this._siteManager = siteManager; + _this._title = { + element: null, + text: null + }; + _this._loadingSymbol = null; //Wird zum speichern der zugehörigen HistoryID genutzt + + _this._historyId = null; + return _this; + } + + _createClass(AbstractSite, [{ + key: "getTitle", + value: function getTitle() { + return this._title; + } + }, { + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this2 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return _get(_getPrototypeOf(AbstractSite.prototype), "onConstruct", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var res; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onConstruct.call(this, constructParameters); + this.setParameters(Helper_1.Helper.nonNull(constructParameters, {})); + EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_CONSTRUCT, { + site: this, + params: constructParameters + }); + return _context.abrupt("return", res); + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onStart", + value: function onStart(pauseArguments) { + var _this3 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return _get(_getPrototypeOf(AbstractSite.prototype), "onStart", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return _super.onStart.call(this, pauseArguments); + + case 2: + this._updateTitle(); + + this.updateUrl(this._parameters); + EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_START, { + site: this, + params: pauseArguments + }); + + case 5: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this4 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(AbstractSite.prototype), "onViewLoaded", _this4); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var res; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + res = _super.onViewLoaded.call(this); + EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_VIEW_LOADED, { + site: this + }); + return _context3.abrupt("return", res); + + case 3: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "onPause", + value: function onPause() { + var _this5 = this; + + var _super = Object.create(null, { + onPause: { + get: function get() { + return _get(_getPrototypeOf(AbstractSite.prototype), "onPause", _this5); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var res; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + res = _super.onPause.call(this); + EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_PAUSE, { + site: this + }); + return _context4.abrupt("return", res); + + case 3: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "onDestroy", + value: function onDestroy() { + var _this6 = this; + + var _super = Object.create(null, { + onDestroy: { + get: function get() { + return _get(_getPrototypeOf(AbstractSite.prototype), "onDestroy", _this6); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var res; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + res = _super.onDestroy.call(this); + EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_DESTROY, { + site: this + }); + return _context5.abrupt("return", res); + + case 3: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + /** + * Setzt den Titel der Website + * + * @param titleElement + * @param title + */ + + }, { + key: "setTitle", + value: function setTitle(titleElement, title) { + if (typeof titleElement === "string") { + var args = title; + title = titleElement; + titleElement = Translator_1.Translator.makePersistentTranslation(title, args); + } + + title = Helper_1.Helper.nonNull(title, titleElement.textContent); + this._title = { + element: titleElement, + text: title + }; + + this._updateTitle(); + } + }, { + key: "setParameter", + value: function setParameter(name, value) { + this._parameters[name] = value; + this.updateUrl(this._parameters); + } + }, { + key: "setParameters", + value: function setParameters(parameters) { + this._parameters = parameters; + this.updateUrl(this._parameters); + } + }, { + key: "getParameters", + value: function getParameters() { + return this._parameters; + } + }, { + key: "showLoadingSymbol", + value: function showLoadingSymbol() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var view; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + if (!Helper_1.Helper.isNull(this._loadingSymbol)) { + _context6.next = 6; + break; + } + + this._loadingSymbol = ViewInflater_1.ViewInflater.createLoadingSymbol("overlay"); + _context6.next = 4; + return this.getViewPromise(); + + case 4: + view = _context6.sent; + + if (Helper_1.Helper.isNotNull(this._loadingSymbol)) { + view.appendChild(this._loadingSymbol); + } + + case 6: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "removeLoadingSymbol", + value: function removeLoadingSymbol() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + if (Helper_1.Helper.isNotNull(this._loadingSymbol)) { + this._loadingSymbol.remove(); + + this._loadingSymbol = null; + } + + case 1: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + }, { + key: "onBeforeUnload", + value: function onBeforeUnload(e) { + return null; + } + /** + * Updatet den Title der Webseite + * @protected + */ + + }, { + key: "_updateTitle", + value: function _updateTitle() { + if (this._state === Context_1.Context.STATE_RUNNING) { + this._siteManager.updateTitle(this._title.text); + } + } + }, { + key: "updateUrl", + value: function updateUrl(args) { + if (this._state === Context_1.Context.STATE_RUNNING) { + this._siteManager.updateUrl(this, args); + } + } + /** + * Startet eine andere Seite mit den angegebenen Parametern + * + * @param site + * @param args + * @returns {*|Promise<*>} + */ + + }, { + key: "startSite", + value: function startSite(site, args) { + return this._siteManager.startSite(site, args); + } + /** + * Alias für + * this.startSite(...); + * this.finish(...); + * + * @param site + * @param args + * @param result + * @returns {*|Promise<*>} + */ + + }, { + key: "finishAndStartSite", + value: function finishAndStartSite(site, args, result) { + var res = this.startSite(site, args); + this.finish(result); + return res; + } + /** + * Beendet die aktuelle Seite. Kann ein Ergebnis setzen + * + * @param result + */ + + }, { + key: "finish", + value: function finish(result) { + if (!(this._isDestroying || this._state === Context_1.Context.STATE_DESTROYED)) { + this._isDestroying = true; + + if (Helper_1.Helper.isNotNull(result)) { + this.setResult(result); + } + + return this._siteManager.endSite(this); + } + } + }, { + key: "goBack", + value: function goBack() { + if (this._state === Context_1.Context.STATE_RUNNING) { + this._siteManager.goBack(); + } + } + /** + * Wird aufgerufen, falls zurück gedrückt wird. Gib false zurück, um das beenden der Seite zu verhindern + */ + + }, { + key: "onBackPressed", + value: function onBackPressed() {} + /** + * TODO Einbauen + */ + + }, { + key: "onMenuPressed", + value: function onMenuPressed() {} + /** + * TODO Einbauen + */ + + }, { + key: "onSearchPressed", + value: function onSearchPressed() {} + /** + * Gibt das FinishPromise zurück + * @returns {Promise} + */ + + }, { + key: "getFinishPromise", + value: function getFinishPromise() { + return this._finishPromise; + } + /** + * Setzt das Resultat. Letztes Setzen gilt + * @param result + */ + + }, { + key: "setResult", + value: function setResult(result) { + this._result = result; + } + /** + * Gibt den FinishResolver zurück. Genutzt, um FinishPromise zu resolven order rejecten + * @returns {*} + */ + + }, { + key: "getFinishResolver", + value: function getFinishResolver() { + return this._finishPromiseResolver; + } + }, { + key: "addEventListener", + value: function addEventListener(siteEvent, listener) { + var _this7 = this; + + return EventManager_1.EventManager.getInstance().addListener(siteEvent, function (data) { + if (data.site && data.site instanceof _this7.constructor) { + listener(data); + } + }); + } + }, { + key: "isDestroying", + value: function isDestroying() { + return this._isDestroying; + } + }]); + + return AbstractSite; +}(Context_1.Context); + +exports.AbstractSite = AbstractSite; +AbstractSite.EVENT = { + ON_CONSTRUCT: "abstract-site-on-construct", + ON_VIEW_LOADED: "abstract-site-on-view-loaded", + ON_START: "abstract-site-on-start", + ON_PAUSE: "abstract-site-on-pause", + ON_DESTROY: "abstract-site-on-destroy" +}; + +/***/ }), +/* 147 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeorm = __webpack_require__(47); + +var typeorm = _typeorm; + +var BaseDatabase = /*#__PURE__*/function () { + function BaseDatabase(database) { + _classCallCheck(this, BaseDatabase); + + var options = this._createConnectionOptions(database); + + this._connectionPromise = this._createConnection(options); + } + + _createClass(BaseDatabase, [{ + key: "_createConnection", + value: function _createConnection(options) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!(options.type === "sqljs")) { + _context.next = 4; + break; + } + + _context.next = 3; + return window["initSqlJs"](); + + case 3: + window["SQL"] = _context.sent; + + case 4: + return _context.abrupt("return", typeorm.createConnection(options).catch(function (e) { + console.error(e); + return Promise.reject(e); + })); + + case 5: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }, { + key: "_createConnectionOptions", + value: function _createConnectionOptions(database) { + var options = BaseDatabase.CONNECTION_OPTIONS; + + if (typeof device === "undefined" || device.platform !== "browser") { + options.type = "cordova"; + options.database = database; + } else { + var saveTimeout = null; + options.type = "sqljs"; + options.location = database; + options.autoSave = true; + options.useLocalForage = true; //Deactivated delay of saving since PRAGMA foreign_keys = ON is not saved with delay (why ever!) + // options.autoSaveCallback = function () { + // clearTimeout(saveTimeout); + // saveTimeout = setTimeout(() => { + // typeorm.getSqljsManager().saveDatabase(); + // }, 150); + // } + } + + options.entities = this.getEntityDefinitions(); // options.migrations = this.constructor._migrations; + + return options; + } + }, { + key: "getEntityDefinitions", + value: function getEntityDefinitions() { + var _this = this; + + var entities = []; + Object.keys(BaseDatabase._models).forEach(function (modelName) { + BaseDatabase._models[modelName]._database = _this; + entities.push(new typeorm.EntitySchema(BaseDatabase._models[modelName].getSchemaDefinition())); + }); // console.log("entities", entities); + + return entities; + } + }, { + key: "saveEntity", + value: function saveEntity(entity) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var repository; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + repository = null; + + if (!Array.isArray(entity)) { + _context2.next = 9; + break; + } + + if (!(entity.length === 0)) { + _context2.next = 4; + break; + } + + return _context2.abrupt("return", entity); + + case 4: + _context2.next = 6; + return this._getRepository(entity[0].constructor); + + case 6: + repository = _context2.sent; + _context2.next = 12; + break; + + case 9: + _context2.next = 11; + return this._getRepository(entity.constructor); + + case 11: + repository = _context2.sent; + + case 12: + return _context2.abrupt("return", repository.save(entity)); + + case 13: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "findEntities", + value: function findEntities(model, where, order, limit, offset, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var repository; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return this._getRepository(model); + + case 2: + repository = _context3.sent; + return _context3.abrupt("return", BaseDatabase._setLoaded(repository.find(BaseDatabase._buildQuery(where, order, limit, offset, relations)))); + + case 4: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "findAndCountEntities", + value: function findAndCountEntities(model, where, order, limit, offset, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var repository; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return this._getRepository(model); + + case 2: + repository = _context4.sent; + return _context4.abrupt("return", BaseDatabase._setLoaded(repository.findAndCount(BaseDatabase._buildQuery(where, order, limit, offset, relations)))); + + case 4: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "findOneEntity", + value: function findOneEntity(model, where, order, offset, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var repository; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return this._getRepository(model); + + case 2: + repository = _context5.sent; + return _context5.abrupt("return", BaseDatabase._setLoaded(repository.findOne(BaseDatabase._buildQuery(where, order, undefined, offset, relations)))); + + case 4: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + }, { + key: "findById", + value: function findById(model, id, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var repository; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return this._getRepository(model); + + case 2: + repository = _context6.sent; + return _context6.abrupt("return", BaseDatabase._setLoaded(repository.findOne(id, BaseDatabase._buildQuery(undefined, undefined, undefined, undefined, relations)))); + + case 4: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "findByIds", + value: function findByIds(model, ids, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var repository; + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + _context7.next = 2; + return this._getRepository(model); + + case 2: + repository = _context7.sent; + return _context7.abrupt("return", BaseDatabase._setLoaded(repository.findByIds(ids, BaseDatabase._buildQuery(undefined, undefined, undefined, undefined, relations)))); + + case 4: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + }, { + key: "clearModel", + value: function clearModel(model) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var repository; + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + _context8.next = 2; + return this._getRepository(model); + + case 2: + repository = _context8.sent; + return _context8.abrupt("return", repository.clear()); + + case 4: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "_getRepository", + value: function _getRepository(model) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + var connection; + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return this._connectionPromise; + + case 2: + connection = _context9.sent; + return _context9.abrupt("return", connection.getRepository(model)); + + case 4: + case "end": + return _context9.stop(); + } + } + }, _callee9, this); + })); + } + }, { + key: "createQueryBuilder", + value: function createQueryBuilder(model) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + var repo, connection; + return regeneratorRuntime.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + if (!model) { + _context10.next = 7; + break; + } + + _context10.next = 3; + return this._getRepository(model); + + case 3: + repo = _context10.sent; + return _context10.abrupt("return", repo.createQueryBuilder(model.getSchemaName())); + + case 7: + _context10.next = 9; + return this._connectionPromise; + + case 9: + connection = _context10.sent; + return _context10.abrupt("return", connection.createQueryBuilder()); + + case 11: + case "end": + return _context10.stop(); + } + } + }, _callee10, this); + })); + } + }, { + key: "createQueryRunner", + value: function createQueryRunner() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee11() { + var connection; + return regeneratorRuntime.wrap(function _callee11$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + _context11.next = 2; + return this._connectionPromise; + + case 2: + connection = _context11.sent; + return _context11.abrupt("return", connection.createQueryRunner()); + + case 4: + case "end": + return _context11.stop(); + } + } + }, _callee11, this); + })); + } + }, { + key: "deleteEntity", + value: function deleteEntity(entity, model) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee12() { + var ids, repository; + return regeneratorRuntime.wrap(function _callee12$(_context12) { + while (1) { + switch (_context12.prev = _context12.next) { + case 0: + if (!Array.isArray(entity)) { + _context12.next = 7; + break; + } + + if (!(entity.length === 0)) { + _context12.next = 3; + break; + } + + return _context12.abrupt("return", entity); + + case 3: + if (!model) { + model = entity[0].constructor; + } + + if (typeof entity[0] !== "number") { + ids = []; + entity.forEach(function (ent) { + return ids.push(ent.id); + }); + entity = ids; + } + + _context12.next = 9; + break; + + case 7: + if (!model) { + model = entity.constructor; + } + + if (typeof entity !== "number") { + entity = entity.id; + } + + case 9: + _context12.next = 11; + return this._getRepository(model); + + case 11: + repository = _context12.sent; + return _context12.abrupt("return", repository.delete(entity)); + + case 13: + case "end": + return _context12.stop(); + } + } + }, _callee12, this); + })); + } + }, { + key: "rawQuery", + value: function rawQuery(sql, params) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee13() { + return regeneratorRuntime.wrap(function _callee13$(_context13) { + while (1) { + switch (_context13.prev = _context13.next) { + case 0: + _context13.next = 2; + return this._connectionPromise; + + case 2: + return _context13.abrupt("return", _context13.sent.query(sql, params)); + + case 3: + case "end": + return _context13.stop(); + } + } + }, _callee13, this); + })); + } + }, { + key: "waitForConnection", + value: function waitForConnection() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee14() { + return regeneratorRuntime.wrap(function _callee14$(_context14) { + while (1) { + switch (_context14.prev = _context14.next) { + case 0: + return _context14.abrupt("return", this._connectionPromise); + + case 1: + case "end": + return _context14.stop(); + } + } + }, _callee14, this); + })); + } + /** + * @return {BaseDatabase} + */ + + }], [{ + key: "_buildQuery", + value: function _buildQuery(where, order, limit, offset, relations) { + var query = {}; + + if (where) { + query["where"] = where; + } + + if (order) { + query["order"] = order; + } + + if (limit) { + query["take"] = limit; + } + + if (offset) { + query["skip"] = offset; + } + + if (relations) { + query["relations"] = relations; + } + + return query; + } + }, { + key: "_setLoaded", + value: function _setLoaded(models) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee15() { + var isArray; + return regeneratorRuntime.wrap(function _callee15$(_context15) { + while (1) { + switch (_context15.prev = _context15.next) { + case 0: + _context15.next = 2; + return models; + + case 2: + models = _context15.sent; + + if (!(models === null || models === undefined)) { + _context15.next = 5; + break; + } + + return _context15.abrupt("return", null); + + case 5: + isArray = Array.isArray(models); + + if (!isArray) { + models = [models]; + } + + models.forEach(function (models) { + return models.setLoaded(true); + }); + return _context15.abrupt("return", isArray ? models : models[0]); + + case 9: + case "end": + return _context15.stop(); + } + } + }, _callee15); + })); + } + }, { + key: "getInstance", + value: function getInstance() { + if (!this.instance) { + this.instance = new this(); + } + + return this.instance; + } + }, { + key: "addModel", + value: function addModel(model) { + BaseDatabase._models[model.getSchemaName()] = model; + } + }, { + key: "getModel", + value: function getModel(modelName) { + if (modelName) { + return this._models[modelName]; + } else { + return this._models; + } + } + }]); + + return BaseDatabase; +}(); + +exports.BaseDatabase = BaseDatabase; +BaseDatabase._models = {}; +BaseDatabase.CONNECTION_OPTIONS = { + location: "default", + // autoSave: true, + logging: ["error", "warn"], + synchronize: true +}; +BaseDatabase.TYPES = { + INTEGER: "int", + FLOAT: "float", + DATE: "datetime", + STRING: "varchar", + TEXT: "text", + MEDIUMTEXT: "mediumtext", + BOOLEAN: "boolean", + JSON: "json", + SIMPLE_JSON: "simple-json", + MY_JSON: "my-json" +}; + +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.LoginSite = void 0; + +var UserSite_1 = __webpack_require__(126); + +var client_1 = __webpack_require__(4); + +var view = __webpack_require__(525); + +var StartUserSiteMenuAction_1 = __webpack_require__(205); + +var UserManager_1 = __webpack_require__(99); + +var UserMenuAction_1 = __webpack_require__(149); + +var ForgotPasswordSite_1 = __webpack_require__(271); + +var LoginSite = /*#__PURE__*/function (_client_1$MenuSite) { + _inherits(LoginSite, _client_1$MenuSite); + + var _super2 = _createSuper(LoginSite); + + function LoginSite(siteManager) { + var _this; + + _classCallCheck(this, LoginSite); + + _this = _super2.call(this, siteManager, view); + + _this.addDelegate(new UserSite_1.UserSite(_assertThisInitialized(_this), LoginSite.ACCESS)); + + return _this; + } + + _createClass(LoginSite, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this2 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(LoginSite.prototype), "onViewLoaded", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this3 = this; + + var res, form, listener; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + res = _super.onViewLoaded.call(this); + form = new client_1.Form(this.findBy("#login-form"), function (data) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return UserManager_1.UserManager.getInstance().login(data["email"], data["password"], client_1.Helper.isNotNull(data["saveLogin"])); + + case 2: + if (!_context.sent) { + _context.next = 8; + break; + } + + new client_1.Toast("welcome back").show(); + _context.next = 6; + return this.finish(); + + case 6: + _context.next = 9; + break; + + case 8: + form.setErrors({ + "email": "email or password is wrong" + }); // await this.removeLoadingSymbol(); + + case 9: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + }); + + listener = function listener() { + return form.clearErrors(); + }; + + this.findBy("#login-form [name=email]").addEventListener("keydown", listener); + this.findBy("#login-form [name=password]").addEventListener("keydown", listener); + this.findBy("#forgot-pw").addEventListener("click", function () { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + this.startSite(ForgotPasswordSite_1.ForgotPasswordSite); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + }); + return _context3.abrupt("return", res); + + case 7: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }]); + + return LoginSite; +}(client_1.MenuSite); + +exports.LoginSite = LoginSite; +LoginSite.ACCESS = "loggedOut"; +LoginSite.LOGOUT_ACCESS = "loggedIn"; +LoginSite.ADD_LOGIN_ACTION = true; +LoginSite.ADD_LOGOUT_ACTION = true; +client_1.App.addInitialization(function (app) { + if (LoginSite.ADD_LOGIN_ACTION) { + client_1.NavbarFragment.defaultActions.push(new StartUserSiteMenuAction_1.StartUserSiteMenuAction("login", LoginSite.ACCESS, LoginSite)); + } + + if (LoginSite.ADD_LOGOUT_ACTION) { + client_1.NavbarFragment.defaultActions.push(new UserMenuAction_1.UserMenuAction("logout", LoginSite.LOGOUT_ACCESS, function () { + return __awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return UserManager_1.UserManager.getInstance().logout(); + + case 2: + case "end": + return _context4.stop(); + } + } + }, _callee4); + })); + })); + } + + app.addDeepLink("login", LoginSite); +}); + +/***/ }), +/* 149 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UserMenuAction = void 0; + +var client_1 = __webpack_require__(4); + +var UserManager_1 = __webpack_require__(99); + +var Helper_1 = __webpack_require__(7); + +var UserMenuAction = /*#__PURE__*/function (_client_1$MenuAction) { + _inherits(UserMenuAction, _client_1$MenuAction); + + var _super = _createSuper(UserMenuAction); + + function UserMenuAction(name, access, action, showFor, order, icon) { + var _this; + + _classCallCheck(this, UserMenuAction); + + _this = _super.call(this, name, action, showFor, order, icon); + _this._access = access; + _this._loginChangedCallbackId = UserManager_1.UserManager.getInstance().addLoginChangeCallback(function () { + _this.redraw(); + }); + return _this; + } + + _createClass(UserMenuAction, [{ + key: "isVisible", + value: function isVisible() { + return _get(_getPrototypeOf(UserMenuAction.prototype), "isVisible", this).call(this) && UserManager_1.UserManager.getInstance().hasAccess(this._access); + } + }, { + key: "isActivated", + value: function isActivated() { + return _get(_getPrototypeOf(UserMenuAction.prototype), "isActivated", this).call(this) && UserManager_1.UserManager.getInstance().hasAccess(this._access); + } + }, { + key: "copy", + value: function copy(action) { + var copiedAction = Helper_1.Helper.nonNull(action, new UserMenuAction()); + copiedAction._access = this._access; + return _get(_getPrototypeOf(UserMenuAction.prototype), "copy", this).call(this, copiedAction); + } + }]); + + return UserMenuAction; +}(client_1.MenuAction); + +exports.UserMenuAction = UserMenuAction; + +/***/ }), +/* 150 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ClientFileMedium = void 0; + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var FileTransferPromise_1 = __webpack_require__(274); + +var Helper_1 = __webpack_require__(7); + +var FilePromise_1 = __webpack_require__(206); + +var ClientFileMedium = /*#__PURE__*/function (_EasySyncBaseModel_1$) { + _inherits(ClientFileMedium, _EasySyncBaseModel_1$); + + var _super2 = _createSuper(ClientFileMedium); + + function ClientFileMedium() { + var _this; + + _classCallCheck(this, ClientFileMedium); + + _this = _super2.apply(this, arguments); + _this.saveOffline = true; + _this._isDownloaded = true; + return _this; + } + + _createClass(ClientFileMedium, [{ + key: "setLoaded", + value: function setLoaded(isLoaded) { + var _this2 = this; + + // @ts-ignore + _get(_getPrototypeOf(ClientFileMedium.prototype), "setLoaded", this).call(this, isLoaded); + + this._isDownloaded = true; + FilePromise_1.FilePromise.open(this.src, { + create: false + }).then(function () { + return _this2._isDownloaded = true; + }).catch(function (e) { + console.log("not downloaded, yet!"); + _this2._isDownloaded = false; + + ClientFileMedium._handleImages(_this2); + }); + } + }, { + key: "save", + value: function save() { + var _this3 = this; + + var _super = Object.create(null, { + save: { + get: function get() { + return _get(_getPrototypeOf(ClientFileMedium.prototype), "save", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return ClientFileMedium._handleImages(this); + + case 2: + return _context.abrupt("return", _super.save.call(this)); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }], [{ + key: "saveMany", + value: function saveMany(entities) { + var _this4 = this; + + var _super = Object.create(null, { + saveMany: { + get: function get() { + return _get(_getPrototypeOf(ClientFileMedium), "saveMany", _this4); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return ClientFileMedium._handleImages(entities); + + case 2: + return _context2.abrupt("return", _super.saveMany.call(this, entities)); + + case 3: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "_handleImages", + value: function _handleImages(entities) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this5 = this; + + var isArray; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + isArray = Array.isArray(entities); + + if (!isArray) { + entities = [entities]; + } + + _context4.next = 4; + return Helper_1.Helper.asyncForEach(entities, function (entity) { + return __awaiter(_this5, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + if (!(entity.saveOffline && device.platform !== "browser" && !entity.src.startsWith("data") && !entity.src.startsWith("http") && !entity.src.startsWith("//"))) { + _context3.next = 4; + break; + } + + _context3.next = 3; + return new FileTransferPromise_1.FileTransferPromise(entity.getServerUrl(false), entity.src).download().catch(function (e) { + return console.log(e); + }); + + case 3: + entity._isDownloaded = true; + + case 4: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + }, true); + + case 4: + case "end": + return _context4.stop(); + } + } + }, _callee4); + })); + } + }]); + + return ClientFileMedium; +}(EasySyncBaseModel_1.EasySyncBaseModel); + +exports.ClientFileMedium = ClientFileMedium; + +/***/ }), +/* 151 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _translations_de_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../translations/de.json */ \"./src/client/translations/de.json\");\nvar _translations_de_json__WEBPACK_IMPORTED_MODULE_0___namespace = /*#__PURE__*/__webpack_require__.t(/*! ../translations/de.json */ \"./src/client/translations/de.json\", 1);\n/* harmony import */ var _translations_en_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../translations/en.json */ \"./src/client/translations/en.json\");\nvar _translations_en_json__WEBPACK_IMPORTED_MODULE_1___namespace = /*#__PURE__*/__webpack_require__.t(/*! ../translations/en.json */ \"./src/client/translations/en.json\", 1);\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var cordova_sites_user_management_dist_client_js_translationInit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! cordova-sites-user-management/dist/client/js/translationInit */ \"./node_modules/cordova-sites-user-management/dist/client/js/translationInit.js\");\n/* harmony import */ var cordova_sites_user_management_dist_client_js_translationInit__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_user_management_dist_client_js_translationInit__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var cordova_sites_dist_client_js_translationInit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! cordova-sites/dist/client/js/translationInit */ \"./node_modules/cordova-sites/dist/client/js/translationInit.js\");\n/* harmony import */ var cordova_sites_dist_client_js_translationInit__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_translationInit__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var cordova_sites_user_management_dist_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! cordova-sites-user-management/dist/client */ \"./node_modules/cordova-sites-user-management/dist/client.js\");\n/* harmony import */ var cordova_sites_user_management_dist_client__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_user_management_dist_client__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\n/* harmony import */ var cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var cordova_sites_user_management_dist_shared_migrations_DeleteUserManagement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! cordova-sites-user-management/dist/shared//migrations/DeleteUserManagement */ \"./node_modules/cordova-sites-user-management/dist/shared/migrations/DeleteUserManagement.js\");\n/* harmony import */ var cordova_sites_user_management_dist_shared_migrations_DeleteUserManagement__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_user_management_dist_shared_migrations_DeleteUserManagement__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var cordova_sites_user_management_dist_shared_migrations_SetupUserManagement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! cordova-sites-user-management/dist/shared/migrations/SetupUserManagement */ \"./node_modules/cordova-sites-user-management/dist/shared/migrations/SetupUserManagement.js\");\n/* harmony import */ var cordova_sites_user_management_dist_shared_migrations_SetupUserManagement__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_user_management_dist_shared_migrations_SetupUserManagement__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _shared_model_migration_shared_Setup__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../shared/model/migration/shared/Setup */ \"./src/shared/model/migration/shared/Setup.ts\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! cordova-sites-easy-sync/dist/client */ \"./node_modules/cordova-sites-easy-sync/dist/client.js\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Sites_MainMenuSite__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Sites/MainMenuSite */ \"./src/client/js/Sites/MainMenuSite.ts\");\n/* harmony import */ var _model_migration_ClientSetup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./model/migration/ClientSetup */ \"./src/client/js/model/migration/ClientSetup.ts\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client_EasySyncClientDb__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! cordova-sites-easy-sync/dist/client/EasySyncClientDb */ \"./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js\");\n/* harmony import */ var cordova_sites_easy_sync_dist_client_EasySyncClientDb__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_easy_sync_dist_client_EasySyncClientDb__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var cordova_sites_dist_client_js_Context_Menu_NavbarFragment__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! cordova-sites/dist/client/js/Context/Menu/NavbarFragment */ \"./node_modules/cordova-sites/dist/client/js/Context/Menu/NavbarFragment.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Context_Menu_NavbarFragment__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Context_Menu_NavbarFragment__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! cordova-sites/dist/client/js/NativeStoragePromise */ \"./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js\");\n/* harmony import */ var cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _sound_brightAndBeautifull_mp3__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../sound/brightAndBeautifull__.mp3 */ \"./src/client/sound/brightAndBeautifull__.mp3\");\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! cordova-sites/dist/client/js/Sound/SoundManager */ \"./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js\");\n/* harmony import */ var cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_17__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nwindow[\"JSObject\"] = Object;\n\n//Disable Google Analytics for VideoJS\nwindow[\"HELP_IMPROVE_VIDEOJS\"] = false;\n\ncordova_sites_user_management_dist_client__WEBPACK_IMPORTED_MODULE_5__[\"LoginSite\"].ADD_LOGIN_ACTION = false;\ncordova_sites_user_management_dist_client__WEBPACK_IMPORTED_MODULE_5__[\"RegistrationSite\"].ADD_REGISTRATION_ACTION = false;\n\ncordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__[\"App\"].addInitialization(async () => {\n cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__[\"Translator\"].init({\n translations: {\n \"de\": _translations_de_json__WEBPACK_IMPORTED_MODULE_0__,\n \"en\": _translations_en_json__WEBPACK_IMPORTED_MODULE_1__\n },\n fallbackLanguage: \"de\",\n // markTranslations: true,\n markUntranslatedTranslations: true,\n });\n\n //Setting Title\n cordova_sites_dist_client_js_Context_Menu_NavbarFragment__WEBPACK_IMPORTED_MODULE_14__[\"NavbarFragment\"].title = \"WordRotator\";\n\n let soundManager = cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_17__[\"SoundManager\"].getInstance();\n soundManager.play(cordova_sites_dist_client_js_Sound_SoundManager__WEBPACK_IMPORTED_MODULE_17__[\"SoundManager\"].CHANNELS.MUSIC, {\n audio: _sound_brightAndBeautifull_mp3__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n loop: true,\n volume: 0.6,\n muted: (await cordova_sites_dist_client_js_NativeStoragePromise__WEBPACK_IMPORTED_MODULE_15__[\"NativeStoragePromise\"].getItem(\"play-music\", \"1\") !== \"1\")\n }).catch(e => console.error(e));\n\n await cordova_sites_user_management_dist_client__WEBPACK_IMPORTED_MODULE_5__[\"UserManager\"].getInstance().getMe().catch(e => console.error(e));\n\n cordova_sites_user_management_dist_client__WEBPACK_IMPORTED_MODULE_5__[\"UserManager\"].getInstance().addLoginChangeCallback(async (isLoggedIn) => {\n if (isLoggedIn) {\n // await new SyncJob().sync([UserManager.syncParamFor(Definition), UserManager.syncParamFor(ExerciseProgress), UserManager.syncParamFor(WrongAnswer)]).catch(e => console.error(e));\n }\n });\n});\n\ncordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__[\"DataManager\"]._basePath = 'https://wordRotator.silas.link/api/v1/';\ncordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__[\"DataManager\"].onlineCallback = isOnline => {\n if (!isOnline){\n new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__[\"Toast\"](\"not online!\").show();\n }\n};\n\nObject.assign(cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_6__[\"BaseDatabase\"].CONNECTION_OPTIONS, {\n logging: [\"error\",],\n synchronize: false,\n migrationsRun: true,\n migrations: [\n cordova_sites_user_management_dist_shared_migrations_DeleteUserManagement__WEBPACK_IMPORTED_MODULE_7__[\"DeleteUserManagement1000000000000\"],\n cordova_sites_easy_sync_dist_client__WEBPACK_IMPORTED_MODULE_10__[\"SetupEasySync1000000000500\"],\n cordova_sites_user_management_dist_shared_migrations_SetupUserManagement__WEBPACK_IMPORTED_MODULE_8__[\"SetupUserManagement1000000001000\"],\n _shared_model_migration_shared_Setup__WEBPACK_IMPORTED_MODULE_9__[\"Setup1000000002000\"],\n _model_migration_ClientSetup__WEBPACK_IMPORTED_MODULE_12__[\"ClientSetup1000000002001\"],\n ]\n});\n\nlet app = new cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_2__[\"App\"]();\napp.start(_Sites_MainMenuSite__WEBPACK_IMPORTED_MODULE_11__[\"MainMenuSite\"]).catch(e => console.error(e)).then(async () => {\n window[\"queryDb\"] = async (sql) => {\n // SELECT name FROM my_db.sqlite_master WHERE type='table';\n\n\n // console.log(\"DB\", EasySyncClientDb.getInstance());\n let res = await cordova_sites_easy_sync_dist_client_EasySyncClientDb__WEBPACK_IMPORTED_MODULE_13__[\"EasySyncClientDb\"].getInstance().rawQuery(sql);\n console.log(res);\n return res;\n }\n});\napp.ready(() => {\n console.log(\"initialisation over\", new Date());\n\n if (device.platform === \"browser\"){\n // Check that service workers are supported\n if ('serviceWorker' in navigator) {\n // Use the window load event to keep the page load performant\n window.addEventListener('load', () => {\n navigator.serviceWorker.register('service-worker.js');\n });\n }\n }\n\n});\n\n\n//# sourceURL=webpack:///./src/client/js/script.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CannotCreateEntityIdMapError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when user tries to create entity id map from the mixed id value, + * but id value is a single value when entity requires multiple values. + */ +var CannotCreateEntityIdMapError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(CannotCreateEntityIdMapError, _super); + function CannotCreateEntityIdMapError(metadata, id) { + var _this = _super.call(this) || this; + _this.name = "CannotCreateEntityIdMapError"; + Object.setPrototypeOf(_this, CannotCreateEntityIdMapError.prototype); + var objectExample = metadata.primaryColumns.reduce(function (object, column, index) { + column.setEntityValue(object, index + 1); + return object; + }, {}); + _this.message = "Cannot use given entity id \"" + id + "\" because \"" + metadata.targetName + "\" contains multiple primary columns, you must provide object in following form: " + JSON.stringify(objectExample) + " as an id."; + return _this; + } + return CannotCreateEntityIdMapError; +}(Error)); + + +//# sourceMappingURL=CannotCreateEntityIdMapError.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/BigSegmentsLevels.js": -/*!**************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/BigSegmentsLevels.js ***! - \**************************************************************/ -/*! exports provided: BigSegmentsLevels */ +/* 152 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BigSegmentsLevels\", function() { return BigSegmentsLevels; });\n/* harmony import */ var _Level__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Level */ \"./src/client/js/wordrotator/Level/Level.js\");\n/* harmony import */ var _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Segment/RowSegment */ \"./src/client/js/wordrotator/Segment/RowSegment.js\");\n/* harmony import */ var _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Segment/ParentSegment */ \"./src/client/js/wordrotator/Segment/ParentSegment.js\");\n/* harmony import */ var _Segment_ColumnSegment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Segment/ColumnSegment */ \"./src/client/js/wordrotator/Segment/ColumnSegment.js\");\n\n\n\n\n\nclass BigSegmentsLevels extends _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]{\n constructor(templateContainer, wordLength, bigSegmentPositions) {\n super(templateContainer);\n this.wordLength = wordLength;\n this.bigSegmentPositions = bigSegmentPositions;\n }\n\n createSegments() {\n if (this.words.length >= 4 &&\n this.words[0].length >= this.wordLength &&\n this.words[1].length >= this.wordLength &&\n this.words[2].length >= this.wordLength &&\n this.words[3].length >= this.wordLength &&\n this.wordLength >= 4\n ) {\n let leafsWords = [];\n leafsWords[0] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n leafsWords[1] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n leafsWords[2] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate());\n leafsWords[3] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_1__[\"RowSegment\"](this.templateContainer.copyRowTemplate());\n for (let i = 0; i < this.wordLength / 2; i++) {\n let parents = [];\n parents[0] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[1] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n\n parents[0].addChild(leafsWords[0][2 * i]);\n parents[0].addChild(leafsWords[0][2 * i + 1]);\n parents[0].addChild(leafsWords[1][2 * i]);\n parents[0].addChild(leafsWords[1][2 * i + 1]);\n\n parents[1].addChild(leafsWords[2][2 * i]);\n parents[1].addChild(leafsWords[2][2 * i + 1]);\n parents[1].addChild(leafsWords[3][2 * i]);\n parents[1].addChild(leafsWords[3][2 * i + 1]);\n\n let parentSegment =null;\n if (this.bigSegmentPositions.indexOf(i) !== -1){\n parents[2] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[3] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n\n parents[2].addChild(leafsWords[0][2 * i + 2]);\n parents[2].addChild(leafsWords[0][2 * i + 3]);\n parents[2].addChild(leafsWords[1][2 * i + 2]);\n parents[2].addChild(leafsWords[1][2 * i + 3]);\n\n parents[3].addChild(leafsWords[2][2 * i + 2]);\n parents[3].addChild(leafsWords[2][2 * i + 3]);\n parents[3].addChild(leafsWords[3][2 * i + 2]);\n parents[3].addChild(leafsWords[3][2 * i + 3]);\n\n parentSegment = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parentSegment.addChild(parents[0]);\n parentSegment.addChild(parents[2]);\n parentSegment.addChild(parents[1]);\n parentSegment.addChild(parents[3]);\n i++;\n }\n else{\n parentSegment = new _Segment_ColumnSegment__WEBPACK_IMPORTED_MODULE_3__[\"ColumnSegment\"](this.templateContainer.copyColumnTemplate());\n parentSegment.addChild(parents[0]);\n parentSegment.addChild(parents[1]);\n }\n\n rootSegment.addChild(parentSegment);\n }\n this.setRootSegment(rootSegment)\n }\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/BigSegmentsLevels.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return PessimisticLockTransactionRequiredError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when a transaction is required for the current operation, but there is none open. + */ +var PessimisticLockTransactionRequiredError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(PessimisticLockTransactionRequiredError, _super); + function PessimisticLockTransactionRequiredError() { + var _this = _super.call(this) || this; + _this.name = "PessimisticLockTransactionRequiredError"; + Object.setPrototypeOf(_this, PessimisticLockTransactionRequiredError.prototype); + _this.message = "An open transaction is required for pessimistic lock."; + return _this; + } + return PessimisticLockTransactionRequiredError; +}(Error)); + + +//# sourceMappingURL=PessimisticLockTransactionRequiredError.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/FourWordsLevel.js": -/*!***********************************************************!*\ - !*** ./src/client/js/wordrotator/Level/FourWordsLevel.js ***! - \***********************************************************/ -/*! exports provided: FourWordsLevel */ +/* 153 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FourWordsLevel\", function() { return FourWordsLevel; });\n/* harmony import */ var _Level__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Level */ \"./src/client/js/wordrotator/Level/Level.js\");\n/* harmony import */ var _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Segment/RowSegment */ \"./src/client/js/wordrotator/Segment/RowSegment.js\");\n/* harmony import */ var _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Segment/ParentSegment */ \"./src/client/js/wordrotator/Segment/ParentSegment.js\");\n\n\n\n\nclass FourWordsLevel extends _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"] {\n\n constructor(templateContainer, wordLength) {\n super(templateContainer);\n this.wordLength = wordLength;\n }\n\n createSegments() {\n if (this.words.length >= 4 &&\n this.words[0].length >= this.wordLength &&\n this.words[1].length >= this.wordLength &&\n this.words[2].length >= this.wordLength &&\n this.words[3].length >= this.wordLength\n ) {\n let leafsWords = [];\n leafsWords[0] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n leafsWords[1] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n leafsWords[2] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate());\n leafsWords[3] = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_1__[\"RowSegment\"](this.templateContainer.copyRowTemplate());\n for (let i = 0; i < this.wordLength / 4; i++) {\n\n let parents = [];\n parents[0] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[1] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[2] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[3] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n\n parents[0].addChild(leafsWords[0][4 * i]);\n parents[0].addChild(leafsWords[0][4 * i + 1]);\n parents[0].addChild(leafsWords[1][4 * i]);\n parents[0].addChild(leafsWords[1][4 * i + 1]);\n\n parents[1].addChild(leafsWords[0][4 * i + 2]);\n parents[1].addChild(leafsWords[0][4 * i + 3]);\n parents[1].addChild(leafsWords[1][4 * i + 2]);\n parents[1].addChild(leafsWords[1][4 * i + 3]);\n\n parents[2].addChild(leafsWords[2][4 * i]);\n parents[2].addChild(leafsWords[2][4 * i + 1]);\n parents[2].addChild(leafsWords[3][4 * i]);\n parents[2].addChild(leafsWords[3][4 * i + 1]);\n\n parents[3].addChild(leafsWords[2][4 * i + 2]);\n parents[3].addChild(leafsWords[2][4 * i + 3]);\n parents[3].addChild(leafsWords[3][4 * i + 2]);\n parents[3].addChild(leafsWords[3][4 * i + 3]);\n\n let parent = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parent.addChild(parents[0]);\n parent.addChild(parents[1]);\n parent.addChild(parents[2]);\n parent.addChild(parents[3]);\n\n rootSegment.addChild(parent);\n }\n this.setRootSegment(rootSegment)\n }\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/FourWordsLevel.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NoVersionOrUpdateDateColumnError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when an entity does not have no version and no update date column. + */ +var NoVersionOrUpdateDateColumnError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(NoVersionOrUpdateDateColumnError, _super); + function NoVersionOrUpdateDateColumnError(entity) { + var _this = _super.call(this) || this; + _this.name = "NoVersionOrUpdateDateColumnError"; + Object.setPrototypeOf(_this, NoVersionOrUpdateDateColumnError.prototype); + _this.message = "Entity " + entity + " does not have version or update date columns."; + return _this; + } + return NoVersionOrUpdateDateColumnError; +}(Error)); + + +//# sourceMappingURL=NoVersionOrUpdateDateColumnError.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/FourWordsLevel12.js": -/*!*************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/FourWordsLevel12.js ***! - \*************************************************************/ -/*! exports provided: FourWordsLevel12 */ +/* 154 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FourWordsLevel12\", function() { return FourWordsLevel12; });\n/* harmony import */ var _FourWordsLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FourWordsLevel */ \"./src/client/js/wordrotator/Level/FourWordsLevel.js\");\n\n\nclass FourWordsLevel12 extends _FourWordsLevel__WEBPACK_IMPORTED_MODULE_0__[\"FourWordsLevel\"]{\n constructor(templateContainer) {\n super(templateContainer, 12);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/FourWordsLevel12.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Brackets; }); +/** + * Syntax sugar. + * Allows to use brackets in WHERE expressions for better syntax. + */ +var Brackets = /** @class */ (function () { + /** + * Given WHERE query builder that will build a WHERE expression that will be taken into brackets. + */ + function Brackets(whereFactory) { + this.whereFactory = whereFactory; + } + return Brackets; +}()); + + +//# sourceMappingURL=Brackets.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/FourWordsLevel8.js": -/*!************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/FourWordsLevel8.js ***! - \************************************************************/ -/*! exports provided: FourWordsLevel8 */ +/* 155 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FourWordsLevel8\", function() { return FourWordsLevel8; });\n/* harmony import */ var _FourWordsLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FourWordsLevel */ \"./src/client/js/wordrotator/Level/FourWordsLevel.js\");\n\n\nclass FourWordsLevel8 extends _FourWordsLevel__WEBPACK_IMPORTED_MODULE_0__[\"FourWordsLevel\"]{\n constructor(templateContainer) {\n super(templateContainer, 8);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/FourWordsLevel8.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return In; }); +/* harmony import */ var _FindOperator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); + +/** + * Find Options Operator. + * Example: { someField: In([...]) } + */ +function In(value) { + return new _FindOperator__WEBPACK_IMPORTED_MODULE_0__[/* FindOperator */ "a"]("in", value, true, true); +} + +//# sourceMappingURL=In.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/Level.js": -/*!**************************************************!*\ - !*** ./src/client/js/wordrotator/Level/Level.js ***! - \**************************************************/ -/*! exports provided: Level */ +/* 156 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Level\", function() { return Level; });\n/* harmony import */ var _Segment_LeafSegment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Segment/LeafSegment */ \"./src/client/js/wordrotator/Segment/LeafSegment.js\");\n/* harmony import */ var _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Segment/ParentSegment */ \"./src/client/js/wordrotator/Segment/ParentSegment.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! cordova-sites/dist/client */ \"./node_modules/cordova-sites/dist/client.js\");\n/* harmony import */ var cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var js_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! js-helper */ \"./node_modules/js-helper/dist/shared.js\");\n/* harmony import */ var js_helper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(js_helper__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\nclass Level {\n constructor(templateContainer) {\n this.rootSegment = null;\n this.words = [];\n this.startRotations = [];\n this.templateContainer = templateContainer;\n\n this.levelData = null;\n\n this.hasWon = false;\n this.id = null;\n\n this.saveAsCurrentAfterCheckWon = true;\n\n this.wonResolver = null;\n this.giveUpResolver = null;\n\n this._shakeLeafs = true;\n this._shakeLeafsTimeout = null;\n this._lastRotation = 0;\n\n this.wonPromise = new Promise((resolve, reject) => {\n this.wonResolver = resolve;\n this.giveUpResolver = reject;\n });\n\n this.segmentClickedListener = () => {\n console.log(\"clicked\")\n };\n }\n\n getLevelData() {\n return this.levelData;\n }\n\n setLevelData(levelData) {\n this.levelData = levelData;\n }\n\n async saveAsCurrentLevel() {\n let rotations = this.getCurrentRotations();\n let locked = this.getCurrentLocked();\n await cordova_sites_dist_client__WEBPACK_IMPORTED_MODULE_3__[\"NativeStoragePromise\"].setItem(\"currentLevel\", JSON.stringify({\n \"id\": this.id,\n \"rotations\": rotations,\n \"locks\": locked\n }));\n }\n\n getCurrentLocked() {\n if (this.rootSegment !== null) {\n return this.rootSegment.getCurrentLocked([]);\n }\n return [];\n }\n\n getCurrentRotations() {\n if (this.rootSegment !== null) {\n return this.rootSegment.getCurrentRotations([]);\n }\n return [];\n }\n\n setLocks(locks) {\n if (this.rootSegment !== null) {\n this.rootSegment.applyLocks(locks);\n }\n }\n\n setId(id) {\n this.id = id;\n }\n\n getId() {\n return this.id;\n }\n\n getLevel() {\n return this;\n }\n\n setRootSegment(rootSegment) {\n this.rootSegment = rootSegment;\n this.rootSegment.setParent(this);\n if (this.startRotations) {\n this.applyRotations();\n }\n }\n\n setWords(words) {\n this.words = [];\n for (let i = 0, n = words.length; i < n; i++) {\n this.words.push(words[i].replace(/ß/g, \"ẞ\").toUpperCase());\n }\n }\n\n setStartRotations(rotations) {\n this.startRotations = rotations;\n }\n\n applyRotations(rotations) {\n if (this.rootSegment) {\n rotations = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_2__[\"Helper\"].nonNull(rotations, this.startRotations);\n this.rootSegment.applyRotations(rotations);\n }\n }\n\n getHasWon() {\n return this.hasWon;\n }\n\n checkHasWon(delayPromise) {\n if (this.rootSegment.isSolved()) {\n this.hasWon = true;\n const self = this;\n Promise.resolve(delayPromise).then(() => {\n self.wonResolver(true);\n });\n return true;\n }\n if (this.saveAsCurrentAfterCheckWon) {\n this.saveAsCurrentLevel();\n }\n return false;\n }\n\n setSaveAsCurrentAfterCheckWon(shouldSave){\n this.saveAsCurrentAfterCheckWon = (shouldSave === true);\n }\n\n getWonPromise() {\n return this.wonPromise;\n }\n\n getRootSegment() {\n return this.rootSegment;\n }\n\n createSegments() {\n };\n\n getRotatableSegments() {\n return Level._getRotatableSegmentsFrom(this.rootSegment);\n }\n\n segmentClicked(segment) {\n if (this.segmentClickedListener) {\n this.segmentClickedListener(segment);\n }\n\n this._lastRotation = new Date().getTime();\n clearTimeout(this._shakeLeafsTimeout);\n if (this._shakeLeafs) {\n this._shakeLeafsTimeout = setTimeout(() => {\n this.shakeLeafs();\n }, js_helper__WEBPACK_IMPORTED_MODULE_4__[\"Random\"].getIntRandom(5000) + 25000);\n }\n }\n\n setSegmentClickedListener(listener) {\n this.segmentClickedListener = listener;\n }\n\n getLeafSegments() {\n return Level._getLeafSegmentsFrom(this.rootSegment);\n }\n\n static _getRotatableSegmentsFrom(segment) {\n let rotatable = [];\n if (segment.canRotate()) {\n rotatable.push(segment);\n }\n if (segment instanceof _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_1__[\"ParentSegment\"]) {\n for (let i = 0; i < segment.children.length; i++) {\n rotatable.push.apply(rotatable, Level._getRotatableSegmentsFrom(segment.children[i]));\n }\n }\n return rotatable;\n }\n\n shakeLeafs() {\n clearTimeout(this._shakeLeafsTimeout);\n if (this._shakeLeafs && !this.hasWon) {\n\n const leafs = this.getLeafSegments();\n if (leafs.length > 0) {\n const index = js_helper__WEBPACK_IMPORTED_MODULE_4__[\"Random\"].getIntRandom(leafs.length - 1);\n const leaf = leafs[index];\n\n leaf.getElement().classList.add(\"shake\");\n setTimeout(() => {\n leaf.getElement().classList.remove(\"shake\");\n }, js_helper__WEBPACK_IMPORTED_MODULE_4__[\"Random\"].getIntRandom(350) + 650);\n }\n this._shakeLeafsTimeout = setTimeout(() => {\n this.shakeLeafs();\n }, js_helper__WEBPACK_IMPORTED_MODULE_4__[\"Random\"].getIntRandom(2000) + 5000);\n }\n }\n\n static _createLeafsForWord(word, leafSegmentTemplate) {\n let leafSegments = [];\n for (let i = 0, n = word.length; i < n; i++) {\n leafSegments.push(new _Segment_LeafSegment__WEBPACK_IMPORTED_MODULE_0__[\"LeafSegment\"](leafSegmentTemplate.cloneNode(true), word.charAt(i)));\n }\n return leafSegments;\n }\n\n static _getLeafSegmentsFrom(segment) {\n let leafs = [];\n if (segment instanceof _Segment_LeafSegment__WEBPACK_IMPORTED_MODULE_0__[\"LeafSegment\"]) {\n leafs.push(segment);\n } else if (segment instanceof _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_1__[\"ParentSegment\"]) {\n for (let i = 0; i < segment.children.length; i++) {\n leafs.push(...Level._getLeafSegmentsFrom(segment.children[i]));\n }\n }\n return leafs;\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/Level.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return InsertValuesMissingError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when user tries to insert using QueryBuilder but do not specify what to insert. + */ +var InsertValuesMissingError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(InsertValuesMissingError, _super); + function InsertValuesMissingError() { + var _this = _super.call(this) || this; + _this.name = "InsertValuesMissingError"; + Object.setPrototypeOf(_this, InsertValuesMissingError.prototype); + _this.message = "Cannot perform insert query because values are not defined. Call \"qb.values(...)\" method to specify inserted values."; + return _this; + } + return InsertValuesMissingError; +}(Error)); + + +//# sourceMappingURL=InsertValuesMissingError.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/LevelHelper.ts": -/*!********************************************************!*\ - !*** ./src/client/js/wordrotator/Level/LevelHelper.ts ***! - \********************************************************/ -/*! exports provided: LevelHelper */ +/* 157 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelHelper\", function() { return LevelHelper; });\n/* harmony import */ var _SimpleLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SimpleLevel */ \"./src/client/js/wordrotator/Level/SimpleLevel.js\");\n/* harmony import */ var _RowLevel8__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RowLevel8 */ \"./src/client/js/wordrotator/Level/RowLevel8.js\");\n/* harmony import */ var _RowLevel10__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RowLevel10 */ \"./src/client/js/wordrotator/Level/RowLevel10.js\");\n/* harmony import */ var _SixWordsRowLevel8__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SixWordsRowLevel8 */ \"./src/client/js/wordrotator/Level/SixWordsRowLevel8.js\");\n/* harmony import */ var _SixWordsRowLevel12__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SixWordsRowLevel12 */ \"./src/client/js/wordrotator/Level/SixWordsRowLevel12.js\");\n/* harmony import */ var _FourWordsLevel8__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FourWordsLevel8 */ \"./src/client/js/wordrotator/Level/FourWordsLevel8.js\");\n/* harmony import */ var _FourWordsLevel12__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./FourWordsLevel12 */ \"./src/client/js/wordrotator/Level/FourWordsLevel12.js\");\n/* harmony import */ var _SimpleFourWordsLevel10_0__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./SimpleFourWordsLevel10_0 */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_0.js\");\n/* harmony import */ var _SimpleFourWordsLevel10_1__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SimpleFourWordsLevel10_1 */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_1.js\");\n/* harmony import */ var _SimpleFourWordsLevel10_2__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./SimpleFourWordsLevel10_2 */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_2.js\");\n/* harmony import */ var _SimpleFourWordsLevel10_3__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./SimpleFourWordsLevel10_3 */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_3.js\");\n/* harmony import */ var _TwoSegmentFourWordsLevel10_0_3__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TwoSegmentFourWordsLevel10_0_3 */ \"./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_3.js\");\n/* harmony import */ var _TwoSegmentFourWordsLevel10_1_3__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./TwoSegmentFourWordsLevel10_1_3 */ \"./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_1_3.js\");\n/* harmony import */ var _TwoSegmentFourWordsLevel10_0_2__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TwoSegmentFourWordsLevel10_0_2 */ \"./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_2.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass LevelHelper {\n static setLevelType(typeId, level) {\n LevelHelper.types[typeId] = level;\n }\n static getLevelClass(type) {\n return LevelHelper.types[type];\n }\n static inflateLevel(levelData, templateContainer) {\n let level = new (LevelHelper.types[levelData[\"renderer\"]])(templateContainer);\n level.setWords(JSON.parse(levelData[\"words\"].replace(/"/g, '\"')));\n level.setId(levelData[\"id\"]);\n level.setLevelData(levelData);\n levelData[\"positions\"] = JSON.parse(levelData[\"positions\"]);\n for (let i = 0, n = levelData[\"positions\"].length; i < n; i++) {\n if (levelData[\"positions\"][i] <= 4) {\n levelData[\"positions\"][i] = 90 * levelData[\"positions\"][i];\n }\n }\n level.setStartRotations(levelData[\"positions\"]);\n return level;\n }\n}\nLevelHelper.types = {\n 20: _SimpleLevel__WEBPACK_IMPORTED_MODULE_0__[\"SimpleLevel\"],\n 40: _RowLevel8__WEBPACK_IMPORTED_MODULE_1__[\"RowLevel8\"],\n 60: _RowLevel10__WEBPACK_IMPORTED_MODULE_2__[\"RowLevel10\"],\n 80: _SimpleFourWordsLevel10_0__WEBPACK_IMPORTED_MODULE_7__[\"SimpleFourWordsLevel10_0\"],\n 81: _SimpleFourWordsLevel10_1__WEBPACK_IMPORTED_MODULE_8__[\"SimpleFourWordsLevel10_1\"],\n 82: _SimpleFourWordsLevel10_2__WEBPACK_IMPORTED_MODULE_9__[\"SimpleFourWordsLevel10_2\"],\n 83: _SimpleFourWordsLevel10_3__WEBPACK_IMPORTED_MODULE_10__[\"SimpleFourWordsLevel10_3\"],\n 100: _SixWordsRowLevel8__WEBPACK_IMPORTED_MODULE_3__[\"SixWordsRowLevel8\"],\n 110: _TwoSegmentFourWordsLevel10_0_3__WEBPACK_IMPORTED_MODULE_11__[\"TwoSegmentFourWordsLevel10_0_3\"],\n 111: _TwoSegmentFourWordsLevel10_1_3__WEBPACK_IMPORTED_MODULE_12__[\"TwoSegmentFourWordsLevel10_1_3\"],\n 112: _TwoSegmentFourWordsLevel10_0_2__WEBPACK_IMPORTED_MODULE_13__[\"TwoSegmentFourWordsLevel10_0_2\"],\n 120: _FourWordsLevel8__WEBPACK_IMPORTED_MODULE_5__[\"FourWordsLevel8\"],\n 140: _SixWordsRowLevel12__WEBPACK_IMPORTED_MODULE_4__[\"SixWordsRowLevel12\"],\n 160: _FourWordsLevel12__WEBPACK_IMPORTED_MODULE_6__[\"FourWordsLevel12\"],\n};\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/LevelHelper.ts?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DeleteResult; }); +/** + * Result object returned by DeleteQueryBuilder execution. + */ +var DeleteResult = /** @class */ (function () { + function DeleteResult() { + } + return DeleteResult; +}()); + + +//# sourceMappingURL=DeleteResult.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/MainMenuLevel.js": -/*!**********************************************************!*\ - !*** ./src/client/js/wordrotator/Level/MainMenuLevel.js ***! - \**********************************************************/ -/*! exports provided: MainMenuLevel */ +/* 158 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MainMenuLevel\", function() { return MainMenuLevel; });\n/* harmony import */ var _FourWordsLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FourWordsLevel */ \"./src/client/js/wordrotator/Level/FourWordsLevel.js\");\n\n\nclass MainMenuLevel extends _FourWordsLevel__WEBPACK_IMPORTED_MODULE_0__[\"FourWordsLevel\"]{\n\n constructor(templateContainer) {\n super(templateContainer, 4);\n }\n\n saveAsCurrentLevel() {\n }\n\n // checkHasWon(delayPromise) {\n // }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/MainMenuLevel.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MissingDeleteDateColumnError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + */ +var MissingDeleteDateColumnError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(MissingDeleteDateColumnError, _super); + function MissingDeleteDateColumnError(entityMetadata) { + var _this = _super.call(this) || this; + _this.name = "MissingDeleteDateColumnError"; + Object.setPrototypeOf(_this, MissingDeleteDateColumnError.prototype); + _this.message = "Entity \"" + entityMetadata.name + "\" does not have delete date columns."; + return _this; + } + return MissingDeleteDateColumnError; +}(Error)); + + +//# sourceMappingURL=MissingDeleteDateColumnError.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/RowLevel.js": -/*!*****************************************************!*\ - !*** ./src/client/js/wordrotator/Level/RowLevel.js ***! - \*****************************************************/ -/*! exports provided: RowLevel */ +/* 159 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RowLevel\", function() { return RowLevel; });\n/* harmony import */ var _Level__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Level */ \"./src/client/js/wordrotator/Level/Level.js\");\n/* harmony import */ var _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Segment/RowSegment */ \"./src/client/js/wordrotator/Segment/RowSegment.js\");\n/* harmony import */ var _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Segment/ParentSegment */ \"./src/client/js/wordrotator/Segment/ParentSegment.js\");\n\n\n\n\nclass RowLevel extends _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"] {\n constructor(container, wordLength) {\n super(container);\n this.wordLength = wordLength;\n }\n\n createSegments() {\n if (this.words.length >= 2 && this.words[0].length >= this.wordLength && this.words[1].length >= this.wordLength) {\n let leafsWordOne = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n let leafsWordTwo = _Level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"]._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_1__[\"RowSegment\"](this.templateContainer.copyRowTemplate());\n for (let i = 0, n = this.wordLength / 2; i < n; i++) {\n let parent = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parent.addChild(leafsWordOne[2 * i]);\n parent.addChild(leafsWordOne[2 * i + 1]);\n parent.addChild(leafsWordTwo[2 * i]);\n parent.addChild(leafsWordTwo[2 * i + 1]);\n rootSegment.addChild(parent);\n }\n // rootSegment.applyRotations(this.startRotations);\n this.setRootSegment(rootSegment)\n }\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/RowLevel.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OffsetWithoutLimitNotSupportedError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + +/** + * Thrown when user tries to build SELECT query using OFFSET without LIMIT applied but database does not support it. +*/ +var OffsetWithoutLimitNotSupportedError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(OffsetWithoutLimitNotSupportedError, _super); + function OffsetWithoutLimitNotSupportedError() { + var _this = _super.call(this) || this; + _this.name = "OffsetWithoutLimitNotSupportedError"; + Object.setPrototypeOf(_this, OffsetWithoutLimitNotSupportedError.prototype); + _this.message = "RDBMS does not support OFFSET without LIMIT in SELECT statements. You must use limit in conjunction with offset function (or take in conjunction with skip function if you are using pagination)."; + return _this; + } + return OffsetWithoutLimitNotSupportedError; +}(Error)); + + +//# sourceMappingURL=OffsetWithoutLimitNotSupportedError.js.map + /***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/wordrotator/Level/RowLevel10.js": -/*!*******************************************************!*\ - !*** ./src/client/js/wordrotator/Level/RowLevel10.js ***! - \*******************************************************/ -/*! exports provided: RowLevel10 */ +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NavbarFragment = void 0; + +var AbstractFragment_1 = __webpack_require__(79); + +var defaultViewNavbar = __webpack_require__(509); + +var MenuAction_1 = __webpack_require__(80); + +var Helper_1 = __webpack_require__(15); + +var Context_1 = __webpack_require__(111); + +var Menu_1 = __webpack_require__(200); + +var OpenSubmenuAction_1 = __webpack_require__(98); + +var DropdownRenderer_1 = __webpack_require__(260); + +var AccordionRenderer_1 = __webpack_require__(201); + +var ColorIndicator_1 = __webpack_require__(256); + +var App_1 = __webpack_require__(33); +/** + * Fragment, welches ein Menü in der Navbar anzeigt und hinzufügt. + * + * Technisch gesehen wird das gleiche Menü zwei mal gerendert und hinzugefügt. Einmal das Menü in der Navbar, welches + * immer sichtbar ist und einmal das versteckte Menü, welches durch einen Toggle-Button angezeigt werden kann. + * Dabei hat jede MenuAction eine Sichtbarkeitsklasse. Anhand der Sichtbarkeitsklasse und der Bildschirmgröße wird + * entweder das eine oder das andere Element sichtbar, jedoch niemals beide. + */ + + +var NavbarFragment = /*#__PURE__*/function (_AbstractFragment_1$A) { + _inherits(NavbarFragment, _AbstractFragment_1$A); + + var _super2 = _createSuper(NavbarFragment); + + /** + * Erstellt das Fragment + * @param site + * @param {string|Node|null} viewNavbar + */ + function NavbarFragment(site, viewNavbar) { + var _this; + + _classCallCheck(this, NavbarFragment); + + _this = _super2.call(this, site, Helper_1.Helper.nonNull(viewNavbar, defaultViewNavbar)); + _this._menu = null; + _this._responsiveMenu = null; + _this._backgroundImage = ""; + _this._menuActions = []; + NavbarFragment.defaultActions.forEach(function (action) { + _this._menuActions.push(action.copy()); + }); + _this._scrollWidget = null; + _this._canGoBack = true; + _this._logo = App_1.App.getLogo(); + return _this; + } + + _createClass(NavbarFragment, [{ + key: "setLogo", + value: function setLogo(logo) { + this._logo = logo; + + if (this._view) { + if (Helper_1.Helper.isNotNull(this._logo)) { + this.findBy(".logo").classList.remove("hidden"); + this.findBy(".logo-img").src = this._logo; + } else { + this.findBy(".logo").classList.add("hidden"); + } + } + } + }, { + key: "setCanGoBack", + value: function setCanGoBack(canGoBack) { + this._canGoBack = canGoBack; + + if (this._view) { + if (this._canGoBack) { + this.findBy(".back-button").classList.remove("hidden"); + } else { + this.findBy(".back-button").classList.add("hidden"); + } + } + } + }, { + key: "setScrollWidget", + value: function setScrollWidget(scrollWidget) { + var _this2 = this; + + this._scrollWidget = scrollWidget; + + if (this._view && this._scrollWidget) { + var nav = this.findBy(".top-bar > span"); + var background = this.findBy(".background-img"); + + var listener = function listener() { + var navbarElem = _this2.findBy("nav.top-bar"); + + if (nav.getBoundingClientRect().bottom >= background.getBoundingClientRect().bottom) { + navbarElem.classList.add("solid"); + } else { + navbarElem.classList.remove("solid"); + } + }; + + background.addEventListener("load", listener); + scrollWidget.addEventListener("scroll", listener); + requestAnimationFrame(listener); + } + } + }, { + key: "setBackgroundImage", + value: function setBackgroundImage(backgroundImage) { + var _this3 = this; + + this._backgroundImage = backgroundImage; + + if (this._view) { + var navbarElem = this.findBy("nav.top-bar"); + + if (Helper_1.Helper.isNotNull(this._backgroundImage)) { + var imgElem = this.findBy(".background-img"); + var colorIndicator = ColorIndicator_1.ColorIndicator.getInstance(); // navbarElem.classList.add("color-black"); + + imgElem.addEventListener("load", function () { + if (_this3._backgroundImage !== "") { + var color = colorIndicator.getAverageImgColor(imgElem, undefined, 150); + var textColor = colorIndicator.invertColorBW(color); + + if (textColor.r === 0 && textColor.g === 0 && textColor.b === 0) { + navbarElem.classList.remove("color-white"); + navbarElem.classList.add("color-black"); + } else { + navbarElem.classList.remove("color-black"); + navbarElem.classList.add("color-white"); + } + } else { + navbarElem.classList.remove("color-black"); + navbarElem.classList.remove("color-white"); + } + }); + requestAnimationFrame(function () { + var heightElement = navbarElem.querySelector(".grid-container"); + navbarElem.style = "min-height:" + heightElement.getBoundingClientRect().height + "px"; + + if ("ResizeObserver" in window) { + // @ts-ignore + var resizeObserver = new ResizeObserver(function (entries) { + entries.forEach(function (entry) { + if (entry.borderBoxSize) { + navbarElem.style = "min-height:" + entry.borderBoxSize[0].blockSize + "px"; + } else if (entry.contentRect) { + navbarElem.style = "min-height:" + entry.contentRect.height + "px"; + } else { + console.log("entry", entry); + } + }); + }); + resizeObserver.observe(heightElement); + } + + setTimeout(function () { + navbarElem.style = "min-height:" + heightElement.getBoundingClientRect().height + "px"; + }, 500); + setTimeout(function () { + navbarElem.style = "min-height:" + heightElement.getBoundingClientRect().height + "px"; + }, 1000); + setTimeout(function () { + navbarElem.style = "min-height:" + heightElement.getBoundingClientRect().height + "px"; + }, 1500); + }); + imgElem.src = this._backgroundImage; + navbarElem.classList.add("with-image"); + } else { + navbarElem.classList.remove("with-image"); + } + } + } + /** + * Wird aufgerufen, sobald die View geladen ist + * @returns {Promise<*>} + */ + + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this4 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(NavbarFragment.prototype), "onViewLoaded", _this4); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this5 = this; + + var res, renderers, oldListener, navbarFragment; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onViewLoaded.call(this); + this.setTitleElement(document.createTextNode(NavbarFragment.title)); //Erstelle die Renderers und das Menü + + renderers = []; + renderers.push(new DropdownRenderer_1.DropdownRenderer(this.findBy("#navbar-menu-visible"))); + renderers.push(new AccordionRenderer_1.AccordionRenderer(this.findBy("#navbar-menu-hidden"))); + this._menu = new Menu_1.Menu(renderers, this._menuActions); + this._closeListenerContainer = this.findBy("#navbar-close-listener-container"); //Falls im visible-submenu eine Submenu-Action zu sehen ist + + this._menu.setOpenSubmenuListener(function () { + _this5._showCloseListener(); + }); //Falls ein Element im Menü angeklickt wird, sollte das Menü geschlossen werden, + //außer dadurch wird ein Untermenü geöffnet/geschlossen + + + oldListener = this._menu.getOnClickListener(); + + this._menu.setOnClickListener(function (e) { + if (!(oldListener(e) instanceof OpenSubmenuAction_1.OpenSubmenuAction)) { + _this5.closeMenu(); + } + }); //Fügt close/open-Listener für den Toggle-Button hinzu + + + this._responsiveMenu = this.findBy("#responsive-menu"); + + this.findBy("#responsive-menu-toggle").onclick = function () { + if (_this5._responsiveMenu.classList.contains("visible")) { + _this5.closeMenu(); + } else { + _this5.openMenu(); + } + }; //Wenn das "versteckte" Menü geöffnet ist, sollte jeder Click nicht auf das Menü dieses wieder schließen + //Dazu gibt es den navbar-close-listener der sich vor allen (außer dem Menü) befindet. Er wird nur angezeigt, + //wenn das Menü offen ist + + + navbarFragment = this; + this.findBy("#navbar-close-listener").addEventListener("click", function (e) { + if (e.target === this) { + navbarFragment.closeMenu(); + } + }); //Wenn die größe des Fenster geändert wird, muss nachgeschaut werden, ob der Menü-Button für das hidden-Menü noch angezeigt werden muss + + window.addEventListener('resize', function () { + //Reicht aus, wenn Seite im Vordergrund, da bei jedem Start (durch onStart) der toggleButton geupdatet wird + if (_this5._state === Context_1.Context.STATE_RUNNING) { + _this5.updateToggleButton(); + } + }); //Rendere das Menü + + this.drawMenu(); + this.findBy(".back-button").addEventListener("click", function () { + _this5.goBack(); + }); + this.findBy(".logo").addEventListener("click", function () { + if (NavbarFragment.onLogoClickListener) { + NavbarFragment.onLogoClickListener(_this5.getSite()); + } + }); + this.setCanGoBack(this._canGoBack); + this.setBackgroundImage(this._backgroundImage); + this.setScrollWidget(this._scrollWidget); + this.setLogo(this._logo); + return _context.abrupt("return", res); + + case 23: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "goBack", + value: function goBack() { + if (this._canGoBack) { + this.getSite().goBack(); + } + } + /** + * Jedes mal, wenn die Seite startet, update den toggleButton + * + * @param pauseArguments + * @returns {Promise} + */ + + }, { + key: "onStart", + value: function onStart(pauseArguments) { + var _this6 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return _get(_getPrototypeOf(NavbarFragment.prototype), "onStart", _this6); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _super.onStart.call(this, pauseArguments); + + this.updateToggleButton(); + + case 2: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "_showCloseListener", + value: function _showCloseListener() { + if (this._closeListenerContainer) { + this._closeListenerContainer.style.display = 'block'; + } + } + /** + * Schließe das Menü + */ + + }, { + key: "closeMenu", + value: function closeMenu() { + if (Helper_1.Helper.isNotNull(this._responsiveMenu)) { + this._responsiveMenu.classList.remove("visible"); + + this._view.classList.remove("navbar-is-open"); + } + + if (this._closeListenerContainer) { + this._closeListenerContainer.style.display = 'none'; + } + + if (this._menu) { + this._menu.close(); + } + } + /** + * Öffne das Menü + */ + + }, { + key: "openMenu", + value: function openMenu() { + if (Helper_1.Helper.isNotNull(this._responsiveMenu)) { + // this._responsiveMenu.style.display = 'block'; + this._responsiveMenu.classList.add("visible"); + + this._view.classList.add("navbar-is-open"); + } + + this._showCloseListener(); + } + /** + * rendere das Menü + */ + + }, { + key: "drawMenu", + value: function drawMenu() { + if (Helper_1.Helper.isNotNull(this._menu)) { + this._menu.draw(); + } + } + /** + * Update die Sichtbarkeit des MenüButtons für das "versteckte" Menü + */ + + }, { + key: "updateToggleButton", + value: function updateToggleButton() { + //Bekomme die aktuelle Bildschirm-größe als Foundation-Klasse + var size = NavbarFragment._getCurrentSize(); //schaue hier nach den enthaltenen Elementen. Evtl sollte das direkt an den MenüActions gemacht werden + + + var firstParentElement = this.findBy("#navbar-menu-visible"); + + if ( //Es existieren Elemente für large und Bildschirmgröße ist kleiner large => ToggleButton muss angezeigt werden + (size === "medium" || size === "smedium" || size === "small") && firstParentElement.querySelectorAll("." + MenuAction_1.MenuAction.SHOW_FOR_LARGE + ":not(.hidden)").length > 0 || //Es existieren Elemente für medium und Bildschirmgröße ist kleiner medium=> ToggleButton muss angezeigt werden + (size === "smedium" || size === "small") && firstParentElement.querySelectorAll("." + MenuAction_1.MenuAction.SHOW_FOR_MEDIUM + ":not(.hidden)").length > 0 || //Es existieren Elemente für smedium und Bildschirmgröße ist kleiner medium=> ToggleButton muss angezeigt werden + size === "small" && firstParentElement.querySelectorAll("." + MenuAction_1.MenuAction.SHOW_FOR_SMEDIUM + ":not(.hidden)").length > 0 || //Es existieren Elemente, welche nie angezeigt werden sollen => ToggleButton muss angezeigt werden + firstParentElement.querySelectorAll("." + MenuAction_1.MenuAction.SHOW_NEVER + ":not(.hidden)").length > 0) { + document.getElementById("responsive-menu-toggle").style.display = 'block'; + } else { + document.getElementById("responsive-menu-toggle").style.display = 'none'; //schließe Menü, falls es offen war + + this.closeMenu(); + } + } + /** + * Funktion zum hinzufügen von Actions + * @param action + */ + + }, { + key: "addAction", + value: function addAction(action) { + this._menuActions.push(action); //Falls Menü schon existiert, füge Elemente hinzu + + + if (Helper_1.Helper.isNotNull(this._menu)) { + this._menu.addAction(action); + } + } + /** + * Funktion zum hinzufügen von Actions + * @param redraw + */ + + }, { + key: "removeAllActions", + value: function removeAllActions(redraw) { + this._menuActions = []; //Falls Menü schon existiert, füge Elemente hinzu + + if (Helper_1.Helper.isNotNull(this._menu)) { + this._menu.removeAllActions(redraw); + } + } + /** + * Updatet das Title-Element + * @param titleElement + */ + + }, { + key: "setTitleElement", + value: function setTitleElement(titleElement) { + Helper_1.Helper.removeAllChildren(this.findBy("#title-element-container")).appendChild(titleElement); + } + /** + * Gibt die aktuelle Size zurück + * + * @returns {*} + * @private + */ + + }], [{ + key: "_getCurrentSize", + value: function _getCurrentSize() { + var matched; //Queries sind paare von css-selektoren auf die Mindest-Breite und Namen + //Queries sind so geordnet, dass größter zum schluss kommt + + var queries = NavbarFragment._getViewQueries(); + + for (var i = 0; i < queries.length; i++) { + var query = queries[i]; //Letzter sollte matchen, daher noch nicht breaken + + if (matchMedia(query._value).matches) { + matched = query; + } + } + + if (_typeof(matched) === 'object') { + return matched._name; + } else { + return matched; + } + } + /** + * Gibt die ViewQueries zurück, triggert die Berechnung der ViewQueries, falls das noch nicht geschehen ist + * + * @returns {Array} + * @private + */ + + }, { + key: "_getViewQueries", + value: function _getViewQueries() { + if (NavbarFragment.queries.length === 0) { + NavbarFragment.queries = NavbarFragment._calculateViewQueries(); + } + + return NavbarFragment.queries; + } + /** + * Berechnet die ViewQueries, bzw liest diese aus Foundation/CSS ein + * Eine Veränderung der Werte in SASS, verändert daher auch hier die Werte + * + * @returns {*} + * @private + */ + + }, { + key: "_calculateViewQueries", + value: function _calculateViewQueries() { + //Hilfs-Funktion zum Parsen der Bildschirmgröße + function parseStyleToObject(str) { + var styleObject = {}; + + if (typeof str !== 'string') { + return styleObject; + } + + str = str.trim().slice(1, -1); // browsers re-quote string style values + + if (!str) { + return styleObject; + } + + styleObject = str.split('&').reduce(function (ret, param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = parts[0]; + var val = parts[1]; + key = decodeURIComponent(key); // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + + val = val === undefined ? null : decodeURIComponent(val); + + if (!ret.hasOwnProperty(key)) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + + return ret; + }, {}); + return styleObject; + } //die Font-Family ist reiner Text. Daher übergibt Foundation die Bildchirmgröße mit den dazugehörigen Namen als + // Font-Family in einem Element im Head + + + var cssStyle = document.getElementsByClassName('foundation-mq'); + + if (cssStyle.length === 0) { + return; + } + + var queries = []; //Lade Bildschirmgrößen und speichere diese als Query in einem Array + + var cssStyleElements = parseStyleToObject(window.getComputedStyle(cssStyle[0]).getPropertyValue('font-family')); + + for (var key in cssStyleElements) { + if (cssStyleElements.hasOwnProperty(key)) { + //Erstelle aus der Bildschirmgröße die Queries + queries.push({ + _name: key, + _value: 'only screen and (min-width: ' + cssStyleElements[key] + ')' + }); + } + } + + return queries; + } + /** + * Setzt den Listener, welcher ausgeführt wird, wenn auf das Logo geklickt wird + * + * @param listener + */ + + }, { + key: "setOnLogoClickListener", + value: function setOnLogoClickListener(listener) { + this.onLogoClickListener = listener; + } + }]); + + return NavbarFragment; +}(AbstractFragment_1.AbstractFragment); + +exports.NavbarFragment = NavbarFragment; +NavbarFragment.queries = []; + +NavbarFragment.onLogoClickListener = function () { + return App_1.App.addInitialization(function (app) { + return app.startStartingSite(); + }); +}; + +NavbarFragment.title = "MeinBerufBau"; +NavbarFragment.defaultActions = []; + +/***/ }), +/* 161 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Form = void 0; + +var DataManager_1 = __webpack_require__(68); + +var Helper_1 = __webpack_require__(15); + +var Translator_1 = __webpack_require__(32); + +var Toast_1 = __webpack_require__(101); + +var Form = /*#__PURE__*/function () { + function Form(formElem, urlOrCallback, method) { + var _this = this; + + _classCallCheck(this, Form); + + this._formElem = formElem; + this._method = Helper_1.Helper.nonNull(method, formElem["method"], "POST"); + this._elementChangeListener = null; + this._validators = []; + this._isBusy = false; + + if (typeof urlOrCallback === "string") { + this._submitHandler = function (values) { + if (_this._method.toLowerCase() === "get") { + return DataManager_1.DataManager.load(urlOrCallback + DataManager_1.DataManager.buildQuery(values)); + } else {//TODO, wenn Serververbindung kommt + // return (DataManager.send(urlOrCallback, values)); + } + }; + } else { + this._submitHandler = urlOrCallback; + } + + this._editors = []; + this._submitCallback = null; + + this.errorCallback = function (errors) { + return __awaiter(_this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this.setErrors(errors); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + }; + + formElem.addEventListener("submit", function (e) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + e.preventDefault(); + _context2.next = 3; + return self.doSubmit(e); + + case 3: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + }); + var self = this; + + _toConsumableArray(formElem.elements).forEach(function (element) { + element.addEventListener("change", function () { + if (this.value.trim() !== "") { + this.classList.add("notEmpty"); + } else { + this.classList.remove("notEmpty"); + } + + this.setCustomValidity(""); + + if (Helper_1.Helper.isNotNull(self._elementChangeListener)) { + self._elementChangeListener(element, this); + } + + this.setCustomValidity(""); + + if (element.accept && element.accept.indexOf("image") !== -1) { + if (element.files && element.files[0]) { + var reader = new FileReader(); + + reader.onload = function (e) { + var previewElem = formElem.querySelector("." + element.name + "-preview"); + + if (previewElem) { + previewElem.src = e.target["result"]; + } + }; + + reader.readAsDataURL(element.files[0]); + } else { + formElem.querySelector("." + element.name + "-preview").src = ""; + } + } + }); + element.addEventListener("keydown", function () { + this.setCustomValidity(""); + }); + }); + } + + _createClass(Form, [{ + key: "addValidator", + value: function addValidator(validatorCallback) { + this._validators.push(validatorCallback); + } + }, { + key: "onError", + value: function onError(errorHandler) { + this.errorCallback = errorHandler; + } + }, { + key: "addEditor", + value: function addEditor(e) { + this._editors.push(e); + } + }, { + key: "doSubmit", + value: function doSubmit(e) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var res; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + if (this._isBusy) { + _context3.next = 5; + break; + } + + _context3.next = 3; + return this.submit(); + + case 3: + res = _context3.sent; + return _context3.abrupt("return", res); + + case 5: + return _context3.abrupt("return", false); + + case 6: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "setValues", + value: function setValues(valuePromise) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var values, k, options, val, option, previewImage; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + this.setIsBusy(true); + _context4.next = 3; + return Promise.resolve(valuePromise); + + case 3: + values = _context4.sent; + this.setIsBusy(false); + + for (k in values) { + if (Helper_1.Helper.isNotNull(this._formElem.elements[k])) { + if (Helper_1.Helper.isNotNull(this._formElem.elements[k].options) && Helper_1.Helper.isNotNull(values[k + "Options"])) { + options = this._formElem.elements[k].options; + + for (val in values[k + "Options"]) { + option = document.createElement("option"); + option.value = val; + option.innerText = values[k + "Options"][val]; + options.add(option); + } + } + + if (this._formElem.elements[k].type && (this._formElem.elements[k].type === "checkbox" || this._formElem.elements[k].type === "radio")) { + this._formElem.elements[k].checked = this._formElem.elements[k].value == values[k]; + } else if (this._formElem.elements[k].type && this._formElem.elements[k].type === "file") { + if (this._formElem.elements[k + "-hidden"]) { + this._formElem.elements[k + "-hidden"].value = values[k]; + } + + if (this._formElem.elements[k].accept && this._formElem.elements[k].accept.indexOf("image") !== -1) { + previewImage = this._formElem.querySelector("." + k + "-preview"); + + if (previewImage) { + previewImage.src = values[k]; + } + } + } else { + this._formElem.elements[k].value = Helper_1.Helper.htmlspecialcharsDecode(values[k]); + + if (this._formElem.elements[k].classList) { + if (Helper_1.Helper.isNotNull(values[k]) && ("" + values[k]).trim() !== "") { + this._formElem.elements[k].classList.add("notEmpty"); + } else { + this._formElem.elements[k].classList.remove("notEmpty"); + } + } + } + } + } + + return _context4.abrupt("return", this); + + case 7: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "getValues", + value: function getValues(filesToBase64) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var valuesFormData, values; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + valuesFormData = new FormData(this._formElem); + values = Array.from(valuesFormData["entries"]()).reduce(function (memo, pair) { + return Object.assign(Object.assign({}, memo), _defineProperty({}, pair[0], pair[1])); + }, {}); + + if (!Helper_1.Helper.nonNull(filesToBase64, true)) { + _context5.next = 6; + break; + } + + _context5.next = 5; + return Form.filesToBase64(values); + + case 5: + values = _context5.sent; + + case 6: + return _context5.abrupt("return", values); + + case 7: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + }, { + key: "setElementChangeListener", + value: function setElementChangeListener(listener) { + this._elementChangeListener = listener; + } + }, { + key: "clearErrors", + value: function clearErrors() { + var _this2 = this; + + Object.keys(this._formElem.elements).forEach(function (elemKey) { + _this2._formElem.elements[elemKey].setCustomValidity(""); + }); + } + }, { + key: "setErrors", + value: function setErrors(errors) { + var hasElem = false; + var firstError = null; // let notCatchedErrors = []; + + for (var k in errors) { + if (Helper_1.Helper.isNotNull(this._formElem.elements[k]) && this._formElem.elements[k].type !== "hidden" && Helper_1.Helper.isNull(this._formElem.elements[k].readonly) && (Helper_1.Helper.isNull(this._formElem.elements[k].disabled) || !this._formElem.elements[k].disabled)) { + this._formElem.elements[k].setCustomValidity(Translator_1.Translator.translate(Helper_1.Helper.nonNull(errors[k], "form-default-error"))); + + hasElem = true; + } else { + new Toast_1.Toast(Helper_1.Helper.nonNull(errors[k], "form-default-error")).show(); + } // if (Helper.isNull(firstError)) { + // firstError = ; + // } + + } // if (!hasElem && Helper.isNotNull(firstError)) { + // for (let k in this._formElem.elements) { + // if (this._formElem.elements[k].type !== "hidden") { + // this._formElem.elements[k].setCustomValidity(Translator.translate(firstError)); + // hasElem = true; + // break; + // } + // } + // } + + + if (hasElem) { + "reportValidity" in this._formElem && this._formElem.reportValidity(); + } + } + }, { + key: "setIsBusy", + value: function setIsBusy(isBusy) { + this._isBusy = isBusy; + + if (this._isBusy) { + this._formElem.classList.add("sending"); + } else { + this._formElem.classList.remove("sending"); + } + } + }, { + key: "submit", + value: function submit() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var res; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + this._editors.forEach(function (e) { + return e.updateSourceElement(); + }); + + this.setIsBusy(true); + _context6.next = 4; + return this.validate(); + + case 4: + if (!_context6.sent) { + _context6.next = 24; + break; + } + + res = false; + _context6.prev = 6; + _context6.t0 = this; + _context6.next = 10; + return this.getValues(); + + case 10: + _context6.t1 = _context6.sent; + _context6.t2 = this; + _context6.next = 14; + return _context6.t0._submitHandler.call(_context6.t0, _context6.t1, _context6.t2); + + case 14: + res = _context6.sent; + _context6.next = 20; + break; + + case 17: + _context6.prev = 17; + _context6.t3 = _context6["catch"](6); + console.error(_context6.t3); + + case 20: + _context6.prev = 20; + this.setIsBusy(false); + return _context6.finish(20); + + case 23: + return _context6.abrupt("return", res); + + case 24: + this.setIsBusy(false); + return _context6.abrupt("return", false); + + case 26: + case "end": + return _context6.stop(); + } + } + }, _callee6, this, [[6, 17, 20, 23]]); + })); + } + }, { + key: "validate", + value: function validate() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var _this3 = this; + + var values, res, hasErrors, errors; + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + if (!("reportValidity" in this._formElem && !this._formElem.reportValidity())) { + _context8.next = 2; + break; + } + + return _context8.abrupt("return", false); + + case 2: + _context8.next = 4; + return this.getValues(); + + case 4: + values = _context8.sent; + _context8.next = 7; + return Helper_1.Helper.asyncForEach(this._validators, function (validator) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + return _context7.abrupt("return", validator(values, this)); + + case 1: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + }, true); + + case 7: + res = _context8.sent; + hasErrors = false; + errors = {}; + res.forEach(function (value) { + if (value !== true) { + hasErrors = true; + + if (_typeof(value) === "object") { + for (var k in value) { + errors[k] = value[k]; + } + } + } + }); + + if (!hasErrors) { + _context8.next = 15; + break; + } + + _context8.next = 14; + return this.setErrors(errors); + + case 14: + return _context8.abrupt("return", false); + + case 15: + return _context8.abrupt("return", true); + + case 16: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "onSubmit", + value: function onSubmit(callback) { + this._submitCallback = callback; + } + }, { + key: "getFormElement", + value: function getFormElement() { + return this._formElem; + } + }], [{ + key: "filesToBase64", + value: function filesToBase64(values) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + var filePromises; + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + filePromises = []; + Object.keys(values).forEach(function (key) { + if (values[key] instanceof Blob) { + filePromises.push(new Promise(function (resolve, reject) { + var reader = new FileReader(); + + reader.onload = function () { + return resolve(reader.result); + }; + + reader.onerror = function (error) { + return reject(error); + }; + + reader.readAsDataURL(values[key]); + }).then(function (base64) { + return values[key] = base64; + })); + } + }); + _context9.next = 4; + return Promise.all(filePromises); + + case 4: + return _context9.abrupt("return", values); + + case 5: + case "end": + return _context9.stop(); + } + } + }, _callee9); + })); + } + }]); + + return Form; +}(); + +exports.Form = Form; + +/***/ }), +/* 162 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RowLevel10\", function() { return RowLevel10; });\n/* harmony import */ var _RowLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RowLevel */ \"./src/client/js/wordrotator/Level/RowLevel.js\");\n\n\nclass RowLevel10 extends _RowLevel__WEBPACK_IMPORTED_MODULE_0__[\"RowLevel\"]{\n constructor(container) {\n super(container, 10);\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/RowLevel10.js?"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return JoinAttribute; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50); +/* harmony import */ var _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24); + + + +/** + * Stores all join attributes which will be used to build a JOIN query. + */ +var JoinAttribute = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function JoinAttribute(connection, queryExpressionMap, joinAttribute) { + this.connection = connection; + this.queryExpressionMap = queryExpressionMap; + this.isSelectedEvaluated = false; + this.relationEvaluated = false; + _util_ObjectUtils__WEBPACK_IMPORTED_MODULE_2__[/* ObjectUtils */ "a"].assign(this, joinAttribute || {}); + } + Object.defineProperty(JoinAttribute.prototype, "isMany", { + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + get: function () { + if (this.isMappingMany !== undefined) + return this.isMappingMany; + if (this.relation) + return this.relation.isManyToMany || this.relation.isOneToMany; + return false; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "isSelected", { + /** + * Indicates if this join is selected. + */ + get: function () { + var _this = this; + if (!this.isSelectedEvaluated) { + var getValue = function () { + var e_1, _a; + var _loop_1 = function (select) { + if (select.selection === _this.alias.name) + return { value: true }; + if (_this.metadata && !!_this.metadata.columns.find(function (column) { return select.selection === _this.alias.name + "." + column.propertyPath; })) + return { value: true }; + }; + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "g"])(_this.queryExpressionMap.selects), _c = _b.next(); !_c.done; _c = _b.next()) { + var select = _c.value; + var state_1 = _loop_1(select); + if (typeof state_1 === "object") + return state_1.value; + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + return false; + }; + this.isSelectedCache = getValue(); + this.isSelectedEvaluated = true; + } + return this.isSelectedCache; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "tablePath", { + /** + * Name of the table which we should join. + */ + get: function () { + return this.metadata ? this.metadata.tablePath : this.entityOrProperty; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "parentAlias", { + /** + * Alias of the parent of this join. + * For example, if we join ("post.category", "categoryAlias") then "post" is a parent alias. + * This value is extracted from entityOrProperty value. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.entityOrProperty)) + return undefined; + return this.entityOrProperty.substr(0, this.entityOrProperty.indexOf(".")); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "relationPropertyPath", { + /** + * Relation property name of the parent. + * This is used to understand what is joined. + * For example, if we join ("post.category", "categoryAlias") then "category" is a relation property. + * This value is extracted from entityOrProperty value. + * This is available when join was made using "post.category" syntax. + */ + get: function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(this.entityOrProperty)) + return undefined; + return this.entityOrProperty.substr(this.entityOrProperty.indexOf(".") + 1); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "relation", { + /** + * Relation of the parent. + * This is used to understand what is joined. + * This is available when join was made using "post.category" syntax. + * Relation can be undefined if entityOrProperty is regular entity or custom table. + */ + get: function () { + var _this = this; + if (!this.relationEvaluated) { + var getValue = function () { + if (!_QueryBuilderUtils__WEBPACK_IMPORTED_MODULE_1__[/* QueryBuilderUtils */ "a"].isAliasProperty(_this.entityOrProperty)) + return undefined; + var relationOwnerSelection = _this.queryExpressionMap.findAliasByName(_this.parentAlias); + var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(_this.relationPropertyPath); + if (relation) { + return relation; + } + if (relationOwnerSelection.metadata.parentEntityMetadata) { + relation = relationOwnerSelection.metadata.parentEntityMetadata.findRelationWithPropertyPath(_this.relationPropertyPath); + if (relation) { + return relation; + } + } + throw new Error("Relation with property path " + _this.relationPropertyPath + " in entity was not found."); + }; + this.relationCache = getValue.bind(this)(); + this.relationEvaluated = true; + } + return this.relationCache; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "metadata", { + /** + * Metadata of the joined entity. + * If table without entity was joined, then it will return undefined. + */ + get: function () { + // entityOrProperty is relation, e.g. "post.category" + if (this.relation) + return this.relation.inverseEntityMetadata; + // entityOrProperty is Entity class + if (this.connection.hasMetadata(this.entityOrProperty)) + return this.connection.getMetadata(this.entityOrProperty); + return undefined; + /*if (typeof this.entityOrProperty === "string") { // entityOrProperty is a custom table + + // first try to find entity with such name, this is needed when entity does not have a target class, + // and its target is a string name (scenario when plain old javascript is used or entity schema is loaded from files) + const metadata = this.connection.entityMetadatas.find(metadata => metadata.name === this.entityOrProperty); + if (metadata) + return metadata; + + // check if we have entity with such table name, and use its metadata if found + return this.connection.entityMetadatas.find(metadata => metadata.tableName === this.entityOrProperty); + }*/ + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "junctionAlias", { + /** + * Generates alias of junction table, whose ids we get. + */ + get: function () { + if (!this.relation) + throw new Error("Cannot get junction table for join without relation."); + return this.relation.isOwning ? this.parentAlias + "_" + this.alias.name : this.alias.name + "_" + this.parentAlias; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "mapToPropertyParentAlias", { + get: function () { + if (!this.mapToProperty) + return undefined; + return this.mapToProperty.split(".")[0]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JoinAttribute.prototype, "mapToPropertyPropertyName", { + get: function () { + if (!this.mapToProperty) + return undefined; + return this.mapToProperty.split(".")[1]; + }, + enumerable: false, + configurable: true + }); + return JoinAttribute; +}()); + + +//# sourceMappingURL=JoinAttribute.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/RowLevel8.js": -/*!******************************************************!*\ - !*** ./src/client/js/wordrotator/Level/RowLevel8.js ***! - \******************************************************/ -/*! exports provided: RowLevel8 */ +/* 163 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RowLevel8\", function() { return RowLevel8; });\n/* harmony import */ var _RowLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RowLevel */ \"./src/client/js/wordrotator/Level/RowLevel.js\");\n\n\nclass RowLevel8 extends _RowLevel__WEBPACK_IMPORTED_MODULE_0__[\"RowLevel\"]{\n constructor(container) {\n super(container, 8);\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/RowLevel8.js?"); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ BaseQueryRunner_BaseQueryRunner; }); + +// EXTERNAL MODULE: ./node_modules/typeorm/node_modules/tslib/tslib.es6.js +var tslib_es6 = __webpack_require__(0); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/driver/Query.js +var Query = __webpack_require__(2); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/driver/SqlInMemory.js +/** + * This class stores up and down queries needed for migrations functionality. + */ +var SqlInMemory = /** @class */ (function () { + function SqlInMemory() { + this.upQueries = []; + this.downQueries = []; + } + return SqlInMemory; +}()); + + +//# sourceMappingURL=SqlInMemory.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js + + + +var BaseQueryRunner_BaseQueryRunner = /** @class */ (function () { + function BaseQueryRunner() { + // ------------------------------------------------------------------------- + // Public Properties + // ------------------------------------------------------------------------- + /** + * Indicates if connection for this query runner is released. + * Once its released, query runner cannot run queries anymore. + */ + this.isReleased = false; + /** + * Indicates if transaction is in progress. + */ + this.isTransactionActive = false; + /** + * Stores temporarily user data. + * Useful for sharing data with subscribers. + */ + this.data = {}; + /** + * All synchronized tables in the database. + */ + this.loadedTables = []; + /** + * All synchronized views in the database. + */ + this.loadedViews = []; + /** + * Indicates if special query runner mode in which sql queries won't be executed is enabled. + */ + this.sqlMemoryMode = false; + /** + * Sql-s stored if "sql in memory" mode is enabled. + */ + this.sqlInMemory = new SqlInMemory(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Loads given table's data from the database. + */ + BaseQueryRunner.prototype.getTable = function (tablePath) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _a = this; + return [4 /*yield*/, this.loadTables([tablePath])]; + case 1: + _a.loadedTables = _b.sent(); + return [2 /*return*/, this.loadedTables.length > 0 ? this.loadedTables[0] : undefined]; + } + }); + }); + }; + /** + * Loads all tables (with given names) from the database. + */ + BaseQueryRunner.prototype.getTables = function (tableNames) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _a = this; + return [4 /*yield*/, this.loadTables(tableNames)]; + case 1: + _a.loadedTables = _b.sent(); + return [2 /*return*/, this.loadedTables]; + } + }); + }); + }; + /** + * Loads given view's data from the database. + */ + BaseQueryRunner.prototype.getView = function (viewPath) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _a = this; + return [4 /*yield*/, this.loadViews([viewPath])]; + case 1: + _a.loadedViews = _b.sent(); + return [2 /*return*/, this.loadedViews.length > 0 ? this.loadedViews[0] : undefined]; + } + }); + }); + }; + /** + * Loads given view's data from the database. + */ + BaseQueryRunner.prototype.getViews = function (viewPaths) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a; + return Object(tslib_es6["d" /* __generator */])(this, function (_b) { + switch (_b.label) { + case 0: + _a = this; + return [4 /*yield*/, this.loadViews(viewPaths)]; + case 1: + _a.loadedViews = _b.sent(); + return [2 /*return*/, this.loadedViews]; + } + }); + }); + }; + /** + * Enables special query runner mode in which sql queries won't be executed, + * instead they will be memorized into a special variable inside query runner. + * You can get memorized sql using getMemorySql() method. + */ + BaseQueryRunner.prototype.enableSqlMemory = function () { + this.sqlInMemory = new SqlInMemory(); + this.sqlMemoryMode = true; + }; + /** + * Disables special query runner mode in which sql queries won't be executed + * started by calling enableSqlMemory() method. + * + * Previously memorized sql will be flushed. + */ + BaseQueryRunner.prototype.disableSqlMemory = function () { + this.sqlInMemory = new SqlInMemory(); + this.sqlMemoryMode = false; + }; + /** + * Flushes all memorized sqls. + */ + BaseQueryRunner.prototype.clearSqlMemory = function () { + this.sqlInMemory = new SqlInMemory(); + }; + /** + * Gets sql stored in the memory. Parameters in the sql are already replaced. + */ + BaseQueryRunner.prototype.getMemorySql = function () { + return this.sqlInMemory; + }; + /** + * Executes up sql queries. + */ + BaseQueryRunner.prototype.executeMemoryUpSql = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a, _b, _c, query, parameters, e_1_1; + var e_1, _d; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + _e.trys.push([0, 5, 6, 7]); + _a = Object(tslib_es6["g" /* __values */])(this.sqlInMemory.upQueries), _b = _a.next(); + _e.label = 1; + case 1: + if (!!_b.done) return [3 /*break*/, 4]; + _c = _b.value, query = _c.query, parameters = _c.parameters; + return [4 /*yield*/, this.query(query, parameters)]; + case 2: + _e.sent(); + _e.label = 3; + case 3: + _b = _a.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_1_1 = _e.sent(); + e_1 = { error: e_1_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (_b && !_b.done && (_d = _a.return)) _d.call(_a); + } + finally { if (e_1) throw e_1.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes down sql queries. + */ + BaseQueryRunner.prototype.executeMemoryDownSql = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var _a, _b, _c, query, parameters, e_2_1; + var e_2, _d; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + _e.trys.push([0, 5, 6, 7]); + _a = Object(tslib_es6["g" /* __values */])(this.sqlInMemory.downQueries.reverse()), _b = _a.next(); + _e.label = 1; + case 1: + if (!!_b.done) return [3 /*break*/, 4]; + _c = _b.value, query = _c.query, parameters = _c.parameters; + return [4 /*yield*/, this.query(query, parameters)]; + case 2: + _e.sent(); + _e.label = 3; + case 3: + _b = _a.next(); + return [3 /*break*/, 1]; + case 4: return [3 /*break*/, 7]; + case 5: + e_2_1 = _e.sent(); + e_2 = { error: e_2_1 }; + return [3 /*break*/, 7]; + case 6: + try { + if (_b && !_b.done && (_d = _a.return)) _d.call(_a); + } + finally { if (e_2) throw e_2.error; } + return [7 /*endfinally*/]; + case 7: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Gets view from previously loaded views, otherwise loads it from database. + */ + BaseQueryRunner.prototype.getCachedView = function (viewName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var view, foundViews; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + view = this.loadedViews.find(function (view) { return view.name === viewName; }); + if (view) + return [2 /*return*/, view]; + return [4 /*yield*/, this.loadViews([viewName])]; + case 1: + foundViews = _a.sent(); + if (foundViews.length > 0) { + this.loadedViews.push(foundViews[0]); + return [2 /*return*/, foundViews[0]]; + } + else { + throw new Error("View \"" + viewName + "\" does not exist."); + } + return [2 /*return*/]; + } + }); + }); + }; + /** + * Gets table from previously loaded tables, otherwise loads it from database. + */ + BaseQueryRunner.prototype.getCachedTable = function (tableName) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var table, foundTables; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + table = this.loadedTables.find(function (table) { return table.name === tableName; }); + if (table) + return [2 /*return*/, table]; + return [4 /*yield*/, this.loadTables([tableName])]; + case 1: + foundTables = _a.sent(); + if (foundTables.length > 0) { + this.loadedTables.push(foundTables[0]); + return [2 /*return*/, foundTables[0]]; + } + else { + throw new Error("Table \"" + tableName + "\" does not exist."); + } + return [2 /*return*/]; + } + }); + }); + }; + /** + * Replaces loaded table with given changed table. + */ + BaseQueryRunner.prototype.replaceCachedTable = function (table, changedTable) { + var foundTable = this.loadedTables.find(function (loadedTable) { return loadedTable.name === table.name; }); + if (foundTable) { + foundTable.name = changedTable.name; + foundTable.columns = changedTable.columns; + foundTable.indices = changedTable.indices; + foundTable.foreignKeys = changedTable.foreignKeys; + foundTable.uniques = changedTable.uniques; + foundTable.checks = changedTable.checks; + foundTable.justCreated = changedTable.justCreated; + foundTable.engine = changedTable.engine; + } + }; + BaseQueryRunner.prototype.getTypeormMetadataTableName = function () { + var options = this.connection.driver.options; + return this.connection.driver.buildTableName("typeorm_metadata", options.schema, options.database); + }; + /** + * Checks if at least one of column properties was changed. + * Does not checks column type, length and autoincrement, because these properties changes separately. + */ + BaseQueryRunner.prototype.isColumnChanged = function (oldColumn, newColumn, checkDefault, checkComment) { + // this logs need to debug issues in column change detection. Do not delete it! + // console.log("charset ---------------"); + // console.log(oldColumn.charset !== newColumn.charset); + // console.log(oldColumn.charset, newColumn.charset); + // console.log("collation ---------------"); + // console.log(oldColumn.collation !== newColumn.collation); + // console.log(oldColumn.collation, newColumn.collation); + // console.log("precision ---------------"); + // console.log(oldColumn.precision !== newColumn.precision); + // console.log(oldColumn.precision, newColumn.precision); + // console.log("scale ---------------"); + // console.log(oldColumn.scale !== newColumn.scale); + // console.log(oldColumn.scale, newColumn.scale); + // console.log("default ---------------"); + // console.log((checkDefault && oldColumn.default !== newColumn.default)); + // console.log(oldColumn.default, newColumn.default); + // console.log("isNullable ---------------"); + // console.log(oldColumn.isNullable !== newColumn.isNullable); + // console.log(oldColumn.isNullable, newColumn.isNullable); + // console.log("comment ---------------"); + // console.log((checkComment && oldColumn.comment !== newColumn.comment)); + // console.log(oldColumn.comment, newColumn.comment); + // console.log("enum ---------------"); + // console.log(oldColumn.enum !== newColumn.enum); + // console.log(oldColumn.enum, newColumn.enum); + return oldColumn.charset !== newColumn.charset + || oldColumn.collation !== newColumn.collation + || oldColumn.precision !== newColumn.precision + || oldColumn.scale !== newColumn.scale + || oldColumn.width !== newColumn.width // MySQL only + || oldColumn.zerofill !== newColumn.zerofill // MySQL only + || oldColumn.unsigned !== newColumn.unsigned // MySQL only + || oldColumn.asExpression !== newColumn.asExpression // MySQL only + || (checkDefault && oldColumn.default !== newColumn.default) + || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only + || oldColumn.isNullable !== newColumn.isNullable + || (checkComment && oldColumn.comment !== newColumn.comment) + || oldColumn.enum !== newColumn.enum; + }; + /** + * Checks if column length is by default. + */ + BaseQueryRunner.prototype.isDefaultColumnLength = function (table, column, length) { + // if table have metadata, we check if length is specified in column metadata + if (this.connection.hasMetadata(table.name)) { + var metadata = this.connection.getMetadata(table.name); + var columnMetadata = metadata.findColumnWithDatabaseName(column.name); + if (columnMetadata && columnMetadata.length) + return false; + } + if (this.connection.driver.dataTypeDefaults + && this.connection.driver.dataTypeDefaults[column.type] + && this.connection.driver.dataTypeDefaults[column.type].length) { + return this.connection.driver.dataTypeDefaults[column.type].length.toString() === length.toString(); + } + return false; + }; + /** + * Checks if column precision is by default. + */ + BaseQueryRunner.prototype.isDefaultColumnPrecision = function (table, column, precision) { + // if table have metadata, we check if length is specified in column metadata + if (this.connection.hasMetadata(table.name)) { + var metadata = this.connection.getMetadata(table.name); + var columnMetadata = metadata.findColumnWithDatabaseName(column.name); + if (columnMetadata && columnMetadata.precision !== null && columnMetadata.precision !== undefined) + return false; + } + if (this.connection.driver.dataTypeDefaults + && this.connection.driver.dataTypeDefaults[column.type] + && this.connection.driver.dataTypeDefaults[column.type].precision !== null + && this.connection.driver.dataTypeDefaults[column.type].precision !== undefined) + return this.connection.driver.dataTypeDefaults[column.type].precision === precision; + return false; + }; + /** + * Checks if column scale is by default. + */ + BaseQueryRunner.prototype.isDefaultColumnScale = function (table, column, scale) { + // if table have metadata, we check if length is specified in column metadata + if (this.connection.hasMetadata(table.name)) { + var metadata = this.connection.getMetadata(table.name); + var columnMetadata = metadata.findColumnWithDatabaseName(column.name); + if (columnMetadata && columnMetadata.scale !== null && columnMetadata.scale !== undefined) + return false; + } + if (this.connection.driver.dataTypeDefaults + && this.connection.driver.dataTypeDefaults[column.type] + && this.connection.driver.dataTypeDefaults[column.type].scale !== null + && this.connection.driver.dataTypeDefaults[column.type].scale !== undefined) + return this.connection.driver.dataTypeDefaults[column.type].scale === scale; + return false; + }; + /** + * Executes sql used special for schema build. + */ + BaseQueryRunner.prototype.executeQueries = function (upQueries, downQueries) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var upQueries_1, upQueries_1_1, _a, query, parameters, e_3_1; + var _b, _c, e_3, _d; + return Object(tslib_es6["d" /* __generator */])(this, function (_e) { + switch (_e.label) { + case 0: + if (upQueries instanceof Query["a" /* Query */]) + upQueries = [upQueries]; + if (downQueries instanceof Query["a" /* Query */]) + downQueries = [downQueries]; + (_b = this.sqlInMemory.upQueries).push.apply(_b, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(upQueries))); + (_c = this.sqlInMemory.downQueries).push.apply(_c, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(downQueries))); + // if sql-in-memory mode is enabled then simply store sql in memory and return + if (this.sqlMemoryMode === true) + return [2 /*return*/, Promise.resolve()]; + _e.label = 1; + case 1: + _e.trys.push([1, 6, 7, 8]); + upQueries_1 = Object(tslib_es6["g" /* __values */])(upQueries), upQueries_1_1 = upQueries_1.next(); + _e.label = 2; + case 2: + if (!!upQueries_1_1.done) return [3 /*break*/, 5]; + _a = upQueries_1_1.value, query = _a.query, parameters = _a.parameters; + return [4 /*yield*/, this.query(query, parameters)]; + case 3: + _e.sent(); + _e.label = 4; + case 4: + upQueries_1_1 = upQueries_1.next(); + return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 8]; + case 6: + e_3_1 = _e.sent(); + e_3 = { error: e_3_1 }; + return [3 /*break*/, 8]; + case 7: + try { + if (upQueries_1_1 && !upQueries_1_1.done && (_d = upQueries_1.return)) _d.call(upQueries_1); + } + finally { if (e_3) throw e_3.error; } + return [7 /*endfinally*/]; + case 8: return [2 /*return*/]; + } + }); + }); + }; + return BaseQueryRunner; +}()); + + +//# sourceMappingURL=BaseQueryRunner.js.map + /***/ }), +/* 164 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js": -/*!*****************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js ***! - \*****************************************************************/ -/*! exports provided: SimpleFourWordsLevel */ +var isObject = __webpack_require__(14); +var document = __webpack_require__(11).document; +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; + + +/***/ }), +/* 165 */ +/***/ (function(module, exports, __webpack_require__) { + +exports.f = __webpack_require__(18); + + +/***/ }), +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(134)('keys'); +var uid = __webpack_require__(87); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; + + +/***/ }), +/* 167 */ +/***/ (function(module, exports) { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + + +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { + +var document = __webpack_require__(11).document; +module.exports = document && document.documentElement; + + +/***/ }), +/* 169 */ +/***/ (function(module, exports, __webpack_require__) { + +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = __webpack_require__(14); +var anObject = __webpack_require__(13); +var check = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function (test, buggy, set) { + try { + set = __webpack_require__(62)(Function.call, __webpack_require__(65).f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch (e) { buggy = true; } + return function setPrototypeOf(O, proto) { + check(O, proto); + if (buggy) O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; + + +/***/ }), +/* 170 */ +/***/ (function(module, exports) { + +module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(14); +var setPrototypeOf = __webpack_require__(169).set; +module.exports = function (that, target, C) { + var S = target.constructor; + var P; + if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { + setPrototypeOf(that, P); + } return that; +}; + + +/***/ }), +/* 172 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var toInteger = __webpack_require__(64); +var defined = __webpack_require__(76); + +module.exports = function repeat(count) { + var str = String(defined(this)); + var res = ''; + var n = toInteger(count); + if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); + for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str; + return res; +}; + + +/***/ }), +/* 173 */ +/***/ (function(module, exports) { + +// 20.2.2.28 Math.sign(x) +module.exports = Math.sign || function sign(x) { + // eslint-disable-next-line no-self-compare + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; +}; + + +/***/ }), +/* 174 */ +/***/ (function(module, exports) { + +// 20.2.2.14 Math.expm1(x) +var $expm1 = Math.expm1; +module.exports = (!$expm1 + // Old FF bug + || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 + // Tor Browser bug + || $expm1(-2e-17) != -2e-17 +) ? function expm1(x) { + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; +} : $expm1; + + +/***/ }), +/* 175 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(64); +var defined = __webpack_require__(76); +// true -> String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + + +/***/ }), +/* 176 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(88); +var $export = __webpack_require__(3); +var redefine = __webpack_require__(45); +var hide = __webpack_require__(52); +var Iterators = __webpack_require__(105); +var $iterCreate = __webpack_require__(227); +var setToStringTag = __webpack_require__(103); +var getPrototypeOf = __webpack_require__(93); +var ITERATOR = __webpack_require__(18)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function () { return this; }; + +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + + +/***/ }), +/* 177 */ +/***/ (function(module, exports, __webpack_require__) { + +// helper for String#{startsWith, endsWith, includes} +var isRegExp = __webpack_require__(178); +var defined = __webpack_require__(76); + +module.exports = function (that, searchString, NAME) { + if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); + return String(defined(that)); +}; + + +/***/ }), +/* 178 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.2.8 IsRegExp(argument) +var isObject = __webpack_require__(14); +var cof = __webpack_require__(75); +var MATCH = __webpack_require__(18)('match'); +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; + + +/***/ }), +/* 179 */ +/***/ (function(module, exports, __webpack_require__) { + +var MATCH = __webpack_require__(18)('match'); +module.exports = function (KEY) { + var re = /./; + try { + '/./'[KEY](re); + } catch (e) { + try { + re[MATCH] = false; + return !'/./'[KEY](re); + } catch (f) { /* empty */ } + } return true; +}; + + +/***/ }), +/* 180 */ +/***/ (function(module, exports, __webpack_require__) { + +// check on default Array iterator +var Iterators = __webpack_require__(105); +var ITERATOR = __webpack_require__(18)('iterator'); +var ArrayProto = Array.prototype; + +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + + +/***/ }), +/* 181 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $defineProperty = __webpack_require__(29); +var createDesc = __webpack_require__(86); + +module.exports = function (object, index, value) { + if (index in object) $defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; + + +/***/ }), +/* 182 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(124); +var ITERATOR = __webpack_require__(18)('iterator'); +var Iterators = __webpack_require__(105); +module.exports = __webpack_require__(26).getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), +/* 183 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) + +var toObject = __webpack_require__(36); +var toAbsoluteIndex = __webpack_require__(90); +var toLength = __webpack_require__(23); +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var aLen = arguments.length; + var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length); + var end = aLen > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; + + +/***/ }), +/* 184 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var addToUnscopables = __webpack_require__(94); +var step = __webpack_require__(232); +var Iterators = __webpack_require__(105); +var toIObject = __webpack_require__(53); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = __webpack_require__(176)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + + +/***/ }), +/* 185 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var regexpFlags = __webpack_require__(139); + +var nativeExec = RegExp.prototype.exec; +// This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. +var nativeReplace = String.prototype.replace; + +var patchedExec = nativeExec; + +var LAST_INDEX = 'lastIndex'; + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/, + re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; +})(); + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; + +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; + + match = nativeExec.call(re, str); + + if (UPDATES_LAST_INDEX_WRONG && match) { + re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + // eslint-disable-next-line no-loop-func + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; +} + +module.exports = patchedExec; + + +/***/ }), +/* 186 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var at = __webpack_require__(175)(true); + + // `AdvanceStringIndex` abstract operation +// https://tc39.github.io/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? at(S, index).length : 1); +}; + + +/***/ }), +/* 187 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(62); +var invoke = __webpack_require__(221); +var html = __webpack_require__(168); +var cel = __webpack_require__(164); +var global = __webpack_require__(11); +var process = global.process; +var setTask = global.setImmediate; +var clearTask = global.clearImmediate; +var MessageChannel = global.MessageChannel; +var Dispatch = global.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; +var run = function () { + var id = +this; + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listener = function (event) { + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!setTask || !clearTask) { + setTask = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (__webpack_require__(75)(process) == 'process') { + defer = function (id) { + process.nextTick(ctx(run, id, 1)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { + defer = function (id) { + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in cel('script')) { + defer = function (id) { + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; + + +/***/ }), +/* 188 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(11); +var DESCRIPTORS = __webpack_require__(28); +var LIBRARY = __webpack_require__(88); +var $typed = __webpack_require__(145); +var hide = __webpack_require__(52); +var redefineAll = __webpack_require__(108); +var fails = __webpack_require__(12); +var anInstance = __webpack_require__(107); +var toInteger = __webpack_require__(64); +var toLength = __webpack_require__(23); +var toIndex = __webpack_require__(240); +var gOPN = __webpack_require__(92).f; +var dP = __webpack_require__(29).f; +var arrayFill = __webpack_require__(183); +var setToStringTag = __webpack_require__(103); +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length!'; +var WRONG_INDEX = 'Wrong index!'; +var $ArrayBuffer = global[ARRAY_BUFFER]; +var $DataView = global[DATA_VIEW]; +var Math = global.Math; +var RangeError = global.RangeError; +// eslint-disable-next-line no-shadow-restricted-names +var Infinity = global.Infinity; +var BaseBuffer = $ArrayBuffer; +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; +var BUFFER = 'buffer'; +var BYTE_LENGTH = 'byteLength'; +var BYTE_OFFSET = 'byteOffset'; +var $BUFFER = DESCRIPTORS ? '_b' : BUFFER; +var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH; +var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET; + +// IEEE754 conversions based on https://github.com/feross/ieee754 +function packIEEE754(value, mLen, nBytes) { + var buffer = new Array(nBytes); + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0; + var i = 0; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + var e, m, c; + value = abs(value); + // eslint-disable-next-line no-self-compare + if (value != value || value === Infinity) { + // eslint-disable-next-line no-self-compare + m = value != value ? 1 : 0; + e = eMax; + } else { + e = floor(log(value) / LN2); + if (value * (c = pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * pow(2, mLen); + e = e + eBias; + } else { + m = value * pow(2, eBias - 1) * pow(2, mLen); + e = 0; + } + } + for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8); + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8); + buffer[--i] |= s * 128; + return buffer; +} +function unpackIEEE754(buffer, mLen, nBytes) { + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = eLen - 7; + var i = nBytes - 1; + var s = buffer[i--]; + var e = s & 127; + var m; + s >>= 7; + for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8); + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8); + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : s ? -Infinity : Infinity; + } else { + m = m + pow(2, mLen); + e = e - eBias; + } return (s ? -1 : 1) * m * pow(2, e - mLen); +} + +function unpackI32(bytes) { + return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0]; +} +function packI8(it) { + return [it & 0xff]; +} +function packI16(it) { + return [it & 0xff, it >> 8 & 0xff]; +} +function packI32(it) { + return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff]; +} +function packF64(it) { + return packIEEE754(it, 52, 8); +} +function packF32(it) { + return packIEEE754(it, 23, 4); +} + +function addGetter(C, key, internal) { + dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } }); +} + +function get(view, bytes, index, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = store.slice(start, start + bytes); + return isLittleEndian ? pack : pack.reverse(); +} +function set(view, bytes, index, conversion, value, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = conversion(+value); + for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1]; +} + +if (!$typed.ABV) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer, ARRAY_BUFFER); + var byteLength = toIndex(length); + this._b = arrayFill.call(new Array(byteLength), 0); + this[$LENGTH] = byteLength; + }; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = buffer[$LENGTH]; + var offset = toInteger(byteOffset); + if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); + this[$BUFFER] = buffer; + this[$OFFSET] = offset; + this[$LENGTH] = byteLength; + }; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, BYTE_LENGTH, '_l'); + addGetter($DataView, BUFFER, '_b'); + addGetter($DataView, BYTE_LENGTH, '_l'); + addGetter($DataView, BYTE_OFFSET, '_o'); + } + + redefineAll($DataView[PROTOTYPE], { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packF32, value, arguments[2]); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packF64, value, arguments[2]); + } + }); +} else { + if (!fails(function () { + $ArrayBuffer(1); + }) || !fails(function () { + new $ArrayBuffer(-1); // eslint-disable-line no-new + }) || fails(function () { + new $ArrayBuffer(); // eslint-disable-line no-new + new $ArrayBuffer(1.5); // eslint-disable-line no-new + new $ArrayBuffer(NaN); // eslint-disable-line no-new + return $ArrayBuffer.name != ARRAY_BUFFER; + })) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer); + return new BaseBuffer(toIndex(length)); + }; + var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE]; + for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) { + if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]); + } + if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer; + } + // iOS Safari 7.x bug + var view = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = $DataView[PROTOTYPE].setInt8; + view.setInt8(0, 2147483648); + view.setInt8(1, 2147483649); + if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], { + setInt8: function setInt8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + } + }, true); +} +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); +hide($DataView[PROTOTYPE], $typed.VIEW, true); +exports[ARRAY_BUFFER] = $ArrayBuffer; +exports[DATA_VIEW] = $DataView; + + +/***/ }), +/* 189 */ +/***/ (function(module, exports) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + + +/***/ }), +/* 190 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), +/* 191 */ +/***/ (function(module, exports, __webpack_require__) { + +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(245)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 192 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonHelper = void 0; +const Helper_1 = __webpack_require__(7); +class JsonHelper { + static deepEqual(a, b) { + if (a === b) { + return true; + } + if (a === null || b === null) { + return false; + } + // array deepEqual + if (a instanceof Array && b instanceof Array && a.length === b.length) { + return a["every"]((obj, i) => { + return JsonHelper.deepEqual(obj, b[i]); + }); + } + //date deepEqual + if (a instanceof Date && b instanceof Date) { + return a.getTime() === b.getTime(); + } + // object deep copy + if (typeof a === "object" && typeof b === "object") { + let aKeys = Object.keys(a); + let bKeys = Object.keys(b); + return aKeys.length === bKeys.length && aKeys["every"]((key) => { + return Helper_1.Helper.isNotNull(b[key]) && JsonHelper.deepEqual(a[key], b[key]); + }); + } + //else is false (or not handled) + return false; + } + /** + * Deepcopies JSON + * + * @param obj + * @returns {*} + */ + static deepCopy(obj) { + // https://stackoverflow.com/questions/4120475/how-to-create-and-clone-a-json-object/17502990#17502990 + let i; + // basic type deep copy + if (Helper_1.Helper.isNull(obj) || typeof obj !== 'object') { + return obj; + } + // array deep copy + if (obj instanceof Array) { + let cloneA = []; + for (i = 0; i < obj.length; ++i) { + cloneA[i] = JsonHelper.deepCopy(obj[i]); + } + return cloneA; + } + if (obj instanceof Date) { + return new Date(obj.getTime()); + } + // object deep copy + let cloneO = {}; + for (i in obj) { + cloneO[i] = JsonHelper.deepCopy(obj[i]); + } + return cloneO; + } + static deepAssign(...objects) { + if (objects.length > 0 && Array.isArray(objects)) { + const result = []; + objects.forEach(arr => result.push(...arr)); + return result; + } + const resultObj = {}; + objects.forEach(obj => { + for (let i in obj) { + if (resultObj[i] && typeof obj[i] === "object" && typeof resultObj[i] === "object") { + resultObj[i] = JsonHelper.deepAssign(resultObj[i], obj[i]); + } + else { + resultObj[i] = obj[i]; + } + } + }); + return resultObj; + } + static getDiff(a, b) { + const result = { + changed: {}, + added: {}, + removed: [], + }; + // if (Array.isArray(a) && Array.isArray(b)){ + // const lengthA = a.length; + // const lengthB = b.length; + // + // const minLength = Math.min(lengthA, lengthB); + // for (let i = 0; i < minLength; i++){ + // const + // } + // } + if ((typeof a !== "object" || typeof b !== "object") + && (!Array.isArray(a) && !Array.isArray(b))) { + if (a === b) { + return null; + } + else { + return { value: b }; + } + } + let hasChanged = false; + let hasRemoved = false; + let hasAdded = false; + for (let i in a) { + if (i in b) { + const newVal = JsonHelper.getDiff(a[i], b[i]); + if (newVal !== null) { + result.changed[i] = newVal; + hasChanged = true; + } + } + else { + result.removed.push(i); + hasRemoved = true; + } + } + for (let i in b) { + if (!(i in a)) { + result.added[i] = b[i]; + hasAdded = true; + } + } + if (hasRemoved || hasAdded || hasChanged) { + return result; + } + else { + return null; + } + } + static applyDiff(obj, diff) { + if (!Array.isArray(diff.removed)) { + debugger; + } + Object.keys(diff.changed).forEach(key => { + if ("value" in diff.changed[key]) { + obj[key] = diff.changed[key].value; + } + else { + obj[key] = JsonHelper.applyDiff(obj[key], diff.changed[key]); + } + }); + Object.keys(diff.added).forEach(key => obj[key] = diff.added[key]); + if (Array.isArray(obj)) { + diff.removed.sort((a, b) => (parseInt(b) - parseInt(a))).forEach(index => { + obj.splice(parseInt(index), 1); + }); + } + else { + diff.removed.forEach(rem => delete obj[rem]); + } + return obj; + } +} +exports.JsonHelper = JsonHelper; +//# sourceMappingURL=JsonHelper.js.map + +/***/ }), +/* 193 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || new Function("return this")(); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 194 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SimpleFourWordsLevel\", function() { return SimpleFourWordsLevel; });\n/* harmony import */ var _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BigSegmentsLevels */ \"./src/client/js/wordrotator/Level/BigSegmentsLevels.js\");\n\n\nclass SimpleFourWordsLevel extends _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__[\"BigSegmentsLevels\"]{\n constructor(templateContainer, wordLength, bigSegmentPosition) {\n super(templateContainer, wordLength, [bigSegmentPosition]);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js?"); +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InsertQueryBuilder", function() { return InsertQueryBuilder; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(40); +/* harmony import */ var _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61); +/* harmony import */ var _result_InsertResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(131); +/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(72); +/* harmony import */ var _error_InsertValuesMissingError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(156); +/* harmony import */ var _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(120); +/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(16); +/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(41); +/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(8); +/* harmony import */ var _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(74); + + + + + + + + + + + + + + + + + + +/** + * Allows to build complex sql queries in a fashion way and execute those queries. + */ +var InsertQueryBuilder = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(InsertQueryBuilder, _super); + function InsertQueryBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + // ------------------------------------------------------------------------- + // Public Implemented Methods + // ------------------------------------------------------------------------- + /** + * Gets generated sql query without parameters being replaced. + */ + InsertQueryBuilder.prototype.getQuery = function () { + var sql = this.createComment(); + sql += this.createInsertExpression(); + return sql.trim(); + }; + /** + * Executes sql generated by query builder and returns raw database results. + */ + InsertQueryBuilder.prototype.execute = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var valueSets, queryRunner, transactionStartedByUs, broadcastResult_1, declareSql, selectOutputSql, returningResultsEntityUpdator, _a, insertSql, parameters, insertResult, statements, _b, broadcastResult_2, error_1, rollbackError_1; + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_c) { + switch (_c.label) { + case 0: + valueSets = this.getValueSets(); + // console.timeEnd(".value sets"); + // If user passed empty array of entities then we don't need to do + // anything. + // + // Fixes GitHub issues #3111 and #5734. If we were to let this through + // we would run into problems downstream, like subscribers getting + // invoked with the empty array where they expect an entity, and SQL + // queries with an empty VALUES clause. + if (valueSets.length === 0) + return [2 /*return*/, new _result_InsertResult__WEBPACK_IMPORTED_MODULE_4__[/* InsertResult */ "a"]()]; + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _c.label = 1; + case 1: + _c.trys.push([1, 13, 18, 23]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _c.sent(); + transactionStartedByUs = true; + _c.label = 3; + case 3: + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5]; + broadcastResult_1 = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_10__[/* BroadcasterResult */ "a"](); + valueSets.forEach(function (valueSet) { + queryRunner.broadcaster.broadcastBeforeInsertEvent(broadcastResult_1, _this.expressionMap.mainAlias.metadata, valueSet); + }); + if (!(broadcastResult_1.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(broadcastResult_1.promises)]; + case 4: + _c.sent(); + _c.label = 5; + case 5: + declareSql = null; + selectOutputSql = null; + returningResultsEntityUpdator = new _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_7__[/* ReturningResultsEntityUpdator */ "a"](queryRunner, this.expressionMap); + if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias.hasMetadata) { + if (!(valueSets.length > 1 && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"])) { + this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns(); + } + if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + declareSql = this.connection.driver.buildTableVariableDeclaration("@OutputTable", this.expressionMap.extraReturningColumns); + selectOutputSql = "SELECT * FROM @OutputTable"; + } + } + _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.getQueryAndParameters(), 2), insertSql = _a[0], parameters = _a[1]; + insertResult = new _result_InsertResult__WEBPACK_IMPORTED_MODULE_4__[/* InsertResult */ "a"](); + statements = [declareSql, insertSql, selectOutputSql]; + _b = insertResult; + return [4 /*yield*/, queryRunner.query(statements.filter(function (sql) { return sql != null; }).join(";\n\n"), parameters)]; + case 6: + _b.raw = _c.sent(); + if (!(this.expressionMap.updateEntity === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 8]; + // console.time(".updating entity"); + return [4 /*yield*/, returningResultsEntityUpdator.insert(insertResult, valueSets)]; + case 7: + // console.time(".updating entity"); + _c.sent(); + _c.label = 8; + case 8: + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10]; + broadcastResult_2 = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_10__[/* BroadcasterResult */ "a"](); + valueSets.forEach(function (valueSet) { + queryRunner.broadcaster.broadcastAfterInsertEvent(broadcastResult_2, _this.expressionMap.mainAlias.metadata, valueSet); + }); + if (!(broadcastResult_2.promises.length > 0)) return [3 /*break*/, 10]; + return [4 /*yield*/, Promise.all(broadcastResult_2.promises)]; + case 9: + _c.sent(); + _c.label = 10; + case 10: + if (!transactionStartedByUs) return [3 /*break*/, 12]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 11: + _c.sent(); + _c.label = 12; + case 12: + // console.timeEnd(".commit"); + return [2 /*return*/, insertResult]; + case 13: + error_1 = _c.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 17]; + _c.label = 14; + case 14: + _c.trys.push([14, 16, , 17]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 15: + _c.sent(); + return [3 /*break*/, 17]; + case 16: + rollbackError_1 = _c.sent(); + return [3 /*break*/, 17]; + case 17: throw error_1; + case 18: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20]; + return [4 /*yield*/, queryRunner.release()]; + case 19: + _c.sent(); + _c.label = 20; + case 20: + if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_9__[/* SqljsDriver */ "a"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 22]; + return [4 /*yield*/, this.connection.driver.autoSave()]; + case 21: + _c.sent(); + _c.label = 22; + case 22: return [7 /*endfinally*/]; + case 23: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Specifies INTO which entity's table insertion will be executed. + */ + InsertQueryBuilder.prototype.into = function (entityTarget, columns) { + entityTarget = entityTarget instanceof _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_11__[/* EntitySchema */ "a"] ? entityTarget.options.name : entityTarget; + var mainAlias = this.createFromAlias(entityTarget); + this.expressionMap.setMainAlias(mainAlias); + this.expressionMap.insertColumns = columns || []; + return this; + }; + /** + * Values needs to be inserted into table. + */ + InsertQueryBuilder.prototype.values = function (values) { + this.expressionMap.valuesSet = values; + return this; + }; + /** + * Optional returning/output clause. + */ + InsertQueryBuilder.prototype.output = function (output) { + return this.returning(output); + }; + /** + * Optional returning/output clause. + */ + InsertQueryBuilder.prototype.returning = function (returning) { + // not all databases support returning/output cause + if (!this.connection.driver.isReturningSqlSupported()) + throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__[/* ReturningStatementNotSupportedError */ "a"](); + this.expressionMap.returning = returning; + return this; + }; + /** + * Indicates if entity must be updated after insertion operations. + * This may produce extra query or use RETURNING / OUTPUT statement (depend on database). + * Enabled by default. + */ + InsertQueryBuilder.prototype.updateEntity = function (enabled) { + this.expressionMap.updateEntity = enabled; + return this; + }; + /** + * Adds additional ON CONFLICT statement supported in postgres and cockroach. + */ + InsertQueryBuilder.prototype.onConflict = function (statement) { + this.expressionMap.onConflict = statement; + return this; + }; + /** + * Adds additional ignore statement supported in databases. + */ + InsertQueryBuilder.prototype.orIgnore = function (statement) { + if (statement === void 0) { statement = true; } + this.expressionMap.onIgnore = statement; + return this; + }; + /** + * Adds additional update statement supported in databases. + */ + InsertQueryBuilder.prototype.orUpdate = function (statement) { + var _this = this; + this.expressionMap.onUpdate = {}; + if (statement && Array.isArray(statement.conflict_target)) + this.expressionMap.onUpdate.conflict = " ( " + statement.conflict_target.map(function (columnName) { return _this.escape(columnName); }).join(", ") + " ) "; + if (statement && typeof statement.conflict_target === "string") + this.expressionMap.onUpdate.conflict = " ON CONSTRAINT " + this.escape(statement.conflict_target) + " "; + if (statement && Array.isArray(statement.columns)) + this.expressionMap.onUpdate.columns = statement.columns.map(function (column) { return _this.escape(column) + " = :" + column; }).join(", "); + if (statement && Array.isArray(statement.overwrite)) { + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) { + this.expressionMap.onUpdate.overwrite = statement.overwrite.map(function (column) { return column + " = VALUES(" + column + ")"; }).join(", "); + } + else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] || this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[/* AbstractSqliteDriver */ "a"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* CockroachDriver */ "d"]) { + this.expressionMap.onUpdate.overwrite = statement.overwrite.map(function (column) { return _this.escape(column) + " = EXCLUDED." + _this.escape(column); }).join(", "); + } + } + return this; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates INSERT express used to perform insert query. + */ + InsertQueryBuilder.prototype.createInsertExpression = function () { + var _this = this; + var tableName = this.getTableName(this.getMainTableName()); + var valuesExpression = this.createValuesExpression(); // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important + var returningExpression = (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] && this.getValueSets().length > 1) ? null : this.createReturningExpression(); // oracle doesnt support returning with multi-row insert + var columnsExpression = this.createColumnNamesExpression(); + var query = "INSERT "; + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) { + query += "" + (this.expressionMap.onIgnore ? " IGNORE " : ""); + } + query += "INTO " + tableName; + // add columns expression + if (columnsExpression) { + query += "(" + columnsExpression + ")"; + } + else { + if (!valuesExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"])) // special syntax for mysql DEFAULT VALUES insertion + query += "()"; + } + // add OUTPUT expression + if (returningExpression && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + query += " OUTPUT " + returningExpression; + } + // add VALUES expression + if (valuesExpression) { + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] && this.getValueSets().length > 1) { + query += " " + valuesExpression; + } + else { + query += " VALUES " + valuesExpression; + } + } + else { + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) { // special syntax for mysql DEFAULT VALUES insertion + query += " VALUES ()"; + } + else { + query += " DEFAULT VALUES"; + } + } + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] || this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[/* AbstractSqliteDriver */ "a"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* CockroachDriver */ "d"]) { + query += "" + (this.expressionMap.onIgnore ? " ON CONFLICT DO NOTHING " : ""); + query += "" + (this.expressionMap.onConflict ? " ON CONFLICT " + this.expressionMap.onConflict : ""); + if (this.expressionMap.onUpdate) { + var _a = this.expressionMap.onUpdate, overwrite = _a.overwrite, columns = _a.columns, conflict = _a.conflict; + query += "" + (columns ? " ON CONFLICT " + conflict + " DO UPDATE SET " + columns : ""); + query += "" + (overwrite ? " ON CONFLICT " + conflict + " DO UPDATE SET " + overwrite : ""); + } + } + else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) { + if (this.expressionMap.onUpdate) { + var _b = this.expressionMap.onUpdate, overwrite = _b.overwrite, columns = _b.columns; + query += "" + (columns ? " ON DUPLICATE KEY UPDATE " + columns : ""); + query += "" + (overwrite ? " ON DUPLICATE KEY UPDATE " + overwrite : ""); + } + } + // add RETURNING expression + if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* CockroachDriver */ "d"])) { + query += " RETURNING " + returningExpression; + } + // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT + // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled) + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"] + && this.expressionMap.mainAlias.hasMetadata + && this.expressionMap.mainAlias.metadata.columns + .filter(function (column) { return _this.expressionMap.insertColumns.length > 0 ? _this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert; }) + .some(function (column) { return _this.isOverridingAutoIncrementBehavior(column); })) { + query = "SET IDENTITY_INSERT " + tableName + " ON; " + query + "; SET IDENTITY_INSERT " + tableName + " OFF"; + } + return query; + }; + /** + * Gets list of columns where values must be inserted to. + */ + InsertQueryBuilder.prototype.getInsertedColumns = function () { + var _this = this; + if (!this.expressionMap.mainAlias.hasMetadata) + return []; + return this.expressionMap.mainAlias.metadata.columns.filter(function (column) { + // if user specified list of columns he wants to insert to, then we filter only them + if (_this.expressionMap.insertColumns.length) + return _this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1; + // skip columns the user doesn't want included by default + if (!column.isInsert) { + return false; + } + // if user did not specified such list then return all columns except auto-increment one + // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression + if (column.isGenerated && column.generationStrategy === "increment" + && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"]) + && !(_this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[/* AbstractSqliteDriver */ "a"]) + && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"]) + && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) + && !(_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"] && _this.isOverridingAutoIncrementBehavior(column))) + return false; + return true; + }); + }; + /** + * Creates a columns string where values must be inserted to for INSERT INTO expression. + */ + InsertQueryBuilder.prototype.createColumnNamesExpression = function () { + var _this = this; + var columns = this.getInsertedColumns(); + if (columns.length > 0) + return columns.map(function (column) { return _this.escape(column.databaseName); }).join(", "); + // in the case if there are no insert columns specified and table without metadata used + // we get columns from the inserted value map, in the case if only one inserted map is specified + if (!this.expressionMap.mainAlias.hasMetadata && !this.expressionMap.insertColumns.length) { + var valueSets = this.getValueSets(); + if (valueSets.length === 1) + return Object.keys(valueSets[0]).map(function (columnName) { return _this.escape(columnName); }).join(", "); + } + // get a table name and all column database names + return this.expressionMap.insertColumns.map(function (columnName) { return _this.escape(columnName); }).join(", "); + }; + /** + * Creates list of values needs to be inserted in the VALUES expression. + */ + InsertQueryBuilder.prototype.createValuesExpression = function () { + var _this = this; + var valueSets = this.getValueSets(); + var columns = this.getInsertedColumns(); + // if column metadatas are given then apply all necessary operations with values + if (columns.length > 0) { + var expression_1 = ""; + var parametersCount_1 = Object.keys(this.expressionMap.nativeParameters).length; + valueSets.forEach(function (valueSet, valueSetIndex) { + columns.forEach(function (column, columnIndex) { + if (columnIndex === 0) { + if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] && valueSets.length > 1) { + expression_1 += " SELECT "; + } + else { + expression_1 += "("; + } + } + var paramName = "i" + valueSetIndex + "_" + column.databaseName; + // extract real value from the entity + var value = column.getEntityValue(valueSet); + // if column is relational and value is an object then get real referenced column value from this object + // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 } + // and we extract "1" from this object + /*if (column.referencedColumn && value instanceof Object && !(value instanceof Function)) { // todo: check if we still need it since getEntityValue already has similar code + value = column.referencedColumn.getEntityValue(value); + }*/ + if (!(value instanceof Function)) { + // make sure our value is normalized by a driver + value = _this.connection.driver.preparePersistentValue(value, column); + } + // newly inserted entities always have a version equal to 1 (first version) + // also, user-specified version must be empty + if (column.isVersion && value === undefined) { + expression_1 += "1"; + // } else if (column.isNestedSetLeft) { + // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath); + // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName); + // const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`; + // expression += subQuery; + // + // } else if (column.isNestedSetRight) { + // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath); + // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName); + // const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`; + // expression += subQuery; + } + else if (column.isDiscriminator) { + _this.expressionMap.nativeParameters["discriminator_value_" + parametersCount_1] = _this.expressionMap.mainAlias.metadata.discriminatorValue; + expression_1 += _this.connection.driver.createParameter("discriminator_value_" + parametersCount_1, parametersCount_1); + parametersCount_1++; + // return "1"; + // for create and update dates we insert current date + // no, we don't do it because this constant is already in "default" value of the column + // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example + // } else if (column.isCreateDate || column.isUpdateDate) { + // return "CURRENT_TIMESTAMP"; + // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion + } + else if (column.isGenerated && column.generationStrategy === "uuid" && !_this.connection.driver.isUUIDGenerationSupported() && value === undefined) { + var paramName_1 = "uuid_" + column.databaseName + valueSetIndex; + value = _util_RandomGenerator__WEBPACK_IMPORTED_MODULE_3__[/* RandomGenerator */ "a"].uuid4(); + _this.expressionMap.nativeParameters[paramName_1] = value; + expression_1 += _this.connection.driver.createParameter(paramName_1, parametersCount_1); + parametersCount_1++; + // if value for this column was not provided then insert default value + } + else if (value === undefined) { + if ((_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] && valueSets.length > 1) || _this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[/* AbstractSqliteDriver */ "a"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"]) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries + if (column.default !== undefined && column.default !== null) { // try to use default defined in the column + expression_1 += _this.connection.driver.normalizeDefault(column); + } + else { + expression_1 += "NULL"; // otherwise simply use NULL and pray if column is nullable + } + } + else { + expression_1 += "DEFAULT"; + } + // support for SQL expressions in queries + } + else if (value instanceof Function) { + expression_1 += value(); + // just any other regular value + } + else { + if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) + value = _this.connection.driver.parametrizeValue(column, value); + // we need to store array values in a special class to make sure parameter replacement will work correctly + // if (value instanceof Array) + // value = new ArrayParameter(value); + _this.expressionMap.nativeParameters[paramName] = value; + if ((_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) { + var useLegacy = _this.connection.driver.options.legacySpatialSupport; + var geomFromText = useLegacy ? "GeomFromText" : "ST_GeomFromText"; + if (column.srid != null) { + expression_1 += geomFromText + "(" + _this.connection.driver.createParameter(paramName, parametersCount_1) + ", " + column.srid + ")"; + } + else { + expression_1 += geomFromText + "(" + _this.connection.driver.createParameter(paramName, parametersCount_1) + ")"; + } + } + else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) { + if (column.srid != null) { + expression_1 += "ST_SetSRID(ST_GeomFromGeoJSON(" + _this.connection.driver.createParameter(paramName, parametersCount_1) + "), " + column.srid + ")::" + column.type; + } + else { + expression_1 += "ST_GeomFromGeoJSON(" + _this.connection.driver.createParameter(paramName, parametersCount_1) + ")::" + column.type; + } + } + else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) { + expression_1 += column.type + "::STGeomFromText(" + _this.connection.driver.createParameter(paramName, parametersCount_1) + ", " + (column.srid || "0") + ")"; + } + else { + expression_1 += _this.connection.driver.createParameter(paramName, parametersCount_1); + } + parametersCount_1++; + } + if (columnIndex === columns.length - 1) { + if (valueSetIndex === valueSets.length - 1) { + if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] && valueSets.length > 1) { + expression_1 += " FROM DUAL "; + } + else { + expression_1 += ")"; + } + } + else { + if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] && valueSets.length > 1) { + expression_1 += " FROM DUAL UNION ALL "; + } + else { + expression_1 += "), "; + } + } + } + else { + expression_1 += ", "; + } + }); + }); + if (expression_1 === "()") + return ""; + return expression_1; + } + else { // for tables without metadata + // get values needs to be inserted + var expression_2 = ""; + var parametersCount_2 = Object.keys(this.expressionMap.nativeParameters).length; + valueSets.forEach(function (valueSet, insertionIndex) { + var columns = Object.keys(valueSet); + columns.forEach(function (columnName, columnIndex) { + if (columnIndex === 0) { + expression_2 += "("; + } + var paramName = "i" + insertionIndex + "_" + columnName; + var value = valueSet[columnName]; + // support for SQL expressions in queries + if (value instanceof Function) { + expression_2 += value(); + // if value for this column was not provided then insert default value + } + else if (value === undefined) { + if (_this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[/* AbstractSqliteDriver */ "a"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"]) { + expression_2 += "NULL"; + } + else { + expression_2 += "DEFAULT"; + } + // just any other regular value + } + else { + _this.expressionMap.nativeParameters[paramName] = value; + expression_2 += _this.connection.driver.createParameter(paramName, parametersCount_2); + parametersCount_2++; + } + if (columnIndex === Object.keys(valueSet).length - 1) { + if (insertionIndex === valueSets.length - 1) { + expression_2 += ")"; + } + else { + expression_2 += "), "; + } + } + else { + expression_2 += ", "; + } + }); + }); + if (expression_2 === "()") + return ""; + return expression_2; + } + }; + /** + * Gets array of values need to be inserted into the target table. + */ + InsertQueryBuilder.prototype.getValueSets = function () { + if (Array.isArray(this.expressionMap.valuesSet)) + return this.expressionMap.valuesSet; + if (this.expressionMap.valuesSet instanceof Object) + return [this.expressionMap.valuesSet]; + throw new _error_InsertValuesMissingError__WEBPACK_IMPORTED_MODULE_6__[/* InsertValuesMissingError */ "a"](); + }; + /** + * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it. + * + * @param column + */ + InsertQueryBuilder.prototype.isOverridingAutoIncrementBehavior = function (column) { + return column.isPrimary + && column.isGenerated + && column.generationStrategy === "increment" + && this.getValueSets().some(function (valueSet) { + return column.getEntityValue(valueSet) !== undefined + && column.getEntityValue(valueSet) !== null; + }); + }; + return InsertQueryBuilder; +}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[/* QueryBuilder */ "a"])); + + +//# sourceMappingURL=InsertQueryBuilder.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_0.js": -/*!*********************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_0.js ***! - \*********************************************************************/ -/*! exports provided: SimpleFourWordsLevel10_0 */ +/* 195 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SimpleFourWordsLevel10_0\", function() { return SimpleFourWordsLevel10_0; });\n/* harmony import */ var _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SimpleFourWordsLevel */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js\");\n\n\nclass SimpleFourWordsLevel10_0 extends _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__[\"SimpleFourWordsLevel\"]{\n constructor(templateContainer) {\n super(templateContainer, 10, 0);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_0.js?"); +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UpdateQueryBuilder", function() { return UpdateQueryBuilder; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(40); +/* harmony import */ var _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(35); +/* harmony import */ var _result_UpdateResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(115); +/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(72); +/* harmony import */ var _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(120); +/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(41); +/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(8); +/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(16); +/* harmony import */ var _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(116); +/* harmony import */ var _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(100); +/* harmony import */ var _error_EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(114); + + + + + + + + + + + + + + + + + + + + +/** + * Allows to build complex sql queries in a fashion way and execute those queries. + */ +var UpdateQueryBuilder = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(UpdateQueryBuilder, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function UpdateQueryBuilder(connectionOrQueryBuilder, queryRunner) { + var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this; + _this.expressionMap.aliasNamePrefixingEnabled = false; + return _this; + } + // ------------------------------------------------------------------------- + // Public Implemented Methods + // ------------------------------------------------------------------------- + /** + * Gets generated sql query without parameters being replaced. + */ + UpdateQueryBuilder.prototype.getQuery = function () { + var sql = this.createComment(); + sql += this.createUpdateExpression(); + sql += this.createOrderByExpression(); + sql += this.createLimitExpression(); + return sql.trim(); + }; + /** + * Executes sql generated by query builder and returns raw database results. + */ + UpdateQueryBuilder.prototype.execute = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var queryRunner, transactionStartedByUs, broadcastResult, declareSql, selectOutputSql, returningResultsEntityUpdator, _a, updateSql, parameters, updateResult, statements, result, broadcastResult, error_1, rollbackError_1; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _b.label = 1; + case 1: + _b.trys.push([1, 13, 18, 23]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _b.sent(); + transactionStartedByUs = true; + _b.label = 3; + case 3: + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5]; + broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_8__[/* BroadcasterResult */ "a"](); + queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata, this.expressionMap.valuesSet); + if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(broadcastResult.promises)]; + case 4: + _b.sent(); + _b.label = 5; + case 5: + declareSql = null; + selectOutputSql = null; + returningResultsEntityUpdator = new _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_6__[/* ReturningResultsEntityUpdator */ "a"](queryRunner, this.expressionMap); + if (this.expressionMap.updateEntity === true && + this.expressionMap.mainAlias.hasMetadata && + this.expressionMap.whereEntities.length > 0) { + this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns(); + if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + declareSql = this.connection.driver.buildTableVariableDeclaration("@OutputTable", this.expressionMap.extraReturningColumns); + selectOutputSql = "SELECT * FROM @OutputTable"; + } + } + _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.getQueryAndParameters(), 2), updateSql = _a[0], parameters = _a[1]; + updateResult = new _result_UpdateResult__WEBPACK_IMPORTED_MODULE_4__[/* UpdateResult */ "a"](); + statements = [declareSql, updateSql, selectOutputSql]; + return [4 /*yield*/, queryRunner.query(statements.filter(function (sql) { return sql != null; }).join(";\n\n"), parameters)]; + case 6: + result = _b.sent(); + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"]) { + updateResult.raw = result[0]; + updateResult.affected = result[1]; + } + else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"]) { + updateResult.raw = result; + updateResult.affected = result.affectedRows; + } + else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) { + updateResult.raw = result; + updateResult.affected = result.numberOfRecordsUpdated; + } + else if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* BetterSqlite3Driver */ "c"]) { // only works for better-sqlite3 + updateResult.raw = result; + updateResult.affected = result.changes; + } + else { + updateResult.raw = result; + } + if (!(this.expressionMap.updateEntity === true && + this.expressionMap.mainAlias.hasMetadata && + this.expressionMap.whereEntities.length > 0)) return [3 /*break*/, 8]; + return [4 /*yield*/, returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities)]; + case 7: + _b.sent(); + _b.label = 8; + case 8: + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10]; + broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_8__[/* BroadcasterResult */ "a"](); + queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata); + if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10]; + return [4 /*yield*/, Promise.all(broadcastResult.promises)]; + case 9: + _b.sent(); + _b.label = 10; + case 10: + if (!transactionStartedByUs) return [3 /*break*/, 12]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 11: + _b.sent(); + _b.label = 12; + case 12: return [2 /*return*/, updateResult]; + case 13: + error_1 = _b.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 17]; + _b.label = 14; + case 14: + _b.trys.push([14, 16, , 17]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 15: + _b.sent(); + return [3 /*break*/, 17]; + case 16: + rollbackError_1 = _b.sent(); + return [3 /*break*/, 17]; + case 17: throw error_1; + case 18: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20]; + return [4 /*yield*/, queryRunner.release()]; + case 19: + _b.sent(); + _b.label = 20; + case 20: + if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_7__[/* SqljsDriver */ "a"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 22]; + return [4 /*yield*/, this.connection.driver.autoSave()]; + case 21: + _b.sent(); + _b.label = 22; + case 22: return [7 /*endfinally*/]; + case 23: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Values needs to be updated. + */ + UpdateQueryBuilder.prototype.set = function (values) { + this.expressionMap.valuesSet = values; + return this; + }; + /** + * Sets WHERE condition in the query builder. + * If you had previously WHERE expression defined, + * calling this function will override previously set WHERE conditions. + * Additionally you can add parameters used in where expression. + */ + UpdateQueryBuilder.prototype.where = function (where, parameters) { + this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions + var condition = this.computeWhereParameter(where); + if (condition) + this.expressionMap.wheres = [{ type: "simple", condition: condition }]; + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + UpdateQueryBuilder.prototype.andWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "and", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new OR WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + UpdateQueryBuilder.prototype.orWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "or", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE with conditions for the given ids. + */ + UpdateQueryBuilder.prototype.whereInIds = function (ids) { + return this.where(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new AND WHERE with conditions for the given ids. + */ + UpdateQueryBuilder.prototype.andWhereInIds = function (ids) { + return this.andWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new OR WHERE with conditions for the given ids. + */ + UpdateQueryBuilder.prototype.orWhereInIds = function (ids) { + return this.orWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Optional returning/output clause. + */ + UpdateQueryBuilder.prototype.output = function (output) { + return this.returning(output); + }; + /** + * Optional returning/output clause. + */ + UpdateQueryBuilder.prototype.returning = function (returning) { + // not all databases support returning/output cause + if (!this.connection.driver.isReturningSqlSupported()) + throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_5__[/* ReturningStatementNotSupportedError */ "a"](); + this.expressionMap.returning = returning; + return this; + }; + /** + * Sets ORDER BY condition in the query builder. + * If you had previously ORDER BY expression defined, + * calling this function will override previously set ORDER BY conditions. + */ + UpdateQueryBuilder.prototype.orderBy = function (sort, order, nulls) { + var _a, _b; + if (order === void 0) { order = "ASC"; } + if (sort) { + if (sort instanceof Object) { + this.expressionMap.orderBys = sort; + } + else { + if (nulls) { + this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a); + } + else { + this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b); + } + } + } + else { + this.expressionMap.orderBys = {}; + } + return this; + }; + /** + * Adds ORDER BY condition in the query builder. + */ + UpdateQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) { + if (order === void 0) { order = "ASC"; } + if (nulls) { + this.expressionMap.orderBys[sort] = { order: order, nulls: nulls }; + } + else { + this.expressionMap.orderBys[sort] = order; + } + return this; + }; + /** + * Sets LIMIT - maximum number of rows to be selected. + */ + UpdateQueryBuilder.prototype.limit = function (limit) { + this.expressionMap.limit = limit; + return this; + }; + /** + * Indicates if entity must be updated after update operation. + * This may produce extra query or use RETURNING / OUTPUT statement (depend on database). + * Enabled by default. + */ + UpdateQueryBuilder.prototype.whereEntity = function (entity) { + var _this = this; + if (!this.expressionMap.mainAlias.hasMetadata) + throw new Error(".whereEntity method can only be used on queries which update real entity table."); + this.expressionMap.wheres = []; + var entities = Array.isArray(entity) ? entity : [entity]; + entities.forEach(function (entity) { + var entityIdMap = _this.expressionMap.mainAlias.metadata.getEntityIdMap(entity); + if (!entityIdMap) + throw new Error("Provided entity does not have ids set, cannot perform operation."); + _this.orWhereInIds(entityIdMap); + }); + this.expressionMap.whereEntities = entities; + return this; + }; + /** + * Indicates if entity must be updated after update operation. + * This may produce extra query or use RETURNING / OUTPUT statement (depend on database). + * Enabled by default. + */ + UpdateQueryBuilder.prototype.updateEntity = function (enabled) { + this.expressionMap.updateEntity = enabled; + return this; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates UPDATE express used to perform insert query. + */ + UpdateQueryBuilder.prototype.createUpdateExpression = function () { + var _this = this; + var valuesSet = this.getValueSet(); + var metadata = this.expressionMap.mainAlias.hasMetadata ? this.expressionMap.mainAlias.metadata : undefined; + // prepare columns and values to be updated + var updateColumnAndValues = []; + var updatedColumns = []; + var newParameters = {}; + var parametersCount = this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || + this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"] || + this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || + this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[/* AbstractSqliteDriver */ "a"] || + this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"] + ? 0 : Object.keys(this.expressionMap.nativeParameters).length; + if (metadata) { + _metadata_EntityMetadata__WEBPACK_IMPORTED_MODULE_3__[/* EntityMetadata */ "a"].createPropertyPath(metadata, valuesSet).forEach(function (propertyPath) { + // todo: make this and other query builder to work with properly with tables without metadata + var columns = metadata.findColumnsWithPropertyPath(propertyPath); + if (columns.length <= 0) { + throw new _error_EntityColumnNotFound__WEBPACK_IMPORTED_MODULE_12__[/* EntityColumnNotFound */ "a"](propertyPath); + } + columns.forEach(function (column) { + if (!column.isUpdate) { + return; + } + updatedColumns.push(column); + var paramName = "upd_" + column.databaseName; + // + var value = column.getEntityValue(valuesSet); + if (column.referencedColumn && value instanceof Object) { + value = column.referencedColumn.getEntityValue(value); + } + else if (!(value instanceof Function)) { + value = _this.connection.driver.preparePersistentValue(value, column); + } + // todo: duplication zone + if (value instanceof Function) { // support for SQL expressions in update query + updateColumnAndValues.push(_this.escape(column.databaseName) + " = " + value()); + } + else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"] && value === null) { + updateColumnAndValues.push(_this.escape(column.databaseName) + " = NULL"); + } + else { + if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + value = _this.connection.driver.parametrizeValue(column, value); + // } else if (value instanceof Array) { + // value = new ArrayParameter(value); + } + if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || + _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"] || + _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || + _this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[/* AbstractSqliteDriver */ "a"] || + _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"]) { + newParameters[paramName] = value; + } + else { + _this.expressionMap.nativeParameters[paramName] = value; + } + var expression = null; + if ((_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) { + var useLegacy = _this.connection.driver.options.legacySpatialSupport; + var geomFromText = useLegacy ? "GeomFromText" : "ST_GeomFromText"; + if (column.srid != null) { + expression = geomFromText + "(" + _this.connection.driver.createParameter(paramName, parametersCount) + ", " + column.srid + ")"; + } + else { + expression = geomFromText + "(" + _this.connection.driver.createParameter(paramName, parametersCount) + ")"; + } + } + else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) { + if (column.srid != null) { + expression = "ST_SetSRID(ST_GeomFromGeoJSON(" + _this.connection.driver.createParameter(paramName, parametersCount) + "), " + column.srid + ")::" + column.type; + } + else { + expression = "ST_GeomFromGeoJSON(" + _this.connection.driver.createParameter(paramName, parametersCount) + ")::" + column.type; + } + } + else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"] && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) { + expression = column.type + "::STGeomFromText(" + _this.connection.driver.createParameter(paramName, parametersCount) + ", " + (column.srid || "0") + ")"; + } + else { + expression = _this.connection.driver.createParameter(paramName, parametersCount); + } + updateColumnAndValues.push(_this.escape(column.databaseName) + " = " + expression); + parametersCount++; + } + }); + }); + if (metadata.versionColumn && updatedColumns.indexOf(metadata.versionColumn) === -1) + updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + " = " + this.escape(metadata.versionColumn.databaseName) + " + 1"); + if (metadata.updateDateColumn && updatedColumns.indexOf(metadata.updateDateColumn) === -1) + updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + " = CURRENT_TIMESTAMP"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can "DEFAULT" be used?! + } + else { + Object.keys(valuesSet).map(function (key) { + var value = valuesSet[key]; + // todo: duplication zone + if (value instanceof Function) { // support for SQL expressions in update query + updateColumnAndValues.push(_this.escape(key) + " = " + value()); + } + else if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"] && value === null) { + updateColumnAndValues.push(_this.escape(key) + " = NULL"); + } + else { + // we need to store array values in a special class to make sure parameter replacement will work correctly + // if (value instanceof Array) + // value = new ArrayParameter(value); + if (_this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || + _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"] || + _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || + _this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[/* AbstractSqliteDriver */ "a"] || + _this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"]) { + newParameters[key] = value; + } + else { + _this.expressionMap.nativeParameters[key] = value; + } + updateColumnAndValues.push(_this.escape(key) + " = " + _this.connection.driver.createParameter(key, parametersCount)); + parametersCount++; + } + }); + } + if (updateColumnAndValues.length <= 0) { + throw new _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__[/* UpdateValuesMissingError */ "a"](); + } + // we re-write parameters this way because we want our "UPDATE ... SET" parameters to be first in the list of "nativeParameters" + // because some drivers like mysql depend on order of parameters + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || + this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"] || + this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || + this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_9__[/* AbstractSqliteDriver */ "a"] || + this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SapDriver */ "l"]) { + this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters); + } + // get a table name and all column database names + var whereExpression = this.createWhereExpression(); + var returningExpression = this.createReturningExpression(); + // generate and return sql update query + if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* CockroachDriver */ "d"])) { + return "UPDATE " + this.getTableName(this.getMainTableName()) + " SET " + updateColumnAndValues.join(", ") + whereExpression + " RETURNING " + returningExpression; + } + else if (returningExpression && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + return "UPDATE " + this.getTableName(this.getMainTableName()) + " SET " + updateColumnAndValues.join(", ") + " OUTPUT " + returningExpression + whereExpression; + } + else { + return "UPDATE " + this.getTableName(this.getMainTableName()) + " SET " + updateColumnAndValues.join(", ") + whereExpression; // todo: how do we replace aliases in where to nothing? + } + }; + /** + * Creates "ORDER BY" part of SQL query. + */ + UpdateQueryBuilder.prototype.createOrderByExpression = function () { + var _this = this; + var orderBys = this.expressionMap.orderBys; + if (Object.keys(orderBys).length > 0) + return " ORDER BY " + Object.keys(orderBys) + .map(function (columnName) { + if (typeof orderBys[columnName] === "string") { + return _this.replacePropertyNames(columnName) + " " + orderBys[columnName]; + } + else { + return _this.replacePropertyNames(columnName) + " " + orderBys[columnName].order + " " + orderBys[columnName].nulls; + } + }) + .join(", "); + return ""; + }; + /** + * Creates "LIMIT" parts of SQL query. + */ + UpdateQueryBuilder.prototype.createLimitExpression = function () { + var limit = this.expressionMap.limit; + if (limit) { + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) { + return " LIMIT " + limit; + } + else { + throw new _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_10__[/* LimitOnUpdateNotSupportedError */ "a"](); + } + } + return ""; + }; + /** + * Gets array of values need to be inserted into the target table. + */ + UpdateQueryBuilder.prototype.getValueSet = function () { + if (this.expressionMap.valuesSet instanceof Object) + return this.expressionMap.valuesSet; + throw new _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__[/* UpdateValuesMissingError */ "a"](); + }; + return UpdateQueryBuilder; +}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[/* QueryBuilder */ "a"])); + + +//# sourceMappingURL=UpdateQueryBuilder.js.map + /***/ }), - -/***/ "./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_1.js": -/*!*********************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_1.js ***! - \*********************************************************************/ -/*! exports provided: SimpleFourWordsLevel10_1 */ +/* 196 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SimpleFourWordsLevel10_1\", function() { return SimpleFourWordsLevel10_1; });\n/* harmony import */ var _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SimpleFourWordsLevel */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js\");\n\n\nclass SimpleFourWordsLevel10_1 extends _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__[\"SimpleFourWordsLevel\"]{\n constructor(templateContainer) {\n super(templateContainer, 10, 1);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_1.js?"); +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeleteQueryBuilder", function() { return DeleteQueryBuilder; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(40); +/* harmony import */ var _result_DeleteResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(157); +/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(72); +/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(41); +/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8); +/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(47); + + + + + + + + + + + + + + +/** + * Allows to build complex sql queries in a fashion way and execute those queries. + */ +var DeleteQueryBuilder = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(DeleteQueryBuilder, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function DeleteQueryBuilder(connectionOrQueryBuilder, queryRunner) { + var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this; + _this.expressionMap.aliasNamePrefixingEnabled = false; + return _this; + } + // ------------------------------------------------------------------------- + // Public Implemented Methods + // ------------------------------------------------------------------------- + /** + * Gets generated sql query without parameters being replaced. + */ + DeleteQueryBuilder.prototype.getQuery = function () { + var sql = this.createComment(); + sql += this.createDeleteExpression(); + return sql.trim(); + }; + /** + * Executes sql generated by query builder and returns raw database results. + */ + DeleteQueryBuilder.prototype.execute = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var _a, sql, parameters, queryRunner, transactionStartedByUs, broadcastResult, deleteResult, result, driver, broadcastResult, error_1, rollbackError_1; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1]; + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _b.label = 1; + case 1: + _b.trys.push([1, 11, 16, 21]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _b.sent(); + transactionStartedByUs = true; + _b.label = 3; + case 3: + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5]; + broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__[/* BroadcasterResult */ "a"](); + queryRunner.broadcaster.broadcastBeforeRemoveEvent(broadcastResult, this.expressionMap.mainAlias.metadata); + if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(broadcastResult.promises)]; + case 4: + _b.sent(); + _b.label = 5; + case 5: + deleteResult = new _result_DeleteResult__WEBPACK_IMPORTED_MODULE_3__[/* DeleteResult */ "a"](); + return [4 /*yield*/, queryRunner.query(sql, parameters)]; + case 6: + result = _b.sent(); + driver = queryRunner.connection.driver; + if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"]) { + deleteResult.raw = result; + deleteResult.affected = result.affectedRows; + } + else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* AuroraDataApiDriver */ "a"]) { + deleteResult.raw = result; + deleteResult.affected = result.numberOfRecordsUpdated; + } + else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"] || driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] || driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* CockroachDriver */ "d"]) { + deleteResult.raw = result[0] ? result[0] : null; + // don't return 0 because it could confuse. null means that we did not receive this value + deleteResult.affected = typeof result[1] === "number" ? result[1] : null; + } + else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"]) { + deleteResult.affected = result; + } + else if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* BetterSqlite3Driver */ "c"]) { // only works for better-sqlite3 + deleteResult.raw = result; + deleteResult.affected = result.changes; + } + else { + deleteResult.raw = result; + } + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 8]; + broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_6__[/* BroadcasterResult */ "a"](); + queryRunner.broadcaster.broadcastAfterRemoveEvent(broadcastResult, this.expressionMap.mainAlias.metadata); + if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 8]; + return [4 /*yield*/, Promise.all(broadcastResult.promises)]; + case 7: + _b.sent(); + _b.label = 8; + case 8: + if (!transactionStartedByUs) return [3 /*break*/, 10]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 9: + _b.sent(); + _b.label = 10; + case 10: return [2 /*return*/, deleteResult]; + case 11: + error_1 = _b.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 15]; + _b.label = 12; + case 12: + _b.trys.push([12, 14, , 15]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 13: + _b.sent(); + return [3 /*break*/, 15]; + case 14: + rollbackError_1 = _b.sent(); + return [3 /*break*/, 15]; + case 15: throw error_1; + case 16: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 18]; + return [4 /*yield*/, queryRunner.release()]; + case 17: + _b.sent(); + _b.label = 18; + case 18: + if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_5__[/* SqljsDriver */ "a"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 20]; + return [4 /*yield*/, this.connection.driver.autoSave()]; + case 19: + _b.sent(); + _b.label = 20; + case 20: return [7 /*endfinally*/]; + case 21: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Specifies FROM which entity's table select/update/delete will be executed. + * Also sets a main string alias of the selection data. + */ + DeleteQueryBuilder.prototype.from = function (entityTarget, aliasName) { + entityTarget = entityTarget instanceof _index__WEBPACK_IMPORTED_MODULE_7__["EntitySchema"] ? entityTarget.options.name : entityTarget; + var mainAlias = this.createFromAlias(entityTarget, aliasName); + this.expressionMap.setMainAlias(mainAlias); + return this; + }; + /** + * Sets WHERE condition in the query builder. + * If you had previously WHERE expression defined, + * calling this function will override previously set WHERE conditions. + * Additionally you can add parameters used in where expression. + */ + DeleteQueryBuilder.prototype.where = function (where, parameters) { + this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions + var condition = this.computeWhereParameter(where); + if (condition) + this.expressionMap.wheres = [{ type: "simple", condition: condition }]; + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + DeleteQueryBuilder.prototype.andWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "and", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new OR WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + DeleteQueryBuilder.prototype.orWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "or", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE with conditions for the given ids. + */ + DeleteQueryBuilder.prototype.whereInIds = function (ids) { + return this.where(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new AND WHERE with conditions for the given ids. + */ + DeleteQueryBuilder.prototype.andWhereInIds = function (ids) { + return this.andWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new OR WHERE with conditions for the given ids. + */ + DeleteQueryBuilder.prototype.orWhereInIds = function (ids) { + return this.orWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Optional returning/output clause. + */ + DeleteQueryBuilder.prototype.output = function (output) { + return this.returning(output); + }; + /** + * Optional returning/output clause. + */ + DeleteQueryBuilder.prototype.returning = function (returning) { + // not all databases support returning/output cause + if (!this.connection.driver.isReturningSqlSupported()) + throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__[/* ReturningStatementNotSupportedError */ "a"](); + this.expressionMap.returning = returning; + return this; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates DELETE express used to perform query. + */ + DeleteQueryBuilder.prototype.createDeleteExpression = function () { + var tableName = this.getTableName(this.getMainTableName()); + var whereExpression = this.createWhereExpression(); + var returningExpression = this.createReturningExpression(); + if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* CockroachDriver */ "d"])) { + return "DELETE FROM " + tableName + whereExpression + " RETURNING " + returningExpression; + } + else if (returningExpression !== "" && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + return "DELETE FROM " + tableName + " OUTPUT " + returningExpression + whereExpression; + } + else { + return "DELETE FROM " + tableName + whereExpression; + } + }; + return DeleteQueryBuilder; +}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[/* QueryBuilder */ "a"])); + + +//# sourceMappingURL=DeleteQueryBuilder.js.map + /***/ }), +/* 197 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_2.js": -/*!*********************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_2.js ***! - \*********************************************************************/ -/*! exports provided: SimpleFourWordsLevel10_2 */ +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(__webpack_require__(491), exports); +__exportStar(__webpack_require__(253), exports); +__exportStar(__webpack_require__(492), exports); +__exportStar(__webpack_require__(493), exports); +__exportStar(__webpack_require__(27), exports); +//# sourceMappingURL=client.js.map + +/***/ }), +/* 198 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EventManager = void 0; + +var cs_event_manager_1 = __webpack_require__(494); + +var EventManager = /*#__PURE__*/function (_cs_event_manager_1$E) { + _inherits(EventManager, _cs_event_manager_1$E); + + var _super = _createSuper(EventManager); + + function EventManager() { + _classCallCheck(this, EventManager); + + return _super.apply(this, arguments); + } + + return EventManager; +}(cs_event_manager_1.EventManager); + +exports.EventManager = EventManager; + +/***/ }), +/* 199 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TemplateSite = void 0; + +var ViewInflater_1 = __webpack_require__(58); + +var MasterSite_1 = __webpack_require__(258); +/** + * Die Seite bekommt ein Template übergeben und ersetzt in diesem Template das mit dem Selector gefundene + * Element mit der angebenen View + */ + + +var TemplateSite = /*#__PURE__*/function (_MasterSite_1$MasterS) { + _inherits(TemplateSite, _MasterSite_1$MasterS); + + var _super = _createSuper(TemplateSite); + + /** + * Constructor für eine TemplateSite + * + * @param siteManager + * @param view + * @param template + * @param selectorToReplace + */ + function TemplateSite(siteManager, view, template, selectorToReplace) { + var _this; + + _classCallCheck(this, TemplateSite); + + _this = _super.call(this, siteManager, template); + _this._viewPromise = Promise.all([_this._viewPromise, ViewInflater_1.ViewInflater.getInstance().load(view)]).then(function (res) { + res[0].querySelector(selectorToReplace).replaceWith(res[1]); + ViewInflater_1.ViewInflater.replaceWithChildren(res[1]); + _this._view = res[0]; + return res[0]; + }).catch(function (e) { + return console.error(e); + }); + return _this; + } + + return TemplateSite; +}(MasterSite_1.MasterSite); + +exports.TemplateSite = TemplateSite; + +/***/ }), +/* 200 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Menu = void 0; + +var Helper_1 = __webpack_require__(15); + +var MenuAction_1 = __webpack_require__(80); + +var OpenSubmenuAction_1 = __webpack_require__(98); +/** + * Klasse für ein Menü, was im Prinzip nichts anderes als eine Collection für MenuActions ist + * Ein Menü hat einen oder mehrere Renderer, die für die Anzeige zuständig sind + */ + + +var Menu = /*#__PURE__*/function () { + /** + * Setzt die Renderer und die initialen Actions + * + * @param renderer + * @param actions + */ + function Menu(renderer, actions) { + var _this = this; + + _classCallCheck(this, Menu); + + this._actions = []; + this._renderers = []; + this._submenus = []; + + if (Array.isArray(renderer)) { + this._renderers = renderer; + } else { + this._renderers = [renderer]; + } //Initialisiert onClickListener + + + this._onClickListener = this._generateOnClickListener(); //Setze die Actions so, um einzelne Actions noch zu überprüfen + + Helper_1.Helper.nonNull(actions, []).forEach(function (action) { + _this.addAction(action, false); + }); + this._openSubmenuListener = null; + } + /** + * Erstellt ein neues Menu auf grundlage dieses Menüs. Alle Actions & Submenüs werden ebenfalls kopiert + * @param menu + * @return {Menu} + */ + + + _createClass(Menu, [{ + key: "copy", + value: function copy(menu) { + menu = Helper_1.Helper.nonNull(menu, new Menu()); + menu._actions = []; + + this._actions.forEach(function (action) { + menu.addAction(action.copy()); + }); + + menu._renderers = this._renderers; + menu._onClickListener = this._onClickListener; + return menu; + } + /** + * Schließt das Menü, hauptsächlich hier zum Schließen der Submenüs. + * Zum öffnen wird nicht so eine Funktion gebraucht, da beim öffnen nicht die untermenüs geöffnet werden sollen + */ + + }, { + key: "close", + value: function close() { + this._submenus.forEach(function (submenu) { + submenu.close(); + }); + } + /** + * Fügt eine Action dem Menü hinzu + * + * @param action + * @param redraw + */ + + }, { + key: "addAction", + value: function addAction(action, redraw) { + //Überprüfung, ob es die richtige Klasse ist und ob die Action nicht schon hinzugefügt wurde + if (action instanceof MenuAction_1.MenuAction && this._actions.indexOf(action) === -1) { + //Falls es sich um ein Submenu handelt, füge dieses hinzu + if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) { + this._submenus.push(action.getSubmenu()); + } + + this._actions.push(action); + + action.setMenu(this); //Falls redraw true (oder nicht angegeben, redraw) + + if (Helper_1.Helper.nonNull(redraw, true)) { + this.redraw(); + } + } + } + }, { + key: "removeAllActions", + value: function removeAllActions(redraw) { + this._actions.forEach(function (action) { + return action.setMenu(null); + }); + + this._actions = []; + this._submenus = []; //Falls redraw true (oder nicht angegeben, redraw) + + if (Helper_1.Helper.nonNull(redraw, true)) { + this.redraw(); + } + } + /** + * Sortiert die Actions und sagt danach den Renderern, dass diese das Menü zeuchnen sollen + */ + + }, { + key: "draw", + value: function draw() { + var _this2 = this; + + try { + this.sortActions(); + + this._renderers.forEach(function (renderer) { + renderer.render(_this2); + }); + } catch (e) { + console.error(e); + } + } + /** + * Sortiert die Actions der Order nach + */ + + }, { + key: "sortActions", + value: function sortActions() { + this._actions = this._actions.sort(function (first, second) { + return first.getOrder() - second.getOrder(); + }); + } + }, { + key: "openSubmenu", + value: function openSubmenu(submenu) { + if (this._openSubmenuListener) { + this._openSubmenuListener(submenu); + } + } + }, { + key: "setOpenSubmenuListener", + value: function setOpenSubmenuListener(listener) { + this._openSubmenuListener = listener; + } + /** + * Generiert den defaultmäßigen onclick-listener. + * @returns {Function} + * @private + */ + + }, { + key: "_generateOnClickListener", + value: function _generateOnClickListener() { + var _this3 = this; + + return function (event) { + var _element = event.target; //Falls es eine Action oder ein Unterlement einer Action war... + + if (_element.matches('li') || _element.matches('li *')) { + //...finde das zugehörige Element und lese ID aus + _element = _element.closest("li"); + var actionId = parseInt(_element.dataset["id"]); //Schaue nach, welche Action angeklickt wurde + + for (var i = 0, n = _this3._actions.length; i < n; i++) { + if (_this3._actions[i].getId() === actionId) { + //Falls action eine Funktion (und kein Link), sowie aktiv ist, führe action aus + if (typeof _this3._actions[i].getAction() === 'function' && _this3._actions[i].isActivated()) { + _this3._actions[i].getAction()(_this3._actions[i], event); + + event.preventDefault(); + } //Gebe gefundene Action zurück + + + return _this3._actions[i]; + } + } //Falls action nicht gefunden (da noch nicht beendet), suche in den submenüs nach der Action + + + for (var _i = 0, _n = _this3._submenus.length; _i < _n; _i++) { + var action = _this3._submenus[_i].click(actionId, event); + + if (action) { + return action; + } + } + } + + return null; + }; + } + /** + * Setzt den OnClickListener + * + * @param listener + */ + + }, { + key: "setOnClickListener", + value: function setOnClickListener(listener) { + this._onClickListener = listener; + } + /** + * Gibt den OnClickListener zurück + * + * @returns {*} + */ + + }, { + key: "getOnClickListener", + value: function getOnClickListener() { + return this._onClickListener; + } + /** + * Gibt die Actions zurück + * @returns {Array} + */ + + }, { + key: "getActions", + value: function getActions() { + return this._actions; + } + /** + * Triggert ein neues Rendern für eine Action. Das entsprechende ActionElement wird ausgetauscht + * @param action + */ + + }, { + key: "redrawAction", + value: function redrawAction(action) { + this._renderers.forEach(function (renderer) { + renderer._triggerRenderAction(action); + }); + } + /** + * Updated das entsprechende ActionElement abhängig vom Renderer. Das Element wird nicht ausgetauscht + * @param action + */ + + }, { + key: "updateAction", + value: function updateAction(action) { + this._renderers.forEach(function (renderer) { + renderer.updateAction(action); + }); + } + /** + * alias für draw + */ + + }, { + key: "redraw", + value: function redraw() { + this.draw(); + } + }]); + + return Menu; +}(); + +exports.Menu = Menu; + +/***/ }), +/* 201 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AccordionRenderer = void 0; + +var OpenSubmenuAction_1 = __webpack_require__(98); + +var MenuRenderer_1 = __webpack_require__(261); + +var Helper_1 = __webpack_require__(15); + +var Translator_1 = __webpack_require__(32); +/** + * Leitet von DropdownRenderer ab, da Funktionalität fast gleich ist + */ + + +var AccordionRenderer = /*#__PURE__*/function (_MenuRenderer_1$MenuR) { + _inherits(AccordionRenderer, _MenuRenderer_1$MenuR); + + var _super = _createSuper(AccordionRenderer); + + function AccordionRenderer() { + _classCallCheck(this, AccordionRenderer); + + return _super.apply(this, arguments); + } + + _createClass(AccordionRenderer, [{ + key: "renderAction", + value: + /** + * Rendert eine Action + * + * @param action + * @returns {HTMLLIElement} + */ + function renderAction(action) { + var linkElement = this.renderLinkElement(action); + var liElement = this.renderLiElement(action); + liElement.insertBefore(linkElement, liElement.firstChild); + return liElement; + } + /** + * Rendert das AnchorElement für eine Action + * @param action + * @returns {HTMLAnchorElement} + */ + + }, { + key: "renderLinkElement", + value: function renderLinkElement(action) { + var aElement = document.createElement("a"); + + if (typeof action.getAction() === 'string') { + aElement.href = action.getAction(); + } + + if (Helper_1.Helper.isNotNull(action.getIcon())) { + var iconElement = document.createElement("img"); + iconElement.src = action.getIcon(); + iconElement.classList.add('action-image'); + + if (action.isShouldTranslate()) { + iconElement.dataset["translationTitle"] = action.getName(); + iconElement.classList.add(Translator_1.Translator.getInstance().getTranslationClass()); + } else { + iconElement.title = action.getName(); + } + + aElement.appendChild(iconElement); + } + + var name = action.getName(); // debugger; + + if (action.isShouldTranslate()) { + name = Translator_1.Translator.makePersistentTranslation(name); + } else { + name = document.createTextNode(name); + } + + aElement.appendChild(name); + return aElement; + } + /** + * Render das LI-Element für eine Action + * + * @param action + * @returns {HTMLLIElement} + */ + + }, { + key: "renderLiElement", + value: function renderLiElement(action) { + var liElement = document.createElement("li"); + + if (action.getLiClass().trim() !== "") { + var _liElement$classList; + + (_liElement$classList = liElement.classList).add.apply(_liElement$classList, _toConsumableArray(action.getLiClass().split(" "))); + } // liElement.appendChild(aElement); + + + liElement.dataset["id"] = action.getId(); + + if (Helper_1.Helper.isNotNull(action.getIcon())) { + liElement.classList.add("img"); + } + + if (!action.isVisible()) { + liElement.classList.add("hidden"); + } + + liElement.classList.add(action.getShowFor()); + return liElement; + } + /** + * Da abgeleitet von DropdownRenderer, muss eine Klasse wieder entfernt werden + * + * @param action + * @returns {*} + */ + + }, { + key: "renderSubmenuAction", + value: function renderSubmenuAction(action) { + var submenuActionElement = _get(_getPrototypeOf(AccordionRenderer.prototype), "renderSubmenuAction", this).call(this, action); + + submenuActionElement.classList.remove('is-dropdown-submenu-parent'); + submenuActionElement.classList.add('is-accordion-submenu-parent'); + return submenuActionElement; + } + /** + * erstellt ein SubmenuParent für Accordion + * @param action + * @returns {HTMLUListElement} + */ + + }, { + key: "createSubmenuParentElement", + value: function createSubmenuParentElement(action) { + var menuElement = document.createElement("ul"); + menuElement.classList.add("menu"); + menuElement.classList.add("vertical"); + menuElement.classList.add("submenu"); + menuElement.classList.add("accordion-menu"); + menuElement.classList.add("is-accordion-submenu"); + menuElement.classList.add("first-sub"); + return menuElement; + } + /** + * Updatet ein ActionElement + * @param action + */ + + }, { + key: "updateAction", + value: function updateAction(action) { + if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) { + var submenuElement = this.getElementForAction(action).querySelector(".submenu"); + + if (action.getSubmenu().isOpen()) { + this.getElementForAction(action).setAttribute("aria-expanded", true); + submenuElement.classList.add("js-active"); + submenuElement.style = ""; + } else { + this.getElementForAction(action).removeAttribute("aria-expanded"); + submenuElement.classList.remove("js-activ"); + submenuElement.style = "display:none;"; + } + } + } + }]); + + return AccordionRenderer; +}(MenuRenderer_1.MenuRenderer); + +exports.AccordionRenderer = AccordionRenderer; + +/***/ }), +/* 202 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EasySyncPartialModel = void 0; + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var _typeorm = __webpack_require__(47); + +var Helper_1 = __webpack_require__(7); + +var XSSHelper_1 = __webpack_require__(251); + +var cordova_sites_database_1 = __webpack_require__(19); + +var typeorm = _typeorm; // if (typeorm.default) { +// typeorm = typeorm.default; +// } + +var EasySyncPartialModel = /*#__PURE__*/function (_EasySyncBaseModel_1$) { + _inherits(EasySyncPartialModel, _EasySyncBaseModel_1$); + + var _super2 = _createSuper(EasySyncPartialModel); + + function EasySyncPartialModel() { + _classCallCheck(this, EasySyncPartialModel); + + return _super2.apply(this, arguments); + } + + _createClass(EasySyncPartialModel, [{ + key: "toJSON", + value: function toJSON(includeFull) { + var _this = this; + + var relations = this.constructor.getRelationDefinitions(); + var columns = this.constructor.getColumnDefinitions(); + var obj = {}; + Object.keys(columns).forEach(function (attribute) { + if (attribute !== "clientId") { + obj[attribute] = _this[attribute]; + } + }); + Object.keys(relations).forEach(function (relationName) { + if (includeFull === true) { + obj[relationName] = _this[relationName]; + } else { + if (Array.isArray(_this[relationName])) { + var ids = []; + + _this[relationName].forEach(function (child) { + return child && ids.push(child.id); + }); + + obj[relationName] = ids; + } else if (_this[relationName] instanceof cordova_sites_database_1.BaseModel) { + obj[relationName] = _this[relationName].id; + } else { + obj[relationName] = null; + } + } + }); + return obj; + } + }], [{ + key: "findByIds", + value: function findByIds(ids, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", this.find({ + "id": typeorm.In(ids) + }, null, null, null, relations)); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "findById", + value: function findById(id, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", this.findOne({ + "id": id + }, null, null, relations)); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "findByClientId", + value: function findByClientId(id, relations) { + var _this2 = this; + + var _super = Object.create(null, { + findById: { + get: function get() { + return _get(_getPrototypeOf(EasySyncPartialModel), "findById", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt("return", _super.findById.call(this, id, relations)); + + case 1: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "findByClientIds", + value: function findByClientIds(ids, relations) { + var _this3 = this; + + var _super = Object.create(null, { + findById: { + get: function get() { + return _get(_getPrototypeOf(EasySyncPartialModel), "findById", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + return _context4.abrupt("return", _super.findById.call(this, ids, relations)); + + case 1: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "_fromJson", + value: function _fromJson(jsonObjects, entities, includeRelations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _this4 = this; + + var isArray, loadPromises, addLoadPromises; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + entities = entities || []; + isArray = Array.isArray(jsonObjects); + + if (!isArray) { + jsonObjects = [jsonObjects]; + } + + if (!Array.isArray(entities)) { + entities = [entities]; + } + + loadPromises = []; + addLoadPromises = []; + jsonObjects.forEach(function (jsonObject, index) { + addLoadPromises.push(new Promise(function (resolve) { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var entity; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + entity = null; + + if (!(entities.length > index)) { + _context5.next = 5; + break; + } + + entity = entities[index]; + _context5.next = 9; + break; + + case 5: + if (!Helper_1.Helper.isNotNull(jsonObject.id)) { + _context5.next = 9; + break; + } + + _context5.next = 8; + return this.findById(jsonObject.id, this.getRelations()); + + case 8: + entity = _context5.sent; + + case 9: + if (entity === null) { + entity = new this(); + } + + if (!jsonObject.version) { + jsonObject.version = 1; + } + + entities[index] = Object.assign(entity, jsonObject); + + this._handleColumns_(entities[index]); + + this._handleRelations_(entities[index], includeRelations, loadPromises); + + resolve(); + + case 15: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + })); + }); //addLoadPromises adds other loadPromises. Therefore wait until done, then wait for other + + _context6.next = 9; + return Promise.all(addLoadPromises); + + case 9: + _context6.next = 11; + return Promise.all(loadPromises); + + case 11: + if (!isArray) { + entities = entities.length > 0 ? entities[0] : null; + } + + return _context6.abrupt("return", entities); + + case 13: + case "end": + return _context6.stop(); + } + } + }, _callee6); + })); + } + }, { + key: "_handleRelations_", + value: function _handleRelations_(entity, includeRelations, loadPromises) { + var relations = this.getRelationDefinitions(); + Object.keys(relations).forEach(function (relationName) { + var values = entity[relationName]; + + if (typeof values === "number" || Array.isArray(values) && values.length >= 1 && typeof values[0] === "number") { + if (includeRelations === true) { + var loadPromise = null; + + if (Array.isArray(values)) { + loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findByIds(values); + } else { + loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findById(values); + } + + loadPromises.push(loadPromise.then(function (value) { + entity[relationName] = value; + })); + } else if (includeRelations === false) { + if (relations[relationName].type === "many-to-many" || relations[relationName].type === "one-to-many") { + entity[relationName] = []; + } else { + entity[relationName] = null; + } + } + } + }); + } + }, { + key: "_handleColumns_", + value: function _handleColumns_(entity) { + var schemaDefinition = this.getSchemaDefinition(); + var columns = schemaDefinition["columns"]; + Object.keys(columns).forEach(function (columnName) { + if (columns[columnName].escapeHTML) { + entity[columnName] = XSSHelper_1.XSSHelper.escapeHTML(entity[columnName]); + } + + if (columns[columnName].escapeJS) { + entity[columnName] = XSSHelper_1.XSSHelper.escapeJS(entity[columnName]); + } + }); + } + }]); + + return EasySyncPartialModel; +}(EasySyncBaseModel_1.EasySyncBaseModel); + +exports.EasySyncPartialModel = EasySyncPartialModel; +EasySyncPartialModel.CAN_BE_SYNCED = true; + +/***/ }), +/* 203 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FileMedium = void 0; + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var BaseDatabase_1 = __webpack_require__(147); + +var Helper_1 = __webpack_require__(7); + +var FileMedium = /*#__PURE__*/function (_EasySyncBaseModel_1$) { + _inherits(FileMedium, _EasySyncBaseModel_1$); + + var _super = _createSuper(FileMedium); + + function FileMedium() { + var _this; + + _classCallCheck(this, FileMedium); + + _this = _super.apply(this, arguments); + _this.saveOffline = true; + _this._isDownloaded = true; + return _this; + } + + _createClass(FileMedium, [{ + key: "getServerUrl", + value: function getServerUrl(appendDate) { + appendDate = Helper_1.Helper.nonNull(appendDate, true); + + if (!this.src.startsWith("http") && !this.src.startsWith("//") && !this.src.startsWith("data")) { + var path = FileMedium.PUBLIC_PATH + this.src; + + if (appendDate) { + path += "?t=" + new Date(this.updatedAt).getTime(); + } + + return path; + } + + return this.src; + } + }, { + key: "getUrl", + value: function getUrl() { + if (device.platform !== "browser" && this.saveOffline && this._isDownloaded && Helper_1.Helper.isNotNull(this.id) && !this.src.startsWith("data") && !this.src.startsWith("http")) { + return "cdvfile://localhost/persistent/" + this.src; + } else { + return this.getServerUrl(); + } + } + }, { + key: "toString", + value: function toString() { + console.warn("to string called on FileMedium. Only for dependency. Please look inside your sourcecode"); + return this.getUrl(); + } + }], [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(FileMedium), "getColumnDefinitions", this).call(this); + + columns["src"] = BaseDatabase_1.BaseDatabase.TYPES.MEDIUMTEXT; + columns["saveOffline"] = { + type: BaseDatabase_1.BaseDatabase.TYPES.BOOLEAN, + default: 1 + }; + return columns; + } + }]); + + return FileMedium; +}(EasySyncBaseModel_1.EasySyncBaseModel); + +exports.FileMedium = FileMedium; +FileMedium.PUBLIC_PATH = "./"; +FileMedium.SCHEMA_NAME = "FileMedium"; +BaseDatabase_1.BaseDatabase.addModel(FileMedium); + +/***/ }), +/* 204 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Role = void 0; + +var shared_1 = __webpack_require__(127); + +var cordova_sites_database_1 = __webpack_require__(19); + +var Access_1 = __webpack_require__(270); + +var Role = /*#__PURE__*/function (_shared_1$EasySyncBas) { + _inherits(Role, _shared_1$EasySyncBas); + + var _super = _createSuper(Role); + + function Role() { + var _this; + + _classCallCheck(this, Role); + + _this = _super.call(this); + _this.name = null; + _this.description = null; + _this.accesses = null; + _this.parents = null; + _this.children = null; + return _this; + } + + _createClass(Role, null, [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(Role), "getColumnDefinitions", this).call(this); + + columns["name"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }; + columns["description"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }; + return columns; + } + }, { + key: "getRelationDefinitions", + value: function getRelationDefinitions() { + var relations = _get(_getPrototypeOf(Role), "getRelationDefinitions", this).call(this); + + relations["accesses"] = { + target: Access_1.Access.getSchemaName(), + type: "many-to-many", + joinTable: { + name: "roleAccess" + }, + cascade: false + }; + relations["parents"] = { + target: Role.getSchemaName(), + type: "many-to-many", + joinTable: { + name: "roleChildren", + joinColumn: { + name: "childId", + referencedColumnName: "id" + }, + inverseJoinColumn: { + name: "parentId", + referencedColumnName: "id" + } + }, + cascade: false + }; + relations["children"] = { + target: Role.getSchemaName(), + type: "many-to-many", + joinTable: { + name: "roleChildren", + joinColumn: { + name: "parentId", + referencedColumnName: "id" + }, + inverseJoinColumn: { + name: "childId", + referencedColumnName: "id" + } + }, + cascade: false + }; + return relations; + } + }]); + + return Role; +}(shared_1.EasySyncBaseModel); + +exports.Role = Role; +Role.CAN_BE_SYNCED = false; +cordova_sites_database_1.BaseDatabase.addModel(Role); + +/***/ }), +/* 205 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.StartUserSiteMenuAction = void 0; + +var UserMenuAction_1 = __webpack_require__(149); + +var client_1 = __webpack_require__(4); + +var StartUserSiteMenuAction = /*#__PURE__*/function (_UserMenuAction_1$Use) { + _inherits(StartUserSiteMenuAction, _UserMenuAction_1$Use); + + var _super = _createSuper(StartUserSiteMenuAction); + + function StartUserSiteMenuAction(name, access, site, showFor, order, icon) { + _classCallCheck(this, StartUserSiteMenuAction); + + return _super.call(this, name, access, function () { + if (client_1.StartSiteMenuAction._app) { + if (Array.isArray(site) && site.length >= 2) { + client_1.StartSiteMenuAction._app.startSite(site[0], site[1]); + } else { + client_1.StartSiteMenuAction._app.startSite(site); + } + } + }, showFor, order, icon); + } + + return StartUserSiteMenuAction; +}(UserMenuAction_1.UserMenuAction); + +exports.StartUserSiteMenuAction = StartUserSiteMenuAction; + +/***/ }), +/* 206 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FilePromise = void 0; + +var Helper_1 = __webpack_require__(7); + +var FileWriterPromise_1 = __webpack_require__(275); + +var FilePromise = /*#__PURE__*/function () { + function FilePromise(fileEntry) { + _classCallCheck(this, FilePromise); + + this.fileEntry = fileEntry; + } + + _createClass(FilePromise, [{ + key: "createWriter", + value: function createWriter() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this = this; + + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", new Promise(function (res) { + _this.fileEntry.createWriter(function (writer) { + res(new FileWriterPromise_1.FileWriterPromise(writer)); + }); + })); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }], [{ + key: "open", + value: function open(file, options) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + options = Helper_1.Helper.nonNull(options, { + create: true, + exclusive: false + }); + return _context2.abrupt("return", new Promise(function (r, rej) { + window["resolveLocalFileSystemURL"]("cdvfile://localhost/persistent/", function (dirEntry) { + dirEntry.getFile(file, options, function (fileEntry) { + r(new FilePromise(fileEntry)); + }, rej); + }, rej); + })); + + case 2: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + }]); + + return FilePromise; +}(); + +exports.FilePromise = FilePromise; + +/***/ }), +/* 207 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SimpleFourWordsLevel10_2\", function() { return SimpleFourWordsLevel10_2; });\n/* harmony import */ var _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SimpleFourWordsLevel */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js\");\n\n\nclass SimpleFourWordsLevel10_2 extends _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__[\"SimpleFourWordsLevel\"]{\n constructor(templateContainer) {\n super(templateContainer, 10, 2);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_2.js?"); +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, "RelationQueryBuilder", function() { return /* binding */ RelationQueryBuilder_RelationQueryBuilder; }); + +// EXTERNAL MODULE: ./node_modules/typeorm/node_modules/tslib/tslib.es6.js +var tslib_es6 = __webpack_require__(0); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/query-builder/QueryBuilder.js + 2 modules +var QueryBuilder = __webpack_require__(40); + +// EXTERNAL MODULE: ./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js +var BrowserDisabledDriversDummy = __webpack_require__(1); + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/RelationUpdater.js + + + +/** + * Allows to work with entity relations and perform specific operations with those relations. + * + * todo: add transactions everywhere + */ +var RelationUpdater_RelationUpdater = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationUpdater(queryBuilder, expressionMap) { + this.queryBuilder = queryBuilder; + this.expressionMap = expressionMap; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Performs set or add operation on a relation. + */ + RelationUpdater.prototype.update = function (value) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var relation, updateSet, updateSet_1, ofs, parameters_1, conditions_1, condition, of_1, updateSet, junctionMetadata_1, ofs, values, firstColumnValues, secondColumnValues_1, bulkInserted_1; + var _this = this; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + relation = this.expressionMap.relationMetadata; + if (!(relation.isManyToOne || relation.isOneToOneOwner)) return [3 /*break*/, 2]; + updateSet = relation.joinColumns.reduce(function (updateSet, joinColumn) { + var relationValue = value instanceof Object ? joinColumn.referencedColumn.getEntityValue(value) : value; + joinColumn.setEntityValue(updateSet, relationValue); + return updateSet; + }, {}); + if (!this.expressionMap.of || (Array.isArray(this.expressionMap.of) && !this.expressionMap.of.length)) + return [2 /*return*/]; + return [4 /*yield*/, this.queryBuilder + .createQueryBuilder() + .update(relation.entityMetadata.target) + .set(updateSet) + .whereInIds(this.expressionMap.of) + .execute()]; + case 1: + _a.sent(); + return [3 /*break*/, 10]; + case 2: + if (!((relation.isOneToOneNotOwner || relation.isOneToMany) && value === null)) return [3 /*break*/, 4]; + updateSet_1 = {}; + relation.inverseRelation.joinColumns.forEach(function (column) { + updateSet_1[column.propertyName] = null; + }); + ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of]; + parameters_1 = {}; + conditions_1 = []; + ofs.forEach(function (of, ofIndex) { + relation.inverseRelation.joinColumns.map(function (column, columnIndex) { + var parameterName = "joinColumn_" + ofIndex + "_" + columnIndex; + parameters_1[parameterName] = of instanceof Object ? column.referencedColumn.getEntityValue(of) : of; + conditions_1.push(column.propertyPath + " = :" + parameterName); + }); + }); + condition = conditions_1.map(function (str) { return "(" + str + ")"; }).join(" OR "); + if (!condition) + return [2 /*return*/]; + return [4 /*yield*/, this.queryBuilder + .createQueryBuilder() + .update(relation.inverseEntityMetadata.target) + .set(updateSet_1) + .where(condition) + .setParameters(parameters_1) + .execute()]; + case 3: + _a.sent(); + return [3 /*break*/, 10]; + case 4: + if (!(relation.isOneToOneNotOwner || relation.isOneToMany)) return [3 /*break*/, 6]; + if (Array.isArray(this.expressionMap.of)) + throw new Error("You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method."); + of_1 = this.expressionMap.of; + updateSet = relation.inverseRelation.joinColumns.reduce(function (updateSet, joinColumn) { + var relationValue = of_1 instanceof Object ? joinColumn.referencedColumn.getEntityValue(of_1) : of_1; + joinColumn.setEntityValue(updateSet, relationValue); + return updateSet; + }, {}); + if (!value || (Array.isArray(value) && !value.length)) + return [2 /*return*/]; + return [4 /*yield*/, this.queryBuilder + .createQueryBuilder() + .update(relation.inverseEntityMetadata.target) + .set(updateSet) + .whereInIds(value) + .execute()]; + case 5: + _a.sent(); + return [3 /*break*/, 10]; + case 6: + junctionMetadata_1 = relation.junctionEntityMetadata; + ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of]; + values = Array.isArray(value) ? value : [value]; + firstColumnValues = relation.isManyToManyOwner ? ofs : values; + secondColumnValues_1 = relation.isManyToManyOwner ? values : ofs; + bulkInserted_1 = []; + firstColumnValues.forEach(function (firstColumnVal) { + secondColumnValues_1.forEach(function (secondColumnVal) { + var inserted = {}; + junctionMetadata_1.ownerColumns.forEach(function (column) { + inserted[column.databaseName] = firstColumnVal instanceof Object ? column.referencedColumn.getEntityValue(firstColumnVal) : firstColumnVal; + }); + junctionMetadata_1.inverseColumns.forEach(function (column) { + inserted[column.databaseName] = secondColumnVal instanceof Object ? column.referencedColumn.getEntityValue(secondColumnVal) : secondColumnVal; + }); + bulkInserted_1.push(inserted); + }); + }); + if (!bulkInserted_1.length) + return [2 /*return*/]; + if (!(this.queryBuilder.connection.driver instanceof BrowserDisabledDriversDummy["j" /* OracleDriver */] || this.queryBuilder.connection.driver instanceof BrowserDisabledDriversDummy["l" /* SapDriver */])) return [3 /*break*/, 8]; + return [4 /*yield*/, Promise.all(bulkInserted_1.map(function (value) { + return _this.queryBuilder + .createQueryBuilder() + .insert() + .into(junctionMetadata_1.tableName) + .values(value) + .execute(); + }))]; + case 7: + _a.sent(); + return [3 /*break*/, 10]; + case 8: return [4 /*yield*/, this.queryBuilder + .createQueryBuilder() + .insert() + .into(junctionMetadata_1.tableName) + .values(bulkInserted_1) + .execute()]; + case 9: + _a.sent(); + _a.label = 10; + case 10: return [2 /*return*/]; + } + }); + }); + }; + return RelationUpdater; +}()); + + +//# sourceMappingURL=RelationUpdater.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/RelationRemover.js + +/** + * Allows to work with entity relations and perform specific operations with those relations. + * + * todo: add transactions everywhere + */ +var RelationRemover_RelationRemover = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RelationRemover(queryBuilder, expressionMap) { + this.queryBuilder = queryBuilder; + this.expressionMap = expressionMap; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Performs remove operation on a relation. + */ + RelationRemover.prototype.remove = function (value) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var relation, ofs, values_1, updateSet_1, parameters_1, conditions_1, condition, junctionMetadata_1, ofs, values, firstColumnValues, secondColumnValues_1, parameters_2, conditions_2, condition; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: + relation = this.expressionMap.relationMetadata; + if (!relation.isOneToMany) return [3 /*break*/, 2]; + ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of]; + values_1 = Array.isArray(value) ? value : [value]; + updateSet_1 = {}; + relation.inverseRelation.joinColumns.forEach(function (column) { + updateSet_1[column.propertyName] = null; + }); + parameters_1 = {}; + conditions_1 = []; + ofs.forEach(function (of, ofIndex) { + conditions_1.push.apply(conditions_1, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(values_1.map(function (value, valueIndex) { + return Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(relation.inverseRelation.joinColumns.map(function (column, columnIndex) { + var parameterName = "joinColumn_" + ofIndex + "_" + valueIndex + "_" + columnIndex; + parameters_1[parameterName] = of instanceof Object ? column.referencedColumn.getEntityValue(of) : of; + return column.propertyPath + " = :" + parameterName; + }))), Object(tslib_es6["e" /* __read */])(relation.inverseRelation.entityMetadata.primaryColumns.map(function (column, columnIndex) { + var parameterName = "primaryColumn_" + valueIndex + "_" + valueIndex + "_" + columnIndex; + parameters_1[parameterName] = value instanceof Object ? column.getEntityValue(value) : value; + return column.propertyPath + " = :" + parameterName; + }))).join(" AND "); + })))); + }); + condition = conditions_1.map(function (str) { return "(" + str + ")"; }).join(" OR "); + if (!condition) + return [2 /*return*/]; + return [4 /*yield*/, this.queryBuilder + .createQueryBuilder() + .update(relation.inverseEntityMetadata.target) + .set(updateSet_1) + .where(condition) + .setParameters(parameters_1) + .execute()]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: + junctionMetadata_1 = relation.junctionEntityMetadata; + ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of]; + values = Array.isArray(value) ? value : [value]; + firstColumnValues = relation.isManyToManyOwner ? ofs : values; + secondColumnValues_1 = relation.isManyToManyOwner ? values : ofs; + parameters_2 = {}; + conditions_2 = []; + firstColumnValues.forEach(function (firstColumnVal, firstColumnValIndex) { + conditions_2.push.apply(conditions_2, Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(secondColumnValues_1.map(function (secondColumnVal, secondColumnValIndex) { + return Object(tslib_es6["f" /* __spreadArray */])(Object(tslib_es6["f" /* __spreadArray */])([], Object(tslib_es6["e" /* __read */])(junctionMetadata_1.ownerColumns.map(function (column, columnIndex) { + var parameterName = "firstValue_" + firstColumnValIndex + "_" + secondColumnValIndex + "_" + columnIndex; + parameters_2[parameterName] = firstColumnVal instanceof Object ? column.referencedColumn.getEntityValue(firstColumnVal) : firstColumnVal; + return column.databaseName + " = :" + parameterName; + }))), Object(tslib_es6["e" /* __read */])(junctionMetadata_1.inverseColumns.map(function (column, columnIndex) { + var parameterName = "secondValue_" + firstColumnValIndex + "_" + secondColumnValIndex + "_" + columnIndex; + parameters_2[parameterName] = secondColumnVal instanceof Object ? column.referencedColumn.getEntityValue(secondColumnVal) : secondColumnVal; + return column.databaseName + " = :" + parameterName; + }))).join(" AND "); + })))); + }); + condition = conditions_2.map(function (str) { return "(" + str + ")"; }).join(" OR "); + return [4 /*yield*/, this.queryBuilder + .createQueryBuilder() + .delete() + .from(junctionMetadata_1.tableName) + .where(condition) + .setParameters(parameters_2) + .execute()]; + case 3: + _a.sent(); + _a.label = 4; + case 4: return [2 /*return*/]; + } + }); + }); + }; + return RelationRemover; +}()); + + +//# sourceMappingURL=RelationRemover.js.map + +// CONCATENATED MODULE: ./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js + + + + +/** + * Allows to work with entity relations and perform specific operations with those relations. + * + * todo: add transactions everywhere + */ +var RelationQueryBuilder_RelationQueryBuilder = /** @class */ (function (_super) { + Object(tslib_es6["c" /* __extends */])(RelationQueryBuilder, _super); + function RelationQueryBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + // ------------------------------------------------------------------------- + // Public Implemented Methods + // ------------------------------------------------------------------------- + /** + * Gets generated sql query without parameters being replaced. + */ + RelationQueryBuilder.prototype.getQuery = function () { + return ""; + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Sets entity (target) which relations will be updated. + */ + RelationQueryBuilder.prototype.of = function (entity) { + this.expressionMap.of = entity; + return this; + }; + /** + * Sets entity relation's value. + * Value can be entity, entity id or entity id map (if entity has composite ids). + * Works only for many-to-one and one-to-one relations. + * For many-to-many and one-to-many relations use #add and #remove methods instead. + */ + RelationQueryBuilder.prototype.set = function (value) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var relation, updater; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + relation = this.expressionMap.relationMetadata; + if (!this.expressionMap.of) // todo: move this check before relation query builder creation? + throw new Error("Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set."); + if (relation.isManyToMany || relation.isOneToMany) + throw new Error("Set operation is only supported for many-to-one and one-to-one relations. " + + ("However given \"" + relation.propertyPath + "\" has " + relation.relationType + " relation. ") + + "Use .add() method instead."); + // if there are multiple join columns then user must send id map as "value" argument. check if he really did it + if (relation.joinColumns && + relation.joinColumns.length > 1 && + (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length)) + throw new Error("Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })"); + updater = new RelationUpdater_RelationUpdater(this, this.expressionMap); + return [2 /*return*/, updater.update(value)]; + }); + }); + }; + /** + * Adds (binds) given value to entity relation. + * Value can be entity, entity id or entity id map (if entity has composite ids). + * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids). + * Works only for many-to-many and one-to-many relations. + * For many-to-one and one-to-one use #set method instead. + */ + RelationQueryBuilder.prototype.add = function (value) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var relation, updater; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + if (Array.isArray(value) && value.length === 0) + return [2 /*return*/]; + relation = this.expressionMap.relationMetadata; + if (!this.expressionMap.of) // todo: move this check before relation query builder creation? + throw new Error("Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set."); + if (relation.isManyToOne || relation.isOneToOne) + throw new Error("Add operation is only supported for many-to-many and one-to-many relations. " + + ("However given \"" + relation.propertyPath + "\" has " + relation.relationType + " relation. ") + + "Use .set() method instead."); + // if there are multiple join columns then user must send id map as "value" argument. check if he really did it + if (relation.joinColumns && + relation.joinColumns.length > 1 && + (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length)) + throw new Error("Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })"); + updater = new RelationUpdater_RelationUpdater(this, this.expressionMap); + return [2 /*return*/, updater.update(value)]; + }); + }); + }; + /** + * Removes (unbinds) given value from entity relation. + * Value can be entity, entity id or entity id map (if entity has composite ids). + * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids). + * Works only for many-to-many and one-to-many relations. + * For many-to-one and one-to-one use #set method instead. + */ + RelationQueryBuilder.prototype.remove = function (value) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var relation, remover; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + if (Array.isArray(value) && value.length === 0) + return [2 /*return*/]; + relation = this.expressionMap.relationMetadata; + if (!this.expressionMap.of) // todo: move this check before relation query builder creation? + throw new Error("Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set."); + if (relation.isManyToOne || relation.isOneToOne) + throw new Error("Add operation is only supported for many-to-many and one-to-many relations. " + + ("However given \"" + relation.propertyPath + "\" has " + relation.relationType + " relation. ") + + "Use .set(null) method instead."); + remover = new RelationRemover_RelationRemover(this, this.expressionMap); + return [2 /*return*/, remover.remove(value)]; + }); + }); + }; + /** + * Adds (binds) and removes (unbinds) given values to/from entity relation. + * Value can be entity, entity id or entity id map (if entity has composite ids). + * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids). + * Works only for many-to-many and one-to-many relations. + * For many-to-one and one-to-one use #set method instead. + */ + RelationQueryBuilder.prototype.addAndRemove = function (added, removed) { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.remove(removed)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.add(added)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Gets entity's relation id. + async getId(): Promise { + + }*/ + /** + * Gets entity's relation ids. + async getIds(): Promise { + return []; + }*/ + /** + * Loads a single entity (relational) from the relation. + * You can also provide id of relational entity to filter by. + */ + RelationQueryBuilder.prototype.loadOne = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + return [2 /*return*/, this.loadMany().then(function (results) { return results[0]; })]; + }); + }); + }; + /** + * Loads many entities (relational) from the relation. + * You can also provide ids of relational entities to filter by. + */ + RelationQueryBuilder.prototype.loadMany = function () { + return Object(tslib_es6["b" /* __awaiter */])(this, void 0, void 0, function () { + var of, metadata; + return Object(tslib_es6["d" /* __generator */])(this, function (_a) { + of = this.expressionMap.of; + if (!(of instanceof Object)) { + metadata = this.expressionMap.mainAlias.metadata; + if (metadata.hasMultiplePrimaryKeys) + throw new Error("Cannot load entity because only one primary key was specified, however entity contains multiple primary keys"); + of = metadata.primaryColumns[0].createValueMap(of); + } + return [2 /*return*/, this.connection.relationLoader.load(this.expressionMap.relationMetadata, of, this.queryRunner)]; + }); + }); + }; + return RelationQueryBuilder; +}(QueryBuilder["a" /* QueryBuilder */])); + + +//# sourceMappingURL=RelationQueryBuilder.js.map + /***/ }), +/* 208 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_3.js": -/*!*********************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_3.js ***! - \*********************************************************************/ -/*! exports provided: SimpleFourWordsLevel10_3 */ +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ShareManager = void 0; + +var ShareDialog_1 = __webpack_require__(266); + +var ShareManager = /*#__PURE__*/function () { + function ShareManager() { + _classCallCheck(this, ShareManager); + } + + _createClass(ShareManager, [{ + key: "share", + value: function share(text) { + if (device.platform === "browser") { + this._shareBrowser(text); + } else { + this._shareMobile(text); + } + } + }, { + key: "_shareMobile", + value: function _shareMobile(text) { + navigator["share"](text); + } + }, { + key: "_shareBrowser", + value: function _shareBrowser(text) { + new ShareDialog_1.ShareDialog(text).show(); + } + }]); + + return ShareManager; +}(); + +exports.ShareManager = ShareManager; + +/***/ }), +/* 209 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var BaseDatabase_1 = __webpack_require__(147); + +var BaseModel = /*#__PURE__*/function () { + function BaseModel() { + _classCallCheck(this, BaseModel); + + this.id = null; + this._isLoaded = false; + } + + _createClass(BaseModel, [{ + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "setId", + value: function setId(id) { + this.id = id; + } + }, { + key: "setLoaded", + value: function setLoaded(isLoaded) { + this._isLoaded = isLoaded; + } + }, { + key: "save", + value: function save() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", this.constructor._database.saveEntity(this)); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "delete", + value: function _delete() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", this.constructor._database.deleteEntity(this)); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }], [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + return { + id: { + primary: true, + type: BaseDatabase_1.BaseDatabase.TYPES.INTEGER, + generated: true + } + }; + } + }, { + key: "getRelationDefinitions", + value: function getRelationDefinitions() { + return {}; + } + }, { + key: "getRelations", + value: function getRelations() { + return Object.keys(this.getRelationDefinitions()); + } + }, { + key: "getSchemaDefinition", + value: function getSchemaDefinition() { + var columns = this.getColumnDefinitions(); + Object.keys(columns).forEach(function (column) { + if (typeof columns[column] === "string") { + columns[column] = { + type: columns[column] + }; + } + + if (columns[column].type === BaseDatabase_1.BaseDatabase.TYPES.MY_JSON && !columns[column].transformer) { + columns[column].type = BaseDatabase_1.BaseDatabase.TYPES.MEDIUMTEXT; + columns[column].transformer = { + from: function from(text) { + return text ? JSON.parse(text) : null; + }, + to: function to(json) { + return json ? JSON.stringify(json) : ""; + } + }; + } + }); + return { + name: this.getSchemaName(), + target: this, + columns: columns, + relations: this.getRelationDefinitions() + }; + } + }, { + key: "getSchemaName", + value: function getSchemaName() { + if (!this.SCHEMA_NAME) { + this.SCHEMA_NAME = this.name; + } + + return this.SCHEMA_NAME; + } + }, { + key: "deleteMany", + value: function deleteMany(entities) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt("return", this._database.deleteEntity(entities)); + + case 1: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "saveMany", + value: function saveMany(entities) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + return _context4.abrupt("return", this._database.saveEntity(entities)); + + case 1: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "find", + value: function find(where, order, limit, offset, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + return _context5.abrupt("return", this._database.findEntities(this, where, order, limit, offset, relations)); + + case 1: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + }, { + key: "findAndCount", + value: function findAndCount(where, order, limit, offset, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + return _context6.abrupt("return", this._database.findAndCountEntities(this, where, order, limit, offset, relations)); + + case 1: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "findOne", + value: function findOne(where, order, offset, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + return _context7.abrupt("return", this._database.findOneEntity(this, where, order, offset, relations)); + + case 1: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + }, { + key: "findById", + value: function findById(id, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + return _context8.abrupt("return", this._database.findById(this, id, relations)); + + case 1: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "findByIds", + value: function findByIds(ids, relations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + return _context9.abrupt("return", this._database.findByIds(this, ids, relations)); + + case 1: + case "end": + return _context9.stop(); + } + } + }, _callee9, this); + })); + } + }, { + key: "clear", + value: function clear() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + return regeneratorRuntime.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + return _context10.abrupt("return", this._database.clearModel(this)); + + case 1: + case "end": + return _context10.stop(); + } + } + }, _callee10, this); + })); + } + }, { + key: "equals", + value: function equals(a, b) { + var _this = this; + + if (a === b) { + return true; + } + + if (a === null || b === null) { + return false; + } + + if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) { + return a.every(function (subA, index) { + _this.equals(subA, b[index]); + }); + } else if (a instanceof this && b instanceof this) { + return a.constructor === b.constructor && a.getId() === b.getId(); + } + } + }]); + + return BaseModel; +}(); + +exports.BaseModel = BaseModel; +/** + * @type {null | BaseDatabase} + * @private + */ + +BaseModel._database = null; +BaseModel.RELATION = { + MANY_TO_MANY: "many-to-many", + MANY_TO_ONE: "many-to-one", + ONE_TO_MANY: "one-to-many", + ONE_TO_ONE: "one-to-one" +}; + +/***/ }), +/* 210 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SyncJob = void 0; + +var LastSyncDates_1 = __webpack_require__(129); + +var client_1 = __webpack_require__(4); + +var shared_1 = __webpack_require__(22); + +var EasySyncClientDb_1 = __webpack_require__(128); + +var typeorm = __webpack_require__(47); + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var ClientFileMedium_1 = __webpack_require__(150); + +var FileMedium_1 = __webpack_require__(203); + +var BaseDatabase_1 = __webpack_require__(147); + +var SyncJob = /*#__PURE__*/function () { + function SyncJob() { + _classCallCheck(this, SyncJob); + + this._syncedModels = {}; + this._modelNames = []; + this._relationshipModels = {}; + this._lastSyncDates = {}; + this._keyedModelClasses = {}; + this._savePromise = Promise.resolve(); + this._queryRunner = null; + this._finalRes = {}; + this._manyToManyRelations = {}; + } + + _createClass(SyncJob, [{ + key: "syncInBackgroundIfDataExists", + value: function syncInBackgroundIfDataExists(queries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var copiedQuery, requestQueries; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel(); + copiedQuery = shared_1.JsonHelper.deepCopy(queries); + requestQueries = this._buildRequestQuery(copiedQuery); + _context.next = 5; + return this._getLastSyncModels(this._modelNames, requestQueries); + + case 5: + this._lastSyncDates = _context.sent; + this._syncPromise = this.sync(queries); + + if (!Object["values"](this._lastSyncDates).some(function (lastSync) { + return lastSync["getLastSynced"]() === 0; + })) { + _context.next = 10; + break; + } + + _context.next = 10; + return this._syncPromise; + + case 10: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "getSyncPromise", + value: function getSyncPromise() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", this._syncPromise); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "sync", + value: function sync(queries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this = this; + + var requestQueries, lastSyncPromises; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel(); + requestQueries = this._buildRequestQuery(queries); + + if (!(Object.keys(this._lastSyncDates).length === 0)) { + _context3.next = 6; + break; + } + + _context3.next = 5; + return this._getLastSyncModels(this._modelNames, requestQueries); + + case 5: + this._lastSyncDates = _context3.sent; + + case 6: + _context3.next = 8; + return this._doRuns(requestQueries); + + case 8: + //Save new lastSync models + lastSyncPromises = []; + Object.keys(this._lastSyncDates).forEach(function (model) { + lastSyncPromises.push(_this._lastSyncDates[model].save()); + }); + _context3.next = 12; + return Promise.all(lastSyncPromises); + + case 12: + _context3.next = 14; + return EasySyncClientDb_1.EasySyncClientDb.getInstance().rawQuery("PRAGMA foreign_keys = ON;"); + + case 14: + if (!(this._finalRes["FileMedium"] && this._finalRes["FileMedium"]["changed"])) { + _context3.next = 21; + break; + } + + _context3.t0 = ClientFileMedium_1.ClientFileMedium; + _context3.next = 18; + return FileMedium_1.FileMedium.findByIds(this._finalRes["FileMedium"]["changed"]); + + case 18: + _context3.t1 = _context3.sent; + _context3.next = 21; + return _context3.t0._handleImages.call(_context3.t0, _context3.t1); + + case 21: + return _context3.abrupt("return", this._finalRes); + + case 22: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "_doRuns", + value: function _doRuns(requestQueries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var _this2 = this; + + var newLastSynced, response, offset, shouldAskAgain, _loop; + + return regeneratorRuntime.wrap(function _callee7$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + //Initialize some variables + newLastSynced = null; + response = null; + offset = 0; //startTransaction maybe allow read, but not write? + + _context8.next = 5; + return EasySyncClientDb_1.EasySyncClientDb.getInstance().createQueryRunner(); + + case 5: + this._queryRunner = _context8.sent; + this._savePromise = this._queryRunner.query("PRAGMA foreign_keys = OFF;").then(function () { + return _this2._queryRunner.startTransaction(); + }); //Ask for next run until no more runs needed + + _loop = /*#__PURE__*/regeneratorRuntime.mark(function _loop() { + var newRequestQueries; + return regeneratorRuntime.wrap(function _loop$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + shouldAskAgain = false; + _context7.next = 3; + return SyncJob._fetchModel(requestQueries, offset); + + case 3: + response = _context7.sent; + offset = response["nextOffset"]; //Update newLastSynced + + if (shared_1.Helper.isNull(newLastSynced)) { + newLastSynced = parseInt(response["newLastSynced"]); + Object.keys(_this2._lastSyncDates).forEach(function (key) { + _this2._lastSyncDates[key].setLastSynced(newLastSynced); + }); + } //create new request query and save changes + + + newRequestQueries = []; + response.results.forEach(function (res, i) { + if (res && res.shouldAskAgain) { + shouldAskAgain = true; + newRequestQueries.push(requestQueries[i]); + } //Extract entities + + + _this2._extractEntities(res); + }); + requestQueries = newRequestQueries; + + case 9: + case "end": + return _context7.stop(); + } + } + }, _loop); + }); + + case 8: + return _context8.delegateYield(_loop(), "t0", 9); + + case 9: + if (shouldAskAgain) { + _context8.next = 8; + break; + } + + case 10: + _context8.next = 12; + return this._handleManyToManyRelations(); + + case 12: + return _context8.abrupt("return", this._savePromise.then(function () { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return this._queryRunner.commitTransaction(); + + case 2: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + }).catch(function (e) { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + console.error(e); + _context5.next = 3; + return this._queryRunner.rollbackTransaction(); + + case 3: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + }).finally(function () { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return this._queryRunner.release(); + + case 2: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + })); + + case 13: + case "end": + return _context8.stop(); + } + } + }, _callee7, this); + })); + } + /** + * Extract the Entities and saves them(?) for one model + * + * @param modelRes + * @private + */ + + }, { + key: "_extractEntities", + value: function _extractEntities(modelRes) { + var _this3 = this, + _this$_finalRes$model, + _this$_finalRes$model2; + + if (!modelRes) { + return; + } + + var modelClass = this._keyedModelClasses[modelRes["model"]]; + var modelName = modelClass.getSchemaName(); + var deletedModelsIds = []; + var changedEntities = []; //split result into deleted and changed/new entities + + modelRes["entities"].forEach(function (entity) { + if (entity.deleted) { + deletedModelsIds.push(entity.id); + } else { + changedEntities.push(entity); + } + }); + this._syncedModels[modelName] = shared_1.Helper.nonNull(this._syncedModels[modelName], {}); //convert json to entity and save it + + var schemaDefinition = modelClass.getSchemaDefinition(); + var relations = schemaDefinition["relations"]; + var columns = schemaDefinition["columns"]; + var changedEntityIds = []; + changedEntities.forEach(function (entity) { + Object.keys(relations).forEach(function (relation) { + if (relations[relation].type === "many-to-many" && Array.isArray(entity[relation])) { + var table = relations[relation].joinTable; + var ownName; + + if (table.joinColumn && table.joinColumn.name) { + ownName = table.joinColumn.name; + } else { + ownName = modelClass.getSchemaName(); + ownName = ownName.substr(0, 1).toLowerCase() + ownName.substr(1) + "Id"; + } + + var otherName; + + if (table.inverseJoinColumn && table.inverseJoinColumn.name) { + otherName = table.inverseJoinColumn.name; + } else { + otherName = relations[relation].target; + otherName = otherName.substr(0, 1).toLowerCase() + otherName.substr(1) + "Id"; + } + + _this3._manyToManyRelations[table.name] = shared_1.Helper.nonNull(_this3._manyToManyRelations[table.name], {}); + _this3._manyToManyRelations[table.name]["values"] = shared_1.Helper.nonNull(_this3._manyToManyRelations[table.name]["values"], []); + _this3._manyToManyRelations[table.name]["delete_" + ownName] = shared_1.Helper.nonNull(_this3._manyToManyRelations[table.name]["delete_" + ownName], []); + + _this3._manyToManyRelations[table.name]["delete_" + ownName].push(entity.id); + + var otherIdsAlreadyInserted = []; + + var insertedRelations = _this3._manyToManyRelations[table.name]["values"].filter(function (relValue) { + return relValue[ownName] === entity.id; + }); + + insertedRelations.forEach(function (relValue) { + return otherIdsAlreadyInserted.push(relValue[otherName]); + }); + entity[relation].forEach(function (otherId) { + var index = otherIdsAlreadyInserted.indexOf(otherId); + + if (index === -1) { + var value = {}; + value[ownName] = entity.id; + value[otherName] = otherId; + + _this3._manyToManyRelations[table.name]["values"].push(value); + } + }); + } else if (relations[relation].type === "many-to-one" || relations[relation].type === "one-to-one" && relations[relation].joinColumn) //DO not check for a value of the relation here. Else If the first entity has no value set, the field + // will not be set and therefore ignored for all other entites too + { + var fieldName; + + if (relations[relation].joinColumn && relations[relation].joinColumn.name) { + fieldName = relations[relation].joinColumn.name; + } else { + fieldName = relation + "Id"; + } + + entity[fieldName] = entity[relation]; + } + + delete entity[relation]; + }); + Object.keys(columns).forEach(function (columnName) { + if (columns[columnName].escapeHTML) { + entity[columnName] = shared_1.XSSHelper.escapeHTML(entity[columnName]); + } + + if (columns[columnName].escapeJS) { + entity[columnName] = shared_1.XSSHelper.escapeJS(entity[columnName]); + } + }); + changedEntityIds.push(entity.id); + }); + this._savePromise = this._savePromise.then(function () { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + return regeneratorRuntime.wrap(function _callee8$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return this._insertOrReplace(modelClass, changedEntities); + + case 2: + return _context9.abrupt("return", _context9.sent); + + case 3: + case "end": + return _context9.stop(); + } + } + }, _callee8, this); + })); + }); + this._savePromise = this._savePromise.then(function () { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + return regeneratorRuntime.wrap(function _callee9$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + _context10.next = 2; + return this._deleteModels(modelClass, deletedModelsIds); + + case 2: + return _context10.abrupt("return", _context10.sent); + + case 3: + case "end": + return _context10.stop(); + } + } + }, _callee9, this); + })); + }); + this._finalRes[modelName] = shared_1.Helper.nonNull(this._finalRes[modelName], { + "deleted": [], + "changed": [] + }); + + (_this$_finalRes$model = this._finalRes[modelName]["deleted"]).push.apply(_this$_finalRes$model, deletedModelsIds); + + (_this$_finalRes$model2 = this._finalRes[modelName]["changed"]).push.apply(_this$_finalRes$model2, changedEntityIds); + } + }, { + key: "_buildRequestQuery", + value: function _buildRequestQuery(queries) { + var _this4 = this; + + var requestQueries = []; //initializing query + + queries.forEach(function (query) { + if (query.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel) { + query = { + model: query, + where: {} + }; + } + + query.model = query.model.getSchemaName(); + + _this4._modelNames.push(query.model); + + requestQueries.push(query); + var key = "" + query.model + JSON.stringify(query.where); + + if (shared_1.Helper.isNotNull(_this4._lastSyncDates[key])) { + query["lastSynced"] = _this4._lastSyncDates[key].getLastSynced(); + } + }); + return requestQueries; + } + }, { + key: "_getLastSyncModels", + value: function _getLastSyncModels(modelNames, requestQueries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + var lastSyncModelsArray, lastSyncDates; + return regeneratorRuntime.wrap(function _callee10$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + _context11.next = 2; + return LastSyncDates_1.LastSyncDates.find({ + "model": typeorm.In(modelNames) + }); + + case 2: + lastSyncModelsArray = _context11.sent; + lastSyncDates = shared_1.Helper.arrayToObject(lastSyncModelsArray, function (model) { + return "" + model.getModel() + JSON.stringify(model.where); + }); + requestQueries.forEach(function (query) { + var key = "" + query.model + JSON.stringify(query.where); + + if (shared_1.Helper.isNull(lastSyncDates[key])) { + var lastSyncDate = new LastSyncDates_1.LastSyncDates(); + lastSyncDate.setModel(query.model); + lastSyncDate.where = query.where; + lastSyncDate.setLastSynced(0); + lastSyncDates[key] = lastSyncDate; + } + + query["lastSynced"] = lastSyncDates[key].getLastSynced(); + }); + return _context11.abrupt("return", lastSyncDates); + + case 6: + case "end": + return _context11.stop(); + } + } + }, _callee10); + })); + } + }, { + key: "_insertOrReplace", + value: function _insertOrReplace(modelClass, changedEntities) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee12() { + var _this5 = this; + + var MAX_INSERT_IN_ONE_GO, schemaDefinition, tableName, columns, fields, values, valueStrings, sql; + return regeneratorRuntime.wrap(function _callee12$(_context13) { + while (1) { + switch (_context13.prev = _context13.next) { + case 0: + MAX_INSERT_IN_ONE_GO = 300; + + if (!(changedEntities.length === 0)) { + _context13.next = 3; + break; + } + + return _context13.abrupt("return"); + + case 3: + schemaDefinition = modelClass.getSchemaDefinition(); + tableName = schemaDefinition.name; + tableName = shared_1.Helper.toSnakeCase(tableName); + columns = schemaDefinition.columns; //Get fields from entity for including relation fields + + fields = Object.keys(changedEntities[0]); + values = []; + valueStrings = []; + _context13.next = 12; + return shared_1.Helper.asyncForEach(changedEntities, function (entity) { + return __awaiter(_this5, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee11() { + var valueString, sql; + return regeneratorRuntime.wrap(function _callee11$(_context12) { + while (1) { + switch (_context12.prev = _context12.next) { + case 0: + valueString = []; //Stellt die reihenfolge sicher + + //Stellt die reihenfolge sicher + fields.forEach(function (field) { + var val = entity[field]; + + if (columns[field] && columns[field].transformer) { + val = columns[field].transformer.to(val); + } + + if (columns[field] && columns[field].type === BaseDatabase_1.BaseDatabase.TYPES.SIMPLE_JSON) { + val = JSON.stringify(val); + } + + values.push(val); + valueString.push("?"); + }); + valueStrings.push("(" + valueString.join(",") + ")"); + + if (!(valueStrings.length >= MAX_INSERT_IN_ONE_GO)) { + _context12.next = 9; + break; + } + + sql = "INSERT OR REPLACE INTO " + tableName + " (" + fields.join(",") + ") VALUES " + valueStrings.join(","); + _context12.next = 7; + return this._queryRunner.query(sql, values); + + case 7: + valueStrings = []; + values = []; + + case 9: + case "end": + return _context12.stop(); + } + } + }, _callee11, this); + })); + }); + + case 12: + if (!(valueStrings.length > 0)) { + _context13.next = 16; + break; + } + + sql = "INSERT OR REPLACE INTO " + tableName + " (" + fields.join(",") + ") VALUES " + valueStrings.join(","); + _context13.next = 16; + return this._queryRunner.query(sql, values); + + case 16: + case "end": + return _context13.stop(); + } + } + }, _callee12, this); + })); + } + }, { + key: "_deleteModels", + value: function _deleteModels(modelClass, deletedModelsIds) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee14() { + var _this6 = this; + + var MAX_DELETES_IN_ONE_GO, tableName, ids, valueStrings, sql; + return regeneratorRuntime.wrap(function _callee14$(_context15) { + while (1) { + switch (_context15.prev = _context15.next) { + case 0: + MAX_DELETES_IN_ONE_GO = 300; + + if (!(deletedModelsIds.length === 0)) { + _context15.next = 3; + break; + } + + return _context15.abrupt("return"); + + case 3: + tableName = modelClass.getSchemaName(); + tableName = shared_1.Helper.toSnakeCase(tableName); + ids = []; + valueStrings = []; + _context15.next = 9; + return shared_1.Helper.asyncForEach(deletedModelsIds, function (entityId) { + return __awaiter(_this6, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee13() { + var sql; + return regeneratorRuntime.wrap(function _callee13$(_context14) { + while (1) { + switch (_context14.prev = _context14.next) { + case 0: + ids.push(entityId); + valueStrings.push("?"); + + if (!(valueStrings.length >= MAX_DELETES_IN_ONE_GO)) { + _context14.next = 8; + break; + } + + sql = "DELETE FROM " + tableName + " WHERE id IN (" + ids.join(",") + ")"; + _context14.next = 6; + return this._queryRunner.query(sql); + + case 6: + valueStrings = []; + ids = []; + + case 8: + case "end": + return _context14.stop(); + } + } + }, _callee13, this); + })); + }); + + case 9: + if (!(valueStrings.length > 0)) { + _context15.next = 13; + break; + } + + sql = "DELETE FROM " + tableName + " WHERE id IN (" + ids.join(",") + ")"; + _context15.next = 13; + return this._queryRunner.query(sql); + + case 13: + case "end": + return _context15.stop(); + } + } + }, _callee14, this); + })); + } + }, { + key: "_handleManyToManyRelations", + value: function _handleManyToManyRelations() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee15() { + var _this7 = this; + + var promises; + return regeneratorRuntime.wrap(function _callee15$(_context16) { + while (1) { + switch (_context16.prev = _context16.next) { + case 0: + _context16.next = 2; + return this._savePromise; + + case 2: + promises = []; + Object.keys(this._manyToManyRelations).forEach(function (table) { + var sql = "DELETE FROM " + table + " WHERE "; + var deleteSqls = []; + Object.keys(_this7._manyToManyRelations[table]).forEach(function (field) { + if (field.startsWith("delete_")) { + deleteSqls.push(field.substr(7) + " IN (" + _this7._manyToManyRelations[table][field].join(",") + ")"); + } + }); + sql += deleteSqls.join(" OR ") + ";"; + promises.push(_this7._queryRunner.query(sql).then(function () { + if (_this7._manyToManyRelations[table].values.length > 0) { + var fields = Object.keys(_this7._manyToManyRelations[table].values[0]); + var valueStrings = []; + + _this7._manyToManyRelations[table].values.forEach(function (valuePair) { + var values = []; + fields.forEach(function (field) { + values.push(valuePair[field]); + }); + valueStrings.push("(" + values.join(",") + ")"); + }); + + var _sql = "INSERT OR REPLACE INTO " + table + "(" + fields.join(",") + ") VALUES " + valueStrings.join(",") + ";"; + + return _this7._queryRunner.query(_sql); + } + })); + }); + _context16.next = 6; + return Promise.all(promises); + + case 6: + case "end": + return _context16.stop(); + } + } + }, _callee15, this); + })); + } + }], [{ + key: "_fetchModel", + value: function _fetchModel(query, offset) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee16() { + return regeneratorRuntime.wrap(function _callee16$(_context17) { + while (1) { + switch (_context17.prev = _context17.next) { + case 0: + _context17.next = 2; + return client_1.DataManager.load(SyncJob.SYNC_PATH_PREFIX + client_1.DataManager.buildQuery({ + "queries": JSON.stringify(query), + "offset": offset + })); + + case 2: + return _context17.abrupt("return", _context17.sent); + + case 3: + case "end": + return _context17.stop(); + } + } + }, _callee16); + })); + } + }]); + + return SyncJob; +}(); + +exports.SyncJob = SyncJob; +SyncJob.SYNC_PATH_PREFIX = "sync"; + +/***/ }), +/* 211 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DeleteUserManagement1000000000000 = void 0; + +var DeleteUserManagement1000000000000 = /*#__PURE__*/function () { + function DeleteUserManagement1000000000000() { + _classCallCheck(this, DeleteUserManagement1000000000000); + } + + _createClass(DeleteUserManagement1000000000000, [{ + key: "_isServer", + value: function _isServer() { + return (typeof document === "undefined" ? "undefined" : _typeof(document)) !== "object"; + } + }, { + key: "up", + value: function up(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return queryRunner.dropTable("roleAccess", true); + + case 2: + _context.next = 4; + return queryRunner.dropTable("roleChildren", true); + + case 4: + _context.next = 6; + return queryRunner.dropTable("userRole", true); + + case 6: + if (!this._isServer()) { + _context.next = 9; + break; + } + + _context.next = 9; + return queryRunner.dropTable("user_access", true); + + case 9: + _context.next = 11; + return queryRunner.dropTable("access", true); + + case 11: + _context.next = 13; + return queryRunner.dropTable("role", true); + + case 13: + _context.next = 15; + return queryRunner.dropTable("user", true); + + case 15: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "down", + value: function down(queryRunner) { + return undefined; + } + }]); + + return DeleteUserManagement1000000000000; +}(); + +exports.DeleteUserManagement1000000000000 = DeleteUserManagement1000000000000; + +/***/ }), +/* 212 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SetupUserManagement1000000001000 = void 0; + +var typeorm_1 = __webpack_require__(47); + +var cordova_sites_database_1 = __webpack_require__(19); + +var SetupUserManagement1000000001000 = /*#__PURE__*/function () { + function SetupUserManagement1000000001000() { + _classCallCheck(this, SetupUserManagement1000000001000); + } + + _createClass(SetupUserManagement1000000001000, [{ + key: "_isServer", + value: function _isServer() { + return (typeof document === "undefined" ? "undefined" : _typeof(document)) !== "object"; + } + }, { + key: "up", + value: function up(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this._addAccess(queryRunner); + + case 2: + _context.next = 4; + return this._addRole(queryRunner); + + case 4: + _context.next = 6; + return this._addUser(queryRunner); + + case 6: + _context.next = 8; + return this._addRoleAccess(queryRunner); + + case 8: + _context.next = 10; + return this._addRoleChildren(queryRunner); + + case 10: + _context.next = 12; + return this._addUserRole(queryRunner); + + case 12: + if (!this._isServer()) { + _context.next = 15; + break; + } + + _context.next = 15; + return this._addUserAccess(queryRunner); + + case 15: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "_addAccess", + value: function _addAccess(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var accessTable; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + accessTable = new typeorm_1.Table({ + name: "access", + columns: [{ + name: "id", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, + isGenerated: this._isServer(), + generationStrategy: "increment" + }, { + name: "createdAt", + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }, { + name: "updatedAt", + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }, { + name: "version", + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }, { + name: "deleted", + type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN + }, { + name: "name", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + isUnique: true + }, { + name: "description", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }] + }); + _context2.next = 3; + return queryRunner.createTable(accessTable, true); + + case 3: + return _context2.abrupt("return", _context2.sent); + + case 4: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "_addRole", + value: function _addRole(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var roleTable; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + roleTable = new typeorm_1.Table({ + name: "role", + columns: [{ + name: "id", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, + isGenerated: this._isServer(), + generationStrategy: "increment" + }, { + name: "createdAt", + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }, { + name: "updatedAt", + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }, { + name: "version", + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }, { + name: "deleted", + type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN + }, { + name: "name", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }, { + name: "description", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }] + }); + _context3.next = 3; + return queryRunner.createTable(roleTable, true); + + case 3: + return _context3.abrupt("return", _context3.sent); + + case 4: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "_addUser", + value: function _addUser(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var userTable; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + userTable = new typeorm_1.Table({ + name: "user", + columns: [{ + name: "id", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, + isGenerated: this._isServer(), + generationStrategy: "increment" + }, { + name: "createdAt", + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }, { + name: "updatedAt", + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE + }, { + name: "version", + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }, { + name: "deleted", + type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN + }, { + name: "username", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + isUnique: true + }, { + name: "email", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + isUnique: true + }, { + name: "password", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }, { + name: "activated", + type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN + }, { + name: "blocked", + type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN + }, { + name: "salt", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }] + }); + _context4.next = 3; + return queryRunner.createTable(userTable, true); + + case 3: + return _context4.abrupt("return", _context4.sent); + + case 4: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "_addRoleAccess", + value: function _addRoleAccess(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var roleAccessTable; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + roleAccessTable = new typeorm_1.Table({ + name: "roleAccess", + columns: [{ + name: "roleId", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }, { + name: "accessId", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }], + indices: [{ + name: "IDX_38300dd4683a436f8db90b42bd", + columnNames: ["roleId"] + }, { + name: "IDX_bd55fc382ad2480f75a17e33cb", + columnNames: ["accessId"] + }], + foreignKeys: [{ + name: "FK_38300dd4683a436f8db90b42bd9", + columnNames: ["roleId"], + referencedTableName: "role", + referencedColumnNames: ["id"], + onDelete: "cascade" + }, { + name: "FK_bd55fc382ad2480f75a17e33cb5", + columnNames: ["accessId"], + referencedTableName: "access", + referencedColumnNames: ["id"], + onDelete: "cascade" + }] + }); + _context5.next = 3; + return queryRunner.createTable(roleAccessTable, true); + + case 3: + return _context5.abrupt("return", _context5.sent); + + case 4: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); + } + }, { + key: "_addRoleChildren", + value: function _addRoleChildren(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var roleChildrenTable; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + roleChildrenTable = new typeorm_1.Table({ + name: "roleChildren", + columns: [{ + name: "childId", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }, { + name: "parentId", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }], + indices: [{ + name: "IDX_030234c342756c67cefa480687", + columnNames: ["childId"] + }, { + name: "IDX_35741f2d68a65c2765047705f8", + columnNames: ["parentId"] + }], + foreignKeys: [{ + name: "FK_roleChildren_childId", + columnNames: ["childId"], + referencedTableName: "role", + referencedColumnNames: ["id"], + onDelete: "cascade" + }, { + name: "FK_roleChildren_parentId", + columnNames: ["parentId"], + referencedTableName: "role", + referencedColumnNames: ["id"], + onDelete: "cascade" + }] + }); + _context6.next = 3; + return queryRunner.createTable(roleChildrenTable, true); + + case 3: + return _context6.abrupt("return", _context6.sent); + + case 4: + case "end": + return _context6.stop(); + } + } + }, _callee6); + })); + } + }, { + key: "_addUserRole", + value: function _addUserRole(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var userRoleTable; + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + userRoleTable = new typeorm_1.Table({ + name: "userRole", + columns: [{ + name: "userId", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }, { + name: "roleId", + isPrimary: true, + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }], + indices: [{ + name: "IDX_userRole_userId", + columnNames: ["userId"] + }, { + name: "IDX_userRole_roleId", + columnNames: ["roleId"] + }], + foreignKeys: [{ + name: "FK_userRole_userId", + columnNames: ["userId"], + referencedTableName: "user", + referencedColumnNames: ["id"], + onDelete: "cascade" + }, { + name: "FK_userRole_roleId", + columnNames: ["roleId"], + referencedTableName: "role", + referencedColumnNames: ["id"], + onDelete: "cascade" + }] + }); + _context7.next = 3; + return queryRunner.createTable(userRoleTable, true); + + case 3: + return _context7.abrupt("return", _context7.sent); + + case 4: + case "end": + return _context7.stop(); + } + } + }, _callee7); + })); + } + }, { + key: "_addUserAccess", + value: function _addUserAccess(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var userRoleTable; + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + userRoleTable = new typeorm_1.Table({ + name: "user_access", + columns: [{ + name: "id", + isPrimary: true, + isGenerated: this._isServer(), + generationStrategy: "increment", + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER + }, { + name: "userId", + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, + isNullable: true + }, { + name: "accessId", + type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, + isNullable: true + }], + indices: [{ + name: "IDX_userAccess_userId", + columnNames: ["userId"] + }, { + name: "IDX_userAccess_accessId", + columnNames: ["accessId"] + }], + foreignKeys: [{ + name: "FK_userAccess_userId", + columnNames: ["userId"], + referencedTableName: "user", + referencedColumnNames: ["id"], + onDelete: "cascade" + }, { + name: "FK_userAccess_accessId", + columnNames: ["accessId"], + referencedTableName: "access", + referencedColumnNames: ["id"], + onDelete: "cascade" + }] + }); + _context8.next = 3; + return queryRunner.createTable(userRoleTable, true); + + case 3: + return _context8.abrupt("return", _context8.sent); + + case 4: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "down", + value: function down(queryRunner) { + return undefined; + } + }]); + + return SetupUserManagement1000000001000; +}(); + +exports.SetupUserManagement1000000001000 = SetupUserManagement1000000001000; + +/***/ }), +/* 213 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__(28) && !__webpack_require__(12)(function () { + return Object.defineProperty(__webpack_require__(164)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 214 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(11); +var core = __webpack_require__(26); +var LIBRARY = __webpack_require__(88); +var wksExt = __webpack_require__(165); +var defineProperty = __webpack_require__(29).f; +module.exports = function (name) { + var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); + if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); +}; + + +/***/ }), +/* 215 */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(51); +var toIObject = __webpack_require__(53); +var arrayIndexOf = __webpack_require__(135)(false); +var IE_PROTO = __webpack_require__(166)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), +/* 216 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(29); +var anObject = __webpack_require__(13); +var getKeys = __webpack_require__(89); + +module.exports = __webpack_require__(28) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + + +/***/ }), +/* 217 */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = __webpack_require__(53); +var gOPN = __webpack_require__(92).f; +var toString = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return gOPN(it); + } catch (e) { + return windowNames.slice(); + } +}; + +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); +}; + + +/***/ }), +/* 218 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 19.1.2.1 Object.assign(target, source, ...) +var DESCRIPTORS = __webpack_require__(28); +var getKeys = __webpack_require__(89); +var gOPS = __webpack_require__(136); +var pIE = __webpack_require__(123); +var toObject = __webpack_require__(36); +var IObject = __webpack_require__(122); +var $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || __webpack_require__(12)(function () { + var A = {}; + var B = {}; + // eslint-disable-next-line no-undef + var S = Symbol(); + var K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function (k) { B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars + var T = toObject(target); + var aLen = arguments.length; + var index = 1; + var getSymbols = gOPS.f; + var isEnum = pIE.f; + while (aLen > index) { + var S = IObject(arguments[index++]); + var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key]; + } + } return T; +} : $assign; + + +/***/ }), +/* 219 */ +/***/ (function(module, exports) { + +// 7.2.9 SameValue(x, y) +module.exports = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; +}; + + +/***/ }), +/* 220 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var aFunction = __webpack_require__(63); +var isObject = __webpack_require__(14); +var invoke = __webpack_require__(221); +var arraySlice = [].slice; +var factories = {}; + +var construct = function (F, len, args) { + if (!(len in factories)) { + for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']'; + // eslint-disable-next-line no-new-func + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } return factories[len](F, args); +}; + +module.exports = Function.bind || function bind(that /* , ...args */) { + var fn = aFunction(this); + var partArgs = arraySlice.call(arguments, 1); + var bound = function (/* args... */) { + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); + }; + if (isObject(fn.prototype)) bound.prototype = fn.prototype; + return bound; +}; + + +/***/ }), +/* 221 */ +/***/ (function(module, exports) { + +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function (fn, args, that) { + var un = that === undefined; + switch (args.length) { + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; + + +/***/ }), +/* 222 */ +/***/ (function(module, exports, __webpack_require__) { + +var $parseInt = __webpack_require__(11).parseInt; +var $trim = __webpack_require__(104).trim; +var ws = __webpack_require__(170); +var hex = /^[-+]?0[xX]/; + +module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) { + var string = $trim(String(str), 3); + return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10)); +} : $parseInt; + + +/***/ }), +/* 223 */ +/***/ (function(module, exports, __webpack_require__) { + +var $parseFloat = __webpack_require__(11).parseFloat; +var $trim = __webpack_require__(104).trim; + +module.exports = 1 / $parseFloat(__webpack_require__(170) + '-0') !== -Infinity ? function parseFloat(str) { + var string = $trim(String(str), 3); + var result = $parseFloat(string); + return result === 0 && string.charAt(0) == '-' ? -0 : result; +} : $parseFloat; + + +/***/ }), +/* 224 */ +/***/ (function(module, exports, __webpack_require__) { + +var cof = __webpack_require__(75); +module.exports = function (it, msg) { + if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg); + return +it; +}; + + +/***/ }), +/* 225 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.3 Number.isInteger(number) +var isObject = __webpack_require__(14); +var floor = Math.floor; +module.exports = function isInteger(it) { + return !isObject(it) && isFinite(it) && floor(it) === it; +}; + + +/***/ }), +/* 226 */ +/***/ (function(module, exports) { + +// 20.2.2.20 Math.log1p(x) +module.exports = Math.log1p || function log1p(x) { + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); +}; + + +/***/ }), +/* 227 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var create = __webpack_require__(91); +var descriptor = __webpack_require__(86); +var setToStringTag = __webpack_require__(103); +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__webpack_require__(52)(IteratorPrototype, __webpack_require__(18)('iterator'), function () { return this; }); + +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + + +/***/ }), +/* 228 */ +/***/ (function(module, exports, __webpack_require__) { + +// call something on iterator step with safe closing on error +var anObject = __webpack_require__(13); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; + + +/***/ }), +/* 229 */ +/***/ (function(module, exports, __webpack_require__) { + +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = __webpack_require__(383); + +module.exports = function (original, length) { + return new (speciesConstructor(original))(length); +}; + + +/***/ }), +/* 230 */ +/***/ (function(module, exports, __webpack_require__) { + +var aFunction = __webpack_require__(63); +var toObject = __webpack_require__(36); +var IObject = __webpack_require__(122); +var toLength = __webpack_require__(23); + +module.exports = function (that, callbackfn, aLen, memo, isRight) { + aFunction(callbackfn); + var O = toObject(that); + var self = IObject(O); + var length = toLength(O.length); + var index = isRight ? length - 1 : 0; + var i = isRight ? -1 : 1; + if (aLen < 2) for (;;) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (isRight ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; +}; + + +/***/ }), +/* 231 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) + +var toObject = __webpack_require__(36); +var toAbsoluteIndex = __webpack_require__(90); +var toLength = __webpack_require__(23); + +module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = toLength(O.length); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; + + +/***/ }), +/* 232 */ +/***/ (function(module, exports) { + +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; + + +/***/ }), +/* 233 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var regexpExec = __webpack_require__(185); +__webpack_require__(3)({ + target: 'RegExp', + proto: true, + forced: regexpExec !== /./.exec +}, { + exec: regexpExec +}); + + +/***/ }), +/* 234 */ +/***/ (function(module, exports, __webpack_require__) { + +// 21.2.5.3 get RegExp.prototype.flags() +if (__webpack_require__(28) && /./g.flags != 'g') __webpack_require__(29).f(RegExp.prototype, 'flags', { + configurable: true, + get: __webpack_require__(139) +}); + + +/***/ }), +/* 235 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(88); +var global = __webpack_require__(11); +var ctx = __webpack_require__(62); +var classof = __webpack_require__(124); +var $export = __webpack_require__(3); +var isObject = __webpack_require__(14); +var aFunction = __webpack_require__(63); +var anInstance = __webpack_require__(107); +var forOf = __webpack_require__(142); +var speciesConstructor = __webpack_require__(125); +var task = __webpack_require__(187).set; +var microtask = __webpack_require__(403)(); +var newPromiseCapabilityModule = __webpack_require__(236); +var perform = __webpack_require__(404); +var userAgent = __webpack_require__(143); +var promiseResolve = __webpack_require__(237); +var PROMISE = 'Promise'; +var TypeError = global.TypeError; +var process = global.process; +var versions = process && process.versions; +var v8 = versions && versions.v8 || ''; +var $Promise = global[PROMISE]; +var isNode = classof(process) == 'process'; +var empty = function () { /* empty */ }; +var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; +var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; + +var USE_NATIVE = !!function () { + try { + // correct subclassing with @@species support + var promise = $Promise.resolve(1); + var FakePromise = (promise.constructor = {})[__webpack_require__(18)('species')] = function (exec) { + exec(empty, empty); + }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return (isNode || typeof PromiseRejectionEvent == 'function') + && promise.then(empty) instanceof FakePromise + // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // we can't detect it synchronously, so just check versions + && v8.indexOf('6.6') !== 0 + && userAgent.indexOf('Chrome/66') === -1; + } catch (e) { /* empty */ } +}(); + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; +var notify = function (promise, isReject) { + if (promise._n) return; + promise._n = true; + var chain = promise._c; + microtask(function () { + var value = promise._v; + var ok = promise._s == 1; + var i = 0; + var run = function (reaction) { + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (promise._h == 2) onHandleUnhandled(promise); + promise._h = 1; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // may throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (e) { + if (domain && !exited) domain.exit(); + reject(e); + } + }; + while (chain.length > i) run(chain[i++]); // variable length - can't use forEach + promise._c = []; + promise._n = false; + if (isReject && !promise._h) onUnhandled(promise); + }); +}; +var onUnhandled = function (promise) { + task.call(global, function () { + var value = promise._v; + var unhandled = isUnhandled(promise); + var result, handler, console; + if (unhandled) { + result = perform(function () { + if (isNode) { + process.emit('unhandledRejection', value, promise); + } else if (handler = global.onunhandledrejection) { + handler({ promise: promise, reason: value }); + } else if ((console = global.console) && console.error) { + console.error('Unhandled promise rejection', value); + } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + promise._h = isNode || isUnhandled(promise) ? 2 : 1; + } promise._a = undefined; + if (unhandled && result.e) throw result.v; + }); +}; +var isUnhandled = function (promise) { + return promise._h !== 1 && (promise._a || promise._c).length === 0; +}; +var onHandleUnhandled = function (promise) { + task.call(global, function () { + var handler; + if (isNode) { + process.emit('rejectionHandled', promise); + } else if (handler = global.onrejectionhandled) { + handler({ promise: promise, reason: promise._v }); + } + }); +}; +var $reject = function (value) { + var promise = this; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + promise._v = value; + promise._s = 2; + if (!promise._a) promise._a = promise._c.slice(); + notify(promise, true); +}; +var $resolve = function (value) { + var promise = this; + var then; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + try { + if (promise === value) throw TypeError("Promise can't be resolved itself"); + if (then = isThenable(value)) { + microtask(function () { + var wrapper = { _w: promise, _d: false }; // wrap + try { + then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); + } catch (e) { + $reject.call(wrapper, e); + } + }); + } else { + promise._v = value; + promise._s = 1; + notify(promise, false); + } + } catch (e) { + $reject.call({ _w: promise, _d: false }, e); // wrap + } +}; + +// constructor polyfill +if (!USE_NATIVE) { + // 25.4.3.1 Promise(executor) + $Promise = function Promise(executor) { + anInstance(this, $Promise, PROMISE, '_h'); + aFunction(executor); + Internal.call(this); + try { + executor(ctx($resolve, this, 1), ctx($reject, this, 1)); + } catch (err) { + $reject.call(this, err); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + this._c = []; // <- awaiting reactions + this._a = undefined; // <- checked in isUnhandled reactions + this._s = 0; // <- state + this._d = false; // <- done + this._v = undefined; // <- value + this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled + this._n = false; // <- notify + }; + Internal.prototype = __webpack_require__(108)($Promise.prototype, { + // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) + then: function then(onFulfilled, onRejected) { + var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = isNode ? process.domain : undefined; + this._c.push(reaction); + if (this._a) this._a.push(reaction); + if (this._s) notify(this, false); + return reaction.promise; + }, + // 25.4.5.1 Promise.prototype.catch(onRejected) + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + this.promise = promise; + this.resolve = ctx($resolve, promise, 1); + this.reject = ctx($reject, promise, 1); + }; + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === $Promise || C === Wrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); +__webpack_require__(103)($Promise, PROMISE); +__webpack_require__(106)(PROMISE); +Wrapper = __webpack_require__(26)[PROMISE]; + +// statics +$export($export.S + $export.F * !USE_NATIVE, PROMISE, { + // 25.4.4.5 Promise.reject(r) + reject: function reject(r) { + var capability = newPromiseCapability(this); + var $$reject = capability.reject; + $$reject(r); + return capability.promise; + } +}); +$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { + // 25.4.4.6 Promise.resolve(x) + resolve: function resolve(x) { + return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); + } +}); +$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(138)(function (iter) { + $Promise.all(iter)['catch'](empty); +})), PROMISE, { + // 25.4.4.1 Promise.all(iterable) + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var values = []; + var index = 0; + var remaining = 1; + forOf(iterable, false, function (promise) { + var $index = index++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + C.resolve(promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[$index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.e) reject(result.v); + return capability.promise; + }, + // 25.4.4.4 Promise.race(iterable) + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = perform(function () { + forOf(iterable, false, function (promise) { + C.resolve(promise).then(capability.resolve, reject); + }); + }); + if (result.e) reject(result.v); + return capability.promise; + } +}); + + +/***/ }), +/* 236 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 25.4.1.5 NewPromiseCapability(C) +var aFunction = __webpack_require__(63); + +function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +} + +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + + +/***/ }), +/* 237 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(13); +var isObject = __webpack_require__(14); +var newPromiseCapability = __webpack_require__(236); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + + +/***/ }), +/* 238 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var dP = __webpack_require__(29).f; +var create = __webpack_require__(91); +var redefineAll = __webpack_require__(108); +var ctx = __webpack_require__(62); +var anInstance = __webpack_require__(107); +var forOf = __webpack_require__(142); +var $iterDefine = __webpack_require__(176); +var step = __webpack_require__(232); +var setSpecies = __webpack_require__(106); +var DESCRIPTORS = __webpack_require__(28); +var fastKey = __webpack_require__(83).fastKey; +var validate = __webpack_require__(95); +var SIZE = DESCRIPTORS ? '_s' : 'size'; + +var getEntry = function (that, key) { + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return that._i[index]; + // frozen object case + for (entry = that._f; entry; entry = entry.n) { + if (entry.k == key) return entry; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = create(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear() { + for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { + entry.r = true; + if (entry.p) entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function (key) { + var that = validate(this, NAME); + var entry = getEntry(that, key); + if (entry) { + var next = entry.n; + var prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if (prev) prev.n = next; + if (next) next.p = prev; + if (that._f == entry) that._f = next; + if (that._l == entry) that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /* , that = undefined */) { + validate(this, NAME); + var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var entry; + while (entry = entry ? entry.n : this._f) { + f(entry.v, entry.k, this); + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key) { + return !!getEntry(validate(this, NAME), key); + } + }); + if (DESCRIPTORS) dP(C.prototype, 'size', { + get: function () { + return validate(this, NAME)[SIZE]; + } + }); + return C; + }, + def: function (that, key, value) { + var entry = getEntry(that, key); + var prev, index; + // change existing entry + if (entry) { + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if (!that._f) that._f = entry; + if (prev) prev.n = entry; + that[SIZE]++; + // add to index + if (index !== 'F') that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function (C, NAME, IS_MAP) { + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + $iterDefine(C, NAME, function (iterated, kind) { + this._t = validate(iterated, NAME); // target + this._k = kind; // kind + this._l = undefined; // previous + }, function () { + var that = this; + var kind = that._k; + var entry = that._l; + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + // get next entry + if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { + // or finish the iteration + that._t = undefined; + return step(1); + } + // return step by kind + if (kind == 'keys') return step(0, entry.k); + if (kind == 'values') return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(NAME); + } +}; + + +/***/ }), +/* 239 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var redefineAll = __webpack_require__(108); +var getWeak = __webpack_require__(83).getWeak; +var anObject = __webpack_require__(13); +var isObject = __webpack_require__(14); +var anInstance = __webpack_require__(107); +var forOf = __webpack_require__(142); +var createArrayMethod = __webpack_require__(67); +var $has = __webpack_require__(51); +var validate = __webpack_require__(95); +var arrayFind = createArrayMethod(5); +var arrayFindIndex = createArrayMethod(6); +var id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function (that) { + return that._l || (that._l = new UncaughtFrozenStore()); +}; +var UncaughtFrozenStore = function () { + this.a = []; +}; +var findUncaughtFrozen = function (store, key) { + return arrayFind(store.a, function (it) { + return it[0] === key; + }); +}; +UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function (key) { + var index = arrayFindIndex(this.a, function (it) { + return it[0] === key; + }); + if (~index) this.a.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = id++; // collection id + that._l = undefined; // leak store for uncaught frozen objects + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function (key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); + return data && $has(data, this._i) && delete data[this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); + return data && $has(data, this._i); + } + }); + return C; + }, + def: function (that, key, value) { + var data = getWeak(anObject(key), true); + if (data === true) uncaughtFrozenStore(that).set(key, value); + else data[that._i] = value; + return that; + }, + ufstore: uncaughtFrozenStore +}; + + +/***/ }), +/* 240 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://tc39.github.io/ecma262/#sec-toindex +var toInteger = __webpack_require__(64); +var toLength = __webpack_require__(23); +module.exports = function (it) { + if (it === undefined) return 0; + var number = toInteger(it); + var length = toLength(number); + if (number !== length) throw RangeError('Wrong length!'); + return length; +}; + + +/***/ }), +/* 241 */ +/***/ (function(module, exports, __webpack_require__) { + +// all object keys, includes non-enumerable and symbols +var gOPN = __webpack_require__(92); +var gOPS = __webpack_require__(136); +var anObject = __webpack_require__(13); +var Reflect = __webpack_require__(11).Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = gOPN.f(anObject(it)); + var getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; + + +/***/ }), +/* 242 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://github.com/tc39/proposal-string-pad-start-end +var toLength = __webpack_require__(23); +var repeat = __webpack_require__(172); +var defined = __webpack_require__(76); + +module.exports = function (that, maxLength, fillString, left) { + var S = String(defined(that)); + var stringLength = S.length; + var fillStr = fillString === undefined ? ' ' : String(fillString); + var intMaxLength = toLength(maxLength); + if (intMaxLength <= stringLength || fillStr == '') return S; + var fillLen = intMaxLength - stringLength; + var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); + if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); + return left ? stringFiller + S : S + stringFiller; +}; + + +/***/ }), +/* 243 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(28); +var getKeys = __webpack_require__(89); +var toIObject = __webpack_require__(53); +var isEnum = __webpack_require__(123).f; +module.exports = function (isEntries) { + return function (it) { + var O = toIObject(it); + var keys = getKeys(O); + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) { + key = keys[i++]; + if (!DESCRIPTORS || isEnum.call(O, key)) { + result.push(isEntries ? [key, O[key]] : O[key]); + } + } + return result; + }; +}; + + +/***/ }), +/* 244 */ +/***/ (function(module, exports) { + +var core = module.exports = { version: '2.6.12' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + + +/***/ }), +/* 245 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + + +/***/ }), +/* 246 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Translator = void 0; + +var shared_1 = __webpack_require__(22); +/** + * Singleton-Klasse zum Übersetzen von Text-Inhalten + */ + + +var Translator = /*#__PURE__*/function () { + /** + * Erstellt einen neuen Translator + * @param config + */ + function Translator() { + var _this = this; + + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + translations: {}, + fallbackLanguage: "en", + markUntranslatedTranslations: true, + markTranslations: false, + logMissingTranslations: true + }; + + _classCallCheck(this, Translator); + + this._dynamicKey = 0; + this._translations = {}; + this.addDynamicTranslations(Translator._translations); + this.addDynamicTranslations(config.translations); + this._fallbackLanguage = config.fallbackLanguage; + this._markUntranslatedTranslations = config.markUntranslatedTranslations; + this._markTranslations = config.markTranslations; + + if (config.logMissingTranslations === true) { + this._logMissingTranslationsFunction = function (missingTranslation, language) { + if (language === _this._fallbackLanguage) { + console.error("missing base translation for key " + missingTranslation); + } else { + console.warn("missing translation for language >" + language + "< and key >" + missingTranslation + "<"); + } + }; + } else if (typeof config.logMissingTranslations === "function") { + this._logMissingTranslationsFunction = config.logMissingTranslations; + } else { + this._logMissingTranslationsFunction = null; + } + + this._translationCallbacks = new Map(); + this._lastTranslationCallbackId = 0; + } + + _createClass(Translator, [{ + key: "createDynamicKey", + value: function createDynamicKey() { + this._dynamicKey++; + return "translator-dynamic-" + new Date().getTime() + "-" + this._dynamicKey; + } + /** + * Übersetzt sofort einen Key in die aktuelle Sprache + * @param key + * @param args + * @param language + * @returns {*} + */ + + }, { + key: "translate", + value: function translate(key, args, language) { + if (shared_1.Helper.isNull(key)) { + return ""; + } + + language = shared_1.Helper.nonNull(language, args, this._fallbackLanguage); + var translation = null; + key = key.toLowerCase(); + + if (shared_1.Helper.isNotNull(this._translations[language]) && shared_1.Helper.isNotNull(this._translations[language][key])) { + translation = this._translations[language][key]; + } + + if (!Translator._isValid(translation)) { + if (this._logMissingTranslationsFunction !== null) { + this._logMissingTranslationsFunction(key, language); + } + + if (this._translations[this._fallbackLanguage]) { + translation = this._translations[this._fallbackLanguage][key]; + } + + if (!Translator._isValid(translation)) { + if (this._logMissingTranslationsFunction !== null) { + this._logMissingTranslationsFunction(key, language); + } + + translation = key; + } + + if (this._markUntranslatedTranslations) { + translation = ">>" + translation + "<<"; + } + } + + if (this._markTranslations) { + translation = "$" + translation + "$"; + } + + if (args !== undefined) { + translation = Translator._format(translation, args); + } + + return translation; + } + /** + * Fügt neue Übersetzungen hinzu + * @param trans + */ + + }, { + key: "addDynamicTranslations", + value: function addDynamicTranslations(trans) { + for (var lang in trans) { + if (!this._translations[lang]) { + this._translations[lang] = {}; + } + + for (var key in trans[lang]) { + this._translations[lang][key.toLowerCase()] = trans[lang][key]; + } + } + } + }, { + key: "getLanguages", + value: function getLanguages() { + return Object.keys(this._translations); + } + }, { + key: "getFallbackLanguage", + value: function getFallbackLanguage() { + return this._fallbackLanguage; + } + }], [{ + key: "translate", + value: function translate(key, args, language) { + var instance = Translator.getInstance(); + + if (instance) { + return instance.translate(key, args, language); + } + + return ""; + } + }, { + key: "addDynamicTranslations", + value: function addDynamicTranslations(trans) { + var instance = Translator.getInstance(); + + if (instance) { + return instance.addDynamicTranslations(trans); + } else { + Object.keys(trans).forEach(function (lang) { + if (shared_1.Helper.isNull(Translator._translations[lang])) { + Translator._translations[lang] = {}; + } + + Object.assign(Translator._translations[lang], trans[lang]); + }); + } + } + }, { + key: "init", + value: function init(config) { + Translator.instance = new Translator(config); + } + /** + * @returns {Translator|null} + */ + + }, { + key: "getInstance", + value: function getInstance() { + return Translator.instance; + } + }, { + key: "_isValid", + value: function _isValid(translation) { + return typeof translation === "string"; + } + }, { + key: "_format", + value: function _format(translation, args) { + return translation.replace(/{(\d+)}/g, function (match, number) { + return args[number] !== undefined ? args[number] : match; + }); + } + }]); + + return Translator; +}(); + +exports.Translator = Translator; +Translator._translations = {}; +Translator.instance = null; + +/***/ }), +/* 247 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 248 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = __webpack_require__(109) +var Hash = __webpack_require__(110) +var Buffer = __webpack_require__(96).Buffer + +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] + +var W = new Array(64) + +function Sha256 () { + this.init() + + this._w = W // new Array(64) + + Hash.call(this, 64, 56) +} + +inherits(Sha256, Hash) + +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 + + return this +} + +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} + +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} + +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} + +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} + +Sha256.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 + + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 +} + +Sha256.prototype._hash = function () { + var H = Buffer.allocUnsafe(32) + + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) + + return H +} + +module.exports = Sha256 + + +/***/ }), +/* 249 */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(109) +var Hash = __webpack_require__(110) +var Buffer = __webpack_require__(96).Buffer + +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] + +var W = new Array(160) + +function Sha512 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha512, Hash) + +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 + + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 + + return this +} + +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} + +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} + +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} + +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} + +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} + +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} + +Sha512.prototype._update = function (M) { + var W = this._w + + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 + + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) + + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] + + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] + + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + + W[i] = Wih + W[i + 1] = Wil + } + + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] + + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) + + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) + + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] + + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) + + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 + + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 + } + + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 + + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 +} + +Sha512.prototype._hash = function () { + var H = Buffer.allocUnsafe(64) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) + + return H +} + +module.exports = Sha512 + + +/***/ }), +/* 250 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SimpleFourWordsLevel10_3\", function() { return SimpleFourWordsLevel10_3; });\n/* harmony import */ var _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SimpleFourWordsLevel */ \"./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js\");\n\n\nclass SimpleFourWordsLevel10_3 extends _SimpleFourWordsLevel__WEBPACK_IMPORTED_MODULE_0__[\"SimpleFourWordsLevel\"]{\n constructor(templateContainer) {\n super(templateContainer, 10, 3);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_3.js?"); +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SoftDeleteQueryBuilder", function() { return SoftDeleteQueryBuilder; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _QueryBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(40); +/* harmony import */ var _result_UpdateResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(115); +/* harmony import */ var _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(72); +/* harmony import */ var _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(120); +/* harmony import */ var _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41); +/* harmony import */ var _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8); +/* harmony import */ var _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(16); +/* harmony import */ var _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(116); +/* harmony import */ var _error_MissingDeleteDateColumnError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(158); +/* harmony import */ var _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(100); +/* harmony import */ var _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(74); + + + + + + + + + + + + + + + + + +/** + * Allows to build complex sql queries in a fashion way and execute those queries. + */ +var SoftDeleteQueryBuilder = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(SoftDeleteQueryBuilder, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function SoftDeleteQueryBuilder(connectionOrQueryBuilder, queryRunner) { + var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this; + _this.expressionMap.aliasNamePrefixingEnabled = false; + return _this; + } + // ------------------------------------------------------------------------- + // Public Implemented Methods + // ------------------------------------------------------------------------- + /** + * Gets generated sql query without parameters being replaced. + */ + SoftDeleteQueryBuilder.prototype.getQuery = function () { + var sql = this.createUpdateExpression(); + sql += this.createOrderByExpression(); + sql += this.createLimitExpression(); + return sql.trim(); + }; + /** + * Executes sql generated by query builder and returns raw database results. + */ + SoftDeleteQueryBuilder.prototype.execute = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var queryRunner, transactionStartedByUs, broadcastResult, returningResultsEntityUpdator, _a, sql, parameters, updateResult, result, driver, broadcastResult, error_1, rollbackError_1; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_b) { + switch (_b.label) { + case 0: + queryRunner = this.obtainQueryRunner(); + transactionStartedByUs = false; + _b.label = 1; + case 1: + _b.trys.push([1, 13, 18, 23]); + if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3]; + return [4 /*yield*/, queryRunner.startTransaction()]; + case 2: + _b.sent(); + transactionStartedByUs = true; + _b.label = 3; + case 3: + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5]; + broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[/* BroadcasterResult */ "a"](); + queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata); + if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5]; + return [4 /*yield*/, Promise.all(broadcastResult.promises)]; + case 4: + _b.sent(); + _b.label = 5; + case 5: + returningResultsEntityUpdator = new _ReturningResultsEntityUpdator__WEBPACK_IMPORTED_MODULE_5__[/* ReturningResultsEntityUpdator */ "a"](queryRunner, this.expressionMap); + if (this.expressionMap.updateEntity === true && + this.expressionMap.mainAlias.hasMetadata && + this.expressionMap.whereEntities.length > 0) { + this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns(); + } + _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1]; + updateResult = new _result_UpdateResult__WEBPACK_IMPORTED_MODULE_3__[/* UpdateResult */ "a"](); + return [4 /*yield*/, queryRunner.query(sql, parameters)]; + case 6: + result = _b.sent(); + driver = queryRunner.connection.driver; + if (driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"]) { + updateResult.raw = result[0]; + updateResult.affected = result[1]; + } + else { + updateResult.raw = result; + } + if (!(this.expressionMap.updateEntity === true && + this.expressionMap.mainAlias.hasMetadata && + this.expressionMap.whereEntities.length > 0)) return [3 /*break*/, 8]; + return [4 /*yield*/, returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities)]; + case 7: + _b.sent(); + _b.label = 8; + case 8: + if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10]; + broadcastResult = new _subscriber_BroadcasterResult__WEBPACK_IMPORTED_MODULE_7__[/* BroadcasterResult */ "a"](); + queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata); + if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10]; + return [4 /*yield*/, Promise.all(broadcastResult.promises)]; + case 9: + _b.sent(); + _b.label = 10; + case 10: + if (!transactionStartedByUs) return [3 /*break*/, 12]; + return [4 /*yield*/, queryRunner.commitTransaction()]; + case 11: + _b.sent(); + _b.label = 12; + case 12: return [2 /*return*/, updateResult]; + case 13: + error_1 = _b.sent(); + if (!transactionStartedByUs) return [3 /*break*/, 17]; + _b.label = 14; + case 14: + _b.trys.push([14, 16, , 17]); + return [4 /*yield*/, queryRunner.rollbackTransaction()]; + case 15: + _b.sent(); + return [3 /*break*/, 17]; + case 16: + rollbackError_1 = _b.sent(); + return [3 /*break*/, 17]; + case 17: throw error_1; + case 18: + if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20]; + return [4 /*yield*/, queryRunner.release()]; + case 19: + _b.sent(); + _b.label = 20; + case 20: + if (!(this.connection.driver instanceof _driver_sqljs_SqljsDriver__WEBPACK_IMPORTED_MODULE_6__[/* SqljsDriver */ "a"] && !queryRunner.isTransactionActive)) return [3 /*break*/, 22]; + return [4 /*yield*/, this.connection.driver.autoSave()]; + case 21: + _b.sent(); + _b.label = 22; + case 22: return [7 /*endfinally*/]; + case 23: return [2 /*return*/]; + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Specifies FROM which entity's table select/update/delete/soft-delete will be executed. + * Also sets a main string alias of the selection data. + */ + SoftDeleteQueryBuilder.prototype.from = function (entityTarget, aliasName) { + entityTarget = entityTarget instanceof _entity_schema_EntitySchema__WEBPACK_IMPORTED_MODULE_12__[/* EntitySchema */ "a"] ? entityTarget.options.name : entityTarget; + var mainAlias = this.createFromAlias(entityTarget, aliasName); + this.expressionMap.setMainAlias(mainAlias); + return this; + }; + /** + * Sets WHERE condition in the query builder. + * If you had previously WHERE expression defined, + * calling this function will override previously set WHERE conditions. + * Additionally you can add parameters used in where expression. + */ + SoftDeleteQueryBuilder.prototype.where = function (where, parameters) { + this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions + var condition = this.computeWhereParameter(where); + if (condition) + this.expressionMap.wheres = [{ type: "simple", condition: condition }]; + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + SoftDeleteQueryBuilder.prototype.andWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "and", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new OR WHERE condition in the query builder. + * Additionally you can add parameters used in where expression. + */ + SoftDeleteQueryBuilder.prototype.orWhere = function (where, parameters) { + this.expressionMap.wheres.push({ type: "or", condition: this.computeWhereParameter(where) }); + if (parameters) + this.setParameters(parameters); + return this; + }; + /** + * Adds new AND WHERE with conditions for the given ids. + */ + SoftDeleteQueryBuilder.prototype.whereInIds = function (ids) { + return this.where(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new AND WHERE with conditions for the given ids. + */ + SoftDeleteQueryBuilder.prototype.andWhereInIds = function (ids) { + return this.andWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Adds new OR WHERE with conditions for the given ids. + */ + SoftDeleteQueryBuilder.prototype.orWhereInIds = function (ids) { + return this.orWhere(this.createWhereIdsExpression(ids)); + }; + /** + * Optional returning/output clause. + */ + SoftDeleteQueryBuilder.prototype.output = function (output) { + return this.returning(output); + }; + /** + * Optional returning/output clause. + */ + SoftDeleteQueryBuilder.prototype.returning = function (returning) { + // not all databases support returning/output cause + if (!this.connection.driver.isReturningSqlSupported()) + throw new _error_ReturningStatementNotSupportedError__WEBPACK_IMPORTED_MODULE_4__[/* ReturningStatementNotSupportedError */ "a"](); + this.expressionMap.returning = returning; + return this; + }; + /** + * Sets ORDER BY condition in the query builder. + * If you had previously ORDER BY expression defined, + * calling this function will override previously set ORDER BY conditions. + */ + SoftDeleteQueryBuilder.prototype.orderBy = function (sort, order, nulls) { + var _a, _b; + if (order === void 0) { order = "ASC"; } + if (sort) { + if (sort instanceof Object) { + this.expressionMap.orderBys = sort; + } + else { + if (nulls) { + this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a); + } + else { + this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b); + } + } + } + else { + this.expressionMap.orderBys = {}; + } + return this; + }; + /** + * Adds ORDER BY condition in the query builder. + */ + SoftDeleteQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) { + if (order === void 0) { order = "ASC"; } + if (nulls) { + this.expressionMap.orderBys[sort] = { order: order, nulls: nulls }; + } + else { + this.expressionMap.orderBys[sort] = order; + } + return this; + }; + /** + * Sets LIMIT - maximum number of rows to be selected. + */ + SoftDeleteQueryBuilder.prototype.limit = function (limit) { + this.expressionMap.limit = limit; + return this; + }; + /** + * Indicates if entity must be updated after update operation. + * This may produce extra query or use RETURNING / OUTPUT statement (depend on database). + * Enabled by default. + */ + SoftDeleteQueryBuilder.prototype.whereEntity = function (entity) { + var _this = this; + if (!this.expressionMap.mainAlias.hasMetadata) + throw new Error(".whereEntity method can only be used on queries which update real entity table."); + this.expressionMap.wheres = []; + var entities = Array.isArray(entity) ? entity : [entity]; + entities.forEach(function (entity) { + var entityIdMap = _this.expressionMap.mainAlias.metadata.getEntityIdMap(entity); + if (!entityIdMap) + throw new Error("Provided entity does not have ids set, cannot perform operation."); + _this.orWhereInIds(entityIdMap); + }); + this.expressionMap.whereEntities = entities; + return this; + }; + /** + * Indicates if entity must be updated after update operation. + * This may produce extra query or use RETURNING / OUTPUT statement (depend on database). + * Enabled by default. + */ + SoftDeleteQueryBuilder.prototype.updateEntity = function (enabled) { + this.expressionMap.updateEntity = enabled; + return this; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates UPDATE express used to perform insert query. + */ + SoftDeleteQueryBuilder.prototype.createUpdateExpression = function () { + var metadata = this.expressionMap.mainAlias.hasMetadata ? this.expressionMap.mainAlias.metadata : undefined; + if (!metadata) + throw new Error("Cannot get entity metadata for the given alias \"" + this.expressionMap.mainAlias + "\""); + if (!metadata.deleteDateColumn) { + throw new _error_MissingDeleteDateColumnError__WEBPACK_IMPORTED_MODULE_10__[/* MissingDeleteDateColumnError */ "a"](metadata); + } + // prepare columns and values to be updated + var updateColumnAndValues = []; + var newParameters = {}; + switch (this.expressionMap.queryType) { + case "soft-delete": + updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + " = CURRENT_TIMESTAMP"); + break; + case "restore": + updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + " = NULL"); + break; + default: + throw new Error("The queryType must be \"soft-delete\" or \"restore\""); + } + if (metadata.versionColumn) + updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + " = " + this.escape(metadata.versionColumn.databaseName) + " + 1"); + if (metadata.updateDateColumn) + updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + " = CURRENT_TIMESTAMP"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can "DEFAULT" be used?! + if (updateColumnAndValues.length <= 0) { + throw new _error_UpdateValuesMissingError__WEBPACK_IMPORTED_MODULE_11__[/* UpdateValuesMissingError */ "a"](); + } + // we re-write parameters this way because we want our "UPDATE ... SET" parameters to be first in the list of "nativeParameters" + // because some drivers like mysql depend on order of parameters + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"] || + this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || + this.connection.driver instanceof _driver_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_8__[/* AbstractSqliteDriver */ "a"]) { + this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters); + } + // get a table name and all column database names + var whereExpression = this.createWhereExpression(); + var returningExpression = this.createReturningExpression(); + // generate and return sql update query + if (returningExpression && (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* PostgresDriver */ "k"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* OracleDriver */ "j"] || this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* CockroachDriver */ "d"])) { + return "UPDATE " + this.getTableName(this.getMainTableName()) + " SET " + updateColumnAndValues.join(", ") + whereExpression + " RETURNING " + returningExpression; + } + else if (returningExpression && this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* SqlServerDriver */ "m"]) { + return "UPDATE " + this.getTableName(this.getMainTableName()) + " SET " + updateColumnAndValues.join(", ") + " OUTPUT " + returningExpression + whereExpression; + } + else { + return "UPDATE " + this.getTableName(this.getMainTableName()) + " SET " + updateColumnAndValues.join(", ") + whereExpression; // todo: how do we replace aliases in where to nothing? + } + }; + /** + * Creates "ORDER BY" part of SQL query. + */ + SoftDeleteQueryBuilder.prototype.createOrderByExpression = function () { + var _this = this; + var orderBys = this.expressionMap.orderBys; + if (Object.keys(orderBys).length > 0) + return " ORDER BY " + Object.keys(orderBys) + .map(function (columnName) { + if (typeof orderBys[columnName] === "string") { + return _this.replacePropertyNames(columnName) + " " + orderBys[columnName]; + } + else { + return _this.replacePropertyNames(columnName) + " " + orderBys[columnName].order + " " + orderBys[columnName].nulls; + } + }) + .join(", "); + return ""; + }; + /** + * Creates "LIMIT" parts of SQL query. + */ + SoftDeleteQueryBuilder.prototype.createLimitExpression = function () { + var limit = this.expressionMap.limit; + if (limit) { + if (this.connection.driver instanceof _driver_cockroachdb_CockroachDriver__WEBPACK_IMPORTED_MODULE_1__[/* MysqlDriver */ "i"]) { + return " LIMIT " + limit; + } + else { + throw new _error_LimitOnUpdateNotSupportedError__WEBPACK_IMPORTED_MODULE_9__[/* LimitOnUpdateNotSupportedError */ "a"](); + } + } + return ""; + }; + return SoftDeleteQueryBuilder; +}(_QueryBuilder__WEBPACK_IMPORTED_MODULE_2__[/* QueryBuilder */ "a"])); + + +//# sourceMappingURL=SoftDeleteQueryBuilder.js.map + /***/ }), +/* 251 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ "./src/client/js/wordrotator/Level/SimpleLevel.js": -/*!********************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SimpleLevel.js ***! - \********************************************************/ -/*! exports provided: SimpleLevel */ +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.XSSHelper = void 0; +class XSSHelper { + static escapeHTML(text) { + if (typeof text !== "string") { + return text; + } + const MAP = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + return text.replace(/[&<>"']/g, function (m) { + return MAP[m]; + }); + } + static escapeJS(text) { + if (typeof text !== "string") { + return text; + } + return text.replace(/[<]([\\s]*\\\/?[\\s]*)script([^<]*)[>]/g, function (match, p1, p2) { + return "<" + p1 + "sc‌ript" + p2 + ">"; + }); + } +} +exports.XSSHelper = XSSHelper; +//# sourceMappingURL=XSSHelper.js.map + +/***/ }), +/* 252 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SiteManager = void 0; + +var Helper_1 = __webpack_require__(15); + +var AbstractSite_1 = __webpack_require__(146); + +var ViewInflater_1 = __webpack_require__(58); + +var Context_1 = __webpack_require__(111); + +var Translator_1 = __webpack_require__(32); + +var DataManager_1 = __webpack_require__(68); + +var HistoryManager_1 = __webpack_require__(255); + +var EventManager_1 = __webpack_require__(198); +/** + * Manager-Klasse für die Seiten + */ + + +var SiteManager = /*#__PURE__*/function () { + /** + * Constructor für Manager. Fügt Listener für zurück (onpopstate) hinzu + */ + function SiteManager() { + _classCallCheck(this, SiteManager); + + this._isInit = false; + } + /** + * + * @return {SiteManager} + */ + + + _createClass(SiteManager, [{ + key: "init", + value: + /** + * @param siteDivId + * @param deepLinks + */ + function init(siteDivId, deepLinks) { + var _this = this; + + this._siteDiv = null; + this._siteStack = []; + this._siteDiv = document.getElementById(siteDivId); + this._titleTranslationCallbackId = null; + this._appEndedListener = null; + this._inversedDeepLinks = Helper_1.Helper.invertKeyValues(deepLinks); //Listener, welcher beim klicken auf Zurück oder Forward ausgeführt wird + + HistoryManager_1.HistoryManager.getInstance().setOnPopStateListener(function (state, direction) { + //Falls zurück + if (direction === HistoryManager_1.HistoryManager.BACK) { + _this.goBack(); + } //Falls vorwärts + else if (HistoryManager_1.HistoryManager.FORWARD === direction) { + if (_this._siteStack.indexOf(state.state.site) !== -1) { + _this.toForeground(state.state.site); + } else { + _this.startSite(state.state.site.constructor, state.state.parameters); + } + } + }); //Cordova-Callbacks + + document.addEventListener("pause", function () { + return _this._pauseSite(); + }, false); + document.addEventListener("resume", function () { + return __awaiter(_this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this._resumeSite(); + + case 2: + return _context.abrupt("return", _context.sent); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + }, false); + document.addEventListener("menubutton", function () { + var site = _this.getCurrentSite(); + + if (Helper_1.Helper.isNotNull(site)) { + site.onMenuPressed(); + } + }, false); + document.addEventListener("searchbutton", function () { + var site = _this.getCurrentSite(); + + if (Helper_1.Helper.isNotNull(site)) { + site.onSearchPressed(); + } + }, false); + window.addEventListener("beforeunload", function (e) { + var returnMessage = _this.beforeUnload(e); + + if (returnMessage !== null) { + e.preventDefault(); + e.returnValue = returnMessage; + return returnMessage; + } + }); + this._isInit = true; + } + }, { + key: "setAppEndedListener", + value: function setAppEndedListener(listener) { + this._appEndedListener = listener; + } + }, { + key: "goBack", + value: function goBack() { + if (this._siteStack.length >= 1) { + var site = this.getCurrentSite(); + + if (site && site.onBackPressed() !== false) { + this.endSite(site); + } + } + } + /** + * gibt die aktuelle Seite zurück + * @returns AbstractSite + */ + + }, { + key: "getCurrentSite", + value: function getCurrentSite() { + if (this._siteStack.length >= 1) { + return this._siteStack[this._siteStack.length - 1]; + } + + return null; + } + /** + * Erstellt eine neue Seite und zeigt diese an. ParamsPromise kann entweder ein Promise oder ein Objekt oder null sein. + * + * @param siteConstructor + * @param paramsPromise + * @returns {Promise} + */ + + }, { + key: "startSite", + value: function startSite(siteConstructor, paramsPromise) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this2 = this; + + var loadingSymbol, site; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + if (siteConstructor.prototype instanceof AbstractSite_1.AbstractSite) { + _context3.next = 2; + break; + } + + throw { + "error": "wrong class given! Expected AbstractSite, given " + siteConstructor.name + }; + + case 2: + EventManager_1.EventManager.trigger("site-manager-start-site", { + site: siteConstructor, + paramPromise: paramsPromise + }); //Loading-Symbol, falls ViewParameters noch länger brauchen + + loadingSymbol = ViewInflater_1.ViewInflater.createLoadingSymbol("overlay"); + + this._siteDiv.appendChild(loadingSymbol); //create Site + + + site = new siteConstructor(this); + + this._siteStack.unshift(site); //Wartet auf onConstruct, viewPromise, onViewLoaded und zeigt dann Seite + + + Promise.resolve(paramsPromise).then(function (params) { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + site._onConstructPromise = site.onConstruct(Helper_1.Helper.nonNull(params, {})); + _context2.next = 3; + return Promise.all([site._onConstructPromise, site.getViewPromise()]); + + case 3: + if (!(site._state !== Context_1.Context.STATE_DESTROYED && site._state !== Context_1.Context.STATE_DESTROYING)) { + _context2.next = 8; + break; + } + + _context2.next = 6; + return site.callOnViewLoaded(); + + case 6: + site._viewLoadedPromise.resolve(); + + return _context2.abrupt("return", this._show(site)); + + case 8: + loadingSymbol.remove(); + + case 9: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + }).catch(function (e) { + console.error("site start error for site ", siteConstructor.name, e); + site.getFinishResolver().reject(e); + loadingSymbol.remove(); //Zeige alte Seite im Fehlerfall wieder an + + for (var i = _this2._siteStack.length - 1; i >= 0; i--) { + if (_this2._siteStack[i] !== site) { + return _this2._show(_this2._siteStack[i]); + } + } + + site._viewLoadedPromise.reject(); + }); //Gebe Site-Promise zurück + + return _context3.abrupt("return", site.getFinishPromise()); + + case 9: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "updateUrl", + value: function updateUrl(site, args) { + var url = this._generateUrl(site, args); + + HistoryManager_1.HistoryManager.getInstance().replaceState({ + 'site': site, + 'parameters': args + }, site.constructor.name, url); + } + }, { + key: "_generateUrl", + value: function _generateUrl(site, args) { + var deepLink = this.getDeepLinkFor(site); + var url = [location.protocol, '//', location.host, location.pathname].join(''); + + if (Helper_1.Helper.isNotNull(deepLink)) { + args["s"] = deepLink; + url = [url, DataManager_1.DataManager.buildQuery(args)].join(''); + } + + return url; + } + /** + * Gibt einen DeepLink zurück + * + * @param site + * @return string + */ + + }, { + key: "getDeepLinkFor", + value: function getDeepLinkFor(site) { + return this._inversedDeepLinks[site.constructor]; + } + /** + * Pausiert eine Seite + * + * @param site + * @private + */ + + }, { + key: "_pauseSite", + value: function _pauseSite(site) { + site = Helper_1.Helper.nonNull(site, this.getCurrentSite()); + + if (Helper_1.Helper.isNotNull(site) && site._state === Context_1.Context.STATE_RUNNING) { + site._pauseParameters = site.onPause(); + Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol()); + } + } + /** + * Lässt eine Seite weiterlaufen + * + * @param site + * @private + */ + + }, { + key: "_resumeSite", + value: function _resumeSite(site) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + site = Helper_1.Helper.nonNull(site, this.getCurrentSite()); + + if (!(Helper_1.Helper.isNotNull(site) && (site._state === Context_1.Context.STATE_PAUSED || site._state === Context_1.Context.STATE_VIEW_LOADED))) { + _context4.next = 10; + break; + } + + _context4.next = 4; + return site.getViewPromise(); + + case 4: + Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(site._view); + _context4.next = 7; + return Translator_1.Translator.getInstance().updateTranslations(); + + case 7: + if (Helper_1.Helper.isNull(site._historyId)) { + site._historyId = HistoryManager_1.HistoryManager.getInstance().pushState({ + 'site': site, + 'parameters': site.getParameters() + }, site.constructor.name, this._generateUrl(site, site.getParameters())); + } else { + HistoryManager_1.HistoryManager.getInstance().stateToCurrentPosition(site._historyId); + } + + _context4.next = 10; + return site.onStart(site._pauseParameters); + + case 10: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + /** + * Zeigt eine Seite an + * + * @param site + * @returns {Promise<*>} + * @private + */ + + }, { + key: "_show", + value: function _show(site) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _this3 = this; + + var currentSiteIndex; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + if (!(site._state === Context_1.Context.STATE_DESTROYING || site._state === Context_1.Context.STATE_DESTROYED)) { + _context6.next = 2; + break; + } + + return _context6.abrupt("return"); + + case 2: + if (!(site._state === Context_1.Context.STATE_RUNNING && this.getCurrentSite() === site)) { + _context6.next = 4; + break; + } + + return _context6.abrupt("return"); + + case 4: + //Speichere alte Seite + this._pauseSite(); //Zeige Ladesymbol + + + Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol()); //Hinzufügen/Updaten zum SiteStack + + currentSiteIndex = this._siteStack.indexOf(site); + + if (-1 !== currentSiteIndex) { + this._siteStack.splice(currentSiteIndex, 1); + } + + this._siteStack.push(site); //Anzeigen der Seite. Stelle sicher, dass die View wirklich geladen ist! + + + return _context6.abrupt("return", site.getViewPromise().then(function () { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + if (!(this.getCurrentSite() === site)) { + _context5.next = 3; + break; + } + + _context5.next = 3; + return this._resumeSite(site); + + case 3: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + })); + + case 10: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + } + /** + * Beendet eine Seite. Muss nicht die aktive Seite sein + * + * @param site + */ + + }, { + key: "endSite", + value: function endSite(site) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var _this4 = this; + + var index; + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + // return site._onConstructPromise.then(async () => { + //Aus Index entfernen + index = this._siteStack.indexOf(site); + + this._siteStack.splice(index, 1); //Seite war/ist die aktive Seite + + + if (index === this._siteStack.length) { + this._pauseSite(site); //Seite ist aktiv, zeige Ladesymbol + + + this._siteDiv.appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol('overlay')); + + site.getFinishPromise().then(function () { + var newSiteToShow = _this4.getCurrentSite(); + + if (Helper_1.Helper.isNotNull(newSiteToShow)) { + _this4.toForeground(newSiteToShow); + } + }); + } + + if (this._siteStack.length <= 0) { + console.log("stack is empty, starting normal site!"); + HistoryManager_1.HistoryManager.getInstance().cutStack(0); + HistoryManager_1.HistoryManager.getInstance().go(-1 * history.length, true); + Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(document.createTextNode("App ist beendet")); + + if (typeof this._appEndedListener === "function") { + this._appEndedListener(this); + } + } + + site._context = Context_1.Context.STATE_DESTROYING; + _context7.next = 7; + return site.onDestroy(); + + case 7: + site._context = Context_1.Context.STATE_DESTROYED; + site.getFinishResolver().resolve(site._result); + + case 9: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + /** + * Stellt eine aktive Seite in den Vordergrund; + * @param site + * @returns {Promise<*>} + */ + + }, { + key: "toForeground", + value: function toForeground(site) { + return this._show(site); + } + /** + * Updated den Seitentitel. Dafür gibt es im translation-file den Key document-title (document-title-empty, falls title null), + * der als Parameter in der Übersetzung den übergebenen Title übergeben bekommt. + * + * Der übergebene title wird mit den angebenenen argumenten zuerst übersetz, bevor der gesamte document-Title überstzt wird + * + * Wenn args === false, dann wird title nicht übersetzt + * + * Durch das argument titleTemplate kann der key im translation-file von document-title individuell abweichen + * + * @param title + * @param args + * @param titleTemplate + */ + + }, { + key: "updateTitle", + value: function updateTitle(title, args, titleTemplate) { + titleTemplate = Helper_1.Helper.nonNull(titleTemplate, Helper_1.Helper.isNull(title) ? "document-title-empty" : "document-title"); + + if (Helper_1.Helper.isNotNull(this._titleTranslationCallbackId)) { + Translator_1.Translator.removeTranslationCallback(this._titleTranslationCallbackId); + } + + this._titleTranslationCallbackId = Translator_1.Translator.addTranslationCallback(function () { + if (args !== false) { + title = Translator_1.Translator.translate(title, args); + } + + document.title = Translator_1.Translator.translate(titleTemplate, [title]); + }); + } + }, { + key: "beforeUnload", + value: function beforeUnload(e) { + return this.getCurrentSite().onBeforeUnload(e); + } + }], [{ + key: "getInstance", + value: function getInstance() { + if (!this._instance) { + this._instance = new SiteManager(); + } + + return this._instance; + } + }]); + + return SiteManager; +}(); + +exports.SiteManager = SiteManager; +SiteManager._instance = null; + +/***/ }), +/* 253 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DraggedElement = void 0; +class DraggedElement { + constructor(element) { + this.isDragging = false; + this.element = element; + } + onStart(listener) { + this.startListener = listener; + return this; + } + onStop(listener) { + this.stopListener = listener; + return this; + } + onMove(listener) { + this.moveListener = listener; + return this; + } + start() { + this.isDragging = true; + if (!this.previewElement) { + this.previewElement = this.element.cloneNode(true); + const styles = getComputedStyle(this.element); + for (let i = 0; i < styles.length; i++) { + this.previewElement.style[styles[i]] = styles.getPropertyValue(styles[i]); + } + this.previewElement.style.opacity = "0.6"; + this.previewElement.style.position = "fixed"; + } + const boundingRect = this.element.getBoundingClientRect(); + this.startPosition = { x: boundingRect.left, y: boundingRect.top }; + this.previewElement.style.top = boundingRect.top + "px"; + this.previewElement.style.left = boundingRect.left + "px"; + this.previewElement.style.width = (boundingRect.right - boundingRect.left) + "px"; + this.previewElement.style.height = (boundingRect.bottom - boundingRect.top) + "px"; + document.body.appendChild(this.previewElement); + if (this.startListener) { + this.startListener(this.element); + } + } + stop(mousePosition) { + this.isDragging = false; + if (this.previewElement) { + this.previewElement.remove(); + } + const droppedAt = document.elementFromPoint(mousePosition.x, mousePosition.y); + if (this.stopListener) { + this.stopListener(this.element, droppedAt); + } + } + moved() { + if (this.isDragging && this.moveListener) { + this.moveListener(this.element); + } + } + moveRelativeTo(relativePos) { + if (this.startPosition && this.previewElement) { + const newPosition = { x: this.startPosition.x + relativePos.x, y: this.startPosition.y + relativePos.y }; + this.previewElement.style.left = newPosition.x + "px"; + this.previewElement.style.top = newPosition.y + "px"; + this.moved(); + } + } +} +exports.DraggedElement = DraggedElement; +//# sourceMappingURL=DraggedElement.js.map + +/***/ }), +/* 254 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } + +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NotOnlineError = void 0; + +var NotOnlineError = /*#__PURE__*/function (_Error) { + _inherits(NotOnlineError, _Error); + + var _super = _createSuper(NotOnlineError); + + function NotOnlineError(message, url) { + var _this; + + _classCallCheck(this, NotOnlineError); + + _this = _super.call(this, message + " for url " + url); + _this._url = url; + return _this; + } + + return NotOnlineError; +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +exports.NotOnlineError = NotOnlineError; + +/***/ }), +/* 255 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.HistoryManager = void 0; + +var Helper_1 = __webpack_require__(15); +/** + * Manager, welcher sich um die Manipulation von der Historie kümmert + */ + + +var HistoryManager = /*#__PURE__*/function () { + /** + * Constructor für den Manager. Fügt den onPopstateListener hinzu + */ + function HistoryManager() { + var _this = this; + + _classCallCheck(this, HistoryManager); + + this._lastStateId = -1; + this._states = {}; + this._stack = []; + this._ignoreOnPopState = false; + this._isUpdateNativeStack = false; + this._onPopStateListener = null; + this._currentStackIndex = -1; + + window.onpopstate = function (e) { + //Wenn nativeStack geupdated wird, mache nichts + if (_this._isUpdateNativeStack) { + _this._isUpdateNativeStack = false; + return; + } + + var direction = e.state["type"]; + _this._currentStackIndex += direction; + + _this._updateNativeHistoryStack(); //Wenn popState ignoriert werden soll, mache ebenfalls nichts außer Stack updaten + + + if (_this._ignoreOnPopState) { + _this._ignoreOnPopState = false; + return; + } //Wenn Listener gesetzt, hole daten und führe Listener aus + + + if (typeof _this._onPopStateListener === 'function') { + var data = {}; + + if (_this._stack.length > _this._currentStackIndex && _this._currentStackIndex >= 0) { + data = _this._states[_this._stack[_this._currentStackIndex]]; + } + + _this._onPopStateListener(data, direction, e); + } + }; + + this._updateNativeHistoryStack(); + } + /** + * Updated den History-Stack innerhalb des Browsers + * + * @param url + * @private + */ + + + _createClass(HistoryManager, [{ + key: "_updateNativeHistoryStack", + value: function _updateNativeHistoryStack(url) { + url = Helper_1.Helper.nonNull(url, window.location.href); //setze das weitere zurückgehen + + if (this._currentStackIndex >= 0) { + history.pushState({ + "type": HistoryManager.BACK + }, "back", url); + } + + history.pushState({ + "type": HistoryManager.CURRENT + }, "current", url); + + if (this._currentStackIndex < this._stack.length - 1) { + history.pushState({ + "type": HistoryManager.FORWARD + }, "forward", url); + this._isUpdateNativeStack = true; + history.go(-1); + } + } + /** + * Generiert einen neuen History-Eintrag. Gibt die ID des Eintrages zurück + * + * @param value + * @param name + * @param url + * + * @return {number} + */ + + }, { + key: "pushState", + value: function pushState(value, name, url) { + var newState = { + state: value, + title: name, + url: url + }; + this._lastStateId++; + this._states[this._lastStateId] = newState; + this._currentStackIndex++; + + this._stack.splice(this._currentStackIndex, this._stack.length, this._lastStateId); + + this._updateNativeHistoryStack(url); + + return this._lastStateId; + } + /** + * Ersetzt den Eintrag mit der gegebenen ID. Ist die ID nicht gegeben, wird der aktuelle Eintrag ersetzt + * + * @param value + * @param name + * @param url + * @param id + */ + + }, { + key: "replaceState", + value: function replaceState(value, name, url, id) { + id = Helper_1.Helper.nonNull(id, this._stack[this._currentStackIndex]); + + if (this._stack.length > this._currentStackIndex && this._currentStackIndex >= 0) { + this._states[id] = { + state: value, + title: name, + url: url + }; + + this._updateNativeHistoryStack(url); + } + } + /** + * Verschiebt den Eintrag mit der entsprechenden ID an die aktuell aktive Stelle + * @param id + */ + + }, { + key: "stateToCurrentPosition", + value: function stateToCurrentPosition(id) { + if (Helper_1.Helper.isNotNull(this._states[id])) { + var oldStackPosition = this._stack.indexOf(id); + + if (oldStackPosition !== -1) { + this._stack.splice(oldStackPosition, 1); + + this._stack.splice(this._currentStackIndex + (oldStackPosition <= this._currentStackIndex ? -1 : 0), 0, id); + } + } + } + /** + * Gehe um to in der Historie + * + * @param to + * @param ignoreOnPopState + */ + + }, { + key: "go", + value: function go(to, ignoreOnPopState) { + this._ignoreOnPopState = Helper_1.Helper.nonNull(ignoreOnPopState, false) === true; + history.go(to); + } + /** + * Entferne alle Einträge ab at (inklusive). Wenn at nicht gesetzt ist, wird alles über der aktuellen position abgeschnitten + * @param at + */ + + }, { + key: "cutStack", + value: function cutStack(at) { + at = Helper_1.Helper.nonNull(at, this._currentStackIndex + 1); + + this._stack.splice(at); + + this._currentStackIndex = Math.min(this._currentStackIndex, this._stack.length - 1); + + this._updateNativeHistoryStack(); + } + /** + * Alias für this.go(-1) + */ + + }, { + key: "back", + value: function back() { + this.go(-1); + } + /** + * Alias für this.go(1) + */ + + }, { + key: "forward", + value: function forward() { + this.go(+1); + } + /** + * Setzt den onPopStateListener + * + * @param listener + */ + + }, { + key: "setOnPopStateListener", + value: function setOnPopStateListener(listener) { + this._onPopStateListener = listener; + } + /** + * Singelton-Getter + * @return {HistoryManager} + */ + + }], [{ + key: "getInstance", + value: function getInstance() { + if (Helper_1.Helper.isNull(HistoryManager._instance)) { + HistoryManager._instance = new HistoryManager(); + } + + return HistoryManager._instance; + } + }]); + + return HistoryManager; +}(); + +exports.HistoryManager = HistoryManager; +HistoryManager.BACK = -1; +HistoryManager.FORWARD = 1; +HistoryManager.CURRENT = 0; + +/***/ }), +/* 256 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ColorIndicator = void 0; + +var Singleton_1 = __webpack_require__(257); + +var Helper_1 = __webpack_require__(15); + +var ColorIndicator = /*#__PURE__*/function (_Singleton_1$Singleto) { + _inherits(ColorIndicator, _Singleton_1$Singleto); + + var _super = _createSuper(ColorIndicator); + + function ColorIndicator() { + _classCallCheck(this, ColorIndicator); + + return _super.apply(this, arguments); + } + + _createClass(ColorIndicator, [{ + key: "getAverageImgColor", + value: function getAverageImgColor(imgEl, areaWidth, areaHeight) { + //https://stackoverflow.com/questions/2541481/get-average-color-of-image-via-javascript + var blockSize = 5, + // only visit every 5 pixels + defaultRGB = { + r: 255, + g: 255, + b: 255 + }, + // for non-supporting envs + canvas = document.createElement('canvas'), + context = canvas.getContext && canvas.getContext('2d'), + data, + width, + height, + i = -4 * blockSize, + //start with first pixel + length, + rgb = { + r: 0, + g: 0, + b: 0 + }, + count = 0; + + if (!context) { + return defaultRGB; + } + + height = canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height; + width = canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width; + areaWidth = Helper_1.Helper.nonNull(areaWidth, width); + areaHeight = Helper_1.Helper.nonNull(areaWidth, height); + context.drawImage(imgEl, 0, 0); + + try { + data = context.getImageData(0, 0, Math.min(width, areaWidth), Math.min(height, areaHeight)); + } catch (e) { + /* security error, img on diff domain */ + console.error(e); + return defaultRGB; + } + + length = data.data.length; + + while ((i += blockSize * 4) < length) { + ++count; + rgb.r += data.data[i]; + rgb.g += data.data[i + 1]; + rgb.b += data.data[i + 2]; + } // ~~ used to floor values + + + rgb.r = ~~(rgb.r / count); + rgb.g = ~~(rgb.g / count); + rgb.b = ~~(rgb.b / count); + return rgb; + } + }, { + key: "invertColorBW", + value: function invertColorBW(r, g, b) { + return this.invertColor(r, g, b, true); + } + }, { + key: "invertColor", + value: function invertColor(r, g, b, bw) { + if (_typeof(r) === "object") { + bw = g || bw; + g = r.g; + b = r.b; + r = r.r; + } + + if (bw) { + // http://stackoverflow.com/a/3943023/112731 + return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? { + r: 0, + g: 0, + b: 0 + } : { + r: 255, + g: 255, + b: 255 + }; + } // invert color components + + + r = 255 - r; + g = 255 - g; + b = 255 - b; // pad each with zeros and return + + return { + r: r, + g: g, + b: b + }; + } + }, { + key: "toHEX", + value: function toHEX(r, g, b) { + if (_typeof(r) === "object") { + g = r.g; + b = r.b; + r = r.r; + } + + r = r.toString(16); + g = g.toString(16); + b = b.toString(16); + return "#" + Helper_1.Helper.padZero(r) + Helper_1.Helper.padZero(g) + Helper_1.Helper.padZero(b); + } + }]); + + return ColorIndicator; +}(Singleton_1.Singleton); + +exports.ColorIndicator = ColorIndicator; + +/***/ }), +/* 257 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Singleton = void 0; + +var Singleton = /*#__PURE__*/function () { + function Singleton() { + _classCallCheck(this, Singleton); + } + + _createClass(Singleton, null, [{ + key: "getInstance", + value: + /** + * + * @returns {Singleton|this} + */ + function getInstance() { + if (!this._instance) { + this._instance = new this(); + } + + return this._instance; + } + }]); + + return Singleton; +}(); + +exports.Singleton = Singleton; + +/***/ }), +/* 258 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MasterSite = void 0; + +var AbstractSite_1 = __webpack_require__(146); + +var Helper_1 = __webpack_require__(15); + +var MasterSite = /*#__PURE__*/function (_AbstractSite_1$Abstr) { + _inherits(MasterSite, _AbstractSite_1$Abstr); + + var _super2 = _createSuper(MasterSite); + + function MasterSite(siteManager, view) { + var _this; + + _classCallCheck(this, MasterSite); + + _this = _super2.call(this, siteManager, view); + _this._delegates = []; + return _this; + } + + _createClass(MasterSite, [{ + key: "addDelegate", + value: function addDelegate(delegateSite) { + this._delegates.push(delegateSite); + } + }, { + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this2 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return _get(_getPrototypeOf(MasterSite.prototype), "onConstruct", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this3 = this; + + var res; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + res = _super.onConstruct.call(this, constructParameters); + _context2.next = 3; + return Helper_1.Helper.asyncForEach(this._delegates, function (delegate) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return delegate.onConstruct(constructParameters); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + }); + + case 3: + return _context2.abrupt("return", res); + + case 4: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "onStart", + value: function onStart(pauseArguments) { + var _this4 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return _get(_getPrototypeOf(MasterSite.prototype), "onStart", _this4); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this5 = this; + + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return _super.onStart.call(this, pauseArguments); + + case 2: + _context4.next = 4; + return Helper_1.Helper.asyncForEach(this._delegates, function (delegate) { + return __awaiter(_this5, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return delegate.onStart(pauseArguments); + + case 2: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + }); + + case 4: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "onBackPressed", + value: function onBackPressed() { + _get(_getPrototypeOf(MasterSite.prototype), "onBackPressed", this).call(this); + + this._delegates.forEach(function (delegate) { + delegate.onBackPressed(); + }); + } + }, { + key: "onMenuPressed", + value: function onMenuPressed() { + _get(_getPrototypeOf(MasterSite.prototype), "onMenuPressed", this).call(this); + + this._delegates.forEach(function (delegate) { + delegate.onMenuPressed(); + }); + } + }, { + key: "onSearchPressed", + value: function onSearchPressed() { + _get(_getPrototypeOf(MasterSite.prototype), "onSearchPressed", this).call(this); + + this._delegates.forEach(function (delegate) { + delegate.onSearchPressed(); + }); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this6 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(MasterSite.prototype), "onViewLoaded", _this6); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _this7 = this; + + var res; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + res = _super.onViewLoaded.call(this); + _context6.next = 3; + return Helper_1.Helper.asyncForEach(this._delegates, function (delegate) { + return __awaiter(_this7, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return delegate.onViewLoaded(); + + case 2: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); + }); + + case 3: + return _context6.abrupt("return", res); + + case 4: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "onPause", + value: function onPause() { + var _this8 = this; + + var _super = Object.create(null, { + onPause: { + get: function get() { + return _get(_getPrototypeOf(MasterSite.prototype), "onPause", _this8); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var _this9 = this; + + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + _context8.next = 2; + return _super.onPause.call(this); + + case 2: + _context8.next = 4; + return Helper_1.Helper.asyncForEach(this._delegates, function (delegate) { + return __awaiter(_this9, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + _context7.next = 2; + return delegate.onPause(); + + case 2: + case "end": + return _context7.stop(); + } + } + }, _callee7); + })); + }); + + case 4: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "onDestroy", + value: function onDestroy() { + var _this10 = this; + + var _super = Object.create(null, { + onDestroy: { + get: function get() { + return _get(_getPrototypeOf(MasterSite.prototype), "onDestroy", _this10); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + var _this11 = this; + + return regeneratorRuntime.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + _context10.next = 2; + return _super.onDestroy.call(this); + + case 2: + _context10.next = 4; + return Helper_1.Helper.asyncForEach(this._delegates, function (delegate) { + return __awaiter(_this11, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return delegate.onDestroy(); + + case 2: + case "end": + return _context9.stop(); + } + } + }, _callee9); + })); + }); + + case 4: + case "end": + return _context10.stop(); + } + } + }, _callee10, this); + })); + } + }]); + + return MasterSite; +}(AbstractSite_1.AbstractSite); + +exports.MasterSite = MasterSite; + +/***/ }), +/* 259 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ToastManager = void 0; + +var Helper_1 = __webpack_require__(15); + +var Translator_1 = __webpack_require__(32); + +var ToastManager = /*#__PURE__*/function () { + function ToastManager() { + _classCallCheck(this, ToastManager); + + this._toastContainer = document.querySelector(ToastManager._toastContainerSelector); + this._toastTemplate = this._toastContainer.querySelector(".toast-template"); + + this._toastTemplate.classList.remove("toast-template"); + + this._toastTemplate.remove(); + } + + _createClass(ToastManager, [{ + key: "showToast", + value: function showToast(toast) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this = this; + + var message, toastElement; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + message = toast.getMessage(); + + if (toast.isShouldTranslate()) { + message = Translator_1.Translator.makePersistentTranslation(message, toast.getTranslationArgs()); + } else { + message = document.createTextNode(message); + } + + toastElement = this._toastTemplate.cloneNode(true); + toastElement.querySelector(".message").appendChild(message); + toast.setToastElement(toastElement); + + this._toastContainer.appendChild(toastElement); + + toastElement.style.opacity = 1; + return _context.abrupt("return", new Promise(function (resolve) { + toastElement.querySelector(".message").onclick = function () { + _this.hideToast(toast); + + resolve(true); + }; + + setTimeout(function () { + _this.hideToast(toast); + + resolve(false); + }, toast.getDuration()); + })); + + case 8: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "hideToast", + value: function hideToast(toast) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var element; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + //TODO Animation hinzufügen + element = toast.getToastElement(); + + if (!Helper_1.Helper.isNotNull(element)) { + _context2.next = 4; + break; + } + + element.style.opacity = 0; + return _context2.abrupt("return", new Promise(function (res) { + setTimeout(function () { + element.remove(); + res(); + }, 250); + })); + + case 4: + return _context2.abrupt("return", Promise.reject("toast is not showing")); + + case 5: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + }], [{ + key: "setToastContainerSelector", + value: function setToastContainerSelector(selector) { + ToastManager._toastContainerSelector = selector; + } + }, { + key: "getInstance", + value: function getInstance() { + if (!ToastManager._instance) { + ToastManager._instance = new ToastManager(); + } + + return ToastManager._instance; + } + }]); + + return ToastManager; +}(); + +exports.ToastManager = ToastManager; +ToastManager._instance = null; +ToastManager._toastContainerSelector = "#toast-container"; + +/***/ }), +/* 260 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DropdownRenderer = void 0; + +var OpenSubmenuAction_1 = __webpack_require__(98); + +var AccordionRenderer_1 = __webpack_require__(201); + +var Submenu_1 = __webpack_require__(262); +/** + * Erstellt ein Dropdown-Menu + */ + + +var DropdownRenderer = /*#__PURE__*/function (_AccordionRenderer_1$) { + _inherits(DropdownRenderer, _AccordionRenderer_1$); + + var _super = _createSuper(DropdownRenderer); + + function DropdownRenderer(parentElement) { + var _this; + + _classCallCheck(this, DropdownRenderer); + + _this = _super.call(this, parentElement); + _this._accordionMenuRenderer = new AccordionRenderer_1.AccordionRenderer(); + return _this; + } + /** + * Rendert die SubmenuAction + * + * @param action + * @returns {*} + */ + + + _createClass(DropdownRenderer, [{ + key: "renderSubmenuAction", + value: function renderSubmenuAction(action) { + if (action.getMenu() instanceof Submenu_1.Submenu) { + return _get(_getPrototypeOf(DropdownRenderer.prototype), "renderSubmenuAction", this).call(this, action); + } + + var submenuActionElement = _get(_getPrototypeOf(DropdownRenderer.prototype), "renderSubmenuAction", this).call(this, action); + + submenuActionElement.classList.add('is-dropdown-submenu-parent'); + submenuActionElement.classList.add('opens-right'); + return submenuActionElement; + } + /** + * Erstellt ein SubmenuParent + * + * @param action + * @returns {HTMLUListElement} + */ + + }, { + key: "createSubmenuParentElement", + value: function createSubmenuParentElement(action) { + if (action.getMenu() instanceof Submenu_1.Submenu) { + return _get(_getPrototypeOf(DropdownRenderer.prototype), "createSubmenuParentElement", this).call(this, action); + } + + var menuElement = document.createElement("ul"); + menuElement.classList.add("menu"); + menuElement.classList.add("vertical"); + menuElement.classList.add("submenu"); + menuElement.classList.add("accordion-menu"); + menuElement.classList.add("is-dropdown-submenu"); + menuElement.classList.add("first-sub"); + return menuElement; + } + /** + * Updatet das Element für eine Action + * @param action + */ + + }, { + key: "updateAction", + value: function updateAction(action) { + if (action.getMenu() instanceof Submenu_1.Submenu) { + return _get(_getPrototypeOf(DropdownRenderer.prototype), "updateAction", this).call(this, action); + } + + if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) { + var submenuElement = this.getElementForAction(action).querySelector(".submenu"); + + if (action.getSubmenu().isOpen()) { + submenuElement.classList.add("js-dropdown-active"); + } else { + submenuElement.classList.remove("js-dropdown-active"); + } + } + } + }]); + + return DropdownRenderer; +}(AccordionRenderer_1.AccordionRenderer); + +exports.DropdownRenderer = DropdownRenderer; + +/***/ }), +/* 261 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MenuRenderer = void 0; + +var Helper_1 = __webpack_require__(15); + +var OpenSubmenuAction_1 = __webpack_require__(98); +/** + * Rendert ein Menü + */ + + +var MenuRenderer = /*#__PURE__*/function () { + /** + * Jeder Renderer hat ein Element, wo er die gerenderten Elemente hinzufügt + * + * @param parentElement + */ + function MenuRenderer(parentElement) { + _classCallCheck(this, MenuRenderer); + + this._parentElement = parentElement; + this._renderedElements = {}; + } + /** + * Stößt das Rendern an + * @param menu + * @param parentElement + */ + + + _createClass(MenuRenderer, [{ + key: "render", + value: function render(menu, parentElement) { + var _this = this; + + var actions = menu.getActions(); //Funktion wird auch für Submenüs genutzt. Daher muss hier ein anderes parentElement übergeben werden + + parentElement = Helper_1.Helper.nonNull(parentElement, this._parentElement); + + if (Helper_1.Helper.isNotNull(parentElement)) { + Helper_1.Helper.removeAllChildren(parentElement); //Füge Elemente hinzu + + actions.forEach(function (action) { + parentElement.appendChild(_this.getElementForAction(action)); + }); //Setze den onclick-Listener + + parentElement.onclick = function (e) { + if (typeof menu.getOnClickListener() === 'function') { + menu.getOnClickListener()(e); + } + }; + } + } + /** + * Führt das Rendern der Elemente aus und ersetzt evtl schon alte Elemente + * Auslagern von renderAction und renderSubmenuAction zum besseren überschreiben der Funktionen. + * + * renderSubmenuAction und renderAction sollten nur von dieser Funktion aufgerufen werden, damit die + * _rendererElements aktuell bleiben! + * + * @param action + * @returns {HTMLElement} + * @private + */ + + }, { + key: "_triggerRenderAction", + value: function _triggerRenderAction(action) { + var oldElement = this._renderedElements[action.getId()]; + + if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) { + this._renderedElements[action.getId()] = this.renderSubmenuAction(action); + } else { + this._renderedElements[action.getId()] = this.renderAction(action); + } + + this.updateAction(action); + + if (Helper_1.Helper.isNotNull(oldElement)) { + oldElement.replaceWith(this._renderedElements[action.getId()]); + } + + return this._renderedElements[action.getId()]; + } + /** + * Gibt das Element zur Action. Falls es noch nicht existiert, wird dieses gerendert + * @param action + * @returns {*} + */ + + }, { + key: "getElementForAction", + value: function getElementForAction(action) { + if (Helper_1.Helper.isNull(this._renderedElements[action.getId()])) { + this._triggerRenderAction(action); + } + + return this._renderedElements[action.getId()]; + } + /** + * Funktion zum überladen + * @param action + */ + + }, { + key: "renderAction", + value: function renderAction(action) { + return null; + } + /** + * Funktion zum überladen + * @param action + */ + + }, { + key: "updateAction", + value: function updateAction(action) {} + /** + * Rendert eine SubmenuAction, kann/sollte überladen werden + * @param action + * @returns {*} + */ + + }, { + key: "renderSubmenuAction", + value: function renderSubmenuAction(action) { + var actionElement = this.renderAction(action); + action.getSubmenu().sortActions(); + var submenuParentElement = this.createSubmenuParentElement(action); + this.render(action.getSubmenu(), submenuParentElement); + actionElement.appendChild(submenuParentElement); + return actionElement; + } + }, { + key: "createSubmenuParentElement", + value: + /** + * Erstellt ein Element für ein Submenu. Sollte überladen werden + * @param action + * @returns {HTMLUListElement} + */ + function createSubmenuParentElement(action) { + return document.createElement("ul"); + } + }]); + + return MenuRenderer; +}(); + +exports.MenuRenderer = MenuRenderer; + +/***/ }), +/* 262 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Submenu = void 0; + +var Menu_1 = __webpack_require__(200); + +var Helper_1 = __webpack_require__(15); + +var OpenSubmenuAction_1 = __webpack_require__(98); +/** + * Submenü, ein untermenü + */ + + +var Submenu = /*#__PURE__*/function (_Menu_1$Menu) { + _inherits(Submenu, _Menu_1$Menu); + + var _super = _createSuper(Submenu); + + /** + * Constructor für ein Submenu + * + * Bekommt parameter für die OpenSubmenuAction übergeben und reicht diese weiter. + * Renderer besitzt das Menü keine, da die Renderer des ParentMenus genutzt werden + * Actions können nicht bei der Erstellung hinzugefügt werden + * + * @param title + * @param showFor + * @param order + * @param icon + * @param renderers + */ + function Submenu(title, showFor, order, icon, renderers) { + var _this; + + _classCallCheck(this, Submenu); + + _this = _super.call(this, Helper_1.Helper.nonNull(renderers, [])); + _this._parentAction = new OpenSubmenuAction_1.OpenSubmenuAction(title, _assertThisInitialized(_this), showFor, order, icon); + _this._isOpen = false; + return _this; + } + /** + * Erstellt ein neues Menu auf grundlage dieses Menüs. Alle Actions & Submenüs werden ebenfalls kopiert + * + * @param menu + * @return {Submenu} + */ + + + _createClass(Submenu, [{ + key: "copy", + value: function copy(menu) { + menu = Helper_1.Helper.nonNull(menu, new Submenu()); + menu = _get(_getPrototypeOf(Submenu.prototype), "copy", this).call(this, menu); + menu._isOpen = this._isOpen; + return menu; + } + /** + * Setzt die ParentAction + * + * @param action + */ + + }, { + key: "setParentAction", + value: function setParentAction(action) { + this._parentAction = action; + } + /** + * Gibt das ParentMenu zurück + */ + + }, { + key: "getParentMenu", + value: function getParentMenu() { + return this._parentAction.getMenu(); + } + /** + * Erstelle keinen onClickListener, damit der Listener aus dem Obermenü aufgerufen wird + * + * @returns {null} + * @private + */ + + }, { + key: "_generateOnClickListener", + value: function _generateOnClickListener() { + return null; + } + /** + * Wird vom Obermenü aufgerufen, um die ensprechende Action zu finden + * + * @param actionId + * @param event + * @returns {boolean} + */ + + }, { + key: "click", + value: function click(actionId, event) { + for (var i = 0, n = this._actions.length; i < n; i++) { + if (this._actions[i].getId() === actionId) { + if (typeof this._actions[i].getAction() === 'function' && this._actions[i].isActivated()) { + this._actions[i].getAction()(this._actions[i], event); + + event.preventDefault(); + } + + if (!(this._actions[i] instanceof OpenSubmenuAction_1.OpenSubmenuAction)) { + this.close(); + } + + return this._actions[i]; + } + } //Falls action nicht gefunden (da noch nicht beendet), suche in den submenüs nach der Action + + + for (var _i = 0, _n = this._submenus.length; _i < _n; _i++) { + var action = this._submenus[_i].click(actionId, event); + + if (action) { + return action; + } + } + + return null; + } + /** + * Öffnet oder schließt das Menü + */ + + }, { + key: "toggle", + value: function toggle() { + if (this._isOpen) { + this.close(); + } else { + this.open(); + } + } + /** + * öffnet das Menü und updatet die Elemente + */ + + }, { + key: "open", + value: function open() { + this._isOpen = true; + this.openSubmenu(this); + + if (Helper_1.Helper.isNotNull(this._parentAction)) { + this._parentAction.update(); + } + } + }, { + key: "openSubmenu", + value: function openSubmenu(submenu) { + this.getParentMenu().openSubmenu(submenu); + } + /** + * schließt das Menü und updatet die Elemente + */ + + }, { + key: "close", + value: function close() { + this._isOpen = false; + + _get(_getPrototypeOf(Submenu.prototype), "close", this).call(this); + + if (Helper_1.Helper.isNotNull(this._parentAction)) { + this._parentAction.update(); + } + } + /** + * Gibt die ParentAction zurück + * + * @returns {OpenSubmenuAction} + */ + + }, { + key: "getParentAction", + value: function getParentAction() { + return this._parentAction; + } + /** + * Updated eine Action. Da ein Submenu keine Renderer hat, muss es ans parentMenu weitergegeben werden + * @param action + */ + + }, { + key: "updateAction", + value: function updateAction(action) { + var parentMenu = this.getParentMenu(); + + if (parentMenu) { + parentMenu.updateAction(action); + } + } + }, { + key: "redrawAction", + value: function redrawAction(action) { + var parentMenu = this.getParentMenu(); + + if (parentMenu) { + parentMenu.redrawAction(action); + } + } + /** + * Gibt an, ob das Submenu offen ist oder nicht + * + * @returns {boolean} + */ + + }, { + key: "isOpen", + value: function isOpen() { + return this._isOpen; + } + }]); + + return Submenu; +}(Menu_1.Menu); + +exports.Submenu = Submenu; + +/***/ }), +/* 263 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwipeChildFragment = void 0; + +var AbstractFragment_1 = __webpack_require__(79); + +var Helper_1 = __webpack_require__(15); + +var SwipeChildFragment = /*#__PURE__*/function (_AbstractFragment_1$A) { + _inherits(SwipeChildFragment, _AbstractFragment_1$A); + + var _super = _createSuper(SwipeChildFragment); + + function SwipeChildFragment(site, view) { + var _this; + + _classCallCheck(this, SwipeChildFragment); + + _this = _super.call(this, site, view); + _this._parent = null; + return _this; + } + + _createClass(SwipeChildFragment, [{ + key: "onSwipeRight", + value: function onSwipeRight() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this.previousFragment(); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onSwipeLeft", + value: function onSwipeLeft() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + this.nextFragment(); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "setParent", + value: function setParent(parent) { + this._parent = parent; + } + }, { + key: "nextFragment", + value: function nextFragment() { + if (Helper_1.Helper.isNotNull(this._parent)) { + this._parent.nextFragment(); + } + } + }, { + key: "previousFragment", + value: function previousFragment() { + if (Helper_1.Helper.isNotNull(this._parent)) { + this._parent.previousFragment(); + } + } + }]); + + return SwipeChildFragment; +}(AbstractFragment_1.AbstractFragment); + +exports.SwipeChildFragment = SwipeChildFragment; + +/***/ }), +/* 264 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/chooseDialog.html"; + +/***/ }), +/* 265 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ElemChooseDialog = void 0; + +var Dialog_1 = __webpack_require__(84); + +var ViewInflater_1 = __webpack_require__(58); + +var view = __webpack_require__(264); + +var ElemChooseDialog = /*#__PURE__*/function (_Dialog_1$Dialog) { + _inherits(ElemChooseDialog, _Dialog_1$Dialog); + + var _super = _createSuper(ElemChooseDialog); + + function ElemChooseDialog(valueNames, title) { + var _this; + + _classCallCheck(this, ElemChooseDialog); + + var viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then(function (view) { + var template = view.querySelector("#choose-value-template"); + template.remove(); + template.removeAttribute("id"); + var templateContainer = view.querySelector("#choose-container"); + + var _loop = function _loop(k) { + var valueElem = template.cloneNode(true); + valueElem.querySelector(".choose-dialog-value").appendChild(valueNames[k]); + valueElem["dataset"]["value"] = k; + valueElem.addEventListener("click", function () { + _this._result = k; + + _this.close(); + }); + templateContainer.appendChild(valueElem); + }; + + for (var k in valueNames) { + _loop(k); + } + + return view; + }); + return _this = _super.call(this, viewPromise, title); + } + + return ElemChooseDialog; +}(Dialog_1.Dialog); + +exports.ElemChooseDialog = ElemChooseDialog; + +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ShareDialog = void 0; + +var Dialog_1 = __webpack_require__(84); + +var ViewInflater_1 = __webpack_require__(58); + +var view = __webpack_require__(519); + +var ShareDialog = /*#__PURE__*/function (_Dialog_1$Dialog) { + _inherits(ShareDialog, _Dialog_1$Dialog); + + var _super = _createSuper(ShareDialog); + + function ShareDialog(textToShare) { + var _this; + + _classCallCheck(this, ShareDialog); + + return _this = _super.call(this, ViewInflater_1.ViewInflater.getInstance().load(view).then(function (view) { + view.querySelector("#whatsapp-share").addEventListener("click", function () { + var linkToOpen = ""; + linkToOpen = "https://web.whatsapp.com/send?text=" + encodeURIComponent(textToShare); + window.open(linkToOpen, '_blank', "noopener"); + + _this.close(); + }); + view.querySelector("#telegram-share").addEventListener("click", function () { + var linkToOpen = "https://t.me/share/url?url=" + encodeURIComponent(textToShare); + window.open(linkToOpen, '_blank', "noopener"); + + _this.close(); + }); + return view; + }), "Share"); + } + + return ShareDialog; +}(Dialog_1.Dialog); + +exports.ShareDialog = ShareDialog; + +/***/ }), +/* 267 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AudioChain = void 0; + +var Helper_1 = __webpack_require__(7); + +var AudioChain = /*#__PURE__*/function () { + function AudioChain(context, sourceBuffer, chainFunction) { + _classCallCheck(this, AudioChain); + + this._buffer = sourceBuffer; + this._shouldLoop = false; + this._loopStart = null; + this._loopEnd = null; + this._chainFunction = chainFunction; + this._context = context; + this._startTime = null; + this._pauseTime = null; + this._source = null; + this._running = false; + } + + _createClass(AudioChain, [{ + key: "setBuffer", + value: function setBuffer(buffer) { + this._buffer = buffer; + } + }, { + key: "setLooping", + value: function setLooping(shouldLoop, loopStart, loopEnd) { + this._shouldLoop = shouldLoop; + + if (Helper_1.Helper.isNotNull(loopStart)) { + this._loopStart = loopStart; + } + + if (Helper_1.Helper.isNotNull(loopEnd)) { + this._loopEnd = loopEnd; + } + } + }, { + key: "start", + value: function start(delay, offset, duration) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var source; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + //sind sonst null, schmeißt in Android 5 einen fehler + delay = Helper_1.Helper.nonNull(delay, 0); + offset = Helper_1.Helper.nonNull(offset, 0); //Duration darf nicht gesetzt werden + // duration = Helper.nonNull(duration, -1); + + source = this._context.createBufferSource(); + source.loop = this._shouldLoop; + + if (Helper_1.Helper.isNotNull(this._loopStart)) { + source.loopStart = this._loopStart; + } + + if (Helper_1.Helper.isNotNull(this._loopEnd)) { + source.loopEnd = this._loopEnd; + } + + source.buffer = this._buffer; + _context.next = 9; + return this._chainFunction(source); + + case 9: + if (Helper_1.Helper.isNull(duration)) { + source.start(delay, offset); + } else { + source.start(delay, offset, duration); + } + + this._startTime = new Date().getTime() - Helper_1.Helper.nonNull(offset, 0) * 1000; + this._source = source; + this._running = true; + + case 13: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "stop", + value: function stop(delay) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (!Helper_1.Helper.isNotNull(this._source)) { + _context2.next = 5; + break; + } + + delay = Helper_1.Helper.nonNull(delay, 0); + this._pauseTime = new Date().getTime() - this._startTime; + this._running = false; + return _context2.abrupt("return", this._source.stop(delay)); + + case 5: + return _context2.abrupt("return", null); + + case 6: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "resume", + value: function resume() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + if (this._running) { + _context3.next = 2; + break; + } + + return _context3.abrupt("return", this.start(null, Helper_1.Helper.nonNull(this._pauseTime, 0) / 1000.0)); + + case 2: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }]); + + return AudioChain; +}(); + +exports.AudioChain = AudioChain; + +/***/ }), +/* 268 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var App_1 = __webpack_require__(33); + +var Translator_1 = __webpack_require__(32); + +var deTranslations = __webpack_require__(520); + +var enTranslations = __webpack_require__(521); + +App_1.App.addInitialization(function () { + console.log("user trsnslation"); + Translator_1.Translator.addDynamicTranslations({ + "de": deTranslations, + "en": enTranslations + }); +}); + +/***/ }), +/* 269 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var client_1 = __webpack_require__(4); + +var shared_1 = __webpack_require__(522); + +var deTranslations = __webpack_require__(523); + +var enTranslations = __webpack_require__(524); + +client_1.App.addInitialization(function () { + shared_1.Translator.addDynamicTranslations({ + "de": deTranslations, + "en": enTranslations + }); +}); + +/***/ }), +/* 270 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Access = void 0; + +var shared_1 = __webpack_require__(127); + +var cordova_sites_database_1 = __webpack_require__(19); + +var Access = /*#__PURE__*/function (_shared_1$EasySyncBas) { + _inherits(Access, _shared_1$EasySyncBas); + + var _super = _createSuper(Access); + + function Access() { + var _this; + + _classCallCheck(this, Access); + + _this = _super.call(this); + _this.name = null; + _this.description = null; + return _this; + } + + _createClass(Access, null, [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(Access), "getColumnDefinitions", this).call(this); + + columns["name"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + unique: true + }; + columns["description"] = { + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING + }; + return columns; + } + }]); + + return Access; +}(shared_1.EasySyncBaseModel); + +exports.Access = Access; +Access.CAN_BE_SYNCED = false; +cordova_sites_database_1.BaseDatabase.addModel(Access); + +/***/ }), +/* 271 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ForgotPasswordSite = void 0; + +var UserSite_1 = __webpack_require__(126); + +var client_1 = __webpack_require__(4); + +var view = __webpack_require__(526); + +var UserManager_1 = __webpack_require__(99); + +var LoginSite_1 = __webpack_require__(148); + +var ForgotPasswordSite = /*#__PURE__*/function (_client_1$MenuSite) { + _inherits(ForgotPasswordSite, _client_1$MenuSite); + + var _super2 = _createSuper(ForgotPasswordSite); + + function ForgotPasswordSite(siteManager) { + var _this; + + _classCallCheck(this, ForgotPasswordSite); + + _this = _super2.call(this, siteManager, view); + + _this.addDelegate(new UserSite_1.UserSite(_assertThisInitialized(_this), LoginSite_1.LoginSite.ACCESS)); + + return _this; + } + + _createClass(ForgotPasswordSite, [{ + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this2 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return _get(_getPrototypeOf(ForgotPasswordSite.prototype), "onConstruct", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var res; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onConstruct.call(this, constructParameters); + + if (client_1.Helper.isSet(constructParameters["t"])) { + this._token = constructParameters["t"]; + } + + return _context.abrupt("return", res); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this3 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(ForgotPasswordSite.prototype), "onViewLoaded", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this4 = this; + + var res, form, resetForm; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + res = _super.onViewLoaded.call(this); + form = new client_1.Form(this.findBy("#forgot-password-form"), function (data) { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return UserManager_1.UserManager.getInstance().sendForgotPasswordEmail(data["email"]); + + case 2: + if (!_context2.sent) { + _context2.next = 8; + break; + } + + new client_1.Toast("forgot-password-mail sent").show(); + _context2.next = 6; + return this.finish(); + + case 6: + _context2.next = 9; + break; + + case 8: + form.setErrors({ + "email": "email is not in our database" + }); + + case 9: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + }); + resetForm = new client_1.Form(this.findBy("#reset-password-form"), function (data) { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return UserManager_1.UserManager.getInstance().resetPassword(this._token, data["password1"]); + + case 2: + if (!_context3.sent) { + _context3.next = 8; + break; + } + + new client_1.Toast("password resetted").show(); + _context3.next = 6; + return this.finish(); + + case 6: + _context3.next = 10; + break; + + case 8: + _context3.next = 10; + return new client_1.Toast("token is not valid!").show(); + + case 10: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + }); + resetForm.addValidator(function (data) { + var errors = {}; + var hasErrors = false; + + if (data["password1"].trim() === "") { + hasErrors = true; + errors["password1"] = "no password set"; + } + + if (data["password1"] !== data["password2"]) { + hasErrors = true; + errors["password2"] = "not equal to password1"; + } + + if (hasErrors) { + return errors; + } else { + return true; + } + }); + + if (this._token) { + this.findBy("#reset-password").classList.remove("hidden"); + this.findBy("#forgot-password").classList.add("hidden"); + } + + return _context4.abrupt("return", res); + + case 6: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }]); + + return ForgotPasswordSite; +}(client_1.MenuSite); + +exports.ForgotPasswordSite = ForgotPasswordSite; +client_1.App.addInitialization(function (app) { + app.addDeepLink("forgotPW", ForgotPasswordSite); +}); + +/***/ }), +/* 272 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NotAllowedSite = void 0; + +var MenuSite_1 = __webpack_require__(69); + +var view = __webpack_require__(527); + +var NotAllowedSite = /*#__PURE__*/function (_MenuSite_1$MenuSite) { + _inherits(NotAllowedSite, _MenuSite_1$MenuSite); + + var _super2 = _createSuper(NotAllowedSite); + + function NotAllowedSite(siteManager) { + _classCallCheck(this, NotAllowedSite); + + return _super2.call(this, siteManager, view); + } + + _createClass(NotAllowedSite, [{ + key: "onConstruct", + value: function onConstruct(constructParameters) { + return _get(_getPrototypeOf(NotAllowedSite.prototype), "onConstruct", this).call(this, constructParameters); + } + }, { + key: "onCreateMenu", + value: function onCreateMenu(navbar) { + return _get(_getPrototypeOf(NotAllowedSite.prototype), "onCreateMenu", this).call(this, navbar); + } + }, { + key: "onPause", + value: function onPause() { + var _this = this; + + var _super = Object.create(null, { + onPause: { + get: function get() { + return _get(_getPrototypeOf(NotAllowedSite.prototype), "onPause", _this); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var res; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onPause.call(this); + _context.next = 3; + return this.finish(); + + case 3: + return _context.abrupt("return", res); + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }]); + + return NotAllowedSite; +}(MenuSite_1.MenuSite); + +exports.NotAllowedSite = NotAllowedSite; + +/***/ }), +/* 273 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SelectUserDialog = void 0; + +var Dialog_1 = __webpack_require__(84); + +var ViewInflater_1 = __webpack_require__(58); + +var DataManager_1 = __webpack_require__(68); + +var ViewHelper_1 = __webpack_require__(27); + +var Helper_1 = __webpack_require__(7); + +var view = __webpack_require__(528); + +var SelectUserDialog = /*#__PURE__*/function (_Dialog_1$Dialog) { + _inherits(SelectUserDialog, _Dialog_1$Dialog); + + var _super = _createSuper(SelectUserDialog); + + function SelectUserDialog() { + var _this; + + _classCallCheck(this, SelectUserDialog); + + return _this = _super.call(this, ViewInflater_1.ViewInflater.getInstance().load(view).then(function (view) { + return __awaiter(_assertThisInitialized(_this), void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this2 = this; + + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + this._loadUserTimeout = null; + this._usernameInput = view.querySelector("#username-input"); + + this._usernameInput.addEventListener("keydown", function () { + clearTimeout(_this2._loadUserTimeout); + _this2._loadUserTimeout = setTimeout(function () { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return this._loadUsers(this._usernameInput.value); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + }, 500); + }); + + this._userContainer = view.querySelector("#user-container"); + this._userTemplate = view.querySelector("#user-template"); + + this._userTemplate.remove(); + + this._userTemplate.removeAttribute("id"); + + this._loadUsers(); + + return _context2.abrupt("return", view); + + case 9: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + }), "select user"); + } + + _createClass(SelectUserDialog, [{ + key: "_loadUsers", + value: function _loadUsers(username) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this3 = this; + + var res, users; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + debugger; + _context3.next = 3; + return DataManager_1.DataManager.load("user/listUsers" + DataManager_1.DataManager.buildQuery({ + username: Helper_1.Helper.nonNull(username, "") + })); + + case 3: + res = _context3.sent; + + if (res["success"]) { + ViewHelper_1.ViewHelper.removeAllChildren(this._userContainer); + users = res["data"]; + users.forEach(function (user) { + var userElement = _this3._userTemplate.cloneNode(true); + + userElement.querySelector(".name").innerText = user.username; + userElement.addEventListener("click", function () { + _this3._result = user; + + _this3.close(); + }); + + _this3._userContainer.appendChild(userElement); + }); + } + + case 5: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }]); + + return SelectUserDialog; +}(Dialog_1.Dialog); + +exports.SelectUserDialog = SelectUserDialog; + +/***/ }), +/* 274 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FileTransferPromise = void 0; + +var Helper_1 = __webpack_require__(7); + +var FilePromise_1 = __webpack_require__(206); + +var DataManager_1 = __webpack_require__(68); + +var FileTransferPromise = /*#__PURE__*/function () { + function FileTransferPromise(downloadUrl, storagePath) { + _classCallCheck(this, FileTransferPromise); + + this.downloadUrl = downloadUrl; + + if (Helper_1.Helper.isNull(storagePath)) { + var parts = this.downloadUrl.split("/"); + + if (parts.length > 0) { + storagePath = parts[parts.length - 1]; + } + } + + this.storagePath = storagePath; + } + + _createClass(FileTransferPromise, [{ + key: "download", + value: function download() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var blob, filePromise, fileWriter; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + debugger; + blob = DataManager_1.DataManager.fetchBlob(this.downloadUrl); + _context.next = 4; + return FilePromise_1.FilePromise.open(this.storagePath); + + case 4: + filePromise = _context.sent; + _context.next = 7; + return filePromise.createWriter(); + + case 7: + fileWriter = _context.sent; + _context.t0 = fileWriter; + _context.next = 11; + return blob; + + case 11: + _context.t1 = _context.sent; + _context.next = 14; + return _context.t0.write.call(_context.t0, _context.t1); + + case 14: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }]); + + return FileTransferPromise; +}(); + +exports.FileTransferPromise = FileTransferPromise; + +/***/ }), +/* 275 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FileWriterPromise = void 0; + +var FileWriterPromise = /*#__PURE__*/function () { + function FileWriterPromise(fileWriter) { + _classCallCheck(this, FileWriterPromise); + + this.fileWriter = fileWriter; + this._isWritingPromise = Promise.resolve(); + } + + _createClass(FileWriterPromise, [{ + key: "write", + value: function write(data) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this = this; + + var promise; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + promise = this._isWritingPromise.then(function () { + return new Promise(function (res, rej) { + _this.fileWriter.onwriteend = res; + _this.fileWriter.onerror = rej; + + _this.fileWriter.write(data); + }); + }); + this._isWritingPromise = promise.catch(console.error); + return _context.abrupt("return", promise); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }]); + + return FileWriterPromise; +}(); + +exports.FileWriterPromise = FileWriterPromise; + +/***/ }), +/* 276 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ClientModel = void 0; + +var cordova_sites_database_1 = __webpack_require__(19); + +var client_1 = __webpack_require__(4); + +var shared_1 = __webpack_require__(22); + +var ClientModel = /*#__PURE__*/function (_cordova_sites_databa) { + _inherits(ClientModel, _cordova_sites_databa); + + var _super2 = _createSuper(ClientModel); + + function ClientModel() { + _classCallCheck(this, ClientModel); + + return _super2.apply(this, arguments); + } + + _createClass(ClientModel, [{ + key: "toJSON", + value: function toJSON(includeFull) {} + }, { + key: "save", + value: function save(local) { + var _this = this; + + var _super = Object.create(null, { + save: { + get: function get() { + return _get(_getPrototypeOf(ClientModel.prototype), "save", _this); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var values, data; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (local) { + _context.next = 9; + break; + } + + values = this.toJSON(); + _context.next = 4; + return client_1.DataManager.send(this.constructor.SAVE_PATH, { + "model": this.constructor.getSchemaName(), + "values": values + }); + + case 4: + data = _context.sent; + + if (!(data.success === false)) { + _context.next = 7; + break; + } + + throw new Error(data.errors); + + case 7: + _context.next = 9; + return this.constructor._fromJson(data, this, true); + + case 9: + return _context.abrupt("return", _super.save.call(this)); + + case 10: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "delete", + value: function _delete(local) { + var _this2 = this; + + var _super = Object.create(null, { + delete: { + get: function get() { + return _get(_getPrototypeOf(ClientModel.prototype), "delete", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var data; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (local) { + _context2.next = 6; + break; + } + + _context2.next = 3; + return client_1.DataManager.send(this.constructor.DELETE_PATH, { + "model": this.constructor.getSchemaName(), + "id": this.id + }); + + case 3: + data = _context2.sent; + + if (!(data.success === false)) { + _context2.next = 6; + break; + } + + throw new Error(data.errors); + + case 6: + return _context2.abrupt("return", _super.delete.call(this)); + + case 7: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }], [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(ClientModel), "getColumnDefinitions", this).call(this); + + if (columns["id"] && columns["id"]["generated"]) { + columns["id"]["generated"] = false; + } + + return columns; + } + }, { + key: "_fromJson", + value: function _fromJson(jsonObjects, models, includeRelations) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + } + }, { + key: "saveMany", + value: function saveMany(entities, local) { + var _this3 = this; + + var _super = Object.create(null, { + saveMany: { + get: function get() { + return _get(_getPrototypeOf(ClientModel), "saveMany", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var values, data; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + if (local) { + _context4.next = 11; + break; + } + + values = []; + entities.forEach(function (entity) { + values.push(entity.toJSON()); + }); + _context4.next = 5; + return client_1.DataManager.send(this.SAVE_PATH, { + "model": this.getSchemaName(), + "values": values + }); + + case 5: + data = _context4.sent; + + if (!(data.success === false)) { + _context4.next = 8; + break; + } + + throw new Error(data.errors); + + case 8: + _context4.next = 10; + return this._fromJson(data, undefined, true); + + case 10: + entities = _context4.sent; + + case 11: + return _context4.abrupt("return", _super.saveMany.call(this, entities)); + + case 12: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "getSchemaDefinition", + value: function getSchemaDefinition() { + var TYPES_FOR_DEFAULT_ESCAPING = [cordova_sites_database_1.BaseDatabase.TYPES.MEDIUMTEXT, cordova_sites_database_1.BaseDatabase.TYPES.STRING, cordova_sites_database_1.BaseDatabase.TYPES.TEXT]; + + var definitions = _get(_getPrototypeOf(ClientModel), "getSchemaDefinition", this).call(this); + + var columns = definitions["columns"]; + Object.keys(columns).forEach(function (column) { + if (columns[column].type === cordova_sites_database_1.BaseDatabase.TYPES.MEDIUMTEXT) { + columns[column].type = cordova_sites_database_1.BaseDatabase.TYPES.TEXT; + } + + if (columns[column].type === cordova_sites_database_1.BaseDatabase.TYPES.JSON) { + columns[column].type = cordova_sites_database_1.BaseDatabase.TYPES.SIMPLE_JSON; + } + + if (TYPES_FOR_DEFAULT_ESCAPING.indexOf(columns[column].type) !== -1) { + columns[column].escapeJS = shared_1.Helper.nonNull(columns[column].escapeJS, true); + columns[column].escapeHTML = shared_1.Helper.nonNull(columns[column].escapeHTML, true); + } + }); + return definitions; + } + }]); + + return ClientModel; +}(cordova_sites_database_1.BaseModel); + +exports.ClientModel = ClientModel; +ClientModel.SAVE_PATH = "/sync"; +ClientModel.DELETE_PATH = "/sync/delete"; + +/***/ }), +/* 277 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ClientPartialModel = void 0; + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var cordova_sites_database_1 = __webpack_require__(19); + +var client_1 = __webpack_require__(4); + +var Helper_1 = __webpack_require__(7); + +var ClientPartialModel = /*#__PURE__*/function (_EasySyncBaseModel_1$) { + _inherits(ClientPartialModel, _EasySyncBaseModel_1$); + + var _super2 = _createSuper(ClientPartialModel); + + function ClientPartialModel() { + var _this; + + _classCallCheck(this, ClientPartialModel); + + _this = _super2.call(this); + _this.clientId = null; + return _this; + } + + _createClass(ClientPartialModel, [{ + key: "toJSON", + value: function toJSON(includeFull) { + var _this2 = this; + + var relations = this.constructor.getRelationDefinitions(); + var columns = this.constructor.getColumnDefinitions(); + var obj = {}; + Object.keys(columns).forEach(function (attribute) { + if (attribute !== "clientId") { + obj[attribute] = _this2[attribute]; + } + }); + Object.keys(relations).forEach(function (relationName) { + if (includeFull === true) { + obj[relationName] = _this2[relationName]; + } else { + if (Array.isArray(_this2[relationName])) { + var ids = []; + + _this2[relationName].forEach(function (child) { + return child && ids.push(child.id); + }); + + obj[relationName] = ids; + } else if (_this2[relationName] instanceof cordova_sites_database_1.BaseModel) { + obj[relationName] = _this2[relationName].id; + } else { + obj[relationName] = null; + } + } + }); + return obj; + } + }, { + key: "save", + value: function save(local) { + var _this3 = this; + + var _super = Object.create(null, { + save: { + get: function get() { + return _get(_getPrototypeOf(ClientPartialModel.prototype), "save", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var values, data; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + local = Helper_1.Helper.nonNull(local, true); + + if (typeof this.clientId !== "number") { + this.clientId = undefined; + } + + if (local) { + _context.next = 10; + break; + } + + values = this.toJSON(); + _context.next = 6; + return client_1.DataManager.send(this.constructor.SAVE_PATH, { + "model": this.constructor.getSchemaName(), + "values": values + }); + + case 6: + data = _context.sent; + + if (!(data.success !== false)) { + _context.next = 10; + break; + } + + _context.next = 10; + return this.constructor._fromJson(data, this, true); + + case 10: + return _context.abrupt("return", _super.save.call(this, true)); + + case 11: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "delete", + value: function _delete(local) { + var _this4 = this; + + var _super = Object.create(null, { + delete: { + get: function get() { + return _get(_getPrototypeOf(ClientPartialModel.prototype), "delete", _this4); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var data; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (local) { + _context2.next = 6; + break; + } + + _context2.next = 3; + return client_1.DataManager.send(this.constructor.DELETE_PATH, { + "model": this.constructor.getSchemaName(), + "id": this.id + }); + + case 3: + data = _context2.sent; + + if (!(data.success === false)) { + _context2.next = 6; + break; + } + + throw new Error(data.errors); + + case 6: + return _context2.abrupt("return", _super.delete.call(this, true)); + + case 7: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }], [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(ClientPartialModel), "getColumnDefinitions", this).call(this); + + if (columns["id"]) { + columns["id"]["primary"] = false; + columns["id"]["generated"] = false; + columns["id"]["nullable"] = true; + columns["id"]["unique"] = true; + } + + columns["clientId"] = { + type: "integer", + primary: true, + generated: true + }; + return columns; + } + }, { + key: "saveMany", + value: function saveMany(entities, local) { + var _this5 = this; + + var _super = Object.create(null, { + saveMany: { + get: function get() { + return _get(_getPrototypeOf(ClientPartialModel), "saveMany", _this5); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var values, data; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + local = Helper_1.Helper.nonNull(local, true); + entities.forEach(function (entity) { + if (typeof entity.clientId !== "number") { + entity.clientId = undefined; + } + }); + + if (local) { + _context3.next = 12; + break; + } + + values = []; + entities.forEach(function (entity) { + values.push(entity.toJSON()); + }); + _context3.next = 7; + return client_1.DataManager.send(this.SAVE_PATH, { + "model": this.getSchemaName(), + "values": values + }); + + case 7: + data = _context3.sent; + + if (!(data.success !== false)) { + _context3.next = 12; + break; + } + + _context3.next = 11; + return this._fromJson(data, entities, true); + + case 11: + entities = _context3.sent; + + case 12: + return _context3.abrupt("return", _super.saveMany.call(this, entities, true)); + + case 13: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }]); + + return ClientPartialModel; +}(EasySyncBaseModel_1.EasySyncBaseModel); + +exports.ClientPartialModel = ClientPartialModel; + +/***/ }), +/* 278 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AccessEasySyncModel = void 0; + +var shared_1 = __webpack_require__(127); + +var AccessEasySyncModel = /*#__PURE__*/function (_shared_1$EasySyncBas) { + _inherits(AccessEasySyncModel, _shared_1$EasySyncBas); + + var _super = _createSuper(AccessEasySyncModel); + + function AccessEasySyncModel() { + _classCallCheck(this, AccessEasySyncModel); + + return _super.apply(this, arguments); + } + + return AccessEasySyncModel; +}(shared_1.EasySyncBaseModel); + +exports.AccessEasySyncModel = AccessEasySyncModel; +AccessEasySyncModel.ACCESS_READ = true; +AccessEasySyncModel.ACCESS_MODIFY = false; +AccessEasySyncModel.CAN_BE_SYNCED = false; + +/***/ }), +/* 279 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SimpleLevel\", function() { return SimpleLevel; });\n/* harmony import */ var _RowLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RowLevel */ \"./src/client/js/wordrotator/Level/RowLevel.js\");\n\n\nclass SimpleLevel extends _RowLevel__WEBPACK_IMPORTED_MODULE_0__[\"RowLevel\"]{\n constructor(container) {\n super(container, 6);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SimpleLevel.js?"); +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ("img/help.png"); /***/ }), - -/***/ "./src/client/js/wordrotator/Level/SixWordsRowLevel.js": -/*!*************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SixWordsRowLevel.js ***! - \*************************************************************/ -/*! exports provided: SixWordsRowLevel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SixWordsRowLevel\", function() { return SixWordsRowLevel; });\n/* harmony import */ var _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Segment/RowSegment */ \"./src/client/js/wordrotator/Segment/RowSegment.js\");\n/* harmony import */ var _Level__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Level */ \"./src/client/js/wordrotator/Level/Level.js\");\n/* harmony import */ var _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Segment/ParentSegment */ \"./src/client/js/wordrotator/Segment/ParentSegment.js\");\n/* harmony import */ var _Segment_TriangleSegment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Segment/TriangleSegment */ \"./src/client/js/wordrotator/Segment/TriangleSegment.js\");\n\n\n\n\n\nclass SixWordsRowLevel extends _Level__WEBPACK_IMPORTED_MODULE_1__[\"Level\"] {\n\n constructor(templateContainer, wordLength) {\n super(templateContainer);\n this.wordLength = wordLength;\n }\n\n createSegments() {\n if (this.words.length >= 6 &&\n this.words[0].length >= this.wordLength &&\n this.words[1].length >= this.wordLength &&\n this.words[2].length >= this.wordLength &&\n this.words[3].length >= this.wordLength &&\n this.words[4].length >= this.wordLength &&\n this.words[5].length >= this.wordLength\n ) {\n let leafsWords = [];\n leafsWords[0] = _Level__WEBPACK_IMPORTED_MODULE_1__[\"Level\"]._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n leafsWords[1] = _Level__WEBPACK_IMPORTED_MODULE_1__[\"Level\"]._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n leafsWords[2] = _Level__WEBPACK_IMPORTED_MODULE_1__[\"Level\"]._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate());\n leafsWords[3] = _Level__WEBPACK_IMPORTED_MODULE_1__[\"Level\"]._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate());\n leafsWords[4] = _Level__WEBPACK_IMPORTED_MODULE_1__[\"Level\"]._createLeafsForWord(this.words[4], this.templateContainer.copyLeafTemplate());\n leafsWords[5] = _Level__WEBPACK_IMPORTED_MODULE_1__[\"Level\"]._createLeafsForWord(this.words[5], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_0__[\"RowSegment\"](this.templateContainer.copyRowTemplate());\n for (let i = 0; i < this.wordLength / 4; i++) {\n\n let parents = [];\n parents[0] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[1] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[2] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[3] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[4] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n parents[5] = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n\n parents[0].addChild(leafsWords[0][4*i]);\n parents[0].addChild(leafsWords[0][4*i+1]);\n parents[0].addChild(leafsWords[1][4*i]);\n parents[0].addChild(leafsWords[1][4*i+1]);\n\n parents[1].addChild(leafsWords[0][4*i+2]);\n parents[1].addChild(leafsWords[0][4*i+3]);\n parents[1].addChild(leafsWords[1][4*i+2]);\n parents[1].addChild(leafsWords[1][4*i+3]);\n\n parents[2].addChild(leafsWords[2][4*i]);\n parents[2].addChild(leafsWords[2][4*i+1]);\n parents[2].addChild(leafsWords[3][4*i]);\n parents[2].addChild(leafsWords[3][4*i+1]);\n\n parents[3].addChild(leafsWords[2][4*i+2]);\n parents[3].addChild(leafsWords[2][4*i+3]);\n parents[3].addChild(leafsWords[3][4*i+2]);\n parents[3].addChild(leafsWords[3][4*i+3]);\n\n parents[4].addChild(leafsWords[4][4*i]);\n parents[4].addChild(leafsWords[4][4*i+1]);\n parents[4].addChild(leafsWords[5][4*i]);\n parents[4].addChild(leafsWords[5][4*i+1]);\n\n parents[5].addChild(leafsWords[4][4*i+2]);\n parents[5].addChild(leafsWords[4][4*i+3]);\n parents[5].addChild(leafsWords[5][4*i+2]);\n parents[5].addChild(leafsWords[5][4*i+3]);\n\n let parent = new _Segment_ParentSegment__WEBPACK_IMPORTED_MODULE_2__[\"ParentSegment\"](this.templateContainer.copyParentTemplate());\n let triangle = new _Segment_TriangleSegment__WEBPACK_IMPORTED_MODULE_3__[\"TriangleSegment\"](this.templateContainer.copyTriangleTemplate());\n if (i % 2 === 0) {\n parent.addChild(parents[0]);\n parent.addChild(parents[1]);\n parent.addChild(parents[2]);\n parent.addChild(parents[3]);\n\n let rowSegment = new _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_0__[\"RowSegment\"](this.templateContainer.copyRowTemplate());\n\n rowSegment.addChild(parents[4]);\n rowSegment.addChild(parents[5]);\n\n triangle.addChild(parent);\n triangle.addChild(rowSegment);\n\n triangle.getElement().classList.add(\"type-1\");\n }\n else {\n\n let rowSegment = new _Segment_RowSegment__WEBPACK_IMPORTED_MODULE_0__[\"RowSegment\"](this.templateContainer.copyRowTemplate());\n\n rowSegment.addChild(parents[0]);\n rowSegment.addChild(parents[1]);\n\n triangle.addChild(rowSegment);\n triangle.addChild(parent);\n\n parent.addChild(parents[2]);\n parent.addChild(parents[3]);\n parent.addChild(parents[4]);\n parent.addChild(parents[5]);\n\n triangle.getElement().classList.add(\"type-2\");\n }\n rootSegment.addChild(triangle);\n }\n this.setRootSegment(rootSegment)\n }\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SixWordsRowLevel.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Level/SixWordsRowLevel12.js": -/*!***************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SixWordsRowLevel12.js ***! - \***************************************************************/ -/*! exports provided: SixWordsRowLevel12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SixWordsRowLevel12\", function() { return SixWordsRowLevel12; });\n/* harmony import */ var _SixWordsRowLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SixWordsRowLevel */ \"./src/client/js/wordrotator/Level/SixWordsRowLevel.js\");\n\n\nclass SixWordsRowLevel12 extends _SixWordsRowLevel__WEBPACK_IMPORTED_MODULE_0__[\"SixWordsRowLevel\"] {\n constructor(templateContainer) {\n super(templateContainer, 12);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SixWordsRowLevel12.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Level/SixWordsRowLevel8.js": -/*!**************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/SixWordsRowLevel8.js ***! - \**************************************************************/ -/*! exports provided: SixWordsRowLevel8 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SixWordsRowLevel8\", function() { return SixWordsRowLevel8; });\n/* harmony import */ var _SixWordsRowLevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SixWordsRowLevel */ \"./src/client/js/wordrotator/Level/SixWordsRowLevel.js\");\n\n\nclass SixWordsRowLevel8 extends _SixWordsRowLevel__WEBPACK_IMPORTED_MODULE_0__[\"SixWordsRowLevel\"] {\n constructor(templateContainer) {\n super(templateContainer, 8);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/SixWordsRowLevel8.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_2.js": -/*!***************************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_2.js ***! - \***************************************************************************/ -/*! exports provided: TwoSegmentFourWordsLevel10_0_2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TwoSegmentFourWordsLevel10_0_2\", function() { return TwoSegmentFourWordsLevel10_0_2; });\n/* harmony import */ var _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BigSegmentsLevels */ \"./src/client/js/wordrotator/Level/BigSegmentsLevels.js\");\n\n\nclass TwoSegmentFourWordsLevel10_0_2 extends _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__[\"BigSegmentsLevels\"]{\n constructor(templateContainer) {\n super(templateContainer, 10, [0,2]);\n }\n}\n\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_2.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_3.js": -/*!***************************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_3.js ***! - \***************************************************************************/ -/*! exports provided: TwoSegmentFourWordsLevel10_0_3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TwoSegmentFourWordsLevel10_0_3\", function() { return TwoSegmentFourWordsLevel10_0_3; });\n/* harmony import */ var _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BigSegmentsLevels */ \"./src/client/js/wordrotator/Level/BigSegmentsLevels.js\");\n\n\nclass TwoSegmentFourWordsLevel10_0_3 extends _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__[\"BigSegmentsLevels\"]{\n constructor(templateContainer) {\n super(templateContainer, 10, [0,3]);\n }\n}\n\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_3.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_1_3.js": -/*!***************************************************************************!*\ - !*** ./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_1_3.js ***! - \***************************************************************************/ -/*! exports provided: TwoSegmentFourWordsLevel10_1_3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TwoSegmentFourWordsLevel10_1_3\", function() { return TwoSegmentFourWordsLevel10_1_3; });\n/* harmony import */ var _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BigSegmentsLevels */ \"./src/client/js/wordrotator/Level/BigSegmentsLevels.js\");\n\n\nclass TwoSegmentFourWordsLevel10_1_3 extends _BigSegmentsLevels__WEBPACK_IMPORTED_MODULE_0__[\"BigSegmentsLevels\"]{\n constructor(templateContainer) {\n super(templateContainer, 10, [1,3]);\n }\n}\n\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_1_3.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Segment/ColumnSegment.js": -/*!************************************************************!*\ - !*** ./src/client/js/wordrotator/Segment/ColumnSegment.js ***! - \************************************************************/ -/*! exports provided: ColumnSegment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ColumnSegment\", function() { return ColumnSegment; });\n/* harmony import */ var _RowSegment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RowSegment */ \"./src/client/js/wordrotator/Segment/RowSegment.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nclass ColumnSegment extends _RowSegment__WEBPACK_IMPORTED_MODULE_0__[\"RowSegment\"]{\n\n _updateElement() {\n const childContainer = this.element.querySelector(\".child-container\");\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1__[\"ViewHelper\"].removeAllChildren(childContainer);\n\n this._updateRotationClass();\n\n const self = this;\n this.element.onclick = function (e) {\n self.rotate();\n e.stopPropagation();\n };\n\n for (let i = 0, n = this.children.length; i < n; i++) {\n this.children[i]._updateElement();\n childContainer.appendChild(this.children[i].getElement());\n }\n }\n\n // constructor(element) {\n // super(element);\n // this.rotatable = false;\n // }\n //\n // applyRotations(rotations)\n // {\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // rotations = this.children[i].applyRotations(rotations);\n // }\n // return rotations;\n // }\n //\n // getCurrentRotations(rotations){\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // rotations = this.children[i].getCurrentRotations(rotations);\n // }\n // return rotations;\n // }\n //\n // getCurrentLocked(locked) {\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // locked = this.children[i].getCurrentLocked(locked);\n // }\n // return locked;\n // }\n //\n // applyLocks(locks) {\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // locks = this.children[i].applyLocks(locks);\n // }\n // return locks;\n // }\n //\n // _updateElement() {\n // const childContainer = this.element.querySelector(\".child-container\");\n // ViewHelper.removeAllChildren(childContainer);\n //\n // this._updateRotationClass();\n //\n // const self = this;\n // this.element.onclick = function (e) {\n // self.rotate();\n // e.stopPropagation();\n // };\n //\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // this.children[i]._updateElement();\n // childContainer.appendChild(this.children[i].getElement());\n // }\n // }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Segment/ColumnSegment.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Segment/LeafSegment.js": -/*!**********************************************************!*\ - !*** ./src/client/js/wordrotator/Segment/LeafSegment.js ***! - \**********************************************************/ -/*! exports provided: LeafSegment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LeafSegment\", function() { return LeafSegment; });\n/* harmony import */ var _Segment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Segment */ \"./src/client/js/wordrotator/Segment/Segment.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\nclass LeafSegment extends _Segment__WEBPACK_IMPORTED_MODULE_0__[\"Segment\"] {\n\n constructor(element, leaf) {\n super(element);\n this.leaf = 'A';\n if (js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].isNotNull(leaf)) {\n this.setLeaf(leaf);\n }\n }\n\n sameAs(otherSegment) {\n // debugger;\n return (otherSegment instanceof LeafSegment && otherSegment.leaf === this.leaf);\n }\n\n setLeaf(leaf) {\n this.leaf = leaf;\n }\n\n _updateElement() {\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2__[\"ViewHelper\"].removeAllChildren(this.element.querySelector(\".leaf-element\")).appendChild(document.createTextNode(this.leaf));\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Segment/LeafSegment.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Segment/ParentSegment.js": -/*!************************************************************!*\ - !*** ./src/client/js/wordrotator/Segment/ParentSegment.js ***! - \************************************************************/ -/*! exports provided: ParentSegment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ParentSegment\", function() { return ParentSegment; });\n/* harmony import */ var _Segment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Segment */ \"./src/client/js/wordrotator/Segment/Segment.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\nclass ParentSegment extends _Segment__WEBPACK_IMPORTED_MODULE_0__[\"Segment\"] {\n static initListener() {\n window.addEventListener(\"mousedown\", (e) => {\n console.log(\"mousedown\");\n ParentSegment.mouseDownTarget = e.target;\n ParentSegment.clickPosition = {x: e.pageX, y: e.pageY};\n });\n window.addEventListener(\"mouseup\", (e) => {\n ParentSegment.mouseDownTarget = null;\n ParentSegment.clickPosition = {};\n });\n\n window.addEventListener(\"touchstart\", (e) => {\n if (e.targetTouches.length === 1) {\n ParentSegment.mouseDownTarget = e.targetTouches[0].target;\n ParentSegment.clickPosition = {x: e.targetTouches[0].pageX, y: e.targetTouches[0].pageY};\n }\n });\n window.addEventListener(\"touchend\", (e) => {\n ParentSegment.mouseDownTarget = null;\n ParentSegment.clickPosition = {};\n });\n }\n\n setIsRotatable(rotatable) {\n this.rotatable = rotatable;\n this._updateElement();\n }\n\n constructor(element) {\n super(element);\n this.children = [];\n this.class = \"rotate-0\";\n this.rotatable = true;\n\n this.userRotationDelta = 100;\n this.lastUserRotation = 0;\n\n this.touchendListener = (e) => {\n let now = new Date().getTime();\n\n let target = null;\n let position = null;\n\n if (e.changedTouches.length >= 1) {\n target = document.elementFromPoint(e.changedTouches[0].pageX, e.changedTouches[0].pageY);\n position = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY};\n }\n if (target != null && e.targetTouches.length === 0 && this.element.contains(ParentSegment.mouseDownTarget) && this.element.contains(target)) {\n e.stopPropagation();\n e.preventDefault();\n if (this.lastUserRotation + this.userRotationDelta > now) {\n return;\n }\n this.getLevel().segmentClicked(this);\n this.rotate(ParentSegment.mouseDownTarget, target, ParentSegment.clickPosition, position);\n // console.log(\"touchendListener stopped event\", e);\n\n this.lastUserRotation = new Date().getTime();\n }\n };\n this.mouseupListener = (e) => {\n let now = new Date().getTime();\n\n console.log(\"mouseup\", ParentSegment.mouseDownTarget);\n if (ParentSegment.mouseDownTarget !== null && this.element.contains(ParentSegment.mouseDownTarget) && this.element.contains(e.target)) {\n let position = {x: e.pageX, y: e.pageY};\n e.stopPropagation();\n e.preventDefault();\n if (this.lastUserRotation + this.userRotationDelta > now) {\n return;\n }\n this.getLevel().segmentClicked(this);\n this.rotate(ParentSegment.mouseDownTarget, e.target, ParentSegment.clickPosition, position);\n // console.log(\"mouseupListener stopped event\", e);\n this.lastUserRotation = new Date().getTime();\n }\n };\n }\n\n canRotate() {\n return (this.rotatable && !this.getLevel().getHasWon());\n }\n\n async rotate(firstElem, secondElem, firstPosition, secondPosition) {\n const timeout = 250;\n const clickTolerance = 5;\n\n let rotationDirection = 1;\n if (js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].isNotNull(secondElem) && js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].isNotNull(firstElem) &&\n (js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].isNull(firstPosition) || js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].isNull(secondPosition) ||\n Math.abs(firstPosition.x - secondPosition.x) > clickTolerance ||\n Math.abs(firstPosition.y - secondPosition.y) > clickTolerance)) {\n\n let firstIndex = -1;\n let secondIndex = -1;\n let rotationIndexes = [0, 1, 3, 2];\n for (let i = 0; i < this.children.length; i++) {\n if (this.children[rotationIndexes[i]].element === firstElem || this.children[rotationIndexes[i]].element.contains(firstElem)) {\n firstIndex = (i + this.rotation / 90) % 4;\n }\n if (this.children[rotationIndexes[i]].element === secondElem || this.children[rotationIndexes[i]].element.contains(secondElem)) {\n secondIndex = (i + this.rotation / 90) % 4;\n }\n }\n\n if (firstIndex >= 0 && secondIndex >= 0) {\n if (firstIndex === 2 && (secondIndex === 0 || secondIndex === 1)\n || firstIndex === 1 && (secondIndex === 0 || secondIndex === 3)\n || (firstIndex === 0 && secondIndex === 3)\n || (firstIndex === 3 && secondIndex === 2)) {\n rotationDirection = -1;\n }\n }\n }\n\n if (this.canRotate()) {\n this.rotation += 360 + 90 * rotationDirection;\n this.rotation %= 360;\n\n let currentRotation = this.rotation;\n\n this._updateRotationClass();\n this.element.classList.add(\"rotating\");\n if (rotationDirection === -1) {\n this.element.classList.add(\"reverse\");\n }\n\n let delayPromise = new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n }).then(() => {\n if (this.rotation === currentRotation) {\n this.element.classList.remove(\"rotating\");\n this.element.classList.remove(\"reverse\");\n }\n });\n this.getLevel().checkHasWon(delayPromise);\n return delayPromise;\n }\n }\n\n sameAs(otherSegment) {\n if (!(otherSegment instanceof ParentSegment) || otherSegment.children.length !== this.children.length) {\n return false;\n }\n for (let i = 0; i < this.children.length; i++) {\n if (!this.children[i].sameAs(otherSegment.children[i])) {\n return false;\n }\n }\n return true;\n }\n\n applyRotations(rotations) {\n this.rotation = rotations[0];\n\n if (isNaN(this.rotation)) {\n this.rotation = 0;\n }\n\n rotations.splice(0, 1);\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].applyRotations(rotations);\n }\n return rotations;\n }\n\n applyLocks(locks) {\n this.rotatable = (locks[0] !== false);\n locks.splice(0, 1);\n for (let i = 0, n = this.children.length; i < n; i++) {\n locks = this.children[i].applyLocks(locks);\n }\n return locks;\n }\n\n getCurrentRotations(rotations) {\n rotations.push(this.rotation);\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].getCurrentRotations(rotations);\n }\n return rotations;\n }\n\n getCurrentLocked(locked) {\n locked.push(this.rotatable);\n for (let i = 0, n = this.children.length; i < n; i++) {\n locked = this.children[i].getCurrentLocked(locked);\n }\n return locked;\n }\n\n isSolved(checkChildren) {\n checkChildren = js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_1__[\"Helper\"].nonNull(checkChildren, true);\n if (checkChildren) {\n for (let i = 0, n = this.children.length; i < n; i++) {\n if (!this.children[i].isSolved()) {\n return false;\n }\n }\n }\n return (this.rotation === 0 || (\n this.children[0].sameAs(this.children[3]) && this.children[1].sameAs(this.children[2]) && (\n this.rotation === 180 || this.children[0].sameAs(this.children[1]))))\n }\n\n setChildren(children) {\n this.children = [];\n for (let i = 0, n = children.length; i < n; i++) {\n this.addChild(children[i]);\n }\n }\n\n addChild(child) {\n this.children.push(child);\n child.setParent(this);\n this._updateElement();\n }\n\n _updateRotationClass() {\n // this.style.transform = \"rotate(\"+this.rotation+\"deg)\";\n this.element.classList.remove(this.class);\n this.class = \"rotate-\" + this.rotation;\n if (this.class === \"rotate-0\") {\n this.class = \"rotate-360\";\n }\n this.element.classList.add(this.class);\n }\n\n _updateElement() {\n let layer = this._getLayer();\n if (layer >= 2) {\n this.element.classList.add(\"layer-\" + layer);\n }\n\n if (!this.rotatable) {\n this.element.classList.add(\"locked\");\n }\n\n const childContainer = this.element.querySelector(\".child-container\");\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_2__[\"ViewHelper\"].removeAllChildren(childContainer);\n\n this._updateRotationClass();\n\n this.element.removeEventListener(\"mouseup\", this.mouseupListener);\n this.element.removeEventListener(\"touchend\", this.touchendListener);\n\n this.element.addEventListener(\"mouseup\", this.mouseupListener);\n this.element.addEventListener(\"touchend\", this.touchendListener);\n\n for (let i = 0, n = this.children.length; i < n; i++) {\n this.children[i]._updateElement();\n childContainer.appendChild(this.children[i].getElement());\n if (i % 2 === 1 && this.children.length - 1 !== i) {\n childContainer.appendChild(document.createElement(\"br\"));\n }\n }\n }\n\n _getLayer() {\n if (this.children.length >= 1 && this.children[0] && this.children[0] instanceof ParentSegment) {\n return this.children[0]._getLayer() + 1;\n }\n return 1;\n }\n}\n\nParentSegment.initListener();\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Segment/ParentSegment.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Segment/RowSegment.js": -/*!*********************************************************!*\ - !*** ./src/client/js/wordrotator/Segment/RowSegment.js ***! - \*********************************************************/ -/*! exports provided: RowSegment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RowSegment\", function() { return RowSegment; });\n/* harmony import */ var _ParentSegment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ParentSegment */ \"./src/client/js/wordrotator/Segment/ParentSegment.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-helper/dist/client/ViewHelper */ \"./node_modules/js-helper/dist/client/ViewHelper.js\");\n/* harmony import */ var js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nclass RowSegment extends _ParentSegment__WEBPACK_IMPORTED_MODULE_0__[\"ParentSegment\"]{\n constructor(element) {\n super(element);\n this.rotatable = false;\n }\n\n applyRotations(rotations)\n {\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].applyRotations(rotations);\n }\n return rotations;\n }\n\n getCurrentRotations(rotations){\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].getCurrentRotations(rotations);\n }\n return rotations;\n }\n\n getCurrentLocked(locked) {\n for (let i = 0, n = this.children.length; i < n; i++) {\n locked = this.children[i].getCurrentLocked(locked);\n }\n return locked;\n }\n\n applyLocks(locks) {\n for (let i = 0, n = this.children.length; i < n; i++) {\n locks = this.children[i].applyLocks(locks);\n }\n return locks;\n }\n\n _updateElement() {\n const childContainer = this.element.querySelector(\".child-container\");\n js_helper_dist_client_ViewHelper__WEBPACK_IMPORTED_MODULE_1__[\"ViewHelper\"].removeAllChildren(childContainer);\n\n this._updateRotationClass();\n\n const self = this;\n this.element.onclick = function (e) {\n self.rotate();\n e.stopPropagation();\n };\n\n for (let i = 0, n = this.children.length; i < n; i++) {\n this.children[i]._updateElement();\n childContainer.appendChild(this.children[i].getElement());\n }\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Segment/RowSegment.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Segment/Segment.js": -/*!******************************************************!*\ - !*** ./src/client/js/wordrotator/Segment/Segment.js ***! - \******************************************************/ -/*! exports provided: Segment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Segment\", function() { return Segment; });\n\nclass Segment{\n constructor(element){\n this.rotation = 0;\n this.element = element;\n this.parent = null;\n }\n\n getCurrentRotations(rotations){\n return rotations;\n }\n\n sameAs(otherSegment){\n return false;\n }\n\n setParent(parent)\n {\n this.parent = parent;\n }\n \n getLevel()\n {\n if (this.parent!==null)\n {\n return this.parent.getLevel();\n }\n }\n\n canRotate(){\n return false;\n }\n\n isSolved(){\n return (this.rotation === 0);\n }\n \n async rotate(){\n return Promise.resolve();\n };\n\n _updateElement(){};\n\n applyRotations(rotations){\n return rotations;\n }\n\n applyLocks(locks)\n {\n return locks;\n }\n\n getCurrentLocked(lockedArray){\n return lockedArray;\n }\n\n getElement()\n {\n return this.element;\n }\n}\n\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Segment/Segment.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Segment/TemplateContainer.js": -/*!****************************************************************!*\ - !*** ./src/client/js/wordrotator/Segment/TemplateContainer.js ***! - \****************************************************************/ -/*! exports provided: TemplateContainer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TemplateContainer\", function() { return TemplateContainer; });\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! js-helper/dist/shared/Helper */ \"./node_modules/js-helper/dist/shared/Helper.js\");\n/* harmony import */ var js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared_Helper__WEBPACK_IMPORTED_MODULE_0__);\n\n\nclass TemplateContainer{\n constructor(leafTemplate, parentTemplate, rowTemplate, triangleTemplate, columnTemplate){\n this.leafTemplate = leafTemplate;\n this.parentTemplate = parentTemplate;\n this.rowTemplate = rowTemplate;\n this.triangleTemplate = triangleTemplate;\n this.columnTemplate = columnTemplate;\n }\n\n copyLeafTemplate()\n {\n return this.leafTemplate.cloneNode(true);\n }\n\n copyParentTemplate()\n {\n return this.parentTemplate.cloneNode(true);\n }\n\n copyRowTemplate()\n {\n return this.rowTemplate.cloneNode(true);\n }\n\n copyTriangleTemplate()\n {\n return this.triangleTemplate.cloneNode(true);\n }\n\n copyColumnTemplate(){\n return this.columnTemplate.cloneNode(true);\n }\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Segment/TemplateContainer.js?"); - -/***/ }), - -/***/ "./src/client/js/wordrotator/Segment/TriangleSegment.js": -/*!**************************************************************!*\ - !*** ./src/client/js/wordrotator/Segment/TriangleSegment.js ***! - \**************************************************************/ -/*! exports provided: TriangleSegment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TriangleSegment\", function() { return TriangleSegment; });\n/* harmony import */ var _RowSegment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RowSegment */ \"./src/client/js/wordrotator/Segment/RowSegment.js\");\n\n\nclass TriangleSegment extends _RowSegment__WEBPACK_IMPORTED_MODULE_0__[\"RowSegment\"]{\n\n}\n\n//# sourceURL=webpack:///./src/client/js/wordrotator/Segment/TriangleSegment.js?"); - -/***/ }), - -/***/ "./src/client/sass/index.scss": -/*!************************************!*\ - !*** ./src/client/sass/index.scss ***! - \************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (__webpack_require__.p + \"index.css\");\n\n//# sourceURL=webpack:///./src/client/sass/index.scss?"); - -/***/ }), - -/***/ "./src/client/sound/brightAndBeautifull__.mp3": -/*!****************************************************!*\ - !*** ./src/client/sound/brightAndBeautifull__.mp3 ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"img/brightAndBeautifull__.mp3\");\n\n//# sourceURL=webpack:///./src/client/sound/brightAndBeautifull__.mp3?"); - -/***/ }), - -/***/ "./src/client/sound/single_coin_fall_on_concrete_.mp3": -/*!************************************************************!*\ - !*** ./src/client/sound/single_coin_fall_on_concrete_.mp3 ***! - \************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"img/single_coin_fall_on_concrete_.mp3\");\n\n//# sourceURL=webpack:///./src/client/sound/single_coin_fall_on_concrete_.mp3?"); - -/***/ }), - -/***/ "./src/client/translations/de.json": -/*!*****************************************!*\ - !*** ./src/client/translations/de.json ***! - \*****************************************/ -/*! exports provided: won, continue, help, not-enough-coins, sync-error, game-ended, play, tutorial-step-1, tutorial-step-2, tutorial-step-3, tutorial-step-4, extra-coins-after-first-level, dark, theme, sound, music, credits, privacy-policy, impressum, track, >, choose-theme-dialog-title, install, share-dialog, credits-text, credits-coin-text, credits-music-text, storage-info, storage-permission-not-get, storage-permission-get, persist-storage-dialog-title, persist-storage-dialog-message, notification-permission-denied, already-persisted-dialog-message, already-persisted-dialog-title, persist-storage-dialog-message-firefox, warning-data-not-persistent, version-label, share-text, share, document-title, document-title-empty, contact, contact text, e-mail, privacy policy accepted, message, send, the message was sent, wr, tutorial, tutorial-1, tutorial-2, tutorial-3, you solved the tutorial level!, default */ +/* 280 */ /***/ (function(module) { -eval("module.exports = JSON.parse(\"{\\\"won\\\":\\\"Gewonnen!\\\",\\\"continue\\\":\\\"Weiter\\\",\\\"help\\\":\\\"?\\\",\\\"not-enough-coins\\\":\\\"Du hast zu wenig Münzen!\\\",\\\"sync-error\\\":\\\"Es gab einen Fehler beim Aktualisieren der Level. Bitte stelle sicher, dass du eine aktive Internetverbindung hast und versuche es später erneut.\\\",\\\"game-ended\\\":\\\"Oh nein!
Es sieht so aus, als ob du schon alle Level gespielt hast...
Schau später noch einmal rein, evtl gibt es dann neue Level.\\\",\\\"play\\\":\\\"Spielen!\\\",\\\"tutorial-step-1\\\":\\\"Klicke auf ein Feld, um dieses rotieren zu lassen!\\\",\\\"tutorial-step-2\\\":\\\"Um zu gewinnen, drehe die Segmente so, dass du zwei Wörter lesen kannst.\\\",\\\"tutorial-step-3\\\":\\\"Die Hilfe löst ein Segment, kostet aber 25 Münzen. Probiere jetzt die Hilfe aus.\\\",\\\"tutorial-step-4\\\":\\\"Große Segmente drehst du, indem du diese ziehst.\\\",\\\"extra-coins-after-first-level\\\":\\\"Für das erste Level gibt es 50 extra Münzen!\\\",\\\"dark\\\":\\\"Dunkel\\\",\\\"theme\\\":\\\"Theme:\\\",\\\"sound\\\":\\\"Sound:\\\",\\\"music\\\":\\\"Musik:\\\",\\\"credits\\\":\\\"Credits\\\",\\\"privacy-policy\\\":\\\"Datenschutzbestimmungen\\\",\\\"impressum\\\":\\\"Impressum\\\",\\\"track\\\":\\\"Anonymisierte Nutzungsdaten senden:\\\",\\\">\\\":\\\">\\\",\\\"choose-theme-dialog-title\\\":\\\"Theme auswählen:\\\",\\\"install\\\":\\\"Installieren\\\",\\\"share-dialog\\\":\\\"Teilen:\\\",\\\"credits-text\\\":\\\"Ein großer Dank geht an Hanna, denn ohne sie sähe die App nicht so aus, wie sie aussieht. Danke für deine guten Vorschlä und Ratschläge für das Design!\\\",\\\"credits-coin-text\\\":\\\"Sound:
Der Münz-Sound ist von der Webseite
{0}. Alle Rechte für diesen Münz-Sound gehören {0}.\\\",\\\"credits-music-text\\\":\\\"Musik:
Bright And Beautiful - GEMAfreie Musik von {0}
Licensed under Creative Commons: By Attribution 4.0 International (CC BY 4.0)
{1}
Angepasst (geschnitten) für diese App\\\",\\\"storage-info\\\":\\\"Fortschritt {0} dauerhaft gespeichert\\\",\\\"storage-permission-not-get\\\":\\\"Der Browser gibt nicht die Erlaubnis zur dauerhaften Speicherung...\\\",\\\"storage-permission-get\\\":\\\"Die Daten sind nun dauerhaft gespeichert\\\",\\\"persist-storage-dialog-title\\\":\\\"Daten dauerhaft speichern?\\\",\\\"persist-storage-dialog-message\\\":\\\"Der Fortschritt und die Level dieser WebApp sind nur temporär gespeichert. Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:

1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.

Damit die Daten dieser Webseite nicht gelöscht werden, erlaube bitte Benachrichtigungen. Alternativ kannst du die Seite auch als Lesezeichen speichern.\\\",\\\"notification-permission-denied\\\":\\\"Die Berechtigung für Benachrichtigungen wurde verwährt\\\",\\\"already-persisted-dialog-message\\\":\\\"Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:
1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.
Du erfüllst schon ein Kriterium und daher wird dein Fortschritt dauerhaft gespeichert (außer du löscht sie)\\\",\\\"already-persisted-dialog-title\\\":\\\"Daten werden dauerhaft gespeichert!\\\",\\\"persist-storage-dialog-message-firefox\\\":\\\"Damit dein Fortschritt dauerhaft gespeichert wird, musst du zulassen, dass Daten dauerhaft gespeichert werden.\\\",\\\"warning-data-not-persistent\\\":\\\"Achtung! Dein Fortschritt kann verloren gehen! Gehe die Einstellungen für mehr Infos.\\\",\\\"version-label\\\":\\\"Version:\\\",\\\"share-text\\\":\\\"Schau dir diese coole App an:\\\\n{0}\\\",\\\"share\\\":\\\"Teilen\\\",\\\"document-title\\\":\\\"WordRotator\\\",\\\"document-title-empty\\\":\\\"WordRotator\\\",\\\"contact\\\":\\\"Kontakt\\\",\\\"contact text\\\":\\\"Du möchtest Kontakt mit uns aufnehmen? Kein Problem, nutze einfach das Kontaktformular oder sende uns eine E-Mail an {0}.\\\\n Egal, ob du uns eine E-Mail sendest oder das Kontaktformular benutzt, akzeptierst du unsere Datenschutzbestimmung\\\",\\\"e-mail\\\":\\\"E-Mailadresse\\\",\\\"privacy policy accepted\\\":\\\" akzeptiert\\\",\\\"message\\\":\\\"Nachricht\\\",\\\"send\\\":\\\"Senden\\\",\\\"the message was sent\\\":\\\"Die Nachricht wurde gesendet.\\\",\\\"wr\\\":\\\"WR\\\",\\\"tutorial\\\":\\\"Spielregeln\\\",\\\"tutorial-1\\\":\\\"Klicke auf ein Feld, um dieses rotieren zu lassen! Um zu gewinnen, drehe die Segmente so, dass du zwei Wörter lesen kannst.\\\",\\\"tutorial-2\\\":\\\"Die Hilfe löst ein Segment, kostet aber 25 Münzen. Du erhältst 5 Münzen pro gewonnenes Level.\\\",\\\"tutorial-3\\\":\\\"Große Segmente drehst du, indem du diese ziehst.\\\",\\\"you solved the tutorial level!\\\":\\\"Du hast das Tutorial-Level gelöst!\\\"}\");\n\n//# sourceURL=webpack:///./src/client/translations/de.json?"); +module.exports = JSON.parse("{\"won\":\"Gewonnen!\",\"continue\":\"Weiter\",\"help\":\"?\",\"not-enough-coins\":\"Du hast zu wenig Münzen!\",\"sync-error\":\"Es gab einen Fehler beim Aktualisieren der Level. Bitte stelle sicher, dass du eine aktive Internetverbindung hast und versuche es später erneut.\",\"game-ended\":\"Oh nein!
Es sieht so aus, als ob du schon alle Level gespielt hast...
Schau später noch einmal rein, evtl gibt es dann neue Level.\",\"play\":\"Spielen!\",\"tutorial-step-1\":\"Klicke auf ein Feld, um dieses rotieren zu lassen!\",\"tutorial-step-2\":\"Um zu gewinnen, drehe die Segmente so, dass du zwei Wörter lesen kannst.\",\"tutorial-step-3\":\"Die Hilfe löst ein Segment, kostet aber 25 Münzen. Probiere jetzt die Hilfe aus.\",\"tutorial-step-4\":\"Große Segmente drehst du, indem du diese ziehst.\",\"extra-coins-after-first-level\":\"Für das erste Level gibt es 50 extra Münzen!\",\"dark\":\"Dunkel\",\"theme\":\"Theme:\",\"sound\":\"Sound:\",\"music\":\"Musik:\",\"credits\":\"Credits\",\"privacy-policy\":\"Datenschutzbestimmungen\",\"impressum\":\"Impressum\",\"track\":\"Anonymisierte Nutzungsdaten senden:\",\">\":\">\",\"choose-theme-dialog-title\":\"Theme auswählen:\",\"install\":\"Installieren\",\"share-dialog\":\"Teilen:\",\"credits-text\":\"Ein großer Dank geht an Hanna, denn ohne sie sähe die App nicht so aus, wie sie aussieht. Danke für deine guten Vorschläge und Ratschläge für das Design!\",\"credits-coin-text\":\"Sound:
Der Münz-Sound ist von der Webseite
{0}. Alle Rechte für diesen Münz-Sound gehören {0}.\",\"credits-music-text\":\"Musik:
Bright And Beautiful - GEMAfreie Musik von {0}
Licensed under Creative Commons: By Attribution 4.0 International (CC BY 4.0)
{1}
Angepasst (geschnitten) für diese App\",\"storage-info\":\"Fortschritt {0} dauerhaft gespeichert\",\"storage-permission-not-get\":\"Der Browser gibt nicht die Erlaubnis zur dauerhaften Speicherung...\",\"storage-permission-get\":\"Die Daten sind nun dauerhaft gespeichert\",\"persist-storage-dialog-title\":\"Daten dauerhaft speichern?\",\"persist-storage-dialog-message\":\"Der Fortschritt und die Level dieser WebApp sind nur temporär gespeichert. Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:

1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.

Damit die Daten dieser Webseite nicht gelöscht werden, erlaube bitte Benachrichtigungen. Alternativ kannst du die Seite auch als Lesezeichen speichern.\",\"notification-permission-denied\":\"Die Berechtigung für Benachrichtigungen wurde verwährt\",\"already-persisted-dialog-message\":\"Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:
1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.
Du erfüllst schon ein Kriterium und daher wird dein Fortschritt dauerhaft gespeichert (außer du löscht sie)\",\"already-persisted-dialog-title\":\"Daten werden dauerhaft gespeichert!\",\"persist-storage-dialog-message-firefox\":\"Damit dein Fortschritt dauerhaft gespeichert wird, musst du zulassen, dass Daten dauerhaft gespeichert werden.\",\"warning-data-not-persistent\":\"Achtung! Dein Fortschritt kann verloren gehen! Gehe die Einstellungen für mehr Infos.\",\"version-label\":\"Version:\",\"share-text\":\"Schau dir diese coole App an:\\n{0}\",\"share\":\"Teilen\",\"document-title\":\"WordRotator\",\"document-title-empty\":\"WordRotator\",\"contact\":\"Kontakt\",\"contact text\":\"Du möchtest Kontakt mit uns aufnehmen? Kein Problem, nutze einfach das Kontaktformular oder sende uns eine E-Mail an {0}.\\n Egal, ob du uns eine E-Mail sendest oder das Kontaktformular benutzt, akzeptierst du unsere Datenschutzbestimmung\",\"e-mail\":\"E-Mailadresse\",\"privacy policy accepted\":\" akzeptiert\",\"message\":\"Nachricht\",\"send\":\"Senden\",\"the message was sent\":\"Die Nachricht wurde gesendet.\",\"wr\":\"WR\",\"tutorial\":\"Spielregeln\",\"tutorial-1\":\"Klicke auf ein Feld, um dieses rotieren zu lassen! Um zu gewinnen, drehe die Segmente so, dass du zwei Wörter lesen kannst.\",\"tutorial-2\":\"Die Hilfe löst ein Segment, kostet aber 25 Münzen. Du erhältst 5 Münzen pro gewonnenes Level.\",\"tutorial-3\":\"Große Segmente drehst du, indem du diese ziehst.\",\"you solved the tutorial level!\":\"Du hast das Tutorial-Level gelöst!\"}"); /***/ }), - -/***/ "./src/client/translations/en.json": -/*!*****************************************!*\ - !*** ./src/client/translations/en.json ***! - \*****************************************/ -/*! exports provided: won, continue, help, not-enough-coins, sync-error, game-ended, play, tutorial-step-1, tutorial-step-2, tutorial-step-3, tutorial-step-4, extra-coins-after-first-level, dark, theme, sound, music, credits, privacy-policy, impressum, track, >, choose-theme-dialog-title, install, share-dialog, credits-sister-text, credits-coin-text, credits-music-text, storage-info, storage-permission-not-get, storage-permission-get, persist-storage-dialog-title, persist-storage-dialog-message, notification-permission-denied, already-persisted-dialog-message, already-persisted-dialog-title, persist-storage-dialog-message-firefox, warning-data-not-persistent, version-label, share-text, share, document-title, document-title-empty, contact, contact text, e-mail, privacy policy accepted, message, send, the message was sent, default */ +/* 281 */ /***/ (function(module) { -eval("module.exports = JSON.parse(\"{\\\"won\\\":\\\"Won!\\\",\\\"continue\\\":\\\"Continue\\\",\\\"help\\\":\\\"?\\\",\\\"not-enough-coins\\\":\\\"You have to few coins!\\\",\\\"sync-error\\\":\\\"Es gab einen Fehler beim Aktualisieren der Level. Bitte stelle sicher, dass du eine aktive Internetverbindung hast und versuche es später erneut.\\\",\\\"game-ended\\\":\\\"Oh nein!
Es sieht so aus, als ob du schon alle Level gespielt hast...
Schau später noch einmal rein, evtl gibt es dann neue Level.\\\",\\\"play\\\":\\\"Spielen!\\\",\\\"tutorial-step-1\\\":\\\"Klicke auf ein Feld, um dieses rotieren zu lassen!\\\",\\\"tutorial-step-2\\\":\\\"Um zu gewinnen, drehe die Segmente so, dass du zwei Wörter lesen kannst.\\\",\\\"tutorial-step-3\\\":\\\"Die Hilfe löst ein Segment, kostet aber 25 Münzen. Probiere jetzt die Hilfe aus.\\\",\\\"tutorial-step-4\\\":\\\"Große Segmente drehst du, indem du diese ziehst.\\\",\\\"extra-coins-after-first-level\\\":\\\"Für das erste Level gibt es 50 extra Münzen!\\\",\\\"dark\\\":\\\"Dunkel\\\",\\\"theme\\\":\\\"Theme:\\\",\\\"sound\\\":\\\"Sound:\\\",\\\"music\\\":\\\"Musik:\\\",\\\"credits\\\":\\\"Credits\\\",\\\"privacy-policy\\\":\\\"Datenschutzbestimmungen\\\",\\\"impressum\\\":\\\"Impressum\\\",\\\"track\\\":\\\"Anonymisierte Nutzungsdaten senden:\\\",\\\">\\\":\\\">\\\",\\\"choose-theme-dialog-title\\\":\\\"Theme auswählen:\\\",\\\"install\\\":\\\"Installieren\\\",\\\"share-dialog\\\":\\\"Teilen:\\\",\\\"credits-sister-text\\\":\\\"Ich danke meiner Lieblingsschwester, denn ohne Sie würde diese App nicht so aussehen, wie sie aussieht (wahrscheinlich eher schlechter :p)\\\",\\\"credits-coin-text\\\":\\\"Sound:
Der Münz-Sound ist von der Webseite
{0}. Alle Rechte für diesen Münz-Sound gehören {0}.\\\",\\\"credits-music-text\\\":\\\"Musik:
Bright And Beautiful - GEMAfreie Musik von {0}
Licensed under Creative Commons: By Attribution 4.0 International (CC BY 4.0)
{1}
Angepasst (geschnitten) für diese App\\\",\\\"storage-info\\\":\\\"Fortschritt {0} dauerhaft gespeichert\\\",\\\"storage-permission-not-get\\\":\\\"Der Browser gibt nicht die Erlaubnis zur dauerhaften Speicherung...\\\",\\\"storage-permission-get\\\":\\\"Die Daten sind nun dauerhaft gespeichert\\\",\\\"persist-storage-dialog-title\\\":\\\"Daten dauerhaft speichern?\\\",\\\"persist-storage-dialog-message\\\":\\\"Der Fortschritt und die Level dieser WebApp sind nur temporär gespeichert. Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:

1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.

Damit die Daten dieser Webseite nicht gelöscht werden, erlaube bitte Benachrichtigungen. Alternativ kannst du die Seite auch als Lesezeichen speichern.\\\",\\\"notification-permission-denied\\\":\\\"Die Berechtigung für Benachrichtigungen wurde verwährt\\\",\\\"already-persisted-dialog-message\\\":\\\"Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:
1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.
Du erfüllst schon ein Kriterium und daher wird dein Fortschritt dauerhaft gespeichert (außer du löscht sie)\\\",\\\"already-persisted-dialog-title\\\":\\\"Daten werden dauerhaft gespeichert!\\\",\\\"persist-storage-dialog-message-firefox\\\":\\\"Damit dein Fortschritt dauerhaft gespeichert wird, musst du zulassen, dass Daten dauerhaft gespeichert werden.\\\",\\\"warning-data-not-persistent\\\":\\\"Achtung! Dein Fortschritt kann verloren gehen! Gehe die Einstellungen für mehr Infos.\\\",\\\"version-label\\\":\\\"Version:\\\",\\\"share-text\\\":\\\"Schau dir diese coole App an: {0}\\\",\\\"share\\\":\\\"Teilen\\\",\\\"document-title\\\":\\\"WordRotator\\\",\\\"document-title-empty\\\":\\\"WordRotator\\\",\\\"contact\\\":\\\"Kontakt\\\",\\\"contact text\\\":\\\"Du möchtest Kontakt mit uns aufnehmen? Kein Problem, nutze einfach das Kontaktformular oder sende uns eine E-Mail an {0}.\\\\n Egal, ob du uns eine E-Mail sendest oder das Kontaktformular benutzt, akzeptierst du unsere Datenschutzbestimmung\\\",\\\"e-mail\\\":\\\"E-Mailadresse\\\",\\\"privacy policy accepted\\\":\\\" akzeptiert\\\",\\\"message\\\":\\\"Nachricht\\\",\\\"send\\\":\\\"Senden\\\",\\\"the message was sent\\\":\\\"Die Nachricht wurde gesendet.\\\"}\");\n\n//# sourceURL=webpack:///./src/client/translations/en.json?"); +module.exports = JSON.parse("{\"won\":\"Won!\",\"continue\":\"Continue\",\"help\":\"?\",\"not-enough-coins\":\"You have to few coins!\",\"sync-error\":\"Es gab einen Fehler beim Aktualisieren der Level. Bitte stelle sicher, dass du eine aktive Internetverbindung hast und versuche es später erneut.\",\"game-ended\":\"Oh nein!
Es sieht so aus, als ob du schon alle Level gespielt hast...
Schau später noch einmal rein, evtl gibt es dann neue Level.\",\"play\":\"Spielen!\",\"tutorial-step-1\":\"Klicke auf ein Feld, um dieses rotieren zu lassen!\",\"tutorial-step-2\":\"Um zu gewinnen, drehe die Segmente so, dass du zwei Wörter lesen kannst.\",\"tutorial-step-3\":\"Die Hilfe löst ein Segment, kostet aber 25 Münzen. Probiere jetzt die Hilfe aus.\",\"tutorial-step-4\":\"Große Segmente drehst du, indem du diese ziehst.\",\"extra-coins-after-first-level\":\"Für das erste Level gibt es 50 extra Münzen!\",\"dark\":\"Dunkel\",\"theme\":\"Theme:\",\"sound\":\"Sound:\",\"music\":\"Musik:\",\"credits\":\"Credits\",\"privacy-policy\":\"Datenschutzbestimmungen\",\"impressum\":\"Impressum\",\"track\":\"Anonymisierte Nutzungsdaten senden:\",\">\":\">\",\"choose-theme-dialog-title\":\"Theme auswählen:\",\"install\":\"Installieren\",\"share-dialog\":\"Teilen:\",\"credits-sister-text\":\"Ich danke meiner Lieblingsschwester, denn ohne Sie würde diese App nicht so aussehen, wie sie aussieht (wahrscheinlich eher schlechter :p)\",\"credits-coin-text\":\"Sound:
Der Münz-Sound ist von der Webseite
{0}. Alle Rechte für diesen Münz-Sound gehören {0}.\",\"credits-music-text\":\"Musik:
Bright And Beautiful - GEMAfreie Musik von {0}
Licensed under Creative Commons: By Attribution 4.0 International (CC BY 4.0)
{1}
Angepasst (geschnitten) für diese App\",\"storage-info\":\"Fortschritt {0} dauerhaft gespeichert\",\"storage-permission-not-get\":\"Der Browser gibt nicht die Erlaubnis zur dauerhaften Speicherung...\",\"storage-permission-get\":\"Die Daten sind nun dauerhaft gespeichert\",\"persist-storage-dialog-title\":\"Daten dauerhaft speichern?\",\"persist-storage-dialog-message\":\"Der Fortschritt und die Level dieser WebApp sind nur temporär gespeichert. Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:

1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.

Damit die Daten dieser Webseite nicht gelöscht werden, erlaube bitte Benachrichtigungen. Alternativ kannst du die Seite auch als Lesezeichen speichern.\",\"notification-permission-denied\":\"Die Berechtigung für Benachrichtigungen wurde verwährt\",\"already-persisted-dialog-message\":\"Damit die Daten dauerhaft gespeichert werden, muss eins von drei Kriterien erfüllt sein:
1) Die Seite muss als Lesezeichen gespeichert werden (und maximal 5 Lesezeichen ingsesamt).
2) Die Seite muss mit die meistbenutzte Seite sein.
3) Benachrichtigungen müssen erlaubt werden.
Du erfüllst schon ein Kriterium und daher wird dein Fortschritt dauerhaft gespeichert (außer du löscht sie)\",\"already-persisted-dialog-title\":\"Daten werden dauerhaft gespeichert!\",\"persist-storage-dialog-message-firefox\":\"Damit dein Fortschritt dauerhaft gespeichert wird, musst du zulassen, dass Daten dauerhaft gespeichert werden.\",\"warning-data-not-persistent\":\"Achtung! Dein Fortschritt kann verloren gehen! Gehe die Einstellungen für mehr Infos.\",\"version-label\":\"Version:\",\"share-text\":\"Schau dir diese coole App an: {0}\",\"share\":\"Teilen\",\"document-title\":\"WordRotator\",\"document-title-empty\":\"WordRotator\",\"contact\":\"Kontakt\",\"contact text\":\"Du möchtest Kontakt mit uns aufnehmen? Kein Problem, nutze einfach das Kontaktformular oder sende uns eine E-Mail an {0}.\\n Egal, ob du uns eine E-Mail sendest oder das Kontaktformular benutzt, akzeptierst du unsere Datenschutzbestimmung\",\"e-mail\":\"E-Mailadresse\",\"privacy policy accepted\":\" akzeptiert\",\"message\":\"Nachricht\",\"send\":\"Senden\",\"the message was sent\":\"Die Nachricht wurde gesendet.\"}"); /***/ }), - -/***/ "./src/shared/model/LevelData.ts": -/*!***************************************!*\ - !*** ./src/shared/model/LevelData.ts ***! - \***************************************/ -/*! exports provided: LevelData */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelData\", function() { return LevelData; });\n/* harmony import */ var cordova_sites_user_management_dist_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cordova-sites-user-management/dist/shared */ \"./node_modules/cordova-sites-user-management/dist/shared.js\");\n/* harmony import */ var cordova_sites_user_management_dist_shared__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_user_management_dist_shared__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cordova-sites-database/dist/cordova-sites-database */ \"./node_modules/cordova-sites-database/dist/cordova-sites-database.js\");\n/* harmony import */ var cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\nclass LevelData extends cordova_sites_user_management_dist_shared__WEBPACK_IMPORTED_MODULE_0__[\"AccessEasySyncModel\"] {\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"words\"] = cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].TYPES.STRING;\n columns[\"positions\"] = cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].TYPES.STRING;\n columns[\"renderer\"] = cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].TYPES.INTEGER;\n columns[\"lang\"] = cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].TYPES.INTEGER;\n columns[\"difficulty\"] = cordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].TYPES.INTEGER;\n return columns;\n }\n static getNextLevelData(renderer) {\n return __awaiter(this, void 0, void 0, function* () {\n debugger;\n });\n }\n}\ncordova_sites_database_dist_cordova_sites_database__WEBPACK_IMPORTED_MODULE_1__[\"BaseDatabase\"].addModel(LevelData);\n\n\n//# sourceURL=webpack:///./src/shared/model/LevelData.ts?"); - -/***/ }), - -/***/ "./src/shared/model/migration/shared/Setup.ts": -/*!****************************************************!*\ - !*** ./src/shared/model/migration/shared/Setup.ts ***! - \****************************************************/ -/*! exports provided: Setup1000000002000 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Setup1000000002000\", function() { return Setup1000000002000; });\n/* harmony import */ var js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! js-helper/dist/shared */ \"./node_modules/js-helper/dist/shared.js\");\n/* harmony import */ var js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _LevelData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../LevelData */ \"./src/shared/model/LevelData.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\nclass Setup1000000002000 {\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield js_helper_dist_shared__WEBPACK_IMPORTED_MODULE_0__[\"MigrationHelper\"].addTableFromModelClass(_LevelData__WEBPACK_IMPORTED_MODULE_1__[\"LevelData\"], queryRunner);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\n\n\n//# sourceURL=webpack:///./src/shared/model/migration/shared/Setup.ts?"); - -/***/ }), - -/***/ 0: -/*!********************************************************************!*\ - !*** multi ./src/client/js/script.js ./src/client/sass/index.scss ***! - \********************************************************************/ -/*! no static exports found */ +/* 282 */ /***/ (function(module, exports, __webpack_require__) { -eval("__webpack_require__(/*! /home/silas/Projekte/web/wordRotator/src/client/js/script.js */\"./src/client/js/script.js\");\nmodule.exports = __webpack_require__(/*! /home/silas/Projekte/web/wordRotator/src/client/sass/index.scss */\"./src/client/sass/index.scss\");\n\n\n//# sourceURL=webpack:///multi_./src/client/js/script.js_./src/client/sass/index.scss?"); +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() + + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + + return new Algorithm() +} + +exports.sha = __webpack_require__(479) +exports.sha1 = __webpack_require__(483) +exports.sha224 = __webpack_require__(484) +exports.sha256 = __webpack_require__(248) +exports.sha384 = __webpack_require__(485) +exports.sha512 = __webpack_require__(249) + + +/***/ }), +/* 283 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SqljsQueryRunner; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34); +/* harmony import */ var _sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73); +/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54); +/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39); + + + + + +/** + * Runs queries on a single sqlite database connection. + */ +var SqljsQueryRunner = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(SqljsQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function SqljsQueryRunner(driver) { + var _this = _super.call(this) || this; + _this.driver = driver; + _this.connection = driver.connection; + _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_3__[/* Broadcaster */ "a"](_this); + return _this; + } + // ------------------------------------------------------------------------- + // Public methods + // ------------------------------------------------------------------------- + /** + * Commits transaction. + * Error will be thrown if transaction was not started. + */ + SqljsQueryRunner.prototype.commitTransaction = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, _super.prototype.commitTransaction.call(this)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.driver.autoSave()]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Executes a given SQL query. + */ + SqljsQueryRunner.prototype.query = function (query, parameters) { + var _this = this; + if (parameters === void 0) { parameters = []; } + if (this.isReleased) + throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[/* QueryRunnerAlreadyReleasedError */ "a"](); + return new Promise(function (ok, fail) { return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(_this, void 0, void 0, function () { + var databaseConnection, queryStartTime, statement, maxQueryExecutionTime, queryEndTime, queryExecutionTime, result; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + databaseConnection = this.driver.databaseConnection; + this.driver.connection.logger.logQuery(query, parameters, this); + queryStartTime = +new Date(); + try { + statement = databaseConnection.prepare(query); + if (parameters) { + parameters = parameters.map(function (p) { return typeof p !== 'undefined' ? p : null; }); + statement.bind(parameters); + } + maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime; + queryEndTime = +new Date(); + queryExecutionTime = queryEndTime - queryStartTime; + if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) + this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this); + result = []; + while (statement.step()) { + result.push(statement.getAsObject()); + } + statement.free(); + ok(result); + } + catch (e) { + if (statement) { + statement.free(); + } + this.driver.connection.logger.logQueryError(e, query, parameters, this); + fail(new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_4__[/* QueryFailedError */ "a"](query, parameters, e)); + } + return [2 /*return*/]; + }); + }); }); + }; + return SqljsQueryRunner; +}(_sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_2__[/* AbstractSqliteQueryRunner */ "a"])); + + +//# sourceMappingURL=SqljsQueryRunner.js.map + + +/***/ }), +/* 284 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NativescriptDriver; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); +/* harmony import */ var _NativescriptQueryRunner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(285); +/* harmony import */ var _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37); +/* harmony import */ var _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(71); + + + + + +/** + * Organizes communication with sqlite DBMS within Nativescript. + */ +var NativescriptDriver = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(NativescriptDriver, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function NativescriptDriver(connection) { + var _this = _super.call(this, connection) || this; + _this.connection = connection; + _this.options = connection.options; + _this.database = _this.options.database; + _this.driver = _this.options.driver; + // validate options to make sure everything is set + if (!_this.options.database) { + throw new _error_DriverOptionNotSetError__WEBPACK_IMPORTED_MODULE_3__[/* DriverOptionNotSetError */ "a"]("database"); + } + // load sqlite package + _this.loadDependencies(); + return _this; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Closes connection with database. + */ + NativescriptDriver.prototype.disconnect = function () { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "b"])(this, void 0, void 0, function () { + var _this = this; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "d"])(this, function (_a) { + return [2 /*return*/, new Promise(function (ok, fail) { + _this.queryRunner = undefined; + _this.databaseConnection.close().then(ok).catch(fail); + })]; + }); + }); + }; + /** + * Creates a query runner used to execute database queries. + */ + NativescriptDriver.prototype.createQueryRunner = function (mode) { + if (!this.queryRunner) { + this.queryRunner = new _NativescriptQueryRunner__WEBPACK_IMPORTED_MODULE_2__[/* NativescriptQueryRunner */ "a"](this); + } + return this.queryRunner; + }; + NativescriptDriver.prototype.normalizeType = function (column) { + if (column.type === Buffer) { + return "blob"; + } + return _super.prototype.normalizeType.call(this, column); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Creates connection with the database. + */ + NativescriptDriver.prototype.createDatabaseConnection = function () { + var _this = this; + return new Promise(function (ok, fail) { + var options = Object.assign({}, { + readOnly: _this.options.readOnly, + key: _this.options.key, + multithreading: _this.options.multithreading, + migrate: _this.options.migrate, + iosFlags: _this.options.iosFlags, + androidFlags: _this.options.androidFlags, + }, _this.options.extra || {}); + new _this.sqlite(_this.options.database, options, function (err, db) { + if (err) + return fail(err); + // use object mode to work with TypeORM + db.resultType(_this.sqlite.RESULTSASOBJECT); + // we need to enable foreign keys in sqlite to make sure all foreign key related features + // working properly. this also makes onDelete work with sqlite. + db.execSQL("PRAGMA foreign_keys = ON;", [], function (err, result) { + if (err) + return fail(err); + // We are all set + ok(db); + }); + }); + }); + }; + /** + * If driver dependency is not given explicitly, then try to load it via "require". + */ + NativescriptDriver.prototype.loadDependencies = function () { + this.sqlite = this.driver; + if (!this.driver) { + throw new _error_DriverPackageNotInstalledError__WEBPACK_IMPORTED_MODULE_4__[/* DriverPackageNotInstalledError */ "a"]("Nativescript", "nativescript-sqlite"); + } + }; + return NativescriptDriver; +}(_sqlite_abstract_AbstractSqliteDriver__WEBPACK_IMPORTED_MODULE_1__[/* AbstractSqliteDriver */ "a"])); + + +//# sourceMappingURL=NativescriptDriver.js.map + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97).Buffer)) + +/***/ }), +/* 285 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NativescriptQueryRunner; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34); +/* harmony import */ var _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39); +/* harmony import */ var _sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(73); +/* harmony import */ var _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(54); + + + + + +/** + * Runs queries on a single sqlite database connection. + */ +var NativescriptQueryRunner = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "c"])(NativescriptQueryRunner, _super); + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function NativescriptQueryRunner(driver) { + var _this = _super.call(this) || this; + _this.driver = driver; + _this.connection = driver.connection; + _this.broadcaster = new _subscriber_Broadcaster__WEBPACK_IMPORTED_MODULE_4__[/* Broadcaster */ "a"](_this); + return _this; + } + /** + * Executes a given SQL query. + */ + NativescriptQueryRunner.prototype.query = function (query, parameters) { + var _this = this; + if (this.isReleased) + throw new _error_QueryRunnerAlreadyReleasedError__WEBPACK_IMPORTED_MODULE_1__[/* QueryRunnerAlreadyReleasedError */ "a"](); + var connection = this.driver.connection; + return new Promise(function (ok, fail) { + var isInsertQuery = query.substr(0, 11) === "INSERT INTO"; + var handler = function (err, result) { + // log slow queries if maxQueryExecution time is set + var maxQueryExecutionTime = connection.options.maxQueryExecutionTime; + var queryEndTime = +new Date(); + var queryExecutionTime = queryEndTime - queryStartTime; + if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) + connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this); + if (err) { + connection.logger.logQueryError(err, query, parameters, this); + fail(new _error_QueryFailedError__WEBPACK_IMPORTED_MODULE_2__[/* QueryFailedError */ "a"](query, parameters, err)); + } + else { + // when isInsertQuery == true, result is the id + ok(result); + } + }; + _this.driver.connection.logger.logQuery(query, parameters, _this); + var queryStartTime = +new Date(); + _this.connect().then(function (databaseConnection) { + if (isInsertQuery) { + databaseConnection.execSQL(query, parameters, handler); + } + else { + databaseConnection.all(query, parameters, handler); + } + }); + }); + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Parametrizes given object of values. Used to create column=value queries. + */ + NativescriptQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) { + if (startIndex === void 0) { startIndex = 0; } + return Object.keys(objectLiteral).map(function (key, index) { return "\"" + key + "\"" + "=?"; }); + }; + return NativescriptQueryRunner; +}(_sqlite_abstract_AbstractSqliteQueryRunner__WEBPACK_IMPORTED_MODULE_3__[/* AbstractSqliteQueryRunner */ "a"])); + + +//# sourceMappingURL=NativescriptQueryRunner.js.map + + +/***/ }), +/* 286 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return RawSqlResultsToEntityTransformer; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6); +/* harmony import */ var _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20); + + + +/** + * Transforms raw sql results returned from the database into entity object. + * Entity is constructed based on its entity metadata. + */ +var RawSqlResultsToEntityTransformer = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function RawSqlResultsToEntityTransformer(expressionMap, driver, rawRelationIdResults, rawRelationCountResults, queryRunner) { + this.expressionMap = expressionMap; + this.driver = driver; + this.rawRelationIdResults = rawRelationIdResults; + this.rawRelationCountResults = rawRelationCountResults; + this.queryRunner = queryRunner; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated + * we need to group our result and we must have some unique id (primary key in our case) + */ + RawSqlResultsToEntityTransformer.prototype.transform = function (rawResults, alias) { + var _this = this; + var group = this.group(rawResults, alias); + var entities = []; + group.forEach(function (results) { + var entity = _this.transformRawResultsGroup(results, alias); + if (entity !== undefined && !Object.values(entity).every(function (value) { return value === null; })) + entities.push(entity); + }); + return entities; + }; + // ------------------------------------------------------------------------- + // Protected Methods + // ------------------------------------------------------------------------- + /** + * Groups given raw results by ids of given alias. + */ + RawSqlResultsToEntityTransformer.prototype.group = function (rawResults, alias) { + var _this = this; + var map = new Map(); + var keys = []; + if (alias.metadata.tableType === "view") { + keys.push.apply(keys, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(alias.metadata.columns.map(function (column) { return _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[/* DriverUtils */ "a"].buildColumnAlias(_this.driver, alias.name, column.databaseName); })))); + } + else { + keys.push.apply(keys, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "f"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "e"])(alias.metadata.primaryColumns.map(function (column) { return _driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[/* DriverUtils */ "a"].buildColumnAlias(_this.driver, alias.name, column.databaseName); })))); + } + rawResults.forEach(function (rawResult) { + var id = keys.map(function (key) { + var keyValue = rawResult[key]; + if (Buffer.isBuffer(keyValue)) { + return keyValue.toString("hex"); + } + if (typeof keyValue === "object") { + return JSON.stringify(keyValue); + } + return keyValue; + }).join("_"); // todo: check partial + var items = map.get(id); + if (!items) { + map.set(id, [rawResult]); + } + else { + items.push(rawResult); + } + }); + return map; + }; + /** + * Transforms set of data results into single entity. + */ + RawSqlResultsToEntityTransformer.prototype.transformRawResultsGroup = function (rawResults, alias) { + var _this = this; + // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false; + var metadata = alias.metadata; + if (metadata.discriminatorColumn) { + var discriminatorValues_1 = rawResults.map(function (result) { return result[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[/* DriverUtils */ "a"].buildColumnAlias(_this.driver, alias.name, alias.metadata.discriminatorColumn.databaseName)]; }); + var discriminatorMetadata = metadata.childEntityMetadatas.find(function (childEntityMetadata) { + return typeof discriminatorValues_1.find(function (value) { return value === childEntityMetadata.discriminatorValue; }) !== 'undefined'; + }); + if (discriminatorMetadata) + metadata = discriminatorMetadata; + } + var entity = this.expressionMap.options.indexOf("create-pojo") !== -1 ? {} : metadata.create(this.queryRunner); + // get value from columns selections and put them into newly created entity + var hasColumns = this.transformColumns(rawResults, alias, entity, metadata); + var hasRelations = this.transformJoins(rawResults, entity, alias, metadata); + var hasRelationIds = this.transformRelationIds(rawResults, alias, entity, metadata); + var hasRelationCounts = this.transformRelationCounts(rawResults, alias, entity); + // if we have at least one selected column then return this entity + // since entity must have at least primary columns to be really selected and transformed into entity + if (hasColumns) + return entity; + // if we don't have any selected column we should not return entity, + // except for the case when entity only contain a primary column as a relation to another entity + // in this case its absolutely possible our entity to not have any columns except a single relation + var hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.filter(function (column) { return column.isVirtual === false; }).length === 0; // todo: create metadata.hasOnlyVirtualPrimaryColumns + if (hasOnlyVirtualPrimaryColumns && (hasRelations || hasRelationIds || hasRelationCounts)) + return entity; + return undefined; + }; + // get value from columns selections and put them into object + RawSqlResultsToEntityTransformer.prototype.transformColumns = function (rawResults, alias, entity, metadata) { + var _this = this; + var hasData = false; + metadata.columns.forEach(function (column) { + // if table inheritance is used make sure this column is not child's column + if (metadata.childEntityMetadatas.length > 0 && metadata.childEntityMetadatas.map(function (metadata) { return metadata.target; }).indexOf(column.target) !== -1) + return; + var value = rawResults[0][_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[/* DriverUtils */ "a"].buildColumnAlias(_this.driver, alias.name, column.databaseName)]; + if (value === undefined || column.isVirtual) + return; + // if user does not selected the whole entity or he used partial selection and does not select this particular column + // then we don't add this column and its value into the entity + if (!_this.expressionMap.selects.find(function (select) { return select.selection === alias.name || select.selection === alias.name + "." + column.propertyPath; })) + return; + column.setEntityValue(entity, _this.driver.prepareHydratedValue(value, column)); + if (value !== null) // we don't mark it as has data because if we will have all nulls in our object - we don't need such object + hasData = true; + }); + return hasData; + }; + /** + * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity + */ + RawSqlResultsToEntityTransformer.prototype.transformJoins = function (rawResults, entity, alias, metadata) { + var _this = this; + var hasData = false; + // let discriminatorValue: string = ""; + // if (metadata.discriminatorColumn) + // discriminatorValue = rawResults[0][DriverUtils.buildColumnAlias(this.connection.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)]; + this.expressionMap.joinAttributes.forEach(function (join) { + // skip joins without metadata + if (!join.metadata) + return; + // if simple left or inner join was performed without selection then we don't need to do anything + if (!join.isSelected) + return; + // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it) + // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue); + if (join.relation && !metadata.relations.find(function (relation) { return relation === join.relation; })) + return; + // some checks to make sure this join is for current alias + if (join.mapToProperty) { + if (join.mapToPropertyParentAlias !== alias.name) + return; + } + else { + if (!join.relation || join.parentAlias !== alias.name || join.relationPropertyPath !== join.relation.propertyPath) + return; + } + // transform joined data into entities + var result = _this.transform(rawResults, join.alias); + result = !join.isMany ? result[0] : result; + result = !join.isMany && result === undefined ? null : result; // this is needed to make relations to return null when its joined but nothing was found in the database + if (result === undefined) // if nothing was joined then simply return + return; + // if join was mapped to some property then save result to that property + if (join.mapToPropertyPropertyName) { + entity[join.mapToPropertyPropertyName] = result; // todo: fix embeds + } + else { // otherwise set to relation + join.relation.setEntityValue(entity, result); + } + hasData = true; + }); + return hasData; + }; + RawSqlResultsToEntityTransformer.prototype.transformRelationIds = function (rawSqlResults, alias, entity, metadata) { + var _this = this; + var hasData = false; + this.rawRelationIdResults.forEach(function (rawRelationIdResult) { + if (rawRelationIdResult.relationIdAttribute.parentAlias !== alias.name) + return; + var relation = rawRelationIdResult.relationIdAttribute.relation; + var valueMap = _this.createValueMapFromJoinColumns(relation, rawRelationIdResult.relationIdAttribute.parentAlias, rawSqlResults); + if (valueMap === undefined || valueMap === null) + return; + var idMaps = rawRelationIdResult.results.map(function (result) { + var entityPrimaryIds = _this.extractEntityPrimaryIds(relation, result); + if (_util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[/* OrmUtils */ "a"].compareIds(entityPrimaryIds, valueMap) === false) + return; + var columns; + if (relation.isManyToOne || relation.isOneToOneOwner) { + columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; }); + } + else if (relation.isOneToMany || relation.isOneToOneNotOwner) { + columns = relation.inverseEntityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; }); + // columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn.referencedColumn!); //.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn); + } + else { // ManyToMany + if (relation.isOwning) { + columns = relation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; }); + } + else { + columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; }); + } + } + var idMap = columns.reduce(function (idMap, column) { + var value = result[column.databaseName]; + if (relation.isOneToMany || relation.isOneToOneNotOwner) { + if (column.isVirtual && column.referencedColumn && column.referencedColumn.propertyName !== column.propertyName) // if column is a relation + value = column.referencedColumn.createValueMap(value); + return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[/* OrmUtils */ "a"].mergeDeep(idMap, column.createValueMap(value)); + } + else { + if (column.referencedColumn.referencedColumn) // if column is a relation + value = column.referencedColumn.referencedColumn.createValueMap(value); + return _util_OrmUtils__WEBPACK_IMPORTED_MODULE_1__[/* OrmUtils */ "a"].mergeDeep(idMap, column.referencedColumn.createValueMap(value)); + } + }, {}); + if (columns.length === 1 && rawRelationIdResult.relationIdAttribute.disableMixedMap === false) { + if (relation.isOneToMany || relation.isOneToOneNotOwner) { + return columns[0].getEntityValue(idMap); + } + else { + return columns[0].referencedColumn.getEntityValue(idMap); + } + } + return idMap; + }).filter(function (result) { return result !== undefined; }); + var properties = rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split("."); + var mapToProperty = function (properties, map, value) { + var property = properties.shift(); + if (property && properties.length === 0) { + map[property] = value; + return map; + } + else if (property && properties.length > 0) { + mapToProperty(properties, map[property], value); + } + else { + return map; + } + }; + if (relation.isOneToOne || relation.isManyToOne) { + if (idMaps[0] !== undefined) { + mapToProperty(properties, entity, idMaps[0]); + hasData = true; + } + } + else { + mapToProperty(properties, entity, idMaps); + if (idMaps.length > 0) { + hasData = true; + } + } + }); + return hasData; + }; + RawSqlResultsToEntityTransformer.prototype.transformRelationCounts = function (rawSqlResults, alias, entity) { + var _this = this; + var hasData = false; + this.rawRelationCountResults + .filter(function (rawRelationCountResult) { return rawRelationCountResult.relationCountAttribute.parentAlias === alias.name; }) + .forEach(function (rawRelationCountResult) { + var relation = rawRelationCountResult.relationCountAttribute.relation; + var referenceColumnName; + if (relation.isOneToMany) { + referenceColumnName = relation.inverseRelation.joinColumns[0].referencedColumn.databaseName; // todo: fix joinColumns[0] + } + else { + referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn.databaseName : relation.inverseRelation.joinColumns[0].referencedColumn.databaseName; + } + var referenceColumnValue = rawSqlResults[0][_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[/* DriverUtils */ "a"].buildColumnAlias(_this.driver, alias.name, referenceColumnName)]; // we use zero index since its grouped data // todo: selection with alias for entity columns wont work + if (referenceColumnValue !== undefined && referenceColumnValue !== null) { + entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = 0; + rawRelationCountResult.results + .filter(function (result) { return result["parentId"] === referenceColumnValue; }) + .forEach(function (result) { + entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = parseInt(result["cnt"]); + hasData = true; + }); + } + }); + return hasData; + }; + RawSqlResultsToEntityTransformer.prototype.createValueMapFromJoinColumns = function (relation, parentAlias, rawSqlResults) { + var _this = this; + var columns; + if (relation.isManyToOne || relation.isOneToOneOwner) { + columns = relation.entityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; }); + } + else if (relation.isOneToMany || relation.isOneToOneNotOwner) { + columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; }); + } + else { + if (relation.isOwning) { + columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; }); + } + else { + columns = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; }); + } + } + return columns.reduce(function (valueMap, column) { + rawSqlResults.forEach(function (rawSqlResult) { + if (relation.isManyToOne || relation.isOneToOneOwner) { + valueMap[column.databaseName] = _this.driver.prepareHydratedValue(rawSqlResult[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[/* DriverUtils */ "a"].buildColumnAlias(_this.driver, parentAlias, column.databaseName)], column); + } + else { + valueMap[column.databaseName] = _this.driver.prepareHydratedValue(rawSqlResult[_driver_DriverUtils__WEBPACK_IMPORTED_MODULE_2__[/* DriverUtils */ "a"].buildColumnAlias(_this.driver, parentAlias, column.referencedColumn.databaseName)], column); + } + }); + return valueMap; + }, {}); + }; + RawSqlResultsToEntityTransformer.prototype.extractEntityPrimaryIds = function (relation, relationIdRawResult) { + var columns; + if (relation.isManyToOne || relation.isOneToOneOwner) { + columns = relation.entityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; }); + } + else if (relation.isOneToMany || relation.isOneToOneNotOwner) { + columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; }); + } + else { + if (relation.isOwning) { + columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; }); + } + else { + columns = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; }); + } + } + return columns.reduce(function (data, column) { + data[column.databaseName] = relationIdRawResult[column.databaseName]; + return data; + }, {}); + }; + return RawSqlResultsToEntityTransformer; +}()); + + +//# sourceMappingURL=RawSqlResultsToEntityTransformer.js.map + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97).Buffer)) + +/***/ }), +/* 287 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +var __exportStar = this && this.__exportStar || function (m, exports) { + for (var p in m) { + if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); + } +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__exportStar(__webpack_require__(211), exports); + +__exportStar(__webpack_require__(212), exports); + +__exportStar(__webpack_require__(270), exports); + +__exportStar(__webpack_require__(278), exports); + +__exportStar(__webpack_require__(204), exports); + +__exportStar(__webpack_require__(112), exports); + +__exportStar(__webpack_require__(537), exports); + +__exportStar(__webpack_require__(538), exports); + +/***/ }), +/* 288 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(289); +__webpack_require__(552); +module.exports = __webpack_require__(551); + + +/***/ }), +/* 289 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(290); + +var _global = _interopRequireDefault(__webpack_require__(462)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +if (_global["default"]._babelPolyfill && typeof console !== "undefined" && console.warn) { + console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended " + "and may have consequences if different versions of the polyfills are applied sequentially. " + "If you do need to load the polyfill more than once, use @babel/polyfill/noConflict " + "instead to bypass the warning."); +} + +_global["default"]._babelPolyfill = true; + +/***/ }), +/* 290 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(291); + +__webpack_require__(434); + +__webpack_require__(436); + +__webpack_require__(439); + +__webpack_require__(441); + +__webpack_require__(443); + +__webpack_require__(445); + +__webpack_require__(447); + +__webpack_require__(449); + +__webpack_require__(451); + +__webpack_require__(453); + +__webpack_require__(455); + +__webpack_require__(457); + +__webpack_require__(461); + +/***/ }), +/* 291 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(292); +__webpack_require__(295); +__webpack_require__(296); +__webpack_require__(297); +__webpack_require__(298); +__webpack_require__(299); +__webpack_require__(300); +__webpack_require__(301); +__webpack_require__(302); +__webpack_require__(303); +__webpack_require__(304); +__webpack_require__(305); +__webpack_require__(306); +__webpack_require__(307); +__webpack_require__(308); +__webpack_require__(309); +__webpack_require__(310); +__webpack_require__(311); +__webpack_require__(312); +__webpack_require__(313); +__webpack_require__(314); +__webpack_require__(315); +__webpack_require__(316); +__webpack_require__(317); +__webpack_require__(318); +__webpack_require__(319); +__webpack_require__(320); +__webpack_require__(321); +__webpack_require__(322); +__webpack_require__(323); +__webpack_require__(324); +__webpack_require__(325); +__webpack_require__(326); +__webpack_require__(327); +__webpack_require__(328); +__webpack_require__(329); +__webpack_require__(330); +__webpack_require__(331); +__webpack_require__(332); +__webpack_require__(333); +__webpack_require__(334); +__webpack_require__(335); +__webpack_require__(336); +__webpack_require__(338); +__webpack_require__(339); +__webpack_require__(340); +__webpack_require__(341); +__webpack_require__(342); +__webpack_require__(343); +__webpack_require__(344); +__webpack_require__(345); +__webpack_require__(346); +__webpack_require__(347); +__webpack_require__(348); +__webpack_require__(349); +__webpack_require__(350); +__webpack_require__(351); +__webpack_require__(352); +__webpack_require__(353); +__webpack_require__(354); +__webpack_require__(355); +__webpack_require__(356); +__webpack_require__(357); +__webpack_require__(358); +__webpack_require__(359); +__webpack_require__(360); +__webpack_require__(361); +__webpack_require__(362); +__webpack_require__(363); +__webpack_require__(364); +__webpack_require__(365); +__webpack_require__(366); +__webpack_require__(367); +__webpack_require__(368); +__webpack_require__(369); +__webpack_require__(370); +__webpack_require__(371); +__webpack_require__(373); +__webpack_require__(374); +__webpack_require__(376); +__webpack_require__(377); +__webpack_require__(378); +__webpack_require__(379); +__webpack_require__(380); +__webpack_require__(381); +__webpack_require__(382); +__webpack_require__(384); +__webpack_require__(385); +__webpack_require__(386); +__webpack_require__(387); +__webpack_require__(388); +__webpack_require__(389); +__webpack_require__(390); +__webpack_require__(391); +__webpack_require__(392); +__webpack_require__(393); +__webpack_require__(394); +__webpack_require__(395); +__webpack_require__(396); +__webpack_require__(184); +__webpack_require__(397); +__webpack_require__(233); +__webpack_require__(398); +__webpack_require__(234); +__webpack_require__(399); +__webpack_require__(400); +__webpack_require__(401); +__webpack_require__(402); +__webpack_require__(235); +__webpack_require__(405); +__webpack_require__(406); +__webpack_require__(407); +__webpack_require__(408); +__webpack_require__(409); +__webpack_require__(410); +__webpack_require__(411); +__webpack_require__(412); +__webpack_require__(413); +__webpack_require__(414); +__webpack_require__(415); +__webpack_require__(416); +__webpack_require__(417); +__webpack_require__(418); +__webpack_require__(419); +__webpack_require__(420); +__webpack_require__(421); +__webpack_require__(422); +__webpack_require__(423); +__webpack_require__(424); +__webpack_require__(425); +__webpack_require__(426); +__webpack_require__(427); +__webpack_require__(428); +__webpack_require__(429); +__webpack_require__(430); +__webpack_require__(431); +__webpack_require__(432); +__webpack_require__(433); +module.exports = __webpack_require__(26); + + +/***/ }), +/* 292 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// ECMAScript 6 symbols shim +var global = __webpack_require__(11); +var has = __webpack_require__(51); +var DESCRIPTORS = __webpack_require__(28); +var $export = __webpack_require__(3); +var redefine = __webpack_require__(45); +var META = __webpack_require__(83).KEY; +var $fails = __webpack_require__(12); +var shared = __webpack_require__(134); +var setToStringTag = __webpack_require__(103); +var uid = __webpack_require__(87); +var wks = __webpack_require__(18); +var wksExt = __webpack_require__(165); +var wksDefine = __webpack_require__(214); +var enumKeys = __webpack_require__(294); +var isArray = __webpack_require__(137); +var anObject = __webpack_require__(13); +var isObject = __webpack_require__(14); +var toObject = __webpack_require__(36); +var toIObject = __webpack_require__(53); +var toPrimitive = __webpack_require__(82); +var createDesc = __webpack_require__(86); +var _create = __webpack_require__(91); +var gOPNExt = __webpack_require__(217); +var $GOPD = __webpack_require__(65); +var $GOPS = __webpack_require__(136); +var $DP = __webpack_require__(29); +var $keys = __webpack_require__(89); +var gOPD = $GOPD.f; +var dP = $DP.f; +var gOPN = gOPNExt.f; +var $Symbol = global.Symbol; +var $JSON = global.JSON; +var _stringify = $JSON && $JSON.stringify; +var PROTOTYPE = 'prototype'; +var HIDDEN = wks('_hidden'); +var TO_PRIMITIVE = wks('toPrimitive'); +var isEnum = {}.propertyIsEnumerable; +var SymbolRegistry = shared('symbol-registry'); +var AllSymbols = shared('symbols'); +var OPSymbols = shared('op-symbols'); +var ObjectProto = Object[PROTOTYPE]; +var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; +var QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDesc = DESCRIPTORS && $fails(function () { + return _create(dP({}, 'a', { + get: function () { return dP(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (it, key, D) { + var protoDesc = gOPD(ObjectProto, key); + if (protoDesc) delete ObjectProto[key]; + dP(it, key, D); + if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); +} : dP; + +var wrap = function (tag) { + var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); + sym._k = tag; + return sym; +}; + +var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + return it instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(it, key, D) { + if (it === ObjectProto) $defineProperty(OPSymbols, key, D); + anObject(it); + key = toPrimitive(key, true); + anObject(D); + if (has(AllSymbols, key)) { + if (!D.enumerable) { + if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _create(D, { enumerable: createDesc(0, false) }); + } return setSymbolDesc(it, key, D); + } return dP(it, key, D); +}; +var $defineProperties = function defineProperties(it, P) { + anObject(it); + var keys = enumKeys(P = toIObject(P)); + var i = 0; + var l = keys.length; + var key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; +}; +var $create = function create(it, P) { + return P === undefined ? _create(it) : $defineProperties(_create(it), P); +}; +var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key = toPrimitive(key, true)); + if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; +}; +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + it = toIObject(it); + key = toPrimitive(key, true); + if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; + var D = gOPD(it, key); + if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; +}; +var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = gOPN(toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); + } return result; +}; +var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var IS_OP = it === ObjectProto; + var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); + } return result; +}; + +// 19.4.1.1 Symbol([description]) +if (!USE_NATIVE) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); + var tag = uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function (value) { + if (this === ObjectProto) $set.call(OPSymbols, value); + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + }; + if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); + return wrap(tag); + }; + redefine($Symbol[PROTOTYPE], 'toString', function toString() { + return this._k; + }); + + $GOPD.f = $getOwnPropertyDescriptor; + $DP.f = $defineProperty; + __webpack_require__(92).f = gOPNExt.f = $getOwnPropertyNames; + __webpack_require__(123).f = $propertyIsEnumerable; + $GOPS.f = $getOwnPropertySymbols; + + if (DESCRIPTORS && !__webpack_require__(88)) { + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + wksExt.f = function (name) { + return wrap(wks(name)); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); + +for (var es6Symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' +).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); + +for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); + +$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function (key) { + return has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); + for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; + }, + useSetter: function () { setter = true; }, + useSimple: function () { setter = false; } +}); + +$export($export.S + $export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); + +$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return $GOPS.f(toObject(it)); + } +}); + +// 24.3.2 JSON.stringify(value [, replacer [, space]]) +$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; +})), 'JSON', { + stringify: function stringify(it) { + var args = [it]; + var i = 1; + var replacer, $replacer; + while (arguments.length > i) args.push(arguments[i++]); + $replacer = replacer = args[1]; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } +}); + +// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) +$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(52)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +// 19.4.3.5 Symbol.prototype[@@toStringTag] +setToStringTag($Symbol, 'Symbol'); +// 20.2.1.9 Math[@@toStringTag] +setToStringTag(Math, 'Math', true); +// 24.3.3 JSON[@@toStringTag] +setToStringTag(global.JSON, 'JSON', true); + + +/***/ }), +/* 293 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(134)('native-function-to-string', Function.toString); + + +/***/ }), +/* 294 */ +/***/ (function(module, exports, __webpack_require__) { + +// all enumerable object keys, includes symbols +var getKeys = __webpack_require__(89); +var gOPS = __webpack_require__(136); +var pIE = __webpack_require__(123); +module.exports = function (it) { + var result = getKeys(it); + var getSymbols = gOPS.f; + if (getSymbols) { + var symbols = getSymbols(it); + var isEnum = pIE.f; + var i = 0; + var key; + while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); + } return result; +}; + + +/***/ }), +/* 295 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +$export($export.S, 'Object', { create: __webpack_require__(91) }); + + +/***/ }), +/* 296 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !__webpack_require__(28), 'Object', { defineProperty: __webpack_require__(29).f }); + + +/***/ }), +/* 297 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) +$export($export.S + $export.F * !__webpack_require__(28), 'Object', { defineProperties: __webpack_require__(216) }); + + +/***/ }), +/* 298 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) +var toIObject = __webpack_require__(53); +var $getOwnPropertyDescriptor = __webpack_require__(65).f; + +__webpack_require__(66)('getOwnPropertyDescriptor', function () { + return function getOwnPropertyDescriptor(it, key) { + return $getOwnPropertyDescriptor(toIObject(it), key); + }; +}); + + +/***/ }), +/* 299 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.9 Object.getPrototypeOf(O) +var toObject = __webpack_require__(36); +var $getPrototypeOf = __webpack_require__(93); + +__webpack_require__(66)('getPrototypeOf', function () { + return function getPrototypeOf(it) { + return $getPrototypeOf(toObject(it)); + }; +}); + + +/***/ }), +/* 300 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 Object.keys(O) +var toObject = __webpack_require__(36); +var $keys = __webpack_require__(89); + +__webpack_require__(66)('keys', function () { + return function keys(it) { + return $keys(toObject(it)); + }; +}); + + +/***/ }), +/* 301 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.7 Object.getOwnPropertyNames(O) +__webpack_require__(66)('getOwnPropertyNames', function () { + return __webpack_require__(217).f; +}); + + +/***/ }), +/* 302 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.5 Object.freeze(O) +var isObject = __webpack_require__(14); +var meta = __webpack_require__(83).onFreeze; + +__webpack_require__(66)('freeze', function ($freeze) { + return function freeze(it) { + return $freeze && isObject(it) ? $freeze(meta(it)) : it; + }; +}); + + +/***/ }), +/* 303 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.17 Object.seal(O) +var isObject = __webpack_require__(14); +var meta = __webpack_require__(83).onFreeze; + +__webpack_require__(66)('seal', function ($seal) { + return function seal(it) { + return $seal && isObject(it) ? $seal(meta(it)) : it; + }; +}); + + +/***/ }), +/* 304 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.15 Object.preventExtensions(O) +var isObject = __webpack_require__(14); +var meta = __webpack_require__(83).onFreeze; + +__webpack_require__(66)('preventExtensions', function ($preventExtensions) { + return function preventExtensions(it) { + return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it; + }; +}); + + +/***/ }), +/* 305 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.12 Object.isFrozen(O) +var isObject = __webpack_require__(14); + +__webpack_require__(66)('isFrozen', function ($isFrozen) { + return function isFrozen(it) { + return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true; + }; +}); + + +/***/ }), +/* 306 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.13 Object.isSealed(O) +var isObject = __webpack_require__(14); + +__webpack_require__(66)('isSealed', function ($isSealed) { + return function isSealed(it) { + return isObject(it) ? $isSealed ? $isSealed(it) : false : true; + }; +}); + + +/***/ }), +/* 307 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.11 Object.isExtensible(O) +var isObject = __webpack_require__(14); + +__webpack_require__(66)('isExtensible', function ($isExtensible) { + return function isExtensible(it) { + return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false; + }; +}); + + +/***/ }), +/* 308 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.3.1 Object.assign(target, source) +var $export = __webpack_require__(3); + +$export($export.S + $export.F, 'Object', { assign: __webpack_require__(218) }); + + +/***/ }), +/* 309 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.3.10 Object.is(value1, value2) +var $export = __webpack_require__(3); +$export($export.S, 'Object', { is: __webpack_require__(219) }); + + +/***/ }), +/* 310 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.3.19 Object.setPrototypeOf(O, proto) +var $export = __webpack_require__(3); +$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(169).set }); + + +/***/ }), +/* 311 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 19.1.3.6 Object.prototype.toString() +var classof = __webpack_require__(124); +var test = {}; +test[__webpack_require__(18)('toStringTag')] = 'z'; +if (test + '' != '[object z]') { + __webpack_require__(45)(Object.prototype, 'toString', function toString() { + return '[object ' + classof(this) + ']'; + }, true); +} + + +/***/ }), +/* 312 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...) +var $export = __webpack_require__(3); + +$export($export.P, 'Function', { bind: __webpack_require__(220) }); + + +/***/ }), +/* 313 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(29).f; +var FProto = Function.prototype; +var nameRE = /^\s*function ([^ (]*)/; +var NAME = 'name'; + +// 19.2.4.2 name +NAME in FProto || __webpack_require__(28) && dP(FProto, NAME, { + configurable: true, + get: function () { + try { + return ('' + this).match(nameRE)[1]; + } catch (e) { + return ''; + } + } +}); + + +/***/ }), +/* 314 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var isObject = __webpack_require__(14); +var getPrototypeOf = __webpack_require__(93); +var HAS_INSTANCE = __webpack_require__(18)('hasInstance'); +var FunctionProto = Function.prototype; +// 19.2.3.6 Function.prototype[@@hasInstance](V) +if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(29).f(FunctionProto, HAS_INSTANCE, { value: function (O) { + if (typeof this != 'function' || !isObject(O)) return false; + if (!isObject(this.prototype)) return O instanceof this; + // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: + while (O = getPrototypeOf(O)) if (this.prototype === O) return true; + return false; +} }); + + +/***/ }), +/* 315 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var $parseInt = __webpack_require__(222); +// 18.2.5 parseInt(string, radix) +$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt }); + + +/***/ }), +/* 316 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var $parseFloat = __webpack_require__(223); +// 18.2.4 parseFloat(string) +$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat }); + + +/***/ }), +/* 317 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(11); +var has = __webpack_require__(51); +var cof = __webpack_require__(75); +var inheritIfRequired = __webpack_require__(171); +var toPrimitive = __webpack_require__(82); +var fails = __webpack_require__(12); +var gOPN = __webpack_require__(92).f; +var gOPD = __webpack_require__(65).f; +var dP = __webpack_require__(29).f; +var $trim = __webpack_require__(104).trim; +var NUMBER = 'Number'; +var $Number = global[NUMBER]; +var Base = $Number; +var proto = $Number.prototype; +// Opera ~12 has broken Object#toString +var BROKEN_COF = cof(__webpack_require__(91)(proto)) == NUMBER; +var TRIM = 'trim' in String.prototype; + +// 7.1.3 ToNumber(argument) +var toNumber = function (argument) { + var it = toPrimitive(argument, false); + if (typeof it == 'string' && it.length > 2) { + it = TRIM ? it.trim() : $trim(it, 3); + var first = it.charCodeAt(0); + var third, radix, maxCode; + if (first === 43 || first === 45) { + third = it.charCodeAt(2); + if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (it.charCodeAt(1)) { + case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i + case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i + default: return +it; + } + for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) { + code = digits.charCodeAt(i); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) return NaN; + } return parseInt(digits, radix); + } + } return +it; +}; + +if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) { + $Number = function Number(value) { + var it = arguments.length < 1 ? 0 : value; + var that = this; + return that instanceof $Number + // check on 1..constructor(foo) case + && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER) + ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it); + }; + for (var keys = __webpack_require__(28) ? gOPN(Base) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES6 (in case, if modules with ES6 Number statics required before): + 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' + ).split(','), j = 0, key; keys.length > j; j++) { + if (has(Base, key = keys[j]) && !has($Number, key)) { + dP($Number, key, gOPD(Base, key)); + } + } + $Number.prototype = proto; + proto.constructor = $Number; + __webpack_require__(45)(global, NUMBER, $Number); +} + + +/***/ }), +/* 318 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var toInteger = __webpack_require__(64); +var aNumberValue = __webpack_require__(224); +var repeat = __webpack_require__(172); +var $toFixed = 1.0.toFixed; +var floor = Math.floor; +var data = [0, 0, 0, 0, 0, 0]; +var ERROR = 'Number.toFixed: incorrect invocation!'; +var ZERO = '0'; + +var multiply = function (n, c) { + var i = -1; + var c2 = c; + while (++i < 6) { + c2 += n * data[i]; + data[i] = c2 % 1e7; + c2 = floor(c2 / 1e7); + } +}; +var divide = function (n) { + var i = 6; + var c = 0; + while (--i >= 0) { + c += data[i]; + data[i] = floor(c / n); + c = (c % n) * 1e7; + } +}; +var numToString = function () { + var i = 6; + var s = ''; + while (--i >= 0) { + if (s !== '' || i === 0 || data[i] !== 0) { + var t = String(data[i]); + s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t; + } + } return s; +}; +var pow = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); +}; +var log = function (x) { + var n = 0; + var x2 = x; + while (x2 >= 4096) { + n += 12; + x2 /= 4096; + } + while (x2 >= 2) { + n += 1; + x2 /= 2; + } return n; +}; + +$export($export.P + $export.F * (!!$toFixed && ( + 0.00008.toFixed(3) !== '0.000' || + 0.9.toFixed(0) !== '1' || + 1.255.toFixed(2) !== '1.25' || + 1000000000000000128.0.toFixed(0) !== '1000000000000000128' +) || !__webpack_require__(12)(function () { + // V8 ~ Android 4.3- + $toFixed.call({}); +})), 'Number', { + toFixed: function toFixed(fractionDigits) { + var x = aNumberValue(this, ERROR); + var f = toInteger(fractionDigits); + var s = ''; + var m = ZERO; + var e, z, j, k; + if (f < 0 || f > 20) throw RangeError(ERROR); + // eslint-disable-next-line no-self-compare + if (x != x) return 'NaN'; + if (x <= -1e21 || x >= 1e21) return String(x); + if (x < 0) { + s = '-'; + x = -x; + } + if (x > 1e-21) { + e = log(x * pow(2, 69, 1)) - 69; + z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if (e > 0) { + multiply(0, z); + j = f; + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + multiply(pow(10, j, 1), 0); + j = e - 1; + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + m = numToString(); + } else { + multiply(0, z); + multiply(1 << -e, 0); + m = numToString() + repeat.call(ZERO, f); + } + } + if (f > 0) { + k = m.length; + m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f)); + } else { + m = s + m; + } return m; + } +}); + + +/***/ }), +/* 319 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $fails = __webpack_require__(12); +var aNumberValue = __webpack_require__(224); +var $toPrecision = 1.0.toPrecision; + +$export($export.P + $export.F * ($fails(function () { + // IE7- + return $toPrecision.call(1, undefined) !== '1'; +}) || !$fails(function () { + // V8 ~ Android 4.3- + $toPrecision.call({}); +})), 'Number', { + toPrecision: function toPrecision(precision) { + var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!'); + return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision); + } +}); + + +/***/ }), +/* 320 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.1 Number.EPSILON +var $export = __webpack_require__(3); + +$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) }); + + +/***/ }), +/* 321 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.2 Number.isFinite(number) +var $export = __webpack_require__(3); +var _isFinite = __webpack_require__(11).isFinite; + +$export($export.S, 'Number', { + isFinite: function isFinite(it) { + return typeof it == 'number' && _isFinite(it); + } +}); + + +/***/ }), +/* 322 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.3 Number.isInteger(number) +var $export = __webpack_require__(3); + +$export($export.S, 'Number', { isInteger: __webpack_require__(225) }); + + +/***/ }), +/* 323 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.4 Number.isNaN(number) +var $export = __webpack_require__(3); + +$export($export.S, 'Number', { + isNaN: function isNaN(number) { + // eslint-disable-next-line no-self-compare + return number != number; + } +}); + + +/***/ }), +/* 324 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.5 Number.isSafeInteger(number) +var $export = __webpack_require__(3); +var isInteger = __webpack_require__(225); +var abs = Math.abs; + +$export($export.S, 'Number', { + isSafeInteger: function isSafeInteger(number) { + return isInteger(number) && abs(number) <= 0x1fffffffffffff; + } +}); + + +/***/ }), +/* 325 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.6 Number.MAX_SAFE_INTEGER +var $export = __webpack_require__(3); + +$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff }); + + +/***/ }), +/* 326 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.10 Number.MIN_SAFE_INTEGER +var $export = __webpack_require__(3); + +$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff }); + + +/***/ }), +/* 327 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var $parseFloat = __webpack_require__(223); +// 20.1.2.12 Number.parseFloat(string) +$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat }); + + +/***/ }), +/* 328 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var $parseInt = __webpack_require__(222); +// 20.1.2.13 Number.parseInt(string, radix) +$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt }); + + +/***/ }), +/* 329 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.3 Math.acosh(x) +var $export = __webpack_require__(3); +var log1p = __webpack_require__(226); +var sqrt = Math.sqrt; +var $acosh = Math.acosh; + +$export($export.S + $export.F * !($acosh + // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 + && Math.floor($acosh(Number.MAX_VALUE)) == 710 + // Tor Browser bug: Math.acosh(Infinity) -> NaN + && $acosh(Infinity) == Infinity +), 'Math', { + acosh: function acosh(x) { + return (x = +x) < 1 ? NaN : x > 94906265.62425156 + ? Math.log(x) + Math.LN2 + : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); + } +}); + + +/***/ }), +/* 330 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.5 Math.asinh(x) +var $export = __webpack_require__(3); +var $asinh = Math.asinh; + +function asinh(x) { + return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1)); +} + +// Tor Browser bug: Math.asinh(0) -> -0 +$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh }); + + +/***/ }), +/* 331 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.7 Math.atanh(x) +var $export = __webpack_require__(3); +var $atanh = Math.atanh; + +// Tor Browser bug: Math.atanh(-0) -> 0 +$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', { + atanh: function atanh(x) { + return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2; + } +}); + + +/***/ }), +/* 332 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.9 Math.cbrt(x) +var $export = __webpack_require__(3); +var sign = __webpack_require__(173); + +$export($export.S, 'Math', { + cbrt: function cbrt(x) { + return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3); + } +}); + + +/***/ }), +/* 333 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.11 Math.clz32(x) +var $export = __webpack_require__(3); + +$export($export.S, 'Math', { + clz32: function clz32(x) { + return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32; + } +}); + + +/***/ }), +/* 334 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.12 Math.cosh(x) +var $export = __webpack_require__(3); +var exp = Math.exp; + +$export($export.S, 'Math', { + cosh: function cosh(x) { + return (exp(x = +x) + exp(-x)) / 2; + } +}); + + +/***/ }), +/* 335 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.14 Math.expm1(x) +var $export = __webpack_require__(3); +var $expm1 = __webpack_require__(174); + +$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 }); + + +/***/ }), +/* 336 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.16 Math.fround(x) +var $export = __webpack_require__(3); + +$export($export.S, 'Math', { fround: __webpack_require__(337) }); + + +/***/ }), +/* 337 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.16 Math.fround(x) +var sign = __webpack_require__(173); +var pow = Math.pow; +var EPSILON = pow(2, -52); +var EPSILON32 = pow(2, -23); +var MAX32 = pow(2, 127) * (2 - EPSILON32); +var MIN32 = pow(2, -126); + +var roundTiesToEven = function (n) { + return n + 1 / EPSILON - 1 / EPSILON; +}; + +module.exports = Math.fround || function fround(x) { + var $abs = Math.abs(x); + var $sign = sign(x); + var a, result; + if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + // eslint-disable-next-line no-self-compare + if (result > MAX32 || result != result) return $sign * Infinity; + return $sign * result; +}; + + +/***/ }), +/* 338 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.17 Math.hypot([value1[, value2[, … ]]]) +var $export = __webpack_require__(3); +var abs = Math.abs; + +$export($export.S, 'Math', { + hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars + var sum = 0; + var i = 0; + var aLen = arguments.length; + var larg = 0; + var arg, div; + while (i < aLen) { + arg = abs(arguments[i++]); + if (larg < arg) { + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if (arg > 0) { + div = arg / larg; + sum += div * div; + } else sum += arg; + } + return larg === Infinity ? Infinity : larg * Math.sqrt(sum); + } +}); + + +/***/ }), +/* 339 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.18 Math.imul(x, y) +var $export = __webpack_require__(3); +var $imul = Math.imul; + +// some WebKit versions fails with big numbers, some has wrong arity +$export($export.S + $export.F * __webpack_require__(12)(function () { + return $imul(0xffffffff, 5) != -5 || $imul.length != 2; +}), 'Math', { + imul: function imul(x, y) { + var UINT16 = 0xffff; + var xn = +x; + var yn = +y; + var xl = UINT16 & xn; + var yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } +}); + + +/***/ }), +/* 340 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.21 Math.log10(x) +var $export = __webpack_require__(3); + +$export($export.S, 'Math', { + log10: function log10(x) { + return Math.log(x) * Math.LOG10E; + } +}); + + +/***/ }), +/* 341 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.20 Math.log1p(x) +var $export = __webpack_require__(3); + +$export($export.S, 'Math', { log1p: __webpack_require__(226) }); + + +/***/ }), +/* 342 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.22 Math.log2(x) +var $export = __webpack_require__(3); + +$export($export.S, 'Math', { + log2: function log2(x) { + return Math.log(x) / Math.LN2; + } +}); + + +/***/ }), +/* 343 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.28 Math.sign(x) +var $export = __webpack_require__(3); + +$export($export.S, 'Math', { sign: __webpack_require__(173) }); + + +/***/ }), +/* 344 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.30 Math.sinh(x) +var $export = __webpack_require__(3); +var expm1 = __webpack_require__(174); +var exp = Math.exp; + +// V8 near Chromium 38 has a problem with very small numbers +$export($export.S + $export.F * __webpack_require__(12)(function () { + return !Math.sinh(-2e-17) != -2e-17; +}), 'Math', { + sinh: function sinh(x) { + return Math.abs(x = +x) < 1 + ? (expm1(x) - expm1(-x)) / 2 + : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2); + } +}); + + +/***/ }), +/* 345 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.33 Math.tanh(x) +var $export = __webpack_require__(3); +var expm1 = __webpack_require__(174); +var exp = Math.exp; + +$export($export.S, 'Math', { + tanh: function tanh(x) { + var a = expm1(x = +x); + var b = expm1(-x); + return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); + } +}); + + +/***/ }), +/* 346 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.34 Math.trunc(x) +var $export = __webpack_require__(3); + +$export($export.S, 'Math', { + trunc: function trunc(it) { + return (it > 0 ? Math.floor : Math.ceil)(it); + } +}); + + +/***/ }), +/* 347 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var toAbsoluteIndex = __webpack_require__(90); +var fromCharCode = String.fromCharCode; +var $fromCodePoint = String.fromCodePoint; + +// length should be 1, old FF problem +$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { + // 21.1.2.2 String.fromCodePoint(...codePoints) + fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars + var res = []; + var aLen = arguments.length; + var i = 0; + var code; + while (aLen > i) { + code = +arguments[i++]; + if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point'); + res.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) + ); + } return res.join(''); + } +}); + + +/***/ }), +/* 348 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var toIObject = __webpack_require__(53); +var toLength = __webpack_require__(23); + +$export($export.S, 'String', { + // 21.1.2.4 String.raw(callSite, ...substitutions) + raw: function raw(callSite) { + var tpl = toIObject(callSite.raw); + var len = toLength(tpl.length); + var aLen = arguments.length; + var res = []; + var i = 0; + while (len > i) { + res.push(String(tpl[i++])); + if (i < aLen) res.push(String(arguments[i])); + } return res.join(''); + } +}); + + +/***/ }), +/* 349 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 21.1.3.25 String.prototype.trim() +__webpack_require__(104)('trim', function ($trim) { + return function trim() { + return $trim(this, 3); + }; +}); + + +/***/ }), +/* 350 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $at = __webpack_require__(175)(true); + +// 21.1.3.27 String.prototype[@@iterator]() +__webpack_require__(176)(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; +}); + + +/***/ }), +/* 351 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $at = __webpack_require__(175)(false); +$export($export.P, 'String', { + // 21.1.3.3 String.prototype.codePointAt(pos) + codePointAt: function codePointAt(pos) { + return $at(this, pos); + } +}); + + +/***/ }), +/* 352 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition]) + +var $export = __webpack_require__(3); +var toLength = __webpack_require__(23); +var context = __webpack_require__(177); +var ENDS_WITH = 'endsWith'; +var $endsWith = ''[ENDS_WITH]; + +$export($export.P + $export.F * __webpack_require__(179)(ENDS_WITH), 'String', { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = context(this, searchString, ENDS_WITH); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = toLength(that.length); + var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len); + var search = String(searchString); + return $endsWith + ? $endsWith.call(that, search, end) + : that.slice(end - search.length, end) === search; + } +}); + + +/***/ }), +/* 353 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// 21.1.3.7 String.prototype.includes(searchString, position = 0) + +var $export = __webpack_require__(3); +var context = __webpack_require__(177); +var INCLUDES = 'includes'; + +$export($export.P + $export.F * __webpack_require__(179)(INCLUDES), 'String', { + includes: function includes(searchString /* , position = 0 */) { + return !!~context(this, searchString, INCLUDES) + .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), +/* 354 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); + +$export($export.P, 'String', { + // 21.1.3.13 String.prototype.repeat(count) + repeat: __webpack_require__(172) +}); + + +/***/ }), +/* 355 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// 21.1.3.18 String.prototype.startsWith(searchString [, position ]) + +var $export = __webpack_require__(3); +var toLength = __webpack_require__(23); +var context = __webpack_require__(177); +var STARTS_WITH = 'startsWith'; +var $startsWith = ''[STARTS_WITH]; + +$export($export.P + $export.F * __webpack_require__(179)(STARTS_WITH), 'String', { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = context(this, searchString, STARTS_WITH); + var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = String(searchString); + return $startsWith + ? $startsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } +}); + + +/***/ }), +/* 356 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.2 String.prototype.anchor(name) +__webpack_require__(46)('anchor', function (createHTML) { + return function anchor(name) { + return createHTML(this, 'a', 'name', name); + }; +}); + + +/***/ }), +/* 357 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.3 String.prototype.big() +__webpack_require__(46)('big', function (createHTML) { + return function big() { + return createHTML(this, 'big', '', ''); + }; +}); + + +/***/ }), +/* 358 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.4 String.prototype.blink() +__webpack_require__(46)('blink', function (createHTML) { + return function blink() { + return createHTML(this, 'blink', '', ''); + }; +}); + + +/***/ }), +/* 359 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.5 String.prototype.bold() +__webpack_require__(46)('bold', function (createHTML) { + return function bold() { + return createHTML(this, 'b', '', ''); + }; +}); + + +/***/ }), +/* 360 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.6 String.prototype.fixed() +__webpack_require__(46)('fixed', function (createHTML) { + return function fixed() { + return createHTML(this, 'tt', '', ''); + }; +}); + + +/***/ }), +/* 361 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.7 String.prototype.fontcolor(color) +__webpack_require__(46)('fontcolor', function (createHTML) { + return function fontcolor(color) { + return createHTML(this, 'font', 'color', color); + }; +}); + + +/***/ }), +/* 362 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.8 String.prototype.fontsize(size) +__webpack_require__(46)('fontsize', function (createHTML) { + return function fontsize(size) { + return createHTML(this, 'font', 'size', size); + }; +}); + + +/***/ }), +/* 363 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.9 String.prototype.italics() +__webpack_require__(46)('italics', function (createHTML) { + return function italics() { + return createHTML(this, 'i', '', ''); + }; +}); + + +/***/ }), +/* 364 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.10 String.prototype.link(url) +__webpack_require__(46)('link', function (createHTML) { + return function link(url) { + return createHTML(this, 'a', 'href', url); + }; +}); + + +/***/ }), +/* 365 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.11 String.prototype.small() +__webpack_require__(46)('small', function (createHTML) { + return function small() { + return createHTML(this, 'small', '', ''); + }; +}); + + +/***/ }), +/* 366 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.12 String.prototype.strike() +__webpack_require__(46)('strike', function (createHTML) { + return function strike() { + return createHTML(this, 'strike', '', ''); + }; +}); + + +/***/ }), +/* 367 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.13 String.prototype.sub() +__webpack_require__(46)('sub', function (createHTML) { + return function sub() { + return createHTML(this, 'sub', '', ''); + }; +}); + + +/***/ }), +/* 368 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// B.2.3.14 String.prototype.sup() +__webpack_require__(46)('sup', function (createHTML) { + return function sup() { + return createHTML(this, 'sup', '', ''); + }; +}); + + +/***/ }), +/* 369 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.3.3.1 / 15.9.4.4 Date.now() +var $export = __webpack_require__(3); + +$export($export.S, 'Date', { now: function () { return new Date().getTime(); } }); + + +/***/ }), +/* 370 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var toObject = __webpack_require__(36); +var toPrimitive = __webpack_require__(82); + +$export($export.P + $export.F * __webpack_require__(12)(function () { + return new Date(NaN).toJSON() !== null + || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; +}), 'Date', { + // eslint-disable-next-line no-unused-vars + toJSON: function toJSON(key) { + var O = toObject(this); + var pv = toPrimitive(O); + return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); + } +}); + + +/***/ }), +/* 371 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +var $export = __webpack_require__(3); +var toISOString = __webpack_require__(372); + +// PhantomJS / old WebKit has a broken implementations +$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', { + toISOString: toISOString +}); + + +/***/ }), +/* 372 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +var fails = __webpack_require__(12); +var getTime = Date.prototype.getTime; +var $toISOString = Date.prototype.toISOString; + +var lz = function (num) { + return num > 9 ? num : '0' + num; +}; + +// PhantomJS / old WebKit has a broken implementations +module.exports = (fails(function () { + return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; +}) || !fails(function () { + $toISOString.call(new Date(NaN)); +})) ? function toISOString() { + if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); + var d = this; + var y = d.getUTCFullYear(); + var m = d.getUTCMilliseconds(); + var s = y < 0 ? '-' : y > 9999 ? '+' : ''; + return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) + + '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) + + 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) + + ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z'; +} : $toISOString; + + +/***/ }), +/* 373 */ +/***/ (function(module, exports, __webpack_require__) { + +var DateProto = Date.prototype; +var INVALID_DATE = 'Invalid Date'; +var TO_STRING = 'toString'; +var $toString = DateProto[TO_STRING]; +var getTime = DateProto.getTime; +if (new Date(NaN) + '' != INVALID_DATE) { + __webpack_require__(45)(DateProto, TO_STRING, function toString() { + var value = getTime.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? $toString.call(this) : INVALID_DATE; + }); +} + + +/***/ }), +/* 374 */ +/***/ (function(module, exports, __webpack_require__) { + +var TO_PRIMITIVE = __webpack_require__(18)('toPrimitive'); +var proto = Date.prototype; + +if (!(TO_PRIMITIVE in proto)) __webpack_require__(52)(proto, TO_PRIMITIVE, __webpack_require__(375)); + + +/***/ }), +/* 375 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var anObject = __webpack_require__(13); +var toPrimitive = __webpack_require__(82); +var NUMBER = 'number'; + +module.exports = function (hint) { + if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint'); + return toPrimitive(anObject(this), hint != NUMBER); +}; + + +/***/ }), +/* 376 */ +/***/ (function(module, exports, __webpack_require__) { + +// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) +var $export = __webpack_require__(3); + +$export($export.S, 'Array', { isArray: __webpack_require__(137) }); + + +/***/ }), +/* 377 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var ctx = __webpack_require__(62); +var $export = __webpack_require__(3); +var toObject = __webpack_require__(36); +var call = __webpack_require__(228); +var isArrayIter = __webpack_require__(180); +var toLength = __webpack_require__(23); +var createProperty = __webpack_require__(181); +var getIterFn = __webpack_require__(182); + +$export($export.S + $export.F * !__webpack_require__(138)(function (iter) { Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iterFn = getIterFn(O); + var length, result, step, iterator; + if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { + for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for (result = new C(length); length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); + + +/***/ }), +/* 378 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var createProperty = __webpack_require__(181); + +// WebKit Array.of isn't generic +$export($export.S + $export.F * __webpack_require__(12)(function () { + function F() { /* empty */ } + return !(Array.of.call(F) instanceof F); +}), 'Array', { + // 22.1.2.3 Array.of( ...items) + of: function of(/* ...args */) { + var index = 0; + var aLen = arguments.length; + var result = new (typeof this == 'function' ? this : Array)(aLen); + while (aLen > index) createProperty(result, index, arguments[index++]); + result.length = aLen; + return result; + } +}); + + +/***/ }), +/* 379 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 22.1.3.13 Array.prototype.join(separator) +var $export = __webpack_require__(3); +var toIObject = __webpack_require__(53); +var arrayJoin = [].join; + +// fallback for not array-like strings +$export($export.P + $export.F * (__webpack_require__(122) != Object || !__webpack_require__(57)(arrayJoin)), 'Array', { + join: function join(separator) { + return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator); + } +}); + + +/***/ }), +/* 380 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var html = __webpack_require__(168); +var cof = __webpack_require__(75); +var toAbsoluteIndex = __webpack_require__(90); +var toLength = __webpack_require__(23); +var arraySlice = [].slice; + +// fallback for not array-like ES3 strings and DOM objects +$export($export.P + $export.F * __webpack_require__(12)(function () { + if (html) arraySlice.call(html); +}), 'Array', { + slice: function slice(begin, end) { + var len = toLength(this.length); + var klass = cof(this); + end = end === undefined ? len : end; + if (klass == 'Array') return arraySlice.call(this, begin, end); + var start = toAbsoluteIndex(begin, len); + var upTo = toAbsoluteIndex(end, len); + var size = toLength(upTo - start); + var cloned = new Array(size); + var i = 0; + for (; i < size; i++) cloned[i] = klass == 'String' + ? this.charAt(start + i) + : this[start + i]; + return cloned; + } +}); + + +/***/ }), +/* 381 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var aFunction = __webpack_require__(63); +var toObject = __webpack_require__(36); +var fails = __webpack_require__(12); +var $sort = [].sort; +var test = [1, 2, 3]; + +$export($export.P + $export.F * (fails(function () { + // IE8- + test.sort(undefined); +}) || !fails(function () { + // V8 bug + test.sort(null); + // Old WebKit +}) || !__webpack_require__(57)($sort)), 'Array', { + // 22.1.3.25 Array.prototype.sort(comparefn) + sort: function sort(comparefn) { + return comparefn === undefined + ? $sort.call(toObject(this)) + : $sort.call(toObject(this), aFunction(comparefn)); + } +}); + + +/***/ }), +/* 382 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $forEach = __webpack_require__(67)(0); +var STRICT = __webpack_require__(57)([].forEach, true); + +$export($export.P + $export.F * !STRICT, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), +/* 383 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(14); +var isArray = __webpack_require__(137); +var SPECIES = __webpack_require__(18)('species'); + +module.exports = function (original) { + var C; + if (isArray(original)) { + C = original.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? Array : C; +}; + + +/***/ }), +/* 384 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $map = __webpack_require__(67)(1); + +$export($export.P + $export.F * !__webpack_require__(57)([].map, true), 'Array', { + // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), +/* 385 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $filter = __webpack_require__(67)(2); + +$export($export.P + $export.F * !__webpack_require__(57)([].filter, true), 'Array', { + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), +/* 386 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $some = __webpack_require__(67)(3); + +$export($export.P + $export.F * !__webpack_require__(57)([].some, true), 'Array', { + // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg]) + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), +/* 387 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $every = __webpack_require__(67)(4); + +$export($export.P + $export.F * !__webpack_require__(57)([].every, true), 'Array', { + // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg]) + every: function every(callbackfn /* , thisArg */) { + return $every(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), +/* 388 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $reduce = __webpack_require__(230); + +$export($export.P + $export.F * !__webpack_require__(57)([].reduce, true), 'Array', { + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], false); + } +}); + + +/***/ }), +/* 389 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $reduce = __webpack_require__(230); + +$export($export.P + $export.F * !__webpack_require__(57)([].reduceRight, true), 'Array', { + // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue]) + reduceRight: function reduceRight(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], true); + } +}); + + +/***/ }), +/* 390 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $indexOf = __webpack_require__(135)(false); +var $native = [].indexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(57)($native)), 'Array', { + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? $native.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments[1]); + } +}); + + +/***/ }), +/* 391 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var toIObject = __webpack_require__(53); +var toInteger = __webpack_require__(64); +var toLength = __webpack_require__(23); +var $native = [].lastIndexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(57)($native)), 'Array', { + // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex]) + lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0; + var O = toIObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0; + return -1; + } +}); + + +/***/ }), +/* 392 */ +/***/ (function(module, exports, __webpack_require__) { + +// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) +var $export = __webpack_require__(3); + +$export($export.P, 'Array', { copyWithin: __webpack_require__(231) }); + +__webpack_require__(94)('copyWithin'); + + +/***/ }), +/* 393 */ +/***/ (function(module, exports, __webpack_require__) { + +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +var $export = __webpack_require__(3); + +$export($export.P, 'Array', { fill: __webpack_require__(183) }); + +__webpack_require__(94)('fill'); + + +/***/ }), +/* 394 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined) +var $export = __webpack_require__(3); +var $find = __webpack_require__(67)(5); +var KEY = 'find'; +var forced = true; +// Shouldn't skip holes +if (KEY in []) Array(1)[KEY](function () { forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +__webpack_require__(94)(KEY); + + +/***/ }), +/* 395 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined) +var $export = __webpack_require__(3); +var $find = __webpack_require__(67)(6); +var KEY = 'findIndex'; +var forced = true; +// Shouldn't skip holes +if (KEY in []) Array(1)[KEY](function () { forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + findIndex: function findIndex(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +__webpack_require__(94)(KEY); + + +/***/ }), +/* 396 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(106)('Array'); + + +/***/ }), +/* 397 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(11); +var inheritIfRequired = __webpack_require__(171); +var dP = __webpack_require__(29).f; +var gOPN = __webpack_require__(92).f; +var isRegExp = __webpack_require__(178); +var $flags = __webpack_require__(139); +var $RegExp = global.RegExp; +var Base = $RegExp; +var proto = $RegExp.prototype; +var re1 = /a/g; +var re2 = /a/g; +// "new" creates a new object, old webkit buggy here +var CORRECT_NEW = new $RegExp(re1) !== re1; + +if (__webpack_require__(28) && (!CORRECT_NEW || __webpack_require__(12)(function () { + re2[__webpack_require__(18)('match')] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; +}))) { + $RegExp = function RegExp(p, f) { + var tiRE = this instanceof $RegExp; + var piRE = isRegExp(p); + var fiU = f === undefined; + return !tiRE && piRE && p.constructor === $RegExp && fiU ? p + : inheritIfRequired(CORRECT_NEW + ? new Base(piRE && !fiU ? p.source : p, f) + : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) + , tiRE ? this : proto, $RegExp); + }; + var proxy = function (key) { + key in $RegExp || dP($RegExp, key, { + configurable: true, + get: function () { return Base[key]; }, + set: function (it) { Base[key] = it; } + }); + }; + for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); + proto.constructor = $RegExp; + $RegExp.prototype = proto; + __webpack_require__(45)(global, 'RegExp', $RegExp); +} + +__webpack_require__(106)('RegExp'); + + +/***/ }), +/* 398 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +__webpack_require__(234); +var anObject = __webpack_require__(13); +var $flags = __webpack_require__(139); +var DESCRIPTORS = __webpack_require__(28); +var TO_STRING = 'toString'; +var $toString = /./[TO_STRING]; + +var define = function (fn) { + __webpack_require__(45)(RegExp.prototype, TO_STRING, fn, true); +}; + +// 21.2.5.14 RegExp.prototype.toString() +if (__webpack_require__(12)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { + define(function toString() { + var R = anObject(this); + return '/'.concat(R.source, '/', + 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); + }); +// FF44- RegExp#toString has a wrong name +} else if ($toString.name != TO_STRING) { + define(function toString() { + return $toString.call(this); + }); +} + + +/***/ }), +/* 399 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var anObject = __webpack_require__(13); +var toLength = __webpack_require__(23); +var advanceStringIndex = __webpack_require__(186); +var regExpExec = __webpack_require__(140); + +// @@match logic +__webpack_require__(141)('match', 1, function (defined, MATCH, $match, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.github.io/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[MATCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative($match, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + if (!rx.global) return regExpExec(rx, S); + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + + +/***/ }), +/* 400 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var anObject = __webpack_require__(13); +var toObject = __webpack_require__(36); +var toLength = __webpack_require__(23); +var toInteger = __webpack_require__(64); +var advanceStringIndex = __webpack_require__(186); +var regExpExec = __webpack_require__(140); +var max = Math.max; +var min = Math.min; +var floor = Math.floor; +var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// @@replace logic +__webpack_require__(141)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = defined(this); + var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; + return fn !== undefined + ? fn.call(searchValue, O, replaceValue) + : $replace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + var res = maybeCallNative($replace, regexp, this, replaceValue); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + results.push(result); + if (!global) break; + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + var matched = String(result[0]); + var position = max(min(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return $replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } +}); + + +/***/ }), +/* 401 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var anObject = __webpack_require__(13); +var sameValue = __webpack_require__(219); +var regExpExec = __webpack_require__(140); + +// @@search logic +__webpack_require__(141)('search', 1, function (defined, SEARCH, $search, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.github.io/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[SEARCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search + function (regexp) { + var res = maybeCallNative($search, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; +}); + + +/***/ }), +/* 402 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isRegExp = __webpack_require__(178); +var anObject = __webpack_require__(13); +var speciesConstructor = __webpack_require__(125); +var advanceStringIndex = __webpack_require__(186); +var toLength = __webpack_require__(23); +var callRegExpExec = __webpack_require__(140); +var regexpExec = __webpack_require__(185); +var fails = __webpack_require__(12); +var $min = Math.min; +var $push = [].push; +var $SPLIT = 'split'; +var LENGTH = 'length'; +var LAST_INDEX = 'lastIndex'; +var MAX_UINT32 = 0xffffffff; + +// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError +var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); + +// @@split logic +__webpack_require__(141)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { + var internalSplit; + if ( + 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || + 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || + 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || + '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || + '.'[$SPLIT](/()()/)[LENGTH] > 1 || + ''[$SPLIT](/.?/)[LENGTH] + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(this); + if (separator === undefined && limit === 0) return []; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) return $split.call(string, separator, limit); + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy[LAST_INDEX]; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); + lastLength = match[0][LENGTH]; + lastLastIndex = lastIndex; + if (output[LENGTH] >= splitLimit) break; + } + if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop + } + if (lastLastIndex === string[LENGTH]) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; + }; + // Chakra, V8 + } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); + }; + } else { + internalSplit = $split; + } + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = defined(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; +}); + + +/***/ }), +/* 403 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(11); +var macrotask = __webpack_require__(187).set; +var Observer = global.MutationObserver || global.WebKitMutationObserver; +var process = global.process; +var Promise = global.Promise; +var isNode = __webpack_require__(75)(process) == 'process'; + +module.exports = function () { + var head, last, notify; + + var flush = function () { + var parent, fn; + if (isNode && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (e) { + if (head) notify(); + else last = undefined; + throw e; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (isNode) { + notify = function () { + process.nextTick(flush); + }; + // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 + } else if (Observer && !(global.navigator && global.navigator.standalone)) { + var toggle = true; + var node = document.createTextNode(''); + new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + var promise = Promise.resolve(undefined); + notify = function () { + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } + + return function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; + }; +}; + + +/***/ }), +/* 404 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return { e: false, v: exec() }; + } catch (e) { + return { e: true, v: e }; + } +}; + + +/***/ }), +/* 405 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var strong = __webpack_require__(238); +var validate = __webpack_require__(95); +var MAP = 'Map'; + +// 23.1 Map Objects +module.exports = __webpack_require__(144)(MAP, function (get) { + return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key) { + var entry = strong.getEntry(validate(this, MAP), key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value) { + return strong.def(validate(this, MAP), key === 0 ? 0 : key, value); + } +}, strong, true); + + +/***/ }), +/* 406 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var strong = __webpack_require__(238); +var validate = __webpack_require__(95); +var SET = 'Set'; + +// 23.2 Set Objects +module.exports = __webpack_require__(144)(SET, function (get) { + return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value) { + return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value); + } +}, strong); + + +/***/ }), +/* 407 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(11); +var each = __webpack_require__(67)(0); +var redefine = __webpack_require__(45); +var meta = __webpack_require__(83); +var assign = __webpack_require__(218); +var weak = __webpack_require__(239); +var isObject = __webpack_require__(14); +var validate = __webpack_require__(95); +var NATIVE_WEAK_MAP = __webpack_require__(95); +var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; +var WEAK_MAP = 'WeakMap'; +var getWeak = meta.getWeak; +var isExtensible = Object.isExtensible; +var uncaughtFrozenStore = weak.ufstore; +var InternalMap; + +var wrapper = function (get) { + return function WeakMap() { + return get(this, arguments.length > 0 ? arguments[0] : undefined); + }; +}; + +var methods = { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key) { + if (isObject(key)) { + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); + return data ? data[this._i] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value) { + return weak.def(validate(this, WEAK_MAP), key, value); + } +}; + +// 23.3 WeakMap Objects +var $WeakMap = module.exports = __webpack_require__(144)(WEAK_MAP, wrapper, methods, weak, true, true); + +// IE11 WeakMap frozen keys fix +if (NATIVE_WEAK_MAP && IS_IE11) { + InternalMap = weak.getConstructor(wrapper, WEAK_MAP); + assign(InternalMap.prototype, methods); + meta.NEED = true; + each(['delete', 'has', 'get', 'set'], function (key) { + var proto = $WeakMap.prototype; + var method = proto[key]; + redefine(proto, key, function (a, b) { + // store frozen objects on internal weakmap shim + if (isObject(a) && !isExtensible(a)) { + if (!this._f) this._f = new InternalMap(); + var result = this._f[key](a, b); + return key == 'set' ? this : result; + // store all the rest on native weakmap + } return method.call(this, a, b); + }); + }); +} + + +/***/ }), +/* 408 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var weak = __webpack_require__(239); +var validate = __webpack_require__(95); +var WEAK_SET = 'WeakSet'; + +// 23.4 WeakSet Objects +__webpack_require__(144)(WEAK_SET, function (get) { + return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value) { + return weak.def(validate(this, WEAK_SET), value, true); + } +}, weak, false, true); + + +/***/ }), +/* 409 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(3); +var $typed = __webpack_require__(145); +var buffer = __webpack_require__(188); +var anObject = __webpack_require__(13); +var toAbsoluteIndex = __webpack_require__(90); +var toLength = __webpack_require__(23); +var isObject = __webpack_require__(14); +var ArrayBuffer = __webpack_require__(11).ArrayBuffer; +var speciesConstructor = __webpack_require__(125); +var $ArrayBuffer = buffer.ArrayBuffer; +var $DataView = buffer.DataView; +var $isView = $typed.ABV && ArrayBuffer.isView; +var $slice = $ArrayBuffer.prototype.slice; +var VIEW = $typed.VIEW; +var ARRAY_BUFFER = 'ArrayBuffer'; + +$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer }); + +$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, { + // 24.1.3.1 ArrayBuffer.isView(arg) + isView: function isView(it) { + return $isView && $isView(it) || isObject(it) && VIEW in it; + } +}); + +$export($export.P + $export.U + $export.F * __webpack_require__(12)(function () { + return !new $ArrayBuffer(2).slice(1, undefined).byteLength; +}), ARRAY_BUFFER, { + // 24.1.4.3 ArrayBuffer.prototype.slice(start, end) + slice: function slice(start, end) { + if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix + var len = anObject(this).byteLength; + var first = toAbsoluteIndex(start, len); + var fin = toAbsoluteIndex(end === undefined ? len : end, len); + var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first)); + var viewS = new $DataView(this); + var viewT = new $DataView(result); + var index = 0; + while (first < fin) { + viewT.setUint8(index++, viewS.getUint8(first++)); + } return result; + } +}); + +__webpack_require__(106)(ARRAY_BUFFER); + + +/***/ }), +/* 410 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +$export($export.G + $export.W + $export.F * !__webpack_require__(145).ABV, { + DataView: __webpack_require__(188).DataView +}); + + +/***/ }), +/* 411 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Int8', 1, function (init) { + return function Int8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 412 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Uint8', 1, function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 413 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Uint8', 1, function (init) { + return function Uint8ClampedArray(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}, true); + + +/***/ }), +/* 414 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Int16', 2, function (init) { + return function Int16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 415 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Uint16', 2, function (init) { + return function Uint16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 416 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Int32', 4, function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 417 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Uint32', 4, function (init) { + return function Uint32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 418 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Float32', 4, function (init) { + return function Float32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 419 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(77)('Float64', 8, function (init) { + return function Float64Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), +/* 420 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.1 Reflect.apply(target, thisArgument, argumentsList) +var $export = __webpack_require__(3); +var aFunction = __webpack_require__(63); +var anObject = __webpack_require__(13); +var rApply = (__webpack_require__(11).Reflect || {}).apply; +var fApply = Function.apply; +// MS Edge argumentsList argument is optional +$export($export.S + $export.F * !__webpack_require__(12)(function () { + rApply(function () { /* empty */ }); +}), 'Reflect', { + apply: function apply(target, thisArgument, argumentsList) { + var T = aFunction(target); + var L = anObject(argumentsList); + return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L); + } +}); + + +/***/ }), +/* 421 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.2 Reflect.construct(target, argumentsList [, newTarget]) +var $export = __webpack_require__(3); +var create = __webpack_require__(91); +var aFunction = __webpack_require__(63); +var anObject = __webpack_require__(13); +var isObject = __webpack_require__(14); +var fails = __webpack_require__(12); +var bind = __webpack_require__(220); +var rConstruct = (__webpack_require__(11).Reflect || {}).construct; + +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(rConstruct(function () { /* empty */ }, [], F) instanceof F); +}); +var ARGS_BUG = !fails(function () { + rConstruct(function () { /* empty */ }); +}); + +$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', { + construct: function construct(Target, args /* , newTarget */) { + aFunction(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget); + if (Target == newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (bind.apply(Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = create(isObject(proto) ? proto : Object.prototype); + var result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } +}); + + +/***/ }), +/* 422 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes) +var dP = __webpack_require__(29); +var $export = __webpack_require__(3); +var anObject = __webpack_require__(13); +var toPrimitive = __webpack_require__(82); + +// MS Edge has broken Reflect.defineProperty - throwing instead of returning false +$export($export.S + $export.F * __webpack_require__(12)(function () { + // eslint-disable-next-line no-undef + Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 }); +}), 'Reflect', { + defineProperty: function defineProperty(target, propertyKey, attributes) { + anObject(target); + propertyKey = toPrimitive(propertyKey, true); + anObject(attributes); + try { + dP.f(target, propertyKey, attributes); + return true; + } catch (e) { + return false; + } + } +}); + + +/***/ }), +/* 423 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.4 Reflect.deleteProperty(target, propertyKey) +var $export = __webpack_require__(3); +var gOPD = __webpack_require__(65).f; +var anObject = __webpack_require__(13); + +$export($export.S, 'Reflect', { + deleteProperty: function deleteProperty(target, propertyKey) { + var desc = gOPD(anObject(target), propertyKey); + return desc && !desc.configurable ? false : delete target[propertyKey]; + } +}); + + +/***/ }), +/* 424 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 26.1.5 Reflect.enumerate(target) +var $export = __webpack_require__(3); +var anObject = __webpack_require__(13); +var Enumerate = function (iterated) { + this._t = anObject(iterated); // target + this._i = 0; // next index + var keys = this._k = []; // keys + var key; + for (key in iterated) keys.push(key); +}; +__webpack_require__(227)(Enumerate, 'Object', function () { + var that = this; + var keys = that._k; + var key; + do { + if (that._i >= keys.length) return { value: undefined, done: true }; + } while (!((key = keys[that._i++]) in that._t)); + return { value: key, done: false }; +}); + +$export($export.S, 'Reflect', { + enumerate: function enumerate(target) { + return new Enumerate(target); + } +}); + + +/***/ }), +/* 425 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.6 Reflect.get(target, propertyKey [, receiver]) +var gOPD = __webpack_require__(65); +var getPrototypeOf = __webpack_require__(93); +var has = __webpack_require__(51); +var $export = __webpack_require__(3); +var isObject = __webpack_require__(14); +var anObject = __webpack_require__(13); + +function get(target, propertyKey /* , receiver */) { + var receiver = arguments.length < 3 ? target : arguments[2]; + var desc, proto; + if (anObject(target) === receiver) return target[propertyKey]; + if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value') + ? desc.value + : desc.get !== undefined + ? desc.get.call(receiver) + : undefined; + if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver); +} + +$export($export.S, 'Reflect', { get: get }); + + +/***/ }), +/* 426 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey) +var gOPD = __webpack_require__(65); +var $export = __webpack_require__(3); +var anObject = __webpack_require__(13); + +$export($export.S, 'Reflect', { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { + return gOPD.f(anObject(target), propertyKey); + } +}); + + +/***/ }), +/* 427 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.8 Reflect.getPrototypeOf(target) +var $export = __webpack_require__(3); +var getProto = __webpack_require__(93); +var anObject = __webpack_require__(13); + +$export($export.S, 'Reflect', { + getPrototypeOf: function getPrototypeOf(target) { + return getProto(anObject(target)); + } +}); + + +/***/ }), +/* 428 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.9 Reflect.has(target, propertyKey) +var $export = __webpack_require__(3); + +$export($export.S, 'Reflect', { + has: function has(target, propertyKey) { + return propertyKey in target; + } +}); + + +/***/ }), +/* 429 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.10 Reflect.isExtensible(target) +var $export = __webpack_require__(3); +var anObject = __webpack_require__(13); +var $isExtensible = Object.isExtensible; + +$export($export.S, 'Reflect', { + isExtensible: function isExtensible(target) { + anObject(target); + return $isExtensible ? $isExtensible(target) : true; + } +}); + + +/***/ }), +/* 430 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.11 Reflect.ownKeys(target) +var $export = __webpack_require__(3); + +$export($export.S, 'Reflect', { ownKeys: __webpack_require__(241) }); + + +/***/ }), +/* 431 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.12 Reflect.preventExtensions(target) +var $export = __webpack_require__(3); +var anObject = __webpack_require__(13); +var $preventExtensions = Object.preventExtensions; + +$export($export.S, 'Reflect', { + preventExtensions: function preventExtensions(target) { + anObject(target); + try { + if ($preventExtensions) $preventExtensions(target); + return true; + } catch (e) { + return false; + } + } +}); + + +/***/ }), +/* 432 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.13 Reflect.set(target, propertyKey, V [, receiver]) +var dP = __webpack_require__(29); +var gOPD = __webpack_require__(65); +var getPrototypeOf = __webpack_require__(93); +var has = __webpack_require__(51); +var $export = __webpack_require__(3); +var createDesc = __webpack_require__(86); +var anObject = __webpack_require__(13); +var isObject = __webpack_require__(14); + +function set(target, propertyKey, V /* , receiver */) { + var receiver = arguments.length < 4 ? target : arguments[3]; + var ownDesc = gOPD.f(anObject(target), propertyKey); + var existingDescriptor, proto; + if (!ownDesc) { + if (isObject(proto = getPrototypeOf(target))) { + return set(proto, propertyKey, V, receiver); + } + ownDesc = createDesc(0); + } + if (has(ownDesc, 'value')) { + if (ownDesc.writable === false || !isObject(receiver)) return false; + if (existingDescriptor = gOPD.f(receiver, propertyKey)) { + if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; + existingDescriptor.value = V; + dP.f(receiver, propertyKey, existingDescriptor); + } else dP.f(receiver, propertyKey, createDesc(0, V)); + return true; + } + return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true); +} + +$export($export.S, 'Reflect', { set: set }); + + +/***/ }), +/* 433 */ +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.14 Reflect.setPrototypeOf(target, proto) +var $export = __webpack_require__(3); +var setProto = __webpack_require__(169); + +if (setProto) $export($export.S, 'Reflect', { + setPrototypeOf: function setPrototypeOf(target, proto) { + setProto.check(target, proto); + try { + setProto.set(target, proto); + return true; + } catch (e) { + return false; + } + } +}); + + +/***/ }), +/* 434 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(435); +module.exports = __webpack_require__(26).Array.includes; + + +/***/ }), +/* 435 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://github.com/tc39/Array.prototype.includes +var $export = __webpack_require__(3); +var $includes = __webpack_require__(135)(true); + +$export($export.P, 'Array', { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +__webpack_require__(94)('includes'); + + +/***/ }), +/* 436 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(437); +module.exports = __webpack_require__(26).Array.flatMap; + + +/***/ }), +/* 437 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap +var $export = __webpack_require__(3); +var flattenIntoArray = __webpack_require__(438); +var toObject = __webpack_require__(36); +var toLength = __webpack_require__(23); +var aFunction = __webpack_require__(63); +var arraySpeciesCreate = __webpack_require__(229); + +$export($export.P, 'Array', { + flatMap: function flatMap(callbackfn /* , thisArg */) { + var O = toObject(this); + var sourceLen, A; + aFunction(callbackfn); + sourceLen = toLength(O.length); + A = arraySpeciesCreate(O, 0); + flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]); + return A; + } +}); + +__webpack_require__(94)('flatMap'); + + +/***/ }), +/* 438 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray +var isArray = __webpack_require__(137); +var isObject = __webpack_require__(14); +var toLength = __webpack_require__(23); +var ctx = __webpack_require__(62); +var IS_CONCAT_SPREADABLE = __webpack_require__(18)('isConcatSpreadable'); + +function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? ctx(mapper, thisArg, 3) : false; + var element, spreadable; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + spreadable = false; + if (isObject(element)) { + spreadable = element[IS_CONCAT_SPREADABLE]; + spreadable = spreadable !== undefined ? !!spreadable : isArray(element); + } + + if (spreadable && depth > 0) { + targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; + } else { + if (targetIndex >= 0x1fffffffffffff) throw TypeError(); + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; +} + +module.exports = flattenIntoArray; + + +/***/ }), +/* 439 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(440); +module.exports = __webpack_require__(26).String.padStart; + + +/***/ }), +/* 440 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://github.com/tc39/proposal-string-pad-start-end +var $export = __webpack_require__(3); +var $pad = __webpack_require__(242); +var userAgent = __webpack_require__(143); + +// https://github.com/zloirock/core-js/issues/280 +var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); + +$export($export.P + $export.F * WEBKIT_BUG, 'String', { + padStart: function padStart(maxLength /* , fillString = ' ' */) { + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); + } +}); + + +/***/ }), +/* 441 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(442); +module.exports = __webpack_require__(26).String.padEnd; + + +/***/ }), +/* 442 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://github.com/tc39/proposal-string-pad-start-end +var $export = __webpack_require__(3); +var $pad = __webpack_require__(242); +var userAgent = __webpack_require__(143); + +// https://github.com/zloirock/core-js/issues/280 +var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); + +$export($export.P + $export.F * WEBKIT_BUG, 'String', { + padEnd: function padEnd(maxLength /* , fillString = ' ' */) { + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); + } +}); + + +/***/ }), +/* 443 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(444); +module.exports = __webpack_require__(26).String.trimLeft; + + +/***/ }), +/* 444 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://github.com/sebmarkbage/ecmascript-string-left-right-trim +__webpack_require__(104)('trimLeft', function ($trim) { + return function trimLeft() { + return $trim(this, 1); + }; +}, 'trimStart'); + + +/***/ }), +/* 445 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(446); +module.exports = __webpack_require__(26).String.trimRight; + + +/***/ }), +/* 446 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://github.com/sebmarkbage/ecmascript-string-left-right-trim +__webpack_require__(104)('trimRight', function ($trim) { + return function trimRight() { + return $trim(this, 2); + }; +}, 'trimEnd'); + + +/***/ }), +/* 447 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(448); +module.exports = __webpack_require__(165).f('asyncIterator'); + + +/***/ }), +/* 448 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(214)('asyncIterator'); + + +/***/ }), +/* 449 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(450); +module.exports = __webpack_require__(26).Object.getOwnPropertyDescriptors; + + +/***/ }), +/* 450 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://github.com/tc39/proposal-object-getownpropertydescriptors +var $export = __webpack_require__(3); +var ownKeys = __webpack_require__(241); +var toIObject = __webpack_require__(53); +var gOPD = __webpack_require__(65); +var createProperty = __webpack_require__(181); + +$export($export.S, 'Object', { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIObject(object); + var getDesc = gOPD.f; + var keys = ownKeys(O); + var result = {}; + var i = 0; + var key, desc; + while (keys.length > i) { + desc = getDesc(O, key = keys[i++]); + if (desc !== undefined) createProperty(result, key, desc); + } + return result; + } +}); + + +/***/ }), +/* 451 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(452); +module.exports = __webpack_require__(26).Object.values; + + +/***/ }), +/* 452 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://github.com/tc39/proposal-object-values-entries +var $export = __webpack_require__(3); +var $values = __webpack_require__(243)(false); + +$export($export.S, 'Object', { + values: function values(it) { + return $values(it); + } +}); + + +/***/ }), +/* 453 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(454); +module.exports = __webpack_require__(26).Object.entries; + + +/***/ }), +/* 454 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://github.com/tc39/proposal-object-values-entries +var $export = __webpack_require__(3); +var $entries = __webpack_require__(243)(true); + +$export($export.S, 'Object', { + entries: function entries(it) { + return $entries(it); + } +}); + + +/***/ }), +/* 455 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +__webpack_require__(235); +__webpack_require__(456); +module.exports = __webpack_require__(26).Promise['finally']; + + +/***/ }), +/* 456 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// https://github.com/tc39/proposal-promise-finally + +var $export = __webpack_require__(3); +var core = __webpack_require__(26); +var global = __webpack_require__(11); +var speciesConstructor = __webpack_require__(125); +var promiseResolve = __webpack_require__(237); + +$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { + var C = speciesConstructor(this, core.Promise || global.Promise); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); +} }); + + +/***/ }), +/* 457 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(458); +__webpack_require__(459); +__webpack_require__(460); +module.exports = __webpack_require__(26); + + +/***/ }), +/* 458 */ +/***/ (function(module, exports, __webpack_require__) { + +// ie9- setTimeout & setInterval additional parameters fix +var global = __webpack_require__(11); +var $export = __webpack_require__(3); +var userAgent = __webpack_require__(143); +var slice = [].slice; +var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check +var wrap = function (set) { + return function (fn, time /* , ...args */) { + var boundArgs = arguments.length > 2; + var args = boundArgs ? slice.call(arguments, 2) : false; + return set(boundArgs ? function () { + // eslint-disable-next-line no-new-func + (typeof fn == 'function' ? fn : Function(fn)).apply(this, args); + } : fn, time); + }; +}; +$export($export.G + $export.B + $export.F * MSIE, { + setTimeout: wrap(global.setTimeout), + setInterval: wrap(global.setInterval) +}); + + +/***/ }), +/* 459 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(3); +var $task = __webpack_require__(187); +$export($export.G + $export.B, { + setImmediate: $task.set, + clearImmediate: $task.clear +}); + + +/***/ }), +/* 460 */ +/***/ (function(module, exports, __webpack_require__) { + +var $iterators = __webpack_require__(184); +var getKeys = __webpack_require__(89); +var redefine = __webpack_require__(45); +var global = __webpack_require__(11); +var hide = __webpack_require__(52); +var Iterators = __webpack_require__(105); +var wks = __webpack_require__(18); +var ITERATOR = wks('iterator'); +var TO_STRING_TAG = wks('toStringTag'); +var ArrayValues = Iterators.Array; + +var DOMIterables = { + CSSRuleList: true, // TODO: Not spec compliant, should be false. + CSSStyleDeclaration: false, + CSSValueList: false, + ClientRectList: false, + DOMRectList: false, + DOMStringList: false, + DOMTokenList: true, + DataTransferItemList: false, + FileList: false, + HTMLAllCollection: false, + HTMLCollection: false, + HTMLFormElement: false, + HTMLSelectElement: false, + MediaList: true, // TODO: Not spec compliant, should be false. + MimeTypeArray: false, + NamedNodeMap: false, + NodeList: true, + PaintRequestList: false, + Plugin: false, + PluginArray: false, + SVGLengthList: false, + SVGNumberList: false, + SVGPathSegList: false, + SVGPointList: false, + SVGStringList: false, + SVGTransformList: false, + SourceBufferList: false, + StyleSheetList: true, // TODO: Not spec compliant, should be false. + TextTrackCueList: false, + TextTrackList: false, + TouchList: false +}; + +for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { + var NAME = collections[i]; + var explicit = DOMIterables[NAME]; + var Collection = global[NAME]; + var proto = Collection && Collection.prototype; + var key; + if (proto) { + if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); + if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = ArrayValues; + if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); + } +} + + +/***/ }), +/* 461 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var runtime = (function (exports) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function define(obj, key, value) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + return obj[key]; + } + try { + // IE 8 has a broken Object.defineProperty that only works on DOM objects. + define({}, ""); + } catch (err) { + define = function(obj, key, value) { + return obj[key] = value; + }; + } + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + exports.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunction.displayName = define( + GeneratorFunctionPrototype, + toStringTagSymbol, + "GeneratorFunction" + ); + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + define(prototype, method, function(arg) { + return this._invoke(method, arg); + }); + }); + } + + exports.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + exports.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + define(genFun, toStringTagSymbol, "GeneratorFunction"); + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + exports.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator, PromiseImpl) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return PromiseImpl.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return PromiseImpl.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new PromiseImpl(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + exports.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) { + if (PromiseImpl === void 0) PromiseImpl = Promise; + + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList), + PromiseImpl + ); + + return exports.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + define(Gp, toStringTagSymbol, "Generator"); + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + exports.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; + +}( + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + true ? module.exports : undefined +)); + +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + // This module should not be running in strict mode, so the above + // assignment should always work unless something is misconfigured. Just + // in case runtime.js accidentally runs in strict mode, we can escape + // strict mode using a global Function call. This could conceivably fail + // if a Content Security Policy forbids using Function, but in that case + // the proper solution is to fix the accidental strict mode problem. If + // you've misconfigured your bundler to force strict mode and applied a + // CSP to forbid Function, and you're not willing to fix either of those + // problems, please detail your unique predicament in a GitHub issue. + Function("r", "regeneratorRuntime = r")(runtime); +} + + +/***/ }), +/* 462 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(463); +module.exports = __webpack_require__(244).global; + + +/***/ }), +/* 463 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://github.com/tc39/proposal-global +var $export = __webpack_require__(464); + +$export($export.G, { global: __webpack_require__(189) }); + + +/***/ }), +/* 464 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(189); +var core = __webpack_require__(244); +var ctx = __webpack_require__(465); +var hide = __webpack_require__(467); +var has = __webpack_require__(474); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var IS_WRAP = type & $export.W; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE]; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; + var key, own, out; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if (own && has(exports, key)) continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function (C) { + var F = function (a, b, c) { + if (this instanceof C) { + switch (arguments.length) { + case 0: return new C(); + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if (IS_PROTO) { + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); + } + } +}; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + + +/***/ }), +/* 465 */ +/***/ (function(module, exports, __webpack_require__) { + +// optional / simple context binding +var aFunction = __webpack_require__(466); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), +/* 466 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; + + +/***/ }), +/* 467 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(468); +var createDesc = __webpack_require__(473); +module.exports = __webpack_require__(191) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), +/* 468 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(469); +var IE8_DOM_DEFINE = __webpack_require__(470); +var toPrimitive = __webpack_require__(472); +var dP = Object.defineProperty; + +exports.f = __webpack_require__(191) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), +/* 469 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(190); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; +}; + + +/***/ }), +/* 470 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__(191) && !__webpack_require__(245)(function () { + return Object.defineProperty(__webpack_require__(471)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 471 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(190); +var document = __webpack_require__(189).document; +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; + + +/***/ }), +/* 472 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(190); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), +/* 473 */ +/***/ (function(module, exports) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), +/* 474 */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), +/* 475 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Counter = void 0; +const Helper_1 = __webpack_require__(7); +class Counter { + constructor(value) { + this._value = 0; + if (value instanceof Counter) { + value = value.current; + } + this._value = Helper_1.Helper.nonNull(value, 0); + } + next() { + this._value++; + return this._value; + } + current() { + return this._value; + } +} +exports.Counter = Counter; +//# sourceMappingURL=Counter.js.map + +/***/ }), +/* 476 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DateHelper = void 0; +const Helper_1 = __webpack_require__(7); +let DateHelper = /** @class */ (() => { + class DateHelper { + /** + * Formatiert ein Date-Object nach der Vorlage von der C-Funktion strftime + * + * @param sFormat + * @param date + * @param useUTC + * @returns {*|void|string} + */ + static strftime(sFormat, date, useUTC) { + useUTC = Helper_1.Helper.nonNull(useUTC, false); + date = Helper_1.Helper.nonNull(date, new Date()); + if (!(date instanceof Date)) + date = new Date(date); + let nDay = (useUTC) ? date.getUTCDay() : date.getDay(), nDate = (useUTC) ? date.getUTCDate() : date.getDate(), nMonth = (useUTC) ? date.getUTCMonth() : date.getMonth(), nYear = (useUTC) ? date.getUTCFullYear() : date.getFullYear(), nHour = (useUTC) ? date.getUTCHours() : date.getHours(), aDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], aDaysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], aMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], isLeapYear = function () { + if ((nYear & 3) !== 0) + return false; + return nYear % 100 !== 0 || nYear % 400 === 0; + }, getThursday = function () { + let target = new Date(date); + target.setDate(nDate - ((nDay + 6) % 7) + 3); + return target; + }, zeroPad = function (nNum, nPad) { + return ('' + (Math.pow(10, nPad) + nNum)).slice(1); + }; + return sFormat.replace(/%[a-z]/gi, (sMatch) => { + return { + '%a': this.translate(aDaysShort[nDay]), + '%A': this.translate(aDays[nDay]), + '%b': this.translate(aMonths[nMonth].slice(0, 3)), + '%B': this.translate(aMonths[nMonth]), + '%c': date.toUTCString(), + '%C': Math.floor(nYear / 100), + '%d': zeroPad(nDate, 2), + '%e': nDate, + '%f': zeroPad(date.getTime() % 1000, 4), + '%F': date.toISOString().slice(0, 10), + '%G': getThursday().getFullYear(), + '%g': ('' + getThursday().getFullYear()).slice(2), + '%H': zeroPad(nHour, 2), + '%I': zeroPad((nHour + 11) % 12 + 1, 2), + '%j': zeroPad(aDayCount[nMonth] + nDate + ((nMonth > 1 && isLeapYear()) ? 1 : 0), 3), + '%k': '' + nHour, + '%l': (nHour + 11) % 12 + 1, + '%m': zeroPad(nMonth + 1, 2), + '%M': zeroPad(date.getMinutes(), 2), + '%p': (nHour < 12) ? 'AM' : 'PM', + '%P': (nHour < 12) ? 'am' : 'pm', + '%s': Math.round(date.getTime() / 1000), + '%S': zeroPad(date.getSeconds(), 2), + '%u': nDay || 7, + '%w': '' + nDay, + '%x': date.toLocaleDateString(), + '%X': date.toLocaleTimeString(), + '%y': ('' + nYear).slice(2), + '%Y': nYear, + '%z': date.toTimeString().replace(/.+GMT([+-]\d+).+/, '$1'), + '%Z': date.toTimeString().replace(/.+\((.+?)\)$/, '$1') + }[sMatch] || sMatch; + }); + } + static translate(key) { + if (this.translationCallback) { + return this.translationCallback(key); + } + return key; + } + static setTranslationCallback(callback) { + this.translationCallback = callback; + } + } + DateHelper.FORMAT = { + ISO_TIME: "%Y-%m-%dT%H:%M%S" + }; + return DateHelper; +})(); +exports.DateHelper = DateHelper; +//# sourceMappingURL=DateHelper.js.map + +/***/ }), +/* 477 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MigrationHelper = void 0; +const typeorm_1 = __webpack_require__(47); +const Helper_1 = __webpack_require__(7); +class MigrationHelper { + static isServer() { + return (typeof document !== "object"); + } + static addTableFromModelClass(modelClass, queryRunner) { + return __awaiter(this, void 0, void 0, function* () { + return yield queryRunner.createTable(this.createTableFromModelClass(modelClass)); + }); + } + static addManyToManyTable(tableOne, tableTwo, queryRunner) { + return __awaiter(this, void 0, void 0, function* () { + return yield queryRunner.createTable(this.createManyToManyTable(tableOne, tableTwo)); + }); + } + static createManyToManyTable(tableOne, tableTwo) { + let fieldOne = tableOne + "Id"; + let fieldTwo = tableTwo + "Id"; + let name = tableOne + tableTwo.substr(0, 1).toUpperCase() + tableTwo.substr(1); + let manyToManyTable = new typeorm_1.Table({ + name: name, + columns: [ + { + name: fieldOne, + isPrimary: true, + type: "integer" + }, + { + name: fieldTwo, + isPrimary: true, + type: "integer" + } + ], + indices: [ + { + name: "IDX_" + name + "_" + fieldOne, + columnNames: [fieldOne] + }, + { + name: "IDX_" + name + "_" + fieldTwo, + columnNames: [fieldTwo] + } + ], + foreignKeys: [ + { + name: "FK_" + name + "_" + fieldOne, + columnNames: [fieldOne], + referencedTableName: tableOne.replace(/([A-Z])/, (match, p1) => "_" + p1.toLowerCase()), + referencedColumnNames: ["id"], + onDelete: "cascade", + }, + { + name: "FK_" + name + "_" + fieldTwo, + columnNames: [fieldTwo], + referencedTableName: tableTwo.replace(/([A-Z])/, (match, p1) => "_" + p1.toLowerCase()), + referencedColumnNames: ["id"], + onDelete: "cascade", + }, + ] + }); + return manyToManyTable; + } + static createTableFromModelClass(modelClass, prefix) { + prefix = Helper_1.Helper.nonNull(prefix, ""); + let columns = []; + let indices = []; + let foreignKeys = []; + let schemaDefinition = modelClass.getSchemaDefinition(); + let tableName = prefix + Helper_1.Helper.toSnakeCase(schemaDefinition.name); + Object.keys(schemaDefinition.columns).forEach(column => { + let columnConfig = {}; + Object.keys(schemaDefinition.columns[column]).forEach(key => { + columnConfig[key] = schemaDefinition.columns[column][key]; + }); + columnConfig["name"] = column; + if (schemaDefinition.columns[column].primary) { + columnConfig["isPrimary"] = true; + } + if (schemaDefinition.columns[column].nullable) { + columnConfig["isNullable"] = true; + } + if (schemaDefinition.columns[column].generated) { + //If it is not EasySyncBaseModel or server + if (Helper_1.Helper.isNull(modelClass.CAN_BE_SYNCED) || this.isServer() || column === "clientId") { + columnConfig["isGenerated"] = true; + columnConfig["generationStrategy"] = "increment"; + if (!this.isServer()) { + columnConfig["type"] = "INTEGER"; + } + } + } + if (typeof columnConfig["default"] === "string") { + columnConfig["default"] = "'" + columnConfig["default"] + "'"; + } + else if (columnConfig["default"] === true) { + columnConfig["default"] = 1; + } + else if (columnConfig["default"] === false) { + columnConfig["default"] = 0; + } + if (columnConfig["type"] === MigrationHelper.TYPES.SIMPLE_JSON) { + columnConfig["type"] = MigrationHelper.TYPES.TEXT; + } + if (columnConfig["type"] === MigrationHelper.TYPES.MEDIUMTEXT && !this.isServer()) { + columnConfig["type"] = MigrationHelper.TYPES.TEXT; + } + if (columnConfig["type"] === MigrationHelper.TYPES.SIMPLE_JSON && !this.isServer()) { + columnConfig["type"] = MigrationHelper.TYPES.TEXT; + } + columns.push(columnConfig); + }); + Object.keys(schemaDefinition.relations).forEach(relation => { + if (schemaDefinition.relations[relation].type === "many-to-one" || schemaDefinition.relations[relation].joinColumn) { + // let columnName = Helper.toSnakeCase(relation) + "Id"; + let columnName = relation.substr(0, 1).toLowerCase() + relation.substr(1) + "Id"; + let columnConfig = { + name: columnName, + type: MigrationHelper.TYPES.INTEGER, + isNullable: true + }; + columns.push(columnConfig); + let indexConfig = { + name: "IDX_" + tableName + "_" + columnName, + columnNames: [columnName] + }; + indices.push(indexConfig); + let foreignKeyConfig = { + name: "FK_" + tableName + "_" + columnName, + columnNames: [columnName], + referencedTableName: Helper_1.Helper.toSnakeCase(schemaDefinition.relations[relation].target), + referencedColumnNames: ["id"] + }; + foreignKeys.push(foreignKeyConfig); + } + }); + return new typeorm_1.Table({ + name: tableName, + columns: columns, + indices: indices, + foreignKeys: foreignKeys + }); + } + static updateModel(queryRunner, newModel) { + return __awaiter(this, void 0, void 0, function* () { + let schemaDefinition = newModel.getSchemaDefinition(); + let tableName = Helper_1.Helper.toSnakeCase(schemaDefinition.name); + let newTable = this.createTableFromModelClass(newModel); + let table = yield queryRunner.getTable(tableName); + table.name = "__temp__" + table.name; + table.indices.forEach(index => { + index.name = "__temp__" + index.name; + }); + table.foreignKeys.forEach(key => { + key.name = "__temp__" + key.name; + key.columnNames = [key.columnNames[0]]; + key.referencedColumnNames = [key.referencedColumnNames[0]]; + }); + if (MigrationHelper.isServer()) { + table.columns.forEach(column => { + if (column.default !== null && typeof column.default === "string" && column.default.startsWith("'") && column.default.endsWith("'") && (column.type !== "varchar" || column.default.startsWith("''"))) { + column.default = column.default.substring(1, column.default.length - 1); + } + }); + } + yield queryRunner.createTable(table); + let names = []; + table.columns.forEach(column => { + names.push(column.name); + }); + yield queryRunner.query("INSERT INTO " + table.name + "(`" + names.join("`,`") + "`) SELECT `" + names.join("`,`") + "` FROM " + tableName + ";"); + yield queryRunner.query("DROP TABLE " + tableName + ";"); + yield queryRunner.createTable(newTable); + let newColumnNames = []; + newTable.columns.forEach(column => newColumnNames.push(column.name)); + names = []; + table.columns.forEach(column => { + if (newColumnNames.indexOf(column.name) !== -1) { + names.push(column.name); + } + }); + yield queryRunner.query("INSERT INTO " + tableName + "(`" + names.join("`,`") + "`) SELECT `" + names.join("`,`") + "` FROM " + table.name + ";"); + yield queryRunner.query("DROP TABLE " + table.name + ";"); + }); + } +} +exports.MigrationHelper = MigrationHelper; +MigrationHelper.TYPES = { + INTEGER: "int", + FLOAT: "float", + DATE: "datetime", + STRING: "varchar", + TEXT: "text", + MEDIUMTEXT: "mediumtext", + BOOLEAN: "boolean", + JSON: "json", + SIMPLE_JSON: "simple-json", + MY_JSON: "my-json" +}; +//# sourceMappingURL=MigrationHelper.js.map + +/***/ }), +/* 478 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process, global) {/*! ***************************************************************************** +Copyright (C) Microsoft. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +var Reflect; +(function (Reflect) { + // Metadata Proposal + // https://rbuckton.github.io/reflect-metadata/ + (function (factory) { + var root = typeof global === "object" ? global : + typeof self === "object" ? self : + typeof this === "object" ? this : + Function("return this;")(); + var exporter = makeExporter(Reflect); + if (typeof root.Reflect === "undefined") { + root.Reflect = Reflect; + } + else { + exporter = makeExporter(root.Reflect, exporter); + } + factory(exporter); + function makeExporter(target, previous) { + return function (key, value) { + if (typeof target[key] !== "function") { + Object.defineProperty(target, key, { configurable: true, writable: true, value: value }); + } + if (previous) + previous(key, value); + }; + } + })(function (exporter) { + var hasOwn = Object.prototype.hasOwnProperty; + // feature test for Symbol support + var supportsSymbol = typeof Symbol === "function"; + var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== "undefined" ? Symbol.toPrimitive : "@@toPrimitive"; + var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== "undefined" ? Symbol.iterator : "@@iterator"; + var supportsCreate = typeof Object.create === "function"; // feature test for Object.create support + var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support + var downLevel = !supportsCreate && !supportsProto; + var HashMap = { + // create an object in dictionary mode (a.k.a. "slow" mode in v8) + create: supportsCreate + ? function () { return MakeDictionary(Object.create(null)); } + : supportsProto + ? function () { return MakeDictionary({ __proto__: null }); } + : function () { return MakeDictionary({}); }, + has: downLevel + ? function (map, key) { return hasOwn.call(map, key); } + : function (map, key) { return key in map; }, + get: downLevel + ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; } + : function (map, key) { return map[key]; }, + }; + // Load global or shim versions of Map, Set, and WeakMap + var functionPrototype = Object.getPrototypeOf(Function); + var usePolyfill = typeof process === "object" && process.env && process.env["REFLECT_METADATA_USE_MAP_POLYFILL"] === "true"; + var _Map = !usePolyfill && typeof Map === "function" && typeof Map.prototype.entries === "function" ? Map : CreateMapPolyfill(); + var _Set = !usePolyfill && typeof Set === "function" && typeof Set.prototype.entries === "function" ? Set : CreateSetPolyfill(); + var _WeakMap = !usePolyfill && typeof WeakMap === "function" ? WeakMap : CreateWeakMapPolyfill(); + // [[Metadata]] internal slot + // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots + var Metadata = new _WeakMap(); + /** + * Applies a set of decorators to a property of a target object. + * @param decorators An array of decorators. + * @param target The target object. + * @param propertyKey (Optional) The property key to decorate. + * @param attributes (Optional) The property descriptor for the target key. + * @remarks Decorators are applied in reverse order. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * Example = Reflect.decorate(decoratorsArray, Example); + * + * // property (on constructor) + * Reflect.decorate(decoratorsArray, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.decorate(decoratorsArray, Example.prototype, "property"); + * + * // method (on constructor) + * Object.defineProperty(Example, "staticMethod", + * Reflect.decorate(decoratorsArray, Example, "staticMethod", + * Object.getOwnPropertyDescriptor(Example, "staticMethod"))); + * + * // method (on prototype) + * Object.defineProperty(Example.prototype, "method", + * Reflect.decorate(decoratorsArray, Example.prototype, "method", + * Object.getOwnPropertyDescriptor(Example.prototype, "method"))); + * + */ + function decorate(decorators, target, propertyKey, attributes) { + if (!IsUndefined(propertyKey)) { + if (!IsArray(decorators)) + throw new TypeError(); + if (!IsObject(target)) + throw new TypeError(); + if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes)) + throw new TypeError(); + if (IsNull(attributes)) + attributes = undefined; + propertyKey = ToPropertyKey(propertyKey); + return DecorateProperty(decorators, target, propertyKey, attributes); + } + else { + if (!IsArray(decorators)) + throw new TypeError(); + if (!IsConstructor(target)) + throw new TypeError(); + return DecorateConstructor(decorators, target); + } + } + exporter("decorate", decorate); + // 4.1.2 Reflect.metadata(metadataKey, metadataValue) + // https://rbuckton.github.io/reflect-metadata/#reflect.metadata + /** + * A default metadata decorator factory that can be used on a class, class member, or parameter. + * @param metadataKey The key for the metadata entry. + * @param metadataValue The value for the metadata entry. + * @returns A decorator function. + * @remarks + * If `metadataKey` is already defined for the target and target key, the + * metadataValue for that key will be overwritten. + * @example + * + * // constructor + * @Reflect.metadata(key, value) + * class Example { + * } + * + * // property (on constructor, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * static staticProperty; + * } + * + * // property (on prototype, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * property; + * } + * + * // method (on constructor) + * class Example { + * @Reflect.metadata(key, value) + * static staticMethod() { } + * } + * + * // method (on prototype) + * class Example { + * @Reflect.metadata(key, value) + * method() { } + * } + * + */ + function metadata(metadataKey, metadataValue) { + function decorator(target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey)) + throw new TypeError(); + OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); + } + return decorator; + } + exporter("metadata", metadata); + /** + * Define a unique metadata entry on the target. + * @param metadataKey A key used to store and retrieve metadata. + * @param metadataValue A value that contains attached metadata. + * @param target The target object on which to define metadata. + * @param propertyKey (Optional) The property key for the target. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * Reflect.defineMetadata("custom:annotation", options, Example); + * + * // property (on constructor) + * Reflect.defineMetadata("custom:annotation", options, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "property"); + * + * // method (on constructor) + * Reflect.defineMetadata("custom:annotation", options, Example, "staticMethod"); + * + * // method (on prototype) + * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "method"); + * + * // decorator factory as metadata-producing annotation. + * function MyAnnotation(options): Decorator { + * return (target, key?) => Reflect.defineMetadata("custom:annotation", options, target, key); + * } + * + */ + function defineMetadata(metadataKey, metadataValue, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); + } + exporter("defineMetadata", defineMetadata); + /** + * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.hasMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function hasMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryHasMetadata(metadataKey, target, propertyKey); + } + exporter("hasMetadata", hasMetadata); + /** + * Gets a value indicating whether the target object has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata key was defined on the target object; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.hasOwnMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function hasOwnMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey); + } + exporter("hasOwnMetadata", hasOwnMetadata); + /** + * Gets the metadata value for the provided metadata key on the target object or its prototype chain. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function getMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryGetMetadata(metadataKey, target, propertyKey); + } + exporter("getMetadata", getMetadata); + /** + * Gets the metadata value for the provided metadata key on the target object. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getOwnMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function getOwnMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey); + } + exporter("getOwnMetadata", getOwnMetadata); + /** + * Gets the metadata keys defined on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getMetadataKeys(Example); + * + * // property (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "method"); + * + */ + function getMetadataKeys(target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryMetadataKeys(target, propertyKey); + } + exporter("getMetadataKeys", getMetadataKeys); + /** + * Gets the unique metadata keys defined on the target object. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getOwnMetadataKeys(Example); + * + * // property (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "method"); + * + */ + function getOwnMetadataKeys(target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryOwnMetadataKeys(target, propertyKey); + } + exporter("getOwnMetadataKeys", getOwnMetadataKeys); + /** + * Deletes the metadata entry from the target object with the provided key. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata entry was found and deleted; otherwise, false. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.deleteMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function deleteMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false); + if (IsUndefined(metadataMap)) + return false; + if (!metadataMap.delete(metadataKey)) + return false; + if (metadataMap.size > 0) + return true; + var targetMetadata = Metadata.get(target); + targetMetadata.delete(propertyKey); + if (targetMetadata.size > 0) + return true; + Metadata.delete(target); + return true; + } + exporter("deleteMetadata", deleteMetadata); + function DecorateConstructor(decorators, target) { + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + var decorated = decorator(target); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsConstructor(decorated)) + throw new TypeError(); + target = decorated; + } + } + return target; + } + function DecorateProperty(decorators, target, propertyKey, descriptor) { + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + var decorated = decorator(target, propertyKey, descriptor); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsObject(decorated)) + throw new TypeError(); + descriptor = decorated; + } + } + return descriptor; + } + function GetOrCreateMetadataMap(O, P, Create) { + var targetMetadata = Metadata.get(O); + if (IsUndefined(targetMetadata)) { + if (!Create) + return undefined; + targetMetadata = new _Map(); + Metadata.set(O, targetMetadata); + } + var metadataMap = targetMetadata.get(P); + if (IsUndefined(metadataMap)) { + if (!Create) + return undefined; + metadataMap = new _Map(); + targetMetadata.set(P, metadataMap); + } + return metadataMap; + } + // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata + function OrdinaryHasMetadata(MetadataKey, O, P) { + var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) + return true; + var parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) + return OrdinaryHasMetadata(MetadataKey, parent, P); + return false; + } + // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata + function OrdinaryHasOwnMetadata(MetadataKey, O, P) { + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) + return false; + return ToBoolean(metadataMap.has(MetadataKey)); + } + // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata + function OrdinaryGetMetadata(MetadataKey, O, P) { + var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) + return OrdinaryGetOwnMetadata(MetadataKey, O, P); + var parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) + return OrdinaryGetMetadata(MetadataKey, parent, P); + return undefined; + } + // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata + function OrdinaryGetOwnMetadata(MetadataKey, O, P) { + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) + return undefined; + return metadataMap.get(MetadataKey); + } + // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata + function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) { + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true); + metadataMap.set(MetadataKey, MetadataValue); + } + // 3.1.6.1 OrdinaryMetadataKeys(O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys + function OrdinaryMetadataKeys(O, P) { + var ownKeys = OrdinaryOwnMetadataKeys(O, P); + var parent = OrdinaryGetPrototypeOf(O); + if (parent === null) + return ownKeys; + var parentKeys = OrdinaryMetadataKeys(parent, P); + if (parentKeys.length <= 0) + return ownKeys; + if (ownKeys.length <= 0) + return parentKeys; + var set = new _Set(); + var keys = []; + for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) { + var key = ownKeys_1[_i]; + var hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) { + var key = parentKeys_1[_a]; + var hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + return keys; + } + // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys + function OrdinaryOwnMetadataKeys(O, P) { + var keys = []; + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) + return keys; + var keysObj = metadataMap.keys(); + var iterator = GetIterator(keysObj); + var k = 0; + while (true) { + var next = IteratorStep(iterator); + if (!next) { + keys.length = k; + return keys; + } + var nextValue = IteratorValue(next); + try { + keys[k] = nextValue; + } + catch (e) { + try { + IteratorClose(iterator); + } + finally { + throw e; + } + } + k++; + } + } + // 6 ECMAScript Data Typ0es and Values + // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values + function Type(x) { + if (x === null) + return 1 /* Null */; + switch (typeof x) { + case "undefined": return 0 /* Undefined */; + case "boolean": return 2 /* Boolean */; + case "string": return 3 /* String */; + case "symbol": return 4 /* Symbol */; + case "number": return 5 /* Number */; + case "object": return x === null ? 1 /* Null */ : 6 /* Object */; + default: return 6 /* Object */; + } + } + // 6.1.1 The Undefined Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type + function IsUndefined(x) { + return x === undefined; + } + // 6.1.2 The Null Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type + function IsNull(x) { + return x === null; + } + // 6.1.5 The Symbol Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type + function IsSymbol(x) { + return typeof x === "symbol"; + } + // 6.1.7 The Object Type + // https://tc39.github.io/ecma262/#sec-object-type + function IsObject(x) { + return typeof x === "object" ? x !== null : typeof x === "function"; + } + // 7.1 Type Conversion + // https://tc39.github.io/ecma262/#sec-type-conversion + // 7.1.1 ToPrimitive(input [, PreferredType]) + // https://tc39.github.io/ecma262/#sec-toprimitive + function ToPrimitive(input, PreferredType) { + switch (Type(input)) { + case 0 /* Undefined */: return input; + case 1 /* Null */: return input; + case 2 /* Boolean */: return input; + case 3 /* String */: return input; + case 4 /* Symbol */: return input; + case 5 /* Number */: return input; + } + var hint = PreferredType === 3 /* String */ ? "string" : PreferredType === 5 /* Number */ ? "number" : "default"; + var exoticToPrim = GetMethod(input, toPrimitiveSymbol); + if (exoticToPrim !== undefined) { + var result = exoticToPrim.call(input, hint); + if (IsObject(result)) + throw new TypeError(); + return result; + } + return OrdinaryToPrimitive(input, hint === "default" ? "number" : hint); + } + // 7.1.1.1 OrdinaryToPrimitive(O, hint) + // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive + function OrdinaryToPrimitive(O, hint) { + if (hint === "string") { + var toString_1 = O.toString; + if (IsCallable(toString_1)) { + var result = toString_1.call(O); + if (!IsObject(result)) + return result; + } + var valueOf = O.valueOf; + if (IsCallable(valueOf)) { + var result = valueOf.call(O); + if (!IsObject(result)) + return result; + } + } + else { + var valueOf = O.valueOf; + if (IsCallable(valueOf)) { + var result = valueOf.call(O); + if (!IsObject(result)) + return result; + } + var toString_2 = O.toString; + if (IsCallable(toString_2)) { + var result = toString_2.call(O); + if (!IsObject(result)) + return result; + } + } + throw new TypeError(); + } + // 7.1.2 ToBoolean(argument) + // https://tc39.github.io/ecma262/2016/#sec-toboolean + function ToBoolean(argument) { + return !!argument; + } + // 7.1.12 ToString(argument) + // https://tc39.github.io/ecma262/#sec-tostring + function ToString(argument) { + return "" + argument; + } + // 7.1.14 ToPropertyKey(argument) + // https://tc39.github.io/ecma262/#sec-topropertykey + function ToPropertyKey(argument) { + var key = ToPrimitive(argument, 3 /* String */); + if (IsSymbol(key)) + return key; + return ToString(key); + } + // 7.2 Testing and Comparison Operations + // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations + // 7.2.2 IsArray(argument) + // https://tc39.github.io/ecma262/#sec-isarray + function IsArray(argument) { + return Array.isArray + ? Array.isArray(argument) + : argument instanceof Object + ? argument instanceof Array + : Object.prototype.toString.call(argument) === "[object Array]"; + } + // 7.2.3 IsCallable(argument) + // https://tc39.github.io/ecma262/#sec-iscallable + function IsCallable(argument) { + // NOTE: This is an approximation as we cannot check for [[Call]] internal method. + return typeof argument === "function"; + } + // 7.2.4 IsConstructor(argument) + // https://tc39.github.io/ecma262/#sec-isconstructor + function IsConstructor(argument) { + // NOTE: This is an approximation as we cannot check for [[Construct]] internal method. + return typeof argument === "function"; + } + // 7.2.7 IsPropertyKey(argument) + // https://tc39.github.io/ecma262/#sec-ispropertykey + function IsPropertyKey(argument) { + switch (Type(argument)) { + case 3 /* String */: return true; + case 4 /* Symbol */: return true; + default: return false; + } + } + // 7.3 Operations on Objects + // https://tc39.github.io/ecma262/#sec-operations-on-objects + // 7.3.9 GetMethod(V, P) + // https://tc39.github.io/ecma262/#sec-getmethod + function GetMethod(V, P) { + var func = V[P]; + if (func === undefined || func === null) + return undefined; + if (!IsCallable(func)) + throw new TypeError(); + return func; + } + // 7.4 Operations on Iterator Objects + // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects + function GetIterator(obj) { + var method = GetMethod(obj, iteratorSymbol); + if (!IsCallable(method)) + throw new TypeError(); // from Call + var iterator = method.call(obj); + if (!IsObject(iterator)) + throw new TypeError(); + return iterator; + } + // 7.4.4 IteratorValue(iterResult) + // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue + function IteratorValue(iterResult) { + return iterResult.value; + } + // 7.4.5 IteratorStep(iterator) + // https://tc39.github.io/ecma262/#sec-iteratorstep + function IteratorStep(iterator) { + var result = iterator.next(); + return result.done ? false : result; + } + // 7.4.6 IteratorClose(iterator, completion) + // https://tc39.github.io/ecma262/#sec-iteratorclose + function IteratorClose(iterator) { + var f = iterator["return"]; + if (f) + f.call(iterator); + } + // 9.1 Ordinary Object Internal Methods and Internal Slots + // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots + // 9.1.1.1 OrdinaryGetPrototypeOf(O) + // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof + function OrdinaryGetPrototypeOf(O) { + var proto = Object.getPrototypeOf(O); + if (typeof O !== "function" || O === functionPrototype) + return proto; + // TypeScript doesn't set __proto__ in ES5, as it's non-standard. + // Try to determine the superclass constructor. Compatible implementations + // must either set __proto__ on a subclass constructor to the superclass constructor, + // or ensure each class has a valid `constructor` property on its prototype that + // points back to the constructor. + // If this is not the same as Function.[[Prototype]], then this is definately inherited. + // This is the case when in ES6 or when using __proto__ in a compatible browser. + if (proto !== functionPrototype) + return proto; + // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage. + var prototype = O.prototype; + var prototypeProto = prototype && Object.getPrototypeOf(prototype); + if (prototypeProto == null || prototypeProto === Object.prototype) + return proto; + // If the constructor was not a function, then we cannot determine the heritage. + var constructor = prototypeProto.constructor; + if (typeof constructor !== "function") + return proto; + // If we have some kind of self-reference, then we cannot determine the heritage. + if (constructor === O) + return proto; + // we have a pretty good guess at the heritage. + return constructor; + } + // naive Map shim + function CreateMapPolyfill() { + var cacheSentinel = {}; + var arraySentinel = []; + var MapIterator = /** @class */ (function () { + function MapIterator(keys, values, selector) { + this._index = 0; + this._keys = keys; + this._values = values; + this._selector = selector; + } + MapIterator.prototype["@@iterator"] = function () { return this; }; + MapIterator.prototype[iteratorSymbol] = function () { return this; }; + MapIterator.prototype.next = function () { + var index = this._index; + if (index >= 0 && index < this._keys.length) { + var result = this._selector(this._keys[index], this._values[index]); + if (index + 1 >= this._keys.length) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + else { + this._index++; + } + return { value: result, done: false }; + } + return { value: undefined, done: true }; + }; + MapIterator.prototype.throw = function (error) { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + throw error; + }; + MapIterator.prototype.return = function (value) { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + return { value: value, done: true }; + }; + return MapIterator; + }()); + return /** @class */ (function () { + function Map() { + this._keys = []; + this._values = []; + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + Object.defineProperty(Map.prototype, "size", { + get: function () { return this._keys.length; }, + enumerable: true, + configurable: true + }); + Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; }; + Map.prototype.get = function (key) { + var index = this._find(key, /*insert*/ false); + return index >= 0 ? this._values[index] : undefined; + }; + Map.prototype.set = function (key, value) { + var index = this._find(key, /*insert*/ true); + this._values[index] = value; + return this; + }; + Map.prototype.delete = function (key) { + var index = this._find(key, /*insert*/ false); + if (index >= 0) { + var size = this._keys.length; + for (var i = index + 1; i < size; i++) { + this._keys[i - 1] = this._keys[i]; + this._values[i - 1] = this._values[i]; + } + this._keys.length--; + this._values.length--; + if (key === this._cacheKey) { + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + return true; + } + return false; + }; + Map.prototype.clear = function () { + this._keys.length = 0; + this._values.length = 0; + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + }; + Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); }; + Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); }; + Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); }; + Map.prototype["@@iterator"] = function () { return this.entries(); }; + Map.prototype[iteratorSymbol] = function () { return this.entries(); }; + Map.prototype._find = function (key, insert) { + if (this._cacheKey !== key) { + this._cacheIndex = this._keys.indexOf(this._cacheKey = key); + } + if (this._cacheIndex < 0 && insert) { + this._cacheIndex = this._keys.length; + this._keys.push(key); + this._values.push(undefined); + } + return this._cacheIndex; + }; + return Map; + }()); + function getKey(key, _) { + return key; + } + function getValue(_, value) { + return value; + } + function getEntry(key, value) { + return [key, value]; + } + } + // naive Set shim + function CreateSetPolyfill() { + return /** @class */ (function () { + function Set() { + this._map = new _Map(); + } + Object.defineProperty(Set.prototype, "size", { + get: function () { return this._map.size; }, + enumerable: true, + configurable: true + }); + Set.prototype.has = function (value) { return this._map.has(value); }; + Set.prototype.add = function (value) { return this._map.set(value, value), this; }; + Set.prototype.delete = function (value) { return this._map.delete(value); }; + Set.prototype.clear = function () { this._map.clear(); }; + Set.prototype.keys = function () { return this._map.keys(); }; + Set.prototype.values = function () { return this._map.values(); }; + Set.prototype.entries = function () { return this._map.entries(); }; + Set.prototype["@@iterator"] = function () { return this.keys(); }; + Set.prototype[iteratorSymbol] = function () { return this.keys(); }; + return Set; + }()); + } + // naive WeakMap shim + function CreateWeakMapPolyfill() { + var UUID_SIZE = 16; + var keys = HashMap.create(); + var rootKey = CreateUniqueKey(); + return /** @class */ (function () { + function WeakMap() { + this._key = CreateUniqueKey(); + } + WeakMap.prototype.has = function (target) { + var table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? HashMap.has(table, this._key) : false; + }; + WeakMap.prototype.get = function (target) { + var table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? HashMap.get(table, this._key) : undefined; + }; + WeakMap.prototype.set = function (target, value) { + var table = GetOrCreateWeakMapTable(target, /*create*/ true); + table[this._key] = value; + return this; + }; + WeakMap.prototype.delete = function (target) { + var table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? delete table[this._key] : false; + }; + WeakMap.prototype.clear = function () { + // NOTE: not a real clear, just makes the previous data unreachable + this._key = CreateUniqueKey(); + }; + return WeakMap; + }()); + function CreateUniqueKey() { + var key; + do + key = "@@WeakMap@@" + CreateUUID(); + while (HashMap.has(keys, key)); + keys[key] = true; + return key; + } + function GetOrCreateWeakMapTable(target, create) { + if (!hasOwn.call(target, rootKey)) { + if (!create) + return undefined; + Object.defineProperty(target, rootKey, { value: HashMap.create() }); + } + return target[rootKey]; + } + function FillRandomBytes(buffer, size) { + for (var i = 0; i < size; ++i) + buffer[i] = Math.random() * 0xff | 0; + return buffer; + } + function GenRandomBytes(size) { + if (typeof Uint8Array === "function") { + if (typeof crypto !== "undefined") + return crypto.getRandomValues(new Uint8Array(size)); + if (typeof msCrypto !== "undefined") + return msCrypto.getRandomValues(new Uint8Array(size)); + return FillRandomBytes(new Uint8Array(size), size); + } + return FillRandomBytes(new Array(size), size); + } + function CreateUUID() { + var data = GenRandomBytes(UUID_SIZE); + // mark as random - RFC 4122 § 4.4 + data[6] = data[6] & 0x4f | 0x40; + data[8] = data[8] & 0xbf | 0x80; + var result = ""; + for (var offset = 0; offset < UUID_SIZE; ++offset) { + var byte = data[offset]; + if (offset === 4 || offset === 6 || offset === 8) + result += "-"; + if (byte < 16) + result += "0"; + result += byte.toString(16).toLowerCase(); + } + return result; + } + } + // uses a heuristic used by v8 and chakra to force an object into dictionary mode. + function MakeDictionary(obj) { + obj.__ = undefined; + delete obj.__; + return obj; + } + }); +})(Reflect || (Reflect = {})); + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(247), __webpack_require__(193))) + +/***/ }), +/* 479 */ +/***/ (function(module, exports, __webpack_require__) { + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ + +var inherits = __webpack_require__(109) +var Hash = __webpack_require__(110) +var Buffer = __webpack_require__(96).Buffer + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] + +var W = new Array(80) + +function Sha () { + this.init() + this._w = W + + Hash.call(this, 64, 56) +} + +inherits(Sha, Hash) + +Sha.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 + + return this +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} + +Sha.prototype._hash = function () { + var H = Buffer.allocUnsafe(20) + + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) + + return H +} + +module.exports = Sha + + +/***/ }), +/* 480 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + + +/***/ }), +/* 481 */ +/***/ (function(module, exports) { + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + + +/***/ }), +/* 482 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), +/* 483 */ +/***/ (function(module, exports, __webpack_require__) { + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var inherits = __webpack_require__(109) +var Hash = __webpack_require__(110) +var Buffer = __webpack_require__(96).Buffer + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] + +var W = new Array(80) + +function Sha1 () { + this.init() + this._w = W + + Hash.call(this, 64, 56) +} + +inherits(Sha1, Hash) + +Sha1.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 + + return this +} + +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha1.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} + +Sha1.prototype._hash = function () { + var H = Buffer.allocUnsafe(20) + + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) + + return H +} + +module.exports = Sha1 + + +/***/ }), +/* 484 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = __webpack_require__(109) +var Sha256 = __webpack_require__(248) +var Hash = __webpack_require__(110) +var Buffer = __webpack_require__(96).Buffer + +var W = new Array(64) + +function Sha224 () { + this.init() + + this._w = W // new Array(64) + + Hash.call(this, 64, 56) +} + +inherits(Sha224, Sha256) + +Sha224.prototype.init = function () { + this._a = 0xc1059ed8 + this._b = 0x367cd507 + this._c = 0x3070dd17 + this._d = 0xf70e5939 + this._e = 0xffc00b31 + this._f = 0x68581511 + this._g = 0x64f98fa7 + this._h = 0xbefa4fa4 + + return this +} + +Sha224.prototype._hash = function () { + var H = Buffer.allocUnsafe(28) + + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + + return H +} + +module.exports = Sha224 + + +/***/ }), +/* 485 */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(109) +var SHA512 = __webpack_require__(249) +var Hash = __webpack_require__(110) +var Buffer = __webpack_require__(96).Buffer + +var W = new Array(160) + +function Sha384 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha384, SHA512) + +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d + this._bh = 0x629a292a + this._ch = 0x9159015a + this._dh = 0x152fecd8 + this._eh = 0x67332667 + this._fh = 0x8eb44a87 + this._gh = 0xdb0c2e0d + this._hh = 0x47b5481d + + this._al = 0xc1059ed8 + this._bl = 0x367cd507 + this._cl = 0x3070dd17 + this._dl = 0xf70e5939 + this._el = 0xffc00b31 + this._fl = 0x68581511 + this._gl = 0x64f98fa7 + this._hl = 0xbefa4fa4 + + return this +} + +Sha384.prototype._hash = function () { + var H = Buffer.allocUnsafe(48) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + + return H +} + +module.exports = Sha384 + + +/***/ }), +/* 486 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(487); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; + + +/***/ }), +/* 487 */ +/***/ (function(module, exports) { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), +/* 488 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Prioritized = void 0; +const Helper_1 = __webpack_require__(7); +class Prioritized { + constructor(promises) { + this._lastPriority = 0; + this._status = 0; + this._lastResult = null; + this._success = {}; + this._highestPromise = null; + promises = Helper_1.Helper.nonNull(promises, {}); + this._callbacks = []; + if (Array.isArray(promises)) { + let tmpPromises = {}; + promises.forEach((promise, i) => { + tmpPromises[(i + 1) * 10] = promise; + }); + promises = tmpPromises; + } + let highestPromiseResolver = null; + this._highestPromise = new Promise(resolve => { + highestPromiseResolver = resolve; + }); + Object.keys(promises).forEach(priority => { + this._success[priority] = null; + promises[priority].then(res => { + this._success[priority] = true; + if (parseInt(priority) > this._lastPriority) { + this._lastResult = res; + this._lastPriority = parseInt(priority); + this._callCallbacks(); + if (this._checkHighest()) { + this._status = 2; + highestPromiseResolver(); + } + else { + this._status = 1; + } + } + }).catch(e => { + this._success[priority] = e; + if (this._checkHighest()) { + this._status = 2; + highestPromiseResolver(); + } + }); + }); + this._promises = promises; + } + _callCallbacks() { + this._callbacks.forEach(callback => { + callback(this._lastResult, this._lastPriority); + }); + } + _checkHighest() { + let isHighestResult = false; + Object.keys(this._success).reverse().some(priority => { + if (Helper_1.Helper.isNull(this._success[priority])) { + //return true beendet some-schleife + return true; + } + else if (this._success[priority] === true) { + isHighestResult = true; + return true; + } + }); + return isHighestResult; + } + do(callback) { + if (this._status < 2) { + this._callbacks.push(callback); + } + if (this._status > 0) { + callback(this._lastResult, this._lastPriority); + } + } + highest(funcOrPromise) { + return __awaiter(this, void 0, void 0, function* () { + yield this._highestPromise; + if (Helper_1.Helper.isNotNull(funcOrPromise)) { + return Promise.resolve(this._lastResult).then(funcOrPromise); + } + else { + return Promise.resolve(this._lastResult); + } + }); + } + first(funcOrPromise) { + return __awaiter(this, void 0, void 0, function* () { + if (this._status === 0) { + if (Helper_1.Helper.isNotNull(funcOrPromise)) { + return Promise.race(Object["values"](this._promises)).then(funcOrPromise); + } + else { + return Promise.race(Object["values"](this._promises)); + } + } + else { + return Promise.resolve(this._lastResult); + } + }); + } +} +exports.Prioritized = Prioritized; +//# sourceMappingURL=Prioritized.js.map + +/***/ }), +/* 489 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PromiseWithHandlers = void 0; +class PromiseWithHandlers extends Promise { + constructor(executor) { + let resolver = null; + let rejecter = null; + super((res, rej) => { + resolver = res; + rejecter = rej; + if (executor) { + executor(resolver, rejecter); + } + }); + this.resolver = resolver; + this.rejecter = rejecter; + } + resolve(value) { + if (this.resolver) { + this.resolver(value); + } + } + reject(value) { + if (this.rejecter) { + this.rejecter(value); + } + } +} +exports.PromiseWithHandlers = PromiseWithHandlers; +//# sourceMappingURL=PromiseWithHandlers.js.map + +/***/ }), +/* 490 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Random = void 0; +const Helper_1 = __webpack_require__(7); +let Random = /** @class */ (() => { + class Random { + static seedRandom(seed) { + this._seed = seed; + } + static getRandom() { + let t = this._seed += 0x6D2B79F5; + t = Math.imul(t ^ t >>> 15, t | 1); + t ^= t + Math.imul(t ^ t >>> 7, t | 61); + return ((t ^ t >>> 14) >>> 0) / 4294967296; + } + static getIntRandom(maxValue) { + return Math.floor(Random.getRandom() * (maxValue + 1)); + } + static getStringRandom(numSigns, alphabet) { + alphabet = Helper_1.Helper.nonNull(alphabet, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); + let random = ""; + const numAlphabet = alphabet.length - 1; + for (let i = 0; i < numSigns; i++) { + random += alphabet[Random.getIntRandom(numAlphabet)]; + } + return random; + } + } + Random._seed = new Date().getTime(); + return Random; +})(); +exports.Random = Random; +//# sourceMappingURL=Random.js.map + +/***/ }), +/* 491 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DragHelper = void 0; +const DraggedElement_1 = __webpack_require__(253); +class DragHelper { + constructor() { + this.startPosition = null; + this.currentDraggedElement = null; + window.addEventListener("mousemove", e => { + if (this.currentDraggedElement) { + this.dragMove({ x: e.clientX, y: e.clientY }); + } + }); + window.addEventListener("touchmove", e => { + if (this.currentDraggedElement) { + this.dragMove({ x: e.touches[0].clientX, y: e.touches[0].clientY }); + } + }); + window.addEventListener("mouseup", e => { + if (e.button === 0) { + this.dragStop({ x: e.clientX, y: e.clientY }); + } + }); + window.addEventListener("touchend", e => { + if (e.touches.length === 0) { + this.dragStop({ x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY }); + } + }); + } + static getInstance() { + if (!this.instance) { + this.instance = new DragHelper(); + } + return this.instance; + } + draggable(element) { + const dragElement = new DraggedElement_1.DraggedElement(element); + element.addEventListener("mousedown", e => { + e.preventDefault(); + console.log("mousedown", e.button); + if (e.button === 0) { + this.dragStart({ x: e.clientX, y: e.clientY }, dragElement); + } + }); + element.addEventListener("touchstart", e => { + e.preventDefault(); + if (e.touches.length === 1) { + this.dragStart({ x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY }, dragElement); + } + }); + return dragElement; + } + dragStart(position, draggedElement) { + this.currentDraggedElement = draggedElement; + this.startPosition = position; + this.currentDraggedElement.start(); + } + dragMove(toPosition) { + if (this.currentDraggedElement) { + const diff = { x: toPosition.x - this.startPosition.x, y: toPosition.y - this.startPosition.y }; + this.currentDraggedElement.moveRelativeTo(diff); + } + } + dragStop(mousePos) { + if (this.currentDraggedElement) { + this.currentDraggedElement.stop(mousePos); + this.currentDraggedElement = null; + this.startPosition = null; + } + } +} +exports.DragHelper = DragHelper; +//# sourceMappingURL=DragHelper.js.map + +/***/ }), +/* 492 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HotkeyManager = void 0; +class HotkeyManager { + constructor() { + this._keys = {}; + this._callbacks = {}; + this._lastCallbackId = 0; + this._active = false; + this.mousePosition = null; + this._addListeners(); + this.ignoreFormElements = false; + } + static isFormElement(element) { + return element instanceof HTMLInputElement + || element instanceof HTMLSelectElement + || element instanceof HTMLTextAreaElement; + } + getMousePosition() { + return this.mousePosition; + } + _addListeners() { + window.addEventListener("keydown", e => { + if (this.ignoreFormElements || !HotkeyManager.isFormElement(e.target)) { + this._keys[e.key.toLowerCase()] = true; + if (this._active) { + this._checkCallbacks(e); + } + } + }); + window.addEventListener("keyup", e => { + if (e.key) { + this._keys[e.key.toLowerCase()] = false; + } + }); + document.addEventListener("mousemove", e => { + this.mousePosition = { x: e.clientX, y: e.clientY }; + }); + } + activate() { + this._active = true; + } + deactivate() { + this._active = false; + } + addCallback(keys, callback) { + this._lastCallbackId++; + this._callbacks[this._lastCallbackId] = { + keys: keys, + callback: callback + }; + } + isKeyPressed(key) { + return this._active && this._keys[key] && this._keys[key] === true; + } + _checkCallbacks(e) { + //TODO async forEach? + Object.values(this._callbacks).forEach(callback => { + // @ts-ignore + if (callback.keys.every(key => this._keys[key] === true)) { + // @ts-ignore + callback.callback(e); + } + }); + } + removeCallback(callbackId) { + delete this._callbacks[callbackId]; + } +} +exports.HotkeyManager = HotkeyManager; +//# sourceMappingURL=HotkeyManager.js.map + +/***/ }), +/* 493 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InputSelect = void 0; +const Helper_1 = __webpack_require__(7); +const ViewHelper_1 = __webpack_require__(27); +class InputSelect { + constructor(element, options) { + this.onChangeListeners = []; + if (typeof element === "string") { + element = document.querySelector(element); + } + this.options = new Map(); + this.inputElement = element; + options.forEach(o => { + if (typeof o === "string") { + o = { value: o, label: o }; + } + o.selected = Helper_1.Helper.nonNull(o.selected, false); + this.options.set(o.value, o); + return o; + }); + this.buildElement(); + } + onChange(listener) { + this.onChangeListeners.push(listener); + } + buildElement() { + const parent = this.inputElement.parentElement; + this.container = document.createElement("div"); + this.container.classList.add("input-select-container"); + const flexContainer = document.createElement("div"); + flexContainer.classList.add("input-select-flex"); + this.selectedOptionsContainer = document.createElement("span"); + this.selectedOptionsContainer.classList.add("input-select-selected-options"); + const classes = []; + this.inputElement.classList.forEach(c => { + this.container.classList.add(c); + classes.push(c); + }); + this.inputElement.classList.remove(...classes); + this.inputElement.classList.add("input-select-input"); + this.optionsContainer = document.createElement("div"); + this.optionsContainer.classList.add("input-select-options"); + parent.insertBefore(this.container, this.inputElement); + this.inputElement.remove(); + this.container.appendChild(flexContainer); + this.container.appendChild(this.optionsContainer); + flexContainer.appendChild(this.selectedOptionsContainer); + flexContainer.appendChild(this.inputElement); + this.inputElement.addEventListener("input", () => this.updateOptions()); + if ("ResizeObserver" in window) { + // @ts-ignore + const resizeObserver = new ResizeObserver(entries => { + entries.forEach(entry => { + this.optionsContainer.style.width = entry.borderBoxSize[0].inlineSize + "px"; + }); + }); + resizeObserver.observe(this.container); + } + // if ("IntersectionObserver" in window) { + // const intersectionOptions = { + // root: this.optionsContainer, + // rootMargin: "20px", + // threshold: 0.01 + // } + // const intersectionObserver = new IntersectionObserver((entries) => { + // entries.forEach(entry => console.log("is intersecting", entry.isIntersecting)); + // // console.log("entries", entries); + // }, intersectionOptions); + // intersectionObserver.observe(flexContainer); + // } + window.addEventListener("scroll", () => console.log("scrolling")); + this.container.addEventListener("click", () => { + const rect = this.container.getBoundingClientRect(); + this.optionsContainer.style.top = (rect.top + rect.height) + "px"; + }); + this.updateOptions(); + } + updateOptions() { + ViewHelper_1.ViewHelper.removeAllChildren(this.selectedOptionsContainer); + ViewHelper_1.ViewHelper.removeAllChildren(this.optionsContainer); + const inputValue = this.inputElement.value; + this.options.forEach(o => { + const optionElement = document.createElement("span"); + optionElement.classList.add("input-select-option"); + optionElement.dataset["value"] = o.value; + optionElement.innerText = o.label; + if (o.selected) { + this.selectedOptionsContainer.appendChild(optionElement); + } + else if (o.label.indexOf(inputValue) !== -1) { + this.optionsContainer.appendChild(optionElement); + } + optionElement.addEventListener("click", (e) => { + e.stopPropagation(); + e.preventDefault(); + e.cancelBubble = true; + this.toggle(o.value); + this.inputElement.focus(); + }); + }); + } + toggle(value) { + const option = this.options.get(value); + if (option) { + option.selected = !option.selected; + this.updateOptions(); + this.onChangeListeners.forEach(listener => { + listener(option, this); + }); + } + } + getOptions() { + return Array.from(this.options.values()); + } + getSelectedOptions() { + return this.getOptions().filter(o => o.selected); + } + getSelectedValues() { + return this.getSelectedOptions().map(o => o.value); + } + updateSelection(selection) { + Object.keys(selection).forEach(value => { + const option = this.options.get(value); + if (option) { + option.selected = selection[value]; + } + }); + this.updateOptions(); + } +} +exports.InputSelect = InputSelect; +//# sourceMappingURL=InputSelect.js.map + +/***/ }), +/* 494 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", { value: true }); +__export(__webpack_require__(495)); + + +/***/ }), +/* 495 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const js_helper_1 = __webpack_require__(22); +class EventManager { + constructor() { + this._listeners = {}; + this._lastListenerId = 0; + } + /** + * @return {EventManager} + */ + static getInstance() { + if (!this._instance) { + this._instance = new EventManager(); + } + return this._instance; + } + addListener(event, listener) { + if (typeof listener !== "function") { + throw new Error("can only add functions as listeners!"); + } + this._lastListenerId++; + if (!this._listeners[event]) { + this._listeners[event] = {}; + this._listeners[event][this._lastListenerId] = listener; + } + return this._lastListenerId; + } + removeListener(event, listenerId) { + if (this._listeners[event] && this._listeners[event][listenerId]) { + delete this._listeners[event][listenerId]; + } + } + trigger(event, data) { + return __awaiter(this, void 0, void 0, function* () { + if (this._listeners[event]) { + yield js_helper_1.Helper.asyncForEach(Object.keys(this._listeners[event]), (listenerId) => __awaiter(this, void 0, void 0, function* () { + yield this._listeners[event][listenerId](data); + }), true); + } + }); + } + static trigger(event, data) { + return __awaiter(this, void 0, void 0, function* () { + return this.getInstance().trigger(event, data); + }); + } +} +exports.EventManager = EventManager; +EventManager._instance = null; + + +/***/ }), +/* 496 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ContainerSite = void 0; + +var TemplateSite_1 = __webpack_require__(199); + +var containerTemplate = __webpack_require__(497); +/** + * Seite, welche das Container-Template benutzt + */ + + +var ContainerSite = /*#__PURE__*/function (_TemplateSite_1$Templ) { + _inherits(ContainerSite, _TemplateSite_1$Templ); + + var _super = _createSuper(ContainerSite); + + /** + * Constructor für die ContainerSite + * + * @param siteManager + * @param view + */ + function ContainerSite(siteManager, view) { + _classCallCheck(this, ContainerSite); + + return _super.call(this, siteManager, view, containerTemplate, "#site-content"); + } + + return ContainerSite; +}(TemplateSite_1.TemplateSite); + +exports.ContainerSite = ContainerSite; + +/***/ }), +/* 497 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/container.html"; + +/***/ }), +/* 498 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DelegateSite = void 0; + +var AbstractSite_1 = __webpack_require__(146); + +var DelegateSite = /*#__PURE__*/function (_AbstractSite_1$Abstr) { + _inherits(DelegateSite, _AbstractSite_1$Abstr); + + var _super = _createSuper(DelegateSite); + + function DelegateSite(site) { + var _this; + + _classCallCheck(this, DelegateSite); + + _this = _super.call(this, undefined, document.createElement("span")); + /** @var {AbstractSite} */ + + _this._site = site; + return _this; + } + + _createClass(DelegateSite, [{ + key: "setTitle", + value: function setTitle(titleElement, title) { + return this._site.setTitle(titleElement, title); + } + }, { + key: "setParameter", + value: function setParameter(name, value) {//Todo changing + // return this._site.setParameter(name, value); + } + }, { + key: "setParameters", + value: function setParameters(parameters) {//TODO changing + // return this._site.setParameters(parameters) + } + }, { + key: "getParameters", + value: function getParameters() { + return this._site.getParameters(); + } + }, { + key: "showLoadingSymbol", + value: function showLoadingSymbol() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", this._site.showLoadingSymbol()); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "removeLoadingSymbol", + value: function removeLoadingSymbol() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", this._site.removeLoadingSymbol()); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "_updateTitle", + value: function _updateTitle() { + return this._site._updateTitle(); + } + }, { + key: "updateUrl", + value: function updateUrl(args) {//todo + // return this._site.updateUrl(args); + } + }, { + key: "startSite", + value: function startSite(site, args) { + return this._site.startSite(site, args); + } + }, { + key: "finishAndStartSite", + value: function finishAndStartSite(site, args, result) { + return this._site.finishAndStartSite(site, args, result); + } + }, { + key: "finish", + value: function finish(result) { + return this._site.finish(result); + } + }, { + key: "goBack", + value: function goBack() { + return this._site.goBack(); + } + }, { + key: "getFinishPromise", + value: function getFinishPromise() { + return this._site.getFinishPromise(); + } + }, { + key: "setResult", + value: function setResult(result) { + return this._site.setResult(result); + } + }, { + key: "getFinishResolver", + value: function getFinishResolver() { + return this._site.getFinishResolver(); + } + }, { + key: "addFragment", + value: function addFragment(viewQuery, fragment) { + return this._site.addFragment(viewQuery, fragment); + } + }, { + key: "findBy", + value: function findBy(query, all, asPromise) { + return this._site.findBy(query, all, asPromise); + } + }, { + key: "setPauseParameters", + value: function setPauseParameters(pauseParameters) { + return this._site.setPauseParameters(pauseParameters); + } + }, { + key: "getViewPromise", + value: function getViewPromise() { + return this._site.getViewPromise(); + } + }, { + key: "getState", + value: function getState() { + return this._site.getState(); + } + }, { + key: "getTitle", + value: function getTitle() { + return this._site.getTitle(); + } + }, { + key: "isShowing", + value: function isShowing() { + return this._site.isShowing(); + } + }, { + key: "isDestroying", + value: function isDestroying() { + return this._site.isDestroying(); + } + }]); + + return DelegateSite; +}(AbstractSite_1.AbstractSite); + +exports.DelegateSite = DelegateSite; + +/***/ }), +/* 499 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AbstractWindowFragment = void 0; + +var AbstractFragment_1 = __webpack_require__(79); + +var ViewInflater_1 = __webpack_require__(58); + +var Helper_1 = __webpack_require__(7); + +var ViewHelper_1 = __webpack_require__(27); + +var Translator_1 = __webpack_require__(32); + +var NativeStoragePromise_1 = __webpack_require__(42); + +var Toast_1 = __webpack_require__(101); + +var template = __webpack_require__(500); + +var AbstractWindowFragment = /*#__PURE__*/function (_AbstractFragment_1$A) { + _inherits(AbstractWindowFragment, _AbstractFragment_1$A); + + var _super2 = _createSuper(AbstractWindowFragment); + + function AbstractWindowFragment(site, view, position, title, id) { + var _this; + + _classCallCheck(this, AbstractWindowFragment); + + _this = _super2.call(this, site, template); + _this.position = { + x: 0, + y: 0, + anchorY: "top", + anchorX: "left" + }; + _this.title = ""; + _this._margin = { + x: 0, + y: 0 + }; + _this.saveData = {}; + _this.state = "normal"; + _this.popupWindow = null; + _this.translateTitle = true; + _this.position = Object.assign({ + anchorY: "top", + anchorX: "left" + }, position); + _this.title = Helper_1.Helper.nonNull(title, " "); + + if (id) { + _this.id = "window-" + id; + } + + _this._viewPromise = Promise.all([_this._viewPromise, ViewInflater_1.ViewInflater.getInstance().load(view)]).then(function (res) { + res[0].querySelector("#child-view").replaceWith(res[1]); + ViewInflater_1.ViewInflater.replaceWithChildren(res[1]); + _this._view = res[0]; + return res[0]; + }).catch(function (e) { + return console.error(e); + }); + return _this; + } + + _createClass(AbstractWindowFragment, [{ + key: "setTitle", + value: function setTitle(title) { + if (this._titleElement) { + ViewHelper_1.ViewHelper.removeAllChildren(this._titleElement); + + this._titleElement.appendChild(this.translateTitle ? Translator_1.Translator.makePersistentTranslation(title) : document.createTextNode(title)); + } + + this.title = title; + } + }, { + key: "getDimension", + value: function getDimension() { + var computedStyle = window.getComputedStyle(this._container); + var width = parseFloat(computedStyle.getPropertyValue("width")); + var height = parseFloat(computedStyle.getPropertyValue("height")); + + if (isNaN(width)) { + width = parseFloat(this._container.style.width); + } + + if (isNaN(height)) { + height = parseFloat(this._container.style.height); + } + + return { + x: Math.ceil(width) - this._margin.x, + y: Math.ceil(height) - this._margin.y + }; + } + }, { + key: "setDimension", + value: function setDimension(x, y) { + x += this._margin.x; + y += this._margin.y; + this._container.style.width = x + "px"; + this._container.style.height = y + "px"; + this.saveData.dimension = { + x: x, + y: y + }; + this.save(); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this2 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(AbstractWindowFragment.prototype), "onViewLoaded", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this3 = this; + + var res, buttonContainer; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onViewLoaded.call(this); + this._container = this.findBy(".window-container"); + + if (this.position.width || this.position.height) { + this._container.style.width = this.position.width + "px"; + this._container.style.height = this.position.height + "px"; + } + + this._window = this.findBy(".window"); + this._titleElement = this.findBy("#title"); + this._resizeElements = { + x: [this._window, this.findBy(".window-resize.left"), this.findBy(".window-resize.right")], + y: [this._window, this._titleElement, this.findBy(".window-resize.top"), this.findBy(".window-resize.bottom")] + }; + _context.next = 8; + return this.load(); + + case 8: + this._checkPositionAndDimension(); // this.moveTo(this.position.x, this.position.y); + + + this.setTitle(this.title); + this.addListeners(); + buttonContainer = this.findBy("#title-buttons"); + + if (buttonContainer) { + buttonContainer.remove(); + + this._titleElement.parentNode.appendChild(buttonContainer); + + buttonContainer.querySelectorAll(".title-button").forEach(function (button) { + button.addEventListener("click", function (e) { + _this3.onButtonClick(button.id, button, e); + }); + }); + } + + return _context.abrupt("return", res); + + case 14: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "addListeners", + value: function addListeners() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this4 = this; + + var resizeStart, multiplier, dimension, resizeStartListener, mouseDownPos, pos, moveStartListener, moveListener, endListener; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + resizeStart = null; + + resizeStartListener = function resizeStartListener(x, y, e) { + if (e.target.classList.contains("window-resize")) { + e.stopPropagation(); + resizeStart = { + x: x, + y: y + }; + var direction = e.target.dataset["direction"].split(","); + multiplier = { + x: parseInt(direction[0]), + y: parseInt(direction[1]) + }; + dimension = _this4.getDimension(); + } + }; + + this.findBy(".window-resize", true).forEach(function (element) { + element.addEventListener("mousedown", function (e) { + resizeStartListener(e.clientX, e.clientY, e); + }); + }); + mouseDownPos = null; + pos = null; + + moveStartListener = function moveStartListener(x, y, e) { + if (e.target === _this4._container || e.target.closest("#title") === _this4._titleElement) { + mouseDownPos = { + x: x, + y: y + }; + pos = Object.assign({}, _this4.getPosition()); //Make copy + + _this4._container.classList.add("moving"); + } + + _this4.makeActiveWindow(); + }; + + this._container.addEventListener("mousedown", function (e) { + moveStartListener(e.clientX, e.clientY, e); + }); + + this._container.addEventListener("touchstart", function (e) { + if (e.touches.length === 1) { + moveStartListener(e.touches[0].clientX, e.touches[0].clientY, e); + } + }); + + moveListener = function moveListener(x, y) { + if (resizeStart !== null) { + var localMultiplier = { + x: multiplier.x, + y: multiplier.y + }; + var diff = { + x: (x - resizeStart.x) * localMultiplier.x, + y: (y - resizeStart.y) * localMultiplier.y + }; + dimension = { + x: dimension.x + diff.x, + y: dimension.y + diff.y + }; + + _this4.setDimension(dimension.x, dimension.y); + + var realDimension = _this4.getDimension(); + + if (dimension.x !== realDimension.x) { + localMultiplier.x = 0; + } + + if (dimension.y !== realDimension.y) { + localMultiplier.y = 0; + } + + _this4._checkPositionAndDimension(); //TODO diff für Center berechnen... + + + var moveDiff = { + x: 0, + y: 0 + }; + + if (localMultiplier.x !== 0) { + if (_this4.position.anchorX === "center") { + moveDiff.x = diff.x * localMultiplier.x / 2; + } else if (localMultiplier.x * (_this4.position.anchorX === "left" ? 1 : -1) < 0) { + moveDiff.x = diff.x * localMultiplier.x; + } + } + + if (localMultiplier.y !== 0) { + if (_this4.position.anchorY === "center") { + moveDiff.y = diff.y * localMultiplier.y / 2; + } else if (localMultiplier.y * (_this4.position.anchorY === "top" ? 1 : -1) < 0) { + moveDiff.y = diff.y * localMultiplier.y; + } + } + + _this4.moveAt(moveDiff.x, moveDiff.y); + + resizeStart = { + x: x, + y: y + }; + } else if (mouseDownPos !== null) { + var _diff = { + x: x - mouseDownPos.x, + y: y - mouseDownPos.y + }; + mouseDownPos = { + x: x, + y: y + }; // const newPos = {x: pos.x + diff.x, y: pos.y + diff.y}; + + _this4.moveAt(_diff.x, _diff.y); + } + }; + + window.addEventListener("mousemove", function (e) { + moveListener(e.clientX, e.clientY); + }); + window.addEventListener("touchmove", function (e) { + if (e.touches.length === 1) { + moveListener(e.touches[0].clientX, e.touches[0].clientY); + } + }); + + endListener = function endListener(x, y, e) { + mouseDownPos = null; + resizeStart = null; + + _this4._container.classList.remove("moving"); + }; + + window.addEventListener("mouseup", function (e) { + endListener(e.clientX, e.clientY, e); + }); + window.addEventListener("touchend", function (e) { + if (e.touches.length === 0 && e.changedTouches.length === 1) { + endListener(e.changedTouches[0].clientX, e.changedTouches[0].clientY, e); + } + }); + + this._container.addEventListener("dblclick", function (e) { + if (e.target === _this4._container || e.target.closest("#title") === _this4._titleElement) { + _this4.toggleMinimize(); + } + }); + + window.addEventListener("resize", function () { + _this4._checkPositionAndDimension(); + }); + window.addEventListener("beforeunload", function () { + if (_this4.popupWindow) { + _this4.id = null; //disable saving, since it should + + _this4.popupWindow.close(); + } + }); + + case 17: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "makeActiveWindow", + value: function makeActiveWindow() { + var activeWindow = document.querySelector(".window-container.active-window"); + + if (activeWindow && activeWindow !== this._container) { + activeWindow.classList.remove("active-window"); + } + + this._container.classList.add("active-window"); + } + }, { + key: "load", + value: function load() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this5 = this; + + var saveData; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + if (!this.id) { + _context3.next = 19; + break; + } + + _context3.next = 3; + return NativeStoragePromise_1.NativeStoragePromise.getItem(this.id); + + case 3: + saveData = _context3.sent; + + if (!saveData) { + _context3.next = 19; + break; + } + + if (saveData.dimension) { + this.setDimension(saveData.dimension.x, saveData.dimension.y); + } + + if (saveData.position) { + this.position = saveData.position; + + this._checkPositionAndDimension(); + } + + if (!saveData.state) { + _context3.next = 17; + break; + } + + _context3.t0 = saveData.state; + _context3.next = _context3.t0 === "minimized" ? 11 : _context3.t0 === "maximized" ? 13 : _context3.t0 === "popup" ? 15 : 17; + break; + + case 11: + this.toggleMinimize(); + return _context3.abrupt("break", 17); + + case 13: + this.toggleMaximize(); + return _context3.abrupt("break", 17); + + case 15: + this._viewLoadedPromise.then(function () { + _this5.openInNewWindow(); + }); + + return _context3.abrupt("break", 17); + + case 17: + this.saveData = saveData; + this.save(); + + case 19: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "save", + value: function save() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + if (!this.id) { + _context4.next = 3; + break; + } + + _context4.next = 3; + return NativeStoragePromise_1.NativeStoragePromise.setItem(this.id, this.saveData); + + case 3: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "toggleMinimize", + value: function toggleMinimize() { + if (this.state !== "popup") { + this._container.classList.toggle("minimized"); + + this._container.classList.remove("maximized"); + + if (!this._container.classList.contains("minimized")) { + this.resizeToContent(); + this.state = "normal"; + } else { + this.state = "minimized"; + } + + this.saveData.state = this.state; + this.save(); + } + } + }, { + key: "toggleMaximize", + value: function toggleMaximize() { + if (this.state !== "popup") { + this._container.classList.toggle("maximized"); + + this._container.classList.remove("minimized"); + + if (!this._container.classList.contains("maximized")) { + this.resizeToContent(); + this.state = "normal"; + } else { + this.state = "maximized"; + } + + this.saveData.state = this.state; + this.save(); + } + } + }, { + key: "resizeToContent", + value: function resizeToContent() { + if (this._window) { + var diff = { + x: this._window.scrollWidth - this._window.clientWidth, + y: this._window.scrollHeight - this._window.clientHeight + }; + + var _dimension = this.getDimension(); + + if (diff.x === 0) { + var sum = 0; + + this._resizeElements.x.forEach(function (e) { + return sum += parseFloat(window.getComputedStyle(e).getPropertyValue("width")); + }); + + diff.x = Math.ceil(sum) - _dimension.x; + } + + if (diff.y === 0) { + var _sum = 0; + + this._resizeElements.y.forEach(function (e) { + return _sum += parseFloat(window.getComputedStyle(e).getPropertyValue("height")); + }); + + diff.y = Math.ceil(_sum) - _dimension.y; + } + + _dimension.x += diff.x; + _dimension.y += diff.y; + + if (this.state === "normal") { + this.setDimension(_dimension.x, _dimension.y); + } + + this._checkPositionAndDimension(); + } + } + }, { + key: "getTopLeftCornerPosition", + value: function getTopLeftCornerPosition() { + var dimension = this.getDimension(); + var x = this.position.x; + + if (this.position.anchorX === "center") { + x += window.innerWidth / 2 - dimension.x / 2; + } else if (this.position.anchorX === "right") { + x += window.innerWidth - dimension.x; + } + + var y = this.position.y; + + if (this.position.anchorY === "center") { + y += window.innerHeight / 2 - dimension.y / 2; + } else if (this.position.anchorY === "bottom") { + y += window.innerHeight - dimension.y; + } + + if (x < 0) { + x = 0; + } + + if (y < 0) { + y = 0; + } + + return { + x: x, + y: y + }; + } + }, { + key: "getCenterCenterPosition", + value: function getCenterCenterPosition() { + var dimension = this.getDimension(); + var topLeft = this.getTopLeftCornerPosition(); + return { + x: topLeft.x + dimension.x / 2 - window.innerWidth / 2, + y: topLeft.y + dimension.y / 2 - window.innerHeight / 2 + }; + } + }, { + key: "getBottomRightPosition", + value: function getBottomRightPosition() { + var dimension = this.getDimension(); + var topLeft = this.getTopLeftCornerPosition(); + return { + x: Math.min(topLeft.x + dimension.x - window.innerWidth, 0), + y: Math.min(topLeft.y + dimension.y - window.innerHeight, 0) + }; + } + }, { + key: "_checkPositionAndDimension", + value: function _checkPositionAndDimension() { + var dimension = this.getDimension(); + var setDimension = true; + var dimensionChanged = false; + + if (isNaN(dimension.x)) { + dimension.x = 0; + setDimension = false; + } + + if (isNaN(dimension.y)) { + dimension.y = 0; + setDimension = false; + } + + var posTopLeft = this.getTopLeftCornerPosition(); + var posCenterCenter = this.getCenterCenterPosition(); + var posBottomRight = this.getBottomRightPosition(); + + if (dimension.x > window.innerWidth) { + dimensionChanged = true; + dimension.x = window.innerWidth; + this.position.x = 0; + this.position.anchorX = "left"; + } else { + if (posTopLeft.x <= Math.abs(posCenterCenter.x) && posTopLeft.x <= -1 * posBottomRight.x) { + this.position.x = posTopLeft.x; + this.position.anchorX = "left"; + } else if (-1 * posBottomRight.x <= Math.abs(posCenterCenter.x)) { + this.position.x = posBottomRight.x; + this.position.anchorX = "right"; + } else { + this.position.x = posCenterCenter.x; + this.position.anchorX = "center"; + } + } + + if (dimension.y > window.innerHeight) { + dimensionChanged = true; + dimension.y = window.innerHeight; + this.position.y = 0; + this.position.anchorY = "top"; + } else { + if (posTopLeft.y <= Math.abs(posCenterCenter.y) && posTopLeft.y <= -1 * posBottomRight.y) { + this.position.y = posTopLeft.y; + this.position.anchorY = "top"; + } else if (-1 * posBottomRight.y <= Math.abs(posCenterCenter.y)) { + this.position.y = posBottomRight.y; + this.position.anchorY = "bottom"; + } else { + this.position.y = posCenterCenter.y; + this.position.anchorY = "center"; + } + } + + if (this.position.anchorY === "top") { + this._container.style.top = this.position.y + "px"; + + this._container.style.removeProperty("bottom"); + } else if (this.position.anchorY === "bottom") { + this._container.style.bottom = -1 * this.position.y + "px"; + + this._container.style.removeProperty("top"); + } else { + this._container.style.top = "calc(50% + " + this.position.y.toString() + "px - " + (dimension.y / 2).toString() + "px)"; + + this._container.style.removeProperty("bottom"); + } + + if (this.position.anchorX === "left") { + this._container.style.left = this.position.x + "px"; + + this._container.style.removeProperty("right"); + } else if (this.position.anchorX === "right") { + this._container.style.right = -1 * this.position.x + "px"; + + this._container.style.removeProperty("left"); + } else { + this._container.style.left = "calc(50% + " + this.position.x.toString() + "px - " + (dimension.x / 2).toString() + "px)"; + + this._container.style.removeProperty("right"); + } + + this.saveData.position = this.position; + + if (!this._container.classList.contains("minimized") && setDimension && dimensionChanged) { + this.setDimension(dimension.x, dimension.y); + } + } + }, { + key: "onStart", + value: function onStart(pauseArguments) { + var _this6 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return _get(_getPrototypeOf(AbstractWindowFragment.prototype), "onStart", _this6); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var res; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + res = _super.onStart.call(this, pauseArguments); + + this._checkPositionAndDimension(); + + return _context5.abrupt("return", res); + + case 3: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + }, { + key: "moveAt", + value: function moveAt(x, y) { + var posTopLeft = this.getTopLeftCornerPosition(); + return this.moveTo(x + posTopLeft.x, y + posTopLeft.y); + } + }, { + key: "moveTo", + value: function moveTo(x, y) { + this.position = { + x: x, + y: y, + anchorX: "left", + anchorY: "top" + }; + + this._checkPositionAndDimension(); + + this.save(); + } + }, { + key: "onButtonClick", + value: function onButtonClick(id, button, e) { + switch (id) { + case "minimize-button": + { + this.toggleMinimize(); + break; + } + + case "maximize-button": + { + this.toggleMaximize(); + break; + } + + case "new-window-button": + { + this.openInNewWindow(); + break; + } + } + } + }, { + key: "openInNewWindow", + value: function openInNewWindow() { + var _this7 = this; + + if (this.state === "popup") { + return; + } + + var windowProxy = window.open("", "", "modal=yes"); + + if (windowProxy === null) { + new Toast_1.Toast("cannot open popups").show(); + return; + } + + this.state = "popup"; + this.saveData.state = this.state; + this.save(); + var baseElement = document.createElement("base"); + baseElement.href = window.location.href; + windowProxy.document.head.appendChild(baseElement); + var titleElement = document.createElement("title"); + titleElement.innerText = this.title; + windowProxy.document.head.appendChild(titleElement); + document.querySelectorAll("link[rel='stylesheet']").forEach(function (styleElem) { + windowProxy.document.head.appendChild(styleElem.cloneNode()); + }); + var parent = this._view.parentNode; + + this._view.remove(); + + this._container.classList.add("popup"); + + this._container.classList.remove("minimized"); + + this._container.classList.remove("maximized"); + + var translationCallback = Translator_1.Translator.getInstance().addTranslationCallback(function (baseElement) { + if (baseElement !== _this7._container) { + Translator_1.Translator.getInstance().updateTranslations(_this7._container); + } + }, false); + windowProxy.document.body.appendChild(this._view); + windowProxy.addEventListener("beforeunload", function () { + _this7.state = "normal"; + _this7.saveData.state = _this7.state; + + _this7.save(); + + _this7._view.remove(); + + _this7._container.classList.remove("popup"); + + _this7._container.classList.remove("minimized"); + + _this7._container.classList.remove("maximized"); + + parent.appendChild(_this7._view); + _this7.popupWindow = null; + Translator_1.Translator.getInstance().removeTranslationCallback(translationCallback); + }); + this.popupWindow = windowProxy; + document.body.classList.forEach(function (className) { + console.log("adding class", className); + windowProxy.document.body.classList.add(className); + }); + } + }, { + key: "getPosition", + value: function getPosition() { + return this.position; + } + }]); + + return AbstractWindowFragment; +}(AbstractFragment_1.AbstractFragment); + +exports.AbstractWindowFragment = AbstractWindowFragment; + +/***/ }), +/* 500 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/abstractWindowTemplate.html"; + +/***/ }), +/* 501 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlphabeticListFragment = void 0; + +var AbstractFragment_1 = __webpack_require__(79); + +var client_1 = __webpack_require__(197); + +var shared_1 = __webpack_require__(22); + +var defaultView = __webpack_require__(502); + +var AlphabeticListFragment = /*#__PURE__*/function (_AbstractFragment_1$A) { + _inherits(AlphabeticListFragment, _AbstractFragment_1$A); + + var _super2 = _createSuper(AlphabeticListFragment); + + function AlphabeticListFragment(site, view) { + var _this; + + _classCallCheck(this, AlphabeticListFragment); + + _this = _super2.call(this, site, shared_1.Helper.nonNull(view, defaultView)); + _this.elements = {}; + _this.sideScrolling = false; + return _this; + } + + _createClass(AlphabeticListFragment, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this2 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(AlphabeticListFragment.prototype), "onViewLoaded", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this3 = this; + + var res, sideAlphabet; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onViewLoaded.call(this); //TODO font-size changing + + sideAlphabet = this.findBy(".alphabetic-list-sidealphabet"); + sideAlphabet.addEventListener("mousedown", function () { + _this3.sideScrolling = true; + }); + window.addEventListener("touchstart", function (e) { + _this3.sideScrolling = true; + }); + window.addEventListener("mouseup", function () { + _this3.sideScrolling = false; + }); + window.addEventListener("touchend", function () { + _this3.sideScrolling = false; + }); + this.findBy(".alphabet-scroll-to", true).forEach(function (elem) { + var listener = function listener(e) { + if (_this3.sideScrolling) { + _this3.findBy(".alphabet-section." + elem.dataset.letter).scrollIntoView({ + behavior: "smooth", + block: "start" + }); + } + }; + + elem.addEventListener("mousedown", function (e) { + _this3.sideScrolling = true; + listener(e); + }); + elem.addEventListener("mousemove", listener); + elem.addEventListener("touchstart", function (e) { + _this3.sideScrolling = true; + listener(e); + }); + elem.addEventListener("touchmove", listener); + }); + this.headingElement = this.findBy("#alphabetic-list-heading"); + this.renderList(); + return _context.abrupt("return", res); + + case 10: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "setElements", + value: function setElements(elements) { + var _this4 = this; + + this.elements = {}; + Object.keys(elements).sort(function (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }).forEach(function (key) { + _this4.elements[key] = elements[key]; + }); + } + }, { + key: "setHeading", + value: function setHeading(headingElement) { + this.heading = headingElement; + + if (this.headingElement && this.heading) { + client_1.ViewHelper.removeAllChildren(this.headingElement); + this.headingElement.appendChild(this.heading); + } + } + }, { + key: "renderElement", + value: function renderElement(element) { + console.warn("should be overloaded?"); + var elem = document.createElement("div"); + elem.innerText = element; + return elem; + } + }, { + key: "renderList", + value: function renderList() { + var _this5 = this; + + client_1.ViewHelper.removeAllChildren(this.headingElement); + + if (this.heading) { + this.headingElement.appendChild(this.heading); + } + + this.findBy(".alphabet-section", true).forEach(function (section) { + client_1.ViewHelper.removeAllChildren(section); + }); + var currentLetter = 'A'; + var currentSegment = this.findBy(".alphabet-section.A"); + Object.keys(this.elements).forEach(function (key) { + var newLetter = key.trim().substring(0, 1).toUpperCase(); + + if (newLetter !== currentLetter) { + currentLetter = newLetter; + + var newSegment = _this5.findBy(".alphabet-section." + newLetter); + + if (newSegment !== null) { + currentSegment = newSegment; + } + } + + var element = _this5.renderElement(_this5.elements[key]); + + currentSegment.appendChild(element); + }); + } + }]); + + return AlphabeticListFragment; +}(AbstractFragment_1.AbstractFragment); + +exports.AlphabeticListFragment = AlphabeticListFragment; + +/***/ }), +/* 502 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/alphabeticListFragment.html"; + +/***/ }), +/* 503 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TabFragment = void 0; + +var AbstractFragment_1 = __webpack_require__(79); + +var defaultTabView = __webpack_require__(504); + +var Helper_1 = __webpack_require__(15); + +var Translator_1 = __webpack_require__(32); + +var client_1 = __webpack_require__(197); + +var TabFragment = /*#__PURE__*/function (_AbstractFragment_1$A) { + _inherits(TabFragment, _AbstractFragment_1$A); + + var _super2 = _createSuper(TabFragment); + + function TabFragment(site, view) { + var _this; + + _classCallCheck(this, TabFragment); + + _this = _super2.call(this, site, Helper_1.Helper.nonNull(view, defaultTabView)); + _this.lastTabId = 0; + _this.activeTab = null; + _this.onTabChangeListener = null; + _this.tabs = new Map(); + _this.tabViewPromise = _this._viewLoadedPromise; + return _this; + } + + _createClass(TabFragment, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this2 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(TabFragment.prototype), "onViewLoaded", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var res; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onViewLoaded.call(this); + this.nameContainer = this.findBy(".tab-names"); + this.nameButton = this.findBy(".tab-button-template"); + this.nameButton.classList.remove("tab-button-template"); + this.nameButton.remove(); + this.tabContent = this.findBy(".tab-content"); + this.tabSite = this.findBy(".tab-site-template"); + this.tabSite.classList.remove("tab-site-template"); + this.tabSite.remove(); + return _context.abrupt("return", res); + + case 10: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "addFragment", + value: function addFragment(name, fragment, nameIsTranslatable) { + var _this3 = this; + + _get(_getPrototypeOf(TabFragment.prototype), "addFragment", this).call(this, ".tab-content", fragment); + + fragment._viewLoadedPromise.then(function () { + var view = _this3.tabSite.cloneNode(true); + + view.appendChild(fragment._view); + _this3.lastTabId++; + var tab = { + name: name, + fragment: fragment, + view: view, + nameIsTranslatable: Helper_1.Helper.nonNull(nameIsTranslatable, true), + button: null, + id: _this3.lastTabId + }; + + _this3.tabs.set(_this3.lastTabId, tab); + + _this3._viewLoadedPromise.then(function () { + var nameElement = _this3.nameButton.cloneNode(true); + + nameElement.appendChild(tab.nameIsTranslatable ? Translator_1.Translator.makePersistentTranslation(name) : document.createTextNode(name)); + + _this3.nameContainer.appendChild(nameElement); + + nameElement.addEventListener("click", function () { + _this3.showTab(tab.id); + }); + tab.button = nameElement; + + if (Helper_1.Helper.isNull(_this3.activeTab)) { + _this3.showTab(tab.id); + } + }); + }); + } + }, { + key: "showTab", + value: function showTab(tabId) { + var tab = this.tabs.get(tabId); + + if (tab && tabId !== this.activeTab) { + var previousActiveButton = this.findBy(".tab-button.active"); + + if (Helper_1.Helper.isNotNull(previousActiveButton)) { + previousActiveButton.classList.remove("active"); + } + + tab.button.classList.add("active"); + client_1.ViewHelper.removeAllChildren(this.tabContent); + this.tabContent.appendChild(tab.view); + this.activeTab = tabId; + + if (this.onTabChangeListener) { + this.onTabChangeListener(tab); + } + } + } + }, { + key: "setOnTabChangeListener", + value: function setOnTabChangeListener(listener) { + this.onTabChangeListener = listener; + } + }]); + + return TabFragment; +}(AbstractFragment_1.AbstractFragment); + +exports.TabFragment = TabFragment; + +/***/ }), +/* 504 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/tabFragment.html"; + +/***/ }), +/* 505 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +/***/ }), +/* 506 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ErrorAction = void 0; + +var MenuAction_1 = __webpack_require__(80); + +var Dialog_1 = __webpack_require__(84); + +var Translator_1 = __webpack_require__(32); + +var errorIcon = __webpack_require__(507); + +var ErrorAction = /*#__PURE__*/function (_MenuAction_1$MenuAct) { + _inherits(ErrorAction, _MenuAction_1$MenuAct); + + var _super = _createSuper(ErrorAction); + + function ErrorAction() { + var _this; + + _classCallCheck(this, ErrorAction); + + _this = _super.call(this, "", function () { + var d = new Dialog_1.Dialog(ErrorAction._errors.join("
"), Translator_1.Translator.translate("error")); + d.setTranslatable(false); + d.show(); + }, MenuAction_1.MenuAction.SHOW_ALWAYS, -1000, ErrorAction.ERROR_ICON); + _this._visible = ErrorAction._errors.length > 0; + _this._shouldTranslate = false; + console.log("icon: ", ErrorAction.ERROR_ICON); + return _this; + } + + _createClass(ErrorAction, null, [{ + key: "addError", + value: function addError(errorMessage) { + if (this._errors.indexOf(errorMessage) === -1) { + this._errors.push(errorMessage); + + this.getInstance().setVisibility(this._errors.length > 0); + } + } + }, { + key: "removeError", + value: function removeError(errorMessage) { + var index = this._errors.indexOf(errorMessage); + + if (index >= 0) { + this._errors.splice(index, 1); + + this.getInstance().setVisibility(this._errors.length > 0); + } + } + /** + * @return ErrorAction; + */ + + }, { + key: "getInstance", + value: function getInstance() { + if (this._instance === null) { + this._instance = new ErrorAction(); + } + + return this._instance; + } + }]); + + return ErrorAction; +}(MenuAction_1.MenuAction); + +exports.ErrorAction = ErrorAction; +ErrorAction.ERROR_ICON = errorIcon; +ErrorAction._instance = null; +ErrorAction._errors = []; + +/***/ }), +/* 507 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ("img/errorIcon.png"); + +/***/ }), +/* 508 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.StartSiteMenuAction = void 0; + +var MenuAction_1 = __webpack_require__(80); + +var App_1 = __webpack_require__(33); + +var StartSiteMenuAction = /*#__PURE__*/function (_MenuAction_1$MenuAct) { + _inherits(StartSiteMenuAction, _MenuAction_1$MenuAct); + + var _super = _createSuper(StartSiteMenuAction); + + function StartSiteMenuAction(name, site, showFor, order, icon) { + _classCallCheck(this, StartSiteMenuAction); + + return _super.call(this, name, function () { + if (StartSiteMenuAction._app) { + if (Array.isArray(site) && site.length >= 2) { + StartSiteMenuAction._app.startSite(site[0], site[1]); + } else { + StartSiteMenuAction._app.startSite(site); + } + } + }, showFor, order, icon); + } + + return StartSiteMenuAction; +}(MenuAction_1.MenuAction); + +exports.StartSiteMenuAction = StartSiteMenuAction; +StartSiteMenuAction._app = null; +App_1.App.addInitialization(function (app) { + StartSiteMenuAction._app = app; +}); + +/***/ }), +/* 509 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/navbar.html"; + +/***/ }), +/* 510 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/menuSite.html"; + +/***/ }), +/* 511 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwipeFragment = void 0; + +var AbstractFragment_1 = __webpack_require__(79); + +var SwipeChildFragment_1 = __webpack_require__(263); + +var Helper_1 = __webpack_require__(15); + +var view = __webpack_require__(512); + +var SwipeFragment = /*#__PURE__*/function (_AbstractFragment_1$A) { + _inherits(SwipeFragment, _AbstractFragment_1$A); + + var _super2 = _createSuper(SwipeFragment); + + function SwipeFragment(site) { + var _this; + + _classCallCheck(this, SwipeFragment); + + _this = _super2.call(this, site, view); + _this._activeIndex = 0; + _this._touchStart = null; + return _this; + } + + _createClass(SwipeFragment, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this2 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(SwipeFragment.prototype), "onViewLoaded", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this3 = this; + + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this._view.addEventListener("touchstart", function (e) { + _this3._touchStart = e.touches[0]; + }, false); + + this._view.addEventListener("touchend", function (e) { + _this3._handleSwipe(e.changedTouches[0].clientX, e.changedTouches[0].clientY); + + _this3._touchStart = null; + }); + + this._view.addEventListener("mousedown", function (e) { + _this3._touchStart = e; + }, false); + + this._view.addEventListener("mouseup", function (e) { + _this3._handleSwipe(e.clientX, e.clientY); + + _this3._touchStart = null; + }); + + return _context.abrupt("return", _super.onViewLoaded.call(this)); + + case 5: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "_handleSwipe", + value: function _handleSwipe(endX, endY) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var touchStart, diffX; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (!Helper_1.Helper.isNull(this._touchStart)) { + _context2.next = 2; + break; + } + + return _context2.abrupt("return"); + + case 2: + touchStart = this._touchStart; + this._touchStart = null; + diffX = touchStart.clientX - endX; + + if (!(Math.abs(touchStart.clientY - endY) <= SwipeFragment.MAX_Y && Math.abs(diffX) >= SwipeFragment.MIN_X)) { + _context2.next = 13; + break; + } + + if (!(diffX > 0)) { + _context2.next = 11; + break; + } + + _context2.next = 9; + return this._fragments[this._activeIndex].onSwipeLeft(); + + case 9: + _context2.next = 13; + break; + + case 11: + _context2.next = 13; + return this._fragments[this._activeIndex].onSwipeRight(); + + case 13: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "onStart", + value: function onStart(pauseArguments) { + var _this4 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return _get(_getPrototypeOf(SwipeFragment.prototype), "onStart", _this4); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + if (this._activeIndex >= 0 && this._activeIndex < this._fragments.length) { + this.setActiveFragment(this._activeIndex); + } + + return _context3.abrupt("return", _super.onStart.call(this, pauseArguments)); + + case 2: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "setActiveFragment", + value: function setActiveFragment(index) { + var _this5 = this; + + if (index instanceof SwipeChildFragment_1.SwipeChildFragment) { + index = this._fragments.indexOf(index); + } + + if (index >= 0 && index < this._fragments.length) { + this._activeIndex = index; + + this._fragments.forEach(function (frag, i) { + frag.setActive(i === _this5._activeIndex); + }); + } + } + }, { + key: "nextFragment", + value: function nextFragment() { + this.setActiveFragment((this._activeIndex + 1) % this._fragments.length); + } + }, { + key: "previousFragment", + value: function previousFragment() { + this.setActiveFragment((this._activeIndex + this._fragments.length - 1) % this._fragments.length); + } + }, { + key: "addFragment", + value: function addFragment(fragment) { + if (fragment instanceof SwipeChildFragment_1.SwipeChildFragment) { + fragment.setParent(this); + return _get(_getPrototypeOf(SwipeFragment.prototype), "addFragment", this).call(this, ".swipe-container", fragment); + } + } + }]); + + return SwipeFragment; +}(AbstractFragment_1.AbstractFragment); + +exports.SwipeFragment = SwipeFragment; +SwipeFragment.MAX_Y = 80; +SwipeFragment.MIN_X = 150; + +/***/ }), +/* 512 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/swipeFragment.html"; + +/***/ }), +/* 513 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ButtonChooseDialog = void 0; + +var Dialog_1 = __webpack_require__(84); + +var ButtonChooseDialog = /*#__PURE__*/function (_Dialog_1$Dialog) { + _inherits(ButtonChooseDialog, _Dialog_1$Dialog); + + var _super = _createSuper(ButtonChooseDialog); + + function ButtonChooseDialog(content, title, values) { + var _this; + + _classCallCheck(this, ButtonChooseDialog); + + _this = _super.call(this, content, title); + Object.keys(values).forEach(function (key) { + _this.addButton(values[key], key); + }); + return _this; + } + + return ButtonChooseDialog; +}(Dialog_1.Dialog); + +exports.ButtonChooseDialog = ButtonChooseDialog; + +/***/ }), +/* 514 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChooseDialog = void 0; + +var Dialog_1 = __webpack_require__(84); + +var ViewInflater_1 = __webpack_require__(58); + +var view = __webpack_require__(264); + +var Translator_1 = __webpack_require__(32); + +var Helper_1 = __webpack_require__(7); + +var ChooseDialog = /*#__PURE__*/function (_Dialog_1$Dialog) { + _inherits(ChooseDialog, _Dialog_1$Dialog); + + var _super = _createSuper(ChooseDialog); + + function ChooseDialog(valueNames, title, translateable) { + var _this; + + _classCallCheck(this, ChooseDialog); + + var viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then(function (view) { + translateable = Helper_1.Helper.nonNull(translateable, true); + var template = view.querySelector("#choose-value-template"); + template.remove(); + template.removeAttribute("id"); + var templateContainer = view.querySelector("#choose-container"); + + var _loop = function _loop(k) { + var valueElem = template.cloneNode(true); + var textElem = null; + + if (translateable) { + textElem = Translator_1.Translator.makePersistentTranslation(valueNames[k]); + } else { + textElem = document.createElement("span"); + textElem.innerText = valueNames[k]; + } + + valueElem.querySelector(".choose-dialog-value").appendChild(textElem); + valueElem["dataset"]["value"] = k; + valueElem.addEventListener("click", function () { + _this._result = k; + + _this.close(); + }); + templateContainer.appendChild(valueElem); + }; + + for (var k in valueNames) { + _loop(k); + } + + return view; + }); + return _this = _super.call(this, viewPromise, title); + } + + return ChooseDialog; +}(Dialog_1.Dialog); + +exports.ChooseDialog = ChooseDialog; + +/***/ }), +/* 515 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ConfirmDialog = void 0; + +var Dialog_1 = __webpack_require__(84); + +var Helper_1 = __webpack_require__(15); + +var ConfirmDialog = /*#__PURE__*/function (_Dialog_1$Dialog) { + _inherits(ConfirmDialog, _Dialog_1$Dialog); + + var _super2 = _createSuper(ConfirmDialog); + + function ConfirmDialog(content, title, confirmButtonText, cancelButtonText) { + var _this; + + _classCallCheck(this, ConfirmDialog); + + _this = _super2.call(this, content, title); + _this.confirmButtonText = Helper_1.Helper.nonNull(confirmButtonText, "confirm-button"); + _this.cancelButtonText = Helper_1.Helper.nonNull(cancelButtonText, "cancel-button"); + return _this; + } + + _createClass(ConfirmDialog, [{ + key: "show", + value: function show() { + var _this2 = this; + + var _super = Object.create(null, { + show: { + get: function get() { + return _get(_getPrototypeOf(ConfirmDialog.prototype), "show", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this.addButton(this.confirmButtonText, true); + this.addButton(this.cancelButtonText, false); + return _context.abrupt("return", _super.show.call(this)); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "close", + value: function close() { + if (Helper_1.Helper.isNull(this._result)) { + this._result = false; + } + + return _get(_getPrototypeOf(ConfirmDialog.prototype), "close", this).call(this); + } + }]); + + return ConfirmDialog; +}(Dialog_1.Dialog); + +exports.ConfirmDialog = ConfirmDialog; + +/***/ }), +/* 516 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImgChooseDialog = void 0; + +var ElemChooseDialog_1 = __webpack_require__(265); + +var ImgChooseDialog = /*#__PURE__*/function (_ElemChooseDialog_1$E) { + _inherits(ImgChooseDialog, _ElemChooseDialog_1$E); + + var _super = _createSuper(ImgChooseDialog); + + function ImgChooseDialog(valueNames, title) { + _classCallCheck(this, ImgChooseDialog); + + var newValueNames = {}; + Object.keys(valueNames).forEach(function (k) { + var elem = document.createElement("img"); + elem.src = valueNames[k]; + newValueNames[k] = elem; + }); + return _super.call(this, newValueNames, title); + } + + return ImgChooseDialog; +}(ElemChooseDialog_1.ElemChooseDialog); + +exports.ImgChooseDialog = ImgChooseDialog; + +/***/ }), +/* 517 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ScaleHelper = void 0; + +var js_helper_1 = __webpack_require__(22); + +var ScaleHelper = /*#__PURE__*/function () { + function ScaleHelper() { + _classCallCheck(this, ScaleHelper); + } + + _createClass(ScaleHelper, [{ + key: "scaleTo", + value: function scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, addListener) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var newFontSize, self, listener; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + addListener = js_helper_1.Helper.nonNull(addListener, true); + animationDelay = js_helper_1.Helper.nonNull(animationDelay, 0); + _context.next = 4; + return this._getNewFontSize(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay === 0); + + case 4: + newFontSize = _context.sent; + + if (!(animationDelay > 0)) { + _context.next = 8; + break; + } + + _context.next = 8; + return new Promise(function (r) { + setTimeout(r, animationDelay); + fontElement.style.fontSize = newFontSize + "px"; + }); + + case 8: + self = this; + + listener = function listener() { + return new Promise(function (resolve) { + var timeout = typeof addListener === 'number' ? addListener : 255; + setTimeout(function () { + resolve(self.scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, false)); + }, timeout); + }); + }; + + if (addListener !== false) { + window.addEventListener("resize", listener); + } + + return _context.abrupt("return", listener); + + case 12: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "scaleToFull", + value: function scaleToFull(fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animDelay, addListener) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", this.scaleTo(1, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animDelay, addListener)); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "_getNewFontSize", + value: function _getNewFontSize(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, setFontSize) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var hasNoTransitionClass, numChanged, oldDiffIndex, oldDiff, i, beforeFontSize, currentFontSize, widthDiff, heightDiff, containerWidth, containerHeight, containerStyle, newDiff; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + margin = js_helper_1.Helper.nonNull(margin, 10); + ignoreHeight = js_helper_1.Helper.nonNull(ignoreHeight, false); + ignoreWidth = js_helper_1.Helper.nonNull(ignoreWidth, false); + fontWeight = js_helper_1.Helper.nonNull(fontWeight, fontElement.innerHTML.length); + setFontSize = js_helper_1.Helper.nonNull(setFontSize, true); + hasNoTransitionClass = container.classList.contains("no-transition"); + + if (!hasNoTransitionClass) { + container.classList.add("no-transition"); + } + + numChanged = 5; + oldDiffIndex = 0; + oldDiff = []; + + for (i = 0; i < numChanged; i++) { + oldDiff.push(0); + } + + beforeFontSize = fontElement.style.fontSize; + currentFontSize = 1; + widthDiff = 0; + heightDiff = 0; + containerWidth = 0; + containerHeight = 0; + + case 17: + currentFontSize += oldDiff[oldDiffIndex] / (fontWeight + 1); + fontElement.style.fontSize = currentFontSize + 'px'; + containerStyle = window.getComputedStyle(container); + containerWidth = parseFloat(containerStyle.getPropertyValue("width").replace('px', '')); + containerHeight = parseFloat(containerStyle.getPropertyValue("height").replace('px', '')); + widthDiff = containerWidth - fontElement.offsetWidth; + heightDiff = containerHeight - fontElement.offsetHeight; + oldDiffIndex = (oldDiffIndex + 1) % numChanged; + newDiff = ignoreWidth ? heightDiff : ignoreHeight ? widthDiff : Math.min(widthDiff, heightDiff); + + if (!(newDiff === oldDiff[(oldDiffIndex + 1) % numChanged])) { + _context3.next = 28; + break; + } + + return _context3.abrupt("break", 30); + + case 28: + oldDiff[oldDiffIndex] = newDiff; + + case 29: + if ((widthDiff > (1 - scale) * containerWidth || ignoreWidth) && (heightDiff > (1 - scale) * containerHeight || ignoreHeight)) { + _context3.next = 17; + break; + } + + case 30: + currentFontSize -= margin; + fontElement.style.fontSize = setFontSize ? currentFontSize + "px" : beforeFontSize; + + if (hasNoTransitionClass) { + _context3.next = 36; + break; + } + + _context3.next = 35; + return new Promise(function (r) { + setTimeout(r, 50); + }); + + case 35: + container.classList.remove("no-transition"); + + case 36: + return _context3.abrupt("return", currentFontSize); + + case 37: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + } + }]); + + return ScaleHelper; +}(); + +exports.ScaleHelper = ScaleHelper; + +/***/ }), +/* 518 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PromiseHelper = void 0; + +var Helper_1 = __webpack_require__(15); + +var PromiseHelper = /*#__PURE__*/function () { + function PromiseHelper() { + _classCallCheck(this, PromiseHelper); + } + + _createClass(PromiseHelper, null, [{ + key: "delay", + value: function delay(milliseconds) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", new Promise(function (r) { + setTimeout(r, milliseconds); + })); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }, { + key: "tryMultipleTimes", + value: function tryMultipleTimes(func, times, delay) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var i, res; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + times = Helper_1.Helper.nonNull(times, 5); + delay = Helper_1.Helper.nonNull(delay, 50); + i = 0; + + case 3: + if (!(i < times)) { + _context2.next = 16; + break; + } + + _context2.next = 6; + return func(); + + case 6: + res = _context2.sent; + + if (!(res !== undefined)) { + _context2.next = 11; + break; + } + + return _context2.abrupt("return", res); + + case 11: + _context2.next = 13; + return PromiseHelper.delay(delay); + + case 13: + i++; + _context2.next = 3; + break; + + case 16: + return _context2.abrupt("return", undefined); + + case 17: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + }, { + key: "tryUntilTimeout", + value: function tryUntilTimeout(func, timeout, delay) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this = this; + + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + timeout = Helper_1.Helper.nonNull(timeout, 500); + delay = Helper_1.Helper.nonNull(delay, 50); + return _context4.abrupt("return", new Promise(function (resolve, reject) { + return __awaiter(_this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var shouldRun, res; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + shouldRun = true; + PromiseHelper.delay(timeout).then(function () { + reject(new Error("timeout")); + shouldRun = false; + }); + + case 2: + if (!shouldRun) { + _context3.next = 13; + break; + } + + _context3.next = 5; + return func(); + + case 5: + res = _context3.sent; + + if (!(res !== undefined)) { + _context3.next = 9; + break; + } + + resolve(res); + return _context3.abrupt("break", 13); + + case 9: + _context3.next = 11; + return PromiseHelper.delay(delay); + + case 11: + _context3.next = 2; + break; + + case 13: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + })); + + case 3: + case "end": + return _context4.stop(); + } + } + }, _callee4); + })); + } + }]); + + return PromiseHelper; +}(); + +exports.PromiseHelper = PromiseHelper; + +/***/ }), +/* 519 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/shareDialog.html"; + +/***/ }), +/* 520 */ +/***/ (function(module) { + +module.exports = JSON.parse("{\"Sunday\":\"Sonntag\",\"Monday\":\"Montag\",\"Tuesday\":\"Dienstag\",\"Wednesday\":\"Mittwoch\",\"Thursday\":\"Donnerstag\",\"Friday\":\"Freitag\",\"Saturday\":\"Samstag\",\"January\":\"Januar\",\"February\":\"Februar\",\"March\":\"März\",\"April\":\"April\",\"May\":\"Mai\",\"June\":\"Juni\",\"July\":\"Juli\",\"August\":\"August\",\"September\":\"September\",\"October\":\"Oktober\",\"November\":\"November\",\"December\":\"Dezember\",\"Sun\":\"So\",\"Mon\":\"Mo\",\"Tue\":\"Di\",\"Wed\":\"Mi\",\"Thu\":\"Do\",\"Fri\":\"Fr\",\"Sat\":\"Sa\",\"Jan\":\"Jan\",\"Feb\":\"Feb\",\"Mar\":\"Mär\",\"Apr\":\"Apr\",\"Jun\":\"Jun\",\"Jul\":\"Jul\",\"Aug\":\"Aug\",\"Sep\":\"Sep\",\"Oct\":\"Okt\",\"Nov\":\"Nov\",\"Dec\":\"Dez\",\"cannot open popups\":\"Bitte erlaube Popups, um die Funktion nutzen zu können.\"}"); + +/***/ }), +/* 521 */ +/***/ (function(module) { + +module.exports = JSON.parse("{\"Sunday\":\"Sunday\",\"Monday\":\"Monday\",\"Tuesday\":\"Tuesday\",\"Wednesday\":\"Wednesday\",\"Thursday\":\"Thursday\",\"Friday\":\"Friday\",\"Saturday\":\"Saturday\",\"January\":\"January\",\"February\":\"February\",\"March\":\"March\",\"April\":\"April\",\"May\":\"May\",\"June\":\"June\",\"July\":\"July\",\"August\":\"August\",\"September\":\"September\",\"October\":\"October\",\"November\":\"November\",\"December\":\"December\",\"Sun\":\"Sun\",\"Mon\":\"Mon\",\"Tue\":\"Tue\",\"Wed\":\"Wed\",\"Thu\":\"Thu\",\"Fri\":\"Fri\",\"Sat\":\"Sat\",\"Jan\":\"Jan\",\"Feb\":\"Feb\",\"Mar\":\"Mar\",\"Apr\":\"Apr\",\"Jun\":\"Jun\",\"Jul\":\"Jul\",\"Aug\":\"Aug\",\"Sep\":\"Sep\",\"Oct\":\"Oct\",\"Nov\":\"Nov\",\"Dec\":\"Dec\",\"cannot open popups\":\"Please allow popups to use this function.\"}"); + +/***/ }), +/* 522 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function get() { + return m[k]; + } + }); +} : function (o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +var __exportStar = this && this.__exportStar || function (m, exports) { + for (var p in m) { + if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); + } +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__exportStar(__webpack_require__(246), exports); + +/***/ }), +/* 523 */ +/***/ (function(module) { + +module.exports = JSON.parse("{\"login\":\"Login\",\"logout\":\"Logout\",\"email\":\"E-Mail\",\"password\":\"Passwort\",\"email or password is wrong\":\"Die E-Mail oder das Passwort stimmt nicht!\",\"stay logged in\":\"Angemeldet bleiben\",\"goodbye\":\"Auf Wiedersehen\",\"welcome back\":\"Willkommen zurück\",\"registration successful\":\"Registrierung erfolgreich\",\"registration\":\"Anmelden\",\"I have read and accepted the terms and conditions.\":\"Ich habe die AGB gelesen und akzeptiert.\",\"retype password\":\"Passwort wiederholen\",\"the passwords do not match.\":\"Die Passwörter stimmen nicht überein.\",\"username\":\"Username\",\"email is already in use.\":\"Die E-Mail wird bereits verwendet.\",\"username is already in use.\":\"Der Username ist bereits vergeben.\",\"wrong email or password\":\"Falsche E-Mail oder falsches Passwort\",\"wrong rights\":\"Keine Berechtigung!\",\"passwort vergessen?\":\"Passwort vergessen?\",\"password forgotten\":\"Passwort vergessen\",\"request new password\":\"Neues Passwort setzen\",\"email is not in our database\":\"Die E-Mail ist nicht registriert!\",\"forgot-password-mail sent\":\"Es wurde eine E-Mail an die angegebene Adresse gesendet.\",\"password resetted\":\"Das Passwort wurde erfolgreich zurückgesetzt.\",\"token is not valid\":\"Der Link ist nicht mehr gültig.\",\"reset password\":\"Passwort zurücksetzen\",\"repeat password\":\"Passwort wiederholen\",\"token not valid\":\"Der Link ist nicht mehr gültig\",\"Not allowed\":\"Nicht erlaubt\",\"You don't have the rights to do this!\":\"Du hast nicht die Berechtigung, um das zu tun!\",\"If you are not logged in, please log in and try again.\":\"Wenn du noch nicht eingeloggt bist, logge dich ein und versuche es erneut.\"}"); + +/***/ }), +/* 524 */ +/***/ (function(module) { + +module.exports = JSON.parse("{\"login\":\"Login\",\"logout\":\"Logout\",\"email\":\"E-Mail\",\"password\":\"Password\",\"email or password is wrong\":\"The e-mail or password is incorrect!\",\"stay logged in\":\"Stay logged in\",\"goodbye\":\"Goodbye\",\"welcome back\":\"Welcome back\",\"registration successful\":\"Registration successful\",\"registration\":\"Registration\",\"I have read and accepted the terms and conditions.\":\"I have read and accepted the terms and conditions.\",\"retype password\":\"Retype Password\",\"the passwords do not match.\":\"The passwords do not match.\",\"username\":\"Username\",\"email is already in use.\":\"This e-mail is already in use.\",\"username is already in use.\":\"This Username is already taken.\",\"wrong email or password\":\"Wrong E-Mail or Password!\",\"wrong rights\":\"Wrong Rights!\",\"passwort vergessen?\":\"password forgotten?\",\"password forgotten\":\"Password Forgotten\",\"request new password\":\"Request New Password\",\"email is not in our database\":\"The given E-Mailaddress is not registered!\",\"forgot-password-mail sent\":\"We sent you an E-Mail with instructions\",\"password resetted\":\"The password was successfully changed.\",\"token is not valid\":\"The given link is no longer valid.\",\"reset password\":\"Reset Password\",\"repeat password\":\"Repeat Password\",\"token not valid\":\"The link is not valid any more\",\"Not allowed\":\"Not allowed\",\"You don't have the rights to do this!\":\"You don't have the rights to do this!\",\"If you are not logged in, please log in and try again.\":\"If you are not logged in, please log in and try again.\"}"); + +/***/ }), +/* 525 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/loginSite.html"; + +/***/ }), +/* 526 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/forgotPasswordSite.html"; + +/***/ }), +/* 527 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/notAllowedSite.html"; + +/***/ }), +/* 528 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/selectUserDialog.html"; + +/***/ }), +/* 529 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.OfflineUserManager = void 0; + +var client_1 = __webpack_require__(132); + +var client_2 = __webpack_require__(4); + +var UserManager_1 = __webpack_require__(99); + +var Role_1 = __webpack_require__(204); + +var User_1 = __webpack_require__(112); + +var Helper_1 = __webpack_require__(7); + +var OfflineUserManager = /*#__PURE__*/function (_UserManager_1$UserMa) { + _inherits(OfflineUserManager, _UserManager_1$UserMa); + + var _super = _createSuper(OfflineUserManager); + + function OfflineUserManager() { + var _this; + + _classCallCheck(this, OfflineUserManager); + + _this = _super.call(this); + _this._userData = { + id: null, + loggedIn: false, + online: true, + username: null, + email: null, + accesses: OfflineUserManager.LOGGED_OUT_ACCESSES + }; + return _this; + } + + _createClass(OfflineUserManager, [{ + key: "_doGetMe", + value: function _doGetMe() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var userId, user; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return client_2.NativeStoragePromise.getItem("user-manager-user-id"); + + case 2: + userId = _context.sent; + + if (!Helper_1.Helper.isNotNull(userId)) { + _context.next = 10; + break; + } + + _context.next = 6; + return User_1.User.findById(userId, User_1.User.getRelations()); + + case 6: + user = _context.sent; + + if (!(Helper_1.Helper.isNotNull(user) && user.activated && !user.blocked)) { + _context.next = 10; + break; + } + + _context.next = 10; + return this._handleLoginFromUser(user); + + case 10: + return _context.abrupt("return", this._userData); + + case 11: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "_handleLoginFromUser", + value: function _handleLoginFromUser(user) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this2 = this; + + var accesses, roles, roleIds, accessNames; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + accesses = []; + roles = user.roles; + roleIds = []; + roles.forEach(function (role) { + roleIds.push(role.id); + }); + _context3.next = 6; + return Role_1.Role.findByIds(roleIds, ["accesses"]); + + case 6: + roles = _context3.sent; + _context3.next = 9; + return Helper_1.Helper.asyncForEach(roles, function (role) { + return __awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = accesses.push; + _context2.t1 = accesses; + _context2.t2 = _toConsumableArray; + _context2.next = 5; + return this._getAccessesFromRole(role); + + case 5: + _context2.t3 = _context2.sent; + _context2.t4 = (0, _context2.t2)(_context2.t3); + + _context2.t0.apply.call(_context2.t0, _context2.t1, _context2.t4); + + case 8: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + }); + + case 9: + accessNames = []; + accesses.forEach(function (access) { + accessNames.push(access.name); + }); + this._userData = { + id: user.id, + loggedIn: true, + online: true, + username: user.username, + email: user.email, + accesses: accessNames + }; + + case 12: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "_doLogin", + value: function _doLogin(email, password, saveLogin) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var user; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return User_1.User.findOne({ + "email": email, + "password": this._hashPassword(password), + "activated": true, + "blocked": false + }, undefined, undefined, User_1.User.getRelations()); + + case 2: + user = _context4.sent; + + if (!user) { + _context4.next = 10; + break; + } + + _context4.next = 6; + return this._handleLoginFromUser(user); + + case 6: + if (!saveLogin) { + _context4.next = 9; + break; + } + + _context4.next = 9; + return client_2.NativeStoragePromise.setItem("user-manager-user-id", user.id); + + case 9: + return _context4.abrupt("return", true); + + case 10: + return _context4.abrupt("return", false); + + case 11: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "_doLogout", + value: function _doLogout() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + this._userData = { + id: null, + loggedIn: false, + online: true, + username: null, + email: null, + accesses: OfflineUserManager.LOGGED_OUT_ACCESSES + }; + _context5.next = 3; + return client_2.NativeStoragePromise.remove("user-manager-user-id"); + + case 3: + return _context5.abrupt("return", false); + + case 4: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + }, { + key: "_getAccessesFromRole", + value: function _getAccessesFromRole(role) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var _this3 = this; + + var accesses, repo, parents; + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + accesses = role.accesses; + _context7.next = 3; + return client_1.EasySyncClientDb.getInstance()._getRepository(Role_1.Role.getSchemaName()); + + case 3: + repo = _context7.sent; + _context7.next = 6; + return repo.createQueryBuilder(Role_1.Role.getSchemaName()).leftJoinAndSelect(Role_1.Role.getSchemaName() + '.accesses', "access").leftJoinAndSelect(Role_1.Role.getSchemaName() + '.children', "child").where('child.id = :id', { + id: role.id + }).getMany(); + + case 6: + parents = _context7.sent; + _context7.next = 9; + return Helper_1.Helper.asyncForEach(parents, function (role) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var otherAccesses; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return this._getAccessesFromRole(role); + + case 2: + otherAccesses = _context6.sent; + accesses.push.apply(accesses, _toConsumableArray(otherAccesses)); + + case 4: + case "end": + return _context6.stop(); + } + } + }, _callee6, this); + })); + }); + + case 9: + return _context7.abrupt("return", accesses); + + case 10: + case "end": + return _context7.stop(); + } + } + }, _callee7); + })); + } + }, { + key: "_doRegister", + value: function _doRegister(email, username, password) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var errors, users, user; + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + errors = {}; + _context8.next = 3; + return Promise.all([User_1.User.findOne({ + "email": email + }), User_1.User.findOne({ + "username": username + })]); + + case 3: + users = _context8.sent; + + if (Helper_1.Helper.isNotNull(users[0])) { + errors["email"] = "email is already in use."; + } + + if (Helper_1.Helper.isNotNull(users[1])) { + errors["username"] = "username is already in use."; + } + + if (!(Object.keys(errors).length > 0)) { + _context8.next = 8; + break; + } + + return _context8.abrupt("return", errors); + + case 8: + user = new User_1.User(); + _context8.next = 11; + return OfflineUserManager._getNewId(); + + case 11: + user.id = _context8.sent; + user.email = email; + user.password = this._hashPassword(password); + user.username = username; + user.roles = OfflineUserManager.DEFAULT_ROLES; + user.activated = true; + _context8.next = 19; + return user.save(); + + case 19: + _context8.next = 21; + return this.login(email, password); + + case 21: + return _context8.abrupt("return", user); + + case 22: + case "end": + return _context8.stop(); + } + } + }, _callee8, this); + })); + } + }, { + key: "_hashPassword", + value: function _hashPassword(pw) { + return pw; + } + }], [{ + key: "_getNewId", + value: function _getNewId() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + var user; + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + if (!Helper_1.Helper.isNull(OfflineUserManager._lastId)) { + _context9.next = 5; + break; + } + + _context9.next = 3; + return User_1.User.findOne(undefined, { + "id": "DESC" + }); + + case 3: + user = _context9.sent; + OfflineUserManager._lastId = user.id; + + case 5: + OfflineUserManager._lastId++; + return _context9.abrupt("return", OfflineUserManager._lastId); + + case 7: + case "end": + return _context9.stop(); + } + } + }, _callee9); + })); + } + }]); + + return OfflineUserManager; +}(UserManager_1.UserManager); + +exports.OfflineUserManager = OfflineUserManager; +OfflineUserManager.LOGGED_OUT_ACCESSES = UserManager_1.UserManager.OFFLINE_ACCESSES; +OfflineUserManager.DEFAULT_ROLES = []; +OfflineUserManager._lastId = null; + +/***/ }), +/* 530 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SyncJob_old = void 0; + +var LastSyncDates_1 = __webpack_require__(129); + +var client_1 = __webpack_require__(4); + +var shared_1 = __webpack_require__(22); + +var EasySyncClientDb_1 = __webpack_require__(128); + +var typeorm = __webpack_require__(47); + +var EasySyncPartialModel_1 = __webpack_require__(202); + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var ClientFileMedium_1 = __webpack_require__(150); + +var SyncJob_old = /*#__PURE__*/function () { + function SyncJob_old() { + _classCallCheck(this, SyncJob_old); + + this._syncedModels = {}; + this._modelNames = []; + this._relationshipModels = {}; + this._lastSyncDates = {}; + this._keyedModelClasses = {}; + this._savePromises = []; + } + + _createClass(SyncJob_old, [{ + key: "syncInBackgroundIfDataExists", + value: function syncInBackgroundIfDataExists(queries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var copiedQuery, requestQueries; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel(); + copiedQuery = shared_1.JsonHelper.deepCopy(queries); + requestQueries = this._buildRequestQuery(copiedQuery); + _context.next = 5; + return this._getLastSyncModels(this._modelNames, requestQueries); + + case 5: + this._lastSyncDates = _context.sent; + this._syncPromise = this.sync(queries); + + if (!Object["values"](this._lastSyncDates).some(function (lastSync) { + return lastSync["getLastSynced"]() === 0; + })) { + _context.next = 10; + break; + } + + _context.next = 10; + return this._syncPromise; + + case 10: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "getSyncPromise", + value: function getSyncPromise() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + return _context2.abrupt("return", this._syncPromise); + + case 1: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "sync", + value: function sync(queries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this = this; + + var requestQueries, saveResults, lastSyncPromises, finalRes; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel(); + requestQueries = this._buildRequestQuery(queries); + + if (!shared_1.Helper.isNull(this._lastSyncDates)) { + _context3.next = 6; + break; + } + + _context3.next = 5; + return this._getLastSyncModels(this._modelNames, requestQueries); + + case 5: + this._lastSyncDates = _context3.sent; + + case 6: + _context3.next = 8; + return this._doRuns(requestQueries); + + case 8: + saveResults = _context3.sent; + _context3.next = 11; + return this._handleRelations(); + + case 11: + //Save new lastSync models + lastSyncPromises = []; + Object.keys(this._lastSyncDates).forEach(function (model) { + lastSyncPromises.push(_this._lastSyncDates[model].save()); + }); + _context3.next = 15; + return Promise.all(lastSyncPromises); + + case 15: + //Calculate final result and give it back + finalRes = {}; + saveResults.forEach(function (res) { + if (res) { + if (!finalRes[res.model]) { + finalRes[res.model] = { + "deleted": [], + "changed": [] + }; + } + + if (res.deleted) { + finalRes[res.model]["deleted"] = finalRes[res.model]["deleted"].concat(res.entities); + } else { + finalRes[res.model]["changed"] = finalRes[res.model]["changed"].concat(res.entities); + } + } + }); + + if (!(finalRes["FileMedium"] && finalRes["FileMedium"]["changed"])) { + _context3.next = 20; + break; + } + + _context3.next = 20; + return ClientFileMedium_1.ClientFileMedium._handleImages(finalRes["FileMedium"]["changed"]); + + case 20: + return _context3.abrupt("return", finalRes); + + case 21: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "_doRuns", + value: function _doRuns(requestQueries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this2 = this; + + var newLastSynced, response, offset, shouldAskAgain, _loop; + + return regeneratorRuntime.wrap(function _callee4$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + //Initialize some variables + newLastSynced = null; + response = null; + offset = 0; + shouldAskAgain = false; //Ask for next run until no more runs needed + + _loop = /*#__PURE__*/regeneratorRuntime.mark(function _loop() { + var newRequestQueries; + return regeneratorRuntime.wrap(function _loop$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + shouldAskAgain = false; + _context4.next = 3; + return SyncJob_old._fetchModel(requestQueries, offset); + + case 3: + response = _context4.sent; + offset = response["nextOffset"]; //Update newLastSynced + + if (shared_1.Helper.isNull(newLastSynced)) { + newLastSynced = parseInt(response["newLastSynced"]); + Object.keys(_this2._lastSyncDates).forEach(function (key) { + _this2._lastSyncDates[key].setLastSynced(newLastSynced); + }); + } //create new request query + + + newRequestQueries = []; + response.results.forEach(function (res, i) { + if (_this2._extractEntities(res)) { + shouldAskAgain = true; + newRequestQueries.push(requestQueries[i]); + } + }); + requestQueries = newRequestQueries; + + case 9: + case "end": + return _context4.stop(); + } + } + }, _loop); + }); + + case 5: + return _context5.delegateYield(_loop(), "t0", 6); + + case 6: + if (shouldAskAgain) { + _context5.next = 5; + break; + } + + case 7: + return _context5.abrupt("return", Promise.all(this._savePromises)); + + case 8: + case "end": + return _context5.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "_handleRelations", + value: function _handleRelations() { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _this3 = this; + + var mergedRelations, relationPromises; + return regeneratorRuntime.wrap(function _callee6$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + mergedRelations = {}; + relationPromises = []; + Object.keys(this._relationshipModels).forEach(function (modelClassName) { + var relationDefinitions = _this3._keyedModelClasses[modelClassName].getRelationDefinitions(); + + Object.keys(_this3._relationshipModels[modelClassName]).forEach(function (id) { + var entity = _this3._relationshipModels[modelClassName][id]["entity"]; + var relations = _this3._relationshipModels[modelClassName][id]["relations"]; + var entityRelationPromises = []; + Object.keys(relations).forEach(function (relation) { + //foreach relation load other models and save them here + var valuePromise = _this3._handleSingleRelation(relationDefinitions, relation, relations, mergedRelations, entity); + + entityRelationPromises.push(valuePromise.then(function (value) { + entity[relation] = value; + })); + }); //Save after all relationships has been set + + relationPromises.push(Promise.all(entityRelationPromises).then(function () { + return entity.save(true); + })); + }); + }); //Wait for relation-promises + + _context7.next = 5; + return Promise.all(relationPromises); + + case 5: + _context7.next = 7; + return shared_1.Helper.asyncForEach(Object.keys(mergedRelations), function (model) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var entities; + return regeneratorRuntime.wrap(function _callee5$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.t0 = shared_1.Helper; + _context6.next = 3; + return this._keyedModelClasses[model].findByIds(Object.keys(mergedRelations[model]), this._keyedModelClasses[model].getRelations()); + + case 3: + _context6.t1 = _context6.sent; + + _context6.t2 = function (e) { + return e.id; + }; + + entities = _context6.t0.arrayToObject.call(_context6.t0, _context6.t1, _context6.t2); + Object.keys(mergedRelations[model]).forEach(function (id) { + if (entities[id]) { + Object.keys(mergedRelations[model][id]).forEach(function (relation) { + if (Array.isArray(mergedRelations[model][id][relation])) { + entities[id][relation] = shared_1.Helper.nonNull(entities[id][relation], []); + entities[id][relation].push.apply(entities[id][relation], mergedRelations[model][id][relation]); + } else { + entities[id][relation] = mergedRelations[model][id][relation]; + } + }); + } + }); + _context6.next = 9; + return EasySyncClientDb_1.EasySyncClientDb.getInstance().saveEntity(Object.values(entities)); + + case 9: + case "end": + return _context6.stop(); + } + } + }, _callee5, this); + })); + }, true); + + case 7: + case "end": + return _context7.stop(); + } + } + }, _callee6, this); + })); + } + }, { + key: "_handleSingleRelation", + value: function _handleSingleRelation(relationDefinitions, relationName, relations, mergedRelations, entity) { + var _this4 = this; + + var valuePromise = Promise.resolve(undefined); + var target = relationDefinitions[relationName]["target"]; + var shouldSync = relationDefinitions[relationName].sync !== false; //is relation a *-to-many relation? + + if (Array.isArray(relations[relationName])) { + if (shouldSync || relations[relationName].every(function (id) { + return !shared_1.Helper.isSet(_this4._syncedModels, target, id); + })) { + valuePromise = this._keyedModelClasses[target].findByIds(relations[relationName]); + } else { + var targetRelationDefinition = this._keyedModelClasses[target].getRelationDefinitions()[relationDefinitions[relationName]["inverseSide"]]; + + relations[relationName].filter(function (id) { + return !shared_1.Helper.isSet(_this4._relationshipModels, target, id); + }).forEach(function (id) { + mergedRelations[target] = shared_1.Helper.nonNull(mergedRelations[target], {}); + mergedRelations[target][id] = shared_1.Helper.nonNull(mergedRelations[target][id], {}); + var otherRelationValue = null; + + if (targetRelationDefinition.type === "many-to-many" || targetRelationDefinition.type === "one-to-many") { + otherRelationValue = shared_1.Helper.nonNull(mergedRelations[target][id][relationDefinitions[relationName]["inverseSide"]], []); + otherRelationValue.push(entity); + } else { + otherRelationValue = entity; + } + + mergedRelations[target][id][relationDefinitions[relationName]["inverseSide"]] = otherRelationValue; + }); + } + } else if (shouldSync || !shared_1.Helper.isSet(this._syncedModels, target, relations[relationName])) { + valuePromise = this._keyedModelClasses[target].findById(relations[relationName]); + } + + return valuePromise; + } + /** + * Extract the Entities and saves them(?) for one model + * + * @param modelRes + * @private + */ + + }, { + key: "_extractEntities", + value: function _extractEntities(modelRes) { + var _this5 = this; + + if (!modelRes) { + return false; + } + + var shouldAskAgain = false; + var modelClass = this._keyedModelClasses[modelRes["model"]]; + var modelName = modelClass.getSchemaName(); + var deletedModelsIds = []; + var changedModels = []; //split result into deleted and changed/new entities + + modelRes["entities"].forEach(function (entity) { + if (entity.deleted) { + deletedModelsIds.push(entity.id); + } else { + changedModels.push(entity); + } + }); + this._syncedModels[modelName] = shared_1.Helper.nonNull(this._syncedModels[modelName], {}); //convert json to entity and save it + + this._savePromises.push(modelClass._fromJson(changedModels).then(function (changedEntities) { + return __awaiter(_this5, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var _this6 = this; + + var relations, newIds, oldObjects, keyedEntities; + return regeneratorRuntime.wrap(function _callee7$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + relations = modelClass.getRelationDefinitions(); + newIds = []; + changedEntities.forEach(function (entity) { + _this6._syncedModels[modelName][entity.id] = entity; + newIds.push(entity.id); + Object.keys(relations).forEach(function (relation) { + if (entity[relation]) { + _this6._addRelation(modelName, entity, relation); //clear relation + + + entity[relation] = null; + } + }); + }); //Handle partial Models (different ids on client than server) + + if (!(modelClass.prototype instanceof EasySyncPartialModel_1.EasySyncPartialModel)) { + _context8.next = 9; + break; + } + + _context8.next = 6; + return modelClass.findByIds(newIds); + + case 6: + oldObjects = _context8.sent; + keyedEntities = shared_1.Helper.arrayToObject(changedEntities, function (changedEntities) { + return changedEntities.id; + }); + oldObjects.forEach(function (old) { + keyedEntities[old.id].clientId = old.clientId; + }); + + case 9: + return _context8.abrupt("return", EasySyncClientDb_1.EasySyncClientDb.getInstance().saveEntity(changedEntities).then(function (res) { + return { + "model": modelName, + "entities": res, + "deleted": false + }; + }).catch(function (e) { + console.error(e); + return Promise.reject(e); + })); + + case 10: + case "end": + return _context8.stop(); + } + } + }, _callee7); + })); + })); //Deletion of the entities + + + this._savePromises.push(EasySyncClientDb_1.EasySyncClientDb.getInstance().deleteEntity(deletedModelsIds, modelClass).then(function (res) { + return { + "model": modelName, + "entities": res, + "deleted": true + }; + }).catch(function (e) { + console.error(e); + return Promise.reject(e); + })); + + if (modelRes.shouldAskAgain) { + shouldAskAgain = true; + } + + return shouldAskAgain; + } + }, { + key: "_buildRequestQuery", + value: function _buildRequestQuery(queries) { + var _this7 = this; + + var requestQueries = []; //initializing query + + queries.forEach(function (query) { + if (query.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel) { + query = { + model: query, + where: {} + }; + } + + query.model = query.model.getSchemaName(); + + _this7._modelNames.push(query.model); + + requestQueries.push(query); + var key = "" + query.model + JSON.stringify(query.where); + + if (shared_1.Helper.isNotNull(_this7._lastSyncDates[key])) { + query["lastSynced"] = _this7._lastSyncDates[key].getLastSynced(); + } + }); + return requestQueries; + } + }, { + key: "_getLastSyncModels", + value: function _getLastSyncModels(modelNames, requestQueries) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + var lastSyncModelsArray, lastSyncDates; + return regeneratorRuntime.wrap(function _callee8$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return LastSyncDates_1.LastSyncDates.find({ + "model": typeorm.In(modelNames) + }); + + case 2: + lastSyncModelsArray = _context9.sent; + lastSyncDates = shared_1.Helper.arrayToObject(lastSyncModelsArray, function (model) { + return "" + model.getModel() + JSON.stringify(model.where); + }); + requestQueries.forEach(function (query) { + var key = "" + query.model + JSON.stringify(query.where); + + if (shared_1.Helper.isNull(lastSyncDates[key])) { + var lastSyncDate = new LastSyncDates_1.LastSyncDates(); + lastSyncDate.setModel(query.model); + lastSyncDate.where = query.where; + lastSyncDate.setLastSynced(0); + lastSyncDates[key] = lastSyncDate; + } + + query["lastSynced"] = lastSyncDates[key].getLastSynced(); + }); + return _context9.abrupt("return", lastSyncDates); + + case 6: + case "end": + return _context9.stop(); + } + } + }, _callee8); + })); + } + }, { + key: "_addRelation", + value: function _addRelation(modelName, entity, relation) { + this._relationshipModels[modelName] = shared_1.Helper.nonNull(this._relationshipModels[modelName], {}); + this._relationshipModels[modelName][entity.id] = shared_1.Helper.nonNull(this._relationshipModels[modelName][entity.id], {}); + this._relationshipModels[modelName][entity.id]["entity"] = entity; + this._relationshipModels[modelName][entity.id]["relations"] = shared_1.Helper.nonNull(this._relationshipModels[modelName][entity.id]["relations"], {}); + this._relationshipModels[modelName][entity.id]["relations"][relation] = entity[relation]; + return this._relationshipModels; + } + }], [{ + key: "_fetchModel", + value: function _fetchModel(query, offset) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + return regeneratorRuntime.wrap(function _callee9$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + _context10.next = 2; + return client_1.DataManager.load(SyncJob_old.SYNC_PATH_PREFIX + client_1.DataManager.buildQuery({ + "queries": JSON.stringify(query), + "offset": offset + })); + + case 2: + return _context10.abrupt("return", _context10.sent); + + case 3: + case "end": + return _context10.stop(); + } + } + }, _callee9); + })); + } + }]); + + return SyncJob_old; +}(); + +exports.SyncJob_old = SyncJob_old; +SyncJob_old.SYNC_PATH_PREFIX = "sync"; + +/***/ }), +/* 531 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ModifyEntitySite = void 0; + +var MenuSite_1 = __webpack_require__(69); + +var Form_1 = __webpack_require__(161); + +var js_helper_1 = __webpack_require__(22); + +var EasySyncBaseModel_1 = __webpack_require__(78); + +var ModifyEntitySite = /*#__PURE__*/function (_MenuSite_1$MenuSite) { + _inherits(ModifyEntitySite, _MenuSite_1$MenuSite); + + var _super2 = _createSuper(ModifyEntitySite); + + function ModifyEntitySite(siteManager, view, model, menuTemplate) { + var _this; + + _classCallCheck(this, ModifyEntitySite); + + _this = _super2.call(this, siteManager, view, menuTemplate); + _this._formSelector = ".entity-form"; + _this._ckEditorConfig = { + ".editor": { + toolbar: ['bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote'], + removePlugins: ["Heading", "Image", "ImageCaption", "ImageStyle", "ImageToolbar", "ImageUpload", "Table", "TableToolbar", "MediaEmbed", "CKFinderUploadAdapter"], + language: "de" + } + }; + _this._entity = null; + _this._model = model; + return _this; + } + + _createClass(ModifyEntitySite, [{ + key: "getEntityFromParameters", + value: function getEntityFromParameters(constructParameters) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var entity; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (this._model.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel) { + _context.next = 2; + break; + } + + throw { + "error": "wrong class given! Expected EasySyncBaseModel, given " + this._model.name + }; + + case 2: + entity = null; + + if (js_helper_1.Helper.isSet(constructParameters, "id")) { + entity = this._model.findById(constructParameters["id"], this._model.getRelations()); + } + + if (js_helper_1.Helper.isNull(entity)) { + entity = new this._model(); + } + + return _context.abrupt("return", entity); + + case 6: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this2 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return _get(_getPrototypeOf(ModifyEntitySite.prototype), "onConstruct", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var res, entity; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + res = _super.onConstruct.call(this, constructParameters); + _context2.next = 3; + return this.getEntityFromParameters(constructParameters); + + case 3: + entity = _context2.sent; + + if (entity !== null) { + this.setEntity(entity); + } + + return _context2.abrupt("return", res); + + case 6: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "setEntity", + value: function setEntity(entity) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var values; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + this._entity = entity; + _context3.next = 3; + return this._viewLoadedPromise; + + case 3: + _context3.next = 5; + return this.dehydrate(this._entity); + + case 5: + values = _context3.sent; + + if (!js_helper_1.Helper.isNotNull(values)) { + _context3.next = 9; + break; + } + + _context3.next = 9; + return this._form.setValues(values); + + case 9: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "hydrate", + value: function hydrate(values, entity) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var schemaDefinition; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + schemaDefinition = entity.constructor.getSchemaDefinition(); + Object.keys(schemaDefinition.columns).forEach(function (column) { + if (js_helper_1.Helper.isSet(values, column)) { + entity[column] = values[column]; + } + }); + return _context4.abrupt("return", entity); + + case 3: + case "end": + return _context4.stop(); + } + } + }, _callee4); + })); + } + }, { + key: "dehydrate", + value: function dehydrate(entity) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var values, schemaDefinition; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + values = {}; + schemaDefinition = entity.constructor.getSchemaDefinition(); + Object.keys(schemaDefinition.columns).forEach(function (column) { + if (js_helper_1.Helper.isSet(entity, column)) { + values[column] = entity[column]; + } + }); + return _context5.abrupt("return", values); + + case 4: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); + } + }, { + key: "validate", + value: function validate(values, form) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + return _context6.abrupt("return", true); + + case 1: + case "end": + return _context6.stop(); + } + } + }, _callee6); + })); + } + }, { + key: "saveListener", + value: function saveListener() { + this.finish(); + } + }, { + key: "save", + value: function save(values) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var entity; + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + _context7.next = 2; + return this.hydrate(values, this._entity); + + case 2: + entity = _context7.sent; + _context7.next = 5; + return entity.save(); + + case 5: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this3 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(ModifyEntitySite.prototype), "onViewLoaded", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee11() { + var _this4 = this; + + var res; + return regeneratorRuntime.wrap(function _callee11$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + res = _super.onViewLoaded.call(this); + this._form = new Form_1.Form(this.findBy(this._formSelector), function (values) { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + this.showLoadingSymbol(); + _context8.prev = 1; + _context8.next = 4; + return this.save(values); + + case 4: + this.saveListener(); + _context8.next = 11; + break; + + case 7: + _context8.prev = 7; + _context8.t0 = _context8["catch"](1); + console.error(_context8.t0); + + this._form.setErrors({ + "error": _context8.t0.message + }); + + case 11: + _context8.prev = 11; + this.removeLoadingSymbol(); + return _context8.finish(11); + + case 14: + case "end": + return _context8.stop(); + } + } + }, _callee8, this, [[1, 7, 11, 14]]); + })); + }); + + if (js_helper_1.Helper.isNotNull(window["CKEditor"])) { + Object.keys(this._ckEditorConfig).forEach(function (selector) { + _this4.findBy(selector, true).forEach(function (e) { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.t0 = this._form; + _context9.next = 3; + return CKEditor.create(e, this._ckEditorConfig[selector]); + + case 3: + _context9.t1 = _context9.sent; + + _context9.t0.addEditor.call(_context9.t0, _context9.t1); + + case 5: + case "end": + return _context9.stop(); + } + } + }, _callee9, this); + })); + }); + }); + } + + this._form.addValidator(function (values) { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + return regeneratorRuntime.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + _context10.next = 2; + return this.validate(values, this._form); + + case 2: + return _context10.abrupt("return", _context10.sent); + + case 3: + case "end": + return _context10.stop(); + } + } + }, _callee10, this); + })); + }); + + return _context11.abrupt("return", res); + + case 5: + case "end": + return _context11.stop(); + } + } + }, _callee11, this); + })); + } + }]); + + return ModifyEntitySite; +}(MenuSite_1.MenuSite); + +exports.ModifyEntitySite = ModifyEntitySite; + +/***/ }), +/* 532 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SetupEasySync1000000000500 = void 0; + +var typeorm_1 = __webpack_require__(47); + +var cordova_sites_database_1 = __webpack_require__(19); + +var SetupEasySync1000000000500 = /*#__PURE__*/function () { + function SetupEasySync1000000000500() { + _classCallCheck(this, SetupEasySync1000000000500); + } + + _createClass(SetupEasySync1000000000500, [{ + key: "up", + value: function up(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return queryRunner.dropTable("last_sync_dates", true); + + case 2: + _context.next = 4; + return this._addLastSyncDates(queryRunner); + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "_addLastSyncDates", + value: function _addLastSyncDates(queryRunner) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var lastSyncDatesTable; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + lastSyncDatesTable = new typeorm_1.Table({ + name: "last_sync_dates", + columns: [{ + name: "id", + type: "Integer", + isPrimary: true, + isGenerated: true, + generationStrategy: "increment" + }, { + name: "model", + type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, + isNullable: true + }, { + name: "lastSynced", + type: cordova_sites_database_1.BaseDatabase.TYPES.DATE, + isNullable: true + }, { + name: "where", + type: cordova_sites_database_1.BaseDatabase.TYPES.TEXT + }] + }); + _context2.next = 3; + return queryRunner.createTable(lastSyncDatesTable, true); + + case 3: + return _context2.abrupt("return", _context2.sent); + + case 4: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + } + }, { + key: "down", + value: function down(queryRunner) { + return undefined; + } + }]); + + return SetupEasySync1000000000500; +}(); + +exports.SetupEasySync1000000000500 = SetupEasySync1000000000500; + +/***/ }), +/* 533 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChangeUserSite = void 0; + +var MenuSite_1 = __webpack_require__(69); + +var UserSite_1 = __webpack_require__(126); + +var Helper_1 = __webpack_require__(7); + +var DataManager_1 = __webpack_require__(68); + +var client_1 = __webpack_require__(4); + +var ViewHelper_1 = __webpack_require__(27); + +var UserMenuAction_1 = __webpack_require__(149); + +var LoginSite_1 = __webpack_require__(148); + +var SelectUserDialog_1 = __webpack_require__(273); + +var view = __webpack_require__(534); + +var ChangeUserSite = /*#__PURE__*/function (_MenuSite_1$MenuSite) { + _inherits(ChangeUserSite, _MenuSite_1$MenuSite); + + var _super2 = _createSuper(ChangeUserSite); + + function ChangeUserSite(siteManager) { + var _this; + + _classCallCheck(this, ChangeUserSite); + + _this = _super2.call(this, siteManager, view); + + _this.addDelegate(new UserSite_1.UserSite(_assertThisInitialized(_this), ChangeUserSite.ACCESS)); + + return _this; + } + + _createClass(ChangeUserSite, [{ + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this2 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return _get(_getPrototypeOf(ChangeUserSite.prototype), "onConstruct", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var res, data; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + res = _super.onConstruct.call(this, constructParameters); + + if (!Helper_1.Helper.isSet(constructParameters, "id")) { + _context.next = 5; + break; + } + + _context.next = 4; + return DataManager_1.DataManager.load(ChangeUserSite.LOAD_USER_INFOS_URL + DataManager_1.DataManager.buildQuery({ + id: constructParameters["id"] + })); + + case 4: + data = _context.sent; + + case 5: + if (!data || data.success !== true) { + new client_1.Toast(data.message).show(); + this.finish(); + } + + this._roles = data.roles; + this._userData = data.userData; + return _context.abrupt("return", res); + + case 9: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this3 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(ChangeUserSite.prototype), "onViewLoaded", _this3); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var res; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + res = _super.onViewLoaded.call(this); + this.findBy("#username").innerText = this._userData.username; + this._hasRoleContainer = this.findBy("#has-role-container"); + this._availableRoleContainer = this.findBy("#available-role-container"); + this._hasRoleTemplate = this.findBy("#has-role-template"); + this._availableRoleTemplate = this.findBy("#available-role-template"); + + this._hasRoleTemplate.removeAttribute("id"); + + this._availableRoleTemplate.removeAttribute("id"); + + this._hasRoleTemplate.remove(); + + this._availableRoleTemplate.remove(); + + this.updateRoles(); + return _context2.abrupt("return", res); + + case 12: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "updateRoles", + value: function updateRoles() { + var _this4 = this; + + var userRoles = []; + var availableRoles = []; + + this._roles.forEach(function (role) { + if (_this4._userData.roleIds.indexOf(role.id) !== -1) { + userRoles.push(role); + } else { + availableRoles.push(role); + } + }); + + ViewHelper_1.ViewHelper.removeAllChildren(this._hasRoleContainer); + userRoles.forEach(function (role, i) { + var elem = _this4._hasRoleTemplate.cloneNode(true); + + elem.querySelector(".role-name").innerText = role.name; + elem.querySelector(".remove-role").addEventListener("click", function () { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var res; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + this.showLoadingSymbol(); + _context3.next = 3; + return DataManager_1.DataManager.send(ChangeUserSite.CHANGE_USER_ROLE_URL, { + id: this._userData.id, + roleId: role.id, + addRole: false + }); + + case 3: + res = _context3.sent; + + if (res.success) { + this._userData.roleIds.splice(this._userData.roleIds.indexOf(role.id), 1); + + this.updateRoles(); + } + + this.removeLoadingSymbol(); + + case 6: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + }); + + _this4._hasRoleContainer.appendChild(elem); + }); + ViewHelper_1.ViewHelper.removeAllChildren(this._availableRoleContainer); + availableRoles.forEach(function (role) { + var elem = _this4._availableRoleTemplate.cloneNode(true); + + elem.querySelector(".role-name").innerText = role.name; + elem.querySelector(".add-role").addEventListener("click", function () { + return __awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var res; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + this.showLoadingSymbol(); + _context4.next = 3; + return DataManager_1.DataManager.send(ChangeUserSite.CHANGE_USER_ROLE_URL, { + id: this._userData.id, + roleId: role.id, + addRole: true + }); + + case 3: + res = _context4.sent; + + if (res.success) { + this._userData.roleIds.push(role.id); + + this.updateRoles(); + } + + this.removeLoadingSymbol(); + + case 6: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + }); + + _this4._availableRoleContainer.appendChild(elem); + }); + } + }]); + + return ChangeUserSite; +}(MenuSite_1.MenuSite); + +exports.ChangeUserSite = ChangeUserSite; +ChangeUserSite.ACCESS = "admin"; +ChangeUserSite.LOAD_USER_INFOS_URL = "/user/userRoles"; +ChangeUserSite.CHANGE_USER_ROLE_URL = "/user/changeUserRole"; +ChangeUserSite.ADD_CHANGE_USER_ACTION = true; +client_1.App.addInitialization(function (app) { + if (ChangeUserSite.ADD_CHANGE_USER_ACTION) { + client_1.NavbarFragment.defaultActions.push(new UserMenuAction_1.UserMenuAction("change user", ChangeUserSite.ACCESS, function () { + return __awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var user; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return new SelectUserDialog_1.SelectUserDialog().show(); + + case 2: + user = _context5.sent; + _context5.next = 5; + return app.startSite(ChangeUserSite, { + "id": user["id"] + }); + + case 5: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); + })); + } + + app.addDeepLink("login", LoginSite_1.LoginSite); +}); + +/***/ }), +/* 534 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/changeUserSite.html"; + +/***/ }), +/* 535 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RegistrationSite = void 0; + +var client_1 = __webpack_require__(4); + +var view = __webpack_require__(536); + +var UserSite_1 = __webpack_require__(126); + +var StartUserSiteMenuAction_1 = __webpack_require__(205); + +var UserManager_1 = __webpack_require__(99); + +var User_1 = __webpack_require__(112); + +var RegistrationSite = /*#__PURE__*/function (_client_1$MenuSite) { + _inherits(RegistrationSite, _client_1$MenuSite); + + var _super2 = _createSuper(RegistrationSite); + + function RegistrationSite(siteManager) { + var _this; + + _classCallCheck(this, RegistrationSite); + + _this = _super2.call(this, siteManager, view); + + _this.addDelegate(new UserSite_1.UserSite(_assertThisInitialized(_this), RegistrationSite.ACCESS)); + + return _this; + } + + _createClass(RegistrationSite, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this2 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return _get(_getPrototypeOf(RegistrationSite.prototype), "onViewLoaded", _this2); + } + } + }); + + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this3 = this; + + var res, form; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + res = _super.onViewLoaded.call(this); + form = new client_1.Form(this.findBy("#registration-form"), function (data) { + return __awaiter(_this3, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var result; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return UserManager_1.UserManager.getInstance().register(data["email"], data["username"], data["password"]); + + case 2: + result = _context.sent; + + if (!(result instanceof User_1.User || result === true)) { + _context.next = 10; + break; + } + + _context.next = 6; + return new client_1.Toast("registration successful").show(); + + case 6: + _context.next = 8; + return this.finish(); + + case 8: + _context.next = 12; + break; + + case 10: + _context.next = 12; + return form.setErrors(result); + + case 12: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + }); + form.addValidator(function (data) { + if (data["password"] !== data["password2"]) { + return { + "password2": "the passwords do not match." + }; + } + + return true; + }); // let listener = () => form.clearErrors(); + // this.findBy("#login-form [name=email]").addEventListener("keydown", listener); + // this.findBy("#login-form [name=password]").addEventListener("keydown", listener); + + return _context2.abrupt("return", res); + + case 4: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }]); + + return RegistrationSite; +}(client_1.MenuSite); + +exports.RegistrationSite = RegistrationSite; +RegistrationSite.ACCESS = "loggedOut"; +RegistrationSite.ADD_REGISTRATION_ACTION = true; +client_1.App.addInitialization(function (app) { + if (RegistrationSite.ADD_REGISTRATION_ACTION) { + client_1.NavbarFragment.defaultActions.push(new StartUserSiteMenuAction_1.StartUserSiteMenuAction("registration", RegistrationSite.ACCESS, RegistrationSite)); + } + + app.addDeepLink("registration", RegistrationSite); +}); + +/***/ }), +/* 536 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/registrationSite.html"; + +/***/ }), +/* 537 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UserSyncModel = void 0; + +var AccessEasySyncModel_1 = __webpack_require__(278); + +var User_1 = __webpack_require__(112); + +var UserSyncModel = /*#__PURE__*/function (_AccessEasySyncModel_) { + _inherits(UserSyncModel, _AccessEasySyncModel_); + + var _super = _createSuper(UserSyncModel); + + function UserSyncModel() { + _classCallCheck(this, UserSyncModel); + + return _super.apply(this, arguments); + } + + _createClass(UserSyncModel, null, [{ + key: "getRelationDefinitions", + value: function getRelationDefinitions() { + var relations = _get(_getPrototypeOf(UserSyncModel), "getRelationDefinitions", this).call(this); + + relations["user"] = { + target: User_1.User.getSchemaName(), + type: "many-to-one", + // joinColumn: { + // name: "userId" + // }, + cascade: false, + nullable: !this.NEED_USER + }; + return relations; + } + }]); + + return UserSyncModel; +}(AccessEasySyncModel_1.AccessEasySyncModel); + +exports.UserSyncModel = UserSyncModel; +UserSyncModel.NEED_USER = false; + +/***/ }), +/* 538 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UserSyncPartialModel = void 0; + +var shared_1 = __webpack_require__(127); + +var User_1 = __webpack_require__(112); + +var UserSyncPartialModel = /*#__PURE__*/function (_shared_1$EasySyncPar) { + _inherits(UserSyncPartialModel, _shared_1$EasySyncPar); + + var _super = _createSuper(UserSyncPartialModel); + + function UserSyncPartialModel() { + _classCallCheck(this, UserSyncPartialModel); + + return _super.apply(this, arguments); + } + + _createClass(UserSyncPartialModel, null, [{ + key: "getRelationDefinitions", + value: function getRelationDefinitions() { + var relations = _get(_getPrototypeOf(UserSyncPartialModel), "getRelationDefinitions", this).call(this); + + relations["user"] = { + target: User_1.User.getSchemaName(), + type: "many-to-one", + // joinColumn: { + // name: "userId" + // }, + cascade: false, + nullable: !this.NEED_USER + }; + return relations; + } + }]); + + return UserSyncPartialModel; +}(shared_1.EasySyncPartialModel); + +exports.UserSyncPartialModel = UserSyncPartialModel; +UserSyncPartialModel.NEED_USER = false; + +/***/ }), +/* 539 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ("img/settings.png"); + +/***/ }), +/* 540 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/menu.html"; + +/***/ }), +/* 541 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/level.html"; + +/***/ }), +/* 542 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ("img/single_coin_fall_on_concrete_.mp3"); + +/***/ }), +/* 543 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/end.html"; + +/***/ }), +/* 544 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/settingsSite.html"; + +/***/ }), +/* 545 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/tutorialSite.html"; + +/***/ }), +/* 546 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/settings.html"; + +/***/ }), +/* 547 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/credits.html"; + +/***/ }), +/* 548 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/privacyPolicy.html"; + +/***/ }), +/* 549 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/impressum.html"; + +/***/ }), +/* 550 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__.p + "html/contactSite.html"; + +/***/ }), +/* 551 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "index.css"); + +/***/ }), +/* 552 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXTERNAL MODULE: ./src/client/translations/de.json +var de = __webpack_require__(280); + +// EXTERNAL MODULE: ./src/client/translations/en.json +var en = __webpack_require__(281); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client.js +var client = __webpack_require__(4); + +// EXTERNAL MODULE: ./node_modules/cordova-sites-user-management/dist/client/js/translationInit.js +var translationInit = __webpack_require__(269); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/translationInit.js +var js_translationInit = __webpack_require__(268); + +// EXTERNAL MODULE: ./node_modules/cordova-sites-user-management/dist/client.js +var dist_client = __webpack_require__(133); + +// EXTERNAL MODULE: ./node_modules/cordova-sites-database/dist/cordova-sites-database.js +var cordova_sites_database = __webpack_require__(19); + +// EXTERNAL MODULE: ./node_modules/cordova-sites-user-management/dist/shared/migrations/DeleteUserManagement.js +var DeleteUserManagement = __webpack_require__(211); + +// EXTERNAL MODULE: ./node_modules/cordova-sites-user-management/dist/shared/migrations/SetupUserManagement.js +var SetupUserManagement = __webpack_require__(212); + +// EXTERNAL MODULE: ./node_modules/js-helper/dist/shared.js +var shared = __webpack_require__(22); + +// EXTERNAL MODULE: ./node_modules/cordova-sites-user-management/dist/shared.js +var dist_shared = __webpack_require__(287); + +// CONCATENATED MODULE: ./src/shared/model/LevelData.ts +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + +var LevelData_LevelData = /*#__PURE__*/function (_AccessEasySyncModel) { + _inherits(LevelData, _AccessEasySyncModel); + + var _super = _createSuper(LevelData); + + function LevelData() { + _classCallCheck(this, LevelData); + + return _super.apply(this, arguments); + } + + _createClass(LevelData, null, [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = _get(_getPrototypeOf(LevelData), "getColumnDefinitions", this).call(this); + + columns["words"] = cordova_sites_database["BaseDatabase"].TYPES.STRING; + columns["positions"] = cordova_sites_database["BaseDatabase"].TYPES.STRING; + columns["renderer"] = cordova_sites_database["BaseDatabase"].TYPES.INTEGER; + columns["lang"] = cordova_sites_database["BaseDatabase"].TYPES.INTEGER; + columns["difficulty"] = cordova_sites_database["BaseDatabase"].TYPES.INTEGER; + return columns; + } + }, { + key: "getNextLevelData", + value: function getNextLevelData(renderer) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + debugger; + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }]); + + return LevelData; +}(dist_shared["AccessEasySyncModel"]); +cordova_sites_database["BaseDatabase"].addModel(LevelData_LevelData); +// CONCATENATED MODULE: ./src/shared/model/migration/shared/Setup.ts +function Setup_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Setup_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Setup_createClass(Constructor, protoProps, staticProps) { if (protoProps) Setup_defineProperties(Constructor.prototype, protoProps); if (staticProps) Setup_defineProperties(Constructor, staticProps); return Constructor; } + +var Setup_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + +var Setup_Setup1000000002000 = /*#__PURE__*/function () { + function Setup1000000002000() { + Setup_classCallCheck(this, Setup1000000002000); + } + + Setup_createClass(Setup1000000002000, [{ + key: "up", + value: function up(queryRunner) { + return Setup_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return shared["MigrationHelper"].addTableFromModelClass(LevelData_LevelData, queryRunner); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }, { + key: "down", + value: function down(queryRunner) { + return undefined; + } + }]); + + return Setup1000000002000; +}(); +// EXTERNAL MODULE: ./node_modules/cordova-sites-easy-sync/dist/client.js +var cordova_sites_easy_sync_dist_client = __webpack_require__(132); + +// EXTERNAL MODULE: ./node_modules/js-helper/dist/shared/Helper.js +var Helper = __webpack_require__(7); + +// CONCATENATED MODULE: ./src/client/js/wordrotator/Segment/TemplateContainer.js +function TemplateContainer_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TemplateContainer_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function TemplateContainer_createClass(Constructor, protoProps, staticProps) { if (protoProps) TemplateContainer_defineProperties(Constructor.prototype, protoProps); if (staticProps) TemplateContainer_defineProperties(Constructor, staticProps); return Constructor; } + + +var TemplateContainer = /*#__PURE__*/function () { + function TemplateContainer(leafTemplate, parentTemplate, rowTemplate, triangleTemplate, columnTemplate) { + TemplateContainer_classCallCheck(this, TemplateContainer); + + this.leafTemplate = leafTemplate; + this.parentTemplate = parentTemplate; + this.rowTemplate = rowTemplate; + this.triangleTemplate = triangleTemplate; + this.columnTemplate = columnTemplate; + } + + TemplateContainer_createClass(TemplateContainer, [{ + key: "copyLeafTemplate", + value: function copyLeafTemplate() { + return this.leafTemplate.cloneNode(true); + } + }, { + key: "copyParentTemplate", + value: function copyParentTemplate() { + return this.parentTemplate.cloneNode(true); + } + }, { + key: "copyRowTemplate", + value: function copyRowTemplate() { + return this.rowTemplate.cloneNode(true); + } + }, { + key: "copyTriangleTemplate", + value: function copyTriangleTemplate() { + return this.triangleTemplate.cloneNode(true); + } + }, { + key: "copyColumnTemplate", + value: function copyColumnTemplate() { + return this.columnTemplate.cloneNode(true); + } + }]); + + return TemplateContainer; +}(); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Segment/Segment.js +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function Segment_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Segment_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Segment_createClass(Constructor, protoProps, staticProps) { if (protoProps) Segment_defineProperties(Constructor.prototype, protoProps); if (staticProps) Segment_defineProperties(Constructor, staticProps); return Constructor; } + +var Segment = /*#__PURE__*/function () { + function Segment(element) { + Segment_classCallCheck(this, Segment); + + this.rotation = 0; + this.element = element; + this.parent = null; + } + + Segment_createClass(Segment, [{ + key: "getCurrentRotations", + value: function getCurrentRotations(rotations) { + return rotations; + } + }, { + key: "sameAs", + value: function sameAs(otherSegment) { + return false; + } + }, { + key: "setParent", + value: function setParent(parent) { + this.parent = parent; + } + }, { + key: "getLevel", + value: function getLevel() { + if (this.parent !== null) { + return this.parent.getLevel(); + } + } + }, { + key: "canRotate", + value: function canRotate() { + return false; + } + }, { + key: "isSolved", + value: function isSolved() { + return this.rotation === 0; + } + }, { + key: "rotate", + value: function () { + var _rotate = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", Promise.resolve()); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + + function rotate() { + return _rotate.apply(this, arguments); + } + + return rotate; + }() + }, { + key: "_updateElement", + value: function _updateElement() {} + }, { + key: "applyRotations", + value: function applyRotations(rotations) { + return rotations; + } + }, { + key: "applyLocks", + value: function applyLocks(locks) { + return locks; + } + }, { + key: "getCurrentLocked", + value: function getCurrentLocked(lockedArray) { + return lockedArray; + } + }, { + key: "getElement", + value: function getElement() { + return this.element; + } + }]); + + return Segment; +}(); +// EXTERNAL MODULE: ./node_modules/js-helper/dist/client/ViewHelper.js +var ViewHelper = __webpack_require__(27); + +// CONCATENATED MODULE: ./src/client/js/wordrotator/Segment/LeafSegment.js +function LeafSegment_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { LeafSegment_typeof = function _typeof(obj) { return typeof obj; }; } else { LeafSegment_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return LeafSegment_typeof(obj); } + +function LeafSegment_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LeafSegment_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LeafSegment_createClass(Constructor, protoProps, staticProps) { if (protoProps) LeafSegment_defineProperties(Constructor.prototype, protoProps); if (staticProps) LeafSegment_defineProperties(Constructor, staticProps); return Constructor; } + +function LeafSegment_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) LeafSegment_setPrototypeOf(subClass, superClass); } + +function LeafSegment_setPrototypeOf(o, p) { LeafSegment_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return LeafSegment_setPrototypeOf(o, p); } + +function LeafSegment_createSuper(Derived) { var hasNativeReflectConstruct = LeafSegment_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = LeafSegment_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = LeafSegment_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return LeafSegment_possibleConstructorReturn(this, result); }; } + +function LeafSegment_possibleConstructorReturn(self, call) { if (call && (LeafSegment_typeof(call) === "object" || typeof call === "function")) { return call; } return LeafSegment_assertThisInitialized(self); } + +function LeafSegment_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function LeafSegment_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function LeafSegment_getPrototypeOf(o) { LeafSegment_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return LeafSegment_getPrototypeOf(o); } + + + + +var LeafSegment_LeafSegment = /*#__PURE__*/function (_Segment) { + LeafSegment_inherits(LeafSegment, _Segment); + + var _super = LeafSegment_createSuper(LeafSegment); + + function LeafSegment(element, leaf) { + var _this; + + LeafSegment_classCallCheck(this, LeafSegment); + + _this = _super.call(this, element); + _this.leaf = 'A'; + + if (Helper["Helper"].isNotNull(leaf)) { + _this.setLeaf(leaf); + } + + return _this; + } + + LeafSegment_createClass(LeafSegment, [{ + key: "sameAs", + value: function sameAs(otherSegment) { + // debugger; + return otherSegment instanceof LeafSegment && otherSegment.leaf === this.leaf; + } + }, { + key: "setLeaf", + value: function setLeaf(leaf) { + this.leaf = leaf; + } + }, { + key: "_updateElement", + value: function _updateElement() { + ViewHelper["ViewHelper"].removeAllChildren(this.element.querySelector(".leaf-element")).appendChild(document.createTextNode(this.leaf)); + } + }]); + + return LeafSegment; +}(Segment); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Segment/ParentSegment.js +function ParentSegment_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ParentSegment_typeof = function _typeof(obj) { return typeof obj; }; } else { ParentSegment_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ParentSegment_typeof(obj); } + +function ParentSegment_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function ParentSegment_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { ParentSegment_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { ParentSegment_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function ParentSegment_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ParentSegment_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ParentSegment_createClass(Constructor, protoProps, staticProps) { if (protoProps) ParentSegment_defineProperties(Constructor.prototype, protoProps); if (staticProps) ParentSegment_defineProperties(Constructor, staticProps); return Constructor; } + +function ParentSegment_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ParentSegment_setPrototypeOf(subClass, superClass); } + +function ParentSegment_setPrototypeOf(o, p) { ParentSegment_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ParentSegment_setPrototypeOf(o, p); } + +function ParentSegment_createSuper(Derived) { var hasNativeReflectConstruct = ParentSegment_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = ParentSegment_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = ParentSegment_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return ParentSegment_possibleConstructorReturn(this, result); }; } + +function ParentSegment_possibleConstructorReturn(self, call) { if (call && (ParentSegment_typeof(call) === "object" || typeof call === "function")) { return call; } return ParentSegment_assertThisInitialized(self); } + +function ParentSegment_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function ParentSegment_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function ParentSegment_getPrototypeOf(o) { ParentSegment_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ParentSegment_getPrototypeOf(o); } + + + + +var ParentSegment_ParentSegment = /*#__PURE__*/function (_Segment) { + ParentSegment_inherits(ParentSegment, _Segment); + + var _super = ParentSegment_createSuper(ParentSegment); + + function ParentSegment(element) { + var _this; + + ParentSegment_classCallCheck(this, ParentSegment); + + _this = _super.call(this, element); + _this.children = []; + _this.class = "rotate-0"; + _this.rotatable = true; + _this.userRotationDelta = 100; + _this.lastUserRotation = 0; + + _this.touchendListener = function (e) { + var now = new Date().getTime(); + var target = null; + var position = null; + + if (e.changedTouches.length >= 1) { + target = document.elementFromPoint(e.changedTouches[0].pageX, e.changedTouches[0].pageY); + position = { + x: e.changedTouches[0].pageX, + y: e.changedTouches[0].pageY + }; + } + + if (target != null && e.targetTouches.length === 0 && _this.element.contains(ParentSegment.mouseDownTarget) && _this.element.contains(target)) { + e.stopPropagation(); + e.preventDefault(); + + if (_this.lastUserRotation + _this.userRotationDelta > now) { + return; + } + + _this.getLevel().segmentClicked(ParentSegment_assertThisInitialized(_this)); + + _this.rotate(ParentSegment.mouseDownTarget, target, ParentSegment.clickPosition, position); // console.log("touchendListener stopped event", e); + + + _this.lastUserRotation = new Date().getTime(); + } + }; + + _this.mouseupListener = function (e) { + var now = new Date().getTime(); // console.log("mouseup", ParentSegment.mouseDownTarget); + + if (ParentSegment.mouseDownTarget !== null && _this.element.contains(ParentSegment.mouseDownTarget) && _this.element.contains(e.target)) { + var position = { + x: e.pageX, + y: e.pageY + }; + e.stopPropagation(); + e.preventDefault(); + + if (_this.lastUserRotation + _this.userRotationDelta > now) { + return; + } + + _this.getLevel().segmentClicked(ParentSegment_assertThisInitialized(_this)); + + _this.rotate(ParentSegment.mouseDownTarget, e.target, ParentSegment.clickPosition, position); // console.log("mouseupListener stopped event", e); + + + _this.lastUserRotation = new Date().getTime(); + } + }; + + return _this; + } + + ParentSegment_createClass(ParentSegment, [{ + key: "setIsRotatable", + value: function setIsRotatable(rotatable) { + this.rotatable = rotatable; + + this._updateElement(); + } + }, { + key: "canRotate", + value: function canRotate() { + return this.rotatable && !this.getLevel().getHasWon(); + } + }, { + key: "rotate", + value: function () { + var _rotate = ParentSegment_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(firstElem, secondElem, firstPosition, secondPosition) { + var _this2 = this; + + var timeout, clickTolerance, rotationDirection, firstIndex, secondIndex, rotationIndexes, i, currentRotation, delayPromise; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + timeout = 250; + clickTolerance = 5; + rotationDirection = 1; + + if (Helper["Helper"].isNotNull(secondElem) && Helper["Helper"].isNotNull(firstElem) && (Helper["Helper"].isNull(firstPosition) || Helper["Helper"].isNull(secondPosition) || Math.abs(firstPosition.x - secondPosition.x) > clickTolerance || Math.abs(firstPosition.y - secondPosition.y) > clickTolerance)) { + firstIndex = -1; + secondIndex = -1; + rotationIndexes = [0, 1, 3, 2]; + + for (i = 0; i < this.children.length; i++) { + if (this.children[rotationIndexes[i]].element === firstElem || this.children[rotationIndexes[i]].element.contains(firstElem)) { + firstIndex = (i + this.rotation / 90) % 4; + } + + if (this.children[rotationIndexes[i]].element === secondElem || this.children[rotationIndexes[i]].element.contains(secondElem)) { + secondIndex = (i + this.rotation / 90) % 4; + } + } + + if (firstIndex >= 0 && secondIndex >= 0) { + if (firstIndex === 2 && (secondIndex === 0 || secondIndex === 1) || firstIndex === 1 && (secondIndex === 0 || secondIndex === 3) || firstIndex === 0 && secondIndex === 3 || firstIndex === 3 && secondIndex === 2) { + rotationDirection = -1; + } + } + } + + if (!this.canRotate()) { + _context.next = 14; + break; + } + + this.rotation += 360 + 90 * rotationDirection; + this.rotation %= 360; + currentRotation = this.rotation; + + this._updateRotationClass(); + + this.element.classList.add("rotating"); + + if (rotationDirection === -1) { + this.element.classList.add("reverse"); + } + + delayPromise = new Promise(function (resolve) { + setTimeout(resolve, timeout); + }).then(function () { + if (_this2.rotation === currentRotation) { + _this2.element.classList.remove("rotating"); + + _this2.element.classList.remove("reverse"); + } + }); + this.getLevel().checkHasWon(delayPromise); + return _context.abrupt("return", delayPromise); + + case 14: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + function rotate(_x, _x2, _x3, _x4) { + return _rotate.apply(this, arguments); + } + + return rotate; + }() + }, { + key: "sameAs", + value: function sameAs(otherSegment) { + if (!(otherSegment instanceof ParentSegment) || otherSegment.children.length !== this.children.length) { + return false; + } + + for (var i = 0; i < this.children.length; i++) { + if (!this.children[i].sameAs(otherSegment.children[i])) { + return false; + } + } + + return true; + } + }, { + key: "applyRotations", + value: function applyRotations(rotations) { + this.rotation = rotations[0]; + + if (isNaN(this.rotation)) { + this.rotation = 0; + } + + rotations.splice(0, 1); + + for (var i = 0, n = this.children.length; i < n; i++) { + rotations = this.children[i].applyRotations(rotations); + } + + return rotations; + } + }, { + key: "applyLocks", + value: function applyLocks(locks) { + this.rotatable = locks[0] !== false; + locks.splice(0, 1); + + for (var i = 0, n = this.children.length; i < n; i++) { + locks = this.children[i].applyLocks(locks); + } + + return locks; + } + }, { + key: "getCurrentRotations", + value: function getCurrentRotations(rotations) { + rotations.push(this.rotation); + + for (var i = 0, n = this.children.length; i < n; i++) { + rotations = this.children[i].getCurrentRotations(rotations); + } + + return rotations; + } + }, { + key: "getCurrentLocked", + value: function getCurrentLocked(locked) { + locked.push(this.rotatable); + + for (var i = 0, n = this.children.length; i < n; i++) { + locked = this.children[i].getCurrentLocked(locked); + } + + return locked; + } + }, { + key: "isSolved", + value: function isSolved(checkChildren) { + checkChildren = Helper["Helper"].nonNull(checkChildren, true); + + if (checkChildren) { + for (var i = 0, n = this.children.length; i < n; i++) { + if (!this.children[i].isSolved()) { + return false; + } + } + } + + return this.rotation === 0 || this.children[0].sameAs(this.children[3]) && this.children[1].sameAs(this.children[2]) && (this.rotation === 180 || this.children[0].sameAs(this.children[1])); + } + }, { + key: "setChildren", + value: function setChildren(children) { + this.children = []; + + for (var i = 0, n = children.length; i < n; i++) { + this.addChild(children[i]); + } + } + }, { + key: "addChild", + value: function addChild(child) { + this.children.push(child); + child.setParent(this); + + this._updateElement(); + } + }, { + key: "_updateRotationClass", + value: function _updateRotationClass() { + // this.style.transform = "rotate("+this.rotation+"deg)"; + this.element.classList.remove(this.class); + this.class = "rotate-" + this.rotation; + + if (this.class === "rotate-0") { + this.class = "rotate-360"; + } + + this.element.classList.add(this.class); + } + }, { + key: "_updateElement", + value: function _updateElement() { + var layer = this._getLayer(); + + if (layer >= 2) { + this.element.classList.add("layer-" + layer); + } + + if (!this.rotatable) { + this.element.classList.add("locked"); + } + + var childContainer = this.element.querySelector(".child-container"); + ViewHelper["ViewHelper"].removeAllChildren(childContainer); + + this._updateRotationClass(); + + this.element.removeEventListener("mouseup", this.mouseupListener); + this.element.removeEventListener("touchend", this.touchendListener); + this.element.addEventListener("mouseup", this.mouseupListener); + this.element.addEventListener("touchend", this.touchendListener); + + for (var i = 0, n = this.children.length; i < n; i++) { + this.children[i]._updateElement(); + + childContainer.appendChild(this.children[i].getElement()); + + if (i % 2 === 1 && this.children.length - 1 !== i) { + childContainer.appendChild(document.createElement("br")); + } + } + } + }, { + key: "_getLayer", + value: function _getLayer() { + if (this.children.length >= 1 && this.children[0] && this.children[0] instanceof ParentSegment) { + return this.children[0]._getLayer() + 1; + } + + return 1; + } + }], [{ + key: "initListener", + value: function initListener() { + window.addEventListener("mousedown", function (e) { + // console.log("mousedown"); + ParentSegment.mouseDownTarget = e.target; + ParentSegment.clickPosition = { + x: e.pageX, + y: e.pageY + }; + }); + window.addEventListener("mouseup", function (e) { + ParentSegment.mouseDownTarget = null; + ParentSegment.clickPosition = {}; + }); + window.addEventListener("touchstart", function (e) { + if (e.targetTouches.length === 1) { + ParentSegment.mouseDownTarget = e.targetTouches[0].target; + ParentSegment.clickPosition = { + x: e.targetTouches[0].pageX, + y: e.targetTouches[0].pageY + }; + } + }); + window.addEventListener("touchend", function (e) { + ParentSegment.mouseDownTarget = null; + ParentSegment.clickPosition = {}; + }); + } + }]); + + return ParentSegment; +}(Segment); +ParentSegment_ParentSegment.initListener(); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/Level.js +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function Level_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function Level_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { Level_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { Level_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function Level_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Level_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Level_createClass(Constructor, protoProps, staticProps) { if (protoProps) Level_defineProperties(Constructor.prototype, protoProps); if (staticProps) Level_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var Level_Level = /*#__PURE__*/function () { + function Level(templateContainer) { + var _this = this; + + Level_classCallCheck(this, Level); + + this.rootSegment = null; + this.words = []; + this.startRotations = []; + this.templateContainer = templateContainer; + this.levelData = null; + this.hasWon = false; + this.id = null; + this.saveAsCurrentAfterCheckWon = true; + this.wonResolver = null; + this.giveUpResolver = null; + this._shakeLeafs = true; + this._shakeLeafsTimeout = null; + this._lastRotation = 0; + this.wonPromise = new Promise(function (resolve, reject) { + _this.wonResolver = resolve; + _this.giveUpResolver = reject; + }); + + this.segmentClickedListener = function () {// console.log("clicked") + }; + } + + Level_createClass(Level, [{ + key: "getLevelData", + value: function getLevelData() { + return this.levelData; + } + }, { + key: "setLevelData", + value: function setLevelData(levelData) { + this.levelData = levelData; + } + }, { + key: "saveAsCurrentLevel", + value: function () { + var _saveAsCurrentLevel = Level_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var rotations, locked; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + rotations = this.getCurrentRotations(); + locked = this.getCurrentLocked(); + _context.next = 4; + return client["NativeStoragePromise"].setItem("currentLevel", JSON.stringify({ + "id": this.id, + "rotations": rotations, + "locks": locked + })); + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + function saveAsCurrentLevel() { + return _saveAsCurrentLevel.apply(this, arguments); + } + + return saveAsCurrentLevel; + }() + }, { + key: "getCurrentLocked", + value: function getCurrentLocked() { + if (this.rootSegment !== null) { + return this.rootSegment.getCurrentLocked([]); + } + + return []; + } + }, { + key: "getCurrentRotations", + value: function getCurrentRotations() { + if (this.rootSegment !== null) { + return this.rootSegment.getCurrentRotations([]); + } + + return []; + } + }, { + key: "setLocks", + value: function setLocks(locks) { + if (this.rootSegment !== null) { + this.rootSegment.applyLocks(locks); + } + } + }, { + key: "setId", + value: function setId(id) { + this.id = id; + } + }, { + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "getLevel", + value: function getLevel() { + return this; + } + }, { + key: "setRootSegment", + value: function setRootSegment(rootSegment) { + this.rootSegment = rootSegment; + this.rootSegment.setParent(this); + + if (this.startRotations) { + this.applyRotations(); + } + } + }, { + key: "setWords", + value: function setWords(words) { + this.words = []; + + for (var i = 0, n = words.length; i < n; i++) { + this.words.push(words[i].replace(/ß/g, "ẞ").toUpperCase()); + } + } + }, { + key: "setStartRotations", + value: function setStartRotations(rotations) { + this.startRotations = rotations; + } + }, { + key: "applyRotations", + value: function applyRotations(rotations) { + if (this.rootSegment) { + rotations = Helper["Helper"].nonNull(rotations, this.startRotations); + this.rootSegment.applyRotations(rotations); + } + } + }, { + key: "getHasWon", + value: function getHasWon() { + return this.hasWon; + } + }, { + key: "checkHasWon", + value: function checkHasWon(delayPromise) { + if (this.rootSegment.isSolved()) { + this.hasWon = true; + var self = this; + Promise.resolve(delayPromise).then(function () { + self.wonResolver(true); + }); + return true; + } + + if (this.saveAsCurrentAfterCheckWon) { + this.saveAsCurrentLevel(); + } + + return false; + } + }, { + key: "setSaveAsCurrentAfterCheckWon", + value: function setSaveAsCurrentAfterCheckWon(shouldSave) { + this.saveAsCurrentAfterCheckWon = shouldSave === true; + } + }, { + key: "getWonPromise", + value: function getWonPromise() { + return this.wonPromise; + } + }, { + key: "getRootSegment", + value: function getRootSegment() { + return this.rootSegment; + } + }, { + key: "createSegments", + value: function createSegments() {} + }, { + key: "getRotatableSegments", + value: function getRotatableSegments() { + return Level._getRotatableSegmentsFrom(this.rootSegment); + } + }, { + key: "segmentClicked", + value: function segmentClicked(segment) { + var _this2 = this; + + if (this.segmentClickedListener) { + this.segmentClickedListener(segment); + } + + this._lastRotation = new Date().getTime(); + clearTimeout(this._shakeLeafsTimeout); + + if (this._shakeLeafs) { + this._shakeLeafsTimeout = setTimeout(function () { + _this2.shakeLeafs(); + }, shared["Random"].getIntRandom(5000) + 25000); + } + } + }, { + key: "setSegmentClickedListener", + value: function setSegmentClickedListener(listener) { + this.segmentClickedListener = listener; + } + }, { + key: "getLeafSegments", + value: function getLeafSegments() { + return Level._getLeafSegmentsFrom(this.rootSegment); + } + }, { + key: "shakeLeafs", + value: function shakeLeafs() { + var _this3 = this; + + clearTimeout(this._shakeLeafsTimeout); + + if (this._shakeLeafs && !this.hasWon) { + var leafs = this.getLeafSegments(); + + if (leafs.length > 0) { + var index = shared["Random"].getIntRandom(leafs.length - 1); + var leaf = leafs[index]; + leaf.getElement().classList.add("shake"); + setTimeout(function () { + leaf.getElement().classList.remove("shake"); + }, shared["Random"].getIntRandom(350) + 650); + } + + this._shakeLeafsTimeout = setTimeout(function () { + _this3.shakeLeafs(); + }, shared["Random"].getIntRandom(2000) + 5000); + } + } + }], [{ + key: "_getRotatableSegmentsFrom", + value: function _getRotatableSegmentsFrom(segment) { + var rotatable = []; + + if (segment.canRotate()) { + rotatable.push(segment); + } + + if (segment instanceof ParentSegment_ParentSegment) { + for (var i = 0; i < segment.children.length; i++) { + rotatable.push.apply(rotatable, Level._getRotatableSegmentsFrom(segment.children[i])); + } + } + + return rotatable; + } + }, { + key: "_createLeafsForWord", + value: function _createLeafsForWord(word, leafSegmentTemplate) { + var leafSegments = []; + + for (var i = 0, n = word.length; i < n; i++) { + leafSegments.push(new LeafSegment_LeafSegment(leafSegmentTemplate.cloneNode(true), word.charAt(i))); + } + + return leafSegments; + } + }, { + key: "_getLeafSegmentsFrom", + value: function _getLeafSegmentsFrom(segment) { + var leafs = []; + + if (segment instanceof LeafSegment_LeafSegment) { + leafs.push(segment); + } else if (segment instanceof ParentSegment_ParentSegment) { + for (var i = 0; i < segment.children.length; i++) { + leafs.push.apply(leafs, _toConsumableArray(Level._getLeafSegmentsFrom(segment.children[i]))); + } + } + + return leafs; + } + }]); + + return Level; +}(); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Segment/RowSegment.js +function RowSegment_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { RowSegment_typeof = function _typeof(obj) { return typeof obj; }; } else { RowSegment_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return RowSegment_typeof(obj); } + +function RowSegment_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function RowSegment_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function RowSegment_createClass(Constructor, protoProps, staticProps) { if (protoProps) RowSegment_defineProperties(Constructor.prototype, protoProps); if (staticProps) RowSegment_defineProperties(Constructor, staticProps); return Constructor; } + +function RowSegment_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) RowSegment_setPrototypeOf(subClass, superClass); } + +function RowSegment_setPrototypeOf(o, p) { RowSegment_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return RowSegment_setPrototypeOf(o, p); } + +function RowSegment_createSuper(Derived) { var hasNativeReflectConstruct = RowSegment_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = RowSegment_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = RowSegment_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return RowSegment_possibleConstructorReturn(this, result); }; } + +function RowSegment_possibleConstructorReturn(self, call) { if (call && (RowSegment_typeof(call) === "object" || typeof call === "function")) { return call; } return RowSegment_assertThisInitialized(self); } + +function RowSegment_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function RowSegment_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function RowSegment_getPrototypeOf(o) { RowSegment_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return RowSegment_getPrototypeOf(o); } + + + +var RowSegment_RowSegment = /*#__PURE__*/function (_ParentSegment) { + RowSegment_inherits(RowSegment, _ParentSegment); + + var _super = RowSegment_createSuper(RowSegment); + + function RowSegment(element) { + var _this; + + RowSegment_classCallCheck(this, RowSegment); + + _this = _super.call(this, element); + _this.rotatable = false; + return _this; + } + + RowSegment_createClass(RowSegment, [{ + key: "applyRotations", + value: function applyRotations(rotations) { + for (var i = 0, n = this.children.length; i < n; i++) { + rotations = this.children[i].applyRotations(rotations); + } + + return rotations; + } + }, { + key: "getCurrentRotations", + value: function getCurrentRotations(rotations) { + for (var i = 0, n = this.children.length; i < n; i++) { + rotations = this.children[i].getCurrentRotations(rotations); + } + + return rotations; + } + }, { + key: "getCurrentLocked", + value: function getCurrentLocked(locked) { + for (var i = 0, n = this.children.length; i < n; i++) { + locked = this.children[i].getCurrentLocked(locked); + } + + return locked; + } + }, { + key: "applyLocks", + value: function applyLocks(locks) { + for (var i = 0, n = this.children.length; i < n; i++) { + locks = this.children[i].applyLocks(locks); + } + + return locks; + } + }, { + key: "_updateElement", + value: function _updateElement() { + var childContainer = this.element.querySelector(".child-container"); + ViewHelper["ViewHelper"].removeAllChildren(childContainer); + + this._updateRotationClass(); + + var self = this; + + this.element.onclick = function (e) { + self.rotate(); + e.stopPropagation(); + }; + + for (var i = 0, n = this.children.length; i < n; i++) { + this.children[i]._updateElement(); + + childContainer.appendChild(this.children[i].getElement()); + } + } + }]); + + return RowSegment; +}(ParentSegment_ParentSegment); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/RowLevel.js +function RowLevel_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { RowLevel_typeof = function _typeof(obj) { return typeof obj; }; } else { RowLevel_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return RowLevel_typeof(obj); } + +function RowLevel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function RowLevel_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function RowLevel_createClass(Constructor, protoProps, staticProps) { if (protoProps) RowLevel_defineProperties(Constructor.prototype, protoProps); if (staticProps) RowLevel_defineProperties(Constructor, staticProps); return Constructor; } + +function RowLevel_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) RowLevel_setPrototypeOf(subClass, superClass); } + +function RowLevel_setPrototypeOf(o, p) { RowLevel_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return RowLevel_setPrototypeOf(o, p); } + +function RowLevel_createSuper(Derived) { var hasNativeReflectConstruct = RowLevel_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = RowLevel_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = RowLevel_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return RowLevel_possibleConstructorReturn(this, result); }; } + +function RowLevel_possibleConstructorReturn(self, call) { if (call && (RowLevel_typeof(call) === "object" || typeof call === "function")) { return call; } return RowLevel_assertThisInitialized(self); } + +function RowLevel_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function RowLevel_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function RowLevel_getPrototypeOf(o) { RowLevel_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return RowLevel_getPrototypeOf(o); } + + + + +var RowLevel_RowLevel = /*#__PURE__*/function (_Level) { + RowLevel_inherits(RowLevel, _Level); + + var _super = RowLevel_createSuper(RowLevel); + + function RowLevel(container, wordLength) { + var _this; + + RowLevel_classCallCheck(this, RowLevel); + + _this = _super.call(this, container); + _this.wordLength = wordLength; + return _this; + } + + RowLevel_createClass(RowLevel, [{ + key: "createSegments", + value: function createSegments() { + if (this.words.length >= 2 && this.words[0].length >= this.wordLength && this.words[1].length >= this.wordLength) { + var leafsWordOne = Level_Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + + var leafsWordTwo = Level_Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate()); + + var rootSegment = new RowSegment_RowSegment(this.templateContainer.copyRowTemplate()); + + for (var i = 0, n = this.wordLength / 2; i < n; i++) { + var parent = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parent.addChild(leafsWordOne[2 * i]); + parent.addChild(leafsWordOne[2 * i + 1]); + parent.addChild(leafsWordTwo[2 * i]); + parent.addChild(leafsWordTwo[2 * i + 1]); + rootSegment.addChild(parent); + } // rootSegment.applyRotations(this.startRotations); + + + this.setRootSegment(rootSegment); + } + } + }]); + + return RowLevel; +}(Level_Level); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SimpleLevel.js +function SimpleLevel_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SimpleLevel_typeof = function _typeof(obj) { return typeof obj; }; } else { SimpleLevel_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SimpleLevel_typeof(obj); } + +function SimpleLevel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SimpleLevel_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SimpleLevel_setPrototypeOf(subClass, superClass); } + +function SimpleLevel_setPrototypeOf(o, p) { SimpleLevel_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SimpleLevel_setPrototypeOf(o, p); } + +function SimpleLevel_createSuper(Derived) { var hasNativeReflectConstruct = SimpleLevel_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SimpleLevel_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SimpleLevel_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SimpleLevel_possibleConstructorReturn(this, result); }; } + +function SimpleLevel_possibleConstructorReturn(self, call) { if (call && (SimpleLevel_typeof(call) === "object" || typeof call === "function")) { return call; } return SimpleLevel_assertThisInitialized(self); } + +function SimpleLevel_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SimpleLevel_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SimpleLevel_getPrototypeOf(o) { SimpleLevel_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SimpleLevel_getPrototypeOf(o); } + + +var SimpleLevel = /*#__PURE__*/function (_RowLevel) { + SimpleLevel_inherits(SimpleLevel, _RowLevel); + + var _super = SimpleLevel_createSuper(SimpleLevel); + + function SimpleLevel(container) { + SimpleLevel_classCallCheck(this, SimpleLevel); + + return _super.call(this, container, 6); + } + + return SimpleLevel; +}(RowLevel_RowLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/RowLevel8.js +function RowLevel8_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { RowLevel8_typeof = function _typeof(obj) { return typeof obj; }; } else { RowLevel8_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return RowLevel8_typeof(obj); } + +function RowLevel8_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function RowLevel8_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) RowLevel8_setPrototypeOf(subClass, superClass); } + +function RowLevel8_setPrototypeOf(o, p) { RowLevel8_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return RowLevel8_setPrototypeOf(o, p); } + +function RowLevel8_createSuper(Derived) { var hasNativeReflectConstruct = RowLevel8_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = RowLevel8_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = RowLevel8_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return RowLevel8_possibleConstructorReturn(this, result); }; } + +function RowLevel8_possibleConstructorReturn(self, call) { if (call && (RowLevel8_typeof(call) === "object" || typeof call === "function")) { return call; } return RowLevel8_assertThisInitialized(self); } + +function RowLevel8_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function RowLevel8_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function RowLevel8_getPrototypeOf(o) { RowLevel8_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return RowLevel8_getPrototypeOf(o); } + + +var RowLevel8 = /*#__PURE__*/function (_RowLevel) { + RowLevel8_inherits(RowLevel8, _RowLevel); + + var _super = RowLevel8_createSuper(RowLevel8); + + function RowLevel8(container) { + RowLevel8_classCallCheck(this, RowLevel8); + + return _super.call(this, container, 8); + } + + return RowLevel8; +}(RowLevel_RowLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/RowLevel10.js +function RowLevel10_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { RowLevel10_typeof = function _typeof(obj) { return typeof obj; }; } else { RowLevel10_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return RowLevel10_typeof(obj); } + +function RowLevel10_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function RowLevel10_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) RowLevel10_setPrototypeOf(subClass, superClass); } + +function RowLevel10_setPrototypeOf(o, p) { RowLevel10_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return RowLevel10_setPrototypeOf(o, p); } + +function RowLevel10_createSuper(Derived) { var hasNativeReflectConstruct = RowLevel10_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = RowLevel10_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = RowLevel10_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return RowLevel10_possibleConstructorReturn(this, result); }; } + +function RowLevel10_possibleConstructorReturn(self, call) { if (call && (RowLevel10_typeof(call) === "object" || typeof call === "function")) { return call; } return RowLevel10_assertThisInitialized(self); } + +function RowLevel10_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function RowLevel10_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function RowLevel10_getPrototypeOf(o) { RowLevel10_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return RowLevel10_getPrototypeOf(o); } + + +var RowLevel10 = /*#__PURE__*/function (_RowLevel) { + RowLevel10_inherits(RowLevel10, _RowLevel); + + var _super = RowLevel10_createSuper(RowLevel10); + + function RowLevel10(container) { + RowLevel10_classCallCheck(this, RowLevel10); + + return _super.call(this, container, 10); + } + + return RowLevel10; +}(RowLevel_RowLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Segment/TriangleSegment.js +function TriangleSegment_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { TriangleSegment_typeof = function _typeof(obj) { return typeof obj; }; } else { TriangleSegment_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return TriangleSegment_typeof(obj); } + +function TriangleSegment_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TriangleSegment_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) TriangleSegment_setPrototypeOf(subClass, superClass); } + +function TriangleSegment_setPrototypeOf(o, p) { TriangleSegment_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return TriangleSegment_setPrototypeOf(o, p); } + +function TriangleSegment_createSuper(Derived) { var hasNativeReflectConstruct = TriangleSegment_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = TriangleSegment_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = TriangleSegment_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return TriangleSegment_possibleConstructorReturn(this, result); }; } + +function TriangleSegment_possibleConstructorReturn(self, call) { if (call && (TriangleSegment_typeof(call) === "object" || typeof call === "function")) { return call; } return TriangleSegment_assertThisInitialized(self); } + +function TriangleSegment_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function TriangleSegment_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function TriangleSegment_getPrototypeOf(o) { TriangleSegment_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return TriangleSegment_getPrototypeOf(o); } + + +var TriangleSegment = /*#__PURE__*/function (_RowSegment) { + TriangleSegment_inherits(TriangleSegment, _RowSegment); + + var _super = TriangleSegment_createSuper(TriangleSegment); + + function TriangleSegment() { + TriangleSegment_classCallCheck(this, TriangleSegment); + + return _super.apply(this, arguments); + } + + return TriangleSegment; +}(RowSegment_RowSegment); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SixWordsRowLevel.js +function SixWordsRowLevel_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SixWordsRowLevel_typeof = function _typeof(obj) { return typeof obj; }; } else { SixWordsRowLevel_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SixWordsRowLevel_typeof(obj); } + +function SixWordsRowLevel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SixWordsRowLevel_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function SixWordsRowLevel_createClass(Constructor, protoProps, staticProps) { if (protoProps) SixWordsRowLevel_defineProperties(Constructor.prototype, protoProps); if (staticProps) SixWordsRowLevel_defineProperties(Constructor, staticProps); return Constructor; } + +function SixWordsRowLevel_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SixWordsRowLevel_setPrototypeOf(subClass, superClass); } + +function SixWordsRowLevel_setPrototypeOf(o, p) { SixWordsRowLevel_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SixWordsRowLevel_setPrototypeOf(o, p); } + +function SixWordsRowLevel_createSuper(Derived) { var hasNativeReflectConstruct = SixWordsRowLevel_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SixWordsRowLevel_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SixWordsRowLevel_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SixWordsRowLevel_possibleConstructorReturn(this, result); }; } + +function SixWordsRowLevel_possibleConstructorReturn(self, call) { if (call && (SixWordsRowLevel_typeof(call) === "object" || typeof call === "function")) { return call; } return SixWordsRowLevel_assertThisInitialized(self); } + +function SixWordsRowLevel_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SixWordsRowLevel_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SixWordsRowLevel_getPrototypeOf(o) { SixWordsRowLevel_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SixWordsRowLevel_getPrototypeOf(o); } + + + + + +var SixWordsRowLevel_SixWordsRowLevel = /*#__PURE__*/function (_Level) { + SixWordsRowLevel_inherits(SixWordsRowLevel, _Level); + + var _super = SixWordsRowLevel_createSuper(SixWordsRowLevel); + + function SixWordsRowLevel(templateContainer, wordLength) { + var _this; + + SixWordsRowLevel_classCallCheck(this, SixWordsRowLevel); + + _this = _super.call(this, templateContainer); + _this.wordLength = wordLength; + return _this; + } + + SixWordsRowLevel_createClass(SixWordsRowLevel, [{ + key: "createSegments", + value: function createSegments() { + if (this.words.length >= 6 && this.words[0].length >= this.wordLength && this.words[1].length >= this.wordLength && this.words[2].length >= this.wordLength && this.words[3].length >= this.wordLength && this.words[4].length >= this.wordLength && this.words[5].length >= this.wordLength) { + var leafsWords = []; + leafsWords[0] = Level_Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[1] = Level_Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate()); + leafsWords[2] = Level_Level._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate()); + leafsWords[3] = Level_Level._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate()); + leafsWords[4] = Level_Level._createLeafsForWord(this.words[4], this.templateContainer.copyLeafTemplate()); + leafsWords[5] = Level_Level._createLeafsForWord(this.words[5], this.templateContainer.copyLeafTemplate()); + var rootSegment = new RowSegment_RowSegment(this.templateContainer.copyRowTemplate()); + + for (var i = 0; i < this.wordLength / 4; i++) { + var parents = []; + parents[0] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[1] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[2] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[3] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[4] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[5] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[0].addChild(leafsWords[0][4 * i]); + parents[0].addChild(leafsWords[0][4 * i + 1]); + parents[0].addChild(leafsWords[1][4 * i]); + parents[0].addChild(leafsWords[1][4 * i + 1]); + parents[1].addChild(leafsWords[0][4 * i + 2]); + parents[1].addChild(leafsWords[0][4 * i + 3]); + parents[1].addChild(leafsWords[1][4 * i + 2]); + parents[1].addChild(leafsWords[1][4 * i + 3]); + parents[2].addChild(leafsWords[2][4 * i]); + parents[2].addChild(leafsWords[2][4 * i + 1]); + parents[2].addChild(leafsWords[3][4 * i]); + parents[2].addChild(leafsWords[3][4 * i + 1]); + parents[3].addChild(leafsWords[2][4 * i + 2]); + parents[3].addChild(leafsWords[2][4 * i + 3]); + parents[3].addChild(leafsWords[3][4 * i + 2]); + parents[3].addChild(leafsWords[3][4 * i + 3]); + parents[4].addChild(leafsWords[4][4 * i]); + parents[4].addChild(leafsWords[4][4 * i + 1]); + parents[4].addChild(leafsWords[5][4 * i]); + parents[4].addChild(leafsWords[5][4 * i + 1]); + parents[5].addChild(leafsWords[4][4 * i + 2]); + parents[5].addChild(leafsWords[4][4 * i + 3]); + parents[5].addChild(leafsWords[5][4 * i + 2]); + parents[5].addChild(leafsWords[5][4 * i + 3]); + var parent = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + var triangle = new TriangleSegment(this.templateContainer.copyTriangleTemplate()); + + if (i % 2 === 0) { + parent.addChild(parents[0]); + parent.addChild(parents[1]); + parent.addChild(parents[2]); + parent.addChild(parents[3]); + var rowSegment = new RowSegment_RowSegment(this.templateContainer.copyRowTemplate()); + rowSegment.addChild(parents[4]); + rowSegment.addChild(parents[5]); + triangle.addChild(parent); + triangle.addChild(rowSegment); + triangle.getElement().classList.add("type-1"); + } else { + var _rowSegment = new RowSegment_RowSegment(this.templateContainer.copyRowTemplate()); + + _rowSegment.addChild(parents[0]); + + _rowSegment.addChild(parents[1]); + + triangle.addChild(_rowSegment); + triangle.addChild(parent); + parent.addChild(parents[2]); + parent.addChild(parents[3]); + parent.addChild(parents[4]); + parent.addChild(parents[5]); + triangle.getElement().classList.add("type-2"); + } + + rootSegment.addChild(triangle); + } + + this.setRootSegment(rootSegment); + } + } + }]); + + return SixWordsRowLevel; +}(Level_Level); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SixWordsRowLevel8.js +function SixWordsRowLevel8_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SixWordsRowLevel8_typeof = function _typeof(obj) { return typeof obj; }; } else { SixWordsRowLevel8_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SixWordsRowLevel8_typeof(obj); } + +function SixWordsRowLevel8_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SixWordsRowLevel8_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SixWordsRowLevel8_setPrototypeOf(subClass, superClass); } + +function SixWordsRowLevel8_setPrototypeOf(o, p) { SixWordsRowLevel8_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SixWordsRowLevel8_setPrototypeOf(o, p); } + +function SixWordsRowLevel8_createSuper(Derived) { var hasNativeReflectConstruct = SixWordsRowLevel8_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SixWordsRowLevel8_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SixWordsRowLevel8_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SixWordsRowLevel8_possibleConstructorReturn(this, result); }; } + +function SixWordsRowLevel8_possibleConstructorReturn(self, call) { if (call && (SixWordsRowLevel8_typeof(call) === "object" || typeof call === "function")) { return call; } return SixWordsRowLevel8_assertThisInitialized(self); } + +function SixWordsRowLevel8_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SixWordsRowLevel8_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SixWordsRowLevel8_getPrototypeOf(o) { SixWordsRowLevel8_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SixWordsRowLevel8_getPrototypeOf(o); } + + +var SixWordsRowLevel8 = /*#__PURE__*/function (_SixWordsRowLevel) { + SixWordsRowLevel8_inherits(SixWordsRowLevel8, _SixWordsRowLevel); + + var _super = SixWordsRowLevel8_createSuper(SixWordsRowLevel8); + + function SixWordsRowLevel8(templateContainer) { + SixWordsRowLevel8_classCallCheck(this, SixWordsRowLevel8); + + return _super.call(this, templateContainer, 8); + } + + return SixWordsRowLevel8; +}(SixWordsRowLevel_SixWordsRowLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SixWordsRowLevel12.js +function SixWordsRowLevel12_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SixWordsRowLevel12_typeof = function _typeof(obj) { return typeof obj; }; } else { SixWordsRowLevel12_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SixWordsRowLevel12_typeof(obj); } + +function SixWordsRowLevel12_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SixWordsRowLevel12_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SixWordsRowLevel12_setPrototypeOf(subClass, superClass); } + +function SixWordsRowLevel12_setPrototypeOf(o, p) { SixWordsRowLevel12_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SixWordsRowLevel12_setPrototypeOf(o, p); } + +function SixWordsRowLevel12_createSuper(Derived) { var hasNativeReflectConstruct = SixWordsRowLevel12_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SixWordsRowLevel12_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SixWordsRowLevel12_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SixWordsRowLevel12_possibleConstructorReturn(this, result); }; } + +function SixWordsRowLevel12_possibleConstructorReturn(self, call) { if (call && (SixWordsRowLevel12_typeof(call) === "object" || typeof call === "function")) { return call; } return SixWordsRowLevel12_assertThisInitialized(self); } + +function SixWordsRowLevel12_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SixWordsRowLevel12_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SixWordsRowLevel12_getPrototypeOf(o) { SixWordsRowLevel12_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SixWordsRowLevel12_getPrototypeOf(o); } + + +var SixWordsRowLevel12 = /*#__PURE__*/function (_SixWordsRowLevel) { + SixWordsRowLevel12_inherits(SixWordsRowLevel12, _SixWordsRowLevel); + + var _super = SixWordsRowLevel12_createSuper(SixWordsRowLevel12); + + function SixWordsRowLevel12(templateContainer) { + SixWordsRowLevel12_classCallCheck(this, SixWordsRowLevel12); + + return _super.call(this, templateContainer, 12); + } + + return SixWordsRowLevel12; +}(SixWordsRowLevel_SixWordsRowLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/FourWordsLevel.js +function FourWordsLevel_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { FourWordsLevel_typeof = function _typeof(obj) { return typeof obj; }; } else { FourWordsLevel_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return FourWordsLevel_typeof(obj); } + +function FourWordsLevel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function FourWordsLevel_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function FourWordsLevel_createClass(Constructor, protoProps, staticProps) { if (protoProps) FourWordsLevel_defineProperties(Constructor.prototype, protoProps); if (staticProps) FourWordsLevel_defineProperties(Constructor, staticProps); return Constructor; } + +function FourWordsLevel_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) FourWordsLevel_setPrototypeOf(subClass, superClass); } + +function FourWordsLevel_setPrototypeOf(o, p) { FourWordsLevel_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return FourWordsLevel_setPrototypeOf(o, p); } + +function FourWordsLevel_createSuper(Derived) { var hasNativeReflectConstruct = FourWordsLevel_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = FourWordsLevel_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = FourWordsLevel_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return FourWordsLevel_possibleConstructorReturn(this, result); }; } + +function FourWordsLevel_possibleConstructorReturn(self, call) { if (call && (FourWordsLevel_typeof(call) === "object" || typeof call === "function")) { return call; } return FourWordsLevel_assertThisInitialized(self); } + +function FourWordsLevel_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function FourWordsLevel_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function FourWordsLevel_getPrototypeOf(o) { FourWordsLevel_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return FourWordsLevel_getPrototypeOf(o); } + + + + +var FourWordsLevel_FourWordsLevel = /*#__PURE__*/function (_Level) { + FourWordsLevel_inherits(FourWordsLevel, _Level); + + var _super = FourWordsLevel_createSuper(FourWordsLevel); + + function FourWordsLevel(templateContainer, wordLength) { + var _this; + + FourWordsLevel_classCallCheck(this, FourWordsLevel); + + _this = _super.call(this, templateContainer); + _this.wordLength = wordLength; + return _this; + } + + FourWordsLevel_createClass(FourWordsLevel, [{ + key: "createSegments", + value: function createSegments() { + if (this.words.length >= 4 && this.words[0].length >= this.wordLength && this.words[1].length >= this.wordLength && this.words[2].length >= this.wordLength && this.words[3].length >= this.wordLength) { + var leafsWords = []; + leafsWords[0] = Level_Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[1] = Level_Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate()); + leafsWords[2] = Level_Level._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate()); + leafsWords[3] = Level_Level._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate()); + var rootSegment = new RowSegment_RowSegment(this.templateContainer.copyRowTemplate()); + + for (var i = 0; i < this.wordLength / 4; i++) { + var parents = []; + parents[0] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[1] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[2] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[3] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[0].addChild(leafsWords[0][4 * i]); + parents[0].addChild(leafsWords[0][4 * i + 1]); + parents[0].addChild(leafsWords[1][4 * i]); + parents[0].addChild(leafsWords[1][4 * i + 1]); + parents[1].addChild(leafsWords[0][4 * i + 2]); + parents[1].addChild(leafsWords[0][4 * i + 3]); + parents[1].addChild(leafsWords[1][4 * i + 2]); + parents[1].addChild(leafsWords[1][4 * i + 3]); + parents[2].addChild(leafsWords[2][4 * i]); + parents[2].addChild(leafsWords[2][4 * i + 1]); + parents[2].addChild(leafsWords[3][4 * i]); + parents[2].addChild(leafsWords[3][4 * i + 1]); + parents[3].addChild(leafsWords[2][4 * i + 2]); + parents[3].addChild(leafsWords[2][4 * i + 3]); + parents[3].addChild(leafsWords[3][4 * i + 2]); + parents[3].addChild(leafsWords[3][4 * i + 3]); + var parent = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parent.addChild(parents[0]); + parent.addChild(parents[1]); + parent.addChild(parents[2]); + parent.addChild(parents[3]); + rootSegment.addChild(parent); + } + + this.setRootSegment(rootSegment); + } + } + }]); + + return FourWordsLevel; +}(Level_Level); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/FourWordsLevel8.js +function FourWordsLevel8_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { FourWordsLevel8_typeof = function _typeof(obj) { return typeof obj; }; } else { FourWordsLevel8_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return FourWordsLevel8_typeof(obj); } + +function FourWordsLevel8_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function FourWordsLevel8_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) FourWordsLevel8_setPrototypeOf(subClass, superClass); } + +function FourWordsLevel8_setPrototypeOf(o, p) { FourWordsLevel8_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return FourWordsLevel8_setPrototypeOf(o, p); } + +function FourWordsLevel8_createSuper(Derived) { var hasNativeReflectConstruct = FourWordsLevel8_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = FourWordsLevel8_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = FourWordsLevel8_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return FourWordsLevel8_possibleConstructorReturn(this, result); }; } + +function FourWordsLevel8_possibleConstructorReturn(self, call) { if (call && (FourWordsLevel8_typeof(call) === "object" || typeof call === "function")) { return call; } return FourWordsLevel8_assertThisInitialized(self); } + +function FourWordsLevel8_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function FourWordsLevel8_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function FourWordsLevel8_getPrototypeOf(o) { FourWordsLevel8_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return FourWordsLevel8_getPrototypeOf(o); } + + +var FourWordsLevel8 = /*#__PURE__*/function (_FourWordsLevel) { + FourWordsLevel8_inherits(FourWordsLevel8, _FourWordsLevel); + + var _super = FourWordsLevel8_createSuper(FourWordsLevel8); + + function FourWordsLevel8(templateContainer) { + FourWordsLevel8_classCallCheck(this, FourWordsLevel8); + + return _super.call(this, templateContainer, 8); + } + + return FourWordsLevel8; +}(FourWordsLevel_FourWordsLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/FourWordsLevel12.js +function FourWordsLevel12_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { FourWordsLevel12_typeof = function _typeof(obj) { return typeof obj; }; } else { FourWordsLevel12_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return FourWordsLevel12_typeof(obj); } + +function FourWordsLevel12_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function FourWordsLevel12_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) FourWordsLevel12_setPrototypeOf(subClass, superClass); } + +function FourWordsLevel12_setPrototypeOf(o, p) { FourWordsLevel12_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return FourWordsLevel12_setPrototypeOf(o, p); } + +function FourWordsLevel12_createSuper(Derived) { var hasNativeReflectConstruct = FourWordsLevel12_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = FourWordsLevel12_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = FourWordsLevel12_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return FourWordsLevel12_possibleConstructorReturn(this, result); }; } + +function FourWordsLevel12_possibleConstructorReturn(self, call) { if (call && (FourWordsLevel12_typeof(call) === "object" || typeof call === "function")) { return call; } return FourWordsLevel12_assertThisInitialized(self); } + +function FourWordsLevel12_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function FourWordsLevel12_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function FourWordsLevel12_getPrototypeOf(o) { FourWordsLevel12_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return FourWordsLevel12_getPrototypeOf(o); } + + +var FourWordsLevel12 = /*#__PURE__*/function (_FourWordsLevel) { + FourWordsLevel12_inherits(FourWordsLevel12, _FourWordsLevel); + + var _super = FourWordsLevel12_createSuper(FourWordsLevel12); + + function FourWordsLevel12(templateContainer) { + FourWordsLevel12_classCallCheck(this, FourWordsLevel12); + + return _super.call(this, templateContainer, 12); + } + + return FourWordsLevel12; +}(FourWordsLevel_FourWordsLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Segment/ColumnSegment.js +function ColumnSegment_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ColumnSegment_typeof = function _typeof(obj) { return typeof obj; }; } else { ColumnSegment_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ColumnSegment_typeof(obj); } + +function ColumnSegment_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ColumnSegment_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ColumnSegment_createClass(Constructor, protoProps, staticProps) { if (protoProps) ColumnSegment_defineProperties(Constructor.prototype, protoProps); if (staticProps) ColumnSegment_defineProperties(Constructor, staticProps); return Constructor; } + +function ColumnSegment_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ColumnSegment_setPrototypeOf(subClass, superClass); } + +function ColumnSegment_setPrototypeOf(o, p) { ColumnSegment_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ColumnSegment_setPrototypeOf(o, p); } + +function ColumnSegment_createSuper(Derived) { var hasNativeReflectConstruct = ColumnSegment_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = ColumnSegment_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = ColumnSegment_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return ColumnSegment_possibleConstructorReturn(this, result); }; } + +function ColumnSegment_possibleConstructorReturn(self, call) { if (call && (ColumnSegment_typeof(call) === "object" || typeof call === "function")) { return call; } return ColumnSegment_assertThisInitialized(self); } + +function ColumnSegment_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function ColumnSegment_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function ColumnSegment_getPrototypeOf(o) { ColumnSegment_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ColumnSegment_getPrototypeOf(o); } + + + +var ColumnSegment_ColumnSegment = /*#__PURE__*/function (_RowSegment) { + ColumnSegment_inherits(ColumnSegment, _RowSegment); + + var _super = ColumnSegment_createSuper(ColumnSegment); + + function ColumnSegment() { + ColumnSegment_classCallCheck(this, ColumnSegment); + + return _super.apply(this, arguments); + } + + ColumnSegment_createClass(ColumnSegment, [{ + key: "_updateElement", + value: function _updateElement() { + var childContainer = this.element.querySelector(".child-container"); + ViewHelper["ViewHelper"].removeAllChildren(childContainer); + + this._updateRotationClass(); + + var self = this; + + this.element.onclick = function (e) { + self.rotate(); + e.stopPropagation(); + }; + + for (var i = 0, n = this.children.length; i < n; i++) { + this.children[i]._updateElement(); + + childContainer.appendChild(this.children[i].getElement()); + } + } // constructor(element) { + // super(element); + // this.rotatable = false; + // } + // + // applyRotations(rotations) + // { + // for (let i = 0, n = this.children.length; i < n; i++) { + // rotations = this.children[i].applyRotations(rotations); + // } + // return rotations; + // } + // + // getCurrentRotations(rotations){ + // for (let i = 0, n = this.children.length; i < n; i++) { + // rotations = this.children[i].getCurrentRotations(rotations); + // } + // return rotations; + // } + // + // getCurrentLocked(locked) { + // for (let i = 0, n = this.children.length; i < n; i++) { + // locked = this.children[i].getCurrentLocked(locked); + // } + // return locked; + // } + // + // applyLocks(locks) { + // for (let i = 0, n = this.children.length; i < n; i++) { + // locks = this.children[i].applyLocks(locks); + // } + // return locks; + // } + // + // _updateElement() { + // const childContainer = this.element.querySelector(".child-container"); + // ViewHelper.removeAllChildren(childContainer); + // + // this._updateRotationClass(); + // + // const self = this; + // this.element.onclick = function (e) { + // self.rotate(); + // e.stopPropagation(); + // }; + // + // for (let i = 0, n = this.children.length; i < n; i++) { + // this.children[i]._updateElement(); + // childContainer.appendChild(this.children[i].getElement()); + // } + // } + + }]); + + return ColumnSegment; +}(RowSegment_RowSegment); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/BigSegmentsLevels.js +function BigSegmentsLevels_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { BigSegmentsLevels_typeof = function _typeof(obj) { return typeof obj; }; } else { BigSegmentsLevels_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return BigSegmentsLevels_typeof(obj); } + +function BigSegmentsLevels_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function BigSegmentsLevels_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function BigSegmentsLevels_createClass(Constructor, protoProps, staticProps) { if (protoProps) BigSegmentsLevels_defineProperties(Constructor.prototype, protoProps); if (staticProps) BigSegmentsLevels_defineProperties(Constructor, staticProps); return Constructor; } + +function BigSegmentsLevels_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) BigSegmentsLevels_setPrototypeOf(subClass, superClass); } + +function BigSegmentsLevels_setPrototypeOf(o, p) { BigSegmentsLevels_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return BigSegmentsLevels_setPrototypeOf(o, p); } + +function BigSegmentsLevels_createSuper(Derived) { var hasNativeReflectConstruct = BigSegmentsLevels_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = BigSegmentsLevels_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = BigSegmentsLevels_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return BigSegmentsLevels_possibleConstructorReturn(this, result); }; } + +function BigSegmentsLevels_possibleConstructorReturn(self, call) { if (call && (BigSegmentsLevels_typeof(call) === "object" || typeof call === "function")) { return call; } return BigSegmentsLevels_assertThisInitialized(self); } + +function BigSegmentsLevels_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function BigSegmentsLevels_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function BigSegmentsLevels_getPrototypeOf(o) { BigSegmentsLevels_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return BigSegmentsLevels_getPrototypeOf(o); } + + + + + +var BigSegmentsLevels_BigSegmentsLevels = /*#__PURE__*/function (_Level) { + BigSegmentsLevels_inherits(BigSegmentsLevels, _Level); + + var _super = BigSegmentsLevels_createSuper(BigSegmentsLevels); + + function BigSegmentsLevels(templateContainer, wordLength, bigSegmentPositions) { + var _this; + + BigSegmentsLevels_classCallCheck(this, BigSegmentsLevels); + + _this = _super.call(this, templateContainer); + _this.wordLength = wordLength; + _this.bigSegmentPositions = bigSegmentPositions; + return _this; + } + + BigSegmentsLevels_createClass(BigSegmentsLevels, [{ + key: "createSegments", + value: function createSegments() { + if (this.words.length >= 4 && this.words[0].length >= this.wordLength && this.words[1].length >= this.wordLength && this.words[2].length >= this.wordLength && this.words[3].length >= this.wordLength && this.wordLength >= 4) { + var leafsWords = []; + leafsWords[0] = Level_Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[1] = Level_Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate()); + leafsWords[2] = Level_Level._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate()); + leafsWords[3] = Level_Level._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate()); + var rootSegment = new RowSegment_RowSegment(this.templateContainer.copyRowTemplate()); + + for (var i = 0; i < this.wordLength / 2; i++) { + var parents = []; + parents[0] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[1] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[0].addChild(leafsWords[0][2 * i]); + parents[0].addChild(leafsWords[0][2 * i + 1]); + parents[0].addChild(leafsWords[1][2 * i]); + parents[0].addChild(leafsWords[1][2 * i + 1]); + parents[1].addChild(leafsWords[2][2 * i]); + parents[1].addChild(leafsWords[2][2 * i + 1]); + parents[1].addChild(leafsWords[3][2 * i]); + parents[1].addChild(leafsWords[3][2 * i + 1]); + var parentSegment = null; + + if (this.bigSegmentPositions.indexOf(i) !== -1) { + parents[2] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[3] = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parents[2].addChild(leafsWords[0][2 * i + 2]); + parents[2].addChild(leafsWords[0][2 * i + 3]); + parents[2].addChild(leafsWords[1][2 * i + 2]); + parents[2].addChild(leafsWords[1][2 * i + 3]); + parents[3].addChild(leafsWords[2][2 * i + 2]); + parents[3].addChild(leafsWords[2][2 * i + 3]); + parents[3].addChild(leafsWords[3][2 * i + 2]); + parents[3].addChild(leafsWords[3][2 * i + 3]); + parentSegment = new ParentSegment_ParentSegment(this.templateContainer.copyParentTemplate()); + parentSegment.addChild(parents[0]); + parentSegment.addChild(parents[2]); + parentSegment.addChild(parents[1]); + parentSegment.addChild(parents[3]); + i++; + } else { + parentSegment = new ColumnSegment_ColumnSegment(this.templateContainer.copyColumnTemplate()); + parentSegment.addChild(parents[0]); + parentSegment.addChild(parents[1]); + } + + rootSegment.addChild(parentSegment); + } + + this.setRootSegment(rootSegment); + } + } + }]); + + return BigSegmentsLevels; +}(Level_Level); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js +function SimpleFourWordsLevel_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SimpleFourWordsLevel_typeof = function _typeof(obj) { return typeof obj; }; } else { SimpleFourWordsLevel_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SimpleFourWordsLevel_typeof(obj); } + +function SimpleFourWordsLevel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SimpleFourWordsLevel_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SimpleFourWordsLevel_setPrototypeOf(subClass, superClass); } + +function SimpleFourWordsLevel_setPrototypeOf(o, p) { SimpleFourWordsLevel_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SimpleFourWordsLevel_setPrototypeOf(o, p); } + +function SimpleFourWordsLevel_createSuper(Derived) { var hasNativeReflectConstruct = SimpleFourWordsLevel_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SimpleFourWordsLevel_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SimpleFourWordsLevel_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SimpleFourWordsLevel_possibleConstructorReturn(this, result); }; } + +function SimpleFourWordsLevel_possibleConstructorReturn(self, call) { if (call && (SimpleFourWordsLevel_typeof(call) === "object" || typeof call === "function")) { return call; } return SimpleFourWordsLevel_assertThisInitialized(self); } + +function SimpleFourWordsLevel_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SimpleFourWordsLevel_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SimpleFourWordsLevel_getPrototypeOf(o) { SimpleFourWordsLevel_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SimpleFourWordsLevel_getPrototypeOf(o); } + + +var SimpleFourWordsLevel = /*#__PURE__*/function (_BigSegmentsLevels) { + SimpleFourWordsLevel_inherits(SimpleFourWordsLevel, _BigSegmentsLevels); + + var _super = SimpleFourWordsLevel_createSuper(SimpleFourWordsLevel); + + function SimpleFourWordsLevel(templateContainer, wordLength, bigSegmentPosition) { + SimpleFourWordsLevel_classCallCheck(this, SimpleFourWordsLevel); + + return _super.call(this, templateContainer, wordLength, [bigSegmentPosition]); + } + + return SimpleFourWordsLevel; +}(BigSegmentsLevels_BigSegmentsLevels); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_0.js +function SimpleFourWordsLevel10_0_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SimpleFourWordsLevel10_0_typeof = function _typeof(obj) { return typeof obj; }; } else { SimpleFourWordsLevel10_0_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SimpleFourWordsLevel10_0_typeof(obj); } + +function SimpleFourWordsLevel10_0_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SimpleFourWordsLevel10_0_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SimpleFourWordsLevel10_0_setPrototypeOf(subClass, superClass); } + +function SimpleFourWordsLevel10_0_setPrototypeOf(o, p) { SimpleFourWordsLevel10_0_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SimpleFourWordsLevel10_0_setPrototypeOf(o, p); } + +function SimpleFourWordsLevel10_0_createSuper(Derived) { var hasNativeReflectConstruct = SimpleFourWordsLevel10_0_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SimpleFourWordsLevel10_0_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SimpleFourWordsLevel10_0_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SimpleFourWordsLevel10_0_possibleConstructorReturn(this, result); }; } + +function SimpleFourWordsLevel10_0_possibleConstructorReturn(self, call) { if (call && (SimpleFourWordsLevel10_0_typeof(call) === "object" || typeof call === "function")) { return call; } return SimpleFourWordsLevel10_0_assertThisInitialized(self); } + +function SimpleFourWordsLevel10_0_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SimpleFourWordsLevel10_0_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SimpleFourWordsLevel10_0_getPrototypeOf(o) { SimpleFourWordsLevel10_0_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SimpleFourWordsLevel10_0_getPrototypeOf(o); } + + +var SimpleFourWordsLevel10_0 = /*#__PURE__*/function (_SimpleFourWordsLevel) { + SimpleFourWordsLevel10_0_inherits(SimpleFourWordsLevel10_0, _SimpleFourWordsLevel); + + var _super = SimpleFourWordsLevel10_0_createSuper(SimpleFourWordsLevel10_0); + + function SimpleFourWordsLevel10_0(templateContainer) { + SimpleFourWordsLevel10_0_classCallCheck(this, SimpleFourWordsLevel10_0); + + return _super.call(this, templateContainer, 10, 0); + } + + return SimpleFourWordsLevel10_0; +}(SimpleFourWordsLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_1.js +function SimpleFourWordsLevel10_1_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SimpleFourWordsLevel10_1_typeof = function _typeof(obj) { return typeof obj; }; } else { SimpleFourWordsLevel10_1_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SimpleFourWordsLevel10_1_typeof(obj); } + +function SimpleFourWordsLevel10_1_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SimpleFourWordsLevel10_1_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SimpleFourWordsLevel10_1_setPrototypeOf(subClass, superClass); } + +function SimpleFourWordsLevel10_1_setPrototypeOf(o, p) { SimpleFourWordsLevel10_1_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SimpleFourWordsLevel10_1_setPrototypeOf(o, p); } + +function SimpleFourWordsLevel10_1_createSuper(Derived) { var hasNativeReflectConstruct = SimpleFourWordsLevel10_1_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SimpleFourWordsLevel10_1_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SimpleFourWordsLevel10_1_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SimpleFourWordsLevel10_1_possibleConstructorReturn(this, result); }; } + +function SimpleFourWordsLevel10_1_possibleConstructorReturn(self, call) { if (call && (SimpleFourWordsLevel10_1_typeof(call) === "object" || typeof call === "function")) { return call; } return SimpleFourWordsLevel10_1_assertThisInitialized(self); } + +function SimpleFourWordsLevel10_1_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SimpleFourWordsLevel10_1_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SimpleFourWordsLevel10_1_getPrototypeOf(o) { SimpleFourWordsLevel10_1_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SimpleFourWordsLevel10_1_getPrototypeOf(o); } + + +var SimpleFourWordsLevel10_1 = /*#__PURE__*/function (_SimpleFourWordsLevel) { + SimpleFourWordsLevel10_1_inherits(SimpleFourWordsLevel10_1, _SimpleFourWordsLevel); + + var _super = SimpleFourWordsLevel10_1_createSuper(SimpleFourWordsLevel10_1); + + function SimpleFourWordsLevel10_1(templateContainer) { + SimpleFourWordsLevel10_1_classCallCheck(this, SimpleFourWordsLevel10_1); + + return _super.call(this, templateContainer, 10, 1); + } + + return SimpleFourWordsLevel10_1; +}(SimpleFourWordsLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_2.js +function SimpleFourWordsLevel10_2_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SimpleFourWordsLevel10_2_typeof = function _typeof(obj) { return typeof obj; }; } else { SimpleFourWordsLevel10_2_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SimpleFourWordsLevel10_2_typeof(obj); } + +function SimpleFourWordsLevel10_2_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SimpleFourWordsLevel10_2_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SimpleFourWordsLevel10_2_setPrototypeOf(subClass, superClass); } + +function SimpleFourWordsLevel10_2_setPrototypeOf(o, p) { SimpleFourWordsLevel10_2_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SimpleFourWordsLevel10_2_setPrototypeOf(o, p); } + +function SimpleFourWordsLevel10_2_createSuper(Derived) { var hasNativeReflectConstruct = SimpleFourWordsLevel10_2_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SimpleFourWordsLevel10_2_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SimpleFourWordsLevel10_2_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SimpleFourWordsLevel10_2_possibleConstructorReturn(this, result); }; } + +function SimpleFourWordsLevel10_2_possibleConstructorReturn(self, call) { if (call && (SimpleFourWordsLevel10_2_typeof(call) === "object" || typeof call === "function")) { return call; } return SimpleFourWordsLevel10_2_assertThisInitialized(self); } + +function SimpleFourWordsLevel10_2_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SimpleFourWordsLevel10_2_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SimpleFourWordsLevel10_2_getPrototypeOf(o) { SimpleFourWordsLevel10_2_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SimpleFourWordsLevel10_2_getPrototypeOf(o); } + + +var SimpleFourWordsLevel10_2 = /*#__PURE__*/function (_SimpleFourWordsLevel) { + SimpleFourWordsLevel10_2_inherits(SimpleFourWordsLevel10_2, _SimpleFourWordsLevel); + + var _super = SimpleFourWordsLevel10_2_createSuper(SimpleFourWordsLevel10_2); + + function SimpleFourWordsLevel10_2(templateContainer) { + SimpleFourWordsLevel10_2_classCallCheck(this, SimpleFourWordsLevel10_2); + + return _super.call(this, templateContainer, 10, 2); + } + + return SimpleFourWordsLevel10_2; +}(SimpleFourWordsLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_3.js +function SimpleFourWordsLevel10_3_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SimpleFourWordsLevel10_3_typeof = function _typeof(obj) { return typeof obj; }; } else { SimpleFourWordsLevel10_3_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SimpleFourWordsLevel10_3_typeof(obj); } + +function SimpleFourWordsLevel10_3_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SimpleFourWordsLevel10_3_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SimpleFourWordsLevel10_3_setPrototypeOf(subClass, superClass); } + +function SimpleFourWordsLevel10_3_setPrototypeOf(o, p) { SimpleFourWordsLevel10_3_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SimpleFourWordsLevel10_3_setPrototypeOf(o, p); } + +function SimpleFourWordsLevel10_3_createSuper(Derived) { var hasNativeReflectConstruct = SimpleFourWordsLevel10_3_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SimpleFourWordsLevel10_3_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SimpleFourWordsLevel10_3_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SimpleFourWordsLevel10_3_possibleConstructorReturn(this, result); }; } + +function SimpleFourWordsLevel10_3_possibleConstructorReturn(self, call) { if (call && (SimpleFourWordsLevel10_3_typeof(call) === "object" || typeof call === "function")) { return call; } return SimpleFourWordsLevel10_3_assertThisInitialized(self); } + +function SimpleFourWordsLevel10_3_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SimpleFourWordsLevel10_3_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SimpleFourWordsLevel10_3_getPrototypeOf(o) { SimpleFourWordsLevel10_3_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SimpleFourWordsLevel10_3_getPrototypeOf(o); } + + +var SimpleFourWordsLevel10_3 = /*#__PURE__*/function (_SimpleFourWordsLevel) { + SimpleFourWordsLevel10_3_inherits(SimpleFourWordsLevel10_3, _SimpleFourWordsLevel); + + var _super = SimpleFourWordsLevel10_3_createSuper(SimpleFourWordsLevel10_3); + + function SimpleFourWordsLevel10_3(templateContainer) { + SimpleFourWordsLevel10_3_classCallCheck(this, SimpleFourWordsLevel10_3); + + return _super.call(this, templateContainer, 10, 3); + } + + return SimpleFourWordsLevel10_3; +}(SimpleFourWordsLevel); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_3.js +function TwoSegmentFourWordsLevel10_0_3_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { TwoSegmentFourWordsLevel10_0_3_typeof = function _typeof(obj) { return typeof obj; }; } else { TwoSegmentFourWordsLevel10_0_3_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return TwoSegmentFourWordsLevel10_0_3_typeof(obj); } + +function TwoSegmentFourWordsLevel10_0_3_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TwoSegmentFourWordsLevel10_0_3_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) TwoSegmentFourWordsLevel10_0_3_setPrototypeOf(subClass, superClass); } + +function TwoSegmentFourWordsLevel10_0_3_setPrototypeOf(o, p) { TwoSegmentFourWordsLevel10_0_3_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return TwoSegmentFourWordsLevel10_0_3_setPrototypeOf(o, p); } + +function TwoSegmentFourWordsLevel10_0_3_createSuper(Derived) { var hasNativeReflectConstruct = TwoSegmentFourWordsLevel10_0_3_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = TwoSegmentFourWordsLevel10_0_3_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = TwoSegmentFourWordsLevel10_0_3_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return TwoSegmentFourWordsLevel10_0_3_possibleConstructorReturn(this, result); }; } + +function TwoSegmentFourWordsLevel10_0_3_possibleConstructorReturn(self, call) { if (call && (TwoSegmentFourWordsLevel10_0_3_typeof(call) === "object" || typeof call === "function")) { return call; } return TwoSegmentFourWordsLevel10_0_3_assertThisInitialized(self); } + +function TwoSegmentFourWordsLevel10_0_3_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function TwoSegmentFourWordsLevel10_0_3_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function TwoSegmentFourWordsLevel10_0_3_getPrototypeOf(o) { TwoSegmentFourWordsLevel10_0_3_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return TwoSegmentFourWordsLevel10_0_3_getPrototypeOf(o); } + + +var TwoSegmentFourWordsLevel10_0_3 = /*#__PURE__*/function (_BigSegmentsLevels) { + TwoSegmentFourWordsLevel10_0_3_inherits(TwoSegmentFourWordsLevel10_0_3, _BigSegmentsLevels); + + var _super = TwoSegmentFourWordsLevel10_0_3_createSuper(TwoSegmentFourWordsLevel10_0_3); + + function TwoSegmentFourWordsLevel10_0_3(templateContainer) { + TwoSegmentFourWordsLevel10_0_3_classCallCheck(this, TwoSegmentFourWordsLevel10_0_3); + + return _super.call(this, templateContainer, 10, [0, 3]); + } + + return TwoSegmentFourWordsLevel10_0_3; +}(BigSegmentsLevels_BigSegmentsLevels); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_1_3.js +function TwoSegmentFourWordsLevel10_1_3_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { TwoSegmentFourWordsLevel10_1_3_typeof = function _typeof(obj) { return typeof obj; }; } else { TwoSegmentFourWordsLevel10_1_3_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return TwoSegmentFourWordsLevel10_1_3_typeof(obj); } + +function TwoSegmentFourWordsLevel10_1_3_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TwoSegmentFourWordsLevel10_1_3_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) TwoSegmentFourWordsLevel10_1_3_setPrototypeOf(subClass, superClass); } + +function TwoSegmentFourWordsLevel10_1_3_setPrototypeOf(o, p) { TwoSegmentFourWordsLevel10_1_3_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return TwoSegmentFourWordsLevel10_1_3_setPrototypeOf(o, p); } + +function TwoSegmentFourWordsLevel10_1_3_createSuper(Derived) { var hasNativeReflectConstruct = TwoSegmentFourWordsLevel10_1_3_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = TwoSegmentFourWordsLevel10_1_3_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = TwoSegmentFourWordsLevel10_1_3_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return TwoSegmentFourWordsLevel10_1_3_possibleConstructorReturn(this, result); }; } + +function TwoSegmentFourWordsLevel10_1_3_possibleConstructorReturn(self, call) { if (call && (TwoSegmentFourWordsLevel10_1_3_typeof(call) === "object" || typeof call === "function")) { return call; } return TwoSegmentFourWordsLevel10_1_3_assertThisInitialized(self); } + +function TwoSegmentFourWordsLevel10_1_3_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function TwoSegmentFourWordsLevel10_1_3_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function TwoSegmentFourWordsLevel10_1_3_getPrototypeOf(o) { TwoSegmentFourWordsLevel10_1_3_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return TwoSegmentFourWordsLevel10_1_3_getPrototypeOf(o); } + + +var TwoSegmentFourWordsLevel10_1_3 = /*#__PURE__*/function (_BigSegmentsLevels) { + TwoSegmentFourWordsLevel10_1_3_inherits(TwoSegmentFourWordsLevel10_1_3, _BigSegmentsLevels); + + var _super = TwoSegmentFourWordsLevel10_1_3_createSuper(TwoSegmentFourWordsLevel10_1_3); + + function TwoSegmentFourWordsLevel10_1_3(templateContainer) { + TwoSegmentFourWordsLevel10_1_3_classCallCheck(this, TwoSegmentFourWordsLevel10_1_3); + + return _super.call(this, templateContainer, 10, [1, 3]); + } + + return TwoSegmentFourWordsLevel10_1_3; +}(BigSegmentsLevels_BigSegmentsLevels); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_2.js +function TwoSegmentFourWordsLevel10_0_2_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { TwoSegmentFourWordsLevel10_0_2_typeof = function _typeof(obj) { return typeof obj; }; } else { TwoSegmentFourWordsLevel10_0_2_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return TwoSegmentFourWordsLevel10_0_2_typeof(obj); } + +function TwoSegmentFourWordsLevel10_0_2_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TwoSegmentFourWordsLevel10_0_2_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) TwoSegmentFourWordsLevel10_0_2_setPrototypeOf(subClass, superClass); } + +function TwoSegmentFourWordsLevel10_0_2_setPrototypeOf(o, p) { TwoSegmentFourWordsLevel10_0_2_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return TwoSegmentFourWordsLevel10_0_2_setPrototypeOf(o, p); } + +function TwoSegmentFourWordsLevel10_0_2_createSuper(Derived) { var hasNativeReflectConstruct = TwoSegmentFourWordsLevel10_0_2_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = TwoSegmentFourWordsLevel10_0_2_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = TwoSegmentFourWordsLevel10_0_2_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return TwoSegmentFourWordsLevel10_0_2_possibleConstructorReturn(this, result); }; } + +function TwoSegmentFourWordsLevel10_0_2_possibleConstructorReturn(self, call) { if (call && (TwoSegmentFourWordsLevel10_0_2_typeof(call) === "object" || typeof call === "function")) { return call; } return TwoSegmentFourWordsLevel10_0_2_assertThisInitialized(self); } + +function TwoSegmentFourWordsLevel10_0_2_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function TwoSegmentFourWordsLevel10_0_2_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function TwoSegmentFourWordsLevel10_0_2_getPrototypeOf(o) { TwoSegmentFourWordsLevel10_0_2_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return TwoSegmentFourWordsLevel10_0_2_getPrototypeOf(o); } + + +var TwoSegmentFourWordsLevel10_0_2 = /*#__PURE__*/function (_BigSegmentsLevels) { + TwoSegmentFourWordsLevel10_0_2_inherits(TwoSegmentFourWordsLevel10_0_2, _BigSegmentsLevels); + + var _super = TwoSegmentFourWordsLevel10_0_2_createSuper(TwoSegmentFourWordsLevel10_0_2); + + function TwoSegmentFourWordsLevel10_0_2(templateContainer) { + TwoSegmentFourWordsLevel10_0_2_classCallCheck(this, TwoSegmentFourWordsLevel10_0_2); + + return _super.call(this, templateContainer, 10, [0, 2]); + } + + return TwoSegmentFourWordsLevel10_0_2; +}(BigSegmentsLevels_BigSegmentsLevels); +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/LevelHelper.ts +function LevelHelper_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LevelHelper_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LevelHelper_createClass(Constructor, protoProps, staticProps) { if (protoProps) LevelHelper_defineProperties(Constructor.prototype, protoProps); if (staticProps) LevelHelper_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + + + + + + + + + +var LevelHelper = /*#__PURE__*/function () { + function LevelHelper() { + LevelHelper_classCallCheck(this, LevelHelper); + } + + LevelHelper_createClass(LevelHelper, null, [{ + key: "setLevelType", + value: function setLevelType(typeId, level) { + LevelHelper.types[typeId] = level; + } + }, { + key: "getLevelClass", + value: function getLevelClass(type) { + return LevelHelper.types[type]; + } + }, { + key: "inflateLevel", + value: function inflateLevel(levelData, templateContainer) { + var level = new LevelHelper.types[levelData["renderer"]](templateContainer); + level.setWords(JSON.parse(levelData["words"].replace(/"/g, '"'))); + level.setId(levelData["id"]); + level.setLevelData(levelData); + levelData["positions"] = JSON.parse(levelData["positions"]); + + for (var i = 0, n = levelData["positions"].length; i < n; i++) { + if (levelData["positions"][i] <= 4) { + levelData["positions"][i] = 90 * levelData["positions"][i]; + } + } + + level.setStartRotations(levelData["positions"]); + return level; + } + }]); + + return LevelHelper; +}(); +LevelHelper.types = { + 20: SimpleLevel, + 40: RowLevel8, + 60: RowLevel10, + 80: SimpleFourWordsLevel10_0, + 81: SimpleFourWordsLevel10_1, + 82: SimpleFourWordsLevel10_2, + 83: SimpleFourWordsLevel10_3, + 100: SixWordsRowLevel8, + 110: TwoSegmentFourWordsLevel10_0_3, + 111: TwoSegmentFourWordsLevel10_1_3, + 112: TwoSegmentFourWordsLevel10_0_2, + 120: FourWordsLevel8, + 140: SixWordsRowLevel12, + 160: FourWordsLevel12 +}; +// CONCATENATED MODULE: ./src/client/js/Sites/EndSite.ts +function EndSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { EndSite_typeof = function _typeof(obj) { return typeof obj; }; } else { EndSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return EndSite_typeof(obj); } + +function EndSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function EndSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) EndSite_setPrototypeOf(subClass, superClass); } + +function EndSite_setPrototypeOf(o, p) { EndSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return EndSite_setPrototypeOf(o, p); } + +function EndSite_createSuper(Derived) { var hasNativeReflectConstruct = EndSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = EndSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = EndSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return EndSite_possibleConstructorReturn(this, result); }; } + +function EndSite_possibleConstructorReturn(self, call) { if (call && (EndSite_typeof(call) === "object" || typeof call === "function")) { return call; } return EndSite_assertThisInitialized(self); } + +function EndSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function EndSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function EndSite_getPrototypeOf(o) { EndSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return EndSite_getPrototypeOf(o); } + +var view = __webpack_require__(543); + + +var EndSite = /*#__PURE__*/function (_MenuSite) { + EndSite_inherits(EndSite, _MenuSite); + + var _super = EndSite_createSuper(EndSite); + + function EndSite(siteManager) { + EndSite_classCallCheck(this, EndSite); + + return _super.call(this, siteManager, view); + } + + return EndSite; +}(client["MenuSite"]); +// EXTERNAL MODULE: ./node_modules/cordova-sites-database/dist/BaseModel.js +var BaseModel = __webpack_require__(209); + +// CONCATENATED MODULE: ./src/client/js/model/LevelPlayed.ts +function LevelPlayed_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { LevelPlayed_typeof = function _typeof(obj) { return typeof obj; }; } else { LevelPlayed_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return LevelPlayed_typeof(obj); } + +function LevelPlayed_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LevelPlayed_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LevelPlayed_createClass(Constructor, protoProps, staticProps) { if (protoProps) LevelPlayed_defineProperties(Constructor.prototype, protoProps); if (staticProps) LevelPlayed_defineProperties(Constructor, staticProps); return Constructor; } + +function LevelPlayed_get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { LevelPlayed_get = Reflect.get; } else { LevelPlayed_get = function _get(target, property, receiver) { var base = LevelPlayed_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return LevelPlayed_get(target, property, receiver || target); } + +function LevelPlayed_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = LevelPlayed_getPrototypeOf(object); if (object === null) break; } return object; } + +function LevelPlayed_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) LevelPlayed_setPrototypeOf(subClass, superClass); } + +function LevelPlayed_setPrototypeOf(o, p) { LevelPlayed_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return LevelPlayed_setPrototypeOf(o, p); } + +function LevelPlayed_createSuper(Derived) { var hasNativeReflectConstruct = LevelPlayed_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = LevelPlayed_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = LevelPlayed_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return LevelPlayed_possibleConstructorReturn(this, result); }; } + +function LevelPlayed_possibleConstructorReturn(self, call) { if (call && (LevelPlayed_typeof(call) === "object" || typeof call === "function")) { return call; } return LevelPlayed_assertThisInitialized(self); } + +function LevelPlayed_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function LevelPlayed_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function LevelPlayed_getPrototypeOf(o) { LevelPlayed_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return LevelPlayed_getPrototypeOf(o); } + +var LevelPlayed_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + + + +var LevelPlayed_LevelPlayed = /*#__PURE__*/function (_BaseModel) { + LevelPlayed_inherits(LevelPlayed, _BaseModel); + + var _super = LevelPlayed_createSuper(LevelPlayed); + + function LevelPlayed() { + LevelPlayed_classCallCheck(this, LevelPlayed); + + return _super.apply(this, arguments); + } + + LevelPlayed_createClass(LevelPlayed, null, [{ + key: "getColumnDefinitions", + value: function getColumnDefinitions() { + var columns = LevelPlayed_get(LevelPlayed_getPrototypeOf(LevelPlayed), "getColumnDefinitions", this).call(this); + + columns["played"] = { + type: cordova_sites_database["BaseDatabase"].TYPES.BOOLEAN, + default: true + }; + return columns; + } + }, { + key: "getRelationDefinitions", + value: function getRelationDefinitions() { + var relations = LevelPlayed_get(LevelPlayed_getPrototypeOf(LevelPlayed), "getRelationDefinitions", this).call(this); + + relations["levelData"] = { + target: LevelData_LevelData.getSchemaName(), + type: "one-to-one", + joinColumn: true // cascade: true, + + }; + return relations; + } + }, { + key: "setPlayed", + value: function setPlayed(levelData, played) { + return LevelPlayed_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var levelPlayed; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + played = Helper["Helper"].nonNull(played, true); + levelPlayed = new LevelPlayed(); + levelPlayed.levelData = levelData; + levelPlayed.played = played; + _context.next = 6; + return levelPlayed.save(); + + case 6: + return _context.abrupt("return", _context.sent); + + case 7: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }, { + key: "getNextLevelData", + value: function getNextLevelData(renderer) { + return LevelPlayed_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var qb, countRes, difficulty, offset; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return this._database.createQueryBuilder(LevelData_LevelData); + + case 2: + qb = _context2.sent; + qb = qb.select("COUNT(*) as count, difficulty").leftJoin(LevelPlayed, "levelPlayed", "levelPlayed.levelData = LevelData.id").where("(deleted = 0 OR deleted = 'false')").andWhere("renderer IN (" + renderer.join(",") + ")").andWhere("(levelPlayed.id IS NULL OR levelPlayed.played = 0)").groupBy("difficulty").orderBy("difficulty, LevelData.id"); + _context2.next = 6; + return qb.getRawMany(); + + case 6: + countRes = _context2.sent; + difficulty = null; + offset = null; + + if (countRes.some(function (res) { + if (res["count"] > 0) { + difficulty = res["difficulty"]; + offset = Math.floor(Math.random() * Math.floor(res["count"])); + return true; + } + + return false; + })) { + _context2.next = 11; + break; + } + + return _context2.abrupt("return", null); + + case 11: + _context2.next = 13; + return this._database.createQueryBuilder(LevelData_LevelData); + + case 13: + qb = _context2.sent; + qb = qb.leftJoin(LevelPlayed, "levelPlayed", "levelPlayed.levelData = LevelData.id").where("(deleted = 0 OR deleted = 'false')").andWhere("difficulty = " + difficulty).andWhere("renderer IN (" + renderer.join(",") + ")").andWhere("(levelPlayed.id IS NULL OR levelPlayed.played = 0)").orderBy("LevelData.id").limit(1).offset(offset); + _context2.next = 17; + return qb.getOne(); + + case 17: + return _context2.abrupt("return", _context2.sent); + + case 18: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }]); + + return LevelPlayed; +}(BaseModel["BaseModel"]); +cordova_sites_database["BaseDatabase"].addModel(LevelPlayed_LevelPlayed); +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Sound/SoundManager.js +var SoundManager = __webpack_require__(17); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Context/MenuSite.js +var MenuSite = __webpack_require__(69); + +// CONCATENATED MODULE: ./src/client/js/Sites/LevelSite.ts +function LevelSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { LevelSite_typeof = function _typeof(obj) { return typeof obj; }; } else { LevelSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return LevelSite_typeof(obj); } + +function LevelSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LevelSite_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LevelSite_createClass(Constructor, protoProps, staticProps) { if (protoProps) LevelSite_defineProperties(Constructor.prototype, protoProps); if (staticProps) LevelSite_defineProperties(Constructor, staticProps); return Constructor; } + +function LevelSite_get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { LevelSite_get = Reflect.get; } else { LevelSite_get = function _get(target, property, receiver) { var base = LevelSite_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return LevelSite_get(target, property, receiver || target); } + +function LevelSite_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = LevelSite_getPrototypeOf(object); if (object === null) break; } return object; } + +function LevelSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) LevelSite_setPrototypeOf(subClass, superClass); } + +function LevelSite_setPrototypeOf(o, p) { LevelSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return LevelSite_setPrototypeOf(o, p); } + +function LevelSite_createSuper(Derived) { var hasNativeReflectConstruct = LevelSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = LevelSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = LevelSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return LevelSite_possibleConstructorReturn(this, result); }; } + +function LevelSite_possibleConstructorReturn(self, call) { if (call && (LevelSite_typeof(call) === "object" || typeof call === "function")) { return call; } return LevelSite_assertThisInitialized(self); } + +function LevelSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function LevelSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function LevelSite_getPrototypeOf(o) { LevelSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return LevelSite_getPrototypeOf(o); } + +var LevelSite_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +var helpIcon = __webpack_require__(279).default; + +var LevelSite_view = __webpack_require__(541); + +var coinSound = __webpack_require__(542).default; + + + + + + + + + + + +var LevelSite_LevelSite = /*#__PURE__*/function (_MenuSite) { + LevelSite_inherits(LevelSite, _MenuSite); + + var _super2 = LevelSite_createSuper(LevelSite); + + function LevelSite(siteManager) { + LevelSite_classCallCheck(this, LevelSite); + + return _super2.call(this, siteManager, LevelSite_view); // this.getNavbarFragment().setBackgroundImage(null); + } + + LevelSite_createClass(LevelSite, [{ + key: "onCreateMenu", + value: function onCreateMenu(navbar) { + var _this = this; + + var _super = Object.create(null, { + onCreateMenu: { + get: function get() { + return LevelSite_get(LevelSite_getPrototypeOf(LevelSite.prototype), "onCreateMenu", _this); + } + } + }); + + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this2 = this; + + var coinAction, levelCounterAction, helpAction; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _super.onCreateMenu.call(this, navbar); + + _context.t0 = client["MenuAction"]; + _context.t1 = Helper["Helper"]; + _context.next = 5; + return client["NativeStoragePromise"].getItem("coins"); + + case 5: + _context.t2 = _context.sent; + _context.t3 = _context.t1.nonNull.call(_context.t1, _context.t2, "0"); + + _context.t4 = function () {}; + + _context.t5 = client["MenuAction"].SHOW_ALWAYS; + coinAction = new _context.t0(_context.t3, _context.t4, _context.t5, 900); + coinAction._shouldTranslate = false; + coinAction.setLiClass("coin-counter img"); + navbar.addAction(coinAction); + this.coinAction = coinAction; + levelCounterAction = new client["MenuAction"](Helper["Helper"].nonNull(this.levelCounter, "1"), function () {}, client["MenuAction"].SHOW_ALWAYS, 900); + levelCounterAction._shouldTranslate = false; + levelCounterAction.setLiClass("level-counter"); + navbar.addAction(levelCounterAction); + this.levelCounterAction = levelCounterAction; + helpAction = new client["MenuAction"]("", function () { + _this2.help(); + }, client["MenuAction"].SHOW_ALWAYS, 900); + helpAction._shouldTranslate = false; + helpAction._icon = helpIcon; + helpAction.setLiClass("help-action show-while-playing"); + navbar.addAction(helpAction); + return _context.abrupt("return", navbar); + + case 25: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onConstruct", + value: function onConstruct(args) { + var _this3 = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return LevelSite_get(LevelSite_getPrototypeOf(LevelSite.prototype), "onConstruct", _this3); + } + } + }); + + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var soundManager; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.t0 = Helper["Helper"]; + _context2.next = 3; + return client["NativeStoragePromise"].getItem("levelCounter"); + + case 3: + _context2.t1 = _context2.sent; + this.levelCounter = _context2.t0.nonNull.call(_context2.t0, _context2.t1, 1); + + // this.levelCounter = 9999; + this.levelScaler = function () {}; + + this.wonParams = { + aborted: false, + coinCounterTimer: null + }; + this.coinPromise = Promise.resolve(); + soundManager = SoundManager["SoundManager"].getInstance(); + _context2.t2 = soundManager; + _context2.t3 = coinSound; + _context2.next = 13; + return client["NativeStoragePromise"].getItem("play-sound", "1"); + + case 13: + _context2.t4 = _context2.sent; + _context2.t5 = _context2.t4 !== "1"; + _context2.t6 = { + audio: _context2.t3, + muted: _context2.t5, + volume: 0.7 + }; + _context2.t7 = SoundManager["SoundManager"].CHANNELS.SOUND; + + _context2.t2.set.call(_context2.t2, _context2.t6, _context2.t7); + + soundManager.resume(SoundManager["SoundManager"].CHANNELS.MUSIC); + return _context2.abrupt("return", _super.onConstruct.call(this, args)); + + case 20: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this4 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return LevelSite_get(LevelSite_getPrototypeOf(LevelSite.prototype), "onViewLoaded", _this4); + } + } + }); + + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this5 = this; + + var res, leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate, continueButton, wonText, scaleHelper; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + res = _super.onViewLoaded.call(this); + leafSegmentTemplate = this.findBy("#segment-leaf-template"); + parentSegmentTemplate = this.findBy("#segment-parent-template"); + rowSegmentTemplate = this.findBy("#segment-row-template"); + triangleTemplate = this.findBy("#segment-triangle-template"); + columnTemplate = this.findBy("#segment-column-template"); + leafSegmentTemplate.removeAttribute("id"); + parentSegmentTemplate.removeAttribute("id"); + rowSegmentTemplate.removeAttribute("id"); + triangleTemplate.removeAttribute("id"); + columnTemplate.removeAttribute("id"); + leafSegmentTemplate.remove(); + parentSegmentTemplate.remove(); + rowSegmentTemplate.remove(); + triangleTemplate.remove(); + columnTemplate.remove(); + continueButton = this.findBy("#continue-button"); + continueButton.addEventListener("click", function () { + continueButton.style.opacity = 0; + + _this5.nextLevel(); + }); + wonText = this.findBy("#won-text"); + scaleHelper = new client["ScaleHelper"](); + _context3.next = 22; + return scaleHelper.scaleToFull(continueButton, continueButton.parentElement, false, true, 2); + + case 22: + this.continueButtonScaler = _context3.sent; + _context3.next = 25; + return scaleHelper.scaleToFull(wonText, wonText.parentElement, false, false, 2, null, 5); + + case 25: + this.wonTextScaler = _context3.sent; + this.wonText = wonText; + this.wonText.style.fontSize = "0"; + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate); + this.coinTemplate = this.findBy("#coin-template"); + this.coinContainer = this.findBy("#coin-container"); + this.coinTemplate.id = null; + ViewHelper["ViewHelper"].removeAllChildren(this.coinContainer); // this.findBy("#help-button").addEventListener("click", () => { + // this.help(); + // }); + + _context3.next = 35; + return this.loadLastLevel(); + + case 35: + return _context3.abrupt("return", res); + + case 36: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "loadLastLevel", + value: function loadLastLevel() { + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this6 = this; + + var currentLevelInfo, levelData, level, levelSegment, scaleHelper; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.prev = 0; + _context4.next = 3; + return client["NativeStoragePromise"].getItem("currentLevel"); + + case 3: + currentLevelInfo = _context4.sent; + + if (!Helper["Helper"].isNotNull(currentLevelInfo)) { + _context4.next = 28; + break; + } + + currentLevelInfo = JSON.parse(currentLevelInfo); + _context4.next = 8; + return LevelData_LevelData.findById(currentLevelInfo["id"]); + + case 8: + levelData = _context4.sent; + + if (!Helper["Helper"].isNull(levelData)) { + _context4.next = 11; + break; + } + + return _context4.abrupt("return", this.nextLevel()); + + case 11: + level = LevelHelper.inflateLevel(levelData, this.templateContainer); + level.setStartRotations(currentLevelInfo["rotations"]); + level.getWonPromise().then(function () { + _this6.levelWon(level); + }); + level.createSegments(); + level.setLocks(currentLevelInfo["locks"]); + + level.getRootSegment()._updateElement(); + + level.saveAsCurrentLevel(); + levelSegment = this.findBy("#level"); + ViewHelper["ViewHelper"].removeAllChildren(levelSegment).appendChild(level.getRootSegment().getElement()); + scaleHelper = new client["ScaleHelper"](); + _context4.next = 23; + return scaleHelper.scaleTo(1, levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0); + + case 23: + this.levelScaler = _context4.sent; + this.level = level; + client["Matomo"].push(["trackEvent", "LevelSite", "LoadLastLevel"]); + this.level.checkHasWon(); + return _context4.abrupt("return"); + + case 28: + _context4.next = 33; + break; + + case 30: + _context4.prev = 30; + _context4.t0 = _context4["catch"](0); + console.error(_context4.t0); + + case 33: + return _context4.abrupt("return", this.nextLevel()); + + case 34: + case "end": + return _context4.stop(); + } + } + }, _callee4, this, [[0, 30]]); + })); + } + }, { + key: "startEndSite", + value: function startEndSite() { + this.startSite(EndSite); + this.finish(); + } + }, { + key: "updateLevelCounter", + value: function updateLevelCounter() { + this.levelCounterAction.setName(this.levelCounter); + + if (this.levelCounter >= 10 && this.levelCounter <= 99) { + this.levelCounterAction.setLiClass("num-10 level-counter"); + } else if (this.levelCounter >= 100 && this.levelCounter <= 999) { + this.levelCounterAction.setLiClass("num-100 level-counter"); + } else if (this.levelCounter >= 1000) { + this.levelCounterAction.setLiClass("num-1000 level-counter"); + } else { + this.levelCounterAction.setLiClass("level-counter"); + } + } + }, { + key: "nextLevel", + value: function nextLevel() { + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var _this7 = this; + + var levelData, level, levelSegment, scaleHelper; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + this.showLoadingSymbol(); + _context6.prev = 1; + _context6.next = 4; + return LevelPlayed_LevelPlayed.getNextLevelData(LevelSite.RENDERER_TYPES); + + case 4: + levelData = _context6.sent; + + if (!Helper["Helper"].isNull(levelData)) { + _context6.next = 8; + break; + } + + this.startEndSite(); + return _context6.abrupt("return"); + + case 8: + level = LevelHelper.inflateLevel(levelData, this.templateContainer); //Waiting for Level to be done + + if (!(this.level && level.id === this.level.id)) { + _context6.next = 15; + break; + } + + console.log("Level is the same as before! reload!"); + _context6.next = 13; + return new Promise(function (resolve) { + return setTimeout(resolve, 50); + }); + + case 13: + // return; + debugger; + return _context6.abrupt("return", this.nextLevel()); + + case 15: + level.getWonPromise().then(function () { + return LevelSite_awaiter(_this7, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return this.levelWon(level); + + case 2: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + }); + level.createSegments(); + + level.getRootSegment()._updateElement(); + + level.saveAsCurrentLevel(); + levelSegment = this.findBy("#level"); + ViewHelper["ViewHelper"].removeAllChildren(levelSegment).appendChild(level.getRootSegment().getElement()); + + this._view.classList.remove('won'); + + this.wonText.style.fontSize = "0"; + this.removeLoadingSymbol(); + scaleHelper = new client["ScaleHelper"](); + _context6.next = 27; + return scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0); + + case 27: + this.levelScaler = _context6.sent; + this.level = level; + this.updateLevelCounter(); + _context6.t0 = this.coinAction; + _context6.t1 = Helper["Helper"]; + _context6.next = 34; + return client["NativeStoragePromise"].getItem("coins"); + + case 34: + _context6.t2 = _context6.sent; + _context6.t3 = _context6.t1.nonNull.call(_context6.t1, _context6.t2, "0"); + + _context6.t0.setName.call(_context6.t0, _context6.t3); + + // this.coinAction.redraw(); + this.wonParams.aborted = true; + clearTimeout(this.wonParams.coinCounterTimer); + client["Matomo"].push(["trackEvent", "LevelSite", "NextLevel", "Level Number Normal", this.levelCounter]); + this.level.checkHasWon(); + return _context6.abrupt("return", this.tutorial()); + + case 44: + _context6.prev = 44; + _context6.t4 = _context6["catch"](1); + console.log("Fehler!"); + console.error(_context6.t4); + this.startEndSite(); + + case 49: + case "end": + return _context6.stop(); + } + } + }, _callee6, this, [[1, 44]]); + })); + } + }, { + key: "onStart", + value: function onStart(args) { + var _this8 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return LevelSite_get(LevelSite_getPrototypeOf(LevelSite.prototype), "onStart", _this8); + } + } + }); + + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var res, soundManager; + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + this.setTitle("WR"); + client["Matomo"].update("Level Sites"); + res = _super.onStart.call(this, args); + + if (this.levelCounterAction) { + this.updateLevelCounter(); + } + + this.levelScaler(); //TODO Sound + + soundManager = SoundManager["SoundManager"].getInstance(); + _context7.t0 = soundManager; + _context7.t1 = coinSound; + _context7.next = 10; + return client["NativeStoragePromise"].getItem("play-sound", "1"); + + case 10: + _context7.t2 = _context7.sent; + _context7.t3 = _context7.t2 !== "1"; + _context7.t4 = { + audio: _context7.t1, + muted: _context7.t3, + volume: 0.7 + }; + _context7.t5 = SoundManager["SoundManager"].CHANNELS.SOUND; + + _context7.t0.set.call(_context7.t0, _context7.t4, _context7.t5); + + _context7.next = 17; + return this.tutorial(); + + case 17: + return _context7.abrupt("return", res); + + case 18: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + }, { + key: "levelWon", + value: function levelWon(level) { + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee11() { + var _this9 = this; + + return regeneratorRuntime.wrap(function _callee11$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + _context11.prev = 0; + return _context11.delegateYield( /*#__PURE__*/regeneratorRuntime.mark(function _callee10() { + var savePromise, continueButton, coinsPerLevel, coinsBefore, soundManager, audioOptions, _loop, i, leafs; + + return regeneratorRuntime.wrap(function _callee10$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + savePromise = LevelPlayed_LevelPlayed.setPlayed(level.getLevelData()); // savePromise.then((r) => console.log("levelSaved!", r)); + + _this9.levelCounter++; + _context10.next = 4; + return client["NativeStoragePromise"].setItem("levelCounter", _this9.levelCounter); + + case 4: + _context10.next = 6; + return client["NativeStoragePromise"].remove("currentLevel"); + + case 6: + continueButton = _this9.findBy("#continue-button"); + continueButton.style.transition = "none"; + continueButton.style.opacity = 0; //Todo richtiges Element aufrufen? + + _this9._view.classList.add('won'); + + ViewHelper["ViewHelper"].removeAllChildren(_this9.coinContainer); + _context10.next = 13; + return client["NativeStoragePromise"].getItem("coinsPerLevel", 5); + + case 13: + coinsPerLevel = _context10.sent; + coinsBefore = 0; + soundManager = SoundManager["SoundManager"].getInstance(); + audioOptions = soundManager.get(SoundManager["SoundManager"].CHANNELS.SOUND); + _this9.coinPromise = _this9.coinPromise.then(function () { + return LevelSite_awaiter(_this9, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { + return regeneratorRuntime.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + _context8.t0 = parseInt; + _context8.t1 = Helper["Helper"]; + _context8.next = 4; + return client["NativeStoragePromise"].getItem("coins"); + + case 4: + _context8.t2 = _context8.sent; + _context8.t3 = _context8.t1.nonNull.call(_context8.t1, _context8.t2, "0"); + coinsBefore = (0, _context8.t0)(_context8.t3); + _context8.next = 9; + return client["NativeStoragePromise"].setItem("coins", coinsBefore + parseInt(coinsPerLevel)); + + case 9: + case "end": + return _context8.stop(); + } + } + }, _callee8); + })); + }).then(function () { + return LevelSite_awaiter(_this9, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { + return regeneratorRuntime.wrap(function _callee9$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + return _context9.abrupt("return", Promise.all([new Promise(function (r) { + setTimeout(function () { + //TODO animationen einbauen + continueButton.style.opacity = 1; + r(); + }, 500); + }), audioOptions.loadedPromise.catch(function (e) { + console.error(e); + })])); + + case 1: + case "end": + return _context9.stop(); + } + } + }, _callee9); + })); + }); + _this9.wonParams.aborted = false; + + _loop = function _loop(i) { + var coinElem = _this9.coinTemplate.cloneNode(true); + + _this9.coinContainer.appendChild(coinElem); + + _this9.coinPromise = _this9.coinPromise.then(function () { + return new Promise(function (r) { + var timeout = 350; + + if (!_this9.wonParams.aborted) { + //TODO animationen einbauen + coinElem.style.opacity = "1"; + soundManager.play(SoundManager["SoundManager"].CHANNELS.SOUND); + _this9.wonParams.coinCounterTimer = setTimeout(function () { + if (!_this9.wonParams.aborted) { + _this9.coinAction.setName(++coinsBefore); + } + }, timeout / 2); + } else { + r(); + } //Always do the next promise for garbage collection + + + setTimeout(r, timeout); + }); + }); + }; + + for (i = 0; i < coinsPerLevel; i++) { + _loop(i); + } + + _this9.coinPromise = _this9.coinPromise.catch(function (e) { + console.error(e); + }); + + _this9.wonTextScaler(); + + _this9.continueButtonScaler(); + + _this9.levelScaler(); + + _context10.t0 = client["Matomo"]; + _context10.t1 = parseInt; + _context10.t2 = Helper["Helper"]; + _context10.next = 30; + return client["NativeStoragePromise"].getItem("coins"); + + case 30: + _context10.t3 = _context10.sent; + _context10.t4 = _context10.t2.nonNull.call(_context10.t2, _context10.t3, "0"); + _context10.t5 = (0, _context10.t1)(_context10.t4); + _context10.t6 = ["trackEvent", "LevelSite", "LevelWon", "Coins", _context10.t5]; + + _context10.t0.push.call(_context10.t0, _context10.t6); + + leafs = level.getLeafSegments(); + leafs.forEach(function (leaf, i) { + var elem = leaf.getElement(); + elem.style.animationDelay = i * 50 + "ms"; + elem.classList.add("jump-animation"); + }); + _context10.next = 39; + return savePromise; + + case 39: + case "end": + return _context10.stop(); + } + } + }, _callee10); + })(), "t0", 2); + + case 2: + _context11.next = 7; + break; + + case 4: + _context11.prev = 4; + _context11.t1 = _context11["catch"](0); + console.error(_context11.t1); + + case 7: + case "end": + return _context11.stop(); + } + } + }, _callee11, null, [[0, 4]]); + })); + } + }, { + key: "help", + value: function help() { + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee12() { + var cost, currentCoins, rotatables, index, segmentToHelp; + return regeneratorRuntime.wrap(function _callee12$(_context12) { + while (1) { + switch (_context12.prev = _context12.next) { + case 0: + _context12.next = 2; + return client["NativeStoragePromise"].getItem("costForHelp", 25); + + case 2: + cost = _context12.sent; + _context12.t0 = parseInt; + _context12.t1 = Helper["Helper"]; + _context12.next = 7; + return client["NativeStoragePromise"].getItem("coins"); + + case 7: + _context12.t2 = _context12.sent; + _context12.t3 = _context12.t1.nonNull.call(_context12.t1, _context12.t2, 0); + currentCoins = (0, _context12.t0)(_context12.t3); + + if (!(currentCoins >= cost)) { + _context12.next = 24; + break; + } + + currentCoins -= cost; + _context12.next = 14; + return client["NativeStoragePromise"].setItem("coins", currentCoins); + + case 14: + this.coinAction.setName(currentCoins); + rotatables = this.level.getRotatableSegments(); + rotatables = rotatables.filter(function (segment) { + return !segment.isSolved(false); + }); + index = Math.floor(Math.random() * rotatables.length); + segmentToHelp = rotatables[index]; + + while (segmentToHelp.rotation !== 0) { + segmentToHelp.rotate(); + } + + segmentToHelp.setIsRotatable(false); + this.level.saveAsCurrentLevel(); // Matomo.push(["trackEvent", "LevelSite", "Help", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); + + _context12.next = 25; + break; + + case 24: + new client["Toast"]("not-enough-coins").show(); // Matomo.push(["trackEvent", "LevelSite", "Help", "Not enough Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); + + case 25: + case "end": + return _context12.stop(); + } + } + }, _callee12, this); + })); + } + }, { + key: "tutorial", + value: function tutorial() { + return LevelSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee18() { + var _this10 = this; + + var tutorialScale, currentStep, scaleHelper, _currentStep, _scaleHelper, eventListener, _currentStep2, _scaleHelper2, rotatableSegments, firstSegment, pointer; + + return regeneratorRuntime.wrap(function _callee18$(_context18) { + while (1) { + switch (_context18.prev = _context18.next) { + case 0: + tutorialScale = 0.01; + + if (!(this.level.id === LevelSite.TUTORIAL.FIRST_LEVEL)) { + _context18.next = 25; + break; + } + + _context18.t0 = Helper["Helper"]; + _context18.next = 5; + return client["NativeStoragePromise"].getItem("tutorial-step"); + + case 5: + _context18.t1 = _context18.sent; + currentStep = _context18.t0.nonNull.call(_context18.t0, _context18.t1, "1"); + scaleHelper = new client["ScaleHelper"](); + + this._view.classList.add("tutorial"); + + this._view.classList.add("step-" + currentStep); + + _context18.t2 = currentStep; + _context18.next = _context18.t2 === "1" ? 13 : _context18.t2 === "2" ? 17 : 22; + break; + + case 13: + this.level.setSegmentClickedListener(function () { + return LevelSite_awaiter(_this10, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee13() { + return regeneratorRuntime.wrap(function _callee13$(_context13) { + while (1) { + switch (_context13.prev = _context13.next) { + case 0: + this._view.classList.remove("step-1"); + + _context13.next = 3; + return client["NativeStoragePromise"].setItem("tutorial-step", "2"); + + case 3: + this.tutorial(); + + case 4: + case "end": + return _context13.stop(); + } + } + }, _callee13, this); + })); + }); // let textElem = this.findBy(".tutorial-text .step-1"); + + _context18.next = 16; + return this.levelScaler(); + + case 16: + return _context18.abrupt("break", 23); + + case 17: + this.level.setSegmentClickedListener(function () {}); + this.level.getWonPromise().then(function () { + return LevelSite_awaiter(_this10, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee15() { + var _this11 = this; + + return regeneratorRuntime.wrap(function _callee15$(_context15) { + while (1) { + switch (_context15.prev = _context15.next) { + case 0: + this._view.classList.remove("tutorial"); + + this._view.classList.remove("step-2"); + + _context15.next = 4; + return client["NativeStoragePromise"].remove("tutorial-step"); + + case 4: + this.coinPromise = this.coinPromise.then(function () { + return LevelSite_awaiter(_this11, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee14() { + return regeneratorRuntime.wrap(function _callee14$(_context14) { + while (1) { + switch (_context14.prev = _context14.next) { + case 0: + new client["Toast"]("extra-coins-after-first-level").show(); + _context14.t0 = client["NativeStoragePromise"]; + _context14.t1 = parseInt; + _context14.t2 = Helper["Helper"]; + _context14.next = 6; + return client["NativeStoragePromise"].getItem("coins"); + + case 6: + _context14.t3 = _context14.sent; + _context14.t4 = _context14.t2.nonNull.call(_context14.t2, _context14.t3, "0"); + _context14.t5 = (0, _context14.t1)(_context14.t4); + _context14.t6 = _context14.t5 + 50; + _context14.next = 12; + return _context14.t0.setItem.call(_context14.t0, "coins", _context14.t6); + + case 12: + _context14.t7 = this.coinAction; + _context14.t8 = Helper["Helper"]; + _context14.next = 16; + return client["NativeStoragePromise"].getItem("coins"); + + case 16: + _context14.t9 = _context14.sent; + _context14.t10 = _context14.t8.nonNull.call(_context14.t8, _context14.t9, "0"); + + _context14.t7.setName.call(_context14.t7, _context14.t10); + + case 19: + case "end": + return _context14.stop(); + } + } + }, _callee14, this); + })); + }); + + case 5: + case "end": + return _context15.stop(); + } + } + }, _callee15, this); + })); + }); // let textElem = this.findBy(".tutorial-text .step-2"); + + _context18.next = 21; + return this.levelScaler(); + + case 21: + return _context18.abrupt("break", 23); + + case 22: + this._view.classList.remove("tutorial"); + + case 23: + _context18.next = 67; + break; + + case 25: + if (!(this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL)) { + _context18.next = 45; + break; + } + + _context18.t3 = Helper["Helper"]; + _context18.next = 29; + return client["NativeStoragePromise"].getItem("tutorial-step"); + + case 29: + _context18.t4 = _context18.sent; + _currentStep = _context18.t3.nonNull.call(_context18.t3, _context18.t4, "3"); + _context18.t5 = _currentStep; + _context18.next = _context18.t5 === "3" ? 34 : 42; + break; + + case 34: + _scaleHelper = new client["ScaleHelper"](); + + this._view.classList.add("tutorial"); + + this._view.classList.add("step-" + _currentStep); + + eventListener = function eventListener() { + return LevelSite_awaiter(_this10, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee16() { + return regeneratorRuntime.wrap(function _callee16$(_context16) { + while (1) { + switch (_context16.prev = _context16.next) { + case 0: + this._view.classList.remove("tutorial"); + + this._view.classList.remove("step-3"); + + _context16.next = 4; + return client["NativeStoragePromise"].setItem("tutorial-step", "4"); + + case 4: + // this.findBy("#help-button").removeEventListener("click", eventListener); + this.levelScaler(); + + case 5: + case "end": + return _context16.stop(); + } + } + }, _callee16, this); + })); + }; + + this.findBy(".help-action").addEventListener("click", eventListener); // let textElem = this.findBy(".tutorial-text .step-3"); + + _context18.next = 41; + return this.levelScaler(); + + case 41: + return _context18.abrupt("break", 43); + + case 42: + this._view.classList.remove("tutorial"); + + case 43: + _context18.next = 67; + break; + + case 45: + if (!(this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL)) { + _context18.next = 67; + break; + } + + _context18.t6 = Helper["Helper"]; + _context18.next = 49; + return client["NativeStoragePromise"].getItem("tutorial-step"); + + case 49: + _context18.t7 = _context18.sent; + _currentStep2 = _context18.t6.nonNull.call(_context18.t6, _context18.t7, "4"); + _context18.t8 = _currentStep2; + _context18.next = _context18.t8 === "4" ? 54 : 66; + break; + + case 54: + _scaleHelper2 = new client["ScaleHelper"](); + + this._view.classList.add("tutorial"); + + this._view.classList.add("step-" + _currentStep2); + + rotatableSegments = this.level.getRotatableSegments(); + firstSegment = rotatableSegments[2]; + pointer = this.findBy("#tutorial-pointer"); + pointer.remove(); + firstSegment.element.appendChild(pointer); + this.level.setSegmentClickedListener(function (segment) { + return LevelSite_awaiter(_this10, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee17() { + return regeneratorRuntime.wrap(function _callee17$(_context17) { + while (1) { + switch (_context17.prev = _context17.next) { + case 0: + if (!(firstSegment === segment)) { + _context17.next = 6; + break; + } + + this._view.classList.remove("tutorial"); + + this._view.classList.remove("step-4"); + + _context17.next = 5; + return client["NativeStoragePromise"].setItem("tutorial-step", "5"); + + case 5: + this.levelScaler(); + + case 6: + case "end": + return _context17.stop(); + } + } + }, _callee17, this); + })); + }); // let textElem = this.findBy(".tutorial-text .step-4"); + + _context18.next = 65; + return this.levelScaler(); + + case 65: + return _context18.abrupt("break", 67); + + case 66: + this._view.classList.remove("tutorial"); + + case 67: + case "end": + return _context18.stop(); + } + } + }, _callee18, this); + })); + } + }]); + + return LevelSite; +}(MenuSite["MenuSite"]); +LevelSite_LevelSite.RENDERER_TYPES = [20, 40, 60, 80, 81, 82, 83, 100, 110, 111, 112, 120, 140, 160]; +LevelSite_LevelSite.TUTORIAL = { + FIRST_LEVEL: 67, + SECOND_LEVEL: 15, + BIG_SEGMENT_LEVEL: 1921 +}; +// CONCATENATED MODULE: ./src/client/js/wordrotator/Level/MainMenuLevel.js +function MainMenuLevel_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { MainMenuLevel_typeof = function _typeof(obj) { return typeof obj; }; } else { MainMenuLevel_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return MainMenuLevel_typeof(obj); } + +function MainMenuLevel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function MainMenuLevel_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function MainMenuLevel_createClass(Constructor, protoProps, staticProps) { if (protoProps) MainMenuLevel_defineProperties(Constructor.prototype, protoProps); if (staticProps) MainMenuLevel_defineProperties(Constructor, staticProps); return Constructor; } + +function MainMenuLevel_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) MainMenuLevel_setPrototypeOf(subClass, superClass); } + +function MainMenuLevel_setPrototypeOf(o, p) { MainMenuLevel_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return MainMenuLevel_setPrototypeOf(o, p); } + +function MainMenuLevel_createSuper(Derived) { var hasNativeReflectConstruct = MainMenuLevel_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = MainMenuLevel_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = MainMenuLevel_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return MainMenuLevel_possibleConstructorReturn(this, result); }; } + +function MainMenuLevel_possibleConstructorReturn(self, call) { if (call && (MainMenuLevel_typeof(call) === "object" || typeof call === "function")) { return call; } return MainMenuLevel_assertThisInitialized(self); } + +function MainMenuLevel_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function MainMenuLevel_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function MainMenuLevel_getPrototypeOf(o) { MainMenuLevel_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return MainMenuLevel_getPrototypeOf(o); } + + +var MainMenuLevel = /*#__PURE__*/function (_FourWordsLevel) { + MainMenuLevel_inherits(MainMenuLevel, _FourWordsLevel); + + var _super = MainMenuLevel_createSuper(MainMenuLevel); + + function MainMenuLevel(templateContainer) { + MainMenuLevel_classCallCheck(this, MainMenuLevel); + + return _super.call(this, templateContainer, 4); + } + + MainMenuLevel_createClass(MainMenuLevel, [{ + key: "saveAsCurrentLevel", + value: function saveAsCurrentLevel() {} // checkHasWon(delayPromise) { + // } + + }]); + + return MainMenuLevel; +}(FourWordsLevel_FourWordsLevel); +// EXTERNAL MODULE: ./node_modules/cordova-sites-easy-sync/dist/client/SyncJob.js +var SyncJob = __webpack_require__(210); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/ShareManager/ShareManager.js +var ShareManager = __webpack_require__(208); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Translator.js +var Translator = __webpack_require__(32); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Legacy/Matomo.js +var Matomo = __webpack_require__(55); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction.js +var MenuAction = __webpack_require__(80); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/App.js +var App = __webpack_require__(33); + +// CONCATENATED MODULE: ./src/client/js/Sites/TutorialSite.ts +function TutorialSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { TutorialSite_typeof = function _typeof(obj) { return typeof obj; }; } else { TutorialSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return TutorialSite_typeof(obj); } + +function TutorialSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TutorialSite_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function TutorialSite_createClass(Constructor, protoProps, staticProps) { if (protoProps) TutorialSite_defineProperties(Constructor.prototype, protoProps); if (staticProps) TutorialSite_defineProperties(Constructor, staticProps); return Constructor; } + +function TutorialSite_get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { TutorialSite_get = Reflect.get; } else { TutorialSite_get = function _get(target, property, receiver) { var base = TutorialSite_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return TutorialSite_get(target, property, receiver || target); } + +function TutorialSite_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = TutorialSite_getPrototypeOf(object); if (object === null) break; } return object; } + +function TutorialSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) TutorialSite_setPrototypeOf(subClass, superClass); } + +function TutorialSite_setPrototypeOf(o, p) { TutorialSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return TutorialSite_setPrototypeOf(o, p); } + +function TutorialSite_createSuper(Derived) { var hasNativeReflectConstruct = TutorialSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = TutorialSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = TutorialSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return TutorialSite_possibleConstructorReturn(this, result); }; } + +function TutorialSite_possibleConstructorReturn(self, call) { if (call && (TutorialSite_typeof(call) === "object" || typeof call === "function")) { return call; } return TutorialSite_assertThisInitialized(self); } + +function TutorialSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function TutorialSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function TutorialSite_getPrototypeOf(o) { TutorialSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return TutorialSite_getPrototypeOf(o); } + +var TutorialSite_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + + + + + + + +var TutorialSite_view = __webpack_require__(545); + +var TutorialSite_TutorialSite = /*#__PURE__*/function (_MenuSite) { + TutorialSite_inherits(TutorialSite, _MenuSite); + + var _super2 = TutorialSite_createSuper(TutorialSite); + + function TutorialSite(siteManager) { + TutorialSite_classCallCheck(this, TutorialSite); + + return _super2.call(this, siteManager, TutorialSite_view); + } + + TutorialSite_createClass(TutorialSite, [{ + key: "onConstruct", + value: function onConstruct(constructParameters) { + var _this = this; + + var _super = Object.create(null, { + onConstruct: { + get: function get() { + return TutorialSite_get(TutorialSite_getPrototypeOf(TutorialSite.prototype), "onConstruct", _this); + } + } + }); + + return TutorialSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var _this2 = this; + + var res; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + res = _super.onConstruct.call(this, constructParameters); + _context2.next = 3; + return Promise.race([new cordova_sites_easy_sync_dist_client["SyncJob"]().sync([LevelData_LevelData]).catch(function (e) { + return console.error(e); + }), new Promise(function (resolve) { + return TutorialSite_awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var levelData; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return LevelData_LevelData.findById(LevelSite_LevelSite.TUTORIAL.FIRST_LEVEL); + + case 2: + levelData = _context.sent; + + if (levelData !== null) { + resolve(); + } + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + })]); + + case 3: + return _context2.abrupt("return", res); + + case 4: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this3 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return TutorialSite_get(TutorialSite_getPrototypeOf(TutorialSite.prototype), "onViewLoaded", _this3); + } + } + }); + + return TutorialSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var res, leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate, tutorial1Container, tutorial2Container, tutorial3Container, level1, level2, level3, pointer, rotatableSegments, pointerSegment; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + res = _super.onViewLoaded.call(this); + leafSegmentTemplate = this.findBy("#segment-leaf-template"); + parentSegmentTemplate = this.findBy("#segment-parent-template"); + rowSegmentTemplate = this.findBy("#segment-row-template"); + triangleTemplate = this.findBy("#segment-triangle-template"); + columnTemplate = this.findBy("#segment-column-template"); + leafSegmentTemplate.removeAttribute("id"); + parentSegmentTemplate.removeAttribute("id"); + rowSegmentTemplate.removeAttribute("id"); + triangleTemplate.removeAttribute("id"); + columnTemplate.removeAttribute("id"); + leafSegmentTemplate.remove(); + parentSegmentTemplate.remove(); + rowSegmentTemplate.remove(); + triangleTemplate.remove(); + columnTemplate.remove(); + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate); + tutorial1Container = this.findBy("#tutorial-1 .level-container"); + tutorial2Container = this.findBy("#tutorial-2 .level-container"); + tutorial3Container = this.findBy("#tutorial-3 .level-container"); + _context3.next = 22; + return this.loadLevel(LevelSite_LevelSite.TUTORIAL.FIRST_LEVEL); + + case 22: + level1 = _context3.sent; + _context3.next = 25; + return this.loadLevel(LevelSite_LevelSite.TUTORIAL.SECOND_LEVEL); + + case 25: + level2 = _context3.sent; + _context3.next = 28; + return this.loadLevel(LevelSite_LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL); + + case 28: + level3 = _context3.sent; + level1.setSaveAsCurrentAfterCheckWon(false); + level2.setSaveAsCurrentAfterCheckWon(false); + level3.setSaveAsCurrentAfterCheckWon(false); + tutorial1Container.appendChild(level1.getRootSegment().getElement()); + tutorial2Container.appendChild(level2.getRootSegment().getElement()); + tutorial3Container.appendChild(level3.getRootSegment().getElement()); + pointer = this.findBy("#tutorial-pointer"); + pointer.remove(); + rotatableSegments = level3.getRotatableSegments(); + pointerSegment = rotatableSegments[2]; + pointerSegment.element.appendChild(pointer); + this.find(".help-action").addEventListener("click", function () { + TutorialSite.help(level2); + }); + return _context3.abrupt("return", res); + + case 42: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "loadLevel", + value: function loadLevel(id) { + return TutorialSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var levelData, level; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.prev = 0; + _context4.next = 3; + return LevelData_LevelData.findById(id); + + case 3: + levelData = _context4.sent; + level = LevelHelper.inflateLevel(levelData, this.templateContainer); + level.getWonPromise().then(function () { + console.log("level won!"); + new client["Toast"]("you solved the tutorial level!").show(); //TODO + // this.levelWon(level); + }); + level.createSegments(); + + level.getRootSegment()._updateElement(); + + return _context4.abrupt("return", level); + + case 11: + _context4.prev = 11; + _context4.t0 = _context4["catch"](0); + console.log("Fehler!"); + console.error(_context4.t0); // this.startEndSite(); + + return _context4.abrupt("return", null); + + case 16: + case "end": + return _context4.stop(); + } + } + }, _callee4, this, [[0, 11]]); + })); + } + }], [{ + key: "help", + value: function help(level) { + return TutorialSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var rotatables, index, segmentToHelp; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + rotatables = level.getRotatableSegments(); + rotatables = rotatables.filter(function (segment) { + return !segment.isSolved(false); + }); + + if (!(rotatables.length === 0)) { + _context5.next = 4; + break; + } + + return _context5.abrupt("return"); + + case 4: + index = Math.floor(Math.random() * rotatables.length); + segmentToHelp = rotatables[index]; + + while (segmentToHelp.rotation !== 0) { + segmentToHelp.rotate(); + } + + segmentToHelp.setIsRotatable(false); + + case 8: + case "end": + return _context5.stop(); + } + } + }, _callee5); + })); + } + }]); + + return TutorialSite; +}(client["MenuSite"]); +App["App"].addInitialization(function (app) { + app.addDeepLink("tutorial", TutorialSite_TutorialSite); +}); +// CONCATENATED MODULE: ./src/client/js/Sites/CreditsSite.ts +function CreditsSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { CreditsSite_typeof = function _typeof(obj) { return typeof obj; }; } else { CreditsSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return CreditsSite_typeof(obj); } + +function CreditsSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function CreditsSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) CreditsSite_setPrototypeOf(subClass, superClass); } + +function CreditsSite_setPrototypeOf(o, p) { CreditsSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return CreditsSite_setPrototypeOf(o, p); } + +function CreditsSite_createSuper(Derived) { var hasNativeReflectConstruct = CreditsSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = CreditsSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = CreditsSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return CreditsSite_possibleConstructorReturn(this, result); }; } + +function CreditsSite_possibleConstructorReturn(self, call) { if (call && (CreditsSite_typeof(call) === "object" || typeof call === "function")) { return call; } return CreditsSite_assertThisInitialized(self); } + +function CreditsSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function CreditsSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function CreditsSite_getPrototypeOf(o) { CreditsSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return CreditsSite_getPrototypeOf(o); } + +var CreditsSite_view = __webpack_require__(547); + + + +var CreditsSite = /*#__PURE__*/function (_MenuSite) { + CreditsSite_inherits(CreditsSite, _MenuSite); + + var _super = CreditsSite_createSuper(CreditsSite); + + function CreditsSite(siteManager) { + CreditsSite_classCallCheck(this, CreditsSite); + + return _super.call(this, siteManager, CreditsSite_view); + } + + return CreditsSite; +}(client["MenuSite"]); +App["App"].addInitialization(function (app) { + app.addDeepLink("credits", CreditsSite); +}); +// CONCATENATED MODULE: ./src/client/js/Sites/PrivacyPolicySite.ts +function PrivacyPolicySite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { PrivacyPolicySite_typeof = function _typeof(obj) { return typeof obj; }; } else { PrivacyPolicySite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return PrivacyPolicySite_typeof(obj); } + +function PrivacyPolicySite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function PrivacyPolicySite_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function PrivacyPolicySite_createClass(Constructor, protoProps, staticProps) { if (protoProps) PrivacyPolicySite_defineProperties(Constructor.prototype, protoProps); if (staticProps) PrivacyPolicySite_defineProperties(Constructor, staticProps); return Constructor; } + +function PrivacyPolicySite_get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { PrivacyPolicySite_get = Reflect.get; } else { PrivacyPolicySite_get = function _get(target, property, receiver) { var base = PrivacyPolicySite_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return PrivacyPolicySite_get(target, property, receiver || target); } + +function PrivacyPolicySite_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = PrivacyPolicySite_getPrototypeOf(object); if (object === null) break; } return object; } + +function PrivacyPolicySite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) PrivacyPolicySite_setPrototypeOf(subClass, superClass); } + +function PrivacyPolicySite_setPrototypeOf(o, p) { PrivacyPolicySite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return PrivacyPolicySite_setPrototypeOf(o, p); } + +function PrivacyPolicySite_createSuper(Derived) { var hasNativeReflectConstruct = PrivacyPolicySite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = PrivacyPolicySite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = PrivacyPolicySite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return PrivacyPolicySite_possibleConstructorReturn(this, result); }; } + +function PrivacyPolicySite_possibleConstructorReturn(self, call) { if (call && (PrivacyPolicySite_typeof(call) === "object" || typeof call === "function")) { return call; } return PrivacyPolicySite_assertThisInitialized(self); } + +function PrivacyPolicySite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function PrivacyPolicySite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function PrivacyPolicySite_getPrototypeOf(o) { PrivacyPolicySite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return PrivacyPolicySite_getPrototypeOf(o); } + +var PrivacyPolicySite_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +var PrivacyPolicySite_view = __webpack_require__(548); + + + + +var PrivacyPolicySite_PrivacyPolicySite = /*#__PURE__*/function (_MenuSite) { + PrivacyPolicySite_inherits(PrivacyPolicySite, _MenuSite); + + var _super2 = PrivacyPolicySite_createSuper(PrivacyPolicySite); + + function PrivacyPolicySite(siteManager) { + PrivacyPolicySite_classCallCheck(this, PrivacyPolicySite); + + return _super2.call(this, siteManager, PrivacyPolicySite_view); + } + + PrivacyPolicySite_createClass(PrivacyPolicySite, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return PrivacyPolicySite_get(PrivacyPolicySite_getPrototypeOf(PrivacyPolicySite.prototype), "onViewLoaded", _this); + } + } + }); + + return PrivacyPolicySite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var trackSwitch; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + trackSwitch = this.findBy("#track-switch"); + trackSwitch.addEventListener("change", function (e) { + Matomo["Matomo"].setTrack(this.checked === true); + e.stopPropagation(); + e.preventDefault(); + }); + return _context.abrupt("return", _super.onViewLoaded.call(this)); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + } + }, { + key: "onStart", + value: function onStart(args) { + var _this2 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return PrivacyPolicySite_get(PrivacyPolicySite_getPrototypeOf(PrivacyPolicySite.prototype), "onStart", _this2); + } + } + }); + + return PrivacyPolicySite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var trackSwitch; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + trackSwitch = this.findBy("#track-switch"); + _context2.next = 3; + return Matomo["Matomo"].getTrackingPromise(); + + case 3: + _context2.t0 = _context2.sent; + trackSwitch.checked = _context2.t0 === "1"; + return _context2.abrupt("return", _super.onStart.call(this, args)); + + case 6: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + } + }]); + + return PrivacyPolicySite; +}(client["MenuSite"]); +App["App"].addInitialization(function (app) { + app.addDeepLink("privacyPolicy", PrivacyPolicySite_PrivacyPolicySite); +}); +// CONCATENATED MODULE: ./src/client/js/Sites/ImpressumSite.ts +function ImpressumSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ImpressumSite_typeof = function _typeof(obj) { return typeof obj; }; } else { ImpressumSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ImpressumSite_typeof(obj); } + +function ImpressumSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ImpressumSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ImpressumSite_setPrototypeOf(subClass, superClass); } + +function ImpressumSite_setPrototypeOf(o, p) { ImpressumSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ImpressumSite_setPrototypeOf(o, p); } + +function ImpressumSite_createSuper(Derived) { var hasNativeReflectConstruct = ImpressumSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = ImpressumSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = ImpressumSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return ImpressumSite_possibleConstructorReturn(this, result); }; } + +function ImpressumSite_possibleConstructorReturn(self, call) { if (call && (ImpressumSite_typeof(call) === "object" || typeof call === "function")) { return call; } return ImpressumSite_assertThisInitialized(self); } + +function ImpressumSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function ImpressumSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function ImpressumSite_getPrototypeOf(o) { ImpressumSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ImpressumSite_getPrototypeOf(o); } + +var ImpressumSite_view = __webpack_require__(549); + + + +var ImpressumSite = /*#__PURE__*/function (_MenuSite) { + ImpressumSite_inherits(ImpressumSite, _MenuSite); + + var _super = ImpressumSite_createSuper(ImpressumSite); + + function ImpressumSite(siteManager) { + ImpressumSite_classCallCheck(this, ImpressumSite); + + return _super.call(this, siteManager, ImpressumSite_view); + } + + return ImpressumSite; +}(client["MenuSite"]); +App["App"].addInitialization(function (app) { + app.addDeepLink("impressum", ImpressumSite); +}); +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/NativeStoragePromise.js +var NativeStoragePromise = __webpack_require__(42); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Context/AbstractFragment.js +var AbstractFragment = __webpack_require__(79); + +// EXTERNAL MODULE: ./node_modules/cordova-sites-easy-sync/dist/client/LastSyncDates.js +var LastSyncDates = __webpack_require__(129); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Form.js +var Form = __webpack_require__(161); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/DataManager.js +var DataManager = __webpack_require__(68); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Toast/Toast.js +var Toast = __webpack_require__(101); + +// CONCATENATED MODULE: ./src/client/js/Sites/ContactSite.ts +function ContactSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { ContactSite_typeof = function _typeof(obj) { return typeof obj; }; } else { ContactSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return ContactSite_typeof(obj); } + +function ContactSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ContactSite_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ContactSite_createClass(Constructor, protoProps, staticProps) { if (protoProps) ContactSite_defineProperties(Constructor.prototype, protoProps); if (staticProps) ContactSite_defineProperties(Constructor, staticProps); return Constructor; } + +function ContactSite_get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { ContactSite_get = Reflect.get; } else { ContactSite_get = function _get(target, property, receiver) { var base = ContactSite_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return ContactSite_get(target, property, receiver || target); } + +function ContactSite_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = ContactSite_getPrototypeOf(object); if (object === null) break; } return object; } + +function ContactSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ContactSite_setPrototypeOf(subClass, superClass); } + +function ContactSite_setPrototypeOf(o, p) { ContactSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ContactSite_setPrototypeOf(o, p); } + +function ContactSite_createSuper(Derived) { var hasNativeReflectConstruct = ContactSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = ContactSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = ContactSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return ContactSite_possibleConstructorReturn(this, result); }; } + +function ContactSite_possibleConstructorReturn(self, call) { if (call && (ContactSite_typeof(call) === "object" || typeof call === "function")) { return call; } return ContactSite_assertThisInitialized(self); } + +function ContactSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function ContactSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function ContactSite_getPrototypeOf(o) { ContactSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ContactSite_getPrototypeOf(o); } + +var ContactSite_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +var ContactSite_view = __webpack_require__(550); + + + + + + + +var ContactSite_ContactSite = /*#__PURE__*/function (_MenuSite) { + ContactSite_inherits(ContactSite, _MenuSite); + + var _super = ContactSite_createSuper(ContactSite); + + function ContactSite(siteManager) { + ContactSite_classCallCheck(this, ContactSite); + + return _super.call(this, siteManager, ContactSite_view); + } + + ContactSite_createClass(ContactSite, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this = this; + + var res = ContactSite_get(ContactSite_getPrototypeOf(ContactSite.prototype), "onViewLoaded", this).call(this); // @ts-ignore + + + this.findBy("#contactText").appendChild(Translator["Translator"].makePersistentTranslation("contact text", ['wordrotator@silas.link'])); + new Form["Form"](this.findBy("#contact-form"), function (values) { + return ContactSite_awaiter(_this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var result; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return DataManager["DataManager"].send("contact", values); + + case 2: + result = _context.sent; + + if (result.success) { + new Toast["Toast"]("the message was sent").show(); + this.finish(); + } else { + if (result) { + new Toast["Toast"](result.message).show(); + } else { + new Toast["Toast"]("Es ist ein Fehler aufgetreten...").show(); + } + } + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + }); + return res; + } + }]); + + return ContactSite; +}(MenuSite["MenuSite"]); +App["App"].addInitialization(function (app) { + app.addDeepLink("contact", ContactSite_ContactSite); +}); +// CONCATENATED MODULE: ./src/client/js/Fragment/WordRotatorSettingFragment.ts +function WordRotatorSettingFragment_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { WordRotatorSettingFragment_typeof = function _typeof(obj) { return typeof obj; }; } else { WordRotatorSettingFragment_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return WordRotatorSettingFragment_typeof(obj); } + +function WordRotatorSettingFragment_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function WordRotatorSettingFragment_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function WordRotatorSettingFragment_createClass(Constructor, protoProps, staticProps) { if (protoProps) WordRotatorSettingFragment_defineProperties(Constructor.prototype, protoProps); if (staticProps) WordRotatorSettingFragment_defineProperties(Constructor, staticProps); return Constructor; } + +function WordRotatorSettingFragment_get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { WordRotatorSettingFragment_get = Reflect.get; } else { WordRotatorSettingFragment_get = function _get(target, property, receiver) { var base = WordRotatorSettingFragment_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return WordRotatorSettingFragment_get(target, property, receiver || target); } + +function WordRotatorSettingFragment_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = WordRotatorSettingFragment_getPrototypeOf(object); if (object === null) break; } return object; } + +function WordRotatorSettingFragment_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) WordRotatorSettingFragment_setPrototypeOf(subClass, superClass); } + +function WordRotatorSettingFragment_setPrototypeOf(o, p) { WordRotatorSettingFragment_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return WordRotatorSettingFragment_setPrototypeOf(o, p); } + +function WordRotatorSettingFragment_createSuper(Derived) { var hasNativeReflectConstruct = WordRotatorSettingFragment_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = WordRotatorSettingFragment_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = WordRotatorSettingFragment_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return WordRotatorSettingFragment_possibleConstructorReturn(this, result); }; } + +function WordRotatorSettingFragment_possibleConstructorReturn(self, call) { if (call && (WordRotatorSettingFragment_typeof(call) === "object" || typeof call === "function")) { return call; } return WordRotatorSettingFragment_assertThisInitialized(self); } + +function WordRotatorSettingFragment_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function WordRotatorSettingFragment_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function WordRotatorSettingFragment_getPrototypeOf(o) { WordRotatorSettingFragment_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return WordRotatorSettingFragment_getPrototypeOf(o); } + +var WordRotatorSettingFragment_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + +var WordRotatorSettingFragment_view = __webpack_require__(546); + + + + + + + + + + + + +var WordRotatorSettingFragment_WordRotatorSettingFragment = /*#__PURE__*/function (_AbstractFragment) { + WordRotatorSettingFragment_inherits(WordRotatorSettingFragment, _AbstractFragment); + + var _super2 = WordRotatorSettingFragment_createSuper(WordRotatorSettingFragment); + + function WordRotatorSettingFragment(site) { + WordRotatorSettingFragment_classCallCheck(this, WordRotatorSettingFragment); + + return _super2.call(this, site, WordRotatorSettingFragment_view); + } + + WordRotatorSettingFragment_createClass(WordRotatorSettingFragment, [{ + key: "onViewLoaded", + value: function onViewLoaded() { + var _this = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return WordRotatorSettingFragment_get(WordRotatorSettingFragment_getPrototypeOf(WordRotatorSettingFragment.prototype), "onViewLoaded", _this); + } + } + }); + + return WordRotatorSettingFragment_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var _this2 = this; + + var res, playMusicButton, playSoundButton; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + res = _super.onViewLoaded.call(this); + this.findBy("#reset-levels").addEventListener("click", function () { + return WordRotatorSettingFragment_awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return NativeStoragePromise["NativeStoragePromise"].remove("currentLevel"); + + case 2: + _context.next = 4; + return NativeStoragePromise["NativeStoragePromise"].remove("levelCounter"); + + case 4: + _context.next = 6; + return NativeStoragePromise["NativeStoragePromise"].remove("tutorial-step"); + + case 6: + _context.next = 8; + return LevelPlayed_LevelPlayed.clear(); + + case 8: + _context.next = 10; + return LevelData_LevelData.clear(); + + case 10: + _context.next = 12; + return LastSyncDates["LastSyncDates"].clear(); + + case 12: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + }); + + if (location.hostname.includes("beta") || location.hostname.includes("127.0.0.1") || location.hostname.includes("localhost")) {// this.findBy("#reset-levels").classList.remove("hidden"); + } + + playMusicButton = this.findBy("#play-music"); + _context4.next = 6; + return NativeStoragePromise["NativeStoragePromise"].getItem("play-music", "1"); + + case 6: + _context4.t0 = _context4.sent; + playMusicButton.checked = _context4.t0 === "1"; + playMusicButton.addEventListener("change", function () { + return WordRotatorSettingFragment_awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var soundManager; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return NativeStoragePromise["NativeStoragePromise"].setItem("play-music", playMusicButton.checked ? "1" : "0"); + + case 2: + soundManager = SoundManager["SoundManager"].getInstance(); + soundManager.set({ + muted: !playMusicButton.checked + }, SoundManager["SoundManager"].CHANNELS.MUSIC); + + if (!playMusicButton.checked) { + _context2.next = 7; + break; + } + + _context2.next = 7; + return soundManager.play(SoundManager["SoundManager"].CHANNELS.MUSIC); + + case 7: + //TODO [MIG] Matomo + Matomo["Matomo"].push(["trackEvent", "MainMenu", "PlayMusic", "Play Music", playMusicButton.checked ? 1 : 0]); + + case 8: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + }); + playSoundButton = this.findBy("#play-sound"); + _context4.next = 12; + return NativeStoragePromise["NativeStoragePromise"].getItem("play-sound", "1"); + + case 12: + _context4.t1 = _context4.sent; + playSoundButton.checked = _context4.t1 === "1"; + playSoundButton.addEventListener("change", function () { + return WordRotatorSettingFragment_awaiter(_this2, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var soundManager; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return NativeStoragePromise["NativeStoragePromise"].setItem("play-sound", playSoundButton.checked ? "1" : "0"); + + case 2: + soundManager = SoundManager["SoundManager"].getInstance(); + soundManager.set({ + muted: !playSoundButton.checked + }, SoundManager["SoundManager"].CHANNELS.SOUND); //TODO [MIG] Matomo + + Matomo["Matomo"].push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", playSoundButton.checked ? 1 : 0]); + + case 5: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + }); + this.findBy("#track-switch").addEventListener("change", function (e) { + Matomo["Matomo"].setTrack(this.checked === true); + e.stopPropagation(); + e.preventDefault(); + }); + this.findBy("#tutorial-button").addEventListener("click", function () { + _this2.getSite().startSite(TutorialSite_TutorialSite); + }); + this.findBy("#credits-button").addEventListener("click", function () { + _this2.getSite().startSite(CreditsSite); + }); + this.findBy("#privacy-policy-button").addEventListener("click", function () { + _this2.getSite().startSite(PrivacyPolicySite_PrivacyPolicySite); + }); + this.findBy("#contact-button").addEventListener("click", function () { + // new Toast("contact site").show(); + _this2.getSite().startSite(ContactSite_ContactSite); + }); + this.findBy("#impressum-button").addEventListener("click", function () { + _this2.getSite().startSite(ImpressumSite); + }); // @ts-ignore + + this.findBy("#version-info").innerText = '1.3.2'; + return _context4.abrupt("return", res); + + case 23: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + } + }, { + key: "onStart", + value: function onStart(args) { + Matomo["Matomo"].update("Settings Sites"); + return WordRotatorSettingFragment_get(WordRotatorSettingFragment_getPrototypeOf(WordRotatorSettingFragment.prototype), "onStart", this).call(this, args); + } + }]); + + return WordRotatorSettingFragment; +}(AbstractFragment["AbstractFragment"]); +// CONCATENATED MODULE: ./src/client/js/Sites/SettingsSite.ts +function SettingsSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { SettingsSite_typeof = function _typeof(obj) { return typeof obj; }; } else { SettingsSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return SettingsSite_typeof(obj); } + +function SettingsSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function SettingsSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) SettingsSite_setPrototypeOf(subClass, superClass); } + +function SettingsSite_setPrototypeOf(o, p) { SettingsSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SettingsSite_setPrototypeOf(o, p); } + +function SettingsSite_createSuper(Derived) { var hasNativeReflectConstruct = SettingsSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = SettingsSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = SettingsSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return SettingsSite_possibleConstructorReturn(this, result); }; } + +function SettingsSite_possibleConstructorReturn(self, call) { if (call && (SettingsSite_typeof(call) === "object" || typeof call === "function")) { return call; } return SettingsSite_assertThisInitialized(self); } + +function SettingsSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function SettingsSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function SettingsSite_getPrototypeOf(o) { SettingsSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SettingsSite_getPrototypeOf(o); } + +var SettingsSite_view = __webpack_require__(544); + + + + +var SettingsSite_SettingsSite = /*#__PURE__*/function (_MenuSite) { + SettingsSite_inherits(SettingsSite, _MenuSite); + + var _super = SettingsSite_createSuper(SettingsSite); + + function SettingsSite(siteManager) { + var _this; + + SettingsSite_classCallCheck(this, SettingsSite); + + _this = _super.call(this, siteManager, SettingsSite_view); + + _this.addFragment("#wordRotatorSettings", new WordRotatorSettingFragment_WordRotatorSettingFragment(SettingsSite_assertThisInitialized(_this))); + + return _this; + } + + return SettingsSite; +}(MenuSite["MenuSite"]); +App["App"].addInitialization(function (app) { + app.addDeepLink("settings", SettingsSite_SettingsSite); +}); +// CONCATENATED MODULE: ./src/client/js/Sites/MainMenuSite.ts +function MainMenuSite_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { MainMenuSite_typeof = function _typeof(obj) { return typeof obj; }; } else { MainMenuSite_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return MainMenuSite_typeof(obj); } + +function MainMenuSite_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function MainMenuSite_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function MainMenuSite_createClass(Constructor, protoProps, staticProps) { if (protoProps) MainMenuSite_defineProperties(Constructor.prototype, protoProps); if (staticProps) MainMenuSite_defineProperties(Constructor, staticProps); return Constructor; } + +function MainMenuSite_get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { MainMenuSite_get = Reflect.get; } else { MainMenuSite_get = function _get(target, property, receiver) { var base = MainMenuSite_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return MainMenuSite_get(target, property, receiver || target); } + +function MainMenuSite_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = MainMenuSite_getPrototypeOf(object); if (object === null) break; } return object; } + +function MainMenuSite_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) MainMenuSite_setPrototypeOf(subClass, superClass); } + +function MainMenuSite_setPrototypeOf(o, p) { MainMenuSite_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return MainMenuSite_setPrototypeOf(o, p); } + +function MainMenuSite_createSuper(Derived) { var hasNativeReflectConstruct = MainMenuSite_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = MainMenuSite_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = MainMenuSite_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return MainMenuSite_possibleConstructorReturn(this, result); }; } + +function MainMenuSite_possibleConstructorReturn(self, call) { if (call && (MainMenuSite_typeof(call) === "object" || typeof call === "function")) { return call; } return MainMenuSite_assertThisInitialized(self); } + +function MainMenuSite_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function MainMenuSite_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function MainMenuSite_getPrototypeOf(o) { MainMenuSite_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return MainMenuSite_getPrototypeOf(o); } + +var MainMenuSite_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +var settingsIcon = __webpack_require__(539).default; + +var MainMenuSite_view = __webpack_require__(540); + + + + + + + + + + + + + + + + + +var MainMenuSite_MainMenuSite = /*#__PURE__*/function (_MenuSite) { + MainMenuSite_inherits(MainMenuSite, _MenuSite); + + var _super2 = MainMenuSite_createSuper(MainMenuSite); + + function MainMenuSite(siteManager) { + var _this; + + MainMenuSite_classCallCheck(this, MainMenuSite); + + _this = _super2.call(this, siteManager, MainMenuSite_view); + _this.loadLevelPromise = new SyncJob["SyncJob"]().sync([LevelData_LevelData]).catch(function (e) { + return console.error(e); + }); + _this.listener = null; + + _this.getNavbarFragment().setCanGoBack(false); + + return _this; + } + + MainMenuSite_createClass(MainMenuSite, [{ + key: "onCreateMenu", + value: function onCreateMenu(navbar) { + var _this2 = this; + + MainMenuSite_get(MainMenuSite_getPrototypeOf(MainMenuSite.prototype), "onCreateMenu", this).call(this, navbar); + + var settingsAction = new MenuAction["MenuAction"]("", function () { + _this2.startSite(SettingsSite_SettingsSite); + }, MenuAction["MenuAction"].SHOW_ALWAYS, null, settingsIcon); + navbar.addAction(settingsAction); + return navbar; + } + }, { + key: "onViewLoaded", + value: function onViewLoaded() { + var _this3 = this; + + var _super = Object.create(null, { + onViewLoaded: { + get: function get() { + return MainMenuSite_get(MainMenuSite_getPrototypeOf(MainMenuSite.prototype), "onViewLoaded", _this3); + } + } + }); + + return MainMenuSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { + var _this4 = this; + + var res, playButton, leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, soundManager, playMusicButton, playSoundButton; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + res = _super.onViewLoaded.call(this); + playButton = this.findBy("#play-button"); + playButton.addEventListener("click", function () { + // Matomo.push(["trackEvent", "MainMenu", "startButton"]); + _this4.startLevelSite(); + }); + leafSegmentTemplate = this.findBy("#segment-leaf-template"); + parentSegmentTemplate = this.findBy("#segment-parent-template"); + rowSegmentTemplate = this.findBy("#segment-row-template"); + triangleTemplate = this.findBy("#segment-triangle-template"); + leafSegmentTemplate.id = null; + parentSegmentTemplate.id = null; + rowSegmentTemplate.id = null; + triangleTemplate.id = null; + leafSegmentTemplate.remove(); + parentSegmentTemplate.remove(); + rowSegmentTemplate.remove(); + triangleTemplate.remove(); + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); //TODO? + // if (Helper.nonNull(MainMenuSite.app._cookieClosePromise)) { + // MainMenuSite.app._cookieClosePromise.then(() => { + // if (this.listener) { + // this.listener(); + // } + // }); + // } + + soundManager = SoundManager["SoundManager"].getInstance(); + playMusicButton = this.findBy("#play-music"); + _context3.next = 20; + return client["NativeStoragePromise"].getItem("play-music", "1"); + + case 20: + _context3.t0 = _context3.sent; + playMusicButton.checked = _context3.t0 === "1"; + playMusicButton.addEventListener("change", function () { + return MainMenuSite_awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return client["NativeStoragePromise"].setItem("play-music", playMusicButton.checked ? "1" : "0"); + + case 2: + soundManager.set({ + muted: !playMusicButton.checked + }, SoundManager["SoundManager"].CHANNELS.MUSIC); + + if (!playMusicButton.checked) { + _context.next = 6; + break; + } + + _context.next = 6; + return soundManager.play(SoundManager["SoundManager"].CHANNELS.MUSIC); + + case 6: + //TODO [MIG] Matomo + Matomo["Matomo"].push(["trackEvent", "MainMenu", "PlayMusic", "Play Music", playMusicButton.checked ? 1 : 0]); + + case 7: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + }); + playSoundButton = this.findBy("#play-sound"); + _context3.next = 26; + return client["NativeStoragePromise"].getItem("play-sound", "1"); + + case 26: + _context3.t1 = _context3.sent; + playSoundButton.checked = _context3.t1 === "1"; + playSoundButton.addEventListener("change", function () { + return MainMenuSite_awaiter(_this4, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return client["NativeStoragePromise"].setItem("play-sound", playSoundButton.checked ? "1" : "0"); + + case 2: + soundManager.set({ + muted: !playSoundButton.checked + }, SoundManager["SoundManager"].CHANNELS.SOUND); //TODO [MIG] Matomo + + Matomo["Matomo"].push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", playSoundButton.checked ? 1 : 0]); + + case 4: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + }); + this.findBy("#share-button").addEventListener("click", function () { + new ShareManager["ShareManager"]().share(Translator["Translator"].getInstance().translate("share-text", [window.location])); + }); + return _context3.abrupt("return", res); + + case 31: + case "end": + return _context3.stop(); + } + } + }, _callee3, this); + })); + } + }, { + key: "onStart", + value: function onStart(args) { + var _this5 = this; + + var _super = Object.create(null, { + onStart: { + get: function get() { + return MainMenuSite_get(MainMenuSite_getPrototypeOf(MainMenuSite.prototype), "onStart", _this5); + } + } + }); + + return MainMenuSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { + var _this6 = this; + + var res, level, segment, levelSegment, rotationsSegments, randomRotationFunction, playSoundButton, playMusicButton; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + // Matomo.update("Menu Sites"); + res = _super.onStart.call(this, args); + level = new MainMenuLevel(this.templateContainer); + level.setWords(["WORD", "ROTA", "TORW", "ORDR"]); + level.createSegments(); + level.getWonPromise().then(function () { + // Matomo.push(["trackEvent", "MainMenu", "levelSolved"]); + _this6.startLevelSite(); + }); + segment = level.getRootSegment(); + + segment._updateElement(); + + levelSegment = this.findBy("#level"); + ViewHelper["ViewHelper"].removeAllChildren(levelSegment).appendChild(segment.getElement()); + rotationsSegments = level.getRotatableSegments(); + + randomRotationFunction = function randomRotationFunction() { + var timeout = Math.random() * 4500 + 1500; + _this6.randomRotateTimeout = setTimeout(function () { + var indexBlocked = -1; + var indexesNotRight = []; + + for (var i = 0; i < rotationsSegments.length; i++) { + if (rotationsSegments[i].rotation !== 0) { + indexesNotRight.push(i); + + if (indexesNotRight.length >= 2) { + break; + } + } + } + + if (indexesNotRight.length === 1) { + indexBlocked = indexesNotRight[0]; + } + + var index = Math.floor(Math.random() * rotationsSegments.length); + + if (index === indexBlocked) { + index = (index + 1) % rotationsSegments.length; + } + + rotationsSegments[index].rotate(); + randomRotationFunction(); + }, timeout); + }; + + randomRotationFunction(); + + this.listener = function () { + return MainMenuSite_awaiter(_this6, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + var playButton, levelNumber, levelSegment, scaleHelper, levelStyle; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + playButton = this.findBy("#play-button"); + levelNumber = this.findBy("#level-number"); + _context4.t0 = shared["Helper"]; + _context4.next = 5; + return client["NativeStoragePromise"].getItem("levelCounter"); + + case 5: + _context4.t1 = _context4.sent; + levelNumber.innerText = _context4.t0.nonNull.call(_context4.t0, _context4.t1, 1); + levelSegment = this.findBy("#level"); + scaleHelper = new client["ScaleHelper"](); + _context4.next = 11; + return scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, 8, null, false); + + case 11: + levelStyle = getComputedStyle(levelSegment); + playButton.style.width = levelStyle.getPropertyValue("width"); + scaleHelper.scaleTo(0.65, playButton.children[0], playButton, null, null, null, 4, null, false); + _context4.next = 16; + return scaleHelper.scaleTo(0.1, levelNumber.parentElement, levelNumber.parentElement.parentElement, null, null, null, 10, null, false); + + case 16: + scaleHelper.scaleTo(1, levelNumber, levelNumber.parentElement, false, false, 5, null, null, false); + + case 17: + case "end": + return _context4.stop(); + } + } + }, _callee4, this); + })); + }; // this.listener(); + + + window.addEventListener("resize", this.listener); + setTimeout(this.listener, 50); //Musikbuttons update, falls in den Einstellungen umgestellt + // let settingsManager = SettingsManager.getInstance(); + + playSoundButton = this.findBy("#play-sound"); + _context5.next = 18; + return client["NativeStoragePromise"].getItem("play-sound", "1"); + + case 18: + _context5.t0 = _context5.sent; + playSoundButton.checked = _context5.t0 === "1"; + playMusicButton = this.findBy("#play-music"); + _context5.next = 23; + return client["NativeStoragePromise"].getItem("play-music", "1"); + + case 23: + _context5.t1 = _context5.sent; + playMusicButton.checked = _context5.t1 === "1"; + return _context5.abrupt("return", res); + + case 26: + case "end": + return _context5.stop(); + } + } + }, _callee5, this); + })); + } + }, { + key: "startLevelSite", + value: function startLevelSite() { + return MainMenuSite_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { + var _this7 = this; + + return regeneratorRuntime.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + SoundManager["SoundManager"].getInstance().resumeContext(); + this.startSite(LevelSite_LevelSite, Promise.race([this.loadLevelPromise, new Promise(function (resolve) { + return MainMenuSite_awaiter(_this7, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { + var levelData; + return regeneratorRuntime.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return LevelPlayed_LevelPlayed.getNextLevelData(LevelSite_LevelSite.RENDERER_TYPES); + + case 2: + levelData = _context6.sent; + + if (levelData !== null) { + resolve(); + } + + case 4: + case "end": + return _context6.stop(); + } + } + }, _callee6); + })); + })])); + + case 2: + case "end": + return _context7.stop(); + } + } + }, _callee7, this); + })); + } + }, { + key: "onPause", + value: function onPause() { + clearTimeout(this.randomRotateTimeout); + window.removeEventListener("resize", this.listener); + return MainMenuSite_get(MainMenuSite_getPrototypeOf(MainMenuSite.prototype), "onPause", this).call(this); + } + }]); + + return MainMenuSite; +}(client["MenuSite"]); +client["App"].addInitialization(function (app) { + MainMenuSite_MainMenuSite.app = app; +}); +// CONCATENATED MODULE: ./src/client/js/model/migration/ClientSetup.ts +function ClientSetup_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ClientSetup_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ClientSetup_createClass(Constructor, protoProps, staticProps) { if (protoProps) ClientSetup_defineProperties(Constructor.prototype, protoProps); if (staticProps) ClientSetup_defineProperties(Constructor, staticProps); return Constructor; } + +var ClientSetup_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function (resolve) { + resolve(value); + }); + } + + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + +var ClientSetup_ClientSetup1000000002001 = /*#__PURE__*/function () { + function ClientSetup1000000002001() { + ClientSetup_classCallCheck(this, ClientSetup1000000002001); + } + + ClientSetup_createClass(ClientSetup1000000002001, [{ + key: "up", + value: function up(queryRunner) { + return ClientSetup_awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return shared["MigrationHelper"].addTableFromModelClass(LevelPlayed_LevelPlayed, queryRunner); + + case 2: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + } + }, { + key: "down", + value: function down(queryRunner) { + return undefined; + } + }]); + + return ClientSetup1000000002001; +}(); +// EXTERNAL MODULE: ./node_modules/cordova-sites-easy-sync/dist/client/EasySyncClientDb.js +var EasySyncClientDb = __webpack_require__(128); + +// EXTERNAL MODULE: ./node_modules/cordova-sites/dist/client/js/Context/Menu/NavbarFragment.js +var NavbarFragment = __webpack_require__(160); + +// CONCATENATED MODULE: ./src/client/sound/brightAndBeautifull__.mp3 +/* harmony default export */ var brightAndBeautifull_ = ("img/brightAndBeautifull__.mp3"); +// CONCATENATED MODULE: ./src/client/js/script.js +function script_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function script_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { script_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { script_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + + + + + + + + + + + + + + + + + + + +window["JSObject"] = Object; //Disable Google Analytics for VideoJS + +window["HELP_IMPROVE_VIDEOJS"] = false; +dist_client["LoginSite"].ADD_LOGIN_ACTION = false; +dist_client["RegistrationSite"].ADD_REGISTRATION_ACTION = false; +client["App"].addInitialization( /*#__PURE__*/script_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var soundManager; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + client["Translator"].init({ + translations: { + "de": de, + "en": en + }, + fallbackLanguage: "de", + // markTranslations: true, + markUntranslatedTranslations: true + }); //Setting Title + + NavbarFragment["NavbarFragment"].title = "WordRotator"; + soundManager = SoundManager["SoundManager"].getInstance(); + _context2.t0 = soundManager; + _context2.t1 = SoundManager["SoundManager"].CHANNELS.MUSIC; + _context2.t2 = brightAndBeautifull_; + _context2.next = 8; + return NativeStoragePromise["NativeStoragePromise"].getItem("play-music", "1"); + + case 8: + _context2.t3 = _context2.sent; + _context2.t4 = _context2.t3 !== "1"; + _context2.t5 = { + audio: _context2.t2, + loop: true, + volume: 0.6, + muted: _context2.t4 + }; + + _context2.t0.play.call(_context2.t0, _context2.t1, _context2.t5).catch(function (e) { + return console.error(e); + }); + + _context2.next = 14; + return dist_client["UserManager"].getInstance().getMe().catch(function (e) { + return console.error(e); + }); + + case 14: + dist_client["UserManager"].getInstance().addLoginChangeCallback( /*#__PURE__*/function () { + var _ref2 = script_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(isLoggedIn) { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (isLoggedIn) {// await new SyncJob().sync([UserManager.syncParamFor(Definition), UserManager.syncParamFor(ExerciseProgress), UserManager.syncParamFor(WrongAnswer)]).catch(e => console.error(e)); + } + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + + return function (_x) { + return _ref2.apply(this, arguments); + }; + }()); + + case 15: + case "end": + return _context2.stop(); + } + } + }, _callee2); +}))); +client["DataManager"]._basePath = 'https://wordRotator.silas.link/api/v1/'; + +client["DataManager"].onlineCallback = function (isOnline) { + if (!isOnline) { + new client["Toast"]("not online!").show(); + } +}; + +Object.assign(cordova_sites_database["BaseDatabase"].CONNECTION_OPTIONS, { + logging: ["error"], + synchronize: false, + migrationsRun: true, + migrations: [DeleteUserManagement["DeleteUserManagement1000000000000"], cordova_sites_easy_sync_dist_client["SetupEasySync1000000000500"], SetupUserManagement["SetupUserManagement1000000001000"], Setup_Setup1000000002000, ClientSetup_ClientSetup1000000002001] +}); +var app = new client["App"](); +app.start(MainMenuSite_MainMenuSite).catch(function (e) { + return console.error(e); +}).then( /*#__PURE__*/script_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + window["queryDb"] = /*#__PURE__*/function () { + var _ref4 = script_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(sql) { + var res; + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return EasySyncClientDb["EasySyncClientDb"].getInstance().rawQuery(sql); + + case 2: + res = _context3.sent; + console.log(res); + return _context3.abrupt("return", res); + + case 5: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + + return function (_x2) { + return _ref4.apply(this, arguments); + }; + }(); + + case 1: + case "end": + return _context4.stop(); + } + } + }, _callee4); +}))); +app.ready(function () { + console.log("initialisation over", new Date()); + + if (device.platform === "browser") { + // Check that service workers are supported + if ('serviceWorker' in navigator) { + // Use the window load event to keep the page load performant + window.addEventListener('load', function () { + navigator.serviceWorker.register('service-worker.js'); + }); + } + } +}); /***/ }) - -/******/ }); \ No newline at end of file +/******/ ]); +//# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/src/server/public/bundle.js.map b/src/server/public/bundle.js.map new file mode 100644 index 0000000..3e8e5ec --- /dev/null +++ b/src/server/public/bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/typeorm/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/typeorm/browser/platform/BrowserDisabledDriversDummy.js","webpack:///./node_modules/typeorm/browser/driver/Query.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///../src/client.ts","webpack:///./node_modules/typeorm/browser/schema-builder/table/Table.js","webpack:///./node_modules/typeorm/browser/util/OrmUtils.js","webpack:///./node_modules/js-helper/dist/shared/Helper.js","webpack:///./node_modules/typeorm/browser/subscriber/BroadcasterResult.js","webpack:///./node_modules/typeorm/browser/find-options/FindOperator.js","webpack:///./node_modules/typeorm/browser/platform/BrowserPlatformTools.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///../../../../src/client/js/Legacy/Helper.ts","webpack:///./node_modules/typeorm/browser/schema-builder/RdbmsSchemaBuilder.js","webpack:///./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteDriver.js","webpack:///../../../../src/client/js/Sound/SoundManager.ts","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///../src/cordova-sites-database.ts","webpack:///./node_modules/typeorm/browser/driver/DriverUtils.js","webpack:///./node_modules/typeorm/browser/util/DateUtils.js","webpack:///./node_modules/js-helper/dist/shared.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/typeorm/browser/util/ObjectUtils.js","webpack:///./node_modules/typeorm/browser/schema-builder/table/TableColumn.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/js-helper/dist/client/ViewHelper.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/typeorm/browser/schema-builder/table/TableUnique.js","webpack:///./node_modules/typeorm/browser/metadata/ColumnMetadata.js","webpack:///../../../src/client/js/Translator.ts","webpack:///../../../src/client/js/App.ts","webpack:///./node_modules/typeorm/browser/error/QueryRunnerAlreadyReleasedError.js","webpack:///./node_modules/typeorm/browser/metadata/EntityMetadata.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/typeorm/browser/error/DriverOptionNotSetError.js","webpack:///./node_modules/typeorm/browser/schema-builder/table/TableIndex.js","webpack:///./node_modules/typeorm/browser/error/QueryFailedError.js","webpack:///./node_modules/typeorm/browser/query-builder/Alias.js","webpack:///./node_modules/typeorm/browser/query-builder/QueryExpressionMap.js","webpack:///./node_modules/typeorm/browser/query-builder/QueryBuilder.js","webpack:///./node_modules/typeorm/browser/driver/sqljs/SqljsDriver.js","webpack:///../../../src/client/js/NativeStoragePromise.ts","webpack:///./node_modules/typeorm/browser/schema-builder/table/TableCheck.js","webpack:///./node_modules/typeorm/browser/error/TransactionNotStartedError.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/typeorm/browser/naming-strategy/DefaultNamingStrategy.js","webpack:///./node_modules/typeorm/browser/error/CannotExecuteNotConnectedError.js","webpack:///./node_modules/typeorm/browser/error/CannotConnectAlreadyConnectedError.js","webpack:///./node_modules/typeorm/browser/error/EntityMetadataNotFoundError.js","webpack:///./node_modules/typeorm/browser/migration/Migration.js","webpack:///./node_modules/typeorm/browser/driver/sqlserver/MssqlParameter.js","webpack:///./node_modules/typeorm/browser/migration/MigrationExecutor.js","webpack:///./node_modules/typeorm/browser/error/MissingPrimaryColumnError.js","webpack:///./node_modules/typeorm/browser/error/CircularRelationsError.js","webpack:///./node_modules/typeorm/browser/util/DepGraph.js","webpack:///./node_modules/typeorm/browser/error/DataTypeNotSupportedError.js","webpack:///./node_modules/typeorm/browser/error/NoConnectionOptionError.js","webpack:///./node_modules/typeorm/browser/error/InitializedRelationError.js","webpack:///./node_modules/typeorm/browser/metadata-builder/EntityMetadataValidator.js","webpack:///./node_modules/typeorm/browser/error/QueryRunnerProviderAlreadyReleasedError.js","webpack:///./node_modules/typeorm/browser/error/NoNeedToReleaseEntityManagerError.js","webpack:///./node_modules/typeorm/browser/repository/Repository.js","webpack:///./node_modules/typeorm/browser/repository/TreeRepository.js","webpack:///./node_modules/typeorm/browser/error/FindRelationsNotFoundError.js","webpack:///./node_modules/typeorm/browser/find-options/FindOptionsUtils.js","webpack:///./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js","webpack:///./node_modules/typeorm/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js","webpack:///./node_modules/typeorm/browser/error/CustomRepositoryNotFoundError.js","webpack:///./node_modules/typeorm/browser/error/CustomRepositoryDoesNotHaveEntityError.js","webpack:///./node_modules/typeorm/browser/repository/AbstractRepository.js","webpack:///./node_modules/typeorm/browser/error/CustomRepositoryCannotInheritRepositoryError.js","webpack:///./node_modules/typeorm/browser/error/RepositoryNotFoundError.js","webpack:///./node_modules/typeorm/browser/error/RepositoryNotTreeError.js","webpack:///./node_modules/typeorm/browser/repository/RepositoryFactory.js","webpack:///./node_modules/typeorm/browser/error/TreeRepositoryNotSupportedError.js","webpack:///./node_modules/typeorm/browser/error/MustBeEntityError.js","webpack:///./node_modules/typeorm/browser/persistence/SubjectTopoligicalSorter.js","webpack:///./node_modules/typeorm/browser/persistence/SubjectChangedColumnsComputer.js","webpack:///./node_modules/typeorm/browser/error/SubjectWithoutIdentifierError.js","webpack:///./node_modules/typeorm/browser/error/SubjectRemovedAndUpdatedError.js","webpack:///./node_modules/typeorm/browser/persistence/tree/NestedSetSubjectExecutor.js","webpack:///./node_modules/typeorm/browser/error/CannotAttachTreeChildrenEntityError.js","webpack:///./node_modules/typeorm/browser/persistence/tree/ClosureSubjectExecutor.js","webpack:///./node_modules/typeorm/browser/persistence/tree/MaterializedPathSubjectExecutor.js","webpack:///./node_modules/typeorm/browser/persistence/SubjectExecutor.js","webpack:///./node_modules/typeorm/browser/error/CannotDetermineEntityError.js","webpack:///./node_modules/typeorm/browser/persistence/Subject.js","webpack:///./node_modules/typeorm/browser/persistence/subject-builder/OneToManySubjectBuilder.js","webpack:///./node_modules/typeorm/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js","webpack:///./node_modules/typeorm/browser/persistence/subject-builder/ManyToManySubjectBuilder.js","webpack:///./node_modules/typeorm/browser/persistence/SubjectDatabaseEntityLoader.js","webpack:///./node_modules/typeorm/browser/persistence/subject-builder/CascadesSubjectBuilder.js","webpack:///./node_modules/typeorm/browser/persistence/EntityPersistExecutor.js","webpack:///./node_modules/typeorm/browser/entity-manager/EntityManager.js","webpack:///./node_modules/typeorm/browser/entity-manager/SqljsEntityManager.js","webpack:///./node_modules/typeorm/browser/entity-manager/EntityManagerFactory.js","webpack:///./node_modules/typeorm/browser/error/MissingDriverError.js","webpack:///./node_modules/typeorm/browser/driver/cordova/CordovaQueryRunner.js","webpack:///./node_modules/typeorm/browser/driver/cordova/CordovaDriver.js","webpack:///./node_modules/typeorm/browser/driver/react-native/ReactNativeQueryRunner.js","webpack:///./node_modules/typeorm/browser/driver/react-native/ReactNativeDriver.js","webpack:///./node_modules/typeorm/browser/driver/expo/ExpoQueryRunner.js","webpack:///./node_modules/typeorm/browser/driver/expo/ExpoDriver.js","webpack:///./node_modules/typeorm/browser/driver/postgres/PostgresQueryRunner.js","webpack:///./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js","webpack:///./node_modules/typeorm/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js","webpack:///./node_modules/typeorm/browser/driver/DriverFactory.js","webpack:///./node_modules/typeorm/browser/platform/BrowserDirectoryExportedClassesLoader.js","webpack:///./node_modules/typeorm/browser/container.js","webpack:///./node_modules/typeorm/browser/metadata/IndexMetadata.js","webpack:///./node_modules/typeorm/browser/metadata/RelationMetadata.js","webpack:///./node_modules/typeorm/browser/metadata/EmbeddedMetadata.js","webpack:///./node_modules/typeorm/browser/metadata/RelationIdMetadata.js","webpack:///./node_modules/typeorm/browser/metadata/RelationCountMetadata.js","webpack:///./node_modules/typeorm/browser/metadata/types/EventListenerTypes.js","webpack:///./node_modules/typeorm/browser/metadata-builder/MetadataUtils.js","webpack:///./node_modules/typeorm/browser/metadata/ForeignKeyMetadata.js","webpack:///./node_modules/typeorm/browser/metadata-builder/JunctionEntityMetadataBuilder.js","webpack:///./node_modules/typeorm/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js","webpack:///./node_modules/typeorm/browser/metadata/UniqueMetadata.js","webpack:///./node_modules/typeorm/browser/metadata-builder/RelationJoinColumnBuilder.js","webpack:///./node_modules/typeorm/browser/metadata/EntityListenerMetadata.js","webpack:///./node_modules/typeorm/browser/metadata/CheckMetadata.js","webpack:///./node_modules/typeorm/browser/metadata/ExclusionMetadata.js","webpack:///./node_modules/typeorm/browser/metadata-builder/EntityMetadataBuilder.js","webpack:///./node_modules/typeorm/browser/metadata-args/MetadataArgsStorage.js","webpack:///./node_modules/typeorm/browser/entity-schema/EntitySchemaTransformer.js","webpack:///./node_modules/typeorm/browser/connection/ConnectionMetadataBuilder.js","webpack:///./node_modules/typeorm/browser/logger/SimpleConsoleLogger.js","webpack:///./node_modules/typeorm/browser/logger/AdvancedConsoleLogger.js","webpack:///./node_modules/typeorm/browser/platform/BrowserFileLoggerDummy.js","webpack:///./node_modules/typeorm/browser/logger/DebugLogger.js","webpack:///./node_modules/typeorm/browser/logger/LoggerFactory.js","webpack:///./node_modules/typeorm/browser/cache/RedisQueryResultCache.js","webpack:///./node_modules/typeorm/browser/cache/DbQueryResultCache.js","webpack:///./node_modules/typeorm/browser/cache/QueryResultCacheFactory.js","webpack:///./node_modules/typeorm/browser/query-builder/RelationLoader.js","webpack:///./node_modules/typeorm/browser/query-builder/RelationIdLoader.js","webpack:///./node_modules/typeorm/browser/connection/Connection.js","webpack:///./node_modules/typeorm/browser/error/ConnectionNotFoundError.js","webpack:///./node_modules/typeorm/browser/error/AlreadyHasActiveConnectionError.js","webpack:///./node_modules/typeorm/browser/connection/ConnectionManager.js","webpack:///./node_modules/typeorm/browser/platform/BrowserConnectionOptionsReaderDummy.js","webpack:///./node_modules/typeorm/browser/common/EntityTarget.js","webpack:///./node_modules/typeorm/browser/common/ObjectType.js","webpack:///./node_modules/typeorm/browser/common/ObjectLiteral.js","webpack:///./node_modules/typeorm/browser/common/DeepPartial.js","webpack:///./node_modules/typeorm/browser/error/CannotReflectMethodParameterTypeError.js","webpack:///./node_modules/typeorm/browser/error/ConnectionIsNotSetError.js","webpack:///./node_modules/typeorm/browser/error/MetadataAlreadyExistsError.js","webpack:///./node_modules/typeorm/browser/error/PrimaryColumnCannotBeNullableError.js","webpack:///./node_modules/typeorm/browser/error/NoConnectionForRepositoryError.js","webpack:///./node_modules/typeorm/browser/error/UsingJoinTableIsNotAllowedError.js","webpack:///./node_modules/typeorm/browser/error/MissingJoinColumnError.js","webpack:///./node_modules/typeorm/browser/error/CannotGetEntityManagerNotConnectedError.js","webpack:///./node_modules/typeorm/browser/error/MetadataWithSuchNameAlreadyExistsError.js","webpack:///./node_modules/typeorm/browser/error/NamingStrategyNotFoundError.js","webpack:///./node_modules/typeorm/browser/error/MissingJoinTableError.js","webpack:///./node_modules/typeorm/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js","webpack:///./node_modules/typeorm/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js","webpack:///./node_modules/typeorm/browser/error/PersistedEntityNotFoundError.js","webpack:///./node_modules/typeorm/browser/error/UsingJoinColumnIsNotAllowedError.js","webpack:///./node_modules/typeorm/browser/error/ColumnTypeUndefinedError.js","webpack:///./node_modules/typeorm/browser/error/index.js","webpack:///./node_modules/typeorm/browser/decorator/columns/Column.js","webpack:///./node_modules/typeorm/browser/decorator/columns/CreateDateColumn.js","webpack:///./node_modules/typeorm/browser/decorator/columns/DeleteDateColumn.js","webpack:///./node_modules/typeorm/browser/decorator/columns/PrimaryGeneratedColumn.js","webpack:///./node_modules/typeorm/browser/decorator/columns/PrimaryColumn.js","webpack:///./node_modules/typeorm/browser/decorator/columns/UpdateDateColumn.js","webpack:///./node_modules/typeorm/browser/decorator/columns/VersionColumn.js","webpack:///./node_modules/typeorm/browser/decorator/columns/ViewColumn.js","webpack:///./node_modules/typeorm/browser/decorator/columns/ObjectIdColumn.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterInsert.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterLoad.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterRemove.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/AfterUpdate.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/BeforeInsert.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/BeforeRemove.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/BeforeUpdate.js","webpack:///./node_modules/typeorm/browser/decorator/listeners/EventSubscriber.js","webpack:///./node_modules/typeorm/browser/decorator/options/ColumnOptions.js","webpack:///./node_modules/typeorm/browser/decorator/options/IndexOptions.js","webpack:///./node_modules/typeorm/browser/decorator/options/JoinColumnOptions.js","webpack:///./node_modules/typeorm/browser/decorator/options/JoinTableOptions.js","webpack:///./node_modules/typeorm/browser/decorator/options/RelationOptions.js","webpack:///./node_modules/typeorm/browser/decorator/options/EntityOptions.js","webpack:///./node_modules/typeorm/browser/decorator/options/ValueTransformer.js","webpack:///./node_modules/typeorm/browser/decorator/relations/JoinColumn.js","webpack:///./node_modules/typeorm/browser/decorator/relations/JoinTable.js","webpack:///./node_modules/typeorm/browser/decorator/relations/ManyToMany.js","webpack:///./node_modules/typeorm/browser/decorator/relations/ManyToOne.js","webpack:///./node_modules/typeorm/browser/decorator/relations/OneToMany.js","webpack:///./node_modules/typeorm/browser/decorator/relations/OneToOne.js","webpack:///./node_modules/typeorm/browser/decorator/relations/RelationCount.js","webpack:///./node_modules/typeorm/browser/decorator/relations/RelationId.js","webpack:///./node_modules/typeorm/browser/decorator/entity/Entity.js","webpack:///./node_modules/typeorm/browser/decorator/entity/ChildEntity.js","webpack:///./node_modules/typeorm/browser/decorator/entity/TableInheritance.js","webpack:///./node_modules/typeorm/browser/decorator/entity-view/ViewEntity.js","webpack:///./node_modules/typeorm/browser/decorator/transaction/Transaction.js","webpack:///./node_modules/typeorm/browser/decorator/transaction/TransactionManager.js","webpack:///./node_modules/typeorm/browser/decorator/transaction/TransactionRepository.js","webpack:///./node_modules/typeorm/browser/decorator/tree/TreeLevelColumn.js","webpack:///./node_modules/typeorm/browser/decorator/tree/TreeParent.js","webpack:///./node_modules/typeorm/browser/decorator/tree/TreeChildren.js","webpack:///./node_modules/typeorm/browser/decorator/tree/Tree.js","webpack:///./node_modules/typeorm/browser/decorator/Index.js","webpack:///./node_modules/typeorm/browser/decorator/Unique.js","webpack:///./node_modules/typeorm/browser/decorator/Check.js","webpack:///./node_modules/typeorm/browser/decorator/Exclusion.js","webpack:///./node_modules/typeorm/browser/decorator/Generated.js","webpack:///./node_modules/typeorm/browser/decorator/EntityRepository.js","webpack:///./node_modules/typeorm/browser/find-options/operator/Any.js","webpack:///./node_modules/typeorm/browser/find-options/operator/Between.js","webpack:///./node_modules/typeorm/browser/find-options/operator/Equal.js","webpack:///./node_modules/typeorm/browser/find-options/operator/IsNull.js","webpack:///./node_modules/typeorm/browser/find-options/operator/LessThan.js","webpack:///./node_modules/typeorm/browser/find-options/operator/LessThanOrEqual.js","webpack:///./node_modules/typeorm/browser/find-options/operator/ILike.js","webpack:///./node_modules/typeorm/browser/find-options/operator/Like.js","webpack:///./node_modules/typeorm/browser/find-options/operator/MoreThan.js","webpack:///./node_modules/typeorm/browser/find-options/operator/MoreThanOrEqual.js","webpack:///./node_modules/typeorm/browser/find-options/operator/Not.js","webpack:///./node_modules/typeorm/browser/find-options/operator/Raw.js","webpack:///./node_modules/typeorm/browser/find-options/FindConditions.js","webpack:///./node_modules/typeorm/browser/find-options/FindManyOptions.js","webpack:///./node_modules/typeorm/browser/find-options/FindOneOptions.js","webpack:///./node_modules/typeorm/browser/find-options/FindOperatorType.js","webpack:///./node_modules/typeorm/browser/find-options/JoinOptions.js","webpack:///./node_modules/typeorm/browser/find-options/OrderByCondition.js","webpack:///./node_modules/typeorm/browser/logger/Logger.js","webpack:///./node_modules/typeorm/browser/logger/LoggerOptions.js","webpack:///./node_modules/typeorm/browser/repository/BaseEntity.js","webpack:///./node_modules/typeorm/browser/repository/RemoveOptions.js","webpack:///./node_modules/typeorm/browser/repository/SaveOptions.js","webpack:///./node_modules/typeorm/browser/driver/mongodb/typings.js","webpack:///./node_modules/typeorm/browser/driver/types/DatabaseType.js","webpack:///./node_modules/typeorm/browser/driver/types/ReplicationMode.js","webpack:///./node_modules/typeorm/browser/index.js","webpack:///./node_modules/typeorm/browser/schema-builder/table/TableForeignKey.js","webpack:///./node_modules/typeorm/browser/util/StringUtils.js","webpack:///./node_modules/typeorm/browser/query-builder/QueryBuilderUtils.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/typeorm/browser/subscriber/Broadcaster.js","webpack:///../../../../src/client/js/Legacy/Matomo.ts","webpack:///./node_modules/typeorm/browser/schema-builder/view/View.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///../../../src/client/js/ViewInflater.ts","webpack:///./node_modules/typeorm/browser/schema-builder/table/TableExclusion.js","webpack:///./node_modules/typeorm/browser/util/ApplyValueTransformers.js","webpack:///./node_modules/typeorm/browser/util/RandomGenerator.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///../../../src/client/js/DataManager.ts","webpack:///../../../../src/client/js/Context/MenuSite.ts","webpack:///./node_modules/typeorm/browser/error/TransactionAlreadyStartedError.js","webpack:///./node_modules/typeorm/browser/error/DriverPackageNotInstalledError.js","webpack:///./node_modules/typeorm/browser/error/ReturningStatementNotSupportedError.js","webpack:///./node_modules/typeorm/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js","webpack:///./node_modules/typeorm/browser/entity-schema/EntitySchema.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///../../src/shared/EasySyncBaseModel.ts","webpack:///../../../../src/client/js/Context/AbstractFragment.ts","webpack:///../../../../../../src/client/js/Context/Menu/MenuAction/MenuAction.ts","webpack:///./node_modules/typeorm/node_modules/debug/src/browser.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///../../../../src/client/js/Dialog/Dialog.ts","webpack:///./node_modules/typeorm/browser/error/LockNotSupportedOnGivenDriverError.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/buffer/index.js","webpack:///../../../../../../src/client/js/Context/Menu/MenuAction/OpenSubmenuAction.ts","webpack:///../../../src/client/js/UserManager.ts","webpack:///./node_modules/typeorm/browser/error/UpdateValuesMissingError.js","webpack:///../../../../src/client/js/Toast/Toast.ts","webpack:///./node_modules/typeorm/browser/error/OptimisticLockCanNotBeUsedError.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/sha.js/hash.js","webpack:///../../../../src/client/js/Context/Context.ts","webpack:///../../../../src/shared/v1/model/User.ts","webpack:///./node_modules/typeorm/browser/error/EntityNotFoundError.js","webpack:///./node_modules/typeorm/browser/error/EntityColumnNotFound.js","webpack:///./node_modules/typeorm/browser/query-builder/result/UpdateResult.js","webpack:///./node_modules/typeorm/browser/error/LimitOnUpdateNotSupportedError.js","webpack:///./node_modules/typeorm/browser/query-builder/relation-id/RelationIdLoader.js","webpack:///./node_modules/typeorm/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js","webpack:///./node_modules/typeorm/browser/query-builder/relation-count/RelationCountLoader.js","webpack:///./node_modules/typeorm/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js","webpack:///./node_modules/typeorm/browser/query-builder/SelectQueryBuilder.js","webpack:///./node_modules/typeorm/browser/query-builder/relation-id/RelationIdAttribute.js","webpack:///./node_modules/typeorm/browser/query-builder/relation-count/RelationCountAttribute.js","webpack:///./node_modules/typeorm/browser/query-builder/ReturningResultsEntityUpdator.js","webpack:///./node_modules/typeorm/browser/schema-builder/util/TableUtils.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///../../../../src/client/js/Context/UserSite.ts","webpack:///../src/shared.ts","webpack:///../../src/client/EasySyncClientDb.ts","webpack:///../../src/client/LastSyncDates.ts","webpack:///./node_modules/typeorm/browser/error/OptimisticLockVersionMismatchError.js","webpack:///./node_modules/typeorm/browser/query-builder/result/InsertResult.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///../../../../src/client/js/Context/AbstractSite.ts","webpack:///../src/BaseDatabase.ts","webpack:///../../../../src/client/js/Site/LoginSite.ts","webpack:///../../../../src/client/js/MenuAction/UserMenuAction.ts","webpack:///../../src/client/ClientFileMedium.ts","webpack:///./node_modules/typeorm/browser/error/CannotCreateEntityIdMapError.js","webpack:///./node_modules/typeorm/browser/error/PessimisticLockTransactionRequiredError.js","webpack:///./node_modules/typeorm/browser/error/NoVersionOrUpdateDateColumnError.js","webpack:///./node_modules/typeorm/browser/query-builder/Brackets.js","webpack:///./node_modules/typeorm/browser/find-options/operator/In.js","webpack:///./node_modules/typeorm/browser/error/InsertValuesMissingError.js","webpack:///./node_modules/typeorm/browser/query-builder/result/DeleteResult.js","webpack:///./node_modules/typeorm/browser/error/MissingDeleteDateColumnError.js","webpack:///./node_modules/typeorm/browser/error/OffsetWithoutLimitNotSupportedError.js","webpack:///../../../../../src/client/js/Context/Menu/NavbarFragment.ts","webpack:///../../../src/client/js/Form.ts","webpack:///./node_modules/typeorm/browser/query-builder/JoinAttribute.js","webpack:///./node_modules/typeorm/browser/driver/SqlInMemory.js","webpack:///./node_modules/typeorm/browser/query-runner/BaseQueryRunner.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/js-helper/dist/shared/JsonHelper.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/typeorm/browser/query-builder/InsertQueryBuilder.js","webpack:///./node_modules/typeorm/browser/query-builder/UpdateQueryBuilder.js","webpack:///./node_modules/typeorm/browser/query-builder/DeleteQueryBuilder.js","webpack:///./node_modules/js-helper/dist/client.js","webpack:///../../../../../src/client/js/Legacy/EventManager/EventManager.ts","webpack:///../../../../src/client/js/Context/TemplateSite.ts","webpack:///../../../../../src/client/js/Context/Menu/Menu.ts","webpack:///../../../../../../src/client/js/Context/Menu/Renderer/AccordionRenderer.ts","webpack:///../../src/shared/EasySyncPartialModel.ts","webpack:///../../src/shared/FileMedium.ts","webpack:///../../../../src/shared/v1/model/Role.ts","webpack:///../../../../src/client/js/MenuAction/StartUserSiteMenuAction.ts","webpack:///../../../src/client/FileWriter/FilePromise.ts","webpack:///./node_modules/typeorm/browser/query-builder/RelationUpdater.js","webpack:///./node_modules/typeorm/browser/query-builder/RelationRemover.js","webpack:///./node_modules/typeorm/browser/query-builder/RelationQueryBuilder.js","webpack:///../../../../src/client/js/ShareManager/ShareManager.ts","webpack:///../src/BaseModel.ts","webpack:///../../src/client/SyncJob.ts","webpack:///../../../src/shared/migrations/DeleteUserManagement.ts","webpack:///../../../src/shared/migrations/SetupUserManagement.ts","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_parse-int.js","webpack:///./node_modules/core-js/modules/_parse-float.js","webpack:///./node_modules/core-js/modules/_a-number-value.js","webpack:///./node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/core-js/modules/_math-log1p.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///../../src/shared/Translator.ts","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/typeorm/browser/query-builder/SoftDeleteQueryBuilder.js","webpack:///./node_modules/js-helper/dist/shared/XSSHelper.js","webpack:///../../../../src/client/js/Context/SiteManager.ts","webpack:///./node_modules/js-helper/dist/client/Dragger/DraggedElement.js","webpack:///../../../../src/client/js/DataManager/NotOnlineError.ts","webpack:///../../../src/client/js/HistoryManager.ts","webpack:///../../../../src/client/js/ColorIndicator/ColorIndicator.ts","webpack:///../../../src/client/js/Singleton.ts","webpack:///../../../../../src/client/js/Context/Delegate/MasterSite.ts","webpack:///../../../../src/client/js/Toast/ToastManager.ts","webpack:///../../../../../../src/client/js/Context/Menu/Renderer/DropdownRenderer.ts","webpack:///../../../../../../src/client/js/Context/Menu/Renderer/MenuRenderer.ts","webpack:///../../../../../src/client/js/Context/Menu/Submenu.ts","webpack:///../../../../../src/client/js/Context/SwipeFragment/SwipeChildFragment.ts","webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Dialog/chooseDialog.html","webpack:///../../../../src/client/js/Dialog/ElemChooseDialog.ts","webpack:///../../../../src/client/js/ShareManager/ShareDialog.ts","webpack:///../../../../src/client/js/Sound/AudioChain.ts","webpack:///../../../src/client/js/translationInit.ts","webpack:///../../../../src/shared/v1/model/Access.ts","webpack:///../../../../src/client/js/Site/ForgotPasswordSite.ts","webpack:///../../../../src/client/js/Site/NotAllowedSite.ts","webpack:///../../../../src/client/js/Dialog/SelectUserDialog.ts","webpack:///../../../src/client/FileWriter/FileTransferPromise.ts","webpack:///../../../src/client/FileWriter/FileWriterPromise.ts","webpack:///../../src/client/ClientModel.ts","webpack:///../../src/client/ClientPartialModel.ts","webpack:///../../../../src/shared/v1/model/AccessEasySyncModel.ts","webpack:///./src/client/img/help.png","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/typeorm/browser/driver/sqljs/SqljsQueryRunner.js","webpack:///./node_modules/typeorm/browser/driver/nativescript/NativescriptDriver.js","webpack:///./node_modules/typeorm/browser/driver/nativescript/NativescriptQueryRunner.js","webpack:///./node_modules/typeorm/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js","webpack:///./node_modules/@babel/polyfill/lib/index.js","webpack:///./node_modules/@babel/polyfill/lib/noConflict.js","webpack:///./node_modules/core-js/es6/index.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///./node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/es6.function.has-instance.js","webpack:///./node_modules/core-js/modules/es6.parse-int.js","webpack:///./node_modules/core-js/modules/es6.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/core-js/modules/es6.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es6.number.to-precision.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/core-js/modules/es6.number.is-integer.js","webpack:///./node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.parse-int.js","webpack:///./node_modules/core-js/modules/es6.math.acosh.js","webpack:///./node_modules/core-js/modules/es6.math.asinh.js","webpack:///./node_modules/core-js/modules/es6.math.atanh.js","webpack:///./node_modules/core-js/modules/es6.math.cbrt.js","webpack:///./node_modules/core-js/modules/es6.math.clz32.js","webpack:///./node_modules/core-js/modules/es6.math.cosh.js","webpack:///./node_modules/core-js/modules/es6.math.expm1.js","webpack:///./node_modules/core-js/modules/es6.math.fround.js","webpack:///./node_modules/core-js/modules/_math-fround.js","webpack:///./node_modules/core-js/modules/es6.math.hypot.js","webpack:///./node_modules/core-js/modules/es6.math.imul.js","webpack:///./node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/core-js/modules/es6.math.log1p.js","webpack:///./node_modules/core-js/modules/es6.math.log2.js","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/core-js/modules/es6.math.sinh.js","webpack:///./node_modules/core-js/modules/es6.math.tanh.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/core-js/modules/es6.string.from-code-point.js","webpack:///./node_modules/core-js/modules/es6.string.raw.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/es6.string.code-point-at.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/core-js/modules/es6.string.big.js","webpack:///./node_modules/core-js/modules/es6.string.blink.js","webpack:///./node_modules/core-js/modules/es6.string.bold.js","webpack:///./node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///./node_modules/core-js/modules/es6.string.fontsize.js","webpack:///./node_modules/core-js/modules/es6.string.italics.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/core-js/modules/es6.string.strike.js","webpack:///./node_modules/core-js/modules/es6.string.sub.js","webpack:///./node_modules/core-js/modules/es6.string.sup.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///./node_modules/core-js/modules/_date-to-primitive.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/es6.array.of.js","webpack:///./node_modules/core-js/modules/es6.array.join.js","webpack:///./node_modules/core-js/modules/es6.array.slice.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/es6.array.every.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./node_modules/core-js/modules/es6.array.copy-within.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/core-js/modules/es6.array.species.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///./node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.reflect.define-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///./node_modules/core-js/modules/es6.reflect.get.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.reflect.has.js","webpack:///./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack:///./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.reflect.set.js","webpack:///./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./node_modules/core-js/fn/array/includes.js","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/fn/array/flat-map.js","webpack:///./node_modules/core-js/modules/es7.array.flat-map.js","webpack:///./node_modules/core-js/modules/_flatten-into-array.js","webpack:///./node_modules/core-js/fn/string/pad-start.js","webpack:///./node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/core-js/fn/string/pad-end.js","webpack:///./node_modules/core-js/modules/es7.string.pad-end.js","webpack:///./node_modules/core-js/fn/string/trim-start.js","webpack:///./node_modules/core-js/modules/es7.string.trim-left.js","webpack:///./node_modules/core-js/fn/string/trim-end.js","webpack:///./node_modules/core-js/modules/es7.string.trim-right.js","webpack:///./node_modules/core-js/fn/symbol/async-iterator.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/fn/object/values.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/core-js/fn/object/entries.js","webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/core-js/fn/promise/finally.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/web/index.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/library/fn/global.js","webpack:///./node_modules/core-js/library/modules/es7.global.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/js-helper/dist/shared/Counter.js","webpack:///./node_modules/js-helper/dist/shared/DateHelper.js","webpack:///./node_modules/js-helper/dist/shared/MigrationHelper.js","webpack:///./node_modules/reflect-metadata/Reflect.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/typeorm/node_modules/debug/src/common.js","webpack:///./node_modules/typeorm/node_modules/ms/index.js","webpack:///./node_modules/js-helper/dist/shared/Prioritized.js","webpack:///./node_modules/js-helper/dist/shared/PromiseWithHandlers.js","webpack:///./node_modules/js-helper/dist/shared/Random.js","webpack:///./node_modules/js-helper/dist/client/Dragger/DragHelper.js","webpack:///./node_modules/js-helper/dist/client/HotkeyManager.js","webpack:///./node_modules/js-helper/dist/client/InputSelect.js","webpack:///./node_modules/cs-event-manager/dist/shared.js","webpack:///./node_modules/cs-event-manager/dist/shared/EventManager.js","webpack:///../../../../src/client/js/Context/ContainerSite.ts","webpack:///./node_modules/cordova-sites/dist/client/html/siteTemplates/container.html","webpack:///../../../../../src/client/js/Context/Delegate/DelegateSite.ts","webpack:///../../../../../src/client/js/Context/Fragment/AbstractWindowFragment.ts","webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/abstractWindowTemplate.html","webpack:///../../../../../src/client/js/Context/Fragment/AlphabeticListFragment.ts","webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/alphabeticListFragment.html","webpack:///../../../../../src/client/js/Context/Fragment/TabFragment.ts","webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/tabFragment.html","webpack:///../../../../../../src/client/js/Context/Menu/MenuAction/ErrorAction.ts","webpack:///./node_modules/cordova-sites/dist/client/img/errorIcon.png","webpack:///../../../../../../src/client/js/Context/Menu/MenuAction/StartSiteMenuAction.ts","webpack:///./node_modules/cordova-sites/dist/client/html/siteTemplates/navbar.html","webpack:///./node_modules/cordova-sites/dist/client/html/siteTemplates/menuSite.html","webpack:///../../../../../src/client/js/Context/SwipeFragment/SwipeFragment.ts","webpack:///./node_modules/cordova-sites/dist/client/html/Framework/Fragment/swipeFragment.html","webpack:///../../../../src/client/js/Dialog/ButtonChooseDialog.ts","webpack:///../../../../src/client/js/Dialog/ChooseDialog.ts","webpack:///../../../../src/client/js/Dialog/ConfirmDialog.ts","webpack:///../../../../src/client/js/Dialog/ImgChooseDialog.ts","webpack:///../../../../src/client/js/Legacy/ScaleHelper.ts","webpack:///../../../src/client/js/PromiseHelper.ts","webpack:///./node_modules/cordova-sites/dist/client/html/Dialog/shareDialog.html","webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/loginSite.html","webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/forgotPasswordSite.html","webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/notAllowedSite.html","webpack:///./node_modules/cordova-sites-user-management/dist/client/html/dialog/selectUserDialog.html","webpack:///../../../src/client/js/OfflineUserManager.ts","webpack:///../../src/client/SyncJob_old.ts","webpack:///../../../src/client/editEntitySite/ModifyEntitySite.ts","webpack:///../../../src/client/migration/SetupEasySync.ts","webpack:///../../../../src/client/js/Site/ChangeUserSite.ts","webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/changeUserSite.html","webpack:///../../../../src/client/js/Site/RegistrationSite.ts","webpack:///./node_modules/cordova-sites-user-management/dist/client/html/sites/registrationSite.html","webpack:///../../../../src/shared/v1/model/UserSyncModel.ts","webpack:///../../../../src/shared/v1/model/UserSyncPartialModel.ts","webpack:///./src/client/img/settings.png","webpack:///./src/client/html/sites/menu.html","webpack:///./src/client/html/sites/level.html","webpack:///./src/client/sound/single_coin_fall_on_concrete_.mp3","webpack:///./src/client/html/sites/end.html","webpack:///./src/client/html/sites/settingsSite.html","webpack:///./src/client/html/sites/tutorialSite.html","webpack:///./src/client/html/fragment/settings.html","webpack:///./src/client/html/sites/credits.html","webpack:///./src/client/html/sites/privacyPolicy.html","webpack:///./src/client/html/sites/impressum.html","webpack:///./src/client/html/sites/contactSite.html","webpack:///./src/client/sass/index.scss","webpack:///./src/shared/model/LevelData.ts","webpack:///./src/shared/model/migration/shared/Setup.ts","webpack:///./src/client/js/wordrotator/Segment/TemplateContainer.js","webpack:///./src/client/js/wordrotator/Segment/Segment.js","webpack:///./src/client/js/wordrotator/Segment/LeafSegment.js","webpack:///./src/client/js/wordrotator/Segment/ParentSegment.js","webpack:///./src/client/js/wordrotator/Level/Level.js","webpack:///./src/client/js/wordrotator/Segment/RowSegment.js","webpack:///./src/client/js/wordrotator/Level/RowLevel.js","webpack:///./src/client/js/wordrotator/Level/SimpleLevel.js","webpack:///./src/client/js/wordrotator/Level/RowLevel8.js","webpack:///./src/client/js/wordrotator/Level/RowLevel10.js","webpack:///./src/client/js/wordrotator/Segment/TriangleSegment.js","webpack:///./src/client/js/wordrotator/Level/SixWordsRowLevel.js","webpack:///./src/client/js/wordrotator/Level/SixWordsRowLevel8.js","webpack:///./src/client/js/wordrotator/Level/SixWordsRowLevel12.js","webpack:///./src/client/js/wordrotator/Level/FourWordsLevel.js","webpack:///./src/client/js/wordrotator/Level/FourWordsLevel8.js","webpack:///./src/client/js/wordrotator/Level/FourWordsLevel12.js","webpack:///./src/client/js/wordrotator/Segment/ColumnSegment.js","webpack:///./src/client/js/wordrotator/Level/BigSegmentsLevels.js","webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel.js","webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_0.js","webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_1.js","webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_2.js","webpack:///./src/client/js/wordrotator/Level/SimpleFourWordsLevel10_3.js","webpack:///./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_3.js","webpack:///./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_1_3.js","webpack:///./src/client/js/wordrotator/Level/TwoSegmentFourWordsLevel10_0_2.js","webpack:///./src/client/js/wordrotator/Level/LevelHelper.ts","webpack:///./src/client/js/Sites/EndSite.ts","webpack:///./src/client/js/model/LevelPlayed.ts","webpack:///./src/client/js/Sites/LevelSite.ts","webpack:///./src/client/js/wordrotator/Level/MainMenuLevel.js","webpack:///./src/client/js/Sites/TutorialSite.ts","webpack:///./src/client/js/Sites/CreditsSite.ts","webpack:///./src/client/js/Sites/PrivacyPolicySite.ts","webpack:///./src/client/js/Sites/ImpressumSite.ts","webpack:///./src/client/js/Sites/ContactSite.ts","webpack:///./src/client/js/Fragment/WordRotatorSettingFragment.ts","webpack:///./src/client/js/Sites/SettingsSite.ts","webpack:///./src/client/js/Sites/MainMenuSite.ts","webpack:///./src/client/js/model/migration/ClientSetup.ts","webpack:///./src/client/sound/brightAndBeautifull__.mp3","webpack:///./src/client/js/script.js"],"names":["TemplateContainer","leafTemplate","parentTemplate","rowTemplate","triangleTemplate","columnTemplate","cloneNode","Segment","element","rotation","parent","rotations","otherSegment","getLevel","Promise","resolve","locks","lockedArray","LeafSegment","leaf","Helper","isNotNull","setLeaf","ViewHelper","removeAllChildren","querySelector","appendChild","document","createTextNode","ParentSegment","children","class","rotatable","userRotationDelta","lastUserRotation","touchendListener","e","now","Date","getTime","target","position","changedTouches","length","elementFromPoint","pageX","pageY","x","y","targetTouches","contains","mouseDownTarget","stopPropagation","preventDefault","segmentClicked","rotate","clickPosition","mouseupListener","_updateElement","getHasWon","firstElem","secondElem","firstPosition","secondPosition","timeout","clickTolerance","rotationDirection","isNull","Math","abs","firstIndex","secondIndex","rotationIndexes","i","canRotate","currentRotation","_updateRotationClass","classList","add","delayPromise","setTimeout","then","remove","checkHasWon","sameAs","isNaN","splice","n","applyRotations","applyLocks","push","getCurrentRotations","locked","getCurrentLocked","checkChildren","nonNull","isSolved","addChild","child","setParent","layer","_getLayer","childContainer","removeEventListener","addEventListener","getElement","createElement","window","initListener","Level","templateContainer","rootSegment","words","startRotations","levelData","hasWon","id","saveAsCurrentAfterCheckWon","wonResolver","giveUpResolver","_shakeLeafs","_shakeLeafsTimeout","_lastRotation","wonPromise","reject","segmentClickedListener","NativeStoragePromise","setItem","JSON","stringify","replace","toUpperCase","self","saveAsCurrentLevel","shouldSave","_getRotatableSegmentsFrom","segment","clearTimeout","shakeLeafs","Random","getIntRandom","listener","_getLeafSegmentsFrom","leafs","getLeafSegments","index","apply","word","leafSegmentTemplate","leafSegments","charAt","RowSegment","onclick","RowLevel","container","wordLength","leafsWordOne","_createLeafsForWord","copyLeafTemplate","leafsWordTwo","copyRowTemplate","copyParentTemplate","setRootSegment","SimpleLevel","RowLevel8","RowLevel10","TriangleSegment","SixWordsRowLevel","leafsWords","parents","triangle","copyTriangleTemplate","rowSegment","SixWordsRowLevel8","SixWordsRowLevel12","FourWordsLevel","FourWordsLevel8","FourWordsLevel12","ColumnSegment","BigSegmentsLevels","bigSegmentPositions","parentSegment","indexOf","copyColumnTemplate","SimpleFourWordsLevel","bigSegmentPosition","SimpleFourWordsLevel10_0","SimpleFourWordsLevel10_1","SimpleFourWordsLevel10_2","SimpleFourWordsLevel10_3","TwoSegmentFourWordsLevel10_0_3","TwoSegmentFourWordsLevel10_1_3","TwoSegmentFourWordsLevel10_0_2","MainMenuLevel","Object","LoginSite","ADD_LOGIN_ACTION","RegistrationSite","ADD_REGISTRATION_ACTION","App","addInitialization","Translator","init","translations","translationGerman","translationEn","fallbackLanguage","markUntranslatedTranslations","NavbarFragment","title","soundManager","SoundManager","getInstance","CHANNELS","MUSIC","music","getItem","audio","loop","volume","muted","play","catch","console","error","UserManager","getMe","addLoginChangeCallback","isLoggedIn","DataManager","_basePath","__HOST_ADDRESS__","onlineCallback","isOnline","Toast","show","assign","BaseDatabase","CONNECTION_OPTIONS","logging","synchronize","migrationsRun","migrations","DeleteUserManagement1000000000000","SetupEasySync1000000000500","SetupUserManagement1000000001000","Setup1000000002000","ClientSetup1000000002001","app","start","MainMenuSite","sql","EasySyncClientDb","rawQuery","res","log","ready","device","platform","navigator","serviceWorker","register"],"mappings":"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AgD,gBAAgB,EAAE,KAAK;AACjJ;;AAEO;AACP;AACA;AACA,2GAA2G,sFAAsF,aAAa,EAAE;AAChN,sBAAsB,8BAA8B,gDAAgD,uDAAuD,EAAE,EAAE,GAAG;AAClK,4CAA4C,sCAAsC,UAAU,oBAAoB,EAAE,EAAE,UAAU;AAC9H;;AAEO;AACP,gCAAgC,uCAAuC,aAAa,EAAE,EAAE,OAAO,kBAAkB;AACjH;AACA;;AAEA;AACA,yCAAyC,6BAA6B;AACtE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,4CAA4C;AAC5C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;;;;;;;AC1OA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;;AAE/B;;;;;;;;ACrJA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgB;;AAEjB;;;;;;;ACZA,aAAa,mBAAO,CAAC,EAAW;AAChC,WAAW,mBAAO,CAAC,EAAS;AAC5B,WAAW,mBAAO,CAAC,EAAS;AAC5B,eAAe,mBAAO,CAAC,EAAa;AACpC,UAAU,mBAAO,CAAC,EAAQ;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,uBAAuB;AACzG,iEAAiE;AACjE,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA,gD;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACF;AACU;AACJ;AACJ;AACF;AACQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,YAAY,gEAAW,SAAS,EAAE;AACxG;AACA,qEAAqE,YAAY,8DAAU,QAAQ,EAAE;AACrG;AACA,kFAAkF,YAAY,wEAAe,aAAa,EAAE;AAC5H;AACA,sEAAsE,YAAY,gEAAW,SAAS,EAAE;AACxG;AACA,mEAAmE,YAAY,8DAAU,QAAQ,EAAE;AACnG;AACA,+EAA+E,YAAY,sEAAc,YAAY,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,yBAAyB,EAAE;AACrF,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,uBAAuB,EAAE;AAClF,6DAA6D,2BAA2B,EAAE;AAC1F,qEAAqE,2BAA2B,EAAE;AAClG,6DAA6D,2BAA2B,EAAE;AAC1F,2DAA2D,2BAA2B,EAAE;AACxF,mEAAmE,2BAA2B,EAAE;AAChG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,+BAA+B,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,wDAAwD,EAAE;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,2CAA2C,EAAE;AAC5G;AACA;AACA;AACA,wEAAwE,mDAAmD,EAAE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,yCAAyC,EAAE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,iDAAiD,EAAE;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,mDAAmD,EAAE;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA,yDAAyD,wCAAwC,EAAE;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD,wDAAwD,uCAAuC,EAAE;AACjG;AACA;AACA;AACA;AACA;AACA,+DAA+D,wCAAwC,EAAE;AACzG;AACA,0EAA0E,iGAAiG,EAAE;AAC7K;AACA;AACA;AACA;AACA,oDAAoD,6BAA6B,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,mCAAmC,EAAE;AACxG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,mCAAmC,EAAE;AAC7G,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,mCAAmC,EAAE;AACzG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,mCAAmC,EAAE;AACxG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,eAAe,EAAE;AAC5D,wCAAwC,QAAQ,mEAAU,0CAA0C,EAAE;AACtG;AACA,0CAA0C,mCAAmC,EAAE;AAC/E,uCAAuC,QAAQ,8DAAU,eAAe,EAAE;AAC1E,mEAAmE,QAAQ,gEAAW,gBAAgB,EAAE;AACxG,gEAAgE,QAAQ,8DAAU,eAAe,EAAE;AACnG,4EAA4E,QAAQ,sEAAc,mBAAmB,EAAE;AACvH;AACA;AACA;AACA;AACA,CAAC;AACgB;;AAEjB;;;;;;;;AC5QA;AAAA;AAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qDAAqD,gCAAgC,EAAE;AACvF,qDAAqD,gCAAgC,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA,0DAA0D,qBAAqB,EAAE;AACjF;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,uDAAuD,EAAE;AAC3H;AACA;AACA,kEAAkE,oEAAoE,EAAE;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,0CAA0C,mEAAa,WAAW,4DAAM;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,yCAAyC,OAAO;AAChD,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;;AAEpB;;;;;;;;;ACpPa;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA,qBAAqB,mBAAO,CAAC,GAAc;AAC3C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,UAAU,gBAAgB;AAChD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,mBAAmB;AACnB,iBAAiB;AACjB,iBAAiB;AACjB,mBAAmB;AACnB,mBAAmB;AACnB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB;AACA;AACA,4CAA4C,IAAI,EAAE;AAClD;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,4DAA4D,EAAE;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA,kC;;;;;;;AC/RA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;;AAE7B;;;;;;;;AClBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D,4CAA4C,4BAA4B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACuB;;AAExB;;;;;;;;AC5GA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gIAAgI,4BAA4B;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI,KAAK;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB;AACA,oBAAoB,mBAAO,CAAC,EAAS;AACrC;AACA;AACA;AACA,oBAAoB,mBAAO,CAAC,EAAS;AACrC;;AAEA;;;;;;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e,OAAlE;AACH;;;WAED,iCAA4B;AACxB,UAAI,QAAQ,GAAG,IAAf;AACA,UAAI,QAAQ,GAAG,IAAf;AAEA,UAAI,OAAO,GAAG,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAoB;AAC1C,gBAAQ,GAAG,OAAX;AACA,gBAAQ,GAAG,MAAX;AACH,OAHa,CAAd;AAIA,aAAO,CAAC,SAAD,CAAP,GAAqB,QAArB;AACA,aAAO,CAAC,QAAD,CAAP,GAAoB,QAApB;AAEA,aAAO,OAAP;AACH;;;;;;AAvXL,wB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLyD;AACe;AAClC;AACY;AACQ;AACV;AACD;AACoB;AACT;AACR;AACF;AACQ;AACrB;AACiD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qCAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,iEAAiE,sDAAe;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,2BAA2B,EAAE;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,sDAAe;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,sDAAe;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,2BAA2B,EAAE;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,uGAAuG,EAAE;AACxL,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,+EAA+E,8DAA8D,EAAE;AAC/I,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,uGAAuG,0CAA0C,EAAE;AACnJ;AACA;AACA;AACA,sHAAsH,8DAA8D,EAAE;AACtL;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,0LAA0L,0BAA0B,EAAE;AACtN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,uGAAuG,0CAA0C,EAAE;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,uGAAuG,0CAA0C,EAAE;AACnJ;AACA;AACA;AACA;AACA,wGAAwG,uCAAuC,EAAE;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,mEAAmE,EAAE;AAC5K;AACA;AACA,yCAAyC;AACzC,wEAAwE,QAAQ,sCAAS;AACzF,mDAAmD,wCAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,yCAAyC,EAAE,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,8DAA8D,kDAAW,sCAAsC,0DAAmB;AAClI;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,uGAAuG,0CAA0C,EAAE;AACnJ;AACA;AACA;AACA,mGAAmG,+CAA+C,EAAE;AACpJ,yCAAyC;AACzC;AACA;AACA,oJAAoJ,iCAAiC,EAAE;AACvL;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,uGAAuG,0CAA0C,EAAE;AACnJ;AACA;AACA;AACA,2IAA2I,iDAAiD,EAAE;AAC9L,yCAAyC;AACzC;AACA;AACA,6JAA6J,kCAAkC,EAAE;AACjM;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,gEAAgE,qDAAc;AAC9E;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,uGAAuG,0CAA0C,EAAE;AACnJ;AACA;AACA;AACA,2GAA2G,uDAAuD,EAAE;AACpK,yCAAyC;AACzC;AACA;AACA,gKAAgK,qCAAqC,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,gDAAgD,sBAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,+CAA+C,oBAAI;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,qGAAqG,yDAAyD,EAAE;AAChK,yCAAyC;AACzC;AACA;AACA,wKAAwK,oBAAoB,EAAE;AAC9L;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,+FAA+F,yDAAyD,EAAE;AAC1J,yCAAyC;AACzC;AACA;AACA;AACA,uGAAuG,YAAY,kCAAW,SAAS,EAAE;AACzI;AACA;AACA,mJAAmJ,4BAA4B,EAAE;AACjL;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA,4GAA4G,yBAAyB,EAAE;AACvI,sGAAsG,yBAAyB,EAAE;AACjI;AACA;AACA,uDAAuD,kCAAW,CAAC,gCAAU;AAC7E,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,qCAAQ;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA,iDAAiD,4BAA4B;AAC7E;AACA;AACA;AACA,2EAA2E,qCAAQ;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA,iDAAiD,4BAA4B;AAC7E;AACA;AACA,oFAAoF,kDAAW,yCAAyC,0DAAmB;AAC3J;AACA;AACA;AACA,2EAA2E,qCAAQ;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA,iDAAiD,4BAA4B;AAC7E;AACA;AACA;AACA,uGAAuG,mDAAmD,EAAE;AAC5J,wEAAwE,gCAAU;AAClF,qEAAqE,kCAAW;AAChF;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,iLAAiL,4BAA4B,EAAE;AAC/M;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,8EAA8E,mDAAmD,+CAA+C,EAAE,wCAAwC,EAAE;AAC5N,2EAA2E,QAAQ,gCAAU,uBAAuB,EAAE;AACtH;AACA;AACA,0IAA0I,iCAAiC,EAAE;AAC7K;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,8DAA8D,kDAAW,sCAAsC,0DAAmB;AAClI;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,8EAA8E,kDAAkD,+CAA+C,EAAE,EAAE,EAAE;AACrL,2EAA2E,QAAQ,gCAAU,uBAAuB,EAAE;AACtH;AACA;AACA,oJAAoJ,iCAAiC,EAAE;AACvL;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,+EAA+E,yFAAyF,iDAAiD,EAAE,EAAE,EAAE;AAC/N,4EAA4E,QAAQ,kCAAW,wBAAwB,EAAE;AACzH;AACA;AACA,6JAA6J,kCAAkC,EAAE;AACjM;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,gEAAgE,qDAAc;AAC9E;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA,kFAAkF,0DAA0D,uDAAuD,EAAE,EAAE,EAAE;AACzM,+EAA+E,QAAQ,wCAAc,2BAA2B,EAAE;AAClI;AACA;AACA,gKAAgK,qCAAqC,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA,wGAAwG,0CAA0C,EAAE;AACpJ;AACA;AACA;AACA;AACA,oGAAoG,mDAAmD,EAAE;AACzJ,yCAAyC;AACzC;AACA;AACA,mGAAmG,QAAQ,0CAAe,4BAA4B,EAAE;AACxJ,2IAA2I,iBAAiB,EAAE;AAC9J;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qFAAqF,iCAAiC,EAAE;AACxH;AACA;AACA;AACA,yFAAyF,0DAA0D,EAAE;AACrJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,uFAAuF,uDAAuD,EAAE;AAChJ;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yCAAyC,qCAAQ;AACjD;AACA;AACA;AACA;AACA,iLAAiL,wBAAwB,EAAE;AAC3M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qFAAqF,iCAAiC,EAAE;AACxH;AACA;AACA,gFAAgF,qFAAqF,EAAE;AACvK;AACA;AACA,kLAAkL,mBAAmB,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qFAAqF,iCAAiC,EAAE;AACxH;AACA;AACA,iFAAiF,uFAAuF,EAAE;AAC1K;AACA;AACA,8LAA8L,oBAAoB,EAAE;AACpN;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,QAAQ,gCAAU,mEAAmE,EAAE;AAC7I;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,8EAA8E,sBAAK;AACnF;AACA;AACA;AACA;AACA,oFAAoF,4DAA4D;AAChJ;AACA,qCAAqC;AACrC;AACA;AACA,oFAAoF,gEAAgE;AACpJ;AACA,qCAAqC;AACrC;AACA;AACA,oFAAoF,8DAA8D;AAClJ;AACA,qCAAqC;AACrC;AACA;AACA,oFAAoF,6DAA6D;AACjJ;AACA,qCAAqC;AACrC;AACA;AACA,oFAAoF,4DAA4D;AAChJ;AACA,qCAAqC;AACrC;AACA;AACA,oFAAoF,6DAA6D;AACjJ;AACA,qCAAqC;AACrC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC6B;AAC9B;AACA;AACA;AACA;;AAEA;;;;;;;;;ACvsD+C;AACE;AAC4B;AAC9B;AAC4B;AAC3E;AACA;AACA;AACA,IAAI,yCAAoB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,uEAAuE,+BAA+B,EAAE;AACxG,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,qCAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wDAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8BAAS;AAC5B;AACA;AACA,mBAAmB,8BAAS;AAC5B;AACA;AACA;AACA;AACA,mBAAmB,8BAAS;AAC5B;AACA;AACA,mBAAmB,8BAAS;AAC5B;AACA;AACA,mBAAmB,8BAAS;AAC5B;AACA;AACA,mBAAmB,8BAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wDAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAAS;AAC7B;AACA;AACA,oBAAoB,8BAAS;AAC7B;AACA;AACA,oBAAoB,8BAAS;AAC7B;AACA;AACA,oBAAoB,8BAAS;AAC7B;AACA;AACA,oBAAoB,8BAAS;AAC7B;AACA;AACA,oBAAoB,8BAAS;AAC7B;AACA;AACA,oBAAoB,wDAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qEAAqE,8CAA8C,EAAE;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,4DAA4D,EAAE;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,mBAAmB,4BAAQ;AAC3B,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,+CAA+C,EAAE;AAC/G;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC+B;;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrhBA;;AACA;;AACA;;AACA;;IAEa,Y;AAmBT;AAAA;;AAAA;;AACI,SAAK,QAAL,GAAgB,EAAhB;;AACA,QAAI,kBAAkB,MAAtB,EAA8B;AAC1B,WAAK,OAAL,GAAe,IAAI,YAAJ,EAAf;AACH,KAFD,MAEO,IAAI,wBAAwB,MAA5B,EAAoC;AACvC;AACA,WAAK,OAAL,GAAe,IAAI,kBAAJ,EAAf;AACH,KAHM,MAGA;AACH,YAAM,IAAI,KAAJ,CAAU,yBAAV,CAAN;AACH;;AACD,SAAK,OAAL,CAAa,aAAb,GAA6B;AACzB,aAAO,CAAC,GAAR,CAAY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AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAQ,gDAAgD,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA,mCAAmC;AACnC;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAQ,gDAAgD,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA,mCAAmC;AACnC;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAI,mBAAmB,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4DAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4DAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;;AAEvB;;;;;;;;ACrLA;AAAA;AAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA,mCAAmC,qCAAqC,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB,EAAE;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;;AAErB;;;;;;;;AC9La;AACb;AACA;AACA,kCAAkC,oCAAoC,aAAa,EAAE,EAAE;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,aAAa,mBAAO,CAAC,GAAkB;AACvC,aAAa,mBAAO,CAAC,GAAqB;AAC1C,aAAa,mBAAO,CAAC,CAAiB;AACtC,aAAa,mBAAO,CAAC,GAAqB;AAC1C,aAAa,mBAAO,CAAC,GAA0B;AAC/C,aAAa,mBAAO,CAAC,GAAsB;AAC3C,aAAa,mBAAO,CAAC,GAA8B;AACnD,aAAa,mBAAO,CAAC,GAAiB;AACtC,aAAa,mBAAO,CAAC,GAAoB;AACzC,kC;;;;;;ACrBA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC;AACA;AACA,2DAA2D;AAC3D;;;;;;;;ACLA;AAAA;AAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA,iCAAiC,8DAAQ,0CAA0C,mBAAmB;AACtG;AACA;AACA,iDAAiD,8DAAQ,sDAAsD,UAAU;AACzH;AACA;AACA;AACA;AACA,+BAA+B,QAAQ,gBAAgB;AACvD;AACA;AACA;AACA;AACA,6BAA6B,0BAA0B;AACvD;AACA;AACA;AACA,uBAAuB,QAAQ,gBAAgB;AAC/C;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA,CAAC;AACsB;;AAEvB;;;;;;;;AC9CA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACsB;;AAEvB;;;;;;;AC7GA,6BAA6B;AAC7B,uCAAuC;;;;;;;;ACD1B;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;ACnDA;AACA,kBAAkB,mBAAO,CAAC,EAAU;AACpC,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;ACHD,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,EAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;;ACfA;AAAA;AAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAa,KAAK,4DAAM;AACjD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,4BAA4B,EAAE;AACrG,SAAS;AACT;AACA;AACA,CAAC;AACsB;;AAEvB;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACF;AACgB;AACA;AACY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,oBAAoB,EAAE;AAClE,yCAAyC,uCAAuC,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,oEAAoE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,oEAAoE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA,gBAAgB,QAAQ,eAAe,YAAY,UAAU,EAAE,EAAE,EAAE;AACnE;AACA,gCAAgC,mEAAa,KAAK,4DAAM;AACxD;AACA,sFAAsF,OAAO;AAC7F,qBAAqB,QAAQ,cAAc,EAAE,QAAQ,QAAQ,eAAe,WAAW,EAAE,EAAE;AAC3F,qBAAqB,QAAQ,eAAe,wFAAwF,EAAE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,cAAc;AACd;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,QAAQ,KAAK,iBAAiB,GAAG,YAAY,UAAU,EAAE,GAAG,QAAQ,eAAe,YAAY,UAAU,EAAE,EAAE;AACrH;AACA;AACA;AACA;AACA,gCAAgC,0DAA0D;AAC1F;AACA;AACA;AACA;AACA,gBAAgB,QAAQ,eAAe,YAAY,UAAU,EAAE,EAAE,EAAE;AACnE;AACA,gCAAgC,mEAAa,KAAK,4DAAM;AACxD;AACA,sFAAsF,OAAO;AAC7F,qBAAqB,QAAQ,cAAc,EAAE,QAAQ,QAAQ,eAAe,WAAW,EAAE,EAAE;AAC3F,qBAAqB,QAAQ,eAAe,wFAAwF,EAAE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAQ;AACnC,iBAAiB,IAAI;AACrB;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mEAAa,KAAK,4DAAM;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,+EAAY;AACnH;AACA;AACA,wKAAwK,+EAAY;AACpL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,mGAAmG,+EAAY;AAC/G;AACA;AACA,4IAA4I,+EAAY;AACxJ;AACA;AACA;AACA;AACA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,mFAAmF,EAAE;AACjJ;AACA;AACA;AACA;AACA,wDAAwD,yFAAyF,EAAE;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wGAA4B;AAClD;AACA;AACA;AACA;AACA,6BAA6B,wBAAwB,qCAAqC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,kBAAkB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,oDAAoD,6CAA6C,EAAE;AACnG;AACA;AACA;AACA;AACA;AACA,oDAAoD,6CAA6C,EAAE;AACnG;AACA;AACA;AACA;AACA;AACA,0DAA0D,6CAA6C,EAAE;AACzG;AACA;AACA;AACA;AACA,gEAAgE,+CAA+C,EAAE;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,6CAA6C,EAAE;AACzG;AACA;AACA;AACA;AACA,gEAAgE,+CAA+C,EAAE;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,+CAA+C,EAAE;AACzG;AACA;AACA;AACA;AACA;AACA,2DAA2D,+CAA+C,EAAE;AAC5G;AACA;AACA;AACA;AACA;AACA,2DAA2D,+CAA+C,EAAE;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,0GAA0G,EAAE;AAC/J;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA,uCAAuC,iCAAiC;AACxE;AACA;AACA;AACA,wCAAwC,mEAAa,KAAK,4DAAM;AAChE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,QAAQ,+DAAQ,qCAAqC,EAAE;AACrH,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,+DAAQ;AAC3E,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,yEAAO,+BAA+B,mCAAmC;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kKAAkK;AAClK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,iDAAiD,EAAE;AAC9H,qEAAqE,yBAAyB,EAAE;AAChG;AACA,8EAA8E,mEAAmE,EAAE;AACnJ;AACA;AACA,yEAAyE,8CAA8C,EAAE;AACzH;AACA;AACA;AACA,8BAA8B,6BAA6B;AAC3D;AACA,qBAAqB,0CAA0C,gBAAgB,sBAAsB;AACrG;AACA,QAAQ,0BAA0B,8BAA8B;AAChE;AACA;AACA;AACA,gDAAgD,QAAQ,+DAAQ,4DAA4D,EAAE;AAC9H,oDAAoD,QAAQ,+DAAQ,gEAAgE,EAAE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oFAAY,wCAAwC,sFAAc,wCAAwC,uFAAe,wCAAwC,iFAAS;AACzO;AACA;AACA,iEAAiE,sFAAc;AAC/E,kEAAkE,uFAAe;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,sFAAc;AAClF;AACA;AACA,CAAC;AACyB;;AAE1B;;;;;;;ACpjBA;AACA,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;;ACJA;AAAA;AAAkC;AAClC;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;;AAEnC;;;;;;;;ACjBA;AAAA;AAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAa,KAAK,4DAAM;AACjD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,4BAA4B,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACqB;;AAEtB;;;;;;;;AC3DA;AAAA;AAAA;AAA4C;AACM;AAClD;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAW,eAAe,8DAAQ,CAAC,8DAAQ,GAAG,iBAAiB,uEAAuE;AAC9I;AACA;AACA;AACA,CAAC;AAC2B;;AAE5B;;;;;;;;;;;;;;;;;;;ACrBkD;AAClD;AACA;AACA,IAAI,WAAK;AACT;AACA,QAAQ,kCAAW,yBAAyB;AAC5C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACgB;;AAEjB;;;;;;;;;;;;ACrCyC;AACT;AACgB;AACwB;AACS;AACjF;AACA;AACA;AACA,IAAI,qCAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,IAAI;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,iCAAiC,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA,iBAAiB,mCAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA,6HAA6H;AAC7H;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,eAAe,EAAE;AAC3E;AACA;AACA,+CAA+C,6BAA6B,WAAK,SAAS,EAAE;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,YAAY,sCAAa,gCAAgC,EAAE;AACjI,wFAAwF,YAAY,kDAAmB,oBAAoB,EAAE;AAC7I,iGAAiG,YAAY,wDAAsB,uBAAuB,EAAE;AAC5J,uDAAuD,SAAS,qCAAQ,GAAG,UAAU,EAAE;AACvF,0DAA0D,SAAS,qCAAQ,GAAG,WAAW,EAAE;AAC3F,uCAAuC;AACvC,6DAA6D,gBAAgB,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,CAAC;AAC6B;;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;AChTgF;AACtB;AACpB;AACsB;AACF;AACS;AACK;AACF;AACT;AAC1B;AACyB;AACX;AACoB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qCAAkB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,UAAU,uBAAuB,EAAE,EAAE;AAClH;AACA;AACA,2CAA2C,sDAAsD;AACjG;AACA;AACA,oCAAoC,mBAAO,CAAC,GAAsB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,GAAsB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,uBAAY;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,GAAsB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,GAAsB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAO,CAAC,GAA0B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAO,CAAC,GAA0B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAO,CAAC,GAAwB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wDAAwD,iDAAiD,EAAE;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,sDAAsD,0CAA0C,EAAE;AAClG,mDAAmD,yCAAyC,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mCAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kCAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,8BAA8B,qBAAqB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qCAAQ,4CAA4C,UAAU;AAC3G;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA,6CAA6C,qCAAQ,4CAA4C,UAAU;AAC3G;AACA;AACA,qDAAqD,qCAAQ,CAAC,0CAAa,CAAC,0CAAa,KAAK,mCAAM,yBAAyB,mCAAM,iDAAiD,UAAU;AAC9L;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ,gBAAgB;AAC3D;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA,6CAA6C,qCAAQ,0CAA0C,UAAU;AACzG;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA,6CAA6C,qCAAQ,0CAA0C,UAAU;AACzG;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA,6CAA6C,qCAAQ,0CAA0C,UAAU;AACzG;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA,iCAAiC,EAAE;AACnC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0BAA0B,qCAAQ,6CAA6C,UAAU;AACzF;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,gBAAgB;AAC/C;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0CAAa,KAAK,mCAAM;AAChE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sCAAsC,sDAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,kCAAkC,mDAAY;AAC9C;AACA;AACA,2EAA2E;AAC3E;AACA,iBAAiB;AACjB;AACA,kCAAkC,sDAAe;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,0CAAa,KAAK,mCAAM;AACxE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,uCAAuC,EAAE;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,uDAAuD,wBAAE,+BAA+B,kDAAkD,EAAE;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,6DAA6D,gCAAgC,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4BAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wCAAc;AACtD;AACA;AACA;AACA,sCAAsC,oDAAoB;AAC1D;AACA;AACA;AACA;AACA;AACA,4HAA4H,oCAAoC,EAAE;AAClK;AACA;AACA;AACA,+DAA+D,oCAAY;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gCAAgC,qBAAqB,EAAE;AAChF,qBAAqB,gCAAgC,qBAAqB,EAAE;AAC5E,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,2DAA2D,0BAA0B,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qDAAc,sBAAsB,sDAAe;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,oCAAY;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;;AAExB;;;;;;;;ACr1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0D;AACqB;AACzB;AACsC;AACd;AACjB;AACd;AAC/C;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8FAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0EAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,wCAAwC;AACjG,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA,8BAA8B,6EAAa;AAC3C;AACA;AACA,4BAA4B,6EAAa;AACzC,uCAAuC,6EAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6EAAa;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6EAAa;AAC3C;AACA;AACA;AACA;AACA,6CAA6C,6EAAa;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6EAAa;AACrC;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAY,6EAAa;AACzB;AACA;AACA;AACA;AACA,8BAA8B,6EAAa;AAC3C;AACA;AACA,0BAA0B,4GAA8B;AACxD;AACA;AACA;AACA;AACA,CAAC,CAAC,kGAAoB;AACC;;AAEvB;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClB8C;AACY;AACY;AAChB;AACtD;AACA;AACA;AACA,IAAI,2CAAqB;AACzB;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wCAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAS,+BAA+B,wCAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0CAAa,KAAK,mCAAM;AACxD;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA,uBAAuB,0CAAe;AACtC;AACA;AACA;AACA,gCAAgC,0CAAa,KAAK,mCAAM;AACxD;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA,uBAAuB,0CAAe;AACtC;AACA;AACA;AACA,gCAAgC,0CAAa,KAAK,mCAAM;AACxD;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA;AACA;AACA,wBAAwB,0CAAe;AACvC;AACA;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA,uBAAuB,0CAAe;AACtC;AACA;AACA;AACA,gCAAgC,0CAAa,KAAK,mCAAM;AACxD;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA,uBAAuB,0CAAe;AACtC;AACA;AACA;AACA,gCAAgC,0CAAa,KAAK,mCAAM;AACxD;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA;AACA;AACA,wBAAwB,0CAAe;AACvC;AACA;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA,4BAA4B,0CAAe;AAC3C;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD;AACA;AACA,wBAAwB,0CAAe;AACvC;AACA;AACA,eAAe,wCAAS;AACxB;AACA;AACA,eAAe,wCAAS;AACxB;AACA;AACA;AACA;AACA;AACA,eAAe,wCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;;AAEjC;;;ACzIkC;AAClC;AACA;AACA;AACA,IAAI,6DAA8B;AAClC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyC;;AAE1C;;;ACjBkC;AAClC;AACA;AACA;AACA,IAAI,qEAAkC;AACtC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6C;;AAE9C;;;ACjBkC;AACM;AACxC;AACA;AACA,IAAI,uDAA2B;AAC/B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsC;;AAEvC;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;;AAErB;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;;AAE1B;;;ACvByD;AACH;AACd;AAC8B;AACF;AACR;AAC5D;AACA;AACA;AACA,IAAI,mCAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B,mFAAmF,QAAQ,sCAAS;AACpG,+BAA+B,wCAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB,EAAE,EAAE;AACzB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B,mFAAmF,QAAQ,sCAAS;AACpG,+BAA+B,wCAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB,EAAE,EAAE;AACzB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0GAA0G,kDAAkD,EAAE;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,qCAAQ,4DAA4D,yBAAyB;AAChJ;AACA;AACA;AACA;AACA,uCAAuC,QAAQ,gBAAgB;AAC/D;AACA;AACA;AACA;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0GAA0G,kDAAkD,EAAE;AAC9J;AACA;AACA;AACA;AACA,2EAA2E,eAAe;AAC1F;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,QAAQ,sCAAS;AAChF,mDAAmD,wCAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,yCAAyC,EAAE,EAAE;AAC7C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,8CAA8C,qCAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,0DAA0D,EAAE;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,8DAA8D,kDAAW;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,sBAAK;AAC9E;AACA;AACA;AACA;AACA,oFAAoF,2DAA2D;AAC/I;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oFAAoF,kEAAkE;AACtJ;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oFAAoF,6DAA6D;AACjJ;AACA,qCAAqC;AACrC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,gEAAgE,kDAAW;AAC3E;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC,SAAS;AACT;AACA;AACA,gDAAgD,kCAAkC,EAAE;AACpF;AACA;AACA,kEAAkE,uBAAuB,EAAE;AAC3F,mGAAmG,sDAAsD,EAAE;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,kBAAkB,EAAE,wBAAwB,yCAAyC,EAAE;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,8DAA8D,sDAAe;AAC7E,sDAAsD,cAAc,4DAA4D,kEAAkE;AAClM,iDAAiD,cAAc,uDAAuD,6DAA6D;AACnL;AACA;AACA;AACA;AACA;AACA,gEAAgE,kDAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,8DAA8D,sDAAe;AAC7E,0DAA0D,cAAc,4DAA4D,kEAAkE;AACtM,qDAAqD,cAAc,uDAAuD,6DAA6D;AACvL;AACA;AACA;AACA;AACA;AACA,gEAAgE,kDAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC4B;;AAE7B;;;ACnpBkC;AAClC;AACA;AACA,IAAI,mDAAyB;AAC7B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoC;;AAErC;;;ACjBkC;AAClC;AACA;AACA;AACA,IAAI,6CAAsB;AAC1B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiC;;AAElC;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACmB;;AAEpB;;;ACjOkC;AAClC,IAAI,mDAAyB;AAC7B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoC;;AAErC;;;ACfkC;AAClC;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;;AAEnC;;;AChBkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iDAAwB;AAC5B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmC;;AAEpC;;;ACrB+E;AACN;AAC7B;AACmC;AACnB;AACU;AACZ;AACiB;AACE;AACO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gEAAgE,EAAE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAyB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,8DAA8D,EAAE;AACxI,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gCAAgC,kDAAW;AAC3C;AACA;AACA;AACA,8BAA8B,mDAAyB;AACvD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,8BAA8B,kDAAW,sBAAsB,0DAAmB;AAClF,oFAAoF,mEAAmE,EAAE;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kDAAW;AACzC,uFAAuF,0BAA0B,EAAE;AACnH;AACA,0BAA0B,+CAAuB;AACjD;AACA,8BAA8B,sDAAe;AAC7C,kFAAkF,uBAAuB,EAAE;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAwB;AACtD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,KAAK,yBAAyB;AAC9I;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE;AACX;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,6BAA6B,EAAE;AAC5E;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,sBAAsB,6CAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACkC;;AAEnC;;;ACvNkC;AAClC;AACA;AACA;AACA,IAAI,+EAAuC;AAC3C,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkD;;AAEnD;;;;;;ACjBkC;AAClC;AACA;AACA;AACA,IAAI,mEAAiC;AACrC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4C;;AAE7C;;;ACnB8C;AAC9C;AACA;AACA;AACA,IAAI,qBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,mDAAmD,0CAAa,0CAA0C,mCAAM;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;;AAEtB;;;;;;ACnN0D;AAChB;AAC4C;AACtF;AACA;AACA;AACA;AACA;AACA,IAAI,6BAAc;AAClB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,oFAAoF,wCAAwC,EAAE;AAC9H;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,sDAAsD;AAClG,8CAA8C,uDAAuD;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sDAAsD;AAC7F;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oDAAoB;AACnF;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oDAAoB;AACnF;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4EAA4E,gDAAgD,EAAE;AAC9H,6EAA6E,uBAAuB,EAAE;AACtG,mEAAmE,8EAA8E,EAAE;AACnJ;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0EAA0E,oCAAoC,EAAE;AAChH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qBAAU;AACc;;AAE1B;;;ACpRkC;AAClC;AACA;AACA;AACA,IAAI,qDAA0B;AAC9B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA,sFAAsF,+BAA+B,EAAE,gCAAgC;AACvJ;AACA;AACA;AACA;AACA,CAAC;AACqC;;AAEtC;;;ACrBiF;AACnC;AAC9C;AACA;AACA;AACA,IAAI,iCAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,0EAA0E,iBAAiB,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA,0BAA0B,qDAA0B;AACpD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAiC,EAAE;AAChF,0CAA0C,uCAAuC,EAAE;AACnF,6CAA6C,wDAAwD,EAAE;AACvG;AACA;AACA,4EAA4E,wDAAwD,EAAE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sCAAO;AACvC;AACA;AACA;AACA;AACA;AACA,2EAA2E,2CAA2C,EAAE;AACxH;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,4CAA4C,EAAE;AAC3H;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC2B;;AAE5B;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,sCAAsC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,sCAAsC;AAC5F;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,CAAC;AAC4C;;AAE7C;;;ACtFuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,kDAAkD,EAAE;AAC/G,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,2DAA2D,uEAAuE,EAAE;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,sDAAsD,4CAA4C,EAAE;AACpG;AACA,yBAAyB;AACzB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,IAAI,6EAAsC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,8CAA8C,EAAE;AAC1G;AACA,yCAAyC,mCAAM;AAC/C;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,6DAA6D,EAAE;AAC9H,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACiD;;AAElD;;;ACtIkC;AAClC;AACA;AACA;AACA,IAAI,2DAA6B;AACjC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwC;;AAEzC;;;AClBkC;AAClC;AACA;AACA;AACA,IAAI,6EAAsC;AAC1C,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiD;;AAElD;;;AClByG;AACvD;AACqC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qCAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6EAAsC;AAChE;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6EAAsC;AAChE;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6EAAsC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE;AACA,SAAS;AACT;AACA,sBAAsB,2DAA6B;AACnD;AACA;AACA;AACA,CAAC;AAC6B;;AAE9B;;;AC9FkC;AAClC;AACA;AACA;AACA,IAAI,yFAA4C;AAChD,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuD;;AAExD;;;AClBkC;AACM;AACxC;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA,mCAAmC,oCAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;;AAEnC;;;AChCkC;AACM;AACxC;AACA;AACA;AACA,IAAI,6CAAsB;AAC1B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA,mCAAmC,oCAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiC;;AAElC;;;AC/BkD;AACR;AACkB;AACR;AACpD;AACA;AACA;AACA,IAAI,mCAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6BAAc;AAC/C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,kDAAW;AAChE,iCAAiC,sDAAe;AAChD;AACA;AACA,iCAAiC,qBAAU;AAC3C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AAC4B;;AAE7B;;;AClDkC;AAClC,IAAI,+DAA+B;AACnC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0C;;AAE3C;;;ACdkC;AAClC;AACA;AACA;AACA,IAAI,mCAAiB;AACrB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;;AAE7B;;;ACjB8C;AAC9C;AACA;AACA;AACA;AACA,IAAI,iDAAwB;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,0CAAa,KAAK,mCAAM,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,mDAAmD,EAAE;AACjI,sDAAsD,0CAAa,KAAK,mCAAM;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,2DAA2D,EAAE;AAC9I,sDAAsD,0CAAa,KAAK,mCAAM;AAC9E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,2DAA2D,EAAE;AAC9I,sDAAsD,0CAAa,KAAK,mCAAM;AAC9E;AACA,SAAS;AACT;AACA,kDAAkD,0CAAa,KAAK,mCAAM;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,WAAW;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmC;;AAEpC;;;;;;;;;;;;ACpK8C;AACF;AAC4B;AACxE;AACA;AACA;AACA,IAAI,2DAA6B;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,oCAAoC,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8BAAS;AACvD;AACA;AACA;AACA;AACA;AACA,8CAA8C,8BAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8BAAS;AACvD,4CAA4C,8BAAS;AACrD;AACA;AACA;AACA;AACA,0DAA0D,gDAAgD;AAC1G,kEAAkE,8CAA8C;AAChH,gCAAgC,4BAAQ;AACxC;AACA;AACA;AACA,8CAA8C,8BAAS;AACvD,4CAA4C,8BAAS;AACrD;AACA;AACA,8CAA8C,8BAAS;AACvD,4CAA4C,8BAAS;AACrD;AACA;AACA,8CAA8C,8BAAS;AACvD,4CAA4C,8BAAS;AACrD;AACA;AACA;AACA,0CAA0C,wDAAsB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,4BAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,mEAAmE,EAAE;AACzI;AACA;AACA;AACA,0EAA0E,wCAAwC,EAAE;AACpH,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,CAAC;AACwC;;AAEzC;;;ACnLkC;AAClC;AACA;AACA;AACA;AACA;AACA,IAAI,2DAA6B;AACjC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwC;;AAEzC;;;ACpBkC;AAClC;AACA;AACA;AACA,IAAI,2DAA6B;AACjC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwC;;AAEzC;;;;;;AClB+C;AACA;AAC/C;AACA;AACA;AACA,IAAI,iDAAwB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,mDAAmD,0DAA0D;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAAQ;AAChC;AACA;AACA,wBAAwB,4BAAQ;AAChC;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACmC;;AAEpC;;;ACrFkC;AAClC;AACA;AACA;AACA,IAAI,uEAAmC;AACvC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8C;;AAE/C;;;ACjBsE;AACgC;AACtG;AACA;AACA;AACA,IAAI,6CAAsB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,0DAA0D;AAC/G;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA,uGAAuG,wDAAwD,EAAE;AACjK;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,0CAA0C,uEAAmC;AAC7E;AACA;AACA;AACA,yBAAyB;AACzB,wGAAwG,0CAAa,CAAC,0CAAa,KAAK,mCAAM,wBAAwB,mCAAM;AAC5K;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACiC;;AAElC;;;AC/G+C;AAC/C;AACA;AACA;AACA,IAAI,+DAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,4CAA4C,EAAE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC0C;;AAE3C;;;AC/DiE;AACb;AACkB;AACU;AACO;AACA;AACjB;AACV;AACQ;AACP;AACc;AACJ;AACkB;AAC7C;AAC5C;AACA;AACA;AACA;AACA,IAAI,+BAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,4BAA4B,EAAE;AAC1G,4EAA4E,4BAA4B,EAAE;AAC1G,4EAA4E,4BAA4B,EAAE;AAC1G,gFAAgF,4BAA4B,EAAE;AAC9G,6EAA6E,4BAA4B,EAAE;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iDAAwB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,8BAA8B,EAAE;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iDAAwB;AAC1E;AACA;AACA;AACA;AACA;AACA,8FAA8F,kCAAkC,EAAE;AAClI;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,gCAAgC,EAAE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAA6B;AACvD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAY,2DAA6B;AACzC,0EAA0E,+BAA+B,EAAE;AAC3G,0EAA0E,8BAA8B,EAAE;AAC1G,0EAA0E,8BAA8B,EAAE;AAC1G,8EAA8E,kCAAkC,EAAE;AAClH,2EAA2E,gCAAgC,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8CAAiB;AAC1C;AACA,4DAA4D,2GAA2G,EAAE;AACzK;AACA,4DAA4D,+KAA+K,EAAE;AAC7O;AACA,4DAA4D,mIAAmI,EAAE;AACjM;AACA,gEAAgE,+KAA+K,EAAE;AACjP;AACA,6DAA6D,+KAA+K,EAAE;AAC9O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8CAAiB;AAC1C;AACA,4DAA4D,0GAA0G,EAAE;AACxK;AACA,4DAA4D,8KAA8K,EAAE;AAC5O;AACA,4DAA4D,kIAAkI,EAAE;AAChM;AACA,gEAAgE,8KAA8K,EAAE;AAChP;AACA,6DAA6D,8KAA8K,EAAE;AAC7O;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,kDAAW;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,iGAAiG,mDAAY;AAC7G;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG,mDAAY;AAC/G,mGAAmG,gDAAS;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,4EAA4E,uDAAgB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,mDAAmD,wCAAW;AAC9D;AACA;AACA,2HAA2H;AAC3H;AACA,iFAAiF,iDAAwB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,iFAAiF,6CAAsB;AACvG;AACA;AACA;AACA;AACA;AACA,iFAAiF,+DAA+B;AAChH;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,gFAAgF,qCAAQ;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iDAAiD,0BAA0B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA,yCAAyC;AACzC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qDAAqD,qCAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA,yGAAyG,QAAQ,sCAAS;AAC1H;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA,sDAAsD,2DAA6B;AACnF,0EAA0E,uDAAgB;AAC1F,wDAAwD,4BAAQ,aAAa;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB,EAAE,EAAE;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA;AACA,qDAAqD,qCAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2DAA6B;AACvE;AACA,yBAAyB;AACzB,0DAA0D,uDAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA,6GAA6G,QAAQ,sCAAS;AAC9H;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA,sDAAsD,2DAA6B;AACnF,0EAA0E,uDAAgB;AAC1F,wDAAwD,4BAAQ,aAAa;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB,EAAE,EAAE;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA,0GAA0G,QAAQ,sCAAS;AAC3H;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA,sDAAsD,2DAA6B;AACnF,0EAA0E,uDAAgB;AAC1F,wDAAwD,4BAAQ,aAAa;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB,EAAE,EAAE;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,6CAA6C,uDAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uIAAuI,wBAAwB,EAAE;AACjK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AAC0B;;AAE3B;;;AC7zBkC;AAClC;AACA;AACA;AACA,IAAI,qDAA0B;AAC9B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqC;;AAEtC;;;ACjB8C;AACF;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,0CAAa,KAAK,mCAAM;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ,2DAA2D;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,kDAAkD;AACtG;AACA,sBAAsB;AACtB;AACA,oDAAoD,6CAA6C;AACjG;AACA;AACA,YAAY,4BAAQ;AACpB;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkB;;AAEnB;;;;;;AC9OqC;AACU;AACgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,6DAA6D;AAC1J;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6BAA6B,GAAG,sBAAsB;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,uBAAuB,4BAAQ;AAC/B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAO;AACtD;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,wCAAc;AACtB;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAO;AACzD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACkC;;AAEnC;;;AClKqC;AACU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAiC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,eAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yFAAyF,6DAA6D;AACtJ;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,6BAA6B,GAAG,sBAAsB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,+EAA+E,4BAAQ;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,eAAO;AAClD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,CAAC;AAC4C;;AAE7C;;;ACnJqC;AACU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iDAAwB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,eAAO;AACjD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,6BAA6B,GAAG,sBAAsB;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4BAAQ;AAC/B,aAAa;AACb;AACA;AACA;AACA,mGAAmG;AACnG,qGAAqG;AACrG;AACA,sCAAsC,eAAO;AAC7C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,4BAAQ;AAC/B,aAAa;AACb,SAAS;AACT;AACA;AACA,sCAAsC,eAAO;AAC7C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4BAAQ;AACpB,SAAS;AACT;AACA,YAAY,4BAAQ;AACpB,SAAS;AACT;AACA;AACA;AACA,CAAC;AACmC;;AAEpC;;;AC7MgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,uDAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,4FAA4F,QAAQ,sCAAS;AAC7G;AACA;AACA;AACA,mCAAmC,wCAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,6CAA6C;AAC7C;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,uEAAuE,0CAAa,KAAK,mCAAM,gFAAgF,8BAA8B,EAAE;AAC/M;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,yCAAyC;AACzC;AACA;AACA,iEAAiE,qCAAQ,sDAAsD,uBAAuB;AACtJ;AACA;AACA;AACA;AACA,uDAAuD,QAAQ,gBAAgB;AAC/E;AACA;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB,EAAE,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,wDAAwD,EAAE;AAChH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACsC;;AAEvC;;;AChK+B;AACM;AACrC;AACA;AACA;AACA;AACA,IAAI,6CAAsB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACiC;;AAElC;;;ACnFyD;AACM;AACX;AAC6B;AAC7C;AACgD;AACoB;AAClB;AACV;AACM;AACtC;AAC5C;AACA;AACA;AACA,IAAI,2CAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,qEAAqE,mCAAiB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0GAA0G,4BAAQ;AAClH,mGAAmG,QAAQ,sCAAS;AACpH;AACA;AACA,uCAAuC,wCAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,qDAA0B;AACxF,kEAAkE,eAAO;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,6CAA6C;AAC7C,yEAAyE,6CAAsB;AAC/F;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,qEAAqE,uDAA2B;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,+CAAuB;AAC3E,oDAAoD,mEAAiC;AACrF,oDAAoD,iDAAwB;AAC5E;AACA;AACA;AACA;AACA,4DAA4D,iDAAwB;AACpF;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,sEAAsE,+BAAe;AACrF;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA;AACA,kGAAkG,yCAAyC,EAAE;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,qCAAQ;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACgC;;AAEjC;;;;;;ACvMyD;AACU;AACwC;AACZ;AACjC;AACR;AACc;AAC+C;AACU;AACtC;AACvB;AACM;AAC+C;AACzD;AACe;AACF;AACL;AACuB;AACd;AAC3B;AAClD;AACA;AACA;AACA;AACA,IAAI,2BAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC;AACnF;AACA;AACA;AACA;AACA,YAAY,kCAAW,2BAA2B,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,kDAAW;AACzE;AACA;AACA,sCAAsC,+EAAuC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,mDAAmD,EAAE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA,+CAA+C,0FAA0F,EAAE;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,qEAAqE,6EAAsC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G,oCAAY;AAC3H;AACA;AACA,8BAA8B,oCAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,mBAAmB,2CAAqB;AACxC;AACA,+BAA+B,eAAe,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2CAAqB;AACxC;AACA,+BAA+B,eAAe,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G,oCAAY;AAC3H;AACA;AACA,8BAA8B,oCAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,mBAAmB,2CAAqB;AACxC;AACA,+BAA+B,eAAe,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G,oCAAY;AAC3H;AACA;AACA,8BAA8B,oCAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,mBAAmB,2CAAqB;AACxC;AACA,+BAA+B,eAAe,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA,0DAA0D,iCAAgB;AAC1E,sCAAsC,iCAAgB;AACtD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA,0DAA0D,iCAAgB;AAC1E,qBAAqB,iCAAgB;AACrC,oBAAoB,iCAAgB;AACpC,sCAAsC,iCAAgB;AACtD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA,0DAA0D,iCAAgB;AAC1E,qBAAqB,iCAAgB;AACrC,oBAAoB,iCAAgB;AACpC,sCAAsC,iCAAgB;AACtD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,0DAA0D,iCAAgB;AAC1E,gBAAgB,iCAAgB;AAChC,qBAAqB,iCAAgB;AACrC,oBAAoB,iCAAgB;AACpC;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA,oBAAoB,iCAAgB;AACpC;AACA;AACA,yCAAyC,iCAAgB;AACzD;AACA;AACA;AACA,kEAAkE,iCAAgB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iCAAgB;AACzD;AACA;AACA;AACA;AACA,oBAAoB,iCAAgB;AACpC;AACA;AACA,kCAAkC,qCAAQ,CAAC,qCAAQ,GAAG,oBAAoB,KAAK,UAAU;AACzF;AACA,gBAAgB,iCAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA,sDAAsD,kDAAmB;AACzE;AACA;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB,eAAe,4EAA4E,EAAE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB,eAAe,4EAA4E,EAAE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAuB;AAC7C;AACA;AACA,uEAAuE,yCAAyC,EAAE;AAClH;AACA;AACA;AACA,gCAAgC,mCAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+DAA+B;AACrD;AACA;AACA,oCAAoC,6BAAc;AAClD,sBAAsB,6CAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE;AACA,SAAS;AACT;AACA,sBAAsB,2DAA6B;AACnD;AACA;AACA;AACA;AACA,gDAAgD,qCAAkB;AAClE;AACA;AACA;AACA,gDAAgD,qBAAU;AAC1D;AACA,0BAA0B,yFAA4C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,8BAA8B,mEAAiC;AAC/D;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACwB;;AAEzB;;;ACltB0D;AACV;AAChD;AACA;AACA;AACA;AACA,IAAI,qCAAkB;AACtB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAAa;AACe;;AAE9B;;;;;;AC7DgD;AACU;AACE;AACF;AACA;AAC1D;AACA;AACA;AACA,IAAI,yCAAoB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAW;AACpD,uBAAuB,yDAAkB;AACzC,yCAAyC,kCAAW;AACpD,uBAAuB,qCAAkB;AACzC,mBAAmB,2BAAa;AAChC;AACA;AACA,CAAC;AAC+B;;AAEhC;;;ACzBkC;AAClC;AACA;AACA;AACA,IAAI,qCAAkB;AACtB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;;AAE9B;;;;;;;;;;;;;;;ACjB0D;AACoC;AAC9B;AACyB;AAC9B;AAC3D;AACA;AACA;AACA,IAAI,qCAAkB;AACtB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAA+B;AACrD,gDAAgD,QAAQ,sCAAS;AACjE;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,wBAAwB;AACvE;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,qCAAqC,4CAAgB;AACrD,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA,0DAA0D,UAAU,IAAI,QAAQ,YAAY,OAAO,sBAAsB,UAAU;AACnI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,IAAI;;AAErB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD,qEAAqE,iCAAiC,EAAE;AACxG;AACA;AACA,CAAC,CAAC,8DAAyB;AACG;;AAE9B;;;;;;;;;AC9G0D;AACqB;AACrB;AACoB;AACc;AAC5F,IAAI,2BAAa;AACjB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAuB;AAC7C;AACA,sBAAsB,0DAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qCAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wEAA8B;AACpD;AACA;AACA;AACA,CAAC,CAAC,oDAAoB;AACG;;AAEzB;;;AC3F0D;AACoC;AAC9B;AACyB;AAC9B;AAC3D;AACA;AACA;AACA,IAAI,6CAAsB;AAC1B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAA+B;AACrD,gDAAgD,QAAQ,sCAAS;AACjE;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,wBAAwB;AACvE;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,qCAAqC,4CAAgB;AACrD,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD,qEAAqE,iCAAiC,EAAE;AACxG;AACA;AACA,CAAC,CAAC,8DAAyB;AACO;;AAElC;;;AC9E0D;AACqB;AACb;AACY;AACc;AAC5F,IAAI,mCAAiB;AACrB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAuB;AAC7C;AACA,sBAAsB,0DAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,6CAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAO,CAAC,qJAA6B;AAC/D;AACA;AACA,sBAAsB,wEAA8B;AACpD;AACA;AACA;AACA,CAAC,CAAC,oDAAoB;AACO;;AAE7B;;;;;;;;;;;;ACzF0D;AACoC;AAC9B;AACyB;AACG;AACR;AACzB;AACY;AACvE;AACA;AACA;AACA,IAAI,+BAAe;AACnB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,wEAA8B;AACpE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,gEAA0B;AAChE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,gEAA0B;AAChE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAA+B;AACrD,gDAAgD,QAAQ,sCAAS;AACjE;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,wBAAwB;AAC3E;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC,4CAAgB;AACzD,6BAA6B;AAC7B,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS,EAAE,EAAE;AACb;AACA;AACA,CAAC,CAAC,8DAAyB;AACA;;AAE3B;;;ACvM0D;AACqB;AAC3B;AAC0B;AAC9E,IAAI,qBAAU;AACd,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAuB;AAC7C;AACA,sBAAsB,0DAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+BAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA,qBAAqB;AACrB,8BAA8B,6BAA6B;AAC3D,qBAAqB;AACrB,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,oDAAoB;AACA;;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvF4E;AACZ;AAC8B;AACF;AACR;AACf;AACZ;AACU;AACE;AACM;AACE;AACV;AACE;AACf;AACK;AACZ;AACd;AACsC;AACvE;AACA;AACA;AACA,IAAI,uCAAmB;AACvB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mCAAM;AAC/B;AACA;AACA,mDAAmD,wBAAwB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,cAAc;AACd;AACA,yBAAyB,mCAAM;AAC/B;AACA;AACA,mDAAmD,wBAAwB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,wEAA8B;AACpE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,gEAA0B;AAChE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,gEAA0B;AAChE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,0EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4CAAgB;AAClD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAA+B;AACrD,gDAAgD,QAAQ,sCAAS;AACjE;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,qEAAqE,sBAAK,UAAU,sBAAK;AACzF;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,qEAAqE,sBAAK,UAAU,sBAAK;AACzF;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD,2CAA2C,0BAA0B;AACrE,uCAAuC,sBAAsB;AAC7D,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,gEAAgE,EAAE;AAChJ;AACA;AACA;AACA;AACA,wCAAwC,qCAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,qEAAqE,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE,qCAAqC,oBAAoB;AACzD,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,sBAAK;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,6EAA6E,mEAAmE,EAAE;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,oBAAI;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,wDAAwD,sBAAK;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAK;AAChD,6CAA6C,sBAAK;AAClD;AACA;AACA,yFAAyF,oBAAoB,EAAE;AAC/G;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA,yBAAyB;AACzB,iFAAiF,gEAAgE,EAAE;AACnJ;AACA;AACA;AACA,wCAAwC,qCAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAK;AAChD,6CAA6C,sBAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAK;AAChD,6CAA6C,sBAAK;AAClD;AACA;AACA;AACA;AACA;AACA,iJAAiJ,oBAAoB,EAAE;AACvK,sFAAsF,kCAAkC,EAAE;AAC1H,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA,2IAA2I,oBAAoB,EAAE;AACjK,gFAAgF,kCAAkC,EAAE;AACpH,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA,iFAAiF,+EAA+E,EAAE;AAClK;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,kCAAW;AAC9D;AACA;AACA,6BAA6B;AAC7B;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,oCAAoC,qCAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,kCAAW,2DAA2D,wCAAwC,EAAE;AACpL;AACA;AACA,4DAA4D,kCAAW;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,kCAAW;AAC/E;AACA,oEAAoE,6CAA6C,EAAE;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAK;AAChD,6CAA6C,sBAAK;AAClD;AACA;AACA;AACA;AACA,2CAA2C,sBAAK;AAChD,6CAA6C,sBAAK;AAClD;AACA;AACA;AACA;AACA;AACA,gFAAgF,oBAAoB,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA,yBAAyB;AACzB,qFAAqF,uCAAuC,EAAE;AAC9H;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA,iCAAiC,4BAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA;AACA,+IAA+I,oBAAoB,EAAE;AACrK,oFAAoF,kCAAkC,EAAE;AACxH,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA,qFAAqF,uCAAuC,EAAE;AAC9H;AACA,+IAA+I,oBAAoB,EAAE;AACrK,oFAAoF,kCAAkC,EAAE;AACxH,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA,kFAAkF,kCAAkC,EAAE;AACtH;AACA,qFAAqF,uCAAuC,EAAE;AAC9H;AACA;AACA;AACA,mJAAmJ,oBAAoB,EAAE;AACzK,wFAAwF,kCAAkC,EAAE;AAC5H,uDAAuD,sBAAK;AAC5D,yDAAyD,sBAAK;AAC9D;AACA;AACA;AACA;AACA;AACA,uDAAuD,kCAAW;AAClE;AACA;AACA,iCAAiC;AACjC;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA,+HAA+H,sCAAsC,EAAE;AACvK,iCAAiC;AACjC;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA,mDAAmD,sBAAK;AACxD;AACA,yDAAyD,sBAAK;AAC9D;AACA;AACA,yDAAyD,sBAAK;AAC9D;AACA;AACA;AACA,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,2CAA2C,qCAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,kCAAW;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uJAAuJ,oBAAoB,EAAE;AAC7K,mGAAmG,yCAAyC,EAAE;AAC9I,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA;AACA,6JAA6J,oBAAoB,EAAE;AACnL,yGAAyG,yCAAyC,EAAE;AACpJ,mDAAmD,sBAAK;AACxD,qDAAqD,sBAAK;AAC1D;AACA;AACA,iFAAiF,+EAA+E,EAAE;AAClK;AACA;AACA;AACA;AACA;AACA,gFAAgF,sGAAsG,EAAE;AACxL;AACA;AACA;AACA;AACA;AACA,mFAAmF,iFAAiF,EAAE;AACtK;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAK;AAChD,6CAA6C,sBAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,oCAAoC,qCAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,mCAAmC,EAAE;AAC7G;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,oBAAoB,EAAE;AAC3F;AACA;AACA;AACA;AACA,6IAA6I,oBAAoB,EAAE;AACnK,wFAAwF,kCAAkC,EAAE;AAC5H,+CAA+C,sBAAK;AACpD,iDAAiD,sBAAK;AACtD;AACA;AACA;AACA,uDAAuD,gDAAgD,EAAE;AACzG,wDAAwD,gCAAgC,EAAE;AAC1F;AACA,mFAAmF,iCAAiC,EAAE;AACtH,2CAA2C,sBAAK;AAChD,6CAA6C,sBAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2GAA2G,oBAAoB,EAAE;AACjI;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,8CAA8C,qCAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,kCAAW,mDAAmD,gCAAgC,EAAE;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,8CAA8C,qCAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,oFAAoF,kEAAkE,EAAE;AACxJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gCAAU,iDAAiD,+BAA+B,EAAE;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,oFAAoF,gEAAgE,EAAE;AACtJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,4FAA4F,0EAA0E,EAAE;AACxK;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,wCAAc,yDAAyD,mCAAmC,EAAE;AACrL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,4FAA4F,wEAAwE,EAAE;AACtK;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,wCAAwC,qCAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,0CAAe,4DAA4D,qCAAqC,EAAE;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,wCAAwC,qCAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,oCAAoC,qCAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,qDAAqD,sBAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gCAAU,kDAAkD,+BAA+B,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,oCAAoC,qCAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,yDAAyD,wBAAwB,EAAE;AACnF;AACA,kFAAkF,mCAAmC,EAAE;AACvH;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,oIAAoI;AACpI;AACA;AACA;AACA;AACA,2FAA2F,gCAAgC,EAAE;AAC7H;AACA;AACA,uIAAuI;AACvI;AACA;AACA;AACA,4FAA4F,gCAAgC,EAAE;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,oBAAI;AACnD;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,qCAAqC,mCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAAM;AACnC;AACA;AACA;AACA;AACA,2FAA2F,QAAQ,sCAAS;AAC5G;AACA;AACA,uCAAuC,wCAAW;AAClD;AACA;AACA,wDAAwD,sBAAK;AAC7D,yFAAyF,oGAAoG;AAC7L;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,wGAAwG,EAAE;AAC3L,8EAA8E,QAAQ,sCAAS;AAC/F;AACA;AACA,2DAA2D,wCAAW;AACtE;AACA;AACA;AACA;AACA,iEAAiE;AACjE,kFAAkF,kCAAW;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6HAA6H,aAAa;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kHAAkH,wBAAwB,EAAE;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wIAAwI,oDAAoD,EAAE;AAC9L,iIAAiI,mDAAmD,EAAE;AACtL;AACA,oHAAoH;AACpH;AACA,mIAAmI,EAAE;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,iDAAiD,EAAE,EAAE;AACrD;AACA;AACA;AACA,qEAAqE,4BAAQ;AAC7E;AACA;AACA,6CAA6C,4BAA4B,wCAAwC,EAAE;AACnH;AACA,mGAAmG,iEAAiE,EAAE;AACtK,2DAA2D,kCAAW;AACtE;AACA,2FAA2F,yBAAyB,EAAE;AACtH,iDAAiD;AACjD,6CAA6C;AAC7C,oEAAoE,4BAAQ;AAC5E;AACA;AACA,6CAA6C,4BAA4B,wCAAwC,EAAE;AACnH;AACA,kGAAkG,iEAAiE,EAAE;AACrK,2DAA2D,gCAAU;AACrE;AACA,0FAA0F,yBAAyB,EAAE;AACrH;AACA,iDAAiD;AACjD,6CAA6C;AAC7C,wEAAwE,4BAAQ;AAChF;AACA;AACA,6CAA6C,4BAA4B,wCAAwC,EAAE;AACnH;AACA,2DAA2D,wCAAc;AACzE;AACA;AACA,iDAAiD;AACjD,6CAA6C;AAC7C,yEAAyE,4BAAQ;AACjF;AACA,6CAA6C,4BAA4B,wCAAwC,EAAE;AACnH;AACA,wGAAwG,oEAAoE,EAAE;AAC9K;AACA;AACA;AACA,2DAA2D,0CAAe;AAC1E;AACA,kGAAkG,4BAA4B,EAAE;AAChI;AACA,4GAA4G,uCAAuC,EAAE;AACrJ;AACA;AACA;AACA,iDAAiD;AACjD,6CAA6C;AAC7C,oEAAoE,4BAAQ;AAC5E;AACA,6CAA6C,uBAAuB,mCAAmC,EAAE;AACzG;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,2DAA2D,gCAAU;AACrE;AACA;AACA,2FAA2F,yBAAyB,EAAE;AACtH;AACA;AACA,2FAA2F,+DAA+D,EAAE;AAC5J;AACA,iDAAiD;AACjD,6CAA6C;AAC7C;AACA;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,kDAAkD,EAAE;AACzH;AACA;AACA,uCAAuC,wBAAwB,EAAE;AACjE;AACA,sEAAsE,iFAAiF,EAAE;AACzJ;AACA,uCAAuC,kCAAW;AAClD;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA,gFAAgF,iCAAiC,EAAE;AACnH;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,4EAA4E,iCAAiC,EAAE;AAC/G;AACA;AACA,gGAAgG,iCAAiC,EAAE;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,qEAAqE,yBAAyB,EAAE;AAChG;AACA,iIAAiI,oBAAoB,EAAE;AACvJ,oEAAoE,kCAAkC,EAAE;AACxG;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB,EAAE;AACxD,oCAAoC,iBAAiB,8GAA8G,EAAE;AACrK,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAK;AAC5B;AACA;AACA,uBAAuB,sBAAK;AAC5B;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA,qCAAqC,8DAA8D;AACnG;AACA,kDAAkD,sBAAK;AACvD;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,yDAAyD,oBAAI;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA,2EAA2E,iBAAiB;AAC5F,uEAAuE,aAAa;AACpF;AACA,kDAAkD,sBAAK;AACvD;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,gIAAgI;AAChI;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,gCAAgC,EAAE;AACzH;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,6CAA6C,EAAE;AAC1G,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,mEAAmE,iCAAiC,EAAE;AACtG,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,+CAA+C,gCAAU;AACzD;AACA,4BAA4B,sBAAK,8DAA8D,sBAAK;AACpG;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,iCAAiC,EAAE;AAC1G,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,sEAAsE,oBAAoB,EAAE;AAC5F;AACA,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,8EAA8E,6BAA6B,EAAE;AAC7G,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,iDAAiD,kCAAW;AAC5D,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,+CAA+C,gCAAU;AACzD,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,uDAAuD,wCAAc;AACrE,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,wEAAwE,6BAA6B,EAAE;AACvG,4FAA4F,6BAA6B,EAAE;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,yDAAyD,0CAAe;AACxE,mBAAmB,sBAAK;AACxB;AACA;AACA;AACA;AACA;AACA,iDAAiD,kCAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAK,sBAAsB,oBAAI;AACzE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,CAAC,0CAAe;AACc;;AAE/B;;;ACp6FkE;AAC4B;AACF;AACR;AACd;AACC;AACvE,IAAI,2DAA0B;AAC9B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,CAAC,CAAC,uCAAmB;AACrB;AACA;AACA;AACA,IAAI,iEAAgC;AACpC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mCAAM;AAC/B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,cAAc;AACd;AACA,yBAAyB,mCAAM;AAC/B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,wEAA8B;AACpE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,gEAA0B;AAChE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,gEAA0B;AAChE,oDAAoD,8CAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8CAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,0EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,CAAC,2DAA0B;AACgB;;AAE5C;;;AC7L0D;AACE;AACC;AAC6C;AAC/B;AAC3E,IAAI,2CAAe;AACnB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,CAAC,CAAC,qDAAc;AAChB,IAAI,uDAA2B;AAC/B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+KAA+K,4DAA4D,EAAE;AAC7O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAgC,0JAA0J,4DAA4D,EAAE;AAC3Q;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wDAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wDAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6CAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,CAAC,2CAAe;AACsB;;AAEvC;;;AC1HiE;AACD;AACZ;AACU;AACT;AACA;AACG;AACa;AACE;AACrB;AACA;AACS;AACZ;AAC6B;AACmB;AACnD;AAC+B;AAC3E;AACA;AACA;AACA,IAAI,2BAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kDAAW;AACtC;AACA,2BAA2B,qDAAc;AACzC;AACA,2BAA2B,sDAAe;AAC1C;AACA,2BAA2B,gDAAS;AACpC;AACA,2BAA2B,kDAAW;AACtC;AACA,2BAA2B,mDAAY;AACvC;AACA,2BAA2B,0DAAmB;AAC9C;AACA,2BAA2B,2BAAa;AACxC;AACA,2BAA2B,gDAAkB;AAC7C;AACA,2BAA2B,mCAAiB;AAC5C;AACA,2BAA2B,kCAAW;AACtC;AACA,2BAA2B,mDAAY;AACvC;AACA,2BAA2B,sDAAe;AAC1C;AACA,2BAA2B,kDAAW;AACtC;AACA,2BAA2B,qBAAU;AACrC;AACA,2BAA2B,0DAAmB;AAC9C;AACA,2BAA2B,uDAA2B;AACtD;AACA,0BAA0B,qCAAkB;AAC5C;AACA;AACA;AACA,CAAC;AACwB;;AAEzB;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,kBAAkB;AAC9C;AACA;;AAEA;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,6BAA6B,EAAE;AACxF;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE,8BAA8B,EAAE;AACrG;AACA,kBAAkB;AAClB;AACA;AACA;AACA,8EAA8E,kBAAkB,EAAE;AAClG,iEAAiE,sBAAsB,EAAE;AACzF;AACA;AACA,2FAA2F,kBAAkB,EAAE;AAC/G,kFAAkF,wDAAwD,EAAE;AAC5I;AACA;AACA;AACA,8FAA8F,6CAA6C,EAAE;AAC7I;AACA;AACA;AACA,oGAAoG,4EAA4E,EAAE;AAClL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,yCAAyC,oBAAoB,EAAE;AAC/D;AACA;AACA,8EAA8E,oCAAoC,EAAE;AACpH;AACA;AACA;AACA,SAAS,IAAI;AACb,kJAAkJ,4BAA4B,EAAE;AAChL;AACA;AACA;AACA,CAAC;AACwB;;AAEzB;;;ACxH8C;AACI;AAClD;AACA;AACA;AACA,IAAI,iCAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,oCAAoC,EAAE;AAC7G;AACA;AACA,eAAe,wCAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,oCAAoC,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,sCAAsC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0CAAa,KAAK,mCAAM;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,0CAAa,KAAK,mCAAM;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ,eAAe,YAAY,UAAU,EAAE,EAAE,EAAE;AACnE;AACA,gCAAgC,0CAAa,KAAK,mCAAM;AACxD;AACA,sFAAsF,OAAO;AAC7F,qBAAqB,QAAQ,cAAc,EAAE,QAAQ,QAAQ,eAAe,WAAW,EAAE,EAAE;AAC3F,qBAAqB,QAAQ,eAAe,wFAAwF,EAAE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,cAAc;AACd,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,+CAA+C,0CAAa,KAAK,mCAAM;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB;AACvD,4CAA4C,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;;AAE5B;;;ACtY8C;AACc;AAC5D;AACA;AACA;AACA,IAAI,iCAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAW;AACpD;AACA;AACA;AACA;AACA,sCAAsC,0CAAa,KAAK,mCAAM;AAC9D,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,wDAAwD,EAAE;AAC7H;AACA;AACA,qEAAqE,4DAA4D,EAAE;AACnI;AACA;AACA,qEAAqE,4DAA4D,EAAE;AACnI;AACA;AACA,qEAAqE,0DAA0D,EAAE;AACjI;AACA;AACA,qEAAqE,0DAA0D,EAAE;AACjI;AACA;AACA,qEAAqE,8DAA8D,EAAE;AACrI;AACA;AACA,qEAAqE,iEAAiE,EAAE;AACxI;AACA;AACA,CAAC;AAC2B;;AAE5B;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0BAA0B,4CAA4C,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;;AAE9B;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;;AAEjC;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;;AAE9B;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2DAA2D,EAAE;AAC1G;AACA;AACA,CAAC;AACwB;;AAEzB;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,4BAA4B,EAAE;AAC7F,mFAAmF,4BAA4B,EAAE;AACjH;AACA;AACA;AACA;AACA,CAAC;AAC6B;;AAE9B;;;ACnD8C;AACY;AACE;AACA;AACQ;AACV;AAC0B;AACpF;AACA;AACA;AACA;AACA,IAAI,2DAA6B;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uBAAuB,wCAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,kDAAW,uCAAuC,0DAAmB;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uBAAuB,wCAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,kDAAW,uCAAuC,0DAAmB;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC,0CAAa,CAAC,0CAAa,KAAK,mCAAM,oBAAoB,mCAAM;AACpG,6DAA6D,2CAA2C,EAAE;AAC1G;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH,0CAA0C,EAAE;AAC/J;AACA,6EAA6E,yBAAyB,EAAE;AACxG;AACA;AACA;AACA,+FAA+F,gEAAgE,EAAE;AACjK;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iIAAiI,0CAA0C,EAAE;AAC7K;AACA;AACA;AACA;AACA;AACA,yGAAyG,gEAAgE,EAAE;AAC3K;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACwC;;AAEzC;;;AC5N4D;AACA;AACQ;AACV;AAC1D;AACA;AACA;AACA;AACA,IAAI,yEAAoC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+CAA+C,wCAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,wCAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,+CAA+C,wCAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AAC+C;;AAEhD;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE,8BAA8B,EAAE;AACrG;AACA;AACA;AACA;AACA;AACA,8EAA8E,kBAAkB,EAAE;AAClG,iEAAiE,sBAAsB,EAAE;AACzF;AACA;AACA,2FAA2F,kBAAkB,EAAE;AAC/G,kFAAkF,wDAAwD,EAAE;AAC5I;AACA;AACA;AACA,8FAA8F,6CAA6C,EAAE;AAC7I;AACA;AACA;AACA,oGAAoG,4EAA4E,EAAE;AAClL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,yCAAyC,oBAAoB,EAAE;AAC/D;AACA;AACA,8EAA8E,oCAAoC,EAAE;AACpH;AACA;AACA;AACA,SAAS,IAAI;AACb,6JAA6J,4BAA4B,EAAE;AAC3L;AACA;AACA;AACA,CAAC;AACyB;;AAE1B;;;ACxF0D;AACE;AACA;AACQ;AACP;AACuB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uDAAuD;AAChE,SAAS,uDAAuD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mDAAyB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAwE;AAC5F,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8CAA8C,mDAAY,qCAAqC,yBAAyB,EAAE;AAC1H,oBAAoB;AACpB;AACA;AACA,uCAAuC,cAAc;AACrD;AACA;AACA;AACA,wJAAwJ,uBAAuB,EAAE;AACjL;AACA;AACA,aAAa;AACb;AACA,oBAAoB;AACpB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,8CAA8C,EAAE;AACrI;AACA;AACA,wFAAwF;AACxF;AACA;AACA,cAAc;AACd;AACA,yGAAyG,gEAAgE,EAAE,EAAE;AAC7K;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,8FAA8F,+CAA+C,EAAE;AAC/I;AACA,uCAAuC,wCAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,kDAAW,uCAAuC,0DAAmB;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iEAAiE;AACjE,0DAA0D;AAC1D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACoC;;AAErC;;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiC;;AAElC;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;;AAEzB;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;;AAE7B;;;AC9B8C;AAC0B;AACpB;AACQ;AACA;AACF;AACM;AACA;AACI;AACM;AACA;AAC1B;AACgC;AACc;AACtB;AACI;AAChB;AACF;AACA;AACY;AACH;AACD;AACkB;AACpF;AACA;AACA;AACA,IAAI,2CAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2DAA6B;AAC9E,wDAAwD,yEAAoC;AAC5F,6CAA6C,mDAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,uHAAuH,EAAE;AACrL;AACA,mEAAmE,8CAA8C,EAAE;AACnH;AACA,2DAA2D,2EAA2E,EAAE;AACxI;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC,aAAa;AACb,SAAS;AACT;AACA;AACA,+CAA+C,oDAAoD,EAAE;AACrG,gDAAgD,+BAA+B,EAAE;AACjF;AACA;AACA,+CAA+C,oDAAoD,EAAE;AACrG,gDAAgD,+BAA+B,EAAE;AACjF;AACA;AACA,+CAA+C,oDAAoD,EAAE;AACrG,gDAAgD,0EAA0E,EAAE;AAC5H;AACA;AACA,+CAA+C,oDAAoD,EAAE;AACrG,gDAAgD,0EAA0E,EAAE;AAC5H;AACA,2DAA2D,yDAAyD,EAAE;AACtH;AACA,2DAA2D,wEAAwE,EAAE;AACrI;AACA;AACA,+CAA+C,oDAAoD,EAAE;AACrG;AACA;AACA,iEAAiE,oDAAoD,EAAE;AACvH;AACA,gLAAgL;AAChL;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,kDAAW,uCAAuC,0DAAmB;AAChI,8DAA8D,sDAAe,uCAAuC,gDAAS;AAC7H,wCAAwC,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,+DAA+D,sDAAe;AAC9E;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,sDAAe;AACpF,oCAAoC,aAAa;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iEAAiE,8BAA8B,EAAE;AACjG;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,6DAA6D,0CAAa,KAAK,mCAAM;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,2GAA2G,kCAAkC,EAAE;AAC/I,uHAAuH,mDAAmD,EAAE;AAC5K,SAAS;AACT;AACA;AACA,yCAAyC,8CAA8C,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yCAAyC,8EAA8E,EAAE;AACzH,gDAAgD,4DAA4D,EAAE;AAC9G;AACA;AACA,6DAA6D,qDAAqD,EAAE;AACpH,SAAS;AACT;AACA;AACA,8DAA8D,sDAAsD,EAAE;AACtH,SAAS;AACT;AACA;AACA,4DAA4D,qDAAqD,EAAE;AACnH,SAAS;AACT;AACA;AACA,oEAAoE,yDAAyD,EAAE;AAC/H,SAAS;AACT;AACA;AACA,yCAAyC,4CAA4C,EAAE;AACvF;AACA;AACA,6CAA6C,wBAAwB,EAAE;AACvE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,aAAa;AAC3B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB,EAAE;AAC5D,2CAA2C,mCAAmC,EAAE;AAChF,wDAAwD,0CAAa,KAAK,mCAAM;AAChF;AACA,mBAAmB,wCAAc;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,8FAA8F,kDAAkD,EAAE;AAClJ,6BAA6B,wCAAc,EAAE,2EAA2E;AACxH;AACA,4GAA4G,uGAAuG,EAAE;AACrN;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wFAAwF,0DAA0D,EAAE;AACpJ;AACA,0CAA0C,wCAAc;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G,+BAA+B,EAAE;AAChJ,4FAA4F,yCAAyC,EAAE;AACvI;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,wCAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,+CAA+C,wCAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,wCAAc;AAC7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AA4C,EAAE;AAC1I;AACA,2FAA2F,gDAAgD,EAAE;AAC7I,kGAAkG,mEAAmE,EAAE;AACvK,yFAAyF,4BAA4B,EAAE;AACvH,yFAAyF,4BAA4B,EAAE;AACvH,yFAAyF,4BAA4B,EAAE;AACvH,sFAAsF,yBAAyB,EAAE;AACjH,4FAA4F,+BAA+B,EAAE;AAC7H,wFAAwF,2BAA2B,EAAE;AACrH,4FAA4F,+BAA+B,EAAE;AAC7H,6FAA6F,gCAAgC,EAAE;AAC/H,+FAA+F,kCAAkC,EAAE;AACnI,uFAAuF,0BAA0B,EAAE;AACnH,kEAAkE,0DAA0D,EAAE;AAC9H;AACA,kEAAkE,2BAA2B,EAAE;AAC/F,wEAAwE,8BAA8B,EAAE;AACxG;AACA,wEAAwE,2BAA2B,EAAE;AACrG,8EAA8E,8BAA8B,EAAE;AAC9G,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,oJAAoJ,EAAE;AACjO;AACA;AACA;AACA;AACA;AACA,sGAAsG,wEAAwE,EAAE;AAChL,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACgC;;AAEjC;;;AChmBkE;AAClE;AACA;AACA;AACA;AACA;AACA,IAAI,uCAAmB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA,SAAS;AACT;AACA;AACA,8DAA8D,sCAAsC,EAAE;AACtG;AACA;AACA,4EAA4E,6CAA6C,EAAE;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,mDAAmD,EAAE;AAC5G;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AAC8B;;AAE/B;;;AC7KiC;AAC0C;AAC3E;AACA;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uCAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gEAAgE;AACtH,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,qCAAQ,2EAA2E,8BAA8B;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,gBAAgB;AACnE;AACA;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACkC;;AAEnC;;;;;;AC5O8C;AACwC;AAC1C;AACI;AACE;AACgC;AACC;AACtB;AAC7D;AACA;AACA;AACA,IAAI,mDAAyB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mCAAM,CAAC,4BAAQ;AAChC,kCAAkC,0CAAa,CAAC,0CAAa,KAAK,mCAAM,qBAAqB,mCAAM,CAAC,4BAA4B;AAChI,kEAAkE,QAAQ,gBAAgB,iBAAiB,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA,iBAAiB,mCAAM,CAAC,4BAAQ;AAChC,mCAAmC,0CAAa,CAAC,0CAAa,KAAK,mCAAM,sBAAsB,mCAAM,CAAC,4BAA4B;AAClI,eAAe,sBAAsB;AACrC;AACA,sCAAsC,QAAQ,gBAAgB,kBAAkB,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mCAAM,CAAC,4BAAQ;AAChC,kFAAkF,gCAAgC,oCAAY,YAAY,EAAE;AAC5I,kFAAkF,+BAA+B,oCAAY,CAAC,EAAE;AAChI,+BAA+B,0CAAa,CAAC,0CAAa,KAAK,mCAAM,kBAAkB,mCAAM,CAAC,4BAA4B;AAC1H;AACA,uCAAuC,oCAAY;AACnD;AACA;AACA;AACA,SAAS;AACT,2CAA2C,2CAAqB,kBAAkB,sBAAsB;AACxG,gDAAgD,+CAAuB;AACvE,wCAAwC,2CAAqB;AAC7D,eAAe,0CAAa,CAAC,0CAAa,KAAK,mCAAM,6BAA6B,mCAAM;AACxF;AACA;AACA,CAAC;AACoC;;AAErC;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,CAAC;AAC8B;;AAE/B;;;AC9F0D;AAC1D;AACA;AACA;AACA;AACA,IAAI,2CAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAa,mBAAmB,6CAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAa,2BAA2B,6CAAa;AACjE,YAAY,6CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAa,2BAA2B,6CAAa;AAC7D,QAAQ,6CAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAa;AACjC;AACA;AACA;AACA,oBAAoB,6CAAa;AACjC;AACA;AACA;AACA,iCAAiC,6CAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,CAAC;AACgC;;AAEjC;;;AC/FkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB,IAAI,iCAAU;AACd,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AACqB;;AAEtB;;;;;;;ACzD0B;AACgC;AAC1D;AACA;AACA;AACA,IAAI,uBAAW;AACf;AACA,6BAA6B,iBAAK;AAClC,+BAA+B,iBAAK;AACpC,8BAA8B,iBAAK;AACnC,gCAAgC,iBAAK;AACrC,8BAA8B,iBAAK;AACnC,wBAAwB,iBAAK;AAC7B,yBAAyB,iBAAK;AAC9B,yBAAyB,iBAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAa,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAAa,yBAAyB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAa,yBAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;;AAEvB;;;AC9F4D;AACI;AACtB;AACE;AAC5C;AACA;AACA;AACA,IAAI,2BAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA,+BAA+B,iCAAU;AACzC;AACA,+BAA+B,2CAAqB;AACpD;AACA,+BAA+B,uBAAW;AAC1C;AACA;AACA,mBAAmB,2CAAqB;AACxC;AACA;AACA,CAAC;AACwB;;AAEzB;;;AClC+C;AACW;AAC1D;AACA;AACA;AACA,IAAI,2CAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAa;AACpC;AACA;AACA,uBAAuB,6CAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;;AAEjC;;;ACtN+C;AACc;AACO;AACE;AAChB;AACtD;AACA;AACA;AACA,IAAI,qCAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,sBAAK;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,uCAAuC;AAC3G;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oEAAoE,+CAA+C;AACnH;AACA,qCAAqC;AACrC;AACA;AACA,oEAAoE,yCAAyC;AAC7G;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oEAAoE,6CAA6C;AACjH;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oEAAoE,0CAA0C;AAC9G;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oEAAoE,2CAA2C;AAC/G;AACA,qCAAqC;AACrC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,+CAA+C,sDAAe,OAAO,cAAc,uDAAuD;AAC1K;AACA;AACA;AACA,kDAAkD,mDAAY;AAC9D;AACA,mHAAmH,uBAAuB;AAC1I;AACA;AACA;AACA;AACA,gCAAgC,0CAA0C,sDAAe,OAAO,cAAc,6CAA6C;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,8DAA8D,sDAAe,GAAG;AAChF;AACA,gDAAgD,cAAc;AAC9D,0CAA0C,cAAc;AACxD,8CAA8C,cAAc;AAC5D,2CAA2C,cAAc;AACzD,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,uCAAuC;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,mDAAY;AAC1E,qFAAqF,kCAAkC;AACvH;AACA;AACA,4EAA4E,kCAAkC;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,oFAAoF,yBAAyB;AAC7G;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;;AAE9B;;;AC3PgE;AACN;AAC1D;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0JAA0J,wCAAwC;AAClM;AACA;AACA;AACA;AACA;AACA,uBAAuB,2CAAqB;AAC5C;AACA;AACA,uBAAuB,qCAAkB;AACzC;AACA;AACA;AACA,CAAC;AACkC;;AAEnC;;;ACpC8C;AAC9C;AACA;AACA;AACA;AACA,IAAI,6BAAc;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2GAA2G,0CAA0C,EAAE;AACvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,4BAA4B,8BAA8B,EAAE;AACzE;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,2DAA2D,EAAE;AACpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,4BAA4B,8BAA8B,EAAE;AACzE;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,kFAAkF,2DAA2D,EAAE;AAC/I;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,6CAA6C,0CAAa,CAAC,0CAAa,KAAK,mCAAM,yBAAyB,mCAAM;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,kFAAkF,2DAA2D,EAAE;AAC/I;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,6CAA6C,0CAAa,CAAC,0CAAa,KAAK,mCAAM,yBAAyB,mCAAM;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,uEAAuE;AACvE,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0EAA0E,EAAE;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sGAAsG,wGAAwG,EAAE;AAChN;AACA,aAAa;AACb;AACA,+CAA+C;AAC/C;AACA;AACA,sBAAsB;AACtB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,CAAC;AACyB;;AAE1B;;;ACvN+C;AACiB;AAChE;AACA;AACA;AACA,IAAI,iCAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B,gDAAgD,iCAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,UAAU,mDAAmD,EAAE,EAAE;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G,gCAAgC,EAAE;AAC9I,iHAAiH,gCAAgC,EAAE;AACnJ;AACA;AACA,0GAA0G,gCAAgC,EAAE;AAC5I,mHAAmH,gCAAgC,EAAE;AACrJ;AACA;AACA,kFAAkF,gCAAgC,EAAE;AACpH;AACA;AACA;AACA;AACA,yGAAyG,gCAAgC,EAAE;AAC3I;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,iCAAiC;AACjC;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uEAAuE,2DAA2D,EAAE;AACpI,yFAAyF;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,4BAA4B,8BAA8B,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA,kFAAkF,kEAAkE,EAAE;AACtJ,oGAAoG;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB,4BAA4B,8BAA8B,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sEAAsE,yEAAyE,EAAE;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,4BAA4B,8BAA8B,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sEAAsE,wEAAwE,EAAE;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,4BAA4B,8BAA8B,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;;AAE5B;;;;;;AChSyD;AACwB;AACQ;AACQ;AACd;AAChB;AACP;AACc;AACY;AACqB;AAC7B;AACtB;AACgB;AACC;AACjB;AACmB;AACD;AACT;AACI;AAClC;AACmC;AACZ;AACR;AACkC;AAChC;AACpD;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAAa;AACvC,0BAA0B,2BAAa;AACvC;AACA,4DAA4D,2CAAqB;AACjF,oDAAoD,+CAAuB;AAC3E,kCAAkC,6BAAc;AAChD,oCAAoC,iCAAgB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,yDAAkB;AAC5D;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qCAAkB;AAC5D;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,qEAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAW,eAAe,oBAAoB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,sDAAsD;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,6DAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAW,eAAe,qBAAqB;AACvE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAwB;AAChE,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,6DAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,sDAAe,2BAA2B,kDAAW,2BAA2B,0DAAmB;AACxJ;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,sCAAsC,qCAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,6DAA8B;AACpE,gDAAgD,mCAAiB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,6DAA8B;AACpE,gDAAgD,mCAAiB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,6DAA8B;AACpE;AACA,gDAAgD,mCAAiB;AACjE;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uDAA2B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kDAAW;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,4CAA4C,yDAAkB;AAC9D;AACA;AACA,sCAAsC,+EAAuC;AAC7E;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4BAA4B,yDAAkB;AAC9C;AACA;AACA;AACA,uBAAuB,wCAAkB;AACzC;AACA;AACA;AACA;AACA,uBAAuB,wCAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yCAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oCAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4CAA4C,mDAAyB;AACrE,0CAA0C,+CAAuB;AACjE;AACA;AACA,QAAQ,kCAAW,eAAe,2BAA2B;AAC7D;AACA;AACA,QAAQ,kCAAW,eAAe,mCAAmC;AACrE;AACA;AACA,QAAQ,kCAAW,eAAe,yBAAyB;AAC3D;AACA;AACA,8FAA8F,sCAAsC,EAAE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kCAAW;AAClC;AACA,uBAAuB,kCAAW;AAClC;AACA,uBAAuB,kCAAW;AAClC;AACA;AACA;AACA,CAAC;AACqB;;AAEtB;;;AC7hBkC;AAClC;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;;AAEnC;;;ACjBkC;AAClC;AACA;AACA;AACA,IAAI,+DAA+B;AACnC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0C;;AAE3C;;;AClB0C;AACiC;AACgB;AAC3F;AACA;AACA;AACA;AACA,IAAI,mCAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,iCAAiC,EAAE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kBAAkB;AAChD,sEAAsE,iCAAiC,EAAE;AACzG;AACA,sBAAsB,+CAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,wDAAwD,EAAE;AACrI;AACA;AACA;AACA,0BAA0B,+DAA+B;AACzD;AACA;AACA;AACA;AACA,6BAA6B,qBAAU;AACvC;AACA;AACA;AACA;AACA,CAAC;AAC4B;;AAE7B;;;AC7D+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAA0B;AAC9B;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACqC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAA0B;AAC9B;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACqC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAA0B;AAC9B;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACqC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2DAAuB;AAC3B;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACkC;;AAEnC;;;AC5FU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFkC;AAClC;AACA;AACA;AACA;AACA,IAAI,2EAAqC;AACzC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgD;;AAEjD;;;;;;ACpBkC;AAClC;AACA;AACA;AACA,IAAI,+CAAuB;AAC3B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;;AAEnC;;;;;;ACjBkC;AAClC;AACA;AACA,IAAI,qDAA0B;AAC9B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqC;;AAEtC;;;;;;;;;;;;AClBkC;AAClC,IAAI,qEAAkC;AACtC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6C;;AAE9C;;;;;;ACfkC;AAClC;AACA;AACA;AACA,IAAI,6DAA8B;AAClC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyC;;AAE1C;;;;;;AClBkC;AAClC;AACA;AACA,IAAI,+DAA+B;AACnC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0C;;AAE3C;;;AClBkC;AAClC;AACA;AACA,IAAI,6CAAsB;AAC1B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiC;;AAElC;;;;;;ACxBkC;AAClC;AACA;AACA;AACA,IAAI,+EAAuC;AAC3C,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkD;;AAEnD;;;;;;;;;;;;ACjBkC;AAClC;AACA;AACA,IAAI,6EAAsC;AAC1C,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiD;;AAElD;;;ACjBkC;AAClC;AACA;AACA;AACA,IAAI,uDAA2B;AAC/B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsC;;AAEvC;;;;;;ACnBkC;AAClC;AACA;AACA,IAAI,2CAAqB;AACzB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;;AAEjC;;;ACxBkC;AAClC;AACA;AACA,IAAI,iFAAwC;AAC5C,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmD;;AAEpD;;;AClBkC;AAClC;AACA;AACA,IAAI,+EAAuC;AAC3C,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkD;;AAEnD;;;AClBkC;AAClC;AACA;AACA;AACA,IAAI,yDAA4B;AAChC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuC;;AAExC;;;ACjBkC;AAClC;AACA;AACA,IAAI,iEAAgC;AACpC,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2C;;AAE5C;;;ACjBkC;AAClC;AACA;AACA;AACA;AACA,IAAI,iDAAwB;AAC5B,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmC;;AAEpC;;;;;;ACrBwD;AACN;AACF;AACK;AACA;AACX;AACK;AACF;AACA;AACF;AACO;AACF;AACH;AACI;AACX;AACQ;AACV;AACiB;AACJ;AACI;AACU;AACL;AACJ;AACG;AACV;AACE;AACR;AACa;AACJ;AACT;AACG;AACL;AACF;AACY;AACS;AAChB;AACS;AACR;AACO;AACO;AACf;AACG;AACH;AACI;AACY;AACjB;AACG;AACD;AACH;AACL;AACiB;AACO;AACD;AACV;AACD;AACI;AACR;AACO;AACI;AACL;AACP;;AAE1C;;;AC9DgD;AACgC;AAChF;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,cAAc;AACd;AACA;AACA,0BAA0B,iDAAwB;AAClD;AACA;AACA,gBAAgB,sBAAsB,iBAAiB,sDAAsD;AAC7G,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;;AC9DgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACjBgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;AChBgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACtDgD;AACgC;AACoB;AACpG;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iDAAwB;AAC9C;AACA;AACA,sBAAsB,qEAAkC;AACxD;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;;ACpDgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;AChBgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACjBgD;AAChD;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACvBgD;AAC6B;AAC7E;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,kBAAkB,kBAAkB;AACpC,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAC6B;AAC7E;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,kBAAkB,kBAAkB;AACpC,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAC6B;AAC7E;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,kBAAkB,kBAAkB;AACpC,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAC6B;AAC7E;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,kBAAkB,kBAAkB;AACpC,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAC6B;AAC7E;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,kBAAkB,kBAAkB;AACpC,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAC6B;AAC7E;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,kBAAkB,kBAAkB;AACpC,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAC6B;AAC7E;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,kBAAkB,kBAAkB;AACpC,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA,SAAS;AACT;AACA;;AAEA;;;ACbU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,iHAAiH;AACjH;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;;AAEA;;;ACpBgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACpBgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACtCgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACtCgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;AC9BgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACrCgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;AClBgD;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;AClBgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACvBgD;AAChD;AACA;AACA;AACO;AACP;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;;ACrBgD;AAChD;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,sFAAsF,uBAAuB;AAC7G,SAAS;AACT;AACA;;AAEA;;;ACdgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACtB8C;AAC8D;AACrG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,sBAAsB;AAC9E;AACA;AACA,qDAAqD,sBAAsB;AAC3E;AACA;AACA;AACA;AACA,wEAAwE,0CAAa,KAAK,mCAAM;AAChG;AACA;AACA;AACA,qBAAqB;AACrB;AACA,uEAAuE;AACvE,wEAAwE,0CAAa,kBAAkB,mCAAM;AAC7G;AACA;AACA,wEAAwE,0CAAa,KAAK,mCAAM;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAU;AACvC;AACA;AACA,6BAA6B,sDAAe;AAC5C;AACA;AACA,6BAA6B,6BAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;;AAEA;;;ACpFgD;AAChD;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACdgD;AAC0D;AAC1G;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2EAAqC;AAC3D;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACzBgD;AAChD;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACfgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B,EAAE;AAC5D;AACA,SAAS;AACT;AACA;;AAEA;;;ACtBgD;AAChD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B,EAAE;AAC5D;AACA,SAAS;AACT;AACA;;AAEA;;;ACzBgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACjB6C;AAC7C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;AC/BkD;AAClD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;;AAEA;;;AC5B6C;AAC7C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACpB6C;AAC7C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACpB6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,8BAA8B,wBAAwB;AACtD;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;ACrB6C;AAC7C;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;;;;ACf+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA,aAAa;AACb;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACT+C;AAC/C;AACA;AACA;AACA,aAAa,sBAAsB;AACnC;AACO;AACP,eAAe,oCAAY;AAC3B;;AAEA;;;ACV+C;AACxC;AACP;AACA,mBAAmB,oCAAY;AAC/B;AACA,eAAe,oCAAY;AAC3B;;AAEA;;;ACRU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFU;;AAEV;;;ACFsE;AAC7B;AACS;AAClD;AACA;AACA;AACA,IAAI,qBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAW;AACnC;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,2DAA2D,0CAAa,oBAAoB,mCAAM;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;;AAEtB;;;ACjPU;;AAEV;;;ACFU;;AAEV;;;ACFgF;;AAEhF;;;ACFU;;AAEV;;;ACFU;;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACF+C;AAC/C;AACA;AAC0B;AACyC;AACO;AAC3B;AACU;AACsB;AAC/E;AACA;AACA;AAC4B;AACU;AACF;AACG;AACF;AACb;AACmB;AACU;AACA;AACM;AACT;AACG;AACH;AACH;AACI;AACD;AACF;AACE;AACA;AACC;AACA;AACA;AACG;AACJ;AACD;AACK;AACD;AACD;AACF;AACG;AACJ;AACD;AACC;AACD;AACA;AACD;AACK;AACH;AACP;AACK;AACK;AACD;AACC;AACO;AACG;AACb;AACL;AACE;AACR;AACJ;AACC;AACD;AACI;AACA;AACO;AACD;AACI;AACF;AACH;AACI;AACE;AACO;AACV;AACD;AACI;AACO;AACZ;AACA;AACE;AACC;AACD;AACF;AACI;AACL;AACK;AACA;AAChB;AACO;AACQ;AACF;AACT;AACM;AACK;AACC;AACR;AACA;AACI;AACC;AACF;AACF;AACS;AACC;AACG;AACC;AACL;AACC;AACN;AACJ;AACG;AACG;AACG;AAC6B;AAC1B;AACc;AACP;AACY;AACA;AACA;AACA;AACI;AACxB;AACe;AACA;AACA;AACM;AACvB;AACgB;AACc;AACpB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAa;AACnC;AACA,qDAAqD,uCAAmB;AACxE;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE,WAAW,sCAAS;AACpB,eAAe,wCAAW;AAC1B,sCAAsC,2DAAuB;AAC7D,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,WAAW,gBAAgB,CAAC,mCAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,sCAAS;AACpB;AACA,eAAe,wCAAW;AAC1B;AACA;AACA;AACA,6CAA6C,2DAAuB;AACpE;AACA;AACA;AACA;AACA,kEAAkE,+CAA+C,EAAE;AACnH,6FAA6F,6BAA6B,EAAE;AAC5H;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACxSA;AAAA;AAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAa,KAAK,4DAAM;AACjD,mCAAmC,mEAAa,KAAK,4DAAM;AAC3D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC0B;;AAE3B;;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2B;AAC3B;AACA;AACA;AACA;AACA;AACO;AACP,kCAAkC,sBAAsB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,iDAAiD,kEAAkE,EAAE;AACrH;AACA;AACA;AACA;AACO;AACP,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM,2CAA2C;AACjD;AACO;AACP,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,+BAA+B,EAAE;AAC9F;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,cAAc;AAC3C,uBAAuB,6CAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACjGA;AAAA;AAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4DAAM,6DAA6D;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;;AAE7B;;;;;;;AChCA,uBAAuB;AACvB;AACA;AACA;;;;;;;ACHA,SAAS,mBAAO,CAAC,EAAc;AAC/B,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,iBAAiB,mBAAO,CAAC,EAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;ACPA;AACA,cAAc,mBAAO,CAAC,GAAY;AAClC,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;;ACLA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,a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AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACiC;;AAElC;;;;;;;;ACxBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D,uBAAuB,QAAQ;AAC/B;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC0B;;AAE3B;;;;;;;AC5IA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA,UAAU,mBAAO,CAAC,GAAe;AACjC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,gBA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,EAAmB,CAAG;;;;EA5DI,2B;;AAA9B,4B;;;;;;;ACXA;AAAA;AAAkC;AAClC;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyC;;AAE1C;;;;;;;;ACjBA;AAAA;AAAkC;AAClC;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyC;;AAE1C;;;;;;;;ACjBA;AAAA;AAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8C;;AAE/C;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkE;AAC0B;AACR;AACf;AACN;AACN;AACU;AACU;AACvB;AACiB;AACtC;AACoC;AACA;AACtB;AACoB;AACnE;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA,sCAAsC,4GAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,uFAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uFAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA,sCAAsC,oGAA0B;AAChE,oDAAoD,uFAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uFAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA,sCAAsC,oGAA0B;AAChE,oDAAoD,uFAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uFAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,2DAA2D,yEAAK;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,2DAA2D,yEAAK;AAChE;AACA;AACA;AACA;AACA,gFAAgF,sCAAsC,EAAE;AACxH;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD,2CAA2C,0BAA0B;AACrE,uCAAuC,sBAAsB;AAC7D,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE,qCAAqC,oBAAoB;AACzD,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,sEAAI;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,wDAAwD,yEAAK;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qDAAK;AACtC,mCAAmC,qDAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,uCAAuC,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,qFAAW,2DAA2D,wCAAwC,EAAE;AACpL;AACA;AACA;AACA,4DAA4D,qFAAW;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,qFAAW,2DAA2D,wCAAwC,EAAE;AACpL;AACA;AACA,yEAAyE,6CAA6C;AACtH;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,8FAA8F,wDAAwD,EAAE;AACxJ;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,qFAAW;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F,oDAAoD,EAAE;AACpJ,6FAA6F,wCAAwC,EAAE;AACvI,8FAA8F,0CAA0C,EAAE;AAC1I,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,6CAA6C,EAAE;AACtI,sFAAsF,iCAAiC,EAAE;AACzH,uFAAuF,mCAAmC,EAAE;AAC5H,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,mCAAmC,EAAE;AAC7G;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,wEAAwE,mCAAmC,EAAE;AAC7G;AACA,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,2DAA2D,EAAE;AAC5I;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,sFAAW,mDAAmD,gCAAgC,EAAE;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,8DAA8D,EAAE;AAC/I;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,yDAAyD,EAAE;AACxI;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,oFAAU,iDAAiD,+BAA+B,EAAE;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,4DAA4D,EAAE;AAC3I;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,+CAA+C,EAAE;AACpH;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,6FAAe,4DAA4D,qCAAqC,EAAE;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,kDAAkD,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,iEAAiE,8CAA8C,EAAE;AACjH;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,qDAAqD,yEAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,mFAAU,kDAAkD,+BAA+B,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,iEAAiE,4CAA4C,EAAE;AAC/G;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA;AACA,2FAA2F,gCAAgC,EAAE;AAC7H;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA,4FAA4F,gCAAgC,EAAE;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,yBAAyB,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sEAAI;AACnD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,gFAAgF,8BAA8B,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,QAAQ,+DAAS;AAC5G;AACA;AACA,uCAAuC,iEAAW;AAClD;AACA;AACA,wDAAwD,yEAAK,EAAE,wBAAwB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oDAAM;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,qFAAW;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kHAAkH,2BAA2B,EAAE;AAC/I;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA,qHAAqH,2BAA2B,EAAE;AAClJ;AACA;AACA;AACA;AACA;AACA,qHAAqH,2BAA2B,EAAE;AAClJ;AACA;AACA;AACA;AACA,sFAAsF;AACtF;AACA;AACA;AACA,6CAA6C;AAC7C,yEAAyE,gEAAQ,8CAA8C,2BAA2B,EAAE;AAC5J;AACA,mHAAmH,iGAAiG,EAAE;AACtN,8GAA8G,6BAA6B,EAAE;AAC7I,wHAAwH,2BAA2B,EAAE;AACrJ;AACA;AACA,2DAA2D,6FAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,6CAA6C;AAC7C;AACA,4EAA4E,kCAAkC,EAAE;AAChH,yEAAyE,wBAAwB,EAAE;AACnG,uFAAuF,sCAAsC,EAAE;AAC/H,6EAA6E,QAAQ,+DAAS;AAC9F;AACA,uDAAuD,iEAAW;AAClE;AACA;AACA,yGAAyG,wCAAwC,EAAE;AACnJ;AACA;AACA;AACA;AACA,yGAAyG,sEAAsE,EAAE;AACjL,2FAA2F,0BAA0B,EAAE;AACvH;AACA;AACA,uHAAuH,oCAAoC,EAAE;AAC7J,iEAAiE;AACjE;AACA;AACA;AACA;AACA,sFAAsF,sFAAW;AACjG;AACA;AACA,iEAAiE;AACjE;AACA,iDAAiD;AACjD,6CAA6C,EAAE,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,oFAAU,EAAE,yCAAyC;AAC3H;AACA;AACA,4EAA4E,kCAAkC,EAAE;AAChH,yEAAyE,wBAAwB,EAAE;AACnG,uFAAuF,sCAAsC,EAAE;AAC/H,6EAA6E,QAAQ,+DAAS;AAC9F;AACA,uDAAuD,iEAAW;AAClE;AACA;AACA,gHAAgH,2CAA2C,EAAE;AAC7J;AACA,yGAAyG,wCAAwC,EAAE;AACnJ;AACA;AACA;AACA;AACA,yGAAyG,sEAAsE,EAAE;AACjL,2FAA2F,0BAA0B,EAAE;AACvH;AACA,sFAAsF,mFAAU;AAChG;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,iDAAiD;AACjD,6CAA6C,EAAE,EAAE;AACjD;AACA;AACA;AACA,6FAA6F,gBAAgB,EAAE;AAC/G;AACA;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,yBAAyB,EAAE;AAChG,sEAAsE,wEAAwE,EAAE;AAChJ;AACA;AACA;AACA,qEAAqE,wDAAwD,EAAE;AAC/H;AACA;AACA;AACA,uCAAuC,wBAAwB,EAAE;AACjE;AACA,sEAAsE,iFAAiF,EAAE;AACzJ;AACA,uCAAuC,sFAAW;AAClD;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA,gFAAgF,iCAAiC,EAAE;AACnH;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,4EAA4E,iCAAiC,EAAE;AAC/G;AACA;AACA,gGAAgG,iCAAiC,EAAE;AACnI;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oEAAoE,kCAAkC,EAAE;AACxG;AACA;AACA;AACA,sFAAsF,0CAA0C,EAAE;AAClI;AACA;AACA;AACA,mBAAmB,qDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,+CAA+C,yEAAK;AACpD;AACA,mBAAmB,qDAAK;AACxB;AACA;AACA;AACA,uBAAuB,qDAAK;AAC5B;AACA;AACA,uBAAuB,qDAAK;AAC5B;AACA;AACA;AACA;AACA,iBAAiB,4DAAM;AACvB;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA,mBAAmB,qDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,6CAA6C,sEAAI;AACjD,mBAAmB,qDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,6CAA6C,sEAAI;AACjD;AACA,iBAAiB,4DAAM;AACvB;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,mBAAmB,qDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,mEAAmE,iCAAiC,EAAE;AACtG,mBAAmB,qDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,+CAA+C,mFAAU;AACzD,mBAAmB,qDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+EAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,wBAAwB,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,kCAAkC,EAAE;AACzH,qFAAqF,kCAAkC,EAAE;AACzH;AACA;AACA,+EAA+E,+BAA+B,EAAE;AAChH,iCAAiC,yBAAyB,kCAAkC,EAAE;AAC9F;AACA;AACA;AACA,+EAA+E,+BAA+B,EAAE;AAChH,iCAAiC,yBAAyB,kCAAkC,EAAE;AAC9F;AACA,+CAA+C,qDAAK;AACpD,iDAAiD,qDAAK;AACtD;AACA;AACA;AACA;AACA;AACA,2CAA2C,qDAAK;AAChD,6CAA6C,qDAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,CAAC,sFAAe;AACoB;;AAErC;;;;;;;;AChuDA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;;AAExB;;;;;;;ACXA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;ACJa;AACb,IAAI,mBAAO,CAAC,EAAgB;AAC5B,gBAAgB,mBAAO,CAAC,EAAY;AACpC,eAAe,mBAAO,CAAC,EAAW;AAClC,cAAc,mBAAO,CAAC,EAAU;AAChC,gBAAgB,mBAAO,CAAC,CAAW;AACnC,eAAe,mBAAO,CAAC,GAAU;AACjC,gBAAgB,mBAAO,CAAC,GAAiB;AACzC,YAAY,mBAAO,CAAC,EAAQ;AAC5B,mBAAmB,mBAAO,CAAC,GAAgB;AAC3C,qBAAqB,mBAAO,CAAC,EAAkB;AAC/C,aAAa,mBAAO,CAAC,EAAS;AAC9B,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,kBAAkB,mBAAO,CAAC,EAAe;AACzC,iBAAiB,mBAAO,CAAC,EAAc;AACvC,gBAAgB,mBAAO,CAAC,GAAa;AACrC,wBAAwB,mBAAO,CAAC,EAAsB;AACtD,oBAAoB,mBAAO,CAAC,EAAiB;AAC7C,YAAY,mBAAO,CAAC,EAAQ;AAC5B,gBAAgB,mBAAO,CAAC,GAAY;AACpC,iBAAiB,mBAAO,CAAC,EAAc;AACvC,iBAAiB,mBAAO,CAAC,EAAc;AACvC,oBAAoB,mBAAO,CAAC,GAAkB;AAC9C,eAAe,mBAAO,CAAC,EAAkB;AACzC,uBAAuB,mBAAO,CAAC,EAAe;AAC9C,aAAa,mBAAO,CAAC,EAAgB;AACrC,kBAAkB,mBAAO,CAAC,GAA4B;AACtD,YAAY,mBAAO,CAAC,EAAQ;AAC5B,YAAY,mBAAO,CAAC,EAAQ;AAC5B,0BAA0B,mBAAO,CAAC,EAAkB;AACpD,4BAA4B,mBAAO,CAAC,GAAmB;AACvD,2BAA2B,mBAAO,CAAC,GAAwB;AAC3D,uBAAuB,mBAAO,CAAC,GAAsB;AACrD,kBAAkB,mBAAO,CAAC,GAAc;AACxC,oBAAoB,mBAAO,CAAC,GAAgB;AAC5C,mBAAmB,mBAAO,CAAC,GAAgB;AAC3C,kBAAkB,mBAAO,CAAC,GAAe;AACzC,wBAAwB,mBAAO,CAAC,GAAsB;AACtD,YAAY,mBAAO,CAAC,EAAc;AAClC,cAAc,mBAAO,CAAC,EAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA,4BAA4B;AAC5B,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB,0BAA0B,EAAE,EAAE;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gCAAgC;AACzF;AACA,OAAO;AACP;AACA;AACA,6EAA6E,YAAY;AACzF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,6CAA6C,EAAE;;AAExG;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,mDAAmD;AACnD;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,oCAAoC;AACpC;AACA,KAAK;AACL,wEAAwE;AACxE;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,8DAA8D;AAC9D;AACA,KAAK;AACL,wEAAwE;AACxE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,yBAAyB,sBAAsB,EAAE,EAAE;AACnD;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,sBAAsB,0BAA0B;AAChD,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,yBAAyB;AACzB,KAAK;AACL,uBAAuB;AACvB,2BAA2B;AAC3B,0BAA0B;AAC1B,2BAA2B;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,aAAa;AACvC,OAAO;AACP;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL,uDAAuD,6BAA6B,EAAE;AACt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KAAK,KAAZ;AACH;AAED;;;;AAIG;;;;WACH,iBAAQ,IAAR,EAAY;AACR,WAAK,KAAL,GAAa,IAAb;AACH;;;;;;AA7OL;AAkBI;;;AAGG;;AACY,oBAAiB,CAAjB;AA0NnB;;;;;AAKG;;AACH,UAAU,CAAC,WAAX,GAAyB,QAAzB;AACA;;;;;AAKG;;AACH,UAAU,CAAC,gBAAX,GAA8B,SAA9B;AACA;;;;;AAKG;;AACH,UAAU,CAAC,eAAX,GAA6B,QAA7B;AACA;;;;;AAKG;;AACH,UAAU,CAAC,cAAX,GAA4B,OAA5B;AACA;;;;;AAKG;;AACH,UAAU,CAAC,UAAX,GAAwB,OAAxB,C;;;;;;ACvRA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAU;;AAEnC,OAAO,WAAW;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;AC5QA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA,WAAW,mBAAO,CAAC,EAAQ;AAC3B,eAAe,mBAAO,CAAC,EAAc;AACrC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,cAAc,mBAAO,CAAC,EAAc;AACpC;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,EAAU;AAChC,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDA;;AACA;;AACA;;IAEa,M;AAcT,kBAAY,OAAZ,EAAqB,KAArB,EAA0B;AAAA;;AAAA;;AACtB,SAAK,SAAL,GAAiB,IAAjB;AACA,SAAK,QAAL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AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,GAAW;AAChC,cAAc,mBAAO,CAAC,GAAS;AAC/B,cAAc,mBAAO,CAAC,GAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;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tEqB,0B;;AAA1B;AAyEA,sCAAa,QAAb,CAAsB,IAAtB,E;;;;;;;AC7EA;AAAA;AAAA;AAAkC;AACM;AACxC;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA,mCAAmC,mDAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,CAAC;AAC8B;;AAE/B;;;;;;;;ACvCA;AAAA;AAAkC;AAClC;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC+B;;AAEhC;;;;;;;;ACjBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;;AAExB;;;;;;;;ACpBA;AAAA;AAAkC;AAClC;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyC;;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBsE;AACf;AACvD,IAAI,iCAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B,oFAAoF,QAAQ,sCAAS;AACrG;AACA;AACA,2BAA2B,wCAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iIAAiI,kCAAW;AAC5I;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,oIAAoI,kCAAW;AAC/I;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB,UAAU,EAAE;AACpE;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,kCAAW;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uBAAuB,UAAU,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB,UAAU,EAAE,4BAA4B,8BAA8B,EAAE;AAChI;AACA;AACA;AACA;AACA,2DAA2D,mDAAmD;AAC9G;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,kCAAW;AAC5F;AACA,qCAAqC,IAAI;AACzC,iCAAiC;AACjC;AACA;AACA;AACA,2DAA2D,mDAAmD;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uBAAuB,UAAU,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB,UAAU,EAAE;AACpE;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0CAAa,CAAC,0CAAa,KAAK,mCAAM,kBAAkB,mCAAM;AAClG;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA,qCAAqC;AACrC;AACA,qBAAqB;AACrB,iBAAiB,EAAE,EAAE;AACrB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC2B;;AAE5B;;;ACrN4D;AAC5D,IAAI,iFAAwC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAmB;AACtC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACmD;;AAEpD;;;ACrD+C;AAC/C,IAAI,uCAAmB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,0FAA0F,QAAQ,sCAAS;AAC3G;AACA;AACA,2BAA2B,wCAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,+EAA+E,EAAE;AAChJ,8DAA8D,gBAAgB,EAAE;AAChF;AACA;AACA;AACA;AACA,2DAA2D,yDAAyD;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,+EAA+E,EAAE;AAChJ,8DAA8D,gBAAgB,EAAE;AAChF;AACA;AACA;AACA;AACA,2DAA2D,yDAAyD;AACpH;AACA;AACA;AACA;AACA,0JAA0J,8CAA8C,EAAE;AAC1M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB,EAAE,EAAE;AACrB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC8B;;AAE/B;;;ACnHkE;AAClE,IAAI,uFAA2C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAsB;AACzC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACsD;;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;ACrDiF;AAC7B;AAC8C;AAC5B;AACqC;AACd;AACI;AACN;AAC3C;AACwB;AACS;AACf;AACgD;AACvC;AACgD;AAC7E;AACmD;AACvC;AACS;AACN;AACyB;AACa;AAC/B;AAClB;AACE;AACgC;AACZ;AACL;AACnE;AACA;AACA;AACA,IAAI,qCAAkB;AACtB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,UAAU,uBAAuB,EAAE,EAAE;AAClH;AACA;AACA;AACA;AACA,6CAA6C,uEAAuE;AACpH;AACA;AACA,2CAA2C,sDAAsD;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G,UAAU,uBAAuB,EAAE,EAAE;AACpJ;AACA;AACA;AACA;AACA,6CAA6C,uEAAuE;AACpH;AACA;AACA,6CAA6C,sDAAsD;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kDAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wDAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,0CAA0C,uCAAuC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4DAA4D;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2DAA2D;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B,GAAG,0BAA0B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B,GAAG,0BAA0B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B,GAAG,0BAA0B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iCAAiC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,cAAc,6BAA6B;AACrG;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,0EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gFAAkC;AAChF;AACA;AACA;AACA;AACA,8CAA8C,gFAAkC;AAChF;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,sCAAsC,kDAAmB;AACzD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,0EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,0EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,sCAAsC,0EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,gCAAgC,sCAAa;AAC7C;AACA;AACA;AACA,0DAA0D;AAC1D,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0CAAa,KAAK,mCAAM;AACtE,wDAAwD,0CAAa,KAAK,mCAAM;AAChF;AACA;AACA;AACA;AACA;AACA,kDAAkD,0CAAa,KAAK,mCAAM;AAC1E,4DAA4D,0CAAa,KAAK,mCAAM;AACpF;AACA;AACA,uFAAuF,6CAA6C,EAAE;AACtI;AACA,qCAAqC,kDAAkD;AACvF,6FAA6F,6CAA6C,EAAE;AAC5I;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uCAAuC,+CAA+C,EAAE;AACxF,wCAAwC,yBAAyB,uFAAuF,EAAE,EAAE;AAC5J;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA,8CAA8C,sDAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qEAAqE,EAAE;AAC7G;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,0DAA0D,6FAA6F,EAAE;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qDAAc;AAC5C,0EAA0E,uCAAuC,EAAE;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sDAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,kDAAW,sCAAsC,0DAAmB,sCAAsC,gDAAS;AACtK;AACA;AACA;AACA;AACA;AACA,0BAA0B,kFAAmC;AAC7D;AACA,mDAAmD,oDAAoB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,mDAAY;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qDAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kDAAW,sBAAsB,0DAAmB;AAC1F;AACA;AACA,2CAA2C,qDAAc;AACzD;AACA;AACA,2CAA2C,mDAAY;AACvD;AACA;AACA,2CAA2C,sDAAe;AAC1D;AACA;AACA;AACA,8BAA8B,gFAAkC;AAChE;AACA;AACA,sCAAsC,kDAAW,sBAAsB,0DAAmB,sBAAsB,mDAAY;AAC5H;AACA;AACA,2CAA2C,qDAAc;AACzD;AACA;AACA,2CAA2C,sDAAe;AAC1D;AACA;AACA;AACA,8BAA8B,gFAAkC;AAChE;AACA;AACA,sCAAsC,qDAAc;AACpD;AACA;AACA,2CAA2C,kDAAW;AACtD;AACA;AACA;AACA,8BAA8B,gFAAkC;AAChE;AACA;AACA,sCAAsC,qDAAc;AACpD;AACA;AACA,2CAA2C,kDAAW;AACtD;AACA;AACA;AACA,8BAA8B,gFAAkC;AAChE;AACA;AACA,sCAAsC,qDAAc;AACpD;AACA;AACA;AACA,8BAA8B,gFAAkC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,uCAAuC,EAAE;AACvH;AACA;AACA,wCAAwC,0CAAa,KAAK,mCAAM,4CAA4C,iCAAiC,EAAE;AAC/I;AACA,oCAAoC,0CAAa,KAAK,mCAAM;AAC5D,uEAAuE,mEAAmE,EAAE;AAC5I,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kIAAkI,8CAA8C,EAAE;AAClL,yBAAyB,0CAAa,CAAC,0CAAa,KAAK,mCAAM,YAAY,mCAAM;AACjF;AACA,gFAAgF,mEAAmE,EAAE;AACrJ;AACA;AACA,uDAAuD,kDAAW,uCAAuC,0DAAmB;AAC5H;AACA;AACA;AACA;AACA,uDAAuD,qDAAc;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,sDAAe;AACtE;AACA;AACA;AACA;AACA,oFAAoF,kCAAW;AAC/F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,4EAA4E,uCAAuC,EAAE;AACrH;AACA;AACA;AACA,4DAA4D,mEAAmE,EAAE;AACjI,SAAS;AACT;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sDAAe,sCAAsC,qDAAc;AACjH;AACA;AACA;AACA,iDAAiD,2DAA2D,EAAE;AAC9G;AACA;AACA,8CAA8C,kDAAW;AACzD;AACA;AACA;AACA,iDAAiD,2DAA2D,EAAE;AAC9G;AACA;AACA,8CAA8C,sDAAe;AAC7D;AACA;AACA;AACA;AACA,iFAAiF,uEAAuE,EAAE,aAAa;AACvK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2DAA2D,EAAE,eAAe;AACzH;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,sCAAsC,0FAAuC;AAC7E;AACA;AACA;AACA,0CAA0C,4EAAgC;AAC1E;AACA,+CAA+C,iCAAgB;AAC/D,kDAAkD,uCAAmB;AACrE,4DAA4D,iFAAwC;AACpG;AACA,+DAA+D,uFAA2C;AAC1G;AACA;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA;AACA;AACA,2DAA2D,kCAAW;AACtE;AACA;AACA,wCAAwC,kCAAW;AACnD;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA,sCAAsC,kCAAW;AACjD,oEAAoE,wBAAwB,EAAE;AAC9F,qEAAqE,+BAA+B,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,4CAA4C;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4EAAgC;AAC1E;AACA;AACA,8CAA8C,8CAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,kCAAW;AACjF;AACA;AACA,wEAAwE,iFAAiF,EAAE;AAC3J;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,kCAAW;AACxF;AACA;AACA,wEAAwE,iFAAiF,EAAE;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,6BAA6B,mCAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,kCAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oCAAY;AACgB;;AAE9B;;;;;;;;ACtoDA;AAAA;AAAA;AAAA;AAA+B;AAC0B;AACJ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAW,uCAAuC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AAC8B;;AAE/B;;;;;;;;ACrHA;AAAA;AAAA;AAAA;AAA+B;AAC0B;AACJ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAW,0CAA0C;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACiC;;AAElC;;;;;;;;ACzGA;AAAA;AAAA;AAAA;AAA+C;AACH;AACiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA,sGAAsG,QAAQ,+DAAS;AACvH;AACA;AACA,uCAAuC,iEAAW;AAClD;AACA;AACA;AACA,8FAA8F,gFAAY;AAC1G;AACA;AACA;AACA,iDAAiD,IAAI;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2GAA2G,wDAAwD,EAAE;AACrK,yHAAyH,wDAAwD,EAAE;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B,EAAE,EAAE;AACjC;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,+EAA+E,gFAAY;AAC3F;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+DAAQ;AAChD;AACA,iCAAiC;AACjC;AACA,mGAAmG;AACnG;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,uFAAuF,wDAAwD,EAAE;AACjJ,mFAAmF,wDAAwD,EAAE;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,2KAA2K;AAC3K,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACwC;;AAEzC;;;;;;;;ACvLA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;ACrBa;AACb;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZa;;AAEb,cAAc,mBAAO,CAAC,GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBa;AACb,mBAAO,CAAC,GAAmB;AAC3B,eAAe,mBAAO,CAAC,EAAa;AACpC,WAAW,mBAAO,CAAC,EAAS;AAC5B,YAAY,mBAAO,CAAC,EAAU;AAC9B,cAAc,mBAAO,CAAC,EAAY;AAClC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,iBAAiB,mBAAO,CAAC,GAAgB;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB,aAAa;AAC3D;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;;;;;;;AC/FA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,WAAW,mBAAO,CAAC,GAAc;AACjC,kBAAkB,mBAAO,CAAC,G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A,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4EAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4EAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACwB;;AAEzB;;;;;;;;;;;;;;;;;;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;;AAEvB;;;ACZgF;AACxC;AACY;AACpD,IAAI,+BAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA,6BAA6B,qCAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,sEAAsE,+BAA+B,EAAE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,yEAAyE,iCAAiC,EAAE;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wEAAwE,wCAAwC,EAAE;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA,iDAAiD,sBAAK;AACtD;AACA,mDAAmD,sBAAK;AACxD;AAC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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAO,CAAC,EAAQ;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFa;AACb,aAAa,mBAAO,CAAC,EAAW;AAChC,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAY;AAClC,aAAa,mBAAO,CAAC,GAAU;AAC/B,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C,YAAY,mBAAO,CAAC,EAAU;AAC9B,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,EAAc;AACrC,cAAc,mBAAO,CAAC,GAAa;AACnC,WAAW,mBAAO,CAAC,EAAgB;AACnC,SAAS,mBAAO,CAAC,EAAc;AAC/B,gBAAgB,mBAAO,CAAC,GAAe;AACvC,qBAAqB,mBAAO,CAAC,GAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA,QAAQ,UAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,uBAAuB,EAAE,EAAE;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA,GAAG;AACH,yBAAyB;AACzB,GAAG;AACH,uBAAuB;AACvB,0BAA0B;AAC1B,0BAA0B;AAC1B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnRA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;;;;;;ACLzC;AACA;AACA;;;;;;;ACFA;AACA,kBAAkB,mBAAO,CAAC,GAAU;AACpC,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;;ACHY;AACb,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,CAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;ACjKA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkE;AACM;AACpB;AACN;AACwB;AACH;AACT;AACA;AACL;AAC8C;AACtB;AACG;AACM;AAC5B;AACU;AACP;AACA;AACuB;AACpF;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,yEAAY;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wFAAiB;AACjE;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,oGAA6B;AACzF;AACA,4FAA4F,wFAAY;AACxG;AACA;AACA,yHAAyH,2FAAe;AACxI;AACA;AACA;AACA;AACA,6BAA6B,4DAAM;AACnC,2CAA2C,yEAAY;AACvD;AACA;AACA,iGAAiG,oBAAoB,EAAE,SAAS;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wFAAiB;AACjE;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6EAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,iFAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sHAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,iCAAiC,EAAE;AACnJ;AACA;AACA;AACA,2FAA2F,+CAA+C,EAAE;AAC5I;AACA,kDAAkD,uFAAW,sCAAsC,+FAAmB;AACtH,mGAAmG,6CAA6C,EAAE;AAClJ;AACA,uDAAuD,0FAAc,sCAAsC,yGAAoB,sCAAsC,2FAAe;AACpL,mGAAmG,qEAAqE,EAAE;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,qEAAqE,wFAAY,8EAA8E;AAC/J;AACA;AACA,8CAA8C,uFAAW,sCAAsC,+FAAmB;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,uFAAW,sCAAsC,+FAAmB;AAC5I;AACA;AACA;AACA,qEAAqE,2FAAe;AACpF;AACA;AACA;AACA;AACA,kDAAkD,wFAAY;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uFAAW,sCAAsC,+FAAmB,GAAG;AACzH;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0FAAc,sCAAsC,yGAAoB,sCAAsC,2FAAe;AAC3K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uFAAW,sCAAsC,+FAAmB;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,0FAAc,sCAAsC,wFAAY,sCAAsC,2FAAe;AAC3L;AACA;AACA;AACA;AACA,8CAA8C,2FAAe;AAC7D;AACA;AACA,2CAA2C,+IAA+I,EAAE;AAC5L,yCAAyC,wDAAwD,EAAE;AACnG,8DAA8D,eAAe;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,wFAAY;AACpE,wDAAwD,yGAAoB;AAC5E,wDAAwD,uFAAW;AACnE,wDAAwD,+FAAmB;AAC3E,wDAAwD,2FAAe;AACvE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,0CAA0C,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA,4EAA4E,iCAAiC,EAAE;AAC/G;AACA;AACA,2EAA2E,iCAAiC,EAAE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,wFAAY;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,YAAY,QAAQ,EAAE,0BAA0B;AACpG;AACA,+GAA+G;AAC/G;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,sFAAsF,gBAAgB,gBAAgB,UAAU;AAChI;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,sFAAsF,gBAAgB,gBAAgB,UAAU;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,gCAAgC,6EAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,wFAAY,gEAAgE,yGAAoB,uCAAuC,qFAAS,GAAG;AACnN,0FAA0F;AAC1F;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,2FAAe;AAC9E;AACA;AACA;AACA;AACA;AACA,gEAAgE,uFAAW,uCAAuC,+FAAmB;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,0FAAc;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,2FAAe;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,wFAAY;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,wFAAY;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,yGAAoB,uCAAuC,qFAAS;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gGAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC,CAAC,kEAAY;AACgB;;AAE9B;;;;;;;;AC5kBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkE;AACM;AACpB;AACN;AACwB;AACH;AACP;AACP;AAC8C;AACnB;AACtB;AACA;AACU;AACkB;AACG;AAC5B;AACgB;AACR;AACe;AACD;AACnF;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uFAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,oGAA6B;AACzF;AACA;AACA;AACA;AACA,yHAAyH,2FAAe;AACxI;AACA;AACA;AACA;AACA,6BAA6B,4DAAM;AACnC,2CAA2C,yEAAY;AACvD;AACA,iGAAiG,oBAAoB,EAAE,SAAS;AAChI;AACA;AACA,8DAA8D,0FAAc;AAC5E;AACA;AACA;AACA,mEAAmE,uFAAW;AAC9E;AACA;AACA;AACA,mEAAmE,+FAAmB;AACtF;AACA;AACA;AACA,mEAAmE,+FAAmB,GAAG;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uFAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6EAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,0CAA0C,uCAAuC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4DAA4D;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2DAA2D;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sHAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,cAAc,6BAA6B;AACrG;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,uFAAW;AAC3E,8CAA8C,+FAAmB;AACjE,8CAA8C,wFAAY;AAC1D,8CAA8C,yGAAoB;AAClE,8CAA8C,qFAAS;AACvD;AACA;AACA,YAAY,+EAAc;AAC1B;AACA;AACA;AACA,8BAA8B,yFAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,gEAAgE,qFAAS;AACzE;AACA;AACA;AACA,+DAA+D,2FAAe;AAC9E;AACA,gCAAgC;AAChC;AACA;AACA,+DAA+D,uFAAW;AAC1E,+DAA+D,+FAAmB;AAClF,+DAA+D,wFAAY;AAC3E,+DAA+D,yGAAoB;AACnF,+DAA+D,qFAAS;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,uFAAW,uCAAuC,+FAAmB;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,0FAAc;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,2FAAe;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA,4DAA4D,qFAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,uFAAW;AACtE,2DAA2D,+FAAmB;AAC9E,2DAA2D,wFAAY;AACvE,2DAA2D,yGAAoB;AAC/E,2DAA2D,qFAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,sBAAsB,iGAAwB;AAC9C;AACA;AACA;AACA,8CAA8C,uFAAW;AACzD,8CAA8C,+FAAmB;AACjE,8CAA8C,wFAAY;AAC1D,8CAA8C,yGAAoB;AAClE,8CAA8C,qFAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,0FAAc,sCAAsC,wFAAY,sCAAsC,2FAAe;AAC3L;AACA;AACA,0EAA0E,2FAAe;AACzF;AACA;AACA;AACA,yIAAyI;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uFAAW,sCAAsC,+FAAmB;AACtH;AACA;AACA;AACA,0BAA0B,6GAA8B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iGAAwB;AAC1C;AACA;AACA,CAAC,CAAC,kEAAY;AACgB;;AAE9B;;;;;;;;AC1gBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkE;AACM;AACX;AACf;AACwB;AACH;AACd;AAC8C;AACzC;AACA;AACU;AAC5B;AAC4C;AACD;AACnF;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA,6BAA6B,4DAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uFAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,yEAAY;AACvD;AACA;AACA;AACA;AACA,8CAA8C,uFAAW;AACzD;AACA;AACA;AACA,mDAAmD,+FAAmB;AACtE;AACA;AACA;AACA,mDAAmD,2FAAe,sBAAsB,0FAAc,sBAAsB,2FAAe;AAC3I;AACA;AACA;AACA;AACA,mDAAmD,wFAAY;AAC/D;AACA;AACA,mDAAmD,+FAAmB,GAAG;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uFAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6EAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,mDAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,0CAA0C,uCAAuC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4DAA4D;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2DAA2D;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sHAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,0FAAc,sCAAsC,2FAAe;AACzI;AACA;AACA,iFAAiF,2FAAe;AAChG;AACA;A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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA,6EAA6E,mDAAY,mDAAmD,gDAAS;AACrJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC0B;;AAE3B;;;ACpJsE;AACtE;AACA;AACA;AACA;AACA;AACA,IAAI,+BAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,kEAAkE,0CAAa,KAAK,mCAAM;AAC1F,uCAAuC,0CAAa,CAAC,0CAAa,KAAK,mCAAM;AAC7E;AACA;AACA;AACA,iCAAiC,KAAK,mCAAM;AAC5C;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B,yBAAyB;AACzB,qEAAqE,wBAAwB,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,0CAAa,KAAK,mCAAM;AAC1F,uCAAuC,0CAAa,CAAC,0CAAa,KAAK,mCAAM;AAC7E;AACA;AACA;AACA,iCAAiC,KAAK,mCAAM;AAC5C;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B,yBAAyB;AACzB,qEAAqE,wBAAwB,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC0B;;AAE3B;;;ACvG0D;AACZ;AACM;AACA;AACpD;AACA;AACA;AACA;AACA;AACA,IAAI,yCAAoB;AACxB,IAAI,sCAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yHAAyH,wCAAwC;AACjK,8BAA8B,+BAAe;AAC7C;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yHAAyH,wCAAwC;AACjK,8BAA8B,+BAAe;AAC7C;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB;AACA,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+BAAe;AAC7C;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,eAAe,sCAAS;AACxB,mBAAmB,wCAAW;AAC9B,+EAA+E,mBAAmB,EAAE;AACpG,aAAa;AACb,SAAS;AACT;AACA;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C,GAAS;AAC5B,gBAAgB,mBAAO,CAAC,GAAc;AACtC,iCAAiC,mBAAO,CAAC,GAA2B;AACpE,cAAc,mBAAO,CAAC,GAAY;AAClC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,qBAAqB,mBAAO,CAAC,GAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,EAAE,mBAAO,CAAC,EAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,kCAAkC;AACrD,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,eAAe,uCAAuC;AACtD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,yBAAyB,KAAK;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,wBAAwB;AACxB,gBAAgB;AAChB,oBAAoB;AACpB,wBAAwB;AACxB,gBAAgB;AAChB,oBAAoB;AACpB;AACA,uBAAuB,mBAAO,CAAC,GAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAA0D,oBAAoB;AAC9E,mBAAO,CAAC,GAAsB;AAC9B,mBAAO,CAAC,GAAgB;AACxB,UAAU,mBAAO,CAAC,EAAS;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gDAAgD,mBAAO,CAAC,GAAgB;AACxE;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;;AC7RY;AACb;AACA,gBAAgB,mBAAO,CAAC,EAAe;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;ACjBA,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,2BAA2B,mBAAO,CAAC,GAA2B;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb,SAAS,mBAAO,CAAC,EAAc;AAC/B,aAAa,mBAAO,CAAC,EAAkB;AACvC,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C,UAAU,mBAAO,CAAC,EAAQ;AAC1B,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,YAAY,mBAAO,CAAC,GAAW;AAC/B,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,WAAW,mBAAO,CAAC,GAAc;AACjC,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAS;AAC/B,eAAe,mBAAO,CAAC,EAAwB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,6BAA6B;AAC7B,0BAA0B;AAC1B,0BAA0B;AAC1B,qBAAqB;AACrB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8EAA8E,OAAO;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;AC/Ia;AACb,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C,cAAc,mBAAO,CAAC,EAAS;AAC/B,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,YAAY,mBAAO,CAAC,GAAW;AAC/B,wBAAwB,mBAAO,CAAC,EAAkB;AAClD,WAAW,mBAAO,CAAC,EAAQ;AAC3B,eAAe,mBAAO,CAAC,EAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;ACpFA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA,WAAW,mBAAO,CAAC,EAAgB;AACnC,WAAW,mBAAO,CAAC,GAAgB;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC,cAAc,mBAAO,CAAC,EAAW;AACjC;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,aAAa,mBAAO,CAAC,GAAkB;AACvC,cAAc,mBAAO,CAAC,EAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA,kBAAkB,mBAAO,CAAC,EAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAgB;AACtC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,aAAa,mBAAO,CAAC,GAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA,6BAA6B;AAC7B,uCAAuC;;;;;;;ACDvC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACNA;AAEA;;AAEG;;;IACU,U;AAiBT;;;AAGG;AA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,MAAD,CAAjC,GAA4C,KAAnD;AACH,OAFM,CAAP;AAGH;;;;;;AAnLL;AAsLA,UAAU,CAAC,aAAX,GAA2B,EAA3B;AAEA,UAAU,CAAC,QAAX,GAAsB,IAAtB,C;;;;;;AC7LA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,GAAU;AACjC,WAAW,mBAAO,CAAC,GAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,QAAQ;;AAEhB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACtIA,eAAe,mBAAO,CAAC,GAAU;AACjC,WAAW,mBAAO,CAAC,GAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;ACnQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkE;AACM;AAC1B;AACwB;AACH;AACd;AAC8C;AACnB;AACtB;AACA;AACU;AACkB;AACG;AACJ;AACxB;AACgB;AAChB;AAC7D;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uFAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,oGAA6B;AACzF;AACA;AACA;AACA;AACA;AACA,6BAA6B,4DAAM;AACnC,2CAA2C,yEAAY;AACvD;AACA;AACA;AACA;AACA,8CAA8C,0FAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uFAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6EAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,iFAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,0CAA0C,uCAAuC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4DAA4D;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2DAA2D;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sHAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,cAAc,6BAA6B;AACrG;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yGAA4B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qHAAqH;AACrH;AACA,sBAAsB,iGAAwB;AAC9C;AACA;AACA;AACA,8CAA8C,uFAAW;AACzD,8CAA8C,wFAAY;AAC1D,8CAA8C,yGAAoB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,0FAAc,sCAAsC,wFAAY,sCAAsC,2FAAe;AAC3L;AACA;AACA,0EAA0E,2FAAe;AACzF;AACA;AACA;AACA,yIAAyI;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uFAAW;AAC7D;AACA;AACA;AACA,0BAA0B,4GAA8B;AACxD;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kEAAY;AACoB;;AAElC;;;;;;;;AC3Ya;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,sBAAsB;AACtB,sBAAsB;AACtB,wBAAwB;AACxB,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB,kBAAkB;AAC5D,SAAS;AACT;AACA;AACA;AACA,qC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;AAEA;;AAEG;;;IACU,W;AAoBT;;AAEG;AACH;AAAA;;AACI,SAAK,OAAL,GAAe,KAAf;AACH;AAhBD;;;AAG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AAA;AAAA;AAAA;AAA0D;AACqB;AACX;AACU;AACc;AAC5F;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8FAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA,mBAAmB,iEAAW;AAC9B;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wFAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4GAA8B;AACpD;AACA;AACA;AACA,CAAC,CAAC,kGAAoB;AACQ;;AAE9B;;;;;;;;;ACzGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkC;AAC4D;AAC9B;AACyB;AAC9B;AAC3D;AACA;AACA;AACA;AACA,IAAI,+DAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2EAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8GAA+B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gFAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD,qEAAqE,iCAAiC,EAAE;AACxG;AACA;AACA,CAAC,CAAC,4GAAyB;AACQ;;AAEnC;;;;;;;;ACxEA;AAAA;AAAA;AAAA;AAA8C;AACC;AACQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,uBAAuB,EAAE;AAChH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mEAAa,KAAK,4DAAM,+CAA+C,QAAQ,uEAAW,iEAAiE,EAAE;AAC/L;AACA;AACA,kCAAkC,mEAAa,KAAK,4DAAM,sDAAsD,QAAQ,uEAAW,iEAAiE,EAAE;AACtM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,0EAA0E,eAAe,uEAAW,8FAA8F,EAAE;AACpM;AACA,2EAA2E,yDAAyD,EAAE;AACtI,aAAa;AACb;AACA;AACA;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,mCAAmC,EAAE,eAAe;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH,wBAAwB,EAAE;AAC7I;AACA,sCAAsC,uEAAW;AACjD;AACA;AACA;AACA;AACA,qEAAqE,uGAAuG,EAAE;AAC9K;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,mCAAmC,EAAE;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA,kBAAkB;AAClB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+DAAQ;AAC5B;AACA;AACA;AACA,8EAA8E,mBAAmB,EAAE;AACnG;AACA;AACA,uGAAuG,mBAAmB,EAAE;AAC5H,uHAAuH;AACvH;AACA,sBAAsB;AACtB;AACA,yFAAyF,mBAAmB,EAAE;AAC9G;AACA;AACA,kGAAkG,mBAAmB,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+DAAQ;AACvC;AACA;AACA;AACA;AACA,+BAA+B,+DAAQ;AACvC;AACA,iBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4BAA4B,6BAA6B,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,iFAAiF,EAAE;AAC1I;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA,wDAAwD,uEAAW,kEAAkE;AACrI;AACA;AACA;AACA,+CAA+C,oDAAoD,EAAE;AACrG;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,mBAAmB,EAAE;AAC7G;AACA;AACA,sFAAsF,mBAAmB,EAAE;AAC3G;AACA;AACA;AACA,0EAA0E,mBAAmB,EAAE;AAC/F;AACA;AACA,iGAAiG,mBAAmB,EAAE;AACtH;AACA;AACA;AACA;AACA;AACA,mGAAmG,uEAAW;AAC9G;AACA;AACA,mGAAmG,uEAAW;AAC9G;AACA,aAAa;AACb;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,wFAAwF,mBAAmB,EAAE;AA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AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB,sBAAsB,uBAAuB,WAAW,IAAI;AAC5D,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,KAAK;AACL;AACA,sBAAsB,mCAAmC;AACzD,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,gCAAgC;AAChG;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,mBAAO,CAAC,EAAgB;AAC1B,EAAE,mBAAO,CAAC,GAAe;AACzB;;AAEA,sBAAsB,mBAAO,CAAC,EAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0DAA0D,kBAAkB;;AAE5E;AACA;AACA;AACA,oBAAoB,uBAAuB;;AAE3C,oDAAoD,6BAA6B;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,eAAe,EAAE;AAC3C,0BAA0B,gBAAgB;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,8CAA8C,YAAY,EAAE;;AAE5D;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO,QAAQ,iCAAiC;AACpG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AAC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yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,iBAAiB,mBAAO,CAAC,GAAyB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACrHY;;AAEb,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,iBAAiB,mBAAO,CAAC,GAAyB;;AAElD;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AC9BY;;AAEb,eAAe,mBAAO,CAAC,GAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAyB;AACtD,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,YAAY,mBAAO,CAAC,EAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,yBAAyB,EAAE;;AAEhE;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACrID,aAAa,mBAAO,CAAC,EAAW;AAChC,gBAAgB,mBAAO,CAAC,GAAS;AACjC;AACA;AACA;AACA,aAAa,mBAAO,CAAC,EAAQ;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uCAAuC,sBAAsB,EAAE;AAC/D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;ACpEA;AACA;AACA,YAAY;AACZ,GAAG;AACH,YAAY;AACZ;AACA;;;;;;;;ACNa;AACb,aAAa,mBAAO,CAAC,GAAsB;AAC3C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AAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,SAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3uBA,mBAAO,CAAC,GAAuB;AAC/B,iBAAiB,mBAAO,CAAC,GAAkB;;;;;;;ACD3C;AACA,cAAc,mBAAO,CAAC,GAAW;;AAEjC,oBAAoB,SAAS,mBAAO,CAAC,GAAW,GAAG;;;;;;;ACHnD,aAAa,mBAAO,CAAC,GAAW;AAChC,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,GAAQ;AAC1B,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,GAAQ;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB;;;;;;;AC7DA;AACA,gBAAgB,mBAAO,CAAC,GAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;;;;;;;ACHA,SAAS,mBAAO,CAAC,GAAc;AAC/B,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C,iBAAiB,mBAAO,CAAC,GAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;ACPA,eAAe,mBAAO,CAAC,GAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,GAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;ACfA,eAAe,mBAAO,CAAC,GAAc;AACrC;AACA;AACA;AACA;;;;;;;ACJA,kBAAkB,mBAAO,CAAC,GAAgB,MAAM,mBAAO,CAAC,GAAU;AAClE,+BAA+B,mBAAO,CAAC,GAAe,gBAAgB,mBAAmB,UAAU,EAAE,EAAE;AACvG,CAAC;;;;;;;ACFD,eAAe,mBAAO,CAAC,GAAc;AACrC,eAAe,mBAAO,CAAC,GAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA,eAAe,mBAAO,CAAC,GAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA,uBAAuB;AACvB;AACA;AACA;;;;;;;;ACHa;AACb,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,CAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mC;;;;;;;ACrBa;AACb,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,CAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,sC;;;;;;;AClFa;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D;AACA,kBAAkB,mBAAO,CAAC,EAAS;AACnC,iBAAiB,mBAAO,CAAC,CAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,2JAA2J;AAC3J,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,2JAA2J;AAC3J,mEAAmE;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2C;;;;;;ACnNA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,mDAAmD;AAC3G;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,6BAA6B,gBAAgB,kBAAkB;AAC/D;AACA;AACA;AACA;AACA,+BAA+B,4CAA4C;AAC3E;AACA,mCAAmC,wBAAwB,kBAAkB,EAAE;AAC/E,mCAAmC,yBAAyB,EAAE,EAAE;AAChE;AACA,uCAAuC,8BAA8B;AACrE,uCAAuC,mBAAmB,EAAE;AAC5D;AACA,uCAAuC,qDAAqD;AAC5F,uCAAuC,iBAAiB,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,2CAA2C;AAC3C,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,0BAA0B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,aAAa;AAChF,qEAAqE,aAAa;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0BAA0B,EAAE;AAClE;AACA;AACA,iBAAiB;AACjB,oDAAoD,+CAA+C;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,UAAU;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,0DAA0D;AAC5G,oDAAoD,4DAA4D;AAChH,qDAAqD,4DAA4D;AACjH,2DAA2D,uBAAuB;AAClF,6DAA6D,uBAAuB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uBAAuB,EAAE;AAC/D;AACA;AACA,iBAAiB;AACjB,sDAAsD,6BAA6B;AACnF,sDAAsD,0CAA0C;AAChG,yDAAyD,gCAAgC;AACzF,mDAAmD,mBAAmB;AACtE,kDAAkD,yBAAyB;AAC3E,oDAAoD,2BAA2B;AAC/E,qDAAqD,4BAA4B;AACjF,2DAA2D,oBAAoB;AAC/E,6DAA6D,oBAAoB;AACjF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,0BAA0B;AACtF;AACA;AACA;AACA;AACA,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC,0BAA0B;;;;;;;;AC1mC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,GAAU;AACjC,WAAW,mBAAO,CAAC,GAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAa;;AAElC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,QAAQ;;AAEhB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;AC7FY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;ACpFA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,GAAU;AACjC,WAAW,mBAAO,CAAC,GAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAa;;AAElC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,QAAQ;;AAEhB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,GAAU;AACjC,aAAa,mBAAO,CAAC,GAAU;AAC/B,WAAW,mBAAO,CAAC,GAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAa;;AAElC;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACpDA,eAAe,mBAAO,CAAC,GAAU;AACjC,aAAa,mBAAO,CAAC,GAAU;AAC/B,WAAW,mBAAO,CAAC,GAAQ;AAC3B,aAAa,mBAAO,CAAC,EAAa;;AAElC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;ACvDA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,GAAI;AACpC;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,cAAc;AAC1B;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;;AAEA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;;;;;;ACpQA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACjKa;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,CAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uC;;;;;;;AClHa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+C;;;;;;;AC7Ba;AACb,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,CAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,kC;;;;;;;AChCa;AACb,8CAA8C,cAAc;AAC5D;AACA,yBAAyB,mBAAO,CAAC,GAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA,SAAS;AACT;AACA;AACA,+BAA+B,mDAAmD;AAClF;AACA,SAAS;AACT;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA,SAAS;AACT;AACA;AACA,+BAA+B,iEAAiE;AAChG;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA,SAAS;AACT;AACA;AACA;AACA,gCAAgC,iEAAiE;AACjG;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;ACxEa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kCAAkC;AAClC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,yC;;;;;;;ACtEa;AACb,8CAA8C,cAAc;AAC5D;AACA,iBAAiB,mBAAO,CAAC,CAAkB;AAC3C,qBAAqB,mBAAO,CAAC,EAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;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","file":"bundle.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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 288);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * Dummy driver classes for replacement via `package.json` in browser builds.\n * Using those classes reduces the build size by one third.\n *\n * If we don't include those dummy classes (and just disable the driver import\n * with `false` in `package.json`) typeorm will throw an error on runtime and\n * during webpack builds even if those driver are not used.\n */\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoDriver = /** @class */ (function () {\n function MongoDriver() {\n }\n return MongoDriver;\n}());\nexport { MongoDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoQueryRunner = /** @class */ (function () {\n function MongoQueryRunner() {\n }\n return MongoQueryRunner;\n}());\nexport { MongoQueryRunner };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoEntityManager = /** @class */ (function () {\n function MongoEntityManager() {\n }\n return MongoEntityManager;\n}());\nexport { MongoEntityManager };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MongoRepository = /** @class */ (function () {\n function MongoRepository() {\n }\n return MongoRepository;\n}());\nexport { MongoRepository };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar PostgresDriver = /** @class */ (function () {\n function PostgresDriver() {\n }\n return PostgresDriver;\n}());\nexport { PostgresDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar AuroraDataApiDriver = /** @class */ (function () {\n function AuroraDataApiDriver() {\n }\n return AuroraDataApiDriver;\n}());\nexport { AuroraDataApiDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar CockroachDriver = /** @class */ (function () {\n function CockroachDriver() {\n }\n return CockroachDriver;\n}());\nexport { CockroachDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar AuroraDataApiPostgresDriver = /** @class */ (function () {\n function AuroraDataApiPostgresDriver() {\n }\n return AuroraDataApiPostgresDriver;\n}());\nexport { AuroraDataApiPostgresDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar SqlServerDriver = /** @class */ (function () {\n function SqlServerDriver() {\n }\n return SqlServerDriver;\n}());\nexport { SqlServerDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar SapDriver = /** @class */ (function () {\n function SapDriver() {\n }\n return SapDriver;\n}());\nexport { SapDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar MysqlDriver = /** @class */ (function () {\n function MysqlDriver() {\n }\n return MysqlDriver;\n}());\nexport { MysqlDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar OracleDriver = /** @class */ (function () {\n function OracleDriver() {\n }\n return OracleDriver;\n}());\nexport { OracleDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar SqliteDriver = /** @class */ (function () {\n function SqliteDriver() {\n }\n return SqliteDriver;\n}());\nexport { SqliteDriver };\n/**\n * DO NOT IMPORT THIS CLASS -\n * This is a dummy class for replacement via `package.json` in browser builds\n */\nvar BetterSqlite3Driver = /** @class */ (function () {\n function BetterSqlite3Driver() {\n }\n return BetterSqlite3Driver;\n}());\nexport { BetterSqlite3Driver };\n\n//# sourceMappingURL=BrowserDisabledDriversDummy.js.map\n","/**\n * This class stores query and its parameters\n */\nvar Query = /** @class */ (function () {\n function Query(query, parameters) {\n this.query = query;\n this.parameters = parameters;\n }\n return Query;\n}());\nexport { Query };\n\n//# sourceMappingURL=Query.js.map\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./client/js/Context/UserSite\"), exports);\n__exportStar(require(\"./client/js/Dialog/SelectUserDialog\"), exports);\n__exportStar(require(\"./client/js/MenuAction/StartUserSiteMenuAction\"), exports);\n__exportStar(require(\"./client/js/MenuAction/UserMenuAction\"), exports);\n__exportStar(require(\"./client/js/OfflineUserManager\"), exports);\n__exportStar(require(\"./client/js/Site/ChangeUserSite\"), exports);\n__exportStar(require(\"./client/js/Site/ForgotPasswordSite\"), exports);\n__exportStar(require(\"./client/js/Site/LoginSite\"), exports);\n__exportStar(require(\"./client/js/Site/NotAllowedSite\"), exports);\n__exportStar(require(\"./client/js/Site/RegistrationSite\"), exports);\n__exportStar(require(\"./client/js/UserManager\"), exports);\n__exportStar(require(\"./client/js/translationInit\"), exports);\n//# sourceMappingURL=client.js.map","import { TableColumn } from \"./TableColumn\";\nimport { TableIndex } from \"./TableIndex\";\nimport { TableForeignKey } from \"./TableForeignKey\";\nimport { TableUtils } from \"../util/TableUtils\";\nimport { TableUnique } from \"./TableUnique\";\nimport { TableCheck } from \"./TableCheck\";\nimport { TableExclusion } from \"./TableExclusion\";\n/**\n * Table in the database represented in this class.\n */\nvar Table = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Table(options) {\n /**\n * Table columns.\n */\n this.columns = [];\n /**\n * Table indices.\n */\n this.indices = [];\n /**\n * Table foreign keys.\n */\n this.foreignKeys = [];\n /**\n * Table unique constraints.\n */\n this.uniques = [];\n /**\n * Table check constraints.\n */\n this.checks = [];\n /**\n * Table exclusion constraints.\n */\n this.exclusions = [];\n /**\n * Indicates if table was just created.\n * This is needed, for example to check if we need to skip primary keys creation\n * for new tables.\n */\n this.justCreated = false;\n if (options) {\n this.name = options.name;\n if (options.columns)\n this.columns = options.columns.map(function (column) { return new TableColumn(column); });\n if (options.indices)\n this.indices = options.indices.map(function (index) { return new TableIndex(index); });\n if (options.foreignKeys)\n this.foreignKeys = options.foreignKeys.map(function (foreignKey) { return new TableForeignKey(foreignKey); });\n if (options.uniques)\n this.uniques = options.uniques.map(function (unique) { return new TableUnique(unique); });\n if (options.checks)\n this.checks = options.checks.map(function (check) { return new TableCheck(check); });\n if (options.exclusions)\n this.exclusions = options.exclusions.map(function (exclusion) { return new TableExclusion(exclusion); });\n if (options.justCreated !== undefined)\n this.justCreated = options.justCreated;\n this.engine = options.engine;\n }\n }\n Object.defineProperty(Table.prototype, \"primaryColumns\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n get: function () {\n return this.columns.filter(function (column) { return column.isPrimary; });\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Clones this table to a new table with all properties cloned.\n */\n Table.prototype.clone = function () {\n return new Table({\n name: this.name,\n columns: this.columns.map(function (column) { return column.clone(); }),\n indices: this.indices.map(function (constraint) { return constraint.clone(); }),\n foreignKeys: this.foreignKeys.map(function (constraint) { return constraint.clone(); }),\n uniques: this.uniques.map(function (constraint) { return constraint.clone(); }),\n checks: this.checks.map(function (constraint) { return constraint.clone(); }),\n exclusions: this.exclusions.map(function (constraint) { return constraint.clone(); }),\n justCreated: this.justCreated,\n engine: this.engine,\n });\n };\n /**\n * Add column and creates its constraints.\n */\n Table.prototype.addColumn = function (column) {\n this.columns.push(column);\n };\n /**\n * Remove column and its constraints.\n */\n Table.prototype.removeColumn = function (column) {\n var foundColumn = this.columns.find(function (c) { return c.name === column.name; });\n if (foundColumn)\n this.columns.splice(this.columns.indexOf(foundColumn), 1);\n };\n /**\n * Adds unique constraint.\n */\n Table.prototype.addUniqueConstraint = function (uniqueConstraint) {\n this.uniques.push(uniqueConstraint);\n if (uniqueConstraint.columnNames.length === 1) {\n var uniqueColumn = this.columns.find(function (column) { return column.name === uniqueConstraint.columnNames[0]; });\n if (uniqueColumn)\n uniqueColumn.isUnique = true;\n }\n };\n /**\n * Removes unique constraint.\n */\n Table.prototype.removeUniqueConstraint = function (removedUnique) {\n var foundUnique = this.uniques.find(function (unique) { return unique.name === removedUnique.name; });\n if (foundUnique) {\n this.uniques.splice(this.uniques.indexOf(foundUnique), 1);\n if (foundUnique.columnNames.length === 1) {\n var uniqueColumn = this.columns.find(function (column) { return column.name === foundUnique.columnNames[0]; });\n if (uniqueColumn)\n uniqueColumn.isUnique = false;\n }\n }\n };\n /**\n * Adds check constraint.\n */\n Table.prototype.addCheckConstraint = function (checkConstraint) {\n this.checks.push(checkConstraint);\n };\n /**\n * Removes check constraint.\n */\n Table.prototype.removeCheckConstraint = function (removedCheck) {\n var foundCheck = this.checks.find(function (check) { return check.name === removedCheck.name; });\n if (foundCheck) {\n this.checks.splice(this.checks.indexOf(foundCheck), 1);\n }\n };\n /**\n * Adds exclusion constraint.\n */\n Table.prototype.addExclusionConstraint = function (exclusionConstraint) {\n this.exclusions.push(exclusionConstraint);\n };\n /**\n * Removes exclusion constraint.\n */\n Table.prototype.removeExclusionConstraint = function (removedExclusion) {\n var foundExclusion = this.exclusions.find(function (exclusion) { return exclusion.name === removedExclusion.name; });\n if (foundExclusion) {\n this.exclusions.splice(this.exclusions.indexOf(foundExclusion), 1);\n }\n };\n /**\n * Adds foreign keys.\n */\n Table.prototype.addForeignKey = function (foreignKey) {\n this.foreignKeys.push(foreignKey);\n };\n /**\n * Removes foreign key.\n */\n Table.prototype.removeForeignKey = function (removedForeignKey) {\n var fk = this.foreignKeys.find(function (foreignKey) { return foreignKey.name === removedForeignKey.name; });\n if (fk)\n this.foreignKeys.splice(this.foreignKeys.indexOf(fk), 1);\n };\n /**\n * Adds index.\n */\n Table.prototype.addIndex = function (index, isMysql) {\n if (isMysql === void 0) { isMysql = false; }\n this.indices.push(index);\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we mark this column as unique\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n var column = this.columns.find(function (c) { return c.name === index.columnNames[0]; });\n if (column)\n column.isUnique = true;\n }\n };\n /**\n * Removes index.\n */\n Table.prototype.removeIndex = function (tableIndex, isMysql) {\n if (isMysql === void 0) { isMysql = false; }\n var index = this.indices.find(function (index) { return index.name === tableIndex.name; });\n if (index) {\n this.indices.splice(this.indices.indexOf(index), 1);\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we move `unique` attribute from its column\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n var column_1 = this.columns.find(function (c) { return c.name === index.columnNames[0]; });\n if (column_1)\n column_1.isUnique = this.indices.some(function (ind) { return ind.columnNames.length === 1 && ind.columnNames[0] === column_1.name && !!index.isUnique; });\n }\n }\n };\n Table.prototype.findColumnByName = function (name) {\n return this.columns.find(function (column) { return column.name === name; });\n };\n /**\n * Returns all column indices.\n */\n Table.prototype.findColumnIndices = function (column) {\n return this.indices.filter(function (index) {\n return !!index.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n /**\n * Returns all column foreign keys.\n */\n Table.prototype.findColumnForeignKeys = function (column) {\n return this.foreignKeys.filter(function (foreignKey) {\n return !!foreignKey.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n /**\n * Returns all column uniques.\n */\n Table.prototype.findColumnUniques = function (column) {\n return this.uniques.filter(function (unique) {\n return !!unique.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n /**\n * Returns all column checks.\n */\n Table.prototype.findColumnChecks = function (column) {\n return this.checks.filter(function (check) {\n return !!check.columnNames.find(function (columnName) { return columnName === column.name; });\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates table from a given entity metadata.\n */\n Table.create = function (entityMetadata, driver) {\n var options = {\n name: driver.buildTableName(entityMetadata.tableName, entityMetadata.schema, entityMetadata.database),\n engine: entityMetadata.engine,\n columns: entityMetadata.columns\n .filter(function (column) { return column; })\n .map(function (column) { return TableUtils.createTableColumnOptions(column, driver); }),\n indices: entityMetadata.indices\n .filter(function (index) { return index.synchronize === true; })\n .map(function (index) { return TableIndex.create(index); }),\n uniques: entityMetadata.uniques.map(function (unique) { return TableUnique.create(unique); }),\n checks: entityMetadata.checks.map(function (check) { return TableCheck.create(check); }),\n exclusions: entityMetadata.exclusions.map(function (exclusion) { return TableExclusion.create(exclusion); }),\n };\n return new Table(options);\n };\n return Table;\n}());\nexport { Table };\n\n//# sourceMappingURL=Table.js.map\n","import { __read, __spreadArray } from \"tslib\";\nvar OrmUtils = /** @class */ (function () {\n function OrmUtils() {\n }\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n /**\n * Chunks array into peaces.\n */\n OrmUtils.chunk = function (array, size) {\n return Array.from(Array(Math.ceil(array.length / size)), function (_, i) {\n return array.slice(i * size, i * size + size);\n });\n };\n OrmUtils.splitClassesAndStrings = function (clsesAndStrings) {\n return [\n (clsesAndStrings).filter(function (cls) { return typeof cls !== \"string\"; }),\n (clsesAndStrings).filter(function (str) { return typeof str === \"string\"; }),\n ];\n };\n OrmUtils.groupBy = function (array, propertyCallback) {\n return array.reduce(function (groupedArray, value) {\n var key = propertyCallback(value);\n var grouped = groupedArray.find(function (i) { return i.id === key; });\n if (!grouped) {\n grouped = { id: key, items: [] };\n groupedArray.push(grouped);\n }\n grouped.items.push(value);\n return groupedArray;\n }, []);\n };\n OrmUtils.uniq = function (array, criteriaOrProperty) {\n return array.reduce(function (uniqueArray, item) {\n var found = false;\n if (criteriaOrProperty instanceof Function) {\n var itemValue_1 = criteriaOrProperty(item);\n found = !!uniqueArray.find(function (uniqueItem) { return criteriaOrProperty(uniqueItem) === itemValue_1; });\n }\n else if (typeof criteriaOrProperty === \"string\") {\n found = !!uniqueArray.find(function (uniqueItem) { return uniqueItem[criteriaOrProperty] === item[criteriaOrProperty]; });\n }\n else {\n found = uniqueArray.indexOf(item) !== -1;\n }\n if (!found)\n uniqueArray.push(item);\n return uniqueArray;\n }, []);\n };\n OrmUtils.isObject = function (item) {\n return (item && typeof item === \"object\" && !Array.isArray(item));\n };\n /**\n * Deep Object.assign.\n *\n * @see http://stackoverflow.com/a/34749873\n */\n OrmUtils.mergeDeep = function (target) {\n var _a, _b;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n if (!sources.length)\n return target;\n var source = sources.shift();\n if (this.isObject(target) && this.isObject(source)) {\n for (var key in source) {\n var value = source[key];\n if (key === \"__proto__\" || value instanceof Promise)\n continue;\n if (this.isObject(value)\n && !(value instanceof Map)\n && !(value instanceof Set)\n && !(value instanceof Date)\n && !(value instanceof Buffer)\n && !(value instanceof RegExp)) {\n if (!target[key])\n Object.assign(target, (_a = {}, _a[key] = Object.create(Object.getPrototypeOf(value)), _a));\n this.mergeDeep(target[key], value);\n }\n else {\n Object.assign(target, (_b = {}, _b[key] = value, _b));\n }\n }\n }\n return this.mergeDeep.apply(this, __spreadArray([target], __read(sources)));\n };\n /**\n * Deep compare objects.\n *\n * @see http://stackoverflow.com/a/1144249\n */\n OrmUtils.deepCompare = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var i, l, leftChain, rightChain;\n if (arguments.length < 1) {\n return true; // Die silently? Don't know how to handle such case, please help...\n // throw \"Need two or more arguments to compare\";\n }\n for (i = 1, l = arguments.length; i < l; i++) {\n leftChain = []; // Todo: this can be cached\n rightChain = [];\n if (!this.compare2Objects(leftChain, rightChain, arguments[0], arguments[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * Check if two entity-id-maps are the same\n */\n OrmUtils.compareIds = function (firstId, secondId) {\n if (firstId === undefined || firstId === null || secondId === undefined || secondId === null)\n return false;\n // Optimized version for the common case\n if (((typeof firstId.id === \"string\" && typeof secondId.id === \"string\") ||\n (typeof firstId.id === \"number\" && typeof secondId.id === \"number\")) &&\n Object.keys(firstId).length === 1 &&\n Object.keys(secondId).length === 1) {\n return firstId.id === secondId.id;\n }\n return OrmUtils.deepCompare(firstId, secondId);\n };\n /**\n * Transforms given value into boolean value.\n */\n OrmUtils.toBoolean = function (value) {\n if (typeof value === \"boolean\")\n return value;\n if (typeof value === \"string\")\n return value === \"true\" || value === \"1\";\n if (typeof value === \"number\")\n return value > 0;\n return false;\n };\n /**\n * Composes an object from the given array of keys and values.\n */\n OrmUtils.zipObject = function (keys, values) {\n return keys.reduce(function (object, column, index) {\n object[column] = values[index];\n return object;\n }, {});\n };\n /**\n * Compares two arrays.\n */\n OrmUtils.isArraysEqual = function (arr1, arr2) {\n if (arr1.length !== arr2.length)\n return false;\n return arr1.every(function (element) {\n return arr2.indexOf(element) !== -1;\n });\n };\n // -------------------------------------------------------------------------\n // Private methods\n // -------------------------------------------------------------------------\n OrmUtils.compare2Objects = function (leftChain, rightChain, x, y) {\n var p;\n // remember that NaN === NaN returns false\n // and isNaN(undefined) returns true\n if (Number.isNaN(x) && Number.isNaN(y))\n return true;\n // Compare primitives and functions.\n // Check if both arguments link to the same object.\n // Especially useful on the step where we compare prototypes\n if (x === y)\n return true;\n // Unequal, but either is null or undefined (use case: jsonb comparasion)\n // PR #3776, todo: add tests\n if (x === null || y === null || x === undefined || y === undefined)\n return false;\n // Fix the buffer compare bug.\n // See: https://github.com/typeorm/typeorm/issues/3654\n if ((typeof x.equals === \"function\" || x.equals instanceof Function) && x.equals(y))\n return true;\n // Works in case when functions are created in constructor.\n // Comparing dates is a common scenario. Another built-ins?\n // We can even handle functions passed across iframes\n if ((typeof x === \"function\" && typeof y === \"function\") ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (x instanceof String && y instanceof String) ||\n (x instanceof Number && y instanceof Number))\n return x.toString() === y.toString();\n // At last checking prototypes as good as we can\n if (!(x instanceof Object && y instanceof Object))\n return false;\n if (x.isPrototypeOf(y) || y.isPrototypeOf(x))\n return false;\n if (x.constructor !== y.constructor)\n return false;\n if (x.prototype !== y.prototype)\n return false;\n // Check for infinitive linking loops\n if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1)\n return false;\n // Quick checking of one object being a subset of another.\n // todo: cache the structure of arguments[0] for performance\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if (typeof y[p] !== typeof x[p]) {\n return false;\n }\n }\n for (p in x) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if (typeof y[p] !== typeof x[p]) {\n return false;\n }\n switch (typeof (x[p])) {\n case \"object\":\n case \"function\":\n leftChain.push(x);\n rightChain.push(y);\n if (!this.compare2Objects(leftChain, rightChain, x[p], y[p])) {\n return false;\n }\n leftChain.pop();\n rightChain.pop();\n break;\n default:\n if (x[p] !== y[p]) {\n return false;\n }\n break;\n }\n }\n return true;\n };\n return OrmUtils;\n}());\nexport { OrmUtils };\n\n//# sourceMappingURL=OrmUtils.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Helper = void 0;\n/**\n * Eine Klasse mit häufig genutzten, nützlichen Funktionen\n */\nconst JsonHelper_1 = require(\"./JsonHelper\");\nclass Helper {\n /**\n * Testet, ob eine Variable null oder Undefined ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNull(variable, ...args) {\n return Helper.isAllNull(...arguments);\n }\n static isAllNull(...args) {\n for (let i = 0; i < args.length; i++) {\n if (!(args[i] === null || args[i] === undefined)) {\n return false;\n }\n }\n return true;\n }\n static isAtLeastOneNull(...args) {\n return !Helper.isAllNull(...args);\n }\n /**\n * Testet, ob eine Variable nicht (null oder undefined) ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNotNull(variable, ...args) {\n return Helper.isAllNotNull(...arguments);\n }\n static isAllNotNull(...args) {\n for (let i = 0; i < args.length; i++) {\n if ((args[i] === null || args[i] === undefined)) {\n return false;\n }\n }\n return true;\n }\n static isAtLeastOneNotNull(...args) {\n return !Helper.isAllNull(...args);\n }\n /**\n * Gibt den ersten übergebenen Wert, der nicht (null oder undefined) ist, zurück\n *\n * @param val1\n * @param val2\n * @param args\n * @returns {*}\n */\n static nonNull(val1, val2, ...args) {\n for (let i = 0; i < arguments.length; i++) {\n if (Helper.isNotNull(arguments[i])) {\n return arguments[i];\n }\n }\n return null;\n }\n /**\n * Testet, ob der übergebene Index am Objekt gesetzt ist. Werden mehrere Indexes übergeben, so wird getestet,\n * ob die \"Index-Kette\" gesetzt ist.\n * Bsp.:\n * Helper.isSet({\"index1\":{\"index2\":value}}, \"index1\", \"index2\") ist wahr\n *\n * @param object\n * @param indexes\n * @returns {*}\n */\n static isSet(object, ...indexes) {\n if (Helper.isNotNull(object)) {\n if (indexes.length === 0) {\n return true;\n }\n return (Helper.isSet.apply(null, [object[indexes[0]]].concat(indexes.slice(1))));\n }\n return false;\n }\n /**\n * Testet, ob ein Wert null oder Leerstring, bzw nur aus leerzeichend bestehender String ist\n *\n * @param value\n * @returns {boolean}\n */\n static empty(value) {\n return (Helper.isNull(value) || (typeof value === 'string' && value.trim() === \"\"));\n }\n /**\n * Testet, ob ein Wert NICHT (null oder Leerstring, bzw nur aus leerzeichend bestehender String ist)\n *\n * @param value\n * @returns {boolean}\n */\n static notEmpty(value) {\n return !Helper.empty(value);\n }\n static arrayToObject(array, indexFunction) {\n let obj = {};\n array.forEach(val => {\n obj[indexFunction(val)] = val;\n });\n return obj;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static cloneJson(obj) {\n return JsonHelper_1.JsonHelper.deepCopy(obj);\n }\n /**\n * Erstellt ein FormData-Object von JSON-Data. Nützlich für fetch\n *\n * @param obj\n * @returns {FormData}\n */\n static formDataFromObject(obj) {\n let formData = new FormData();\n for (let k in obj) {\n formData.set(k, obj[k]);\n }\n return formData;\n }\n static shuffleArray(array) {\n let currentIndex = array.length, temporaryValue, randomIndex;\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n return array;\n }\n static padZero(n, width, z) {\n z = Helper.nonNull(z, '0');\n n = n + '';\n width = Helper.nonNull(width, 1);\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n }\n static deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a === \"object\" && typeof b === \"object\") {\n let keysOfB = Object.keys(b);\n let childrenDeepEqual = Object.keys(a).every((key) => {\n let index = keysOfB.indexOf(key);\n if (index < 0) {\n return false;\n }\n keysOfB.splice(index, 1);\n return Helper.deepEqual(a[key], b[key]);\n });\n return (childrenDeepEqual && keysOfB.length === 0);\n }\n return false;\n }\n //Ältere evtl nützliche Funktionen\n static htmlspecialcharsDecode(text) {\n const map = {\n '&': '&',\n '&': \"&\",\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '’': \"’\",\n '‘': \"‘\",\n '–': \"–\",\n '—': \"—\",\n '…': \"…\",\n '”': '”'\n };\n if (Helper.isNotNull(text) && typeof text.replace === \"function\") {\n return text.replace(/\\&[\\w\\d\\#]{2,5}\\;/g, function (m) {\n return map[m];\n });\n }\n return text;\n }\n /**\n * Inverts the key-Values for an object\n * @param obj\n * @return {*}\n */\n static invertKeyValues(obj) {\n let new_obj = {};\n for (let prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n new_obj[obj[prop]] = prop;\n }\n }\n return new_obj;\n }\n static asyncForEach(array, callback, runAsyncronous) {\n return __awaiter(this, void 0, void 0, function* () {\n runAsyncronous = Helper.nonNull(runAsyncronous, false);\n let validPromises = [];\n for (let i = 0; i < array.length; i++) {\n let index = i;\n let currentPromise = Promise.resolve(callback(array[index], index, array));\n if (!runAsyncronous) {\n yield currentPromise;\n }\n validPromises.push(currentPromise);\n }\n return Promise.all(validPromises);\n });\n }\n static escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n }\n static objectForEach(object, callback) {\n Object.keys(object).forEach(key => {\n callback(object[key], key, object);\n });\n }\n static toArray(object) {\n let res = [];\n for (let k in object) {\n res.push(object[k]);\n }\n return res;\n }\n static imageUrlIsEmpty(url) {\n return (Helper.isNull(url) || url.trim() === \"\" || url.trim() === \"data:\");\n }\n static newPromiseWithResolve() {\n let resolver = null;\n let rejecter = null;\n let promise = new Promise((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n promise[\"resolve\"] = resolver;\n promise[\"reject\"] = rejecter;\n return promise;\n }\n static isMobileApp() {\n return (typeof device !== \"undefined\" && device.platform !== \"browser\");\n }\n static toSnakeCase(camelCase) {\n return camelCase.replace(/([A-Z])/g, function (find, something, position) { return ((position > 0) ? \"_\" : \"\") + find[0].toLowerCase(); });\n }\n static wait(timeout, result) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(r => {\n setTimeout(() => {\n r(result);\n }, timeout);\n });\n });\n }\n static timeout(time, otherPromise, timeoutResult) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.race([otherPromise, Helper.wait(time).then(() => {\n if (timeoutResult === undefined) {\n return Promise.reject();\n }\n else {\n return timeoutResult;\n }\n })]);\n });\n }\n}\nexports.Helper = Helper;\n//# sourceMappingURL=Helper.js.map","/**\n * Broadcaster execution result - promises executed by operations and number of executed listeners and subscribers.\n */\nvar BroadcasterResult = /** @class */ (function () {\n function BroadcasterResult() {\n /**\n * Number of executed listeners and subscribers.\n */\n this.count = 0;\n /**\n * Promises returned by listeners and subscribers which needs to be awaited.\n */\n this.promises = [];\n }\n return BroadcasterResult;\n}());\nexport { BroadcasterResult };\n\n//# sourceMappingURL=BroadcasterResult.js.map\n","/**\n * Find Operator used in Find Conditions.\n */\nvar FindOperator = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function FindOperator(type, value, useParameter, multipleParameters, getSql, objectLiteralParameters) {\n if (useParameter === void 0) { useParameter = true; }\n if (multipleParameters === void 0) { multipleParameters = false; }\n this._type = type;\n this._value = value;\n this._useParameter = useParameter;\n this._multipleParameters = multipleParameters;\n this._getSql = getSql;\n this._objectLiteralParameters = objectLiteralParameters;\n }\n Object.defineProperty(FindOperator.prototype, \"useParameter\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Indicates if parameter is used or not for this operator.\n * Extracts final value if value is another find operator.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.useParameter;\n return this._useParameter;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"multipleParameters\", {\n /**\n * Indicates if multiple parameters must be used for this operator.\n * Extracts final value if value is another find operator.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.multipleParameters;\n return this._multipleParameters;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"type\", {\n /**\n * Gets the Type of this FindOperator\n */\n get: function () {\n return this._type;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"value\", {\n /**\n * Gets the final value needs to be used as parameter value.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.value;\n return this._value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"objectLiteralParameters\", {\n /**\n * Gets ObjectLiteral parameters.\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.objectLiteralParameters;\n return this._objectLiteralParameters;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"child\", {\n /**\n * Gets the child FindOperator if it exists\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value;\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FindOperator.prototype, \"getSql\", {\n /**\n * Gets the SQL generator\n */\n get: function () {\n if (this._value instanceof FindOperator)\n return this._value.getSql;\n return this._getSql;\n },\n enumerable: false,\n configurable: true\n });\n return FindOperator;\n}());\nexport { FindOperator };\n\n//# sourceMappingURL=FindOperator.js.map\n","/**\n * Browser's implementation of the platform-specific tools.\n *\n * This file gonna replace PlatformTools for browser environment.\n * For node.js environment this class is not getting packaged.\n * Don't use methods of this class in the code, use PlatformTools methods instead.\n */\nvar PlatformTools = /** @class */ (function () {\n function PlatformTools() {\n }\n /**\n * Gets global variable where global stuff can be stored.\n */\n PlatformTools.getGlobalVariable = function () {\n if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n // NativeScript uses global, not window\n return global;\n }\n };\n /**\n * Loads (\"require\"-s) given file or package.\n * This operation only supports on node platform\n */\n PlatformTools.load = function (name) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: require(\\\"\" + name + \"\\\").\");\n return \"\";\n };\n /**\n * Normalizes given path. Does \"path.normalize\".\n */\n PlatformTools.pathNormalize = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: path.normalize(\\\"\" + pathStr + \"\\\").\");\n return \"\";\n };\n /**\n * Gets file extension. Does \"path.extname\".\n */\n PlatformTools.pathExtname = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: path.extname(\\\"\" + pathStr + \"\\\").\");\n return \"\";\n };\n /**\n * Resolved given path. Does \"path.resolve\".\n */\n PlatformTools.pathResolve = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: path.resolve(\\\"\" + pathStr + \"\\\").\");\n return \"\";\n };\n /**\n * Synchronously checks if file exist. Does \"fs.existsSync\".\n */\n PlatformTools.fileExist = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.existsSync(\\\"\" + pathStr + \"\\\").\");\n return false;\n };\n PlatformTools.dotenv = function (pathStr) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: dotenv.config({ path: \\\"\" + pathStr + \"\\\" }).\");\n };\n /**\n * Gets environment variable.\n */\n PlatformTools.getEnvVariable = function (name) {\n // if (this.type === \"browser\")\n // throw new Error(`This option/function is not supported in the browser environment. Failed operation: process.env[\"${name}\"].`);\n return undefined;\n };\n PlatformTools.readFileSync = function (filename) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.readFileSync(\\\"\" + filename + \"\\\").\");\n return null;\n };\n PlatformTools.appendFileSync = function (filename, data) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.appendFileSync(\\\"\" + filename + \"\\\").\");\n };\n PlatformTools.writeFile = function (path, data) {\n if (this.type === \"browser\")\n throw new Error(\"This option/function is not supported in the browser environment. Failed operation: fs.writeFile(\\\"\" + path + \"\\\").\");\n return Promise.reject(null);\n };\n /**\n * Highlights sql string to be print in the console.\n */\n PlatformTools.highlightSql = function (sql) {\n return sql;\n };\n /**\n * Highlights json string to be print in the console.\n */\n PlatformTools.highlightJson = function (json) {\n return json;\n };\n /**\n * Logging functions needed by AdvancedConsoleLogger (but here without chalk)\n */\n PlatformTools.logInfo = function (prefix, info) {\n console.info(prefix + \" \", info);\n };\n PlatformTools.logError = function (prefix, error) {\n console.error(prefix + \" \", error);\n };\n PlatformTools.logWarn = function (prefix, warning) {\n console.warn(prefix + \" \", warning);\n };\n PlatformTools.log = function (message) {\n console.log(message);\n };\n PlatformTools.warn = function (message) {\n return message;\n };\n /**\n * Type of the currently running platform.\n */\n PlatformTools.type = \"browser\";\n return PlatformTools;\n}());\nexport { PlatformTools };\n/**\n * These classes are needed for stream operations or\n * in the mongodb driver. Both aren't supported in the browser.\n */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n }\n return EventEmitter;\n}());\nexport { EventEmitter };\nvar Readable = /** @class */ (function () {\n function Readable() {\n }\n return Readable;\n}());\nexport { Readable };\nvar Writable = /** @class */ (function () {\n function Writable() {\n }\n return Writable;\n}());\nexport { Writable };\nif (typeof window !== \"undefined\") {\n window.Buffer = require(\"buffer/\").Buffer;\n}\n// NativeScript uses global, not window\nif (typeof global !== \"undefined\") {\n global.Buffer = require(\"buffer/\").Buffer;\n}\n\n//# sourceMappingURL=BrowserPlatformTools.js.map\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Helper = void 0;\n/**\n * Eine Klasse mit häufig genutzten, nützlichen Funktionen\n */\nconst Translator_1 = require(\"../Translator\");\nclass Helper {\n /**\n * Testet, ob eine Variable null oder Undefined ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNull(variable) {\n return (variable === null || variable === undefined);\n }\n /**\n * Testet, ob eine Variable nicht (null oder undefined) ist\n *\n * @param variable\n * @returns {boolean}\n */\n static isNotNull(variable) {\n return !Helper.isNull(variable);\n }\n /**\n * Gibt den ersten übergebenen Wert, der nicht (null oder undefined) ist, zurück\n *\n * @param val1\n * @param val2\n * @param args\n * @returns {*}\n */\n static nonNull(val1, val2, ...args) {\n for (let i = 0; i < arguments.length; i++) {\n if (Helper.isNotNull(arguments[i])) {\n return arguments[i];\n }\n }\n return null;\n }\n /**\n * Testet, ob der übergebene Index am Objekt gesetzt ist. Werden mehrere Indexes übergeben, so wird getestet,\n * ob die \"Index-Kette\" gesetzt ist.\n * Bsp.:\n * Helper.isSet({\"index1\":{\"index2\":value}}, \"index1\", \"index2\") ist wahr\n *\n * @param object\n * @param indexes\n * @returns {*}\n */\n static isSet(object, ...indexes) {\n if (Helper.isNotNull(object)) {\n if (indexes.length === 0) {\n return true;\n }\n return (Helper.isSet.apply(null, [object[indexes[0]]].concat(indexes.slice(1))));\n }\n return false;\n }\n /**\n * Testet, ob ein Wert null oder Leerstring, bzw nur aus leerzeichend bestehender String ist\n *\n * @param value\n * @returns {boolean}\n */\n static empty(value) {\n return (Helper.isNull(value) || (typeof value === 'string' && value.trim() === \"\"));\n }\n /**\n * Testet, ob ein Wert NICHT (null oder Leerstring, bzw nur aus leerzeichend bestehender String ist)\n *\n * @param value\n * @returns {boolean}\n */\n static notEmpty(value) {\n return !Helper.empty(value);\n }\n /**\n * Formatiert ein Date-Object nach der Vorlage von der C-Funktion strftime\n *\n * @param sFormat\n * @param date\n * @param useUTC\n * @returns {*|void|string|never}\n */\n static strftime(sFormat, date, useUTC, makePersistentTranslation) {\n useUTC = Helper.nonNull(useUTC, false);\n makePersistentTranslation = Helper.nonNull(makePersistentTranslation, true);\n date = Helper.nonNull(date, new Date());\n if (!(date instanceof Date))\n date = new Date(date);\n let nDay = (useUTC) ? date.getUTCDay() : date.getDay(), nDate = (useUTC) ? date.getUTCDate() : date.getDate(), nMonth = (useUTC) ? date.getUTCMonth() : date.getMonth(), nYear = (useUTC) ? date.getUTCFullYear() : date.getFullYear(), nHour = (useUTC) ? date.getUTCHours() : date.getHours(), aDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], aDaysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], aMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], isLeapYear = function () {\n if ((nYear & 3) !== 0)\n return false;\n return nYear % 100 !== 0 || nYear % 400 === 0;\n }, getThursday = function () {\n let target = new Date(date);\n target.setDate(nDate - ((nDay + 6) % 7) + 3);\n return target;\n }, zeroPad = function (nNum, nPad) {\n return ('' + (Math.pow(10, nPad) + nNum)).slice(1);\n };\n return sFormat.replace(/%[a-z]/gi, function (sMatch) {\n return {\n '%a': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aDaysShort[nDay]).outerHTML : Translator_1.Translator.translate(aDaysShort[nDay]),\n '%A': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aDays[nDay]).outerHTML : Translator_1.Translator.translate(aDays[nDay]),\n '%b': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aMonths[nMonth].slice(0, 3)).outerHTML : Translator_1.Translator.translate(aMonths[nMonth].slice(0, 3)),\n '%B': (makePersistentTranslation) ? Translator_1.Translator.makePersistentTranslation(aMonths[nMonth]).outerHTML : Translator_1.Translator.translate(aMonths[nMonth]),\n '%c': date.toUTCString(),\n '%C': Math.floor(nYear / 100),\n '%d': zeroPad(nDate, 2),\n '%e': nDate,\n '%f': zeroPad(date.getTime() % 1000, 4),\n '%F': date.toISOString().slice(0, 10),\n '%G': getThursday().getFullYear(),\n '%g': ('' + getThursday().getFullYear()).slice(2),\n '%H': zeroPad(nHour, 2),\n '%I': zeroPad((nHour + 11) % 12 + 1, 2),\n '%j': zeroPad(aDayCount[nMonth] + nDate + ((nMonth > 1 && isLeapYear()) ? 1 : 0), 3),\n '%k': '' + nHour,\n '%l': (nHour + 11) % 12 + 1,\n '%m': zeroPad(nMonth + 1, 2),\n '%M': zeroPad(date.getMinutes(), 2),\n '%p': (nHour < 12) ? 'AM' : 'PM',\n '%P': (nHour < 12) ? 'am' : 'pm',\n '%s': Math.round(date.getTime() / 1000),\n '%S': zeroPad(date.getSeconds(), 2),\n '%u': nDay || 7,\n '%w': '' + nDay,\n '%x': date.toLocaleDateString(),\n '%X': date.toLocaleTimeString(),\n '%y': ('' + nYear).slice(2),\n '%Y': nYear,\n '%z': date.toTimeString().replace(/.+GMT([+-]\\d+).+/, '$1'),\n '%Z': date.toTimeString().replace(/.+\\((.+?)\\)$/, '$1')\n }[sMatch] || sMatch;\n });\n }\n static arrayToObject(array, indexFunction) {\n let obj = {};\n array.forEach(val => {\n obj[indexFunction(val)] = val;\n });\n return obj;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static cloneJson(obj) {\n // https://stackoverflow.com/questions/4120475/how-to-create-and-clone-a-json-object/17502990#17502990\n let i;\n // basic type deep copy\n if (Helper.isNull(obj) || typeof obj !== 'object') {\n return obj;\n }\n // array deep copy\n if (obj instanceof Array) {\n let cloneA = [];\n for (i = 0; i < obj.length; ++i) {\n cloneA[i] = Helper.cloneJson(obj[i]);\n }\n return cloneA;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n // object deep copy\n let cloneO = {};\n for (i in obj) {\n cloneO[i] = Helper.cloneJson(obj[i]);\n }\n return cloneO;\n }\n /**\n * Erstellt ein FormData-Object von JSON-Data. Nützlich für fetch\n *\n * @param obj\n * @returns {FormData}\n */\n static formDataFromObject(obj) {\n let formData = new FormData();\n for (let k in obj) {\n formData.set(k, obj[k]);\n }\n return formData;\n }\n /**\n * Entfernt alle Children eines Elements\n *\n * @param element\n * @returns {Node}\n */\n static removeAllChildren(element) {\n if (element instanceof Node) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n return element;\n }\n static shuffleArray(array) {\n let currentIndex = array.length, temporaryValue, randomIndex;\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n return array;\n }\n static padZero(n, width, z) {\n z = Helper.nonNull(z, '0');\n n = n + '';\n width = Helper.nonNull(width, 1);\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n }\n static deepEqual(a, b) {\n // debugger;\n if (a === b) {\n return true;\n }\n if (typeof a === \"object\" && typeof b === \"object\") {\n let keysOfB = Object.keys(b);\n let childrenDeepEqual = Object.keys(a).every((key) => {\n let index = keysOfB.indexOf(key);\n if (index < 0) {\n return false;\n }\n keysOfB.splice(index, 1);\n return Helper.deepEqual(a[key], b[key]);\n });\n return (childrenDeepEqual && keysOfB.length === 0);\n }\n return false;\n }\n //Ältere evtl nützliche Funktionen\n static htmlspecialcharsDecode(text) {\n const map = {\n '&': '&',\n '&': \"&\",\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '’': \"’\",\n '‘': \"‘\",\n '–': \"–\",\n '—': \"—\",\n '…': \"…\",\n '”': '”'\n };\n if (Helper.isNotNull(text) && typeof text.replace === \"function\") {\n return text.replace(/\\&[\\w\\d\\#]{2,5}\\;/g, function (m) {\n return map[m];\n });\n }\n return text;\n }\n // static getIndexedObject(array, keyValue) {\n // let obj = {};\n // for (let i = 0, n = array.length; i < n; i++) {\n // obj[array[i][keyValue]] = array[i];\n // }\n // return obj;\n // }\n /**\n * Inverts the key-Values for an object\n * @param obj\n * @return {*}\n */\n static invertKeyValues(obj) {\n let new_obj = {};\n for (let prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n new_obj[obj[prop]] = prop;\n }\n }\n return new_obj;\n }\n static asyncForEach(array, callback, runAsyncronous) {\n return __awaiter(this, void 0, void 0, function* () {\n runAsyncronous = Helper.nonNull(runAsyncronous, false);\n if (array instanceof Map) {\n array = Array.from(array.values());\n }\n let validPromises = [];\n for (let i = 0; i < array.length; i++) {\n let index = i;\n let currentPromise = Promise.resolve(callback(array[index], index, array));\n if (!runAsyncronous) {\n yield currentPromise;\n }\n validPromises.push(currentPromise);\n }\n return Promise.all(validPromises);\n });\n }\n static escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n }\n static objectForEach(object, callback) {\n Object.keys(object).forEach(key => {\n callback(object[key], key, object);\n });\n }\n static toArray(object) {\n let res = [];\n for (let k in object) {\n res.push(object[k]);\n }\n return res;\n }\n static imageUrlIsEmpty(url) {\n return (Helper.isNull(url) || url.trim() === \"\" || url.trim() === \"data:\");\n }\n static newPromiseWithResolve() {\n let resolver = null;\n let rejecter = null;\n let promise = new Promise((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n promise[\"resolve\"] = resolver;\n promise[\"reject\"] = rejecter;\n return promise;\n }\n}\nexports.Helper = Helper;\n//# sourceMappingURL=Helper.js.map","import { __awaiter, __generator, __values } from \"tslib\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { Table } from \"./table/Table\";\nimport { TableColumn } from \"./table/TableColumn\";\nimport { TableForeignKey } from \"./table/TableForeignKey\";\nimport { TableIndex } from \"./table/TableIndex\";\nimport { TableUtils } from \"./util/TableUtils\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { TableUnique } from \"./table/TableUnique\";\nimport { TableCheck } from \"./table/TableCheck\";\nimport { TableExclusion } from \"./table/TableExclusion\";\nimport { View } from \"./view/View\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\n/**\n * Creates complete tables schemas in the database based on the entity metadatas.\n *\n * Steps how schema is being built:\n * 1. load list of all tables with complete column and keys information from the db\n * 2. drop all (old) foreign keys that exist in the table, but does not exist in the metadata\n * 3. create new tables that does not exist in the db, but exist in the metadata\n * 4. drop all columns exist (left old) in the db table, but does not exist in the metadata\n * 5. add columns from metadata which does not exist in the table\n * 6. update all exist columns which metadata has changed\n * 7. update primary keys - update old and create new primary key from changed columns\n * 8. create foreign keys which does not exist in the table yet\n * 9. create indices which are missing in db yet, and drops indices which exist in the db, but does not exist in the metadata anymore\n */\nvar RdbmsSchemaBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RdbmsSchemaBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates complete schemas for the given entity metadatas.\n */\n RdbmsSchemaBuilder.prototype.build = function () {\n return __awaiter(this, void 0, void 0, function () {\n var tablePaths, error_1, rollbackError_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.queryRunner = this.connection.createQueryRunner();\n if (!!(this.connection.driver instanceof CockroachDriver)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.queryRunner.startTransaction()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 12, 18, 20]);\n tablePaths = this.entityToSyncMetadatas.map(function (metadata) { return metadata.tablePath; });\n if (!(this.viewEntityToSyncMetadatas.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.createTypeormMetadataTable()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [4 /*yield*/, this.queryRunner.getTables(tablePaths)];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.queryRunner.getViews([])];\n case 6:\n _a.sent();\n return [4 /*yield*/, this.executeSchemaSyncOperationsInProperOrder()];\n case 7:\n _a.sent();\n if (!this.connection.queryResultCache) return [3 /*break*/, 9];\n return [4 /*yield*/, this.connection.queryResultCache.synchronize(this.queryRunner)];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9:\n if (!!(this.connection.driver instanceof CockroachDriver)) return [3 /*break*/, 11];\n return [4 /*yield*/, this.queryRunner.commitTransaction()];\n case 10:\n _a.sent();\n _a.label = 11;\n case 11: return [3 /*break*/, 20];\n case 12:\n error_1 = _a.sent();\n _a.label = 13;\n case 13:\n _a.trys.push([13, 16, , 17]);\n if (!!(this.connection.driver instanceof CockroachDriver)) return [3 /*break*/, 15];\n return [4 /*yield*/, this.queryRunner.rollbackTransaction()];\n case 14:\n _a.sent();\n _a.label = 15;\n case 15: return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18: return [4 /*yield*/, this.queryRunner.release()];\n case 19:\n _a.sent();\n return [7 /*endfinally*/];\n case 20: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns sql queries to be executed by schema builder.\n */\n RdbmsSchemaBuilder.prototype.log = function () {\n return __awaiter(this, void 0, void 0, function () {\n var tablePaths;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.queryRunner = this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 9, 11]);\n tablePaths = this.entityToSyncMetadatas.map(function (metadata) { return metadata.tablePath; });\n if (!(this.viewEntityToSyncMetadatas.length > 0)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.createTypeormMetadataTable()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [4 /*yield*/, this.queryRunner.getTables(tablePaths)];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.queryRunner.getViews([])];\n case 5:\n _a.sent();\n this.queryRunner.enableSqlMemory();\n return [4 /*yield*/, this.executeSchemaSyncOperationsInProperOrder()];\n case 6:\n _a.sent();\n if (!this.connection.queryResultCache) return [3 /*break*/, 8];\n return [4 /*yield*/, this.connection.queryResultCache.synchronize(this.queryRunner)];\n case 7:\n _a.sent();\n _a.label = 8;\n case 8: return [2 /*return*/, this.queryRunner.getMemorySql()];\n case 9:\n // its important to disable this mode despite the fact we are release query builder\n // because there exist drivers which reuse same query runner. Also its important to disable\n // sql memory after call of getMemorySql() method because last one flushes sql memory.\n this.queryRunner.disableSqlMemory();\n return [4 /*yield*/, this.queryRunner.release()];\n case 10:\n _a.sent();\n return [7 /*endfinally*/];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(RdbmsSchemaBuilder.prototype, \"entityToSyncMetadatas\", {\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Returns only entities that should be synced in the database.\n */\n get: function () {\n return this.connection.entityMetadatas.filter(function (metadata) { return metadata.synchronize && metadata.tableType !== \"entity-child\" && metadata.tableType !== \"view\"; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RdbmsSchemaBuilder.prototype, \"viewEntityToSyncMetadatas\", {\n /**\n * Returns only entities that should be synced in the database.\n */\n get: function () {\n return this.connection.entityMetadatas.filter(function (metadata) { return metadata.tableType === \"view\" && metadata.synchronize; });\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Executes schema sync operations in a proper order.\n * Order of operations matter here.\n */\n RdbmsSchemaBuilder.prototype.executeSchemaSyncOperationsInProperOrder = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.dropOldViews()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.dropOldForeignKeys()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.dropOldIndices()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.dropOldChecks()];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.dropOldExclusions()];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.dropCompositeUniqueConstraints()];\n case 6:\n _a.sent();\n // await this.renameTables();\n return [4 /*yield*/, this.renameColumns()];\n case 7:\n // await this.renameTables();\n _a.sent();\n return [4 /*yield*/, this.createNewTables()];\n case 8:\n _a.sent();\n return [4 /*yield*/, this.dropRemovedColumns()];\n case 9:\n _a.sent();\n return [4 /*yield*/, this.addNewColumns()];\n case 10:\n _a.sent();\n return [4 /*yield*/, this.updatePrimaryKeys()];\n case 11:\n _a.sent();\n return [4 /*yield*/, this.updateExistColumns()];\n case 12:\n _a.sent();\n return [4 /*yield*/, this.createNewIndices()];\n case 13:\n _a.sent();\n return [4 /*yield*/, this.createNewChecks()];\n case 14:\n _a.sent();\n return [4 /*yield*/, this.createNewExclusions()];\n case 15:\n _a.sent();\n return [4 /*yield*/, this.createCompositeUniqueConstraints()];\n case 16:\n _a.sent();\n return [4 /*yield*/, this.createForeignKeys()];\n case 17:\n _a.sent();\n return [4 /*yield*/, this.createViews()];\n case 18:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all (old) foreign keys that exist in the tables, but do not exist in the entity metadata.\n */\n RdbmsSchemaBuilder.prototype.dropOldForeignKeys = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_1, this_1, _a, _b, metadata, e_1_1;\n var e_1, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_1 = function (metadata) {\n var table, tableForeignKeysToDrop;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_1.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n tableForeignKeysToDrop = table.foreignKeys.filter(function (tableForeignKey) {\n var metadataFK = metadata.foreignKeys.find(function (metadataForeignKey) { return foreignKeysMatch(tableForeignKey, metadataForeignKey); });\n return !metadataFK\n || (metadataFK.onDelete && metadataFK.onDelete !== tableForeignKey.onDelete)\n || (metadataFK.onUpdate && metadataFK.onUpdate !== tableForeignKey.onUpdate);\n });\n if (tableForeignKeysToDrop.length === 0)\n return [2 /*return*/, \"continue\"];\n this_1.connection.logger.logSchemaBuild(\"dropping old foreign keys of \" + table.name + \": \" + tableForeignKeysToDrop.map(function (dbForeignKey) { return dbForeignKey.name; }).join(\", \"));\n // drop foreign keys from the database\n return [4 /*yield*/, this_1.queryRunner.dropForeignKeys(table, tableForeignKeysToDrop)];\n case 1:\n // drop foreign keys from the database\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_1(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _d.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rename tables\n */\n RdbmsSchemaBuilder.prototype.renameTables = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Renames columns.\n * Works if only one column per table was changed.\n * Changes only column name. If something besides name was changed, these changes will be ignored.\n */\n RdbmsSchemaBuilder.prototype.renameColumns = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_2, this_2, _a, _b, metadata, e_2_1;\n var e_2, _c;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_2 = function (metadata) {\n var table, renamedMetadataColumns, renamedTableColumns, renamedColumn;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_2.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n if (metadata.columns.length !== table.columns.length)\n return [2 /*return*/, \"continue\"];\n renamedMetadataColumns = metadata.columns.filter(function (column) {\n return !table.columns.find(function (tableColumn) {\n return tableColumn.name === column.databaseName\n && tableColumn.type === _this.connection.driver.normalizeType(column)\n && tableColumn.isNullable === column.isNullable\n && tableColumn.isUnique === _this.connection.driver.normalizeIsUnique(column);\n });\n });\n if (renamedMetadataColumns.length === 0 || renamedMetadataColumns.length > 1)\n return [2 /*return*/, \"continue\"];\n renamedTableColumns = table.columns.filter(function (tableColumn) {\n return !metadata.columns.find(function (column) {\n return column.databaseName === tableColumn.name\n && _this.connection.driver.normalizeType(column) === tableColumn.type\n && column.isNullable === tableColumn.isNullable\n && _this.connection.driver.normalizeIsUnique(column) === tableColumn.isUnique;\n });\n });\n if (renamedTableColumns.length === 0 || renamedTableColumns.length > 1)\n return [2 /*return*/, \"continue\"];\n renamedColumn = renamedTableColumns[0].clone();\n renamedColumn.name = renamedMetadataColumns[0].databaseName;\n this_2.connection.logger.logSchemaBuild(\"renaming column \\\"\" + renamedTableColumns[0].name + \"\\\" in to \\\"\" + renamedColumn.name + \"\\\"\");\n return [4 /*yield*/, this_2.queryRunner.renameColumn(table, renamedTableColumns[0], renamedColumn)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_2 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_2(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_2_1 = _d.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldIndices = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_3, this_3, _a, _b, metadata, e_3_1;\n var e_3, _c;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_3 = function (metadata) {\n var table, dropQueries;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_3.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n dropQueries = table.indices\n .filter(function (tableIndex) {\n var indexMetadata = metadata.indices.find(function (index) { return index.name === tableIndex.name; });\n if (indexMetadata) {\n if (indexMetadata.synchronize === false)\n return false;\n if (indexMetadata.isUnique !== tableIndex.isUnique)\n return true;\n if (indexMetadata.isSpatial !== tableIndex.isSpatial)\n return true;\n if (_this.connection.driver.isFullTextColumnTypeSupported() && indexMetadata.isFulltext !== tableIndex.isFulltext)\n return true;\n if (indexMetadata.columns.length !== tableIndex.columnNames.length)\n return true;\n return !indexMetadata.columns.every(function (column) { return tableIndex.columnNames.indexOf(column.databaseName) !== -1; });\n }\n return true;\n })\n .map(function (tableIndex) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.connection.logger.logSchemaBuild(\"dropping an index: \\\"\" + tableIndex.name + \"\\\" from table \" + table.name);\n return [4 /*yield*/, this.queryRunner.dropIndex(table, tableIndex)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n return [4 /*yield*/, Promise.all(dropQueries)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_3 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_3(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_3_1 = _d.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldChecks = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_4, this_4, _a, _b, metadata, e_4_1;\n var e_4, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Mysql does not support check constraints\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)\n return [2 /*return*/];\n _loop_4 = function (metadata) {\n var table, oldChecks;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_4.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n oldChecks = table.checks.filter(function (tableCheck) {\n return !metadata.checks.find(function (checkMetadata) { return checkMetadata.name === tableCheck.name; });\n });\n if (oldChecks.length === 0)\n return [2 /*return*/, \"continue\"];\n this_4.connection.logger.logSchemaBuild(\"dropping old check constraint: \" + oldChecks.map(function (check) { return \"\\\"\" + check.name + \"\\\"\"; }).join(\", \") + \" from table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_4.queryRunner.dropCheckConstraints(table, oldChecks)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_4 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_4(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_4_1 = _d.sent();\n e_4 = { error: e_4_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_4) throw e_4.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropCompositeUniqueConstraints = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_5, this_5, _a, _b, metadata, e_5_1;\n var e_5, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_5 = function (metadata) {\n var table, compositeUniques;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_5.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n compositeUniques = table.uniques.filter(function (tableUnique) {\n return tableUnique.columnNames.length > 1 && !metadata.uniques.find(function (uniqueMetadata) { return uniqueMetadata.name === tableUnique.name; });\n });\n if (compositeUniques.length === 0)\n return [2 /*return*/, \"continue\"];\n this_5.connection.logger.logSchemaBuild(\"dropping old unique constraint: \" + compositeUniques.map(function (unique) { return \"\\\"\" + unique.name + \"\\\"\"; }).join(\", \") + \" from table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_5.queryRunner.dropUniqueConstraints(table, compositeUniques)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_5 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_5(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_5_1 = _d.sent();\n e_5 = { error: e_5_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_5) throw e_5.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldExclusions = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_6, this_6, _a, _b, metadata, e_6_1;\n var e_6, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Only PostgreSQL supports exclusion constraints\n if (!(this.connection.driver instanceof PostgresDriver))\n return [2 /*return*/];\n _loop_6 = function (metadata) {\n var table, oldExclusions;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_6.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n oldExclusions = table.exclusions.filter(function (tableExclusion) {\n return !metadata.exclusions.find(function (exclusionMetadata) { return exclusionMetadata.name === tableExclusion.name; });\n });\n if (oldExclusions.length === 0)\n return [2 /*return*/, \"continue\"];\n this_6.connection.logger.logSchemaBuild(\"dropping old exclusion constraint: \" + oldExclusions.map(function (exclusion) { return \"\\\"\" + exclusion.name + \"\\\"\"; }).join(\", \") + \" from table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_6.queryRunner.dropExclusionConstraints(table, oldExclusions)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_6 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_6(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_6_1 = _d.sent();\n e_6 = { error: e_6_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_6) throw e_6.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates tables that do not exist in the database yet.\n * New tables are created without foreign and primary keys.\n * Primary key only can be created in conclusion with auto generated column.\n */\n RdbmsSchemaBuilder.prototype.createNewTables = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_7, this_7, _a, _b, metadata, e_7_1;\n var e_7, _c;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_7 = function (metadata) {\n var existTable, table;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n existTable = this_7.queryRunner.loadedTables.find(function (table) {\n var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined;\n var schema = metadata.schema || _this.connection.driver.options.schema;\n var fullTableName = _this.connection.driver.buildTableName(metadata.tableName, schema, database);\n return table.name === fullTableName;\n });\n if (existTable)\n return [2 /*return*/, \"continue\"];\n this_7.connection.logger.logSchemaBuild(\"creating a new table: \" + metadata.tablePath);\n table = Table.create(metadata, this_7.connection.driver);\n return [4 /*yield*/, this_7.queryRunner.createTable(table, false, false)];\n case 1:\n _e.sent();\n this_7.queryRunner.loadedTables.push(table);\n return [2 /*return*/];\n }\n });\n };\n this_7 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_7(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_7_1 = _d.sent();\n e_7 = { error: e_7_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_7) throw e_7.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.createViews = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_8, this_8, _a, _b, metadata, e_8_1;\n var e_8, _c;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_8 = function (metadata) {\n var existView, view;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n existView = this_8.queryRunner.loadedViews.find(function (view) {\n var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined;\n var schema = metadata.schema || _this.connection.driver.options.schema;\n var fullViewName = _this.connection.driver.buildTableName(metadata.tableName, schema, database);\n var viewExpression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(_this.connection).getQuery();\n var metadataExpression = typeof metadata.expression === \"string\" ? metadata.expression.trim() : metadata.expression(_this.connection).getQuery();\n return view.name === fullViewName && viewExpression === metadataExpression;\n });\n if (existView)\n return [2 /*return*/, \"continue\"];\n this_8.connection.logger.logSchemaBuild(\"creating a new view: \" + metadata.tablePath);\n view = View.create(metadata, this_8.connection.driver);\n return [4 /*yield*/, this_8.queryRunner.createView(view)];\n case 1:\n _e.sent();\n this_8.queryRunner.loadedViews.push(view);\n return [2 /*return*/];\n }\n });\n };\n this_8 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.viewEntityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_8(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_8_1 = _d.sent();\n e_8 = { error: e_8_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_8) throw e_8.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.dropOldViews = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_9, this_9, _a, _b, view, e_9_1;\n var e_9, _c;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_9 = function (view) {\n var existViewMetadata;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n existViewMetadata = this_9.viewEntityToSyncMetadatas.find(function (metadata) {\n var database = metadata.database && metadata.database !== _this.connection.driver.database ? metadata.database : undefined;\n var schema = metadata.schema || _this.connection.driver.options.schema;\n var fullViewName = _this.connection.driver.buildTableName(metadata.tableName, schema, database);\n var viewExpression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(_this.connection).getQuery();\n var metadataExpression = typeof metadata.expression === \"string\" ? metadata.expression.trim() : metadata.expression(_this.connection).getQuery();\n return view.name === fullViewName && viewExpression === metadataExpression;\n });\n if (existViewMetadata)\n return [2 /*return*/, \"continue\"];\n this_9.connection.logger.logSchemaBuild(\"dropping an old view: \" + view.name);\n // drop an old view\n return [4 /*yield*/, this_9.queryRunner.dropView(view)];\n case 1:\n // drop an old view\n _e.sent();\n this_9.queryRunner.loadedViews.splice(this_9.queryRunner.loadedViews.indexOf(view), 1);\n return [2 /*return*/];\n }\n });\n };\n this_9 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.queryRunner.loadedViews), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n view = _b.value;\n return [5 /*yield**/, _loop_9(view)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_9_1 = _d.sent();\n e_9 = { error: e_9_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_9) throw e_9.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all columns that exist in the table, but does not exist in the metadata (left old).\n * We drop their keys too, since it should be safe.\n */\n RdbmsSchemaBuilder.prototype.dropRemovedColumns = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_10, this_10, _a, _b, metadata, e_10_1;\n var e_10, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_10 = function (metadata) {\n var table, droppedTableColumns;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_10.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n droppedTableColumns = table.columns.filter(function (tableColumn) {\n return !metadata.columns.find(function (columnMetadata) { return columnMetadata.databaseName === tableColumn.name; });\n });\n if (droppedTableColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n this_10.connection.logger.logSchemaBuild(\"columns dropped in \" + table.name + \": \" + droppedTableColumns.map(function (column) { return column.name; }).join(\", \"));\n // drop columns from the database\n return [4 /*yield*/, this_10.queryRunner.dropColumns(table, droppedTableColumns)];\n case 1:\n // drop columns from the database\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_10 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_10(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_10_1 = _d.sent();\n e_10 = { error: e_10_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_10) throw e_10.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Adds columns from metadata which does not exist in the table.\n * Columns are created without keys.\n */\n RdbmsSchemaBuilder.prototype.addNewColumns = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_11, this_11, _a, _b, metadata, e_11_1;\n var e_11, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_11 = function (metadata) {\n var table, newColumnMetadatas, newTableColumnOptions, newTableColumns;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_11.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newColumnMetadatas = metadata.columns.filter(function (columnMetadata) {\n return !table.columns.find(function (tableColumn) { return tableColumn.name === columnMetadata.databaseName; });\n });\n if (newColumnMetadatas.length === 0)\n return [2 /*return*/, \"continue\"];\n newTableColumnOptions = this_11.metadataColumnsToTableColumnOptions(newColumnMetadatas);\n newTableColumns = newTableColumnOptions.map(function (option) { return new TableColumn(option); });\n if (newTableColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n this_11.connection.logger.logSchemaBuild(\"new columns added: \" + newColumnMetadatas.map(function (column) { return column.databaseName; }).join(\", \"));\n return [4 /*yield*/, this_11.queryRunner.addColumns(table, newTableColumns)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_11 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_11(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_11_1 = _d.sent();\n e_11 = { error: e_11_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_11) throw e_11.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates composite primary keys.\n */\n RdbmsSchemaBuilder.prototype.updatePrimaryKeys = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_12, this_12, _a, _b, metadata, e_12_1;\n var e_12, _c;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_12 = function (metadata) {\n var table, primaryMetadataColumns, primaryTableColumns, changedPrimaryColumns;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_12.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n primaryMetadataColumns = metadata.columns.filter(function (column) { return column.isPrimary; });\n primaryTableColumns = table.columns.filter(function (column) { return column.isPrimary; });\n if (!(primaryTableColumns.length !== primaryMetadataColumns.length && primaryMetadataColumns.length > 1)) return [3 /*break*/, 2];\n changedPrimaryColumns = primaryMetadataColumns.map(function (primaryMetadataColumn) {\n return new TableColumn(TableUtils.createTableColumnOptions(primaryMetadataColumn, _this.connection.driver));\n });\n return [4 /*yield*/, this_12.queryRunner.updatePrimaryKeys(table, changedPrimaryColumns)];\n case 1:\n _e.sent();\n _e.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n };\n this_12 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_12(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_12_1 = _d.sent();\n e_12 = { error: e_12_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_12) throw e_12.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Update all exist columns which metadata has changed.\n * Still don't create keys. Also we don't touch foreign keys of the changed columns.\n */\n RdbmsSchemaBuilder.prototype.updateExistColumns = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_13, this_13, _a, _b, metadata, e_13_1;\n var e_13, _c;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_13 = function (metadata) {\n var table, changedColumns, changedColumns_1, changedColumns_1_1, changedColumn, e_14_1, changedColumns_2, changedColumns_2_1, changedColumn, e_15_1, changedColumns_3, changedColumns_3_1, changedColumn, e_16_1, newAndOldTableColumns;\n var e_14, _e, e_15, _f, e_16, _g;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n table = this_13.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n changedColumns = this_13.connection.driver.findChangedColumns(table.columns, metadata.columns);\n if (changedColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n _h.label = 1;\n case 1:\n _h.trys.push([1, 6, 7, 8]);\n changedColumns_1 = (e_14 = void 0, __values(changedColumns)), changedColumns_1_1 = changedColumns_1.next();\n _h.label = 2;\n case 2:\n if (!!changedColumns_1_1.done) return [3 /*break*/, 5];\n changedColumn = changedColumns_1_1.value;\n return [4 /*yield*/, this_13.dropColumnReferencedForeignKeys(metadata.tablePath, changedColumn.databaseName)];\n case 3:\n _h.sent();\n _h.label = 4;\n case 4:\n changedColumns_1_1 = changedColumns_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_14_1 = _h.sent();\n e_14 = { error: e_14_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (changedColumns_1_1 && !changedColumns_1_1.done && (_e = changedColumns_1.return)) _e.call(changedColumns_1);\n }\n finally { if (e_14) throw e_14.error; }\n return [7 /*endfinally*/];\n case 8:\n _h.trys.push([8, 13, 14, 15]);\n changedColumns_2 = (e_15 = void 0, __values(changedColumns)), changedColumns_2_1 = changedColumns_2.next();\n _h.label = 9;\n case 9:\n if (!!changedColumns_2_1.done) return [3 /*break*/, 12];\n changedColumn = changedColumns_2_1.value;\n return [4 /*yield*/, this_13.dropColumnCompositeIndices(metadata.tablePath, changedColumn.databaseName)];\n case 10:\n _h.sent();\n _h.label = 11;\n case 11:\n changedColumns_2_1 = changedColumns_2.next();\n return [3 /*break*/, 9];\n case 12: return [3 /*break*/, 15];\n case 13:\n e_15_1 = _h.sent();\n e_15 = { error: e_15_1 };\n return [3 /*break*/, 15];\n case 14:\n try {\n if (changedColumns_2_1 && !changedColumns_2_1.done && (_f = changedColumns_2.return)) _f.call(changedColumns_2);\n }\n finally { if (e_15) throw e_15.error; }\n return [7 /*endfinally*/];\n case 15:\n if (!!(this_13.connection.driver instanceof MysqlDriver || this_13.connection.driver instanceof AuroraDataApiDriver)) return [3 /*break*/, 23];\n _h.label = 16;\n case 16:\n _h.trys.push([16, 21, 22, 23]);\n changedColumns_3 = (e_16 = void 0, __values(changedColumns)), changedColumns_3_1 = changedColumns_3.next();\n _h.label = 17;\n case 17:\n if (!!changedColumns_3_1.done) return [3 /*break*/, 20];\n changedColumn = changedColumns_3_1.value;\n return [4 /*yield*/, this_13.dropColumnCompositeUniques(metadata.tablePath, changedColumn.databaseName)];\n case 18:\n _h.sent();\n _h.label = 19;\n case 19:\n changedColumns_3_1 = changedColumns_3.next();\n return [3 /*break*/, 17];\n case 20: return [3 /*break*/, 23];\n case 21:\n e_16_1 = _h.sent();\n e_16 = { error: e_16_1 };\n return [3 /*break*/, 23];\n case 22:\n try {\n if (changedColumns_3_1 && !changedColumns_3_1.done && (_g = changedColumns_3.return)) _g.call(changedColumns_3);\n }\n finally { if (e_16) throw e_16.error; }\n return [7 /*endfinally*/];\n case 23:\n newAndOldTableColumns = changedColumns.map(function (changedColumn) {\n var oldTableColumn = table.columns.find(function (column) { return column.name === changedColumn.databaseName; });\n var newTableColumnOptions = TableUtils.createTableColumnOptions(changedColumn, _this.connection.driver);\n var newTableColumn = new TableColumn(newTableColumnOptions);\n return {\n oldColumn: oldTableColumn,\n newColumn: newTableColumn\n };\n });\n if (newAndOldTableColumns.length === 0)\n return [2 /*return*/, \"continue\"];\n this_13.connection.logger.logSchemaBuild(\"columns changed in \\\"\" + table.name + \"\\\". updating: \" + changedColumns.map(function (column) { return column.databaseName; }).join(\", \"));\n return [4 /*yield*/, this_13.queryRunner.changeColumns(table, newAndOldTableColumns)];\n case 24:\n _h.sent();\n return [2 /*return*/];\n }\n });\n };\n this_13 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_13(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_13_1 = _d.sent();\n e_13 = { error: e_13_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_13) throw e_13.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates composite indices which are missing in db yet.\n */\n RdbmsSchemaBuilder.prototype.createNewIndices = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_14, this_14, _a, _b, metadata, e_17_1;\n var e_17, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_14 = function (metadata) {\n var table, newIndices;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_14.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newIndices = metadata.indices\n .filter(function (indexMetadata) { return !table.indices.find(function (tableIndex) { return tableIndex.name === indexMetadata.name; }) && indexMetadata.synchronize === true; })\n .map(function (indexMetadata) { return TableIndex.create(indexMetadata); });\n if (newIndices.length === 0)\n return [2 /*return*/, \"continue\"];\n this_14.connection.logger.logSchemaBuild(\"adding new indices \" + newIndices.map(function (index) { return \"\\\"\" + index.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_14.queryRunner.createIndices(table, newIndices)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_14 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_14(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_17_1 = _d.sent();\n e_17 = { error: e_17_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_17) throw e_17.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n RdbmsSchemaBuilder.prototype.createNewChecks = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_15, this_15, _a, _b, metadata, e_18_1;\n var e_18, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Mysql does not support check constraints\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)\n return [2 /*return*/];\n _loop_15 = function (metadata) {\n var table, newChecks;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_15.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newChecks = metadata.checks\n .filter(function (checkMetadata) { return !table.checks.find(function (tableCheck) { return tableCheck.name === checkMetadata.name; }); })\n .map(function (checkMetadata) { return TableCheck.create(checkMetadata); });\n if (newChecks.length === 0)\n return [2 /*return*/, \"continue\"];\n this_15.connection.logger.logSchemaBuild(\"adding new check constraints: \" + newChecks.map(function (index) { return \"\\\"\" + index.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_15.queryRunner.createCheckConstraints(table, newChecks)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_15 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_15(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_18_1 = _d.sent();\n e_18 = { error: e_18_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_18) throw e_18.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates composite uniques which are missing in db yet.\n */\n RdbmsSchemaBuilder.prototype.createCompositeUniqueConstraints = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_16, this_16, _a, _b, metadata, e_19_1;\n var e_19, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_16 = function (metadata) {\n var table, compositeUniques;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_16.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n compositeUniques = metadata.uniques\n .filter(function (uniqueMetadata) { return uniqueMetadata.columns.length > 1 && !table.uniques.find(function (tableUnique) { return tableUnique.name === uniqueMetadata.name; }); })\n .map(function (uniqueMetadata) { return TableUnique.create(uniqueMetadata); });\n if (compositeUniques.length === 0)\n return [2 /*return*/, \"continue\"];\n this_16.connection.logger.logSchemaBuild(\"adding new unique constraints: \" + compositeUniques.map(function (unique) { return \"\\\"\" + unique.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_16.queryRunner.createUniqueConstraints(table, compositeUniques)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_16 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_16(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_19_1 = _d.sent();\n e_19 = { error: e_19_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_19) throw e_19.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates exclusions which are missing in db yet.\n */\n RdbmsSchemaBuilder.prototype.createNewExclusions = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_17, this_17, _a, _b, metadata, e_20_1;\n var e_20, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Only PostgreSQL supports exclusion constraints\n if (!(this.connection.driver instanceof PostgresDriver))\n return [2 /*return*/];\n _loop_17 = function (metadata) {\n var table, newExclusions;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_17.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newExclusions = metadata.exclusions\n .filter(function (exclusionMetadata) { return !table.exclusions.find(function (tableExclusion) { return tableExclusion.name === exclusionMetadata.name; }); })\n .map(function (exclusionMetadata) { return TableExclusion.create(exclusionMetadata); });\n if (newExclusions.length === 0)\n return [2 /*return*/, \"continue\"];\n this_17.connection.logger.logSchemaBuild(\"adding new exclusion constraints: \" + newExclusions.map(function (exclusion) { return \"\\\"\" + exclusion.name + \"\\\"\"; }).join(\", \") + \" in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_17.queryRunner.createExclusionConstraints(table, newExclusions)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_17 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_17(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_20_1 = _d.sent();\n e_20 = { error: e_20_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_20) throw e_20.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates foreign keys which does not exist in the table yet.\n */\n RdbmsSchemaBuilder.prototype.createForeignKeys = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _loop_18, this_18, _a, _b, metadata, e_21_1;\n var e_21, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _loop_18 = function (metadata) {\n var table, newKeys, dbForeignKeys;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n table = this_18.queryRunner.loadedTables.find(function (table) { return table.name === metadata.tablePath; });\n if (!table)\n return [2 /*return*/, \"continue\"];\n newKeys = metadata.foreignKeys\n .filter(function (foreignKey) {\n return !table.foreignKeys.find(function (dbForeignKey) { return foreignKeysMatch(dbForeignKey, foreignKey); });\n });\n if (newKeys.length === 0)\n return [2 /*return*/, \"continue\"];\n dbForeignKeys = newKeys.map(function (foreignKeyMetadata) { return TableForeignKey.create(foreignKeyMetadata); });\n this_18.connection.logger.logSchemaBuild(\"creating a foreign keys: \" + newKeys.map(function (key) { return key.name; }).join(\", \") + \" on table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this_18.queryRunner.createForeignKeys(table, dbForeignKeys)];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n };\n this_18 = this;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(this.entityToSyncMetadatas), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n metadata = _b.value;\n return [5 /*yield**/, _loop_18(metadata)];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_21_1 = _d.sent();\n e_21 = { error: e_21_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_21) throw e_21.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all foreign keys where given column of the given table is being used.\n */\n RdbmsSchemaBuilder.prototype.dropColumnReferencedForeignKeys = function (tablePath, columnName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, tablesWithFK, columnForeignKey, clonedTable, tablesWithFK_1, tablesWithFK_1_1, tableWithFK, e_22_1;\n var e_22, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; });\n if (!table)\n return [2 /*return*/];\n tablesWithFK = [];\n columnForeignKey = table.foreignKeys.find(function (foreignKey) { return foreignKey.columnNames.indexOf(columnName) !== -1; });\n if (columnForeignKey) {\n clonedTable = table.clone();\n clonedTable.foreignKeys = [columnForeignKey];\n tablesWithFK.push(clonedTable);\n table.removeForeignKey(columnForeignKey);\n }\n this.queryRunner.loadedTables.forEach(function (loadedTable) {\n var dependForeignKeys = loadedTable.foreignKeys.filter(function (foreignKey) {\n return foreignKey.referencedTableName === tablePath && foreignKey.referencedColumnNames.indexOf(columnName) !== -1;\n });\n if (dependForeignKeys.length > 0) {\n var clonedTable = loadedTable.clone();\n clonedTable.foreignKeys = dependForeignKeys;\n tablesWithFK.push(clonedTable);\n dependForeignKeys.forEach(function (dependForeignKey) { return loadedTable.removeForeignKey(dependForeignKey); });\n }\n });\n if (!(tablesWithFK.length > 0)) return [3 /*break*/, 8];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, 7, 8]);\n tablesWithFK_1 = __values(tablesWithFK), tablesWithFK_1_1 = tablesWithFK_1.next();\n _b.label = 2;\n case 2:\n if (!!tablesWithFK_1_1.done) return [3 /*break*/, 5];\n tableWithFK = tablesWithFK_1_1.value;\n this.connection.logger.logSchemaBuild(\"dropping related foreign keys of \" + tableWithFK.name + \": \" + tableWithFK.foreignKeys.map(function (foreignKey) { return foreignKey.name; }).join(\", \"));\n return [4 /*yield*/, this.queryRunner.dropForeignKeys(tableWithFK, tableWithFK.foreignKeys)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n tablesWithFK_1_1 = tablesWithFK_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_22_1 = _b.sent();\n e_22 = { error: e_22_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (tablesWithFK_1_1 && !tablesWithFK_1_1.done && (_a = tablesWithFK_1.return)) _a.call(tablesWithFK_1);\n }\n finally { if (e_22) throw e_22.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all composite indices, related to given column.\n */\n RdbmsSchemaBuilder.prototype.dropColumnCompositeIndices = function (tablePath, columnName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, relatedIndices;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; });\n if (!table)\n return [2 /*return*/];\n relatedIndices = table.indices.filter(function (index) { return index.columnNames.length > 1 && index.columnNames.indexOf(columnName) !== -1; });\n if (relatedIndices.length === 0)\n return [2 /*return*/];\n this.connection.logger.logSchemaBuild(\"dropping related indices of \\\"\" + tablePath + \"\\\".\\\"\" + columnName + \"\\\": \" + relatedIndices.map(function (index) { return index.name; }).join(\", \"));\n return [4 /*yield*/, this.queryRunner.dropIndices(table, relatedIndices)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops all composite uniques, related to given column.\n */\n RdbmsSchemaBuilder.prototype.dropColumnCompositeUniques = function (tablePath, columnName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, relatedUniques;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n table = this.queryRunner.loadedTables.find(function (table) { return table.name === tablePath; });\n if (!table)\n return [2 /*return*/];\n relatedUniques = table.uniques.filter(function (unique) { return unique.columnNames.length > 1 && unique.columnNames.indexOf(columnName) !== -1; });\n if (relatedUniques.length === 0)\n return [2 /*return*/];\n this.connection.logger.logSchemaBuild(\"dropping related unique constraints of \\\"\" + tablePath + \"\\\".\\\"\" + columnName + \"\\\": \" + relatedUniques.map(function (unique) { return unique.name; }).join(\", \"));\n return [4 /*yield*/, this.queryRunner.dropUniqueConstraints(table, relatedUniques)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new columns from the given column metadatas.\n */\n RdbmsSchemaBuilder.prototype.metadataColumnsToTableColumnOptions = function (columns) {\n var _this = this;\n return columns.map(function (columnMetadata) { return TableUtils.createTableColumnOptions(columnMetadata, _this.connection.driver); });\n };\n /**\n * Creates typeorm service table for storing user defined Views.\n */\n RdbmsSchemaBuilder.prototype.createTypeormMetadataTable = function () {\n return __awaiter(this, void 0, void 0, function () {\n var options, typeormMetadataTable;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n options = this.connection.driver.options;\n typeormMetadataTable = this.connection.driver.buildTableName(\"typeorm_metadata\", options.schema, options.database);\n return [4 /*yield*/, this.queryRunner.createTable(new Table({\n name: typeormMetadataTable,\n columns: [\n {\n name: \"type\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataType }),\n isNullable: false\n },\n {\n name: \"database\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataDatabase }),\n isNullable: true\n },\n {\n name: \"schema\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataSchema }),\n isNullable: true\n },\n {\n name: \"table\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataTable }),\n isNullable: true\n },\n {\n name: \"name\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataName }),\n isNullable: true\n },\n {\n name: \"value\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.metadataValue }),\n isNullable: true\n },\n ]\n }), true)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return RdbmsSchemaBuilder;\n}());\nexport { RdbmsSchemaBuilder };\nfunction foreignKeysMatch(tableForeignKey, metadataForeignKey) {\n return (tableForeignKey.name === metadataForeignKey.name)\n && (tableForeignKey.referencedTableName === metadataForeignKey.referencedTablePath);\n}\n\n//# sourceMappingURL=RdbmsSchemaBuilder.js.map\n","import { __awaiter, __generator } from \"tslib\";\nimport { DateUtils } from \"../../util/DateUtils\";\nimport { RdbmsSchemaBuilder } from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\nimport { ApplyValueTransformers } from \"../../util/ApplyValueTransformers\";\n/**\n * Organizes communication with sqlite DBMS.\n */\nvar AbstractSqliteDriver = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AbstractSqliteDriver(connection) {\n /**\n * Indicates if replication is enabled.\n */\n this.isReplicated = false;\n /**\n * Indicates if tree tables are supported by this driver.\n */\n this.treeSupport = true;\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm\n * @see https://sqlite.org/datatype3.html\n */\n this.supportedDataTypes = [\n \"int\",\n \"integer\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"unsigned big int\",\n \"int2\",\n \"int8\",\n \"integer\",\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"clob\",\n \"text\",\n \"blob\",\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"boolean\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n /**\n * Gets list of column data types that support length by a driver.\n */\n this.withLengthColumnTypes = [\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"blob\",\n \"clob\"\n ];\n /**\n * Gets list of spatial column data types.\n */\n this.spatialTypes = [];\n /**\n * Gets list of column data types that support precision by a driver.\n */\n this.withPrecisionColumnTypes = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n /**\n * Gets list of column data types that support scale by a driver.\n */\n this.withScaleColumnTypes = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n ];\n /**\n * Orm has special columns and we need to know what database column types should be for those types.\n * Column types are driver dependant.\n */\n this.mappedDataTypes = {\n createDate: \"datetime\",\n createDateDefault: \"datetime('now')\",\n updateDate: \"datetime\",\n updateDateDefault: \"datetime('now')\",\n deleteDate: \"datetime\",\n deleteDateNullable: true,\n version: \"integer\",\n treeLevel: \"integer\",\n migrationId: \"integer\",\n migrationName: \"varchar\",\n migrationTimestamp: \"bigint\",\n cacheId: \"int\",\n cacheIdentifier: \"varchar\",\n cacheTime: \"bigint\",\n cacheDuration: \"int\",\n cacheQuery: \"text\",\n cacheResult: \"text\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"text\",\n };\n this.connection = connection;\n this.options = connection.options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n */\n AbstractSqliteDriver.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.createDatabaseConnection()];\n case 1:\n _a.databaseConnection = _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n AbstractSqliteDriver.prototype.afterConnect = function () {\n return Promise.resolve();\n };\n /**\n * Closes connection with database.\n */\n AbstractSqliteDriver.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close(function (err) { return err ? fail(err) : ok(); });\n })];\n });\n });\n };\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n AbstractSqliteDriver.prototype.createSchemaBuilder = function () {\n return new RdbmsSchemaBuilder(this.connection);\n };\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n AbstractSqliteDriver.prototype.preparePersistentValue = function (value, columnMetadata) {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n if (value === null || value === undefined)\n return value;\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n return value === true ? 1 : 0;\n }\n else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value);\n }\n else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value);\n }\n else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n // to string conversation needs because SQLite stores date as integer number, when date came as Object\n // TODO: think about `toUTC` conversion\n return DateUtils.mixedDateToUtcDatetimeString(value);\n }\n else if (columnMetadata.type === \"simple-array\") {\n return DateUtils.simpleArrayToString(value);\n }\n else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n }\n else if (columnMetadata.type === \"simple-enum\") {\n return DateUtils.simpleEnumToString(value);\n }\n return value;\n };\n /**\n * Prepares given value to a value to be hydrated, based on its column type or metadata.\n */\n AbstractSqliteDriver.prototype.prepareHydratedValue = function (value, columnMetadata) {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n value = value ? true : false;\n }\n else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n /**\n * Fix date conversion issue\n *\n * If the format of the date string is \"2018-03-14 02:33:33.906\", Safari (and iOS WKWebView) will convert it to an invalid date object.\n * We need to modify the date string to \"2018-03-14T02:33:33.906Z\" and Safari will convert it correctly.\n *\n * ISO 8601\n * https://www.w3.org/TR/NOTE-datetime\n */\n if (value && typeof value === \"string\") {\n // There are various valid time string formats a sqlite time string might have:\n // https://www.sqlite.org/lang_datefunc.html\n // There are two separate fixes we may need to do:\n // 1) Add 'T' separator if space is used instead\n // 2) Add 'Z' UTC suffix if no timezone or offset specified\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d/.test(value)) {\n value = value.replace(\" \", \"T\");\n }\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d(:\\d\\d(\\.\\d\\d\\d)?)?$/.test(value)) {\n value += \"Z\";\n }\n }\n value = DateUtils.normalizeHydratedDate(value);\n }\n else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n }\n else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n }\n else if (columnMetadata.type === \"simple-array\") {\n value = DateUtils.stringToSimpleArray(value);\n }\n else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n }\n else if (columnMetadata.type === \"simple-enum\") {\n value = DateUtils.stringToSimpleEnum(value, columnMetadata);\n }\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n return value;\n };\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n AbstractSqliteDriver.prototype.escapeQueryWithParameters = function (sql, parameters, nativeParameters) {\n var builtParameters = Object.keys(nativeParameters).map(function (key) {\n // Mapping boolean values to their numeric representation\n if (typeof nativeParameters[key] === \"boolean\") {\n return nativeParameters[key] === true ? 1 : 0;\n }\n return nativeParameters[key];\n });\n if (!parameters || !Object.keys(parameters).length)\n return [sql, builtParameters];\n var keys = Object.keys(parameters).map(function (parameter) { return \"(:(\\\\.\\\\.\\\\.)?\" + parameter + \"\\\\b)\"; }).join(\"|\");\n sql = sql.replace(new RegExp(keys, \"g\"), function (key) {\n var value;\n var isArray = false;\n if (key.substr(0, 4) === \":...\") {\n isArray = true;\n value = parameters[key.substr(4)];\n }\n else {\n value = parameters[key.substr(1)];\n }\n if (isArray) {\n return value.map(function (v) {\n builtParameters.push(v);\n return \"?\";\n // return \"$\" + builtParameters.length;\n }).join(\", \");\n }\n else if (value instanceof Function) {\n return value();\n }\n else {\n builtParameters.push(value);\n return \"?\";\n // return \"$\" + builtParameters.length;\n }\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, builtParameters];\n };\n /**\n * Escapes a column name.\n */\n AbstractSqliteDriver.prototype.escape = function (columnName) {\n return \"\\\"\" + columnName + \"\\\"\";\n };\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. \"myDB\".\"mySchema\".\"myTable\"\n *\n * Returns only simple table name because all inherited drivers does not supports schema and database.\n */\n AbstractSqliteDriver.prototype.buildTableName = function (tableName, schema, database) {\n return tableName;\n };\n /**\n * Creates a database type from a given column metadata.\n */\n AbstractSqliteDriver.prototype.normalizeType = function (column) {\n if (column.type === Number || column.type === \"int\") {\n return \"integer\";\n }\n else if (column.type === String) {\n return \"varchar\";\n }\n else if (column.type === Date) {\n return \"datetime\";\n }\n else if (column.type === Boolean) {\n return \"boolean\";\n }\n else if (column.type === \"uuid\") {\n return \"varchar\";\n }\n else if (column.type === \"simple-array\") {\n return \"text\";\n }\n else if (column.type === \"simple-json\") {\n return \"text\";\n }\n else if (column.type === \"simple-enum\") {\n return \"varchar\";\n }\n else {\n return column.type || \"\";\n }\n };\n /**\n * Normalizes \"default\" value of the column.\n */\n AbstractSqliteDriver.prototype.normalizeDefault = function (columnMetadata) {\n var defaultValue = columnMetadata.default;\n if (typeof defaultValue === \"number\") {\n return \"\" + defaultValue;\n }\n else if (typeof defaultValue === \"boolean\") {\n return defaultValue === true ? \"1\" : \"0\";\n }\n else if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n else if (typeof defaultValue === \"string\") {\n return \"'\" + defaultValue + \"'\";\n }\n else if (defaultValue === null) {\n return undefined;\n }\n else {\n return defaultValue;\n }\n };\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n AbstractSqliteDriver.prototype.normalizeIsUnique = function (column) {\n return column.entityMetadata.uniques.some(function (uq) { return uq.columns.length === 1 && uq.columns[0] === column; });\n };\n /**\n * Calculates column length taking into account the default length values.\n */\n AbstractSqliteDriver.prototype.getColumnLength = function (column) {\n return column.length ? column.length.toString() : \"\";\n };\n /**\n * Normalizes \"default\" value of the column.\n */\n AbstractSqliteDriver.prototype.createFullType = function (column) {\n var type = column.type;\n if (column.enum) {\n return \"varchar\";\n }\n if (column.length) {\n type += \"(\" + column.length + \")\";\n }\n else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += \"(\" + column.precision + \",\" + column.scale + \")\";\n }\n else if (column.precision !== null && column.precision !== undefined) {\n type += \"(\" + column.precision + \")\";\n }\n if (column.isArray)\n type += \" array\";\n return type;\n };\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n AbstractSqliteDriver.prototype.obtainMasterConnection = function () {\n return Promise.resolve();\n };\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n AbstractSqliteDriver.prototype.obtainSlaveConnection = function () {\n return Promise.resolve();\n };\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n AbstractSqliteDriver.prototype.createGeneratedMap = function (metadata, insertResult, entityIndex, entityNum) {\n var generatedMap = metadata.generatedColumns.reduce(function (map, generatedColumn) {\n var value;\n if (generatedColumn.generationStrategy === \"increment\" && insertResult) {\n // NOTE: When INSERT statement is successfully completed, the last inserted row ID is returned.\n // see also: SqliteQueryRunner.query()\n value = insertResult - entityNum + entityIndex + 1;\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // value = insertValue[generatedColumn.databaseName];\n }\n if (!value)\n return map;\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {});\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n };\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n AbstractSqliteDriver.prototype.findChangedColumns = function (tableColumns, columnMetadatas) {\n var _this = this;\n return columnMetadatas.filter(function (columnMetadata) {\n var tableColumn = tableColumns.find(function (c) { return c.name === columnMetadata.databaseName; });\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"comment:\", tableColumn.comment, columnMetadata.comment);\n // console.log(\"default:\", this.normalizeDefault(columnMetadata), columnMetadata.default);\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log(\"==========================================\");\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== _this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadata.length\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n // || tableColumn.comment !== columnMetadata.comment || // todo\n || _this.normalizeDefault(columnMetadata) !== tableColumn.default\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== _this.normalizeIsUnique(columnMetadata)\n || (columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated);\n });\n };\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n AbstractSqliteDriver.prototype.isReturningSqlSupported = function () {\n return false;\n };\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n AbstractSqliteDriver.prototype.isUUIDGenerationSupported = function () {\n return false;\n };\n /**\n * Returns true if driver supports fulltext indices.\n */\n AbstractSqliteDriver.prototype.isFullTextColumnTypeSupported = function () {\n return false;\n };\n /**\n * Creates an escaped parameter.\n */\n AbstractSqliteDriver.prototype.createParameter = function (parameterName, index) {\n // return \"$\" + (index + 1);\n return \"?\";\n // return \"$\" + parameterName;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n AbstractSqliteDriver.prototype.createDatabaseConnection = function () {\n throw new Error(\"Do not use AbstractSqlite directly, it has to be used with one of the sqlite drivers\");\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n AbstractSqliteDriver.prototype.loadDependencies = function () {\n // dependencies have to be loaded in the specific driver\n };\n return AbstractSqliteDriver;\n}());\nexport { AbstractSqliteDriver };\n\n//# sourceMappingURL=AbstractSqliteDriver.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SoundManager = void 0;\nconst AudioChain_1 = require(\"./AudioChain\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst App_1 = require(\"../App\");\nconst DataManager_1 = require(\"../DataManager\");\nclass SoundManager {\n constructor() {\n this.channels = {};\n if ('AudioContext' in window) {\n this.context = new AudioContext();\n }\n else if ('webkitAudioContext' in window) {\n // @ts-ignore\n this.context = new webkitAudioContext();\n }\n else {\n throw new Error(\"No audio context found!\");\n }\n this.context.onstatechange = function () {\n console.log(\"stateChange from context\", arguments);\n };\n this.context.oncomplete = function () {\n console.log(\"onComplete from context\", arguments);\n };\n window.addEventListener(\"visibilitychange\", (e) => {\n // console.log(\"visibility Change event\", e);\n this.handleVisibilityChange();\n });\n //For safari\n let checkVisibility = () => {\n this.handleVisibilityChange();\n setTimeout(checkVisibility, 500);\n };\n checkVisibility();\n }\n static getInstance() {\n if (Helper_1.Helper.isNull(SoundManager._instance)) {\n SoundManager._instance = new SoundManager();\n }\n return SoundManager._instance;\n }\n isNotSuspended() {\n // return false;\n return this.context.state !== \"suspended\";\n }\n set(options, channel) {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n let audioObject = Helper_1.Helper.nonNull(this.channels[channel], {});\n if (typeof options === \"string\") {\n options = { audio: options };\n }\n let audio = options.audio;\n if (Helper_1.Helper.isNotNull(audio)) {\n audioObject.loadedPromise = DataManager_1.DataManager.loadAsset(audio, \"raw\").then(res => res.arrayBuffer()).then(arrayBuffer => {\n return new Promise((r, reject) => this.context.decodeAudioData(arrayBuffer, r));\n }).catch(e => console.error(e));\n // audioObject.loadedPromise = fetch(audio).then(res => res.arrayBuffer()).then(arrayBuffer => {\n // return new Promise((r, reject) => this.context.decodeAudioData(arrayBuffer, r));\n // }).catch(e => console.error(e));\n this.stop(channel);\n }\n audioObject.muted = Helper_1.Helper.nonNull(options.muted, audioObject.muted, false);\n audioObject.volume = Helper_1.Helper.nonNull(options.volume, audioObject.volume, 1);\n audioObject.loop = Helper_1.Helper.nonNull(options.loop, audioObject.loop, false);\n audioObject.timeOffset = Helper_1.Helper.nonNull(options.timeOffset, audioObject.timeOffset, 0);\n this.channels[channel] = audioObject;\n if (audioObject.muted) {\n this.stop(channel);\n }\n return this.channels[channel];\n }\n resumeContext() {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof this.context.resume === \"function\") {\n return this.context.resume();\n }\n });\n }\n play(channel, audioOrOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n this.resumeContext();\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n if (Helper_1.Helper.isNull(audioOrOptions)) {\n audioOrOptions = {};\n }\n else if (!(typeof audioOrOptions === \"object\")) {\n audioOrOptions = {\n audio: audioOrOptions\n };\n }\n audioOrOptions.timeOffset = Helper_1.Helper.nonNull(audioOrOptions.timeOffset, 0);\n this.stop(channel);\n this.set(audioOrOptions, channel);\n if (!this.channels[channel].muted) {\n let buffer = yield this.channels[channel].loadedPromise;\n let source = new AudioChain_1.AudioChain(this.context, buffer, (sourceNode) => {\n let gain = this.context.createGain();\n gain.gain.value = this.channels[channel].volume;\n sourceNode.connect(gain);\n gain.connect(this.context.destination);\n });\n source.setBuffer(buffer);\n //to prevent gap in mp3-files\n source.setLooping(this.channels[channel].loop, 0.3, buffer.duration - 0.3);\n this.channels[channel].source = source;\n yield source.start();\n }\n return this.channels[channel];\n });\n }\n stop(channel) {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n let oldAudio = this.channels[channel];\n if (Helper_1.Helper.isNotNull(oldAudio) && Helper_1.Helper.isNotNull(oldAudio.source)) {\n oldAudio.source.stop();\n }\n }\n get(channel) {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n return this.channels[channel];\n }\n resume(channel) {\n return __awaiter(this, void 0, void 0, function* () {\n channel = Helper_1.Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);\n if (Helper_1.Helper.isNotNull(this.channels[channel]) && !this.channels[channel].muted && Helper_1.Helper.isNotNull(this.channels[channel].source)) {\n return this.channels[channel].source.resume();\n }\n });\n }\n stopAll() {\n for (let k in this.channels) {\n if (Helper_1.Helper.isNotNull(this.channels[k].source)) {\n this.channels[k].source.stop();\n }\n }\n }\n resumeAllIfNotMuted() {\n for (let k in this.channels) {\n if (Helper_1.Helper.isNotNull(this.channels[k]) && !this.channels[k].muted && Helper_1.Helper.isNotNull(this.channels[k].source)) {\n this.channels[k].source.resume();\n }\n }\n }\n handleVisibilityChange() {\n if (document.hidden) {\n this.stopAll();\n }\n else {\n this.resumeAllIfNotMuted();\n }\n }\n}\nexports.SoundManager = SoundManager;\nSoundManager.CHANNELS = {\n MUSIC: \"music\",\n SOUND: \"sound\",\n DEFAULT: \"default\"\n};\nApp_1.App.addInitialization(app => {\n // PauseSite.onPauseListeners.push(() => {\n // SoundManager.getInstance().stopAll();\n // });\n // PauseSite.onStartListeners.push(() => {\n // SoundManager.getInstance().resumeAllIfNotMuted();\n // });\n});\n// AndroidBridge.addDefinition(() => {\n// window[\"soundManagerInstance\"] = SoundManager.getInstance();\n// window[\"soundManagerInstance\"][\"stopAll\"] = window[\"soundManagerInstance\"].stopAll;\n// window[\"soundManagerInstance\"][\"resumeAllIfNotMuted\"] = window[\"soundManagerInstance\"].resumeAllIfNotMuted;\n// });\n//# sourceMappingURL=SoundManager.js.map","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./BaseDatabase\"));\n__export(require(\"./BaseModel\"));\n__export(require(\"./cordova-sites-database\"));\n//# sourceMappingURL=cordova-sites-database.js.map","import { __read, __values } from \"tslib\";\nimport { hash } from \"../util/StringUtils\";\n/**\n * Common driver utility functions.\n */\nvar DriverUtils = /** @class */ (function () {\n function DriverUtils() {\n }\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Normalizes and builds a new driver options.\n * Extracts settings from connection url and sets to a new options object.\n */\n DriverUtils.buildDriverOptions = function (options, buildOptions) {\n var e_1, _a;\n if (options.url) {\n var urlDriverOptions = this.parseConnectionUrl(options.url);\n if (buildOptions && buildOptions.useSid && urlDriverOptions.database) {\n urlDriverOptions.sid = urlDriverOptions.database;\n }\n try {\n for (var _b = __values(Object.keys(urlDriverOptions)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof urlDriverOptions[key] === \"undefined\") {\n delete urlDriverOptions[key];\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return Object.assign({}, options, urlDriverOptions);\n }\n return Object.assign({}, options);\n };\n /**\n * buildDriverOptions for MongodDB only to support replica set\n */\n DriverUtils.buildMongoDBDriverOptions = function (options, buildOptions) {\n var e_2, _a;\n if (options.url) {\n var urlDriverOptions = this.parseMongoDBConnectionUrl(options.url);\n if (buildOptions && buildOptions.useSid && urlDriverOptions.database) {\n urlDriverOptions.sid = urlDriverOptions.database;\n }\n try {\n for (var _b = __values(Object.keys(urlDriverOptions)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof urlDriverOptions[key] === \"undefined\") {\n delete urlDriverOptions[key];\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return Object.assign({}, options, urlDriverOptions);\n }\n return Object.assign({}, options);\n };\n /**\n * Builds column alias from given alias name and column name.\n *\n * If alias length is greater than the limit (if any) allowed by the current\n * driver, replaces it with a hashed string.\n *\n * @param driver Current `Driver`.\n * @param alias Alias part.\n * @param column Name of the column to be concatened to `alias`.\n *\n * @return An alias allowing to select/transform the target `column`.\n */\n DriverUtils.buildColumnAlias = function (_a, alias, column) {\n var maxAliasLength = _a.maxAliasLength;\n var columnAliasName = alias + \"_\" + column;\n if (maxAliasLength && maxAliasLength > 0 && columnAliasName.length > maxAliasLength) {\n return hash(columnAliasName, { length: maxAliasLength });\n }\n return columnAliasName;\n };\n // -------------------------------------------------------------------------\n // Private Static Methods\n // -------------------------------------------------------------------------\n /**\n * Extracts connection data from the connection url.\n */\n DriverUtils.parseConnectionUrl = function (url) {\n var type = url.split(\":\")[0];\n var firstSlashes = url.indexOf(\"//\");\n var preBase = url.substr(firstSlashes + 2);\n var secondSlash = preBase.indexOf(\"/\");\n var base = (secondSlash !== -1) ? preBase.substr(0, secondSlash) : preBase;\n var afterBase = (secondSlash !== -1) ? preBase.substr(secondSlash + 1) : undefined;\n // remove mongodb query params\n if (afterBase && afterBase.indexOf(\"?\") !== -1) {\n afterBase = afterBase.substr(0, afterBase.indexOf(\"?\"));\n }\n var lastAtSign = base.lastIndexOf(\"@\");\n var usernameAndPassword = base.substr(0, lastAtSign);\n var hostAndPort = base.substr(lastAtSign + 1);\n var username = usernameAndPassword;\n var password = \"\";\n var firstColon = usernameAndPassword.indexOf(\":\");\n if (firstColon !== -1) {\n username = usernameAndPassword.substr(0, firstColon);\n password = usernameAndPassword.substr(firstColon + 1);\n }\n var _a = __read(hostAndPort.split(\":\"), 2), host = _a[0], port = _a[1];\n return {\n type: type,\n host: host,\n username: decodeURIComponent(username),\n password: decodeURIComponent(password),\n port: port ? parseInt(port) : undefined,\n database: afterBase || undefined\n };\n };\n /**\n * Extracts connection data from the connection url for MongoDB to support replica set.\n */\n DriverUtils.parseMongoDBConnectionUrl = function (url) {\n var _a;\n var type = url.split(\":\")[0];\n var firstSlashes = url.indexOf(\"//\");\n var preBase = url.substr(firstSlashes + 2);\n var secondSlash = preBase.indexOf(\"/\");\n var base = (secondSlash !== -1) ? preBase.substr(0, secondSlash) : preBase;\n var afterBase = (secondSlash !== -1) ? preBase.substr(secondSlash + 1) : undefined;\n var afterQuestionMark = \"\";\n var host = undefined;\n var port = undefined;\n var hostReplicaSet = undefined;\n var replicaSet = undefined;\n // remove mongodb query params\n if (afterBase && afterBase.indexOf(\"?\") !== -1) {\n // split params to get replica set\n afterQuestionMark = afterBase.substr((afterBase.indexOf(\"?\") + 1), afterBase.length);\n replicaSet = afterQuestionMark.split(\"=\")[1];\n afterBase = afterBase.substr(0, afterBase.indexOf(\"?\"));\n }\n var lastAtSign = base.lastIndexOf(\"@\");\n var usernameAndPassword = base.substr(0, lastAtSign);\n var hostAndPort = base.substr(lastAtSign + 1);\n var username = usernameAndPassword;\n var password = \"\";\n var firstColon = usernameAndPassword.indexOf(\":\");\n if (firstColon !== -1) {\n username = usernameAndPassword.substr(0, firstColon);\n password = usernameAndPassword.substr(firstColon + 1);\n }\n if (replicaSet) {\n hostReplicaSet = hostAndPort;\n }\n else {\n _a = __read(hostAndPort.split(\":\"), 2), host = _a[0], port = _a[1];\n }\n return {\n type: type,\n host: host,\n hostReplicaSet: hostReplicaSet,\n username: decodeURIComponent(username),\n password: decodeURIComponent(password),\n port: port ? parseInt(port) : undefined,\n database: afterBase || undefined,\n replicaSet: replicaSet || undefined\n };\n };\n return DriverUtils;\n}());\nexport { DriverUtils };\n\n//# sourceMappingURL=DriverUtils.js.map\n","import { __read } from \"tslib\";\n/**\n * Provides utilities to transform hydrated and persisted data.\n */\nvar DateUtils = /** @class */ (function () {\n function DateUtils() {\n }\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Normalizes date object hydrated from the database.\n */\n DateUtils.normalizeHydratedDate = function (mixedDate) {\n if (!mixedDate)\n return mixedDate;\n return typeof mixedDate === \"string\" ? new Date(mixedDate) : mixedDate;\n };\n /**\n * Converts given value into date string in a \"YYYY-MM-DD\" format.\n */\n DateUtils.mixedDateToDateString = function (value) {\n if (value instanceof Date)\n return this.formatZerolessValue(value.getFullYear()) + \"-\" + this.formatZerolessValue(value.getMonth() + 1) + \"-\" + this.formatZerolessValue(value.getDate());\n return value;\n };\n /**\n * Converts given value into date object.\n */\n DateUtils.mixedDateToDate = function (mixedDate, toUtc, useMilliseconds) {\n if (toUtc === void 0) { toUtc = false; }\n if (useMilliseconds === void 0) { useMilliseconds = true; }\n var date = typeof mixedDate === \"string\" ? new Date(mixedDate) : mixedDate;\n if (toUtc)\n date = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n if (!useMilliseconds)\n date.setUTCMilliseconds(0);\n return date;\n };\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n DateUtils.mixedDateToTimeString = function (value, skipSeconds) {\n if (skipSeconds === void 0) { skipSeconds = false; }\n if (value instanceof Date)\n return this.formatZerolessValue(value.getHours()) +\n \":\" + this.formatZerolessValue(value.getMinutes()) +\n (!skipSeconds ? \":\" + this.formatZerolessValue(value.getSeconds()) : \"\");\n return value;\n };\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n DateUtils.mixedTimeToDate = function (value) {\n if (typeof value === \"string\") {\n var _a = __read(value.split(\":\"), 3), hours = _a[0], minutes = _a[1], seconds = _a[2];\n var date = new Date();\n if (hours)\n date.setHours(parseInt(hours));\n if (minutes)\n date.setMinutes(parseInt(minutes));\n if (seconds)\n date.setSeconds(parseInt(seconds));\n return date;\n }\n return value;\n };\n /**\n * Converts given string value with \"-\" separator into a \"HH:mm:ss\" format.\n */\n DateUtils.mixedTimeToString = function (value, skipSeconds) {\n if (skipSeconds === void 0) { skipSeconds = false; }\n value = value instanceof Date ? (value.getHours() + \":\" + value.getMinutes() + (!skipSeconds ? \":\" + value.getSeconds() : \"\")) : value;\n if (typeof value === \"string\") {\n return value.split(\":\")\n .map(function (v) { return v.length === 1 ? \"0\" + v : v; }) // append zero at beginning if we have a first-zero-less number\n .join(\":\");\n }\n return value;\n };\n /**\n * Converts given value into datetime string in a \"YYYY-MM-DD HH-mm-ss\" format.\n */\n DateUtils.mixedDateToDatetimeString = function (value, useMilliseconds) {\n if (typeof value === \"string\") {\n value = new Date(value);\n }\n if (value instanceof Date) {\n var finalValue = this.formatZerolessValue(value.getFullYear()) + \"-\" +\n this.formatZerolessValue(value.getMonth() + 1) + \"-\" +\n this.formatZerolessValue(value.getDate()) + \" \" +\n this.formatZerolessValue(value.getHours()) + \":\" +\n this.formatZerolessValue(value.getMinutes()) + \":\" +\n this.formatZerolessValue(value.getSeconds());\n if (useMilliseconds)\n finalValue += \".\" + this.formatMilliseconds(value.getMilliseconds());\n value = finalValue;\n }\n return value;\n };\n /**\n * Converts given value into utc datetime string in a \"YYYY-MM-DD HH-mm-ss.sss\" format.\n */\n DateUtils.mixedDateToUtcDatetimeString = function (value) {\n if (typeof value === \"string\") {\n value = new Date(value);\n }\n if (value instanceof Date) {\n return this.formatZerolessValue(value.getUTCFullYear()) + \"-\" +\n this.formatZerolessValue(value.getUTCMonth() + 1) + \"-\" +\n this.formatZerolessValue(value.getUTCDate()) + \" \" +\n this.formatZerolessValue(value.getUTCHours()) + \":\" +\n this.formatZerolessValue(value.getUTCMinutes()) + \":\" +\n this.formatZerolessValue(value.getUTCSeconds()) + \".\" +\n this.formatMilliseconds(value.getUTCMilliseconds());\n }\n return value;\n };\n /**\n * Converts each item in the given array to string joined by \",\" separator.\n */\n DateUtils.simpleArrayToString = function (value) {\n if (Array.isArray(value)) {\n return value\n .map(function (i) { return String(i); })\n .join(\",\");\n }\n return value;\n };\n /**\n * Converts given string to simple array split by \",\" separator.\n */\n DateUtils.stringToSimpleArray = function (value) {\n if (value instanceof String || typeof value === \"string\") {\n if (value.length > 0) {\n return value.split(\",\");\n }\n else {\n return [];\n }\n }\n return value;\n };\n DateUtils.simpleJsonToString = function (value) {\n return JSON.stringify(value);\n };\n DateUtils.stringToSimpleJson = function (value) {\n return typeof value === \"string\" ? JSON.parse(value) : value;\n };\n DateUtils.simpleEnumToString = function (value) {\n return \"\" + value;\n };\n DateUtils.stringToSimpleEnum = function (value, columnMetadata) {\n if (columnMetadata.enum\n && !isNaN(value)\n && columnMetadata.enum.indexOf(parseInt(value)) >= 0) {\n // convert to number if that exists in poosible enum options\n value = parseInt(value);\n }\n return value;\n };\n // -------------------------------------------------------------------------\n // Private Static Methods\n // -------------------------------------------------------------------------\n /**\n * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n */\n DateUtils.formatZerolessValue = function (value) {\n if (value < 10)\n return \"0\" + value;\n return String(value);\n };\n /**\n * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n */\n DateUtils.formatMilliseconds = function (value) {\n if (value < 10) {\n return \"00\" + value;\n }\n else if (value < 100) {\n return \"0\" + value;\n }\n else {\n return String(value);\n }\n };\n return DateUtils;\n}());\nexport { DateUtils };\n\n//# sourceMappingURL=DateUtils.js.map\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./shared/Counter\"), exports);\n__exportStar(require(\"./shared/DateHelper\"), exports);\n__exportStar(require(\"./shared/Helper\"), exports);\n__exportStar(require(\"./shared/JsonHelper\"), exports);\n__exportStar(require(\"./shared/MigrationHelper\"), exports);\n__exportStar(require(\"./shared/Prioritized\"), exports);\n__exportStar(require(\"./shared/PromiseWithHandlers\"), exports);\n__exportStar(require(\"./shared/Random\"), exports);\n__exportStar(require(\"./shared/XSSHelper\"), exports);\n//# sourceMappingURL=shared.js.map","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","import { __values } from \"tslib\";\nvar ObjectUtils = /** @class */ (function () {\n function ObjectUtils() {\n }\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target The target object to copy to.\n * @param sources One or more source objects from which to copy properties\n */\n ObjectUtils.assign = function (target) {\n var e_1, _a, e_2, _b;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n try {\n for (var sources_1 = __values(sources), sources_1_1 = sources_1.next(); !sources_1_1.done; sources_1_1 = sources_1.next()) {\n var source = sources_1_1.value;\n try {\n for (var _c = (e_2 = void 0, __values(Object.getOwnPropertyNames(source))), _d = _c.next(); !_d.done; _d = _c.next()) {\n var prop = _d.value;\n target[prop] = source[prop];\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (sources_1_1 && !sources_1_1.done && (_a = sources_1.return)) _a.call(sources_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n return ObjectUtils;\n}());\nexport { ObjectUtils };\n\n//# sourceMappingURL=ObjectUtils.js.map\n","/**\n * Table's columns in the database represented in this class.\n */\nvar TableColumn = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableColumn(options) {\n /**\n * Indicates if column is NULL, or is NOT NULL in the database.\n */\n this.isNullable = false;\n /**\n * Indicates if column is auto-generated sequence.\n */\n this.isGenerated = false;\n /**\n * Indicates if column is a primary key.\n */\n this.isPrimary = false;\n /**\n * Indicates if column has unique value.\n */\n this.isUnique = false;\n /**\n * Indicates if column stores array.\n */\n this.isArray = false;\n /**\n * Column type's length. Used only on some column types.\n * For example type = \"string\" and length = \"100\" means that ORM will create a column with type varchar(100).\n */\n this.length = \"\";\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n this.zerofill = false;\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n this.unsigned = false;\n if (options) {\n this.name = options.name;\n this.type = options.type || \"\";\n this.length = options.length || \"\";\n this.width = options.width;\n this.charset = options.charset;\n this.collation = options.collation;\n this.precision = options.precision;\n this.scale = options.scale;\n this.zerofill = options.zerofill || false;\n this.unsigned = this.zerofill ? true : (options.unsigned || false);\n this.default = options.default;\n this.onUpdate = options.onUpdate;\n this.isNullable = options.isNullable || false;\n this.isGenerated = options.isGenerated || false;\n this.generationStrategy = options.generationStrategy;\n this.isPrimary = options.isPrimary || false;\n this.isUnique = options.isUnique || false;\n this.isArray = options.isArray || false;\n this.comment = options.comment;\n this.enum = options.enum;\n this.enumName = options.enumName;\n this.asExpression = options.asExpression;\n this.generatedType = options.generatedType;\n this.spatialFeatureType = options.spatialFeatureType;\n this.srid = options.srid;\n }\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Clones this column to a new column with exact same properties as this column has.\n */\n TableColumn.prototype.clone = function () {\n return new TableColumn({\n name: this.name,\n type: this.type,\n length: this.length,\n width: this.width,\n charset: this.charset,\n collation: this.collation,\n precision: this.precision,\n scale: this.scale,\n zerofill: this.zerofill,\n unsigned: this.unsigned,\n enum: this.enum,\n enumName: this.enumName,\n asExpression: this.asExpression,\n generatedType: this.generatedType,\n default: this.default,\n onUpdate: this.onUpdate,\n isNullable: this.isNullable,\n isGenerated: this.isGenerated,\n generationStrategy: this.generationStrategy,\n isPrimary: this.isPrimary,\n isUnique: this.isUnique,\n isArray: this.isArray,\n comment: this.comment,\n spatialFeatureType: this.spatialFeatureType,\n srid: this.srid\n });\n };\n return TableColumn;\n}());\nexport { TableColumn };\n\n//# sourceMappingURL=TableColumn.js.map\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ViewHelper = void 0;\nclass ViewHelper {\n /**\n * Entfernt alle Children eines Elements\n *\n * @param element\n * @returns {Node}\n */\n static removeAllChildren(element) {\n if (element instanceof Node) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n return element;\n }\n /**\n * Moves the child-Nodes from one element to another\n * @param from\n * @param to\n * @returns {*}\n */\n static moveChildren(from, to) {\n let children = [];\n //Zwischenspeichern der Children, da removeChild die forEach-Schleife durcheinander bringt\n from.childNodes.forEach(child => {\n children.push(child);\n });\n children.forEach(child => {\n from.removeChild(child);\n to.appendChild(child);\n });\n return to;\n }\n static insertAfter(newChild, referenceChild) {\n const parent = referenceChild.parentNode;\n if (parent) {\n if (parent.lastChild === referenceChild) {\n parent.appendChild(newChild);\n }\n else {\n parent.insertBefore(newChild, referenceChild.nextSibling);\n }\n return true;\n }\n return false;\n }\n}\nexports.ViewHelper = ViewHelper;\n//# sourceMappingURL=ViewHelper.js.map","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","import { __read, __spreadArray } from \"tslib\";\n/**\n * Database's table unique constraint stored in this class.\n */\nvar TableUnique = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableUnique(options) {\n /**\n * Columns that contains this constraint.\n */\n this.columnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n TableUnique.prototype.clone = function () {\n return new TableUnique({\n name: this.name,\n columnNames: __spreadArray([], __read(this.columnNames))\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates unique from the unique metadata object.\n */\n TableUnique.create = function (uniqueMetadata) {\n return new TableUnique({\n name: uniqueMetadata.name,\n columnNames: uniqueMetadata.columns.map(function (column) { return column.databaseName; })\n });\n };\n return TableUnique;\n}());\nexport { TableUnique };\n\n//# sourceMappingURL=TableUnique.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { FindOperator } from \"../find-options/FindOperator\";\nimport { ApplyValueTransformers } from \"../util/ApplyValueTransformers\";\n/**\n * This metadata contains all information about entity's column.\n */\nvar ColumnMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ColumnMetadata(options) {\n /**\n * Type's length in the database.\n */\n this.length = \"\";\n /**\n * Indicates if this column is a primary key.\n */\n this.isPrimary = false;\n /**\n * Indicates if this column is generated (auto increment or generated other way).\n */\n this.isGenerated = false;\n /**\n * Indicates if column can contain nulls or not.\n */\n this.isNullable = false;\n /**\n * Indicates if column is selected by query builder or not.\n */\n this.isSelect = true;\n /**\n * Indicates if column is inserted by default or not.\n */\n this.isInsert = true;\n /**\n * Indicates if column allows updates or not.\n */\n this.isUpdate = true;\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n this.zerofill = false;\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n this.unsigned = false;\n /**\n * Indicates if this column is an array.\n */\n this.isArray = false;\n /**\n * Indicates if column is virtual. Virtual columns are not mapped to the entity.\n */\n this.isVirtual = false;\n /**\n * Indicates if column is discriminator. Discriminator columns are not mapped to the entity.\n */\n this.isDiscriminator = false;\n /**\n * Indicates if column is tree-level column. Tree-level columns are used in closure entities.\n */\n this.isTreeLevel = false;\n /**\n * Indicates if this column contains an entity creation date.\n */\n this.isCreateDate = false;\n /**\n * Indicates if this column contains an entity update date.\n */\n this.isUpdateDate = false;\n /**\n * Indicates if this column contains an entity delete date.\n */\n this.isDeleteDate = false;\n /**\n * Indicates if this column contains an entity version.\n */\n this.isVersion = false;\n /**\n * Indicates if this column contains an object id.\n */\n this.isObjectId = false;\n /**\n * Indicates if this column is nested set's left column.\n * Used only in tree entities with nested-set type.\n */\n this.isNestedSetLeft = false;\n /**\n * Indicates if this column is nested set's right column.\n * Used only in tree entities with nested-set type.\n */\n this.isNestedSetRight = false;\n /**\n * Indicates if this column is materialized path's path column.\n * Used only in tree entities with materialized path type.\n */\n this.isMaterializedPath = false;\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n this.referencedColumn = options.referencedColumn;\n if (options.args.target)\n this.target = options.args.target;\n if (options.args.propertyName)\n this.propertyName = options.args.propertyName;\n if (options.args.options.name)\n this.givenDatabaseName = options.args.options.name;\n if (options.args.options.type)\n this.type = options.args.options.type;\n if (options.args.options.length)\n this.length = options.args.options.length ? options.args.options.length.toString() : \"\";\n if (options.args.options.width)\n this.width = options.args.options.width;\n if (options.args.options.charset)\n this.charset = options.args.options.charset;\n if (options.args.options.collation)\n this.collation = options.args.options.collation;\n if (options.args.options.primary)\n this.isPrimary = options.args.options.primary;\n if (options.args.options.default === null) // to make sure default: null is the same as nullable: true\n this.isNullable = true;\n if (options.args.options.nullable !== undefined)\n this.isNullable = options.args.options.nullable;\n if (options.args.options.select !== undefined)\n this.isSelect = options.args.options.select;\n if (options.args.options.insert !== undefined)\n this.isInsert = options.args.options.insert;\n if (options.args.options.update !== undefined)\n this.isUpdate = options.args.options.update;\n if (options.args.options.readonly !== undefined)\n this.isUpdate = !options.args.options.readonly;\n if (options.args.options.comment)\n this.comment = options.args.options.comment;\n if (options.args.options.default !== undefined)\n this.default = options.args.options.default;\n if (options.args.options.onUpdate)\n this.onUpdate = options.args.options.onUpdate;\n if (options.args.options.scale !== null && options.args.options.scale !== undefined)\n this.scale = options.args.options.scale;\n if (options.args.options.zerofill) {\n this.zerofill = options.args.options.zerofill;\n this.unsigned = true; // if you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n }\n if (options.args.options.unsigned)\n this.unsigned = options.args.options.unsigned;\n if (options.args.options.precision !== undefined)\n this.precision = options.args.options.precision;\n if (options.args.options.enum) {\n if (options.args.options.enum instanceof Object && !Array.isArray(options.args.options.enum)) {\n this.enum = Object.keys(options.args.options.enum)\n .filter(function (key) { return isNaN(+key); }) // remove numeric keys - typescript numeric enum types generate them\n .map(function (key) { return options.args.options.enum[key]; });\n }\n else {\n this.enum = options.args.options.enum;\n }\n }\n if (options.args.options.enumName) {\n this.enumName = options.args.options.enumName;\n }\n if (options.args.options.asExpression) {\n this.asExpression = options.args.options.asExpression;\n this.generatedType = options.args.options.generatedType ? options.args.options.generatedType : \"VIRTUAL\";\n }\n if (options.args.options.hstoreType)\n this.hstoreType = options.args.options.hstoreType;\n if (options.args.options.array)\n this.isArray = options.args.options.array;\n if (options.args.mode) {\n this.isVirtual = options.args.mode === \"virtual\";\n this.isTreeLevel = options.args.mode === \"treeLevel\";\n this.isCreateDate = options.args.mode === \"createDate\";\n this.isUpdateDate = options.args.mode === \"updateDate\";\n this.isDeleteDate = options.args.mode === \"deleteDate\";\n this.isVersion = options.args.mode === \"version\";\n this.isObjectId = options.args.mode === \"objectId\";\n }\n if (options.args.options.transformer)\n this.transformer = options.args.options.transformer;\n if (options.args.options.spatialFeatureType)\n this.spatialFeatureType = options.args.options.spatialFeatureType;\n if (options.args.options.srid !== undefined)\n this.srid = options.args.options.srid;\n if (this.isTreeLevel)\n this.type = options.connection.driver.mappedDataTypes.treeLevel;\n if (this.isCreateDate) {\n if (!this.type)\n this.type = options.connection.driver.mappedDataTypes.createDate;\n if (!this.default)\n this.default = function () { return options.connection.driver.mappedDataTypes.createDateDefault; };\n if (this.precision === undefined && options.connection.driver.mappedDataTypes.createDatePrecision)\n this.precision = options.connection.driver.mappedDataTypes.createDatePrecision;\n }\n if (this.isUpdateDate) {\n if (!this.type)\n this.type = options.connection.driver.mappedDataTypes.updateDate;\n if (!this.default)\n this.default = function () { return options.connection.driver.mappedDataTypes.updateDateDefault; };\n if (!this.onUpdate)\n this.onUpdate = options.connection.driver.mappedDataTypes.updateDateDefault;\n if (this.precision === undefined && options.connection.driver.mappedDataTypes.updateDatePrecision)\n this.precision = options.connection.driver.mappedDataTypes.updateDatePrecision;\n }\n if (this.isDeleteDate) {\n if (!this.type)\n this.type = options.connection.driver.mappedDataTypes.deleteDate;\n if (!this.isNullable)\n this.isNullable = options.connection.driver.mappedDataTypes.deleteDateNullable;\n if (this.precision === undefined && options.connection.driver.mappedDataTypes.deleteDatePrecision)\n this.precision = options.connection.driver.mappedDataTypes.deleteDatePrecision;\n }\n if (this.isVersion)\n this.type = options.connection.driver.mappedDataTypes.version;\n if (options.closureType)\n this.closureType = options.closureType;\n if (options.nestedSetLeft)\n this.isNestedSetLeft = options.nestedSetLeft;\n if (options.nestedSetRight)\n this.isNestedSetRight = options.nestedSetRight;\n if (options.materializedPath)\n this.isMaterializedPath = options.materializedPath;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Creates entity id map from the given entity ids array.\n */\n ColumnMetadata.prototype.createValueMap = function (value, useDatabaseName) {\n var _a;\n var _this = this;\n if (useDatabaseName === void 0) { useDatabaseName = false; }\n // extract column value from embeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object and return it in a\n // { data: { information: { counters: { id: ... } } } } format\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = __spreadArray([], __read(this.embeddedMetadata.parentPropertyNames));\n // now need to access post[data][information][counters] to get column value from the counters\n // and on each step we need to create complex literal object, e.g. first { data },\n // then { data: { information } }, then { data: { information: { counters } } },\n // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } }\n // this recursive function helps doing that\n var extractEmbeddedColumnValue_1 = function (propertyNames, map) {\n var propertyName = propertyNames.shift();\n if (propertyName) {\n map[propertyName] = {};\n extractEmbeddedColumnValue_1(propertyNames, map[propertyName]);\n return map;\n }\n // this is bugfix for #720 when increment number is bigint we need to make sure its a string\n if ((_this.generationStrategy === \"increment\" || _this.generationStrategy === \"rowid\") && _this.type === \"bigint\" && value !== null)\n value = String(value);\n map[useDatabaseName ? _this.databaseName : _this.propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_1(propertyNames, {});\n }\n else { // no embeds - no problems. Simply return column property name and its value of the entity\n // this is bugfix for #720 when increment number is bigint we need to make sure its a string\n if ((this.generationStrategy === \"increment\" || this.generationStrategy === \"rowid\") && this.type === \"bigint\" && value !== null)\n value = String(value);\n return _a = {}, _a[useDatabaseName ? this.databaseName : this.propertyName] = value, _a;\n }\n };\n /**\n * Extracts column value and returns its column name with this value in a literal object.\n * If column is in embedded (or recursive embedded) it returns complex literal object.\n *\n * Examples what this method can return depend if this column is in embeds.\n * { id: 1 } or { title: \"hello\" }, { counters: { code: 1 } }, { data: { information: { counters: { code: 1 } } } }\n */\n ColumnMetadata.prototype.getEntityValueMap = function (entity, options) {\n var _a, _b;\n var _this = this;\n var returnNulls = false; // options && options.skipNulls === false ? false : true; // todo: remove if current will not bring problems, uncomment if it will.\n // extract column value from embeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object and return it in a\n // { data: { information: { counters: { id: ... } } } } format\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = __spreadArray([], __read(this.embeddedMetadata.parentPropertyNames));\n // now need to access post[data][information][counters] to get column value from the counters\n // and on each step we need to create complex literal object, e.g. first { data },\n // then { data: { information } }, then { data: { information: { counters } } },\n // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } }\n // this recursive function helps doing that\n var extractEmbeddedColumnValue_2 = function (propertyNames, value, map) {\n var propertyName = propertyNames.shift();\n if (value === undefined)\n return map;\n if (propertyName) {\n var submap = {};\n extractEmbeddedColumnValue_2(propertyNames, value[propertyName], submap);\n if (Object.keys(submap).length > 0) {\n map[propertyName] = submap;\n }\n return map;\n }\n if (value[_this.propertyName] !== undefined && (returnNulls === false || value[_this.propertyName] !== null))\n map[_this.propertyName] = value[_this.propertyName];\n return map;\n };\n var map = {};\n extractEmbeddedColumnValue_2(propertyNames, entity, map);\n return Object.keys(map).length > 0 ? map : undefined;\n }\n else { // no embeds - no problems. Simply return column property name and its value of the entity\n if (this.relationMetadata && entity[this.relationMetadata.propertyName] && entity[this.relationMetadata.propertyName] instanceof Object) {\n var map = this.relationMetadata.joinColumns.reduce(function (map, joinColumn) {\n var value = joinColumn.referencedColumn.getEntityValueMap(entity[_this.relationMetadata.propertyName]);\n if (value === undefined)\n return map;\n return OrmUtils.mergeDeep(map, value);\n }, {});\n if (Object.keys(map).length > 0)\n return _a = {}, _a[this.propertyName] = map, _a;\n return undefined;\n }\n else {\n if (entity[this.propertyName] !== undefined && (returnNulls === false || entity[this.propertyName] !== null))\n return _b = {}, _b[this.propertyName] = entity[this.propertyName], _b;\n return undefined;\n }\n }\n };\n /**\n * Extracts column value from the given entity.\n * If column is in embedded (or recursive embedded) it extracts its value from there.\n */\n ColumnMetadata.prototype.getEntityValue = function (entity, transform) {\n if (transform === void 0) { transform = false; }\n if (entity === undefined || entity === null)\n return undefined;\n // extract column value from embeddeds of entity if column is in embedded\n var value = undefined;\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = __spreadArray([], __read(this.embeddedMetadata.parentPropertyNames));\n // next we need to access post[data][information][counters][this.propertyName] to get column value from the counters\n // this recursive function takes array of generated property names and gets the post[data][information][counters] embed\n var extractEmbeddedColumnValue_3 = function (propertyNames, value) {\n var propertyName = propertyNames.shift();\n return propertyName && value ? extractEmbeddedColumnValue_3(propertyNames, value[propertyName]) : value;\n };\n // once we get nested embed object we get its column, e.g. post[data][information][counters][this.propertyName]\n var embeddedObject = extractEmbeddedColumnValue_3(propertyNames, entity);\n if (embeddedObject) {\n if (this.relationMetadata && this.referencedColumn) {\n var relatedEntity = this.relationMetadata.getEntityValue(embeddedObject);\n if (relatedEntity && relatedEntity instanceof Object && !(relatedEntity instanceof FindOperator)) {\n value = this.referencedColumn.getEntityValue(relatedEntity);\n }\n else if (embeddedObject[this.propertyName] && embeddedObject[this.propertyName] instanceof Object && !(embeddedObject[this.propertyName] instanceof FindOperator)) {\n value = this.referencedColumn.getEntityValue(embeddedObject[this.propertyName]);\n }\n else {\n value = embeddedObject[this.propertyName];\n }\n }\n else if (this.referencedColumn) {\n value = this.referencedColumn.getEntityValue(embeddedObject[this.propertyName]);\n }\n else {\n value = embeddedObject[this.propertyName];\n }\n }\n }\n else { // no embeds - no problems. Simply return column name by property name of the entity\n if (this.relationMetadata && this.referencedColumn) {\n var relatedEntity = this.relationMetadata.getEntityValue(entity);\n if (relatedEntity && relatedEntity instanceof Object && !(relatedEntity instanceof FindOperator) && !(relatedEntity instanceof Function)) {\n value = this.referencedColumn.getEntityValue(relatedEntity);\n }\n else if (entity[this.propertyName] && entity[this.propertyName] instanceof Object && !(entity[this.propertyName] instanceof FindOperator) && !(entity[this.propertyName] instanceof Function)) {\n value = this.referencedColumn.getEntityValue(entity[this.propertyName]);\n }\n else {\n value = entity[this.propertyName];\n }\n }\n else if (this.referencedColumn) {\n value = this.referencedColumn.getEntityValue(entity[this.propertyName]);\n }\n else {\n value = entity[this.propertyName];\n }\n }\n if (transform && this.transformer)\n value = ApplyValueTransformers.transformTo(this.transformer, value);\n return value;\n };\n /**\n * Sets given entity's column value.\n * Using of this method helps to set entity relation's value of the lazy and non-lazy relations.\n */\n ColumnMetadata.prototype.setEntityValue = function (entity, value) {\n var _this = this;\n if (this.embeddedMetadata) {\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var extractEmbeddedColumnValue_4 = function (embeddedMetadatas, map) {\n // if (!object[embeddedMetadata.propertyName])\n // object[embeddedMetadata.propertyName] = embeddedMetadata.create();\n var embeddedMetadata = embeddedMetadatas.shift();\n if (embeddedMetadata) {\n if (!map[embeddedMetadata.propertyName])\n map[embeddedMetadata.propertyName] = embeddedMetadata.create();\n extractEmbeddedColumnValue_4(embeddedMetadatas, map[embeddedMetadata.propertyName]);\n return map;\n }\n map[_this.propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_4(__spreadArray([], __read(this.embeddedMetadata.embeddedMetadataTree)), entity);\n }\n else {\n // we write a deep object in this entity only if the column is virtual\n // because if its not virtual it means the user defined a real column for this relation\n // also we don't do it if column is inside a junction table\n if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.propertyName !== this.propertyName) {\n if (!(this.propertyName in entity)) {\n entity[this.propertyName] = {};\n }\n entity[this.propertyName][this.referencedColumn.propertyName] = value;\n }\n else {\n entity[this.propertyName] = value;\n }\n }\n };\n // ---------------------------------------------------------------------\n // Builder Methods\n // ---------------------------------------------------------------------\n ColumnMetadata.prototype.build = function (connection) {\n this.propertyPath = this.buildPropertyPath();\n this.propertyAliasName = this.propertyPath.replace(\".\", \"_\");\n this.databaseName = this.buildDatabaseName(connection);\n this.databasePath = this.buildDatabasePath();\n this.databaseNameWithoutPrefixes = connection.namingStrategy.columnName(this.propertyName, this.givenDatabaseName, []);\n return this;\n };\n ColumnMetadata.prototype.buildPropertyPath = function () {\n var path = \"\";\n if (this.embeddedMetadata && this.embeddedMetadata.parentPropertyNames.length)\n path = this.embeddedMetadata.parentPropertyNames.join(\".\") + \".\";\n path += this.propertyName;\n // we add reference column to property path only if this column is virtual\n // because if its not virtual it means user defined a real column for this relation\n // also we don't do it if column is inside a junction table\n if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.propertyName !== this.propertyName)\n path += \".\" + this.referencedColumn.propertyName;\n return path;\n };\n ColumnMetadata.prototype.buildDatabasePath = function () {\n var path = \"\";\n if (this.embeddedMetadata && this.embeddedMetadata.parentPropertyNames.length)\n path = this.embeddedMetadata.parentPropertyNames.join(\".\") + \".\";\n path += this.databaseName;\n // we add reference column to property path only if this column is virtual\n // because if its not virtual it means user defined a real column for this relation\n // also we don't do it if column is inside a junction table\n if (!this.entityMetadata.isJunction && this.isVirtual && this.referencedColumn && this.referencedColumn.databaseName !== this.databaseName)\n path += \".\" + this.referencedColumn.databaseName;\n return path;\n };\n ColumnMetadata.prototype.buildDatabaseName = function (connection) {\n var propertyNames = this.embeddedMetadata ? this.embeddedMetadata.parentPrefixes : [];\n if (connection.driver instanceof MongoDriver) // we don't need to include embedded name for the mongodb column names\n propertyNames = [];\n return connection.namingStrategy.columnName(this.propertyName, this.givenDatabaseName, propertyNames);\n };\n return ColumnMetadata;\n}());\nexport { ColumnMetadata };\n\n//# sourceMappingURL=ColumnMetadata.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\nconst NativeStoragePromise_1 = require(\"./NativeStoragePromise\");\nconst Helper_1 = require(\"./Legacy/Helper\");\nconst Translator_1 = require(\"../../shared/Translator\");\n/**\n * Singleton-Klasse zum Übersetzen von Text-Inhalten\n */\nclass Translator extends Translator_1.Translator {\n /**\n * Erstellt einen neuen Translator\n * @param config\n */\n constructor(config) {\n super(config);\n config = Helper_1.Helper.nonNull(config, {});\n this._currentLanguage = config.currentLanguage || this._fallbackLanguage;\n this._nativeStorageKey = config.nativeStorageKey || \"language\";\n this._translationClass = config.translationClass || \"translation\";\n this._initPromise = this.loadUserLanguage().then(userLanguage => this.setLanguage(userLanguage.toLowerCase()));\n }\n /**\n * Setzt die neue Sprache, updated alle Übersetzungen. Speichert danach die aktuelle Sprache in NativeStorage\n * @param language\n */\n setLanguage(language) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._currentLanguage === language) {\n yield this.updateTranslations();\n return;\n }\n if (!this._translations[language]) {\n return;\n }\n if (typeof document !== 'undefined') {\n document.getElementsByTagName(\"html\")[0].setAttribute(\"lang\", language);\n }\n this._currentLanguage = language;\n yield this.updateTranslations();\n //zum schluss => Falls setzen des Keys fehlschlägt, wird trotzdem noch übersetzt\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(this._nativeStorageKey, this._currentLanguage);\n });\n }\n /**\n * Übersetzt sofort einen Key in die aktuelle Sprache\n * @param key\n * @param args\n * @returns {*}\n */\n translate(key, args, language) {\n return super.translate(key, args, Helper_1.Helper.nonNull(language, this._currentLanguage));\n }\n /**\n * Fügt eine Callback hinzu, die aufgerufen wird, sobald die Seite übersetzt wird. Sollte genutzt werden, um Teile\n * zu übersetzen, die nicht per HTML übersetzt werden können, die der Document Title\n *\n * wenn callImmediately true ist (default), wird die Callback sofort einmal ausgeführt\n *\n * Gibt die CallbackId zurück\n *\n * @param callback\n * @param callImmediately\n * @returns {number}\n */\n addTranslationCallback(callback, callImmediately) {\n callImmediately = Helper_1.Helper.nonNull(callImmediately, true);\n this._lastTranslationCallbackId++;\n this._translationCallbacks.set(this._lastTranslationCallbackId, callback);\n if (callImmediately) {\n callback();\n }\n return this._lastTranslationCallbackId;\n }\n /**\n * Entfernt die Callback anhand der gegebenen ID\n *\n * @param callbackId\n */\n removeTranslationCallback(callbackId) {\n this._translationCallbacks.delete(callbackId);\n }\n /**\n * Updated die aktuellen übersetzungen\n */\n updateTranslations(baseElement) {\n return __awaiter(this, void 0, void 0, function* () {\n baseElement = Helper_1.Helper.nonNull(baseElement, document);\n if (typeof baseElement !== 'undefined') {\n let elements = baseElement.getElementsByClassName(this._translationClass);\n for (let i = 0, max = elements.length; i < max; i++) {\n let key = (Translator._isValid(elements[i].dataset[\"translation\"]) ? elements[i].dataset[\"translation\"] : (elements[i].innerText || \"\"));\n if (key !== \"\" && !elements[i].dataset[\"onlyTranslateAttributes\"]) {\n try {\n let translation = this.translate(key, (elements[i].dataset[\"translationArgs\"] !== undefined) ? JSON.parse(elements[i].dataset[\"translationArgs\"]) : undefined);\n if (elements[i].dataset[\"translationUseText\"] === \"1\") {\n elements[i].innerText = translation;\n }\n else {\n elements[i].innerHTML = translation;\n }\n elements[i].dataset[\"translation\"] = key;\n }\n catch (err) {\n console.error(\"wrong configured translation: \" + err);\n }\n }\n //Übersetzung von Attributen\n for (let k in elements[i].dataset) {\n if (k.startsWith(\"translation\") && !k.endsWith(\"Args\")) {\n try {\n elements[i][k.substr(11).toLowerCase()] = this.translate(elements[i].dataset[k], (elements[i].dataset[k + \"Args\"] !== undefined) ? JSON.parse(elements[i].dataset[k + \"Args\"]) : undefined);\n }\n catch (err) {\n console.error(\"wrong configured translation: \" + err);\n }\n }\n }\n }\n }\n //Call translation callbacks\n yield Helper_1.Helper.asyncForEach(this._translationCallbacks, (callback) => __awaiter(this, void 0, void 0, function* () { return callback(baseElement); }));\n // this._translationCallbacks.forEach(callback => callback(baseElement));\n });\n }\n /**\n * Lädt die im NativeStorage gespeicherte Sprache oder - falls diese nicht vorhanden ist - die vom User untersütze Sprache im Browser\n * @returns {Promise<*>}\n */\n loadUserLanguage() {\n return __awaiter(this, void 0, void 0, function* () {\n let userLanguage = yield NativeStoragePromise_1.NativeStoragePromise.getItem(this._nativeStorageKey);\n if (!Translator._isValid(userLanguage) || !(userLanguage in this._translations)) {\n let userLanguages = [];\n if (navigator.language !== undefined) {\n userLanguages.push(navigator.language);\n }\n if (\"languages\" in navigator) {\n //.slice(0) klont das Array. Behebt einen Bug in Firefox\n userLanguages = navigator.languages.slice(0);\n }\n //sicherstellen, dass überhaupt eine Sprache gefunden wird\n userLanguages.push(this._fallbackLanguage);\n // if (userLanguages !== undefined) {\n for (let i = 0, numLanguages = userLanguages.length; i < numLanguages; i++) {\n if (userLanguages[i] in this._translations) {\n userLanguage = userLanguages[i];\n break;\n }\n }\n // }\n }\n return userLanguage;\n });\n }\n /**\n * Erstellt eine neue Übersetzung, welche auch übersetzt wird, wenn die Sprache geändert wird\n * @param key\n * @param args\n * @param tag\n * @param useText\n * @returns {any}\n */\n makePersistentTranslation(key, args, tag, useText) {\n useText = Helper_1.Helper.nonNull(useText, tag, args, false);\n tag = tag || \"span\";\n if (typeof document !== 'undefined') {\n let htmlElem = document.createElement(tag);\n htmlElem.dataset[\"translation\"] = key;\n htmlElem.classList.add(this._translationClass);\n if (args !== undefined) {\n htmlElem.dataset[\"translationArgs\"] = JSON.stringify(args);\n }\n if (useText === true) {\n htmlElem.innerText = this.translate(key, args);\n htmlElem.dataset[\"translationUseText\"] = \"1\";\n }\n else {\n htmlElem.innerHTML = this.translate(key, args);\n }\n return htmlElem;\n }\n }\n getTranslationClass() {\n return this._translationClass;\n }\n getCurrentLanguage() {\n return this._currentLanguage;\n }\n static getInstance() {\n return Translator_1.Translator.getInstance();\n }\n static setLanguage(language) {\n return __awaiter(this, void 0, void 0, function* () {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.setLanguage(language);\n }\n });\n }\n static makePersistentTranslation(key, args, tag, useText) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.makePersistentTranslation(key, args, tag, useText);\n }\n }\n static addTranslationCallback(callback, callImmediately) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.addTranslationCallback(callback, callImmediately);\n }\n }\n static removeTranslationCallback(callbackId) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.removeTranslationCallback(callbackId);\n }\n }\n static updateTranslations(baseElement) {\n return __awaiter(this, void 0, void 0, function* () {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.updateTranslations(baseElement);\n }\n });\n }\n static init(config) {\n Translator_1.Translator.instance = new Translator(config);\n }\n}\nexports.Translator = Translator;\nTranslator._translations = {};\nTranslator.logMissingTranslations = true;\nTranslator.instance = null;\n//# sourceMappingURL=Translator.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.App = void 0;\n/**\n * Eine Klasse, welche als Ursprung für die App genutzt wird\n */\nconst Helper_1 = require(\"./Legacy/Helper\");\nconst SiteManager_1 = require(\"./Context/SiteManager\");\nclass App {\n /**\n * Erstellt eine neue App, speichert ein internes Promise, welches resolved wird, sobald das deviceready-Event gefeuert wird\n */\n constructor() {\n this._resolver = { resolve: null, reject: null };\n this._readyPromise = new Promise(r => document.addEventListener(\"deviceready\", r, false));\n this._deepLinks = {};\n this._siteManager = SiteManager_1.SiteManager.getInstance();\n }\n addDeepLink(link, siteConstructor) {\n this._deepLinks[link] = siteConstructor;\n }\n startSite(site, args) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._siteManager) {\n return this._siteManager.startSite(site, args);\n }\n });\n }\n static setLogo(logo) {\n this._logo = logo;\n }\n static getLogo() {\n return this._logo;\n }\n start(startSiteConstructor) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.ready();\n let initialSiteConstructor = startSiteConstructor;\n let params = App._getStartParams();\n this.startingSite = initialSiteConstructor;\n this.startingSiteParameters = params;\n if (Helper_1.Helper.isNotNull(params[\"s\"])) {\n startSiteConstructor = Helper_1.Helper.nonNull(this._deepLinks[params[\"s\"]], startSiteConstructor);\n delete params[\"s\"];\n }\n this.startingSiteParameters = null;\n let siteManager = this._siteManager;\n siteManager.init(\"site\", this._deepLinks);\n Helper_1.Helper.removeAllChildren(document.getElementById(\"site\"));\n siteManager.startSite(startSiteConstructor, params);\n siteManager.setAppEndedListener(manager => {\n manager.startSite(initialSiteConstructor);\n });\n });\n }\n /**\n * Startet die erste Seite\n */\n startStartingSite() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.startingSite) {\n return this.startSite(this.startingSite, this.startingSiteParameters);\n }\n });\n }\n /**\n * Führt die Callback aus, sobald das interne Promise aufgelöst wird und App._promises fertig sind oder gibt das interne Promise zurück\n *\n * @param callback\n * @returns {Promise<*>}\n */\n ready(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n let promise = this._readyPromise.then(() => {\n App._resolver.resolve(this);\n return Promise.all(App._promises);\n });\n if (callback) {\n return promise.then(callback);\n }\n else {\n return promise;\n }\n });\n }\n static addInitialization(callbackOrPromise) {\n if (typeof callbackOrPromise === \"function\") {\n let promise = callbackOrPromise;\n callbackOrPromise = App._mainPromise.then((app) => {\n return promise(app);\n });\n }\n App._promises.push(callbackOrPromise);\n }\n static _getStartParams() {\n return Object.assign(App._extractParams(window.location.search.substr(1)), App._startParams);\n }\n static _extractParams(paramString) {\n if (Helper_1.Helper.isNull(paramString)) {\n return null;\n }\n let result = {}, tmp = [];\n let items = paramString.split(\"&\");\n for (let index = 0; index < items.length; index++) {\n tmp = items[index].split(\"=\");\n if (tmp[0].trim().length > 0) {\n result[tmp[0]] = decodeURIComponent(tmp[1]);\n }\n }\n return result;\n }\n static setStartParam(name, value) {\n this._startParams[name] = value;\n }\n}\nexports.App = App;\nApp._promises = [];\nApp._resolver = {\n resolve: null,\n reject: null,\n};\nApp._mainPromise = new Promise((res, rej) => {\n App._resolver = {\n resolve: res,\n reject: rej,\n };\n});\nApp._startParams = {};\n//# sourceMappingURL=App.js.map","import { __extends } from \"tslib\";\n/**\n */\nvar QueryRunnerAlreadyReleasedError = /** @class */ (function (_super) {\n __extends(QueryRunnerAlreadyReleasedError, _super);\n function QueryRunnerAlreadyReleasedError() {\n var _this = _super.call(this) || this;\n _this.name = \"QueryRunnerAlreadyReleasedError\";\n Object.setPrototypeOf(_this, QueryRunnerAlreadyReleasedError.prototype);\n _this.message = \"Query runner already released. Cannot run queries anymore.\";\n return _this;\n }\n return QueryRunnerAlreadyReleasedError;\n}(Error));\nexport { QueryRunnerAlreadyReleasedError };\n\n//# sourceMappingURL=QueryRunnerAlreadyReleasedError.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { SapDriver } from \"../driver/sap/SapDriver\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { CannotCreateEntityIdMapError } from \"../error/CannotCreateEntityIdMapError\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport { shorten } from \"../util/StringUtils\";\n/**\n * Contains all entity metadata.\n */\nvar EntityMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function EntityMetadata(options) {\n /**\n * Children entity metadatas. Used in inheritance patterns.\n */\n this.childEntityMetadatas = [];\n /**\n * All \"inheritance tree\" from a target entity.\n * For example for target Post < ContentModel < Unit it will be an array of [Post, ContentModel, Unit].\n * It also contains child entities for single table inheritance.\n */\n this.inheritanceTree = [];\n /**\n * Table type. Tables can be abstract, closure, junction, embedded, etc.\n */\n this.tableType = \"regular\";\n /**\n * Enables Sqlite \"WITHOUT ROWID\" modifier for the \"CREATE TABLE\" statement\n */\n this.withoutRowid = false;\n /**\n * Indicates if schema will be synchronized for this entity or not.\n */\n this.synchronize = true;\n /**\n * Checks if there any non-nullable column exist in this entity.\n */\n this.hasNonNullableRelations = false;\n /**\n * Indicates if this entity metadata of a junction table, or not.\n * Junction table is a table created by many-to-many relationship.\n *\n * Its also possible to understand if entity is junction via tableType.\n */\n this.isJunction = false;\n /**\n * Checks if this table is a junction table of the closure table.\n * This type is for tables that contain junction metadata of the closure tables.\n */\n this.isClosureJunction = false;\n /**\n * Checks if entity's table has multiple primary columns.\n */\n this.hasMultiplePrimaryKeys = false;\n /**\n * Indicates if this entity metadata has uuid generated columns.\n */\n this.hasUUIDGeneratedColumns = false;\n /**\n * Entity's column metadatas defined by user.\n */\n this.ownColumns = [];\n /**\n * Columns of the entity, including columns that are coming from the embeddeds of this entity.\n */\n this.columns = [];\n /**\n * Ancestor columns used only in closure junction tables.\n */\n this.ancestorColumns = [];\n /**\n * Descendant columns used only in closure junction tables.\n */\n this.descendantColumns = [];\n /**\n * All columns except for virtual columns.\n */\n this.nonVirtualColumns = [];\n /**\n * In the case if this entity metadata is junction table's entity metadata,\n * this will contain all referenced columns of owner entity.\n */\n this.ownerColumns = [];\n /**\n * In the case if this entity metadata is junction table's entity metadata,\n * this will contain all referenced columns of inverse entity.\n */\n this.inverseColumns = [];\n /**\n * Gets the column with generated flag.\n */\n this.generatedColumns = [];\n /**\n * Gets the primary columns.\n */\n this.primaryColumns = [];\n /**\n * Entity's relation metadatas.\n */\n this.ownRelations = [];\n /**\n * Relations of the entity, including relations that are coming from the embeddeds of this entity.\n */\n this.relations = [];\n /**\n * List of eager relations this metadata has.\n */\n this.eagerRelations = [];\n /**\n * List of eager relations this metadata has.\n */\n this.lazyRelations = [];\n /**\n * Gets only one-to-one relations of the entity.\n */\n this.oneToOneRelations = [];\n /**\n * Gets only owner one-to-one relations of the entity.\n */\n this.ownerOneToOneRelations = [];\n /**\n * Gets only one-to-many relations of the entity.\n */\n this.oneToManyRelations = [];\n /**\n * Gets only many-to-one relations of the entity.\n */\n this.manyToOneRelations = [];\n /**\n * Gets only many-to-many relations of the entity.\n */\n this.manyToManyRelations = [];\n /**\n * Gets only owner many-to-many relations of the entity.\n */\n this.ownerManyToManyRelations = [];\n /**\n * Gets only owner one-to-one and many-to-one relations.\n */\n this.relationsWithJoinColumns = [];\n /**\n * Entity's relation id metadatas.\n */\n this.relationIds = [];\n /**\n * Entity's relation id metadatas.\n */\n this.relationCounts = [];\n /**\n * Entity's foreign key metadatas.\n */\n this.foreignKeys = [];\n /**\n * Entity's embedded metadatas.\n */\n this.embeddeds = [];\n /**\n * All embeddeds - embeddeds from this entity metadata and from all child embeddeds, etc.\n */\n this.allEmbeddeds = [];\n /**\n * Entity's own indices.\n */\n this.ownIndices = [];\n /**\n * Entity's index metadatas.\n */\n this.indices = [];\n /**\n * Entity's unique metadatas.\n */\n this.uniques = [];\n /**\n * Entity's own uniques.\n */\n this.ownUniques = [];\n /**\n * Entity's check metadatas.\n */\n this.checks = [];\n /**\n * Entity's exclusion metadatas.\n */\n this.exclusions = [];\n /**\n * Entity's own listener metadatas.\n */\n this.ownListeners = [];\n /**\n * Entity listener metadatas.\n */\n this.listeners = [];\n /**\n * Listener metadatas with \"AFTER LOAD\" type.\n */\n this.afterLoadListeners = [];\n /**\n * Listener metadatas with \"AFTER INSERT\" type.\n */\n this.beforeInsertListeners = [];\n /**\n * Listener metadatas with \"AFTER INSERT\" type.\n */\n this.afterInsertListeners = [];\n /**\n * Listener metadatas with \"AFTER UPDATE\" type.\n */\n this.beforeUpdateListeners = [];\n /**\n * Listener metadatas with \"AFTER UPDATE\" type.\n */\n this.afterUpdateListeners = [];\n /**\n * Listener metadatas with \"AFTER REMOVE\" type.\n */\n this.beforeRemoveListeners = [];\n /**\n * Listener metadatas with \"AFTER REMOVE\" type.\n */\n this.afterRemoveListeners = [];\n this.connection = options.connection;\n this.inheritanceTree = options.inheritanceTree || [];\n this.inheritancePattern = options.inheritancePattern;\n this.treeType = options.tableTree ? options.tableTree.type : undefined;\n this.treeOptions = options.tableTree ? options.tableTree.options : undefined;\n this.parentClosureEntityMetadata = options.parentClosureEntityMetadata;\n this.tableMetadataArgs = options.args;\n this.target = this.tableMetadataArgs.target;\n this.tableType = this.tableMetadataArgs.type;\n this.expression = this.tableMetadataArgs.expression;\n this.withoutRowid = this.tableMetadataArgs.withoutRowid;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new entity.\n */\n EntityMetadata.prototype.create = function (queryRunner) {\n var _this = this;\n // if target is set to a function (e.g. class) that can be created then create it\n var ret;\n if (this.target instanceof Function) {\n ret = new this.target();\n this.lazyRelations.forEach(function (relation) { return _this.connection.relationLoader.enableLazyLoad(relation, ret, queryRunner); });\n return ret;\n }\n // otherwise simply return a new empty object\n var newObject = {};\n this.lazyRelations.forEach(function (relation) { return _this.connection.relationLoader.enableLazyLoad(relation, newObject, queryRunner); });\n return newObject;\n };\n /**\n * Checks if given entity has an id.\n */\n EntityMetadata.prototype.hasId = function (entity) {\n if (!entity)\n return false;\n return this.primaryColumns.every(function (primaryColumn) {\n var value = primaryColumn.getEntityValue(entity);\n return value !== null && value !== undefined && value !== \"\";\n });\n };\n /**\n * Checks if given entity / object contains ALL primary keys entity must have.\n * Returns true if it contains all of them, false if at least one of them is not defined.\n */\n EntityMetadata.prototype.hasAllPrimaryKeys = function (entity) {\n return this.primaryColumns.every(function (primaryColumn) {\n var value = primaryColumn.getEntityValue(entity);\n return value !== null && value !== undefined;\n });\n };\n /**\n * Ensures that given object is an entity id map.\n * If given id is an object then it means its already id map.\n * If given id isn't an object then it means its a value of the id column\n * and it creates a new id map with this value and name of the primary column.\n */\n EntityMetadata.prototype.ensureEntityIdMap = function (id) {\n if (id instanceof Object)\n return id;\n if (this.hasMultiplePrimaryKeys)\n throw new CannotCreateEntityIdMapError(this, id);\n return this.primaryColumns[0].createValueMap(id);\n };\n /**\n * Gets primary keys of the entity and returns them in a literal object.\n * For example, for Post{ id: 1, title: \"hello\" } where id is primary it will return { id: 1 }\n * For multiple primary keys it returns multiple keys in object.\n * For primary keys inside embeds it returns complex object literal with keys in them.\n */\n EntityMetadata.prototype.getEntityIdMap = function (entity) {\n if (!entity)\n return undefined;\n return EntityMetadata.getValueMap(entity, this.primaryColumns, { skipNulls: true });\n };\n /**\n * Creates a \"mixed id map\".\n * If entity has multiple primary keys (ids) then it will return just regular id map, like what getEntityIdMap returns.\n * But if entity has a single primary key then it will return just value of the id column of the entity, just value.\n * This is called mixed id map.\n */\n EntityMetadata.prototype.getEntityIdMixedMap = function (entity) {\n if (!entity)\n return entity;\n var idMap = this.getEntityIdMap(entity);\n if (this.hasMultiplePrimaryKeys) {\n return idMap;\n }\n else if (idMap) {\n return this.primaryColumns[0].getEntityValue(idMap); // todo: what about parent primary column?\n }\n return idMap;\n };\n /**\n * Compares two different entities by their ids.\n * Returns true if they match, false otherwise.\n */\n EntityMetadata.prototype.compareEntities = function (firstEntity, secondEntity) {\n var firstEntityIdMap = this.getEntityIdMap(firstEntity);\n if (!firstEntityIdMap)\n return false;\n var secondEntityIdMap = this.getEntityIdMap(secondEntity);\n if (!secondEntityIdMap)\n return false;\n return OrmUtils.compareIds(firstEntityIdMap, secondEntityIdMap);\n };\n /**\n * Finds column with a given property name.\n */\n EntityMetadata.prototype.findColumnWithPropertyName = function (propertyName) {\n return this.columns.find(function (column) { return column.propertyName === propertyName; });\n };\n /**\n * Finds column with a given database name.\n */\n EntityMetadata.prototype.findColumnWithDatabaseName = function (databaseName) {\n return this.columns.find(function (column) { return column.databaseName === databaseName; });\n };\n /**\n * Finds column with a given property path.\n */\n EntityMetadata.prototype.findColumnWithPropertyPath = function (propertyPath) {\n var column = this.columns.find(function (column) { return column.propertyPath === propertyPath; });\n if (column)\n return column;\n // in the case if column with property path was not found, try to find a relation with such property path\n // if we find relation and it has a single join column then its the column user was seeking\n var relation = this.relations.find(function (relation) { return relation.propertyPath === propertyPath; });\n if (relation && relation.joinColumns.length === 1)\n return relation.joinColumns[0];\n return undefined;\n };\n /**\n * Finds columns with a given property path.\n * Property path can match a relation, and relations can contain multiple columns.\n */\n EntityMetadata.prototype.findColumnsWithPropertyPath = function (propertyPath) {\n var column = this.columns.find(function (column) { return column.propertyPath === propertyPath; });\n if (column)\n return [column];\n // in the case if column with property path was not found, try to find a relation with such property path\n // if we find relation and it has a single join column then its the column user was seeking\n var relation = this.relations.find(function (relation) { return relation.propertyPath === propertyPath; });\n if (relation && relation.joinColumns)\n return relation.joinColumns;\n return [];\n };\n /**\n * Finds relation with the given property path.\n */\n EntityMetadata.prototype.findRelationWithPropertyPath = function (propertyPath) {\n return this.relations.find(function (relation) { return relation.propertyPath === propertyPath; });\n };\n /**\n * Checks if there is an embedded with a given property path.\n */\n EntityMetadata.prototype.hasEmbeddedWithPropertyPath = function (propertyPath) {\n return this.allEmbeddeds.some(function (embedded) { return embedded.propertyPath === propertyPath; });\n };\n /**\n * Finds embedded with a given property path.\n */\n EntityMetadata.prototype.findEmbeddedWithPropertyPath = function (propertyPath) {\n return this.allEmbeddeds.find(function (embedded) { return embedded.propertyPath === propertyPath; });\n };\n /**\n * Iterates through entity and finds and extracts all values from relations in the entity.\n * If relation value is an array its being flattened.\n */\n EntityMetadata.prototype.extractRelationValuesFromEntity = function (entity, relations) {\n var _this = this;\n var relationsAndValues = [];\n relations.forEach(function (relation) {\n var value = relation.getEntityValue(entity);\n if (Array.isArray(value)) {\n value.forEach(function (subValue) { return relationsAndValues.push([relation, subValue, _this.getInverseEntityMetadata(subValue, relation)]); });\n }\n else if (value) {\n relationsAndValues.push([relation, value, _this.getInverseEntityMetadata(value, relation)]);\n }\n });\n return relationsAndValues;\n };\n EntityMetadata.prototype.getInverseEntityMetadata = function (value, relation) {\n var childEntityMetadata = relation.inverseEntityMetadata.childEntityMetadatas.find(function (metadata) {\n return metadata.target === value.constructor;\n });\n return childEntityMetadata ? childEntityMetadata : relation.inverseEntityMetadata;\n };\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a property paths for a given entity.\n */\n EntityMetadata.createPropertyPath = function (metadata, entity, prefix) {\n var _this = this;\n if (prefix === void 0) { prefix = \"\"; }\n var paths = [];\n Object.keys(entity).forEach(function (key) {\n // check for function is needed in the cases when createPropertyPath used on values containg a function as a value\n // example: .update().set({ name: () => `SUBSTR('', 1, 2)` })\n var parentPath = prefix ? prefix + \".\" + key : key;\n if (metadata.hasEmbeddedWithPropertyPath(parentPath)) {\n var subPaths = _this.createPropertyPath(metadata, entity[key], parentPath);\n paths.push.apply(paths, __spreadArray([], __read(subPaths)));\n }\n else {\n var path = prefix ? prefix + \".\" + key : key;\n paths.push(path);\n }\n });\n return paths;\n };\n /**\n * Finds difference between two entity id maps.\n * Returns items that exist in the first array and absent in the second array.\n */\n EntityMetadata.difference = function (firstIdMaps, secondIdMaps) {\n return firstIdMaps.filter(function (firstIdMap) {\n return !secondIdMaps.find(function (secondIdMap) { return OrmUtils.compareIds(firstIdMap, secondIdMap); });\n });\n };\n /**\n * Creates value map from the given values and columns.\n * Examples of usages are primary columns map and join columns map.\n */\n EntityMetadata.getValueMap = function (entity, columns, options) {\n return columns.reduce(function (map, column) {\n var value = column.getEntityValueMap(entity, options);\n // make sure that none of the values of the columns are not missing\n if (map === undefined || value === null || value === undefined)\n return undefined;\n return column.isObjectId ? Object.assign(map, value) : OrmUtils.mergeDeep(map, value);\n }, {});\n };\n // ---------------------------------------------------------------------\n // Public Builder Methods\n // ---------------------------------------------------------------------\n EntityMetadata.prototype.build = function () {\n var namingStrategy = this.connection.namingStrategy;\n var entityPrefix = this.connection.options.entityPrefix;\n this.engine = this.tableMetadataArgs.engine;\n this.database = this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata ? this.parentEntityMetadata.database : this.tableMetadataArgs.database;\n if (this.tableMetadataArgs.schema) {\n this.schema = this.tableMetadataArgs.schema;\n }\n else if ((this.tableMetadataArgs.type === \"entity-child\") && this.parentEntityMetadata) {\n this.schema = this.parentEntityMetadata.schema;\n }\n else {\n this.schema = this.connection.options.schema;\n }\n this.givenTableName = this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata ? this.parentEntityMetadata.givenTableName : this.tableMetadataArgs.name;\n this.synchronize = this.tableMetadataArgs.synchronize === false ? false : true;\n this.targetName = this.tableMetadataArgs.target instanceof Function ? this.tableMetadataArgs.target.name : this.tableMetadataArgs.target;\n if (this.tableMetadataArgs.type === \"closure-junction\") {\n this.tableNameWithoutPrefix = namingStrategy.closureJunctionTableName(this.givenTableName);\n }\n else if (this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata) {\n this.tableNameWithoutPrefix = namingStrategy.tableName(this.parentEntityMetadata.targetName, this.parentEntityMetadata.givenTableName);\n }\n else {\n this.tableNameWithoutPrefix = namingStrategy.tableName(this.targetName, this.givenTableName);\n if (this.connection.driver.maxAliasLength && this.connection.driver.maxAliasLength > 0 && this.tableNameWithoutPrefix.length > this.connection.driver.maxAliasLength) {\n this.tableNameWithoutPrefix = shorten(this.tableNameWithoutPrefix, { separator: \"_\", segmentLength: 3 });\n }\n }\n this.tableName = entityPrefix ? namingStrategy.prefixTableName(entityPrefix, this.tableNameWithoutPrefix) : this.tableNameWithoutPrefix;\n this.target = this.target ? this.target : this.tableName;\n this.name = this.targetName ? this.targetName : this.tableName;\n this.expression = this.tableMetadataArgs.expression;\n this.withoutRowid = this.tableMetadataArgs.withoutRowid === true ? true : false;\n this.tablePath = this.buildTablePath();\n this.schemaPath = this.buildSchemaPath();\n this.orderBy = (this.tableMetadataArgs.orderBy instanceof Function) ? this.tableMetadataArgs.orderBy(this.propertiesMap) : this.tableMetadataArgs.orderBy; // todo: is propertiesMap available here? Looks like its not\n this.isJunction = this.tableMetadataArgs.type === \"closure-junction\" || this.tableMetadataArgs.type === \"junction\";\n this.isClosureJunction = this.tableMetadataArgs.type === \"closure-junction\";\n };\n /**\n * Registers a new column in the entity and recomputes all depend properties.\n */\n EntityMetadata.prototype.registerColumn = function (column) {\n if (this.ownColumns.indexOf(column) !== -1)\n return;\n this.ownColumns.push(column);\n this.columns = this.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.columnsFromTree); }, this.ownColumns);\n this.primaryColumns = this.columns.filter(function (column) { return column.isPrimary; });\n this.hasMultiplePrimaryKeys = this.primaryColumns.length > 1;\n this.hasUUIDGeneratedColumns = this.columns.filter(function (column) { return column.isGenerated || column.generationStrategy === \"uuid\"; }).length > 0;\n this.propertiesMap = this.createPropertiesMap();\n if (this.childEntityMetadatas)\n this.childEntityMetadatas.forEach(function (entityMetadata) { return entityMetadata.registerColumn(column); });\n };\n /**\n * Creates a special object - all columns and relations of the object (plus columns and relations from embeds)\n * in a special format - { propertyName: propertyName }.\n *\n * example: Post{ id: number, name: string, counterEmbed: { count: number }, category: Category }.\n * This method will create following object:\n * { id: \"id\", counterEmbed: { count: \"counterEmbed.count\" }, category: \"category\" }\n */\n EntityMetadata.prototype.createPropertiesMap = function () {\n var map = {};\n this.columns.forEach(function (column) { return OrmUtils.mergeDeep(map, column.createValueMap(column.propertyPath)); });\n this.relations.forEach(function (relation) { return OrmUtils.mergeDeep(map, relation.createValueMap(relation.propertyPath)); });\n return map;\n };\n /**\n * Builds table path using database name, schema name and table name.\n */\n EntityMetadata.prototype.buildTablePath = function () {\n var tablePath = this.tableName;\n if (this.schema && ((this.connection.driver instanceof OracleDriver) || (this.connection.driver instanceof PostgresDriver) || (this.connection.driver instanceof SqlServerDriver) || (this.connection.driver instanceof SapDriver))) {\n tablePath = this.schema + \".\" + tablePath;\n }\n if (this.database && !(this.connection.driver instanceof PostgresDriver)) {\n if (!this.schema && this.connection.driver instanceof SqlServerDriver) {\n tablePath = this.database + \"..\" + tablePath;\n }\n else {\n tablePath = this.database + \".\" + tablePath;\n }\n }\n return tablePath;\n };\n /**\n * Builds table path using schema name and database name.\n */\n EntityMetadata.prototype.buildSchemaPath = function () {\n if (!this.schema)\n return undefined;\n return this.database && !(this.connection.driver instanceof PostgresDriver) ? this.database + \".\" + this.schema : this.schema;\n };\n return EntityMetadata;\n}());\nexport { EntityMetadata };\n\n//# sourceMappingURL=EntityMetadata.js.map\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","import { __extends } from \"tslib\";\n/**\n * Thrown if some required driver's option is not set.\n */\nvar DriverOptionNotSetError = /** @class */ (function (_super) {\n __extends(DriverOptionNotSetError, _super);\n function DriverOptionNotSetError(optionName) {\n var _this = _super.call(this) || this;\n _this.name = \"DriverOptionNotSetError\";\n Object.setPrototypeOf(_this, DriverOptionNotSetError.prototype);\n _this.message = \"Driver option (\" + optionName + \") is not set. Please set it to perform connection to the database.\";\n return _this;\n }\n return DriverOptionNotSetError;\n}(Error));\nexport { DriverOptionNotSetError };\n\n//# sourceMappingURL=DriverOptionNotSetError.js.map\n","import { __read, __spreadArray } from \"tslib\";\n/**\n * Database's table index stored in this class.\n */\nvar TableIndex = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableIndex(options) {\n /**\n * Columns included in this index.\n */\n this.columnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n this.isUnique = !!options.isUnique;\n this.isSpatial = !!options.isSpatial;\n this.isFulltext = !!options.isFulltext;\n this.parser = options.parser;\n this.where = options.where ? options.where : \"\";\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this index with exactly same properties.\n */\n TableIndex.prototype.clone = function () {\n return new TableIndex({\n name: this.name,\n columnNames: __spreadArray([], __read(this.columnNames)),\n isUnique: this.isUnique,\n isSpatial: this.isSpatial,\n isFulltext: this.isFulltext,\n parser: this.parser,\n where: this.where\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates index from the index metadata object.\n */\n TableIndex.create = function (indexMetadata) {\n return new TableIndex({\n name: indexMetadata.name,\n columnNames: indexMetadata.columns.map(function (column) { return column.databaseName; }),\n isUnique: indexMetadata.isUnique,\n isSpatial: indexMetadata.isSpatial,\n isFulltext: indexMetadata.isFulltext,\n parser: indexMetadata.parser,\n where: indexMetadata.where\n });\n };\n return TableIndex;\n}());\nexport { TableIndex };\n\n//# sourceMappingURL=TableIndex.js.map\n","import { __assign, __extends } from \"tslib\";\nimport { ObjectUtils } from \"../util/ObjectUtils\";\n/**\n * Thrown when query execution has failed.\n*/\nvar QueryFailedError = /** @class */ (function (_super) {\n __extends(QueryFailedError, _super);\n function QueryFailedError(query, parameters, driverError) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, QueryFailedError.prototype);\n _this.message = driverError.toString()\n .replace(/^error: /, \"\")\n .replace(/^Error: /, \"\")\n .replace(/^Request/, \"\");\n ObjectUtils.assign(_this, __assign(__assign({}, driverError), { name: \"QueryFailedError\", query: query, parameters: parameters || [] }));\n return _this;\n }\n return QueryFailedError;\n}(Error));\nexport { QueryFailedError };\n\n//# sourceMappingURL=QueryFailedError.js.map\n","import { ObjectUtils } from \"../util/ObjectUtils\";\n/**\n */\nvar Alias = /** @class */ (function () {\n function Alias(alias) {\n ObjectUtils.assign(this, alias || {});\n }\n Object.defineProperty(Alias.prototype, \"target\", {\n get: function () {\n return this.metadata.target;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Alias.prototype, \"hasMetadata\", {\n get: function () {\n return !!this._metadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Alias.prototype, \"metadata\", {\n get: function () {\n if (!this._metadata)\n throw new Error(\"Cannot get entity metadata for the given alias \\\"\" + this.name + \"\\\"\");\n return this._metadata;\n },\n set: function (metadata) {\n this._metadata = metadata;\n },\n enumerable: false,\n configurable: true\n });\n return Alias;\n}());\nexport { Alias };\n\n//# sourceMappingURL=Alias.js.map\n","import { __assign, __read } from \"tslib\";\nimport { Alias } from \"./Alias\";\nimport { JoinAttribute } from \"./JoinAttribute\";\nimport { RelationIdAttribute } from \"./relation-id/RelationIdAttribute\";\nimport { RelationCountAttribute } from \"./relation-count/RelationCountAttribute\";\n/**\n * Contains all properties of the QueryBuilder that needs to be build a final query.\n */\nvar QueryExpressionMap = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function QueryExpressionMap(connection) {\n this.connection = connection;\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates if QueryBuilder used to select entities and not a raw results.\n */\n this.queryEntity = false;\n /**\n * All aliases (including main alias) used in the query.\n */\n this.aliases = [];\n /**\n * Represents query type. QueryBuilder is able to build SELECT, UPDATE and DELETE queries.\n */\n this.queryType = \"select\";\n /**\n * Data needs to be SELECT-ed.\n */\n this.selects = [];\n /**\n * Whether SELECT is DISTINCT.\n */\n this.selectDistinct = false;\n /**\n * SELECT DISTINCT ON query (postgres).\n */\n this.selectDistinctOn = [];\n /**\n * Extra returning columns to be added to the returning statement if driver supports it.\n */\n this.extraReturningColumns = [];\n /**\n * Optional on conflict statement used in insertion query in postgres.\n */\n this.onConflict = \"\";\n /**\n * Optional on ignore statement used in insertion query in databases.\n */\n this.onIgnore = false;\n /**\n * JOIN queries.\n */\n this.joinAttributes = [];\n /**\n * RelationId queries.\n */\n this.relationIdAttributes = [];\n /**\n * Relation count queries.\n */\n this.relationCountAttributes = [];\n /**\n * WHERE queries.\n */\n this.wheres = [];\n /**\n * HAVING queries.\n */\n this.havings = [];\n /**\n * ORDER BY queries.\n */\n this.orderBys = {};\n /**\n * GROUP BY queries.\n */\n this.groupBys = [];\n /**\n * Indicates if soft-deleted rows should be included in entity result.\n * By default the soft-deleted rows are not included.\n */\n this.withDeleted = false;\n /**\n * Parameters used to be escaped in final query.\n */\n this.parameters = {};\n /**\n * Indicates if alias, table names and column names will be ecaped by driver, or not.\n *\n * todo: rename to isQuotingDisabled, also think if it should be named \"escaping\"\n */\n this.disableEscaping = true;\n /**\n * Indicates if virtual columns should be included in entity result.\n *\n * todo: what to do with it? is it properly used? what about persistence?\n */\n this.enableRelationIdValues = false;\n /**\n * Extra where condition appended to the end of original where conditions with AND keyword.\n * Original condition will be wrapped into brackets.\n */\n this.extraAppendedAndWhereCondition = \"\";\n /**\n * Indicates if query builder creates a subquery.\n */\n this.subQuery = false;\n /**\n * Indicates if property names are prefixed with alias names during property replacement.\n * By default this is enabled, however we need this because aliases are not supported in UPDATE and DELETE queries,\n * but user can use them in WHERE expressions.\n */\n this.aliasNamePrefixingEnabled = true;\n /**\n * Indicates if query result cache is enabled or not.\n */\n this.cache = false;\n /**\n * Options that define QueryBuilder behaviour.\n */\n this.options = [];\n /**\n * List of columns where data should be inserted.\n * Used in INSERT query.\n */\n this.insertColumns = [];\n /**\n * Used if user wants to update or delete a specific entities.\n */\n this.whereEntities = [];\n /**\n * Indicates if entity must be updated after insertion / updation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n */\n this.updateEntity = true;\n /**\n * Indicates if listeners and subscribers must be called before and after query execution.\n */\n this.callListeners = true;\n /**\n * Indicates if query must be wrapped into transaction.\n */\n this.useTransaction = false;\n /**\n * Extra parameters.\n * Used in InsertQueryBuilder to avoid default parameters mechanizm and execute high performance insertions.\n */\n this.nativeParameters = {};\n }\n Object.defineProperty(QueryExpressionMap.prototype, \"allOrderBys\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Get all ORDER BY queries - if order by is specified by user then it uses them,\n * otherwise it uses default entity order by if it was set.\n */\n get: function () {\n var _this = this;\n if (!Object.keys(this.orderBys).length && this.mainAlias.hasMetadata && this.options.indexOf(\"disable-global-order\") === -1) {\n var entityOrderBy_1 = this.mainAlias.metadata.orderBy || {};\n return Object.keys(entityOrderBy_1).reduce(function (orderBy, key) {\n orderBy[_this.mainAlias.name + \".\" + key] = entityOrderBy_1[key];\n return orderBy;\n }, {});\n }\n return this.orderBys;\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a main alias and adds it to the current expression map.\n */\n QueryExpressionMap.prototype.setMainAlias = function (alias) {\n // if main alias is already set then remove it from the array\n // if (this.mainAlias)\n // this.aliases.splice(this.aliases.indexOf(this.mainAlias));\n // set new main alias\n this.mainAlias = alias;\n return alias;\n };\n /**\n * Creates a new alias and adds it to the current expression map.\n */\n QueryExpressionMap.prototype.createAlias = function (options) {\n var aliasName = options.name;\n if (!aliasName && options.tablePath)\n aliasName = options.tablePath;\n if (!aliasName && options.target instanceof Function)\n aliasName = options.target.name;\n if (!aliasName && typeof options.target === \"string\")\n aliasName = options.target;\n var alias = new Alias();\n alias.type = options.type;\n if (aliasName)\n alias.name = aliasName;\n if (options.metadata)\n alias.metadata = options.metadata;\n if (options.target && !alias.hasMetadata)\n alias.metadata = this.connection.getMetadata(options.target);\n if (options.tablePath)\n alias.tablePath = options.tablePath;\n if (options.subQuery)\n alias.subQuery = options.subQuery;\n this.aliases.push(alias);\n return alias;\n };\n /**\n * Finds alias with the given name.\n * If alias was not found it throw an exception.\n */\n QueryExpressionMap.prototype.findAliasByName = function (aliasName) {\n var alias = this.aliases.find(function (alias) { return alias.name === aliasName; });\n if (!alias)\n throw new Error(\"\\\"\" + aliasName + \"\\\" alias was not found. Maybe you forgot to join it?\");\n return alias;\n };\n QueryExpressionMap.prototype.findColumnByAliasExpression = function (aliasExpression) {\n var _a = __read(aliasExpression.split(\".\"), 2), aliasName = _a[0], propertyPath = _a[1];\n var alias = this.findAliasByName(aliasName);\n return alias.metadata.findColumnWithPropertyName(propertyPath);\n };\n Object.defineProperty(QueryExpressionMap.prototype, \"relationMetadata\", {\n /**\n * Gets relation metadata of the relation this query builder works with.\n *\n * todo: add proper exceptions\n */\n get: function () {\n if (!this.mainAlias)\n throw new Error(\"Entity to work with is not specified!\"); // todo: better message\n var relationMetadata = this.mainAlias.metadata.findRelationWithPropertyPath(this.relationPropertyPath);\n if (!relationMetadata)\n throw new Error(\"Relation \" + this.relationPropertyPath + \" was not found in entity \" + this.mainAlias.name); // todo: better message\n return relationMetadata;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Copies all properties of the current QueryExpressionMap into a new one.\n * Useful when QueryBuilder needs to create a copy of itself.\n */\n QueryExpressionMap.prototype.clone = function () {\n var _this = this;\n var map = new QueryExpressionMap(this.connection);\n map.queryType = this.queryType;\n map.selects = this.selects.map(function (select) { return select; });\n map.selectDistinct = this.selectDistinct;\n map.selectDistinctOn = this.selectDistinctOn;\n this.aliases.forEach(function (alias) { return map.aliases.push(new Alias(alias)); });\n map.mainAlias = this.mainAlias;\n map.valuesSet = this.valuesSet;\n map.returning = this.returning;\n map.onConflict = this.onConflict;\n map.onIgnore = this.onIgnore;\n map.onUpdate = this.onUpdate;\n map.joinAttributes = this.joinAttributes.map(function (join) { return new JoinAttribute(_this.connection, _this, join); });\n map.relationIdAttributes = this.relationIdAttributes.map(function (relationId) { return new RelationIdAttribute(_this, relationId); });\n map.relationCountAttributes = this.relationCountAttributes.map(function (relationCount) { return new RelationCountAttribute(_this, relationCount); });\n map.wheres = this.wheres.map(function (where) { return (__assign({}, where)); });\n map.havings = this.havings.map(function (having) { return (__assign({}, having)); });\n map.orderBys = Object.assign({}, this.orderBys);\n map.groupBys = this.groupBys.map(function (groupBy) { return groupBy; });\n map.limit = this.limit;\n map.offset = this.offset;\n map.skip = this.skip;\n map.take = this.take;\n map.lockMode = this.lockMode;\n map.lockVersion = this.lockVersion;\n map.lockTables = this.lockTables;\n map.withDeleted = this.withDeleted;\n map.parameters = Object.assign({}, this.parameters);\n map.disableEscaping = this.disableEscaping;\n map.enableRelationIdValues = this.enableRelationIdValues;\n map.extraAppendedAndWhereCondition = this.extraAppendedAndWhereCondition;\n map.subQuery = this.subQuery;\n map.aliasNamePrefixingEnabled = this.aliasNamePrefixingEnabled;\n map.cache = this.cache;\n map.cacheId = this.cacheId;\n map.cacheDuration = this.cacheDuration;\n map.relationPropertyPath = this.relationPropertyPath;\n map.of = this.of;\n map.insertColumns = this.insertColumns;\n map.whereEntities = this.whereEntities;\n map.updateEntity = this.updateEntity;\n map.callListeners = this.callListeners;\n map.useTransaction = this.useTransaction;\n map.nativeParameters = Object.assign({}, this.nativeParameters);\n map.comment = this.comment;\n return map;\n };\n return QueryExpressionMap;\n}());\nexport { QueryExpressionMap };\n\n//# sourceMappingURL=QueryExpressionMap.js.map\n","import { __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\nimport { QueryExpressionMap } from \"./QueryExpressionMap\";\nimport { Brackets } from \"./Brackets\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { SqljsDriver } from \"../driver/sqljs/SqljsDriver\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { EntitySchema } from \"../\";\nimport { FindOperator } from \"../find-options/FindOperator\";\nimport { In } from \"../find-options/operator/In\";\nimport { EntityColumnNotFound } from \"../error/EntityColumnNotFound\";\n// todo: completely cover query builder with tests\n// todo: entityOrProperty can be target name. implement proper behaviour if it is.\n// todo: check in persistment if id exist on object and throw exception (can be in partial selection?)\n// todo: fix problem with long aliases eg getMaxIdentifierLength\n// todo: fix replacing in .select(\"COUNT(post.id) AS cnt\") statement\n// todo: implement joinAlways in relations and relationId\n// todo: finish partial selection\n// todo: sugar methods like: .addCount and .selectCount, selectCountAndMap, selectSum, selectSumAndMap, ...\n// todo: implement @Select decorator\n// todo: add select and map functions\n// todo: implement relation/entity loading and setting them into properties within a separate query\n// .loadAndMap(\"post.categories\", \"post.categories\", qb => ...)\n// .loadAndMap(\"post.categories\", Category, qb => ...)\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar QueryBuilder = /** @class */ (function () {\n /**\n * QueryBuilder can be initialized from given Connection and QueryRunner objects or from given other QueryBuilder.\n */\n function QueryBuilder(connectionOrQueryBuilder, queryRunner) {\n if (connectionOrQueryBuilder instanceof QueryBuilder) {\n this.connection = connectionOrQueryBuilder.connection;\n this.queryRunner = connectionOrQueryBuilder.queryRunner;\n this.expressionMap = connectionOrQueryBuilder.expressionMap.clone();\n }\n else {\n this.connection = connectionOrQueryBuilder;\n this.queryRunner = queryRunner;\n this.expressionMap = new QueryExpressionMap(this.connection);\n }\n }\n Object.defineProperty(QueryBuilder.prototype, \"alias\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Gets the main alias string used in this query builder.\n */\n get: function () {\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Main alias is not set\"); // todo: better exception\n return this.expressionMap.mainAlias.name;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Creates SELECT query and selects given data.\n * Replaces all previous selections if they exist.\n */\n QueryBuilder.prototype.select = function (selection, selectionAliasName) {\n this.expressionMap.queryType = \"select\";\n if (Array.isArray(selection)) {\n this.expressionMap.selects = selection.map(function (selection) { return ({ selection: selection }); });\n }\n else if (selection) {\n this.expressionMap.selects = [{ selection: selection, aliasName: selectionAliasName }];\n }\n // loading it dynamically because of circular issue\n var SelectQueryBuilderCls = require(\"./SelectQueryBuilder\").SelectQueryBuilder;\n if (this instanceof SelectQueryBuilderCls)\n return this;\n return new SelectQueryBuilderCls(this);\n };\n /**\n * Creates INSERT query.\n */\n QueryBuilder.prototype.insert = function () {\n this.expressionMap.queryType = \"insert\";\n // loading it dynamically because of circular issue\n var InsertQueryBuilderCls = require(\"./InsertQueryBuilder\").InsertQueryBuilder;\n if (this instanceof InsertQueryBuilderCls)\n return this;\n return new InsertQueryBuilderCls(this);\n };\n /**\n * Creates UPDATE query and applies given update values.\n */\n QueryBuilder.prototype.update = function (entityOrTableNameUpdateSet, maybeUpdateSet) {\n var updateSet = maybeUpdateSet ? maybeUpdateSet : entityOrTableNameUpdateSet;\n entityOrTableNameUpdateSet = entityOrTableNameUpdateSet instanceof EntitySchema ? entityOrTableNameUpdateSet.options.name : entityOrTableNameUpdateSet;\n if (entityOrTableNameUpdateSet instanceof Function || typeof entityOrTableNameUpdateSet === \"string\") {\n var mainAlias = this.createFromAlias(entityOrTableNameUpdateSet);\n this.expressionMap.setMainAlias(mainAlias);\n }\n this.expressionMap.queryType = \"update\";\n this.expressionMap.valuesSet = updateSet;\n // loading it dynamically because of circular issue\n var UpdateQueryBuilderCls = require(\"./UpdateQueryBuilder\").UpdateQueryBuilder;\n if (this instanceof UpdateQueryBuilderCls)\n return this;\n return new UpdateQueryBuilderCls(this);\n };\n /**\n * Creates DELETE query.\n */\n QueryBuilder.prototype.delete = function () {\n this.expressionMap.queryType = \"delete\";\n // loading it dynamically because of circular issue\n var DeleteQueryBuilderCls = require(\"./DeleteQueryBuilder\").DeleteQueryBuilder;\n if (this instanceof DeleteQueryBuilderCls)\n return this;\n return new DeleteQueryBuilderCls(this);\n };\n QueryBuilder.prototype.softDelete = function () {\n this.expressionMap.queryType = \"soft-delete\";\n // loading it dynamically because of circular issue\n var SoftDeleteQueryBuilderCls = require(\"./SoftDeleteQueryBuilder\").SoftDeleteQueryBuilder;\n if (this instanceof SoftDeleteQueryBuilderCls)\n return this;\n return new SoftDeleteQueryBuilderCls(this);\n };\n QueryBuilder.prototype.restore = function () {\n this.expressionMap.queryType = \"restore\";\n // loading it dynamically because of circular issue\n var SoftDeleteQueryBuilderCls = require(\"./SoftDeleteQueryBuilder\").SoftDeleteQueryBuilder;\n if (this instanceof SoftDeleteQueryBuilderCls)\n return this;\n return new SoftDeleteQueryBuilderCls(this);\n };\n /**\n * Sets entity's relation with which this query builder gonna work.\n */\n QueryBuilder.prototype.relation = function (entityTargetOrPropertyPath, maybePropertyPath) {\n var entityTarget = arguments.length === 2 ? entityTargetOrPropertyPath : undefined;\n var propertyPath = arguments.length === 2 ? maybePropertyPath : entityTargetOrPropertyPath;\n this.expressionMap.queryType = \"relation\";\n this.expressionMap.relationPropertyPath = propertyPath;\n if (entityTarget) {\n var mainAlias = this.createFromAlias(entityTarget);\n this.expressionMap.setMainAlias(mainAlias);\n }\n // loading it dynamically because of circular issue\n var RelationQueryBuilderCls = require(\"./RelationQueryBuilder\").RelationQueryBuilder;\n if (this instanceof RelationQueryBuilderCls)\n return this;\n return new RelationQueryBuilderCls(this);\n };\n /**\n * Checks if given relation or relations exist in the entity.\n * Returns true if relation exists, false otherwise.\n *\n * todo: move this method to manager? or create a shortcut?\n */\n QueryBuilder.prototype.hasRelation = function (target, relation) {\n var entityMetadata = this.connection.getMetadata(target);\n var relations = Array.isArray(relation) ? relation : [relation];\n return relations.every(function (relation) {\n return !!entityMetadata.findRelationWithPropertyPath(relation);\n });\n };\n /**\n * Sets parameter name and its value.\n */\n QueryBuilder.prototype.setParameter = function (key, value) {\n this.expressionMap.parameters[key] = value;\n return this;\n };\n /**\n * Adds all parameters from the given object.\n */\n QueryBuilder.prototype.setParameters = function (parameters) {\n var _this = this;\n // remove function parameters\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] instanceof Function) {\n throw new Error(\"Function parameter isn't supported in the parameters. Please check \\\"\" + key + \"\\\" parameter.\");\n }\n });\n // set parent query builder parameters as well in sub-query mode\n if (this.expressionMap.parentQueryBuilder)\n this.expressionMap.parentQueryBuilder.setParameters(parameters);\n Object.keys(parameters).forEach(function (key) { return _this.setParameter(key, parameters[key]); });\n return this;\n };\n /**\n * Adds native parameters from the given object.\n */\n QueryBuilder.prototype.setNativeParameters = function (parameters) {\n var _this = this;\n // set parent query builder parameters as well in sub-query mode\n if (this.expressionMap.parentQueryBuilder)\n this.expressionMap.parentQueryBuilder.setNativeParameters(parameters);\n Object.keys(parameters).forEach(function (key) {\n _this.expressionMap.nativeParameters[key] = parameters[key];\n });\n return this;\n };\n /**\n * Gets all parameters.\n */\n QueryBuilder.prototype.getParameters = function () {\n var parameters = Object.assign({}, this.expressionMap.parameters);\n // add discriminator column parameter if it exist\n if (this.expressionMap.mainAlias && this.expressionMap.mainAlias.hasMetadata) {\n var metadata = this.expressionMap.mainAlias.metadata;\n if (metadata.discriminatorColumn && metadata.parentEntityMetadata) {\n var values = metadata.childEntityMetadatas\n .filter(function (childMetadata) { return childMetadata.discriminatorColumn; })\n .map(function (childMetadata) { return childMetadata.discriminatorValue; });\n values.push(metadata.discriminatorValue);\n parameters[\"discriminatorColumnValues\"] = values;\n }\n }\n return parameters;\n };\n /**\n * Prints sql to stdout using console.log.\n */\n QueryBuilder.prototype.printSql = function () {\n var _a = __read(this.getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n this.connection.logger.logQuery(query, parameters);\n return this;\n };\n /**\n * Gets generated sql that will be executed.\n * Parameters in the query are escaped for the currently used driver.\n */\n QueryBuilder.prototype.getSql = function () {\n return this.getQueryAndParameters()[0];\n };\n /**\n * Gets query to be executed with all parameters used in it.\n */\n QueryBuilder.prototype.getQueryAndParameters = function () {\n // this execution order is important because getQuery method generates this.expressionMap.nativeParameters values\n var query = this.getQuery();\n var parameters = this.getParameters();\n return this.connection.driver.escapeQueryWithParameters(query, parameters, this.expressionMap.nativeParameters);\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n QueryBuilder.prototype.execute = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, sql, parameters, queryRunner;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = __read(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryRunner = this.obtainQueryRunner();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 3, 8]);\n return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 2: return [2 /*return*/, _b.sent()]; // await is needed here because we are using finally\n case 3:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 5];\n return [4 /*yield*/, queryRunner.release()];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n if (!(this.connection.driver instanceof SqljsDriver)) return [3 /*break*/, 7];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 6:\n _b.sent();\n _b.label = 7;\n case 7: return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a completely new query builder.\n * Uses same query runner as current QueryBuilder.\n */\n QueryBuilder.prototype.createQueryBuilder = function () {\n return new this.constructor(this.connection, this.queryRunner);\n };\n /**\n * Clones query builder as it is.\n * Note: it uses new query runner, if you want query builder that uses exactly same query runner,\n * you can create query builder using its constructor, for example new SelectQueryBuilder(queryBuilder)\n * where queryBuilder is cloned QueryBuilder.\n */\n QueryBuilder.prototype.clone = function () {\n return new this.constructor(this);\n };\n /**\n * Includes a Query comment in the query builder. This is helpful for debugging purposes,\n * such as finding a specific query in the database server's logs, or for categorization using\n * an APM product.\n */\n QueryBuilder.prototype.comment = function (comment) {\n this.expressionMap.comment = comment;\n return this;\n };\n /**\n * Disables escaping.\n */\n QueryBuilder.prototype.disableEscaping = function () {\n this.expressionMap.disableEscaping = false;\n return this;\n };\n /**\n * Escapes table name, column name or alias name using current database's escaping character.\n */\n QueryBuilder.prototype.escape = function (name) {\n if (!this.expressionMap.disableEscaping)\n return name;\n return this.connection.driver.escape(name);\n };\n /**\n * Sets or overrides query builder's QueryRunner.\n */\n QueryBuilder.prototype.setQueryRunner = function (queryRunner) {\n this.queryRunner = queryRunner;\n return this;\n };\n /**\n * Indicates if listeners and subscribers must be called before and after query execution.\n * Enabled by default.\n */\n QueryBuilder.prototype.callListeners = function (enabled) {\n this.expressionMap.callListeners = enabled;\n return this;\n };\n /**\n * If set to true the query will be wrapped into a transaction.\n */\n QueryBuilder.prototype.useTransaction = function (enabled) {\n this.expressionMap.useTransaction = enabled;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Gets escaped table name with schema name if SqlServer driver used with custom\n * schema name, otherwise returns escaped table name.\n */\n QueryBuilder.prototype.getTableName = function (tablePath) {\n var _this = this;\n return tablePath.split(\".\")\n .map(function (i) {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n if (i === \"\")\n return i;\n return _this.escape(i);\n }).join(\".\");\n };\n /**\n * Gets name of the table where insert should be performed.\n */\n QueryBuilder.prototype.getMainTableName = function () {\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Entity where values should be inserted is not specified. Call \\\"qb.into(entity)\\\" method to specify it.\");\n if (this.expressionMap.mainAlias.hasMetadata)\n return this.expressionMap.mainAlias.metadata.tablePath;\n return this.expressionMap.mainAlias.tablePath;\n };\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n QueryBuilder.prototype.createFromAlias = function (entityTarget, aliasName) {\n // if table has a metadata then find it to properly escape its properties\n // const metadata = this.connection.entityMetadatas.find(metadata => metadata.tableName === tableName);\n if (this.connection.hasMetadata(entityTarget)) {\n var metadata = this.connection.getMetadata(entityTarget);\n return this.expressionMap.createAlias({\n type: \"from\",\n name: aliasName,\n metadata: this.connection.getMetadata(entityTarget),\n tablePath: metadata.tablePath\n });\n }\n else {\n if (typeof entityTarget === \"string\") {\n var isSubquery = entityTarget.substr(0, 1) === \"(\" && entityTarget.substr(-1) === \")\";\n return this.expressionMap.createAlias({\n type: \"from\",\n name: aliasName,\n tablePath: !isSubquery ? entityTarget : undefined,\n subQuery: isSubquery ? entityTarget : undefined,\n });\n }\n var subQueryBuilder = entityTarget(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n var subquery = subQueryBuilder.getQuery();\n return this.expressionMap.createAlias({\n type: \"from\",\n name: aliasName,\n subQuery: subquery\n });\n }\n };\n /**\n * Replaces all entity's propertyName to name in the given statement.\n */\n QueryBuilder.prototype.replacePropertyNames = function (statement) {\n var e_1, _a;\n var _this = this;\n // Escape special characters in regular expressions\n // Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n var escapeRegExp = function (s) { return s.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, \"\\\\$&\"); };\n var _loop_1 = function (alias) {\n var e_2, _d, e_3, _e, e_4, _f, e_5, _g, e_6, _h, e_7, _j;\n if (!alias.hasMetadata)\n return \"continue\";\n var replaceAliasNamePrefix = this_1.expressionMap.aliasNamePrefixingEnabled ? alias.name + \".\" : \"\";\n var replacementAliasNamePrefix = this_1.expressionMap.aliasNamePrefixingEnabled ? this_1.escape(alias.name) + \".\" : \"\";\n var replacements = {};\n try {\n // Insert & overwrite the replacements from least to most relevant in our replacements object.\n // To do this we iterate and overwrite in the order of relevance.\n // Least to Most Relevant:\n // * Relation Property Path to first join column key\n // * Relation Property Path + Column Path\n // * Column Database Name\n // * Column Propety Name\n // * Column Property Path\n for (var _k = (e_2 = void 0, __values(alias.metadata.relations)), _l = _k.next(); !_l.done; _l = _k.next()) {\n var relation = _l.value;\n if (relation.joinColumns.length > 0)\n replacements[relation.propertyPath] = relation.joinColumns[0].databaseName;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_d = _k.return)) _d.call(_k);\n }\n finally { if (e_2) throw e_2.error; }\n }\n try {\n for (var _m = (e_3 = void 0, __values(alias.metadata.relations)), _o = _m.next(); !_o.done; _o = _m.next()) {\n var relation = _o.value;\n try {\n for (var _p = (e_4 = void 0, __values(__spreadArray(__spreadArray([], __read(relation.joinColumns)), __read(relation.inverseJoinColumns)))), _q = _p.next(); !_q.done; _q = _p.next()) {\n var joinColumn = _q.value;\n var propertyKey = relation.propertyPath + \".\" + joinColumn.referencedColumn.propertyPath;\n replacements[propertyKey] = joinColumn.databaseName;\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_q && !_q.done && (_f = _p.return)) _f.call(_p);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_e = _m.return)) _e.call(_m);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _r = (e_5 = void 0, __values(alias.metadata.columns)), _s = _r.next(); !_s.done; _s = _r.next()) {\n var column = _s.value;\n replacements[column.databaseName] = column.databaseName;\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_s && !_s.done && (_g = _r.return)) _g.call(_r);\n }\n finally { if (e_5) throw e_5.error; }\n }\n try {\n for (var _t = (e_6 = void 0, __values(alias.metadata.columns)), _u = _t.next(); !_u.done; _u = _t.next()) {\n var column = _u.value;\n replacements[column.propertyName] = column.databaseName;\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_u && !_u.done && (_h = _t.return)) _h.call(_t);\n }\n finally { if (e_6) throw e_6.error; }\n }\n try {\n for (var _v = (e_7 = void 0, __values(alias.metadata.columns)), _w = _v.next(); !_w.done; _w = _v.next()) {\n var column = _w.value;\n replacements[column.propertyPath] = column.databaseName;\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_w && !_w.done && (_j = _v.return)) _j.call(_v);\n }\n finally { if (e_7) throw e_7.error; }\n }\n var replacementKeys = Object.keys(replacements);\n if (replacementKeys.length) {\n statement = statement.replace(new RegExp(\n // Avoid a lookbehind here since it's not well supported\n \"([ =(]|^.{0})\" +\n (escapeRegExp(replaceAliasNamePrefix) + \"(\" + replacementKeys.map(escapeRegExp).join(\"|\") + \")\") +\n \"(?=[ =),]|.{0}$)\", \"gm\"), function (_, pre, p) {\n return \"\" + pre + replacementAliasNamePrefix + _this.escape(replacements[p]);\n });\n }\n };\n var this_1 = this;\n try {\n for (var _b = __values(this.expressionMap.aliases), _c = _b.next(); !_c.done; _c = _b.next()) {\n var alias = _c.value;\n _loop_1(alias);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return statement;\n };\n QueryBuilder.prototype.createComment = function () {\n if (!this.expressionMap.comment) {\n return \"\";\n }\n // ANSI SQL 2003 support C style comments - comments that start with `/*` and end with `*/`\n // In some dialects query nesting is available - but not all. Because of this, we'll need\n // to scrub \"ending\" characters from the SQL but otherwise we can leave everything else\n // as-is and it should be valid.\n return \"/* \" + this.expressionMap.comment.replace(\"*/\", \"\") + \" */ \";\n };\n /**\n * Creates \"WHERE\" expression.\n */\n QueryBuilder.prototype.createWhereExpression = function () {\n var conditionsArray = [];\n var whereExpression = this.createWhereExpressionString();\n whereExpression.trim() && conditionsArray.push(this.createWhereExpressionString());\n if (this.expressionMap.mainAlias.hasMetadata) {\n var metadata = this.expressionMap.mainAlias.metadata;\n // Adds the global condition of \"non-deleted\" for the entity with delete date columns in select query.\n if (this.expressionMap.queryType === \"select\" && !this.expressionMap.withDeleted && metadata.deleteDateColumn) {\n var column = this.expressionMap.aliasNamePrefixingEnabled\n ? this.expressionMap.mainAlias.name + \".\" + metadata.deleteDateColumn.propertyName\n : metadata.deleteDateColumn.propertyName;\n var condition = this.replacePropertyNames(column) + \" IS NULL\";\n conditionsArray.push(condition);\n }\n if (metadata.discriminatorColumn && metadata.parentEntityMetadata) {\n var column = this.expressionMap.aliasNamePrefixingEnabled\n ? this.expressionMap.mainAlias.name + \".\" + metadata.discriminatorColumn.databaseName\n : metadata.discriminatorColumn.databaseName;\n var condition = this.replacePropertyNames(column) + \" IN (:...discriminatorColumnValues)\";\n conditionsArray.push(condition);\n }\n }\n if (this.expressionMap.extraAppendedAndWhereCondition) {\n var condition = this.replacePropertyNames(this.expressionMap.extraAppendedAndWhereCondition);\n conditionsArray.push(condition);\n }\n if (!conditionsArray.length) {\n return \"\";\n }\n else if (conditionsArray.length === 1) {\n return \" WHERE \" + conditionsArray[0];\n }\n else {\n return \" WHERE ( \" + conditionsArray.join(\" ) AND ( \") + \" )\";\n }\n };\n /**\n * Creates \"RETURNING\" / \"OUTPUT\" expression.\n */\n QueryBuilder.prototype.createReturningExpression = function () {\n var _this = this;\n var columns = this.getReturningColumns();\n var driver = this.connection.driver;\n // also add columns we must auto-return to perform entity updation\n // if user gave his own returning\n if (typeof this.expressionMap.returning !== \"string\" &&\n this.expressionMap.extraReturningColumns.length > 0 &&\n driver.isReturningSqlSupported()) {\n columns.push.apply(columns, __spreadArray([], __read(this.expressionMap.extraReturningColumns.filter(function (column) {\n return columns.indexOf(column) === -1;\n }))));\n }\n if (columns.length) {\n var columnsExpression = columns.map(function (column) {\n var name = _this.escape(column.databaseName);\n if (driver instanceof SqlServerDriver) {\n if (_this.expressionMap.queryType === \"insert\" || _this.expressionMap.queryType === \"update\" || _this.expressionMap.queryType === \"soft-delete\" || _this.expressionMap.queryType === \"restore\") {\n return \"INSERTED.\" + name;\n }\n else {\n return _this.escape(_this.getMainTableName()) + \".\" + name;\n }\n }\n else {\n return name;\n }\n }).join(\", \");\n if (driver instanceof OracleDriver) {\n columnsExpression += \" INTO \" + columns.map(function (column) {\n var parameterName = \"output_\" + column.databaseName;\n _this.expressionMap.nativeParameters[parameterName] = { type: driver.columnTypeToNativeParameter(column.type), dir: driver.oracle.BIND_OUT };\n return _this.connection.driver.createParameter(parameterName, Object.keys(_this.expressionMap.nativeParameters).length);\n }).join(\", \");\n }\n if (driver instanceof SqlServerDriver) {\n if (this.expressionMap.queryType === \"insert\" || this.expressionMap.queryType === \"update\") {\n columnsExpression += \" INTO @OutputTable\";\n }\n }\n return columnsExpression;\n }\n else if (typeof this.expressionMap.returning === \"string\") {\n return this.expressionMap.returning;\n }\n return \"\";\n };\n /**\n * If returning / output cause is set to array of column names,\n * then this method will return all column metadatas of those column names.\n */\n QueryBuilder.prototype.getReturningColumns = function () {\n var _this = this;\n var columns = [];\n if (Array.isArray(this.expressionMap.returning)) {\n this.expressionMap.returning.forEach(function (columnName) {\n if (_this.expressionMap.mainAlias.hasMetadata) {\n columns.push.apply(columns, __spreadArray([], __read(_this.expressionMap.mainAlias.metadata.findColumnsWithPropertyPath(columnName))));\n }\n });\n }\n return columns;\n };\n /**\n * Concatenates all added where expressions into one string.\n */\n QueryBuilder.prototype.createWhereExpressionString = function () {\n var _this = this;\n return this.expressionMap.wheres.map(function (where, index) {\n switch (where.type) {\n case \"and\":\n return (index > 0 ? \"AND \" : \"\") + _this.replacePropertyNames(where.condition);\n case \"or\":\n return (index > 0 ? \"OR \" : \"\") + _this.replacePropertyNames(where.condition);\n default:\n return _this.replacePropertyNames(where.condition);\n }\n }).join(\" \");\n };\n /**\n * Creates \"WHERE\" expression and variables for the given \"ids\".\n */\n QueryBuilder.prototype.createWhereIdsExpression = function (ids) {\n var _a;\n var _this = this;\n var metadata = this.expressionMap.mainAlias.metadata;\n var normalized = (Array.isArray(ids) ? ids : [ids]).map(function (id) { return metadata.ensureEntityIdMap(id); });\n // using in(...ids) for single primary key entities\n if (!metadata.hasMultiplePrimaryKeys\n && metadata.embeddeds.length === 0) {\n var primaryColumn_1 = metadata.primaryColumns[0];\n // getEntityValue will try to transform `In`, it is a bug\n // todo: remove this transformer check after #2390 is fixed\n if (!primaryColumn_1.transformer) {\n return this.computeWhereParameter((_a = {},\n _a[primaryColumn_1.propertyName] = In(normalized.map(function (id) { return primaryColumn_1.getEntityValue(id, false); })),\n _a));\n }\n }\n // create shortcuts for better readability\n var alias = this.expressionMap.aliasNamePrefixingEnabled ? this.escape(this.expressionMap.mainAlias.name) + \".\" : \"\";\n var parameterIndex = Object.keys(this.expressionMap.nativeParameters).length;\n var whereStrings = normalized.map(function (id, index) {\n var whereSubStrings = [];\n metadata.primaryColumns.forEach(function (primaryColumn, secondIndex) {\n var parameterName = \"id_\" + index + \"_\" + secondIndex;\n // whereSubStrings.push(alias + this.escape(primaryColumn.databaseName) + \"=:id_\" + index + \"_\" + secondIndex);\n whereSubStrings.push(alias + _this.escape(primaryColumn.databaseName) + \" = \" + _this.connection.driver.createParameter(parameterName, parameterIndex));\n _this.expressionMap.nativeParameters[parameterName] = primaryColumn.getEntityValue(id, true);\n parameterIndex++;\n });\n return whereSubStrings.join(\" AND \");\n });\n return whereStrings.length > 1\n ? \"(\" + whereStrings.map(function (whereString) { return \"(\" + whereString + \")\"; }).join(\" OR \") + \")\"\n : whereStrings[0];\n };\n /**\n * Computes given where argument - transforms to a where string all forms it can take.\n */\n QueryBuilder.prototype.computeWhereParameter = function (where) {\n var _this = this;\n if (typeof where === \"string\")\n return where;\n if (where instanceof Brackets) {\n var whereQueryBuilder = this.createQueryBuilder();\n whereQueryBuilder.expressionMap.mainAlias = this.expressionMap.mainAlias;\n whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = this.expressionMap.aliasNamePrefixingEnabled;\n whereQueryBuilder.expressionMap.nativeParameters = this.expressionMap.nativeParameters;\n where.whereFactory(whereQueryBuilder);\n var whereString = whereQueryBuilder.createWhereExpressionString();\n this.setParameters(whereQueryBuilder.getParameters());\n return whereString ? \"(\" + whereString + \")\" : \"\";\n }\n else if (where instanceof Function) {\n return where(this);\n }\n else if (where instanceof Object) {\n var wheres = Array.isArray(where) ? where : [where];\n var andConditions = void 0;\n var parameterIndex_1 = Object.keys(this.expressionMap.nativeParameters).length;\n if (this.expressionMap.mainAlias.hasMetadata) {\n andConditions = wheres.map(function (where, whereIndex) {\n var propertyPaths = EntityMetadata.createPropertyPath(_this.expressionMap.mainAlias.metadata, where);\n return propertyPaths.map(function (propertyPath, propertyIndex) {\n var columns = _this.expressionMap.mainAlias.metadata.findColumnsWithPropertyPath(propertyPath);\n if (!columns.length) {\n throw new EntityColumnNotFound(propertyPath);\n }\n return columns.map(function (column, columnIndex) {\n var aliasPath = _this.expressionMap.aliasNamePrefixingEnabled ? _this.alias + \".\" + propertyPath : column.propertyPath;\n var parameterValue = column.getEntityValue(where, true);\n var parameterName = \"where_\" + whereIndex + \"_\" + propertyIndex + \"_\" + columnIndex;\n var parameterBaseCount = Object.keys(_this.expressionMap.nativeParameters).filter(function (x) { return x.startsWith(parameterName); }).length;\n if (parameterValue === null) {\n return aliasPath + \" IS NULL\";\n }\n else if (parameterValue instanceof FindOperator) {\n var parameters_1 = [];\n if (parameterValue.useParameter) {\n if (parameterValue.objectLiteralParameters) {\n _this.setParameters(parameterValue.objectLiteralParameters);\n }\n else {\n var realParameterValues = parameterValue.multipleParameters ? parameterValue.value : [parameterValue.value];\n realParameterValues.forEach(function (realParameterValue, realParameterValueIndex) {\n _this.expressionMap.nativeParameters[parameterName + (parameterBaseCount + realParameterValueIndex)] = realParameterValue;\n parameterIndex_1++;\n parameters_1.push(_this.connection.driver.createParameter(parameterName + (parameterBaseCount + realParameterValueIndex), parameterIndex_1 - 1));\n });\n }\n }\n return _this.computeFindOperatorExpression(parameterValue, aliasPath, parameters_1);\n }\n else {\n _this.expressionMap.nativeParameters[parameterName] = parameterValue;\n parameterIndex_1++;\n var parameter = _this.connection.driver.createParameter(parameterName, parameterIndex_1 - 1);\n return aliasPath + \" = \" + parameter;\n }\n }).filter(function (expression) { return !!expression; }).join(\" AND \");\n }).filter(function (expression) { return !!expression; }).join(\" AND \");\n });\n }\n else {\n andConditions = wheres.map(function (where, whereIndex) {\n return Object.keys(where).map(function (key, parameterIndex) {\n var parameterValue = where[key];\n var aliasPath = _this.expressionMap.aliasNamePrefixingEnabled ? _this.alias + \".\" + key : key;\n if (parameterValue === null) {\n return aliasPath + \" IS NULL\";\n }\n else {\n var parameterName = \"where_\" + whereIndex + \"_\" + parameterIndex;\n _this.expressionMap.nativeParameters[parameterName] = parameterValue;\n parameterIndex++;\n return aliasPath + \" = \" + _this.connection.driver.createParameter(parameterName, parameterIndex - 1);\n }\n }).join(\" AND \");\n });\n }\n if (andConditions.length > 1)\n return andConditions.map(function (where) { return \"(\" + where + \")\"; }).join(\" OR \");\n return andConditions.join(\"\");\n }\n return \"\";\n };\n /**\n * Gets SQL needs to be inserted into final query.\n */\n QueryBuilder.prototype.computeFindOperatorExpression = function (operator, aliasPath, parameters) {\n var driver = this.connection.driver;\n switch (operator.type) {\n case \"not\":\n if (operator.child) {\n return \"NOT(\" + this.computeFindOperatorExpression(operator.child, aliasPath, parameters) + \")\";\n }\n else {\n return aliasPath + \" != \" + parameters[0];\n }\n case \"lessThan\":\n return aliasPath + \" < \" + parameters[0];\n case \"lessThanOrEqual\":\n return aliasPath + \" <= \" + parameters[0];\n case \"moreThan\":\n return aliasPath + \" > \" + parameters[0];\n case \"moreThanOrEqual\":\n return aliasPath + \" >= \" + parameters[0];\n case \"equal\":\n return aliasPath + \" = \" + parameters[0];\n case \"ilike\":\n if (driver instanceof PostgresDriver || driver instanceof CockroachDriver) {\n return aliasPath + \" ILIKE \" + parameters[0];\n }\n return \"UPPER(\" + aliasPath + \") LIKE UPPER(\" + parameters[0] + \")\";\n case \"like\":\n return aliasPath + \" LIKE \" + parameters[0];\n case \"between\":\n return aliasPath + \" BETWEEN \" + parameters[0] + \" AND \" + parameters[1];\n case \"in\":\n if (parameters.length === 0) {\n return \"0=1\";\n }\n return aliasPath + \" IN (\" + parameters.join(\", \") + \")\";\n case \"any\":\n return aliasPath + \" = ANY(\" + parameters[0] + \")\";\n case \"isNull\":\n return aliasPath + \" IS NULL\";\n case \"raw\":\n if (operator.getSql) {\n return operator.getSql(aliasPath);\n }\n else {\n return aliasPath + \" = \" + operator.value;\n }\n }\n throw new TypeError(\"Unsupported FindOperator \" + FindOperator.constructor.name);\n };\n /**\n * Creates a query builder used to execute sql queries inside this query builder.\n */\n QueryBuilder.prototype.obtainQueryRunner = function () {\n return this.queryRunner || this.connection.createQueryRunner();\n };\n return QueryBuilder;\n}());\nexport { QueryBuilder };\n\n//# sourceMappingURL=QueryBuilder.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport { SqljsQueryRunner } from \"./SqljsQueryRunner\";\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\";\nimport { DriverOptionNotSetError } from \"../../error/DriverOptionNotSetError\";\nimport { PlatformTools } from \"../../platform/PlatformTools\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\nvar SqljsDriver = /** @class */ (function (_super) {\n __extends(SqljsDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SqljsDriver(connection) {\n var _this = _super.call(this, connection) || this;\n // If autoSave is enabled by user, location or autoSaveCallback have to be set\n // because either autoSave saves to location or calls autoSaveCallback.\n if (_this.options.autoSave && !_this.options.location && !_this.options.autoSaveCallback) {\n throw new DriverOptionNotSetError(\"location or autoSaveCallback\");\n }\n // load sql.js package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n */\n SqljsDriver.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.createDatabaseConnection()];\n case 1:\n _a.databaseConnection = _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Closes connection with database.\n */\n SqljsDriver.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n try {\n _this.queryRunner = undefined;\n _this.databaseConnection.close();\n ok();\n }\n catch (e) {\n fail(e);\n }\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n SqljsDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new SqljsQueryRunner(this);\n return this.queryRunner;\n };\n /**\n * Loads a database from a given file (Node.js), local storage key (browser) or array.\n * This will delete the current database!\n */\n SqljsDriver.prototype.load = function (fileNameOrLocalStorageOrData, checkIfFileOrLocalStorageExists) {\n if (checkIfFileOrLocalStorageExists === void 0) { checkIfFileOrLocalStorageExists = true; }\n return __awaiter(this, void 0, void 0, function () {\n var database, localStorageContent;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(typeof fileNameOrLocalStorageOrData === \"string\")) return [3 /*break*/, 8];\n if (!(PlatformTools.type === \"node\")) return [3 /*break*/, 1];\n // Node.js\n // fileNameOrLocalStorageOrData should be a path to the file\n if (PlatformTools.fileExist(fileNameOrLocalStorageOrData)) {\n database = PlatformTools.readFileSync(fileNameOrLocalStorageOrData);\n return [2 /*return*/, this.createDatabaseConnectionWithImport(database)];\n }\n else if (checkIfFileOrLocalStorageExists) {\n throw new Error(\"File \" + fileNameOrLocalStorageOrData + \" does not exist\");\n }\n else {\n // File doesn't exist and checkIfFileOrLocalStorageExists is set to false.\n // Therefore open a database without importing an existing file.\n // File will be written on first write operation.\n return [2 /*return*/, this.createDatabaseConnectionWithImport()];\n }\n return [3 /*break*/, 7];\n case 1:\n localStorageContent = null;\n if (!this.options.useLocalForage) return [3 /*break*/, 5];\n if (!window.localforage) return [3 /*break*/, 3];\n return [4 /*yield*/, window.localforage.getItem(fileNameOrLocalStorageOrData)];\n case 2:\n localStorageContent = _a.sent();\n return [3 /*break*/, 4];\n case 3: throw new Error(\"localforage is not defined - please import localforage.js into your site\");\n case 4: return [3 /*break*/, 6];\n case 5:\n localStorageContent = PlatformTools.getGlobalVariable().localStorage.getItem(fileNameOrLocalStorageOrData);\n _a.label = 6;\n case 6:\n if (localStorageContent != null) {\n // localStorage value exists.\n return [2 /*return*/, this.createDatabaseConnectionWithImport(JSON.parse(localStorageContent))];\n }\n else if (checkIfFileOrLocalStorageExists) {\n throw new Error(\"File \" + fileNameOrLocalStorageOrData + \" does not exist\");\n }\n else {\n // localStorage value doesn't exist and checkIfFileOrLocalStorageExists is set to false.\n // Therefore open a database without importing anything.\n // localStorage value will be written on first write operation.\n return [2 /*return*/, this.createDatabaseConnectionWithImport()];\n }\n _a.label = 7;\n case 7: return [3 /*break*/, 9];\n case 8: return [2 /*return*/, this.createDatabaseConnectionWithImport(fileNameOrLocalStorageOrData)];\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saved the current database to the given file (Node.js), local storage key (browser) or\n * indexedDB key (browser with enabled useLocalForage option).\n * If no location path is given, the location path in the options (if specified) will be used.\n */\n SqljsDriver.prototype.save = function (location) {\n return __awaiter(this, void 0, void 0, function () {\n var path, content, e_1, database, databaseArray;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!location && !this.options.location) {\n throw new Error(\"No location is set, specify a location parameter or add the location option to your configuration\");\n }\n path = \"\";\n if (location) {\n path = location;\n }\n else if (this.options.location) {\n path = this.options.location;\n }\n if (!(PlatformTools.type === \"node\")) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n content = Buffer.from(this.databaseConnection.export());\n return [4 /*yield*/, PlatformTools.writeFile(path, content)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n throw new Error(\"Could not save database, error: \" + e_1);\n case 4: return [3 /*break*/, 10];\n case 5:\n database = this.databaseConnection.export();\n databaseArray = [].slice.call(database);\n if (!this.options.useLocalForage) return [3 /*break*/, 9];\n if (!window.localforage) return [3 /*break*/, 7];\n return [4 /*yield*/, window.localforage.setItem(path, JSON.stringify(databaseArray))];\n case 6:\n _a.sent();\n return [3 /*break*/, 8];\n case 7: throw new Error(\"localforage is not defined - please import localforage.js into your site\");\n case 8: return [3 /*break*/, 10];\n case 9:\n PlatformTools.getGlobalVariable().localStorage.setItem(path, JSON.stringify(databaseArray));\n _a.label = 10;\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * This gets called by the QueryRunner when a change to the database is made.\n * If a custom autoSaveCallback is specified, it get's called with the database as Uint8Array,\n * otherwise the save method is called which saves it to file (Node.js), local storage (browser)\n * or indexedDB (browser with enabled useLocalForage option).\n */\n SqljsDriver.prototype.autoSave = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.options.autoSave) return [3 /*break*/, 4];\n if (!this.options.autoSaveCallback) return [3 /*break*/, 2];\n return [4 /*yield*/, this.options.autoSaveCallback(this.export())];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.save()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns the current database as Uint8Array.\n */\n SqljsDriver.prototype.export = function () {\n return this.databaseConnection.export();\n };\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n SqljsDriver.prototype.createGeneratedMap = function (metadata, insertResult) {\n var _this = this;\n var generatedMap = metadata.generatedColumns.reduce(function (map, generatedColumn) {\n // seems to be the only way to get the inserted id, see https://github.com/kripken/sql.js/issues/77\n if (generatedColumn.isPrimary && generatedColumn.generationStrategy === \"increment\") {\n var query = \"SELECT last_insert_rowid()\";\n try {\n var result = _this.databaseConnection.exec(query);\n _this.connection.logger.logQuery(query);\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(result[0].values[0][0]));\n }\n catch (e) {\n _this.connection.logger.logQueryError(e, query, []);\n }\n }\n return map;\n }, {});\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n * If the location option is set, the database is loaded first.\n */\n SqljsDriver.prototype.createDatabaseConnection = function () {\n if (this.options.location) {\n return this.load(this.options.location, false);\n }\n return this.createDatabaseConnectionWithImport(this.options.database);\n };\n /**\n * Creates connection with an optional database.\n * If database is specified it is loaded, otherwise a new empty database is created.\n */\n SqljsDriver.prototype.createDatabaseConnectionWithImport = function (database) {\n return __awaiter(this, void 0, void 0, function () {\n var isLegacyVersion, sqlite, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n isLegacyVersion = typeof this.sqlite.Database === \"function\";\n if (!isLegacyVersion) return [3 /*break*/, 1];\n _a = this.sqlite;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.sqlite(this.options.sqlJsConfig)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n sqlite = _a;\n if (database && database.length > 0) {\n this.databaseConnection = new sqlite.Database(database);\n }\n else {\n this.databaseConnection = new sqlite.Database();\n }\n // Enable foreign keys for database\n return [2 /*return*/, new Promise(function (ok, fail) {\n try {\n _this.databaseConnection.exec(\"PRAGMA foreign_keys = ON;\");\n ok(_this.databaseConnection);\n }\n catch (e) {\n fail(e);\n }\n })];\n }\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n SqljsDriver.prototype.loadDependencies = function () {\n if (PlatformTools.type === \"browser\") {\n this.sqlite = window.SQL;\n }\n else {\n try {\n this.sqlite = PlatformTools.load(\"sql.js\");\n }\n catch (e) {\n throw new DriverPackageNotInstalledError(\"sql.js\", \"sql.js\");\n }\n }\n };\n return SqljsDriver;\n}(AbstractSqliteDriver));\nexport { SqljsDriver };\n\n//# sourceMappingURL=SqljsDriver.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NativeStoragePromise = void 0;\n/**\n * Promise-Wrapper-Klasse für Native-Storage\n */\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst JsonHelper_1 = require(\"js-helper/dist/shared/JsonHelper\");\nclass NativeStoragePromise {\n static _isElectron() {\n return (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0);\n }\n /**\n * Setzt ein Item für NativeStorage\n *\n * @param key\n * @param value\n * @returns {Promise<*>}\n */\n static setItem(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.persistent) {\n if (this._isElectron()) {\n return new Promise((res, rej) => this.electronStorage.set(this.prefix + key, value, err => {\n if (err) {\n rej(err);\n }\n else {\n res();\n }\n }));\n }\n else {\n return new Promise((res, rej) => NativeStorage.setItem(this.prefix + key, value, res, rej));\n }\n }\n else {\n this._cache[this.prefix + key] = value;\n }\n });\n }\n /**\n * Bekomme ein Item von NativeStorage\n *\n * @param key\n * @param defaultValue?\n * @returns {Promise<*>}\n */\n static getItem(key, defaultValue) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((res, rej) => {\n if (this._isElectron()) {\n this.electronStorage.get(this.prefix + key, (e, data) => {\n if (e) {\n res(Helper_1.Helper.nonNull(this._cache[this.prefix + key], defaultValue));\n }\n else {\n res(JsonHelper_1.JsonHelper.deepEqual(data, {}) ? defaultValue : data);\n }\n });\n }\n else {\n NativeStorage.getItem(this.prefix + key, data => res(Helper_1.Helper.nonNull(data, defaultValue)), (e => {\n res(Helper_1.Helper.nonNull(this._cache[this.prefix + key], defaultValue));\n }));\n }\n });\n });\n }\n /**\n * Bekomme die Keys vom NativeStorage\n *\n * @returns {Promise<*>}\n */\n static keys() {\n return __awaiter(this, void 0, void 0, function* () {\n let keys = [];\n if (this.persistent) {\n if (this._isElectron()) {\n keys = yield new Promise((res, rej) => this.electronStorage.keys((err, keys) => {\n if (err) {\n rej(err);\n }\n else {\n res(keys);\n }\n }));\n }\n else {\n keys = yield new Promise((res, rej) => NativeStorage.keys(res, rej));\n }\n }\n else {\n keys = Object.keys(this._cache);\n }\n return keys.filter(key => key.startsWith(this.prefix));\n });\n }\n /**\n * Entfernt ein Object aus dem NativeStorage\n *\n * @param key\n * @returns {Promise<*>}\n */\n static remove(key) {\n return __awaiter(this, void 0, void 0, function* () {\n delete this._cache[this.prefix + key];\n if (this._isElectron()) {\n return new Promise((res, rej) => this.electronStorage.remove(this.prefix + key, err => {\n if (err) {\n rej(err);\n }\n else {\n res();\n }\n }));\n }\n else {\n return new Promise((res, rej) => NativeStorage.remove(this.prefix + key, res, rej));\n }\n });\n }\n /**\n * Entfernt alle Objects aus dem NativeStorage\n *\n * @returns {Promise<*>}\n */\n static clear() {\n return __awaiter(this, void 0, void 0, function* () {\n let keys = yield this.keys();\n yield Helper_1.Helper.asyncForEach((keys), (key) => __awaiter(this, void 0, void 0, function* () {\n yield this.remove(key);\n }), true);\n });\n }\n static makePersistent() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.persistent) {\n this.persistent = true;\n yield Helper_1.Helper.asyncForEach(Object.keys(this._cache), (key) => __awaiter(this, void 0, void 0, function* () {\n yield this.setItem(key, this._cache[key]);\n }), true);\n }\n });\n }\n static makeUnpersistent() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.persistent) {\n let keys = yield this.keys();\n let values = {};\n yield Helper_1.Helper.asyncForEach(keys, (key) => __awaiter(this, void 0, void 0, function* () {\n values[key] = yield this.getItem(key);\n }));\n this.clear();\n this.persistent = false;\n this._cache = values;\n }\n });\n }\n}\nexports.NativeStoragePromise = NativeStoragePromise;\nNativeStoragePromise._cache = {};\nNativeStoragePromise.prefix = \"\";\nNativeStoragePromise.persistent = true;\nNativeStoragePromise.electronStorage = null;\n//# sourceMappingURL=NativeStoragePromise.js.map","import { __read, __spreadArray } from \"tslib\";\n/**\n * Database's table check constraint stored in this class.\n */\nvar TableCheck = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableCheck(options) {\n /**\n * Column that contains this constraint.\n */\n this.columnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n this.expression = options.expression;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n TableCheck.prototype.clone = function () {\n return new TableCheck({\n name: this.name,\n columnNames: this.columnNames ? __spreadArray([], __read(this.columnNames)) : [],\n expression: this.expression,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates checks from the check metadata object.\n */\n TableCheck.create = function (checkMetadata) {\n return new TableCheck({\n name: checkMetadata.name,\n expression: checkMetadata.expression\n });\n };\n return TableCheck;\n}());\nexport { TableCheck };\n\n//# sourceMappingURL=TableCheck.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when transaction is not started yet and user tries to run commit or rollback.\n */\nvar TransactionNotStartedError = /** @class */ (function (_super) {\n __extends(TransactionNotStartedError, _super);\n function TransactionNotStartedError() {\n var _this = _super.call(this) || this;\n _this.name = \"TransactionNotStartedError\";\n Object.setPrototypeOf(_this, TransactionNotStartedError.prototype);\n _this.message = \"Transaction is not started yet, start transaction before committing or rolling it back.\";\n return _this;\n }\n return TransactionNotStartedError;\n}(Error));\nexport { TransactionNotStartedError };\n\n//# sourceMappingURL=TransactionNotStartedError.js.map\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","import { __read, __spreadArray } from \"tslib\";\nimport { RandomGenerator } from \"../util/RandomGenerator\";\nimport { camelCase, snakeCase, titleCase } from \"../util/StringUtils\";\nimport { Table } from \"../schema-builder/table/Table\";\n/**\n * Naming strategy that is used by default.\n */\nvar DefaultNamingStrategy = /** @class */ (function () {\n function DefaultNamingStrategy() {\n this.nestedSetColumnNames = { left: \"nsleft\", right: \"nsright\" };\n this.materializedPathColumnName = \"mpath\";\n }\n /**\n * Normalizes table name.\n *\n * @param targetName Name of the target entity that can be used to generate a table name.\n * @param userSpecifiedName For example if user specified a table name in a decorator, e.g. @Entity(\"name\")\n */\n DefaultNamingStrategy.prototype.tableName = function (targetName, userSpecifiedName) {\n return userSpecifiedName ? userSpecifiedName : snakeCase(targetName);\n };\n /**\n * Creates a table name for a junction table of a closure table.\n *\n * @param originalClosureTableName Name of the closure table which owns this junction table.\n */\n DefaultNamingStrategy.prototype.closureJunctionTableName = function (originalClosureTableName) {\n return originalClosureTableName + \"_closure\";\n };\n DefaultNamingStrategy.prototype.columnName = function (propertyName, customName, embeddedPrefixes) {\n var name = customName || propertyName;\n if (embeddedPrefixes.length)\n return camelCase(embeddedPrefixes.join(\"_\")) + titleCase(name);\n return name;\n };\n DefaultNamingStrategy.prototype.relationName = function (propertyName) {\n return propertyName;\n };\n DefaultNamingStrategy.prototype.primaryKeyName = function (tableOrName, columnNames) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = __spreadArray([], __read(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n return \"PK_\" + RandomGenerator.sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.uniqueConstraintName = function (tableOrName, columnNames) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = __spreadArray([], __read(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n return \"UQ_\" + RandomGenerator.sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.relationConstraintName = function (tableOrName, columnNames, where) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = __spreadArray([], __read(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n if (where)\n key += \"_\" + where;\n return \"REL_\" + RandomGenerator.sha1(key).substr(0, 26);\n };\n DefaultNamingStrategy.prototype.defaultConstraintName = function (tableOrName, columnName) {\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + columnName;\n return \"DF_\" + RandomGenerator.sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.foreignKeyName = function (tableOrName, columnNames, _referencedTablePath, _referencedColumnNames) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = __spreadArray([], __read(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n return \"FK_\" + RandomGenerator.sha1(key).substr(0, 27);\n };\n DefaultNamingStrategy.prototype.indexName = function (tableOrName, columnNames, where) {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n var clonedColumnNames = __spreadArray([], __read(columnNames));\n clonedColumnNames.sort();\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + clonedColumnNames.join(\"_\");\n if (where)\n key += \"_\" + where;\n return \"IDX_\" + RandomGenerator.sha1(key).substr(0, 26);\n };\n DefaultNamingStrategy.prototype.checkConstraintName = function (tableOrName, expression, isEnum) {\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + expression;\n var name = \"CHK_\" + RandomGenerator.sha1(key).substr(0, 26);\n return isEnum ? name + \"_ENUM\" : name;\n };\n DefaultNamingStrategy.prototype.exclusionConstraintName = function (tableOrName, expression) {\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var replacedTableName = tableName.replace(\".\", \"_\");\n var key = replacedTableName + \"_\" + expression;\n return \"XCL_\" + RandomGenerator.sha1(key).substr(0, 26);\n };\n DefaultNamingStrategy.prototype.joinColumnName = function (relationName, referencedColumnName) {\n return camelCase(relationName + \"_\" + referencedColumnName);\n };\n DefaultNamingStrategy.prototype.joinTableName = function (firstTableName, secondTableName, firstPropertyName, secondPropertyName) {\n return snakeCase(firstTableName + \"_\" + firstPropertyName.replace(/\\./gi, \"_\") + \"_\" + secondTableName);\n };\n DefaultNamingStrategy.prototype.joinTableColumnDuplicationPrefix = function (columnName, index) {\n return columnName + \"_\" + index;\n };\n DefaultNamingStrategy.prototype.joinTableColumnName = function (tableName, propertyName, columnName) {\n return camelCase(tableName + \"_\" + (columnName ? columnName : propertyName));\n };\n DefaultNamingStrategy.prototype.joinTableInverseColumnName = function (tableName, propertyName, columnName) {\n return this.joinTableColumnName(tableName, propertyName, columnName);\n };\n /**\n * Adds globally set prefix to the table name.\n * This method is executed no matter if prefix was set or not.\n * Table name is either user's given table name, either name generated from entity target.\n * Note that table name comes here already normalized by #tableName method.\n */\n DefaultNamingStrategy.prototype.prefixTableName = function (prefix, tableName) {\n return prefix + tableName;\n };\n DefaultNamingStrategy.prototype.eagerJoinRelationAlias = function (alias, propertyPath) {\n return alias + \"_\" + propertyPath.replace(\".\", \"_\");\n };\n return DefaultNamingStrategy;\n}());\nexport { DefaultNamingStrategy };\n\n//# sourceMappingURL=DefaultNamingStrategy.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to execute operation allowed only if connection is opened.\n */\nvar CannotExecuteNotConnectedError = /** @class */ (function (_super) {\n __extends(CannotExecuteNotConnectedError, _super);\n function CannotExecuteNotConnectedError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotExecuteNotConnectedError\";\n Object.setPrototypeOf(_this, CannotExecuteNotConnectedError.prototype);\n _this.message = \"Cannot execute operation on \\\"\" + connectionName + \"\\\" connection because connection is not yet established.\";\n return _this;\n }\n return CannotExecuteNotConnectedError;\n}(Error));\nexport { CannotExecuteNotConnectedError };\n\n//# sourceMappingURL=CannotExecuteNotConnectedError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to connect when he already connected.\n */\nvar CannotConnectAlreadyConnectedError = /** @class */ (function (_super) {\n __extends(CannotConnectAlreadyConnectedError, _super);\n function CannotConnectAlreadyConnectedError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotConnectAlreadyConnectedError\";\n Object.setPrototypeOf(_this, CannotConnectAlreadyConnectedError.prototype);\n _this.message = \"Cannot create a \\\"\" + connectionName + \"\\\" connection because connection to the database already established.\";\n return _this;\n }\n return CannotConnectAlreadyConnectedError;\n}(Error));\nexport { CannotConnectAlreadyConnectedError };\n\n//# sourceMappingURL=CannotConnectAlreadyConnectedError.js.map\n","import { __extends } from \"tslib\";\nimport { EntitySchema } from \"../index\";\n/**\n */\nvar EntityMetadataNotFoundError = /** @class */ (function (_super) {\n __extends(EntityMetadataNotFoundError, _super);\n function EntityMetadataNotFoundError(target) {\n var _this = _super.call(this) || this;\n _this.name = \"EntityMetadataNotFound\";\n Object.setPrototypeOf(_this, EntityMetadataNotFoundError.prototype);\n var targetName;\n if (target instanceof EntitySchema) {\n targetName = target.options.name;\n }\n else if (typeof target === \"function\") {\n targetName = target.name;\n }\n else if (typeof target === \"object\" && \"name\" in target) {\n targetName = target.name;\n }\n else {\n targetName = target;\n }\n _this.message = \"No metadata for \\\"\" + targetName + \"\\\" was found.\";\n return _this;\n }\n return EntityMetadataNotFoundError;\n}(Error));\nexport { EntityMetadataNotFoundError };\n\n//# sourceMappingURL=EntityMetadataNotFoundError.js.map\n","/**\n * Represents entity of the migration in the database.\n */\nvar Migration = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Migration(id, timestamp, name, instance) {\n this.id = id;\n this.timestamp = timestamp;\n this.name = name;\n this.instance = instance;\n }\n return Migration;\n}());\nexport { Migration };\n\n//# sourceMappingURL=Migration.js.map\n","/**\n * Sql server driver requires parameter types to be specified fo input parameters used in the query.\n *\n * @see https://github.com/patriksimek/node-mssql#data-types\n */\nvar MssqlParameter = /** @class */ (function () {\n function MssqlParameter(value, type) {\n var params = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n params[_i - 2] = arguments[_i];\n }\n this.value = value;\n this.type = type;\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n this.params = [];\n this.params = params || [];\n }\n return MssqlParameter;\n}());\nexport { MssqlParameter };\n\n//# sourceMappingURL=MssqlParameter.js.map\n","import { __awaiter, __generator, __values } from \"tslib\";\nimport { Table } from \"../schema-builder/table/Table\";\nimport { Migration } from \"./Migration\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\n/**\n * Executes migrations: runs pending and reverts previously executed migrations.\n */\nvar MigrationExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function MigrationExecutor(connection, queryRunner) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates how migrations should be run in transactions.\n * all: all migrations are run in a single transaction\n * none: all migrations are run without a transaction\n * each: each migration is run in a separate transaction\n */\n this.transaction = \"all\";\n var options = this.connection.driver.options;\n this.migrationsTableName = connection.options.migrationsTableName || \"migrations\";\n this.migrationsTable = this.connection.driver.buildTableName(this.migrationsTableName, options.schema, options.database);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Tries to execute a single migration given.\n */\n MigrationExecutor.prototype.executeMigration = function (migration) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, this.withQueryRunner(function (queryRunner) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n _a.sent();\n return [4 /*yield*/, migration.instance.up(queryRunner)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.insertExecutedMigration(queryRunner, migration)];\n case 3:\n _a.sent();\n return [2 /*return*/, migration];\n }\n });\n }); })];\n });\n });\n };\n /**\n * Returns an array of all migrations.\n */\n MigrationExecutor.prototype.getAllMigrations = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve(this.getMigrations())];\n });\n });\n };\n /**\n * Returns an array of all executed migrations.\n */\n MigrationExecutor.prototype.getExecutedMigrations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, this.withQueryRunner(function (queryRunner) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n }); })];\n });\n });\n };\n /**\n * Returns an array of all pending migrations.\n */\n MigrationExecutor.prototype.getPendingMigrations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var allMigrations, executedMigrations;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getAllMigrations()];\n case 1:\n allMigrations = _a.sent();\n return [4 /*yield*/, this.getExecutedMigrations()];\n case 2:\n executedMigrations = _a.sent();\n return [2 /*return*/, allMigrations.filter(function (migration) {\n return !executedMigrations.find(function (executedMigration) {\n return executedMigration.name === migration.name;\n });\n })];\n }\n });\n });\n };\n /**\n * Inserts an executed migration.\n */\n MigrationExecutor.prototype.insertMigration = function (migration) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.withQueryRunner(function (queryRunner) {\n _this.insertExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n };\n /**\n * Deletes an executed migration.\n */\n MigrationExecutor.prototype.deleteMigration = function (migration) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.withQueryRunner(function (queryRunner) {\n _this.deleteExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n };\n /**\n * Lists all migrations and whether they have been executed or not\n * returns true if there are unapplied migrations\n */\n MigrationExecutor.prototype.showMigrations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var hasUnappliedMigrations, queryRunner, executedMigrations, allMigrations, _loop_1, this_1, allMigrations_1, allMigrations_1_1, migration;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n hasUnappliedMigrations = false;\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n // create migrations table if its not created yet\n _b.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2:\n executedMigrations = _b.sent();\n allMigrations = this.getMigrations();\n _loop_1 = function (migration) {\n var executedMigration = executedMigrations.find(function (executedMigration) { return executedMigration.name === migration.name; });\n if (executedMigration) {\n this_1.connection.logger.logSchemaBuild(\" [X] \" + migration.name);\n }\n else {\n hasUnappliedMigrations = true;\n this_1.connection.logger.logSchemaBuild(\" [ ] \" + migration.name);\n }\n };\n this_1 = this;\n try {\n for (allMigrations_1 = __values(allMigrations), allMigrations_1_1 = allMigrations_1.next(); !allMigrations_1_1.done; allMigrations_1_1 = allMigrations_1.next()) {\n migration = allMigrations_1_1.value;\n _loop_1(migration);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (allMigrations_1_1 && !allMigrations_1_1.done && (_a = allMigrations_1.return)) _a.call(allMigrations_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (!!this.queryRunner) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.release()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4: return [2 /*return*/, hasUnappliedMigrations];\n }\n });\n });\n };\n /**\n * Executes all pending migrations. Pending migrations are migrations that are not yet executed,\n * thus not saved in the database.\n */\n MigrationExecutor.prototype.executePendingMigrations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, executedMigrations, lastTimeExecutedMigration, allMigrations, successMigrations, pendingMigrations, transactionStartedByUs, _loop_2, this_2, pendingMigrations_1, pendingMigrations_1_1, migration, e_2_1, err_1, rollbackError_1;\n var e_2, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n // create migrations table if its not created yet\n _b.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2:\n executedMigrations = _b.sent();\n lastTimeExecutedMigration = this.getLatestTimestampMigration(executedMigrations);\n allMigrations = this.getMigrations();\n successMigrations = [];\n pendingMigrations = allMigrations.filter(function (migration) {\n // check if we already have executed migration\n var executedMigration = executedMigrations.find(function (executedMigration) { return executedMigration.name === migration.name; });\n if (executedMigration)\n return false;\n // migration is new and not executed. now check if its timestamp is correct\n // if (lastTimeExecutedMigration && migration.timestamp < lastTimeExecutedMigration.timestamp)\n // throw new Error(`New migration found: ${migration.name}, however this migration's timestamp is not valid. Migration's timestamp should not be older then migrations already executed in the database.`);\n // every check is passed means that migration was not run yet and we need to run it\n return true;\n });\n if (!!pendingMigrations.length) return [3 /*break*/, 5];\n this.connection.logger.logSchemaBuild(\"No migrations are pending\");\n if (!!this.queryRunner) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.release()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4: return [2 /*return*/, []];\n case 5:\n // log information about migration execution\n this.connection.logger.logSchemaBuild(executedMigrations.length + \" migrations are already loaded in the database.\");\n this.connection.logger.logSchemaBuild(allMigrations.length + \" migrations were found in the source code.\");\n if (lastTimeExecutedMigration)\n this.connection.logger.logSchemaBuild(lastTimeExecutedMigration.name + \" is the last executed migration. It was executed on \" + new Date(lastTimeExecutedMigration.timestamp).toString() + \".\");\n this.connection.logger.logSchemaBuild(pendingMigrations.length + \" migrations are new migrations that needs to be executed.\");\n transactionStartedByUs = false;\n if (!(this.transaction === \"all\" && !queryRunner.isTransactionActive)) return [3 /*break*/, 7];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 6:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 7;\n case 7:\n _b.trys.push([7, 18, 23, 26]);\n _loop_2 = function (migration) {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(this_2.transaction === \"each\" && !queryRunner.isTransactionActive)) return [3 /*break*/, 2];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 1:\n _c.sent();\n transactionStartedByUs = true;\n _c.label = 2;\n case 2: return [4 /*yield*/, migration.instance.up(queryRunner)\n .then(function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: // now when migration is executed we need to insert record about it into the database\n return [4 /*yield*/, this.insertExecutedMigration(queryRunner, migration)];\n case 1:\n _a.sent();\n if (!(this.transaction === \"each\" && transactionStartedByUs)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n }); })\n .then(function () {\n successMigrations.push(migration);\n _this.connection.logger.logSchemaBuild(\"Migration \" + migration.name + \" has been executed successfully.\");\n })];\n case 3:\n _c.sent();\n return [2 /*return*/];\n }\n });\n };\n this_2 = this;\n _b.label = 8;\n case 8:\n _b.trys.push([8, 13, 14, 15]);\n pendingMigrations_1 = __values(pendingMigrations), pendingMigrations_1_1 = pendingMigrations_1.next();\n _b.label = 9;\n case 9:\n if (!!pendingMigrations_1_1.done) return [3 /*break*/, 12];\n migration = pendingMigrations_1_1.value;\n return [5 /*yield**/, _loop_2(migration)];\n case 10:\n _b.sent();\n _b.label = 11;\n case 11:\n pendingMigrations_1_1 = pendingMigrations_1.next();\n return [3 /*break*/, 9];\n case 12: return [3 /*break*/, 15];\n case 13:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 15];\n case 14:\n try {\n if (pendingMigrations_1_1 && !pendingMigrations_1_1.done && (_a = pendingMigrations_1.return)) _a.call(pendingMigrations_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 15:\n if (!(this.transaction === \"all\" && transactionStartedByUs)) return [3 /*break*/, 17];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 16:\n _b.sent();\n _b.label = 17;\n case 17: return [3 /*break*/, 26];\n case 18:\n err_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 22];\n _b.label = 19;\n case 19:\n _b.trys.push([19, 21, , 22]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 20:\n _b.sent();\n return [3 /*break*/, 22];\n case 21:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 22];\n case 22: throw err_1;\n case 23:\n if (!!this.queryRunner) return [3 /*break*/, 25];\n return [4 /*yield*/, queryRunner.release()];\n case 24:\n _b.sent();\n _b.label = 25;\n case 25: return [7 /*endfinally*/];\n case 26: return [2 /*return*/, successMigrations];\n }\n });\n });\n };\n /**\n * Reverts last migration that were run.\n */\n MigrationExecutor.prototype.undoLastMigration = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, executedMigrations, lastTimeExecutedMigration, allMigrations, migrationToRevert, transactionStartedByUs, err_2, rollbackError_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n return [4 /*yield*/, this.createMigrationsTableIfNotExist(queryRunner)];\n case 1:\n // create migrations table if its not created yet\n _a.sent();\n return [4 /*yield*/, this.loadExecutedMigrations(queryRunner)];\n case 2:\n executedMigrations = _a.sent();\n lastTimeExecutedMigration = this.getLatestExecutedMigration(executedMigrations);\n // if no migrations found in the database then nothing to revert\n if (!lastTimeExecutedMigration) {\n this.connection.logger.logSchemaBuild(\"No migrations was found in the database. Nothing to revert!\");\n return [2 /*return*/];\n }\n allMigrations = this.getMigrations();\n migrationToRevert = allMigrations.find(function (migration) { return migration.name === lastTimeExecutedMigration.name; });\n // if no migrations found in the database then nothing to revert\n if (!migrationToRevert)\n throw new Error(\"No migration \" + lastTimeExecutedMigration.name + \" was found in the source code. Make sure you have this migration in your codebase and its included in the connection options.\");\n // log information about migration execution\n this.connection.logger.logSchemaBuild(executedMigrations.length + \" migrations are already loaded in the database.\");\n this.connection.logger.logSchemaBuild(lastTimeExecutedMigration.name + \" is the last executed migration. It was executed on \" + new Date(lastTimeExecutedMigration.timestamp).toString() + \".\");\n this.connection.logger.logSchemaBuild(\"Now reverting it...\");\n transactionStartedByUs = false;\n if (!((this.transaction !== \"none\") && !queryRunner.isTransactionActive)) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 3:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 4;\n case 4:\n _a.trys.push([4, 9, 14, 17]);\n return [4 /*yield*/, migrationToRevert.instance.down(queryRunner)];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.deleteExecutedMigration(queryRunner, migrationToRevert)];\n case 6:\n _a.sent();\n this.connection.logger.logSchemaBuild(\"Migration \" + migrationToRevert.name + \" has been reverted successfully.\");\n if (!transactionStartedByUs) return [3 /*break*/, 8];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 7:\n _a.sent();\n _a.label = 8;\n case 8: return [3 /*break*/, 17];\n case 9:\n err_2 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 13];\n _a.label = 10;\n case 10:\n _a.trys.push([10, 12, , 13]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 11:\n _a.sent();\n return [3 /*break*/, 13];\n case 12:\n rollbackError_2 = _a.sent();\n return [3 /*break*/, 13];\n case 13: throw err_2;\n case 14:\n if (!!this.queryRunner) return [3 /*break*/, 16];\n return [4 /*yield*/, queryRunner.release()];\n case 15:\n _a.sent();\n _a.label = 16;\n case 16: return [7 /*endfinally*/];\n case 17: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates table \"migrations\" that will store information about executed migrations.\n */\n MigrationExecutor.prototype.createMigrationsTableIfNotExist = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var tableExist;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // If driver is mongo no need to create\n if (this.connection.driver instanceof MongoDriver) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, queryRunner.hasTable(this.migrationsTable)];\n case 1:\n tableExist = _a.sent();\n if (!!tableExist) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.createTable(new Table({\n name: this.migrationsTable,\n columns: [\n {\n name: \"id\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationId }),\n isGenerated: true,\n generationStrategy: \"increment\",\n isPrimary: true,\n isNullable: false\n },\n {\n name: \"timestamp\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"name\",\n type: this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }),\n isNullable: false\n },\n ]\n }))];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Loads all migrations that were executed and saved into the database (sorts by id).\n */\n MigrationExecutor.prototype.loadExecutedMigrations = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var mongoRunner, migrationsRaw;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.connection.driver instanceof MongoDriver)) return [3 /*break*/, 2];\n mongoRunner = queryRunner;\n return [4 /*yield*/, mongoRunner.databaseConnection\n .db(this.connection.driver.database)\n .collection(this.migrationsTableName)\n .find()\n .sort({ \"_id\": -1 })\n .toArray()];\n case 1: return [2 /*return*/, _a.sent()];\n case 2: return [4 /*yield*/, this.connection.manager\n .createQueryBuilder(queryRunner)\n .select()\n .orderBy(this.connection.driver.escape(\"id\"), \"DESC\")\n .from(this.migrationsTable, this.migrationsTableName)\n .getRawMany()];\n case 3:\n migrationsRaw = _a.sent();\n return [2 /*return*/, migrationsRaw.map(function (migrationRaw) {\n return new Migration(parseInt(migrationRaw[\"id\"]), parseInt(migrationRaw[\"timestamp\"]), migrationRaw[\"name\"]);\n })];\n }\n });\n });\n };\n /**\n * Gets all migrations that setup for this connection.\n */\n MigrationExecutor.prototype.getMigrations = function () {\n var migrations = this.connection.migrations.map(function (migration) {\n var migrationClassName = migration.name || migration.constructor.name;\n var migrationTimestamp = parseInt(migrationClassName.substr(-13), 10);\n if (!migrationTimestamp || isNaN(migrationTimestamp)) {\n throw new Error(migrationClassName + \" migration name is wrong. Migration class name should have a JavaScript timestamp appended.\");\n }\n return new Migration(undefined, migrationTimestamp, migrationClassName, migration);\n });\n this.checkForDuplicateMigrations(migrations);\n // sort them by timestamp\n return migrations.sort(function (a, b) { return a.timestamp - b.timestamp; });\n };\n MigrationExecutor.prototype.checkForDuplicateMigrations = function (migrations) {\n var migrationNames = migrations.map(function (migration) { return migration.name; });\n var duplicates = Array.from(new Set(migrationNames.filter(function (migrationName, index) { return migrationNames.indexOf(migrationName) < index; })));\n if (duplicates.length > 0) {\n throw Error(\"Duplicate migrations: \" + duplicates.join(\", \"));\n }\n };\n /**\n * Finds the latest migration (sorts by timestamp) in the given array of migrations.\n */\n MigrationExecutor.prototype.getLatestTimestampMigration = function (migrations) {\n var sortedMigrations = migrations.map(function (migration) { return migration; }).sort(function (a, b) { return (a.timestamp - b.timestamp) * -1; });\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n };\n /**\n * Finds the latest migration in the given array of migrations.\n * PRE: Migration array must be sorted by descending id.\n */\n MigrationExecutor.prototype.getLatestExecutedMigration = function (sortedMigrations) {\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n };\n /**\n * Inserts new executed migration's data into migrations table.\n */\n MigrationExecutor.prototype.insertExecutedMigration = function (queryRunner, migration) {\n return __awaiter(this, void 0, void 0, function () {\n var values, mongoRunner, qb;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n values = {};\n if (this.connection.driver instanceof SqlServerDriver) {\n values[\"timestamp\"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }));\n values[\"name\"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }));\n }\n else {\n values[\"timestamp\"] = migration.timestamp;\n values[\"name\"] = migration.name;\n }\n if (!(this.connection.driver instanceof MongoDriver)) return [3 /*break*/, 2];\n mongoRunner = queryRunner;\n return [4 /*yield*/, mongoRunner.databaseConnection.db(this.connection.driver.database).collection(this.migrationsTableName).insert(values)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n qb = queryRunner.manager.createQueryBuilder();\n return [4 /*yield*/, qb.insert()\n .into(this.migrationsTable)\n .values(values)\n .execute()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Delete previously executed migration's data from the migrations table.\n */\n MigrationExecutor.prototype.deleteExecutedMigration = function (queryRunner, migration) {\n return __awaiter(this, void 0, void 0, function () {\n var conditions, mongoRunner, qb;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n conditions = {};\n if (this.connection.driver instanceof SqlServerDriver) {\n conditions[\"timestamp\"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }));\n conditions[\"name\"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }));\n }\n else {\n conditions[\"timestamp\"] = migration.timestamp;\n conditions[\"name\"] = migration.name;\n }\n if (!(this.connection.driver instanceof MongoDriver)) return [3 /*break*/, 2];\n mongoRunner = queryRunner;\n return [4 /*yield*/, mongoRunner.databaseConnection.db(this.connection.driver.database).collection(this.migrationsTableName).deleteOne(conditions)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n qb = queryRunner.manager.createQueryBuilder();\n return [4 /*yield*/, qb.delete()\n .from(this.migrationsTable)\n .where(qb.escape(\"timestamp\") + \" = :timestamp\")\n .andWhere(qb.escape(\"name\") + \" = :name\")\n .setParameters(conditions)\n .execute()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n MigrationExecutor.prototype.withQueryRunner = function (callback) {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 2, 5]);\n return [2 /*return*/, callback(queryRunner)];\n case 2:\n if (!!this.queryRunner) return [3 /*break*/, 4];\n return [4 /*yield*/, queryRunner.release()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n return MigrationExecutor;\n}());\nexport { MigrationExecutor };\n\n//# sourceMappingURL=MigrationExecutor.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar MissingPrimaryColumnError = /** @class */ (function (_super) {\n __extends(MissingPrimaryColumnError, _super);\n function MissingPrimaryColumnError(entityMetadata) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingPrimaryColumnError\";\n Object.setPrototypeOf(_this, MissingPrimaryColumnError.prototype);\n _this.message = \"Entity \\\"\" + entityMetadata.name + \"\\\" does not have a primary column. Primary column is required to \" +\n \"have in all your entities. Use @PrimaryColumn decorator to add a primary column to your entity.\";\n return _this;\n }\n return MissingPrimaryColumnError;\n}(Error));\nexport { MissingPrimaryColumnError };\n\n//# sourceMappingURL=MissingPrimaryColumnError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when circular relations detected with nullable set to false.\n */\nvar CircularRelationsError = /** @class */ (function (_super) {\n __extends(CircularRelationsError, _super);\n function CircularRelationsError(path) {\n var _this = _super.call(this) || this;\n _this.name = \"CircularRelationsError\";\n Object.setPrototypeOf(_this, CircularRelationsError.prototype);\n _this.message = \"Circular relations detected: \" + path + \". To resolve this issue you need to set nullable: true somewhere in this dependency structure.\";\n return _this;\n }\n return CircularRelationsError;\n}(Error));\nexport { CircularRelationsError };\n\n//# sourceMappingURL=CircularRelationsError.js.map\n","/**\n * This source code is from https://github.com/jriecken/dependency-graph\n * Just added \"any\" types here, wrapper everything into exported class.\n * We cant use a package itself because we want to package \"everything-in-it\" for the frontend users of TypeORM.\n */\n/**\n * A simple dependency graph\n */\n/**\n * Helper for creating a Depth-First-Search on\n * a set of edges.\n *\n * Detects cycles and throws an Error if one is detected.\n *\n * @param edges The set of edges to DFS through\n * @param leavesOnly Whether to only return \"leaf\" nodes (ones who have no edges)\n * @param result An array in which the results will be populated\n */\nfunction createDFS(edges, leavesOnly, result) {\n var currentPath = [];\n var visited = {};\n return function DFS(currentNode) {\n visited[currentNode] = true;\n currentPath.push(currentNode);\n edges[currentNode].forEach(function (node) {\n if (!visited[node]) {\n DFS(node);\n }\n else if (currentPath.indexOf(node) >= 0) {\n currentPath.push(node);\n throw new Error(\"Dependency Cycle Found: \" + currentPath.join(\" -> \"));\n }\n });\n currentPath.pop();\n if ((!leavesOnly || edges[currentNode].length === 0) && result.indexOf(currentNode) === -1) {\n result.push(currentNode);\n }\n };\n}\nvar DepGraph = /** @class */ (function () {\n function DepGraph() {\n this.nodes = {};\n this.outgoingEdges = {}; // Node -> [Dependency Node]\n this.incomingEdges = {}; // Node -> [Dependant Node]\n }\n /**\n * Add a node to the dependency graph. If a node already exists, this method will do nothing.\n */\n DepGraph.prototype.addNode = function (node, data) {\n if (!this.hasNode(node)) {\n // Checking the arguments length allows the user to add a node with undefined data\n if (arguments.length === 2) {\n this.nodes[node] = data;\n }\n else {\n this.nodes[node] = node;\n }\n this.outgoingEdges[node] = [];\n this.incomingEdges[node] = [];\n }\n };\n /**\n * Remove a node from the dependency graph. If a node does not exist, this method will do nothing.\n */\n DepGraph.prototype.removeNode = function (node) {\n if (this.hasNode(node)) {\n delete this.nodes[node];\n delete this.outgoingEdges[node];\n delete this.incomingEdges[node];\n [this.incomingEdges, this.outgoingEdges].forEach(function (edgeList) {\n Object.keys(edgeList).forEach(function (key) {\n var idx = edgeList[key].indexOf(node);\n if (idx >= 0) {\n edgeList[key].splice(idx, 1);\n }\n }, this);\n });\n }\n };\n /**\n * Check if a node exists in the graph\n */\n DepGraph.prototype.hasNode = function (node) {\n return this.nodes.hasOwnProperty(node);\n };\n /**\n * Get the data associated with a node name\n */\n DepGraph.prototype.getNodeData = function (node) {\n if (this.hasNode(node)) {\n return this.nodes[node];\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * Set the associated data for a given node name. If the node does not exist, this method will throw an error\n */\n DepGraph.prototype.setNodeData = function (node, data) {\n if (this.hasNode(node)) {\n this.nodes[node] = data;\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * Add a dependency between two nodes. If either of the nodes does not exist,\n * an Error will be thrown.\n */\n DepGraph.prototype.addDependency = function (from, to) {\n if (!this.hasNode(from)) {\n throw new Error(\"Node does not exist: \" + from);\n }\n if (!this.hasNode(to)) {\n throw new Error(\"Node does not exist: \" + to);\n }\n if (this.outgoingEdges[from].indexOf(to) === -1) {\n this.outgoingEdges[from].push(to);\n }\n if (this.incomingEdges[to].indexOf(from) === -1) {\n this.incomingEdges[to].push(from);\n }\n return true;\n };\n /**\n * Remove a dependency between two nodes.\n */\n DepGraph.prototype.removeDependency = function (from, to) {\n var idx;\n if (this.hasNode(from)) {\n idx = this.outgoingEdges[from].indexOf(to);\n if (idx >= 0) {\n this.outgoingEdges[from].splice(idx, 1);\n }\n }\n if (this.hasNode(to)) {\n idx = this.incomingEdges[to].indexOf(from);\n if (idx >= 0) {\n this.incomingEdges[to].splice(idx, 1);\n }\n }\n };\n /**\n * Get an array containing the nodes that the specified node depends on (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned\n * in the array.\n */\n DepGraph.prototype.dependenciesOf = function (node, leavesOnly) {\n if (this.hasNode(node)) {\n var result = [];\n var DFS = createDFS(this.outgoingEdges, leavesOnly, result);\n DFS(node);\n var idx = result.indexOf(node);\n if (idx >= 0) {\n result.splice(idx, 1);\n }\n return result;\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * get an array containing the nodes that depend on the specified node (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not have any dependants will be returned in the array.\n */\n DepGraph.prototype.dependantsOf = function (node, leavesOnly) {\n if (this.hasNode(node)) {\n var result = [];\n var DFS = createDFS(this.incomingEdges, leavesOnly, result);\n DFS(node);\n var idx = result.indexOf(node);\n if (idx >= 0) {\n result.splice(idx, 1);\n }\n return result;\n }\n else {\n throw new Error(\"Node does not exist: \" + node);\n }\n };\n /**\n * Construct the overall processing order for the dependency graph.\n *\n * Throws an Error if the graph has a cycle.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned.\n */\n DepGraph.prototype.overallOrder = function (leavesOnly) {\n var self = this;\n var result = [];\n var keys = Object.keys(this.nodes);\n if (keys.length === 0) {\n return result; // Empty graph\n }\n else {\n // Look for cycles - we run the DFS starting at all the nodes in case there\n // are several disconnected subgraphs inside this dependency graph.\n var CycleDFS_1 = createDFS(this.outgoingEdges, false, []);\n keys.forEach(function (n) {\n CycleDFS_1(n);\n });\n var DFS_1 = createDFS(this.outgoingEdges, leavesOnly, result);\n // Find all potential starting points (nodes with nothing depending on them) an\n // run a DFS starting at these points to get the order\n keys.filter(function (node) {\n return self.incomingEdges[node].length === 0;\n }).forEach(function (n) {\n DFS_1(n);\n });\n return result;\n }\n };\n return DepGraph;\n}());\nexport { DepGraph };\n\n//# sourceMappingURL=DepGraph.js.map\n","import { __extends } from \"tslib\";\nvar DataTypeNotSupportedError = /** @class */ (function (_super) {\n __extends(DataTypeNotSupportedError, _super);\n function DataTypeNotSupportedError(column, dataType, database) {\n var _this = _super.call(this) || this;\n _this.name = \"DataTypeNotSupportedError\";\n Object.setPrototypeOf(_this, DataTypeNotSupportedError.prototype);\n var type = typeof dataType === \"string\" ? dataType : dataType.name;\n _this.message = \"Data type \\\"\" + type + \"\\\" in \\\"\" + column.entityMetadata.targetName + \".\" + column.propertyName + \"\\\" is not supported by \\\"\" + database + \"\\\" database.\";\n return _this;\n }\n return DataTypeNotSupportedError;\n}(Error));\nexport { DataTypeNotSupportedError };\n\n//# sourceMappingURL=DataTypeNotSupportedError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when some option is not set in the connection options.\n */\nvar NoConnectionOptionError = /** @class */ (function (_super) {\n __extends(NoConnectionOptionError, _super);\n function NoConnectionOptionError(optionName) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, NoConnectionOptionError.prototype);\n _this.message = \"Option \\\"\" + optionName + \"\\\" is not set in your connection options, please define \\\"\" + optionName + \"\\\" option in your connection options or ormconfig.json\";\n return _this;\n }\n return NoConnectionOptionError;\n}(Error));\nexport { NoConnectionOptionError };\n\n//# sourceMappingURL=NoConnectionOptionError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when relation has array initialized which is forbidden my ORM.\n *\n * @see https://github.com/typeorm/typeorm/issues/1319\n * @see http://typeorm.io/#/relations-faq/avoid-relation-property-initializers\n */\nvar InitializedRelationError = /** @class */ (function (_super) {\n __extends(InitializedRelationError, _super);\n function InitializedRelationError(relation) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, InitializedRelationError.prototype);\n _this.message = \"Array initializations are not allowed in entity relations. \" +\n (\"Please remove array initialization (= []) from \\\"\" + relation.entityMetadata.targetName + \"#\" + relation.propertyPath + \"\\\". \") +\n \"This is ORM requirement to make relations to work properly. Refer docs for more information.\";\n return _this;\n }\n return InitializedRelationError;\n}(Error));\nexport { InitializedRelationError };\n\n//# sourceMappingURL=InitializedRelationError.js.map\n","import { MissingPrimaryColumnError } from \"../error/MissingPrimaryColumnError\";\nimport { CircularRelationsError } from \"../error/CircularRelationsError\";\nimport { DepGraph } from \"../util/DepGraph\";\nimport { DataTypeNotSupportedError } from \"../error/DataTypeNotSupportedError\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { NoConnectionOptionError } from \"../error/NoConnectionOptionError\";\nimport { InitializedRelationError } from \"../error/InitializedRelationError\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\n/// todo: add check if there are multiple tables with the same name\n/// todo: add checks when generated column / table names are too long for the specific driver\n// todo: type in function validation, inverse side function validation\n// todo: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: check if multiple tree parent metadatas in validator\n// todo: tree decorators can be used only on closure table (validation)\n// todo: throw error if parent tree metadata was not specified in a closure table\n// todo: MetadataArgsStorage: type in function validation, inverse side function validation\n// todo: MetadataArgsStorage: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: MetadataArgsStorage: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: MetadataArgsStorage: check for duplicate targets too since this check has been removed too\n// todo: check if relation decorator contains primary: true and nullable: true\n// todo: check column length, precision. scale\n// todo: MySQL index can be unique or spatial or fulltext\n/**\n * Validates built entity metadatas.\n */\nvar EntityMetadataValidator = /** @class */ (function () {\n function EntityMetadataValidator() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Validates all given entity metadatas.\n */\n EntityMetadataValidator.prototype.validateMany = function (entityMetadatas, driver) {\n var _this = this;\n entityMetadatas.forEach(function (entityMetadata) { return _this.validate(entityMetadata, entityMetadatas, driver); });\n this.validateDependencies(entityMetadatas);\n this.validateEagerRelations(entityMetadatas);\n };\n /**\n * Validates given entity metadata.\n */\n EntityMetadataValidator.prototype.validate = function (entityMetadata, allEntityMetadatas, driver) {\n // check if table metadata has an id\n if (!entityMetadata.primaryColumns.length && !entityMetadata.isJunction)\n throw new MissingPrimaryColumnError(entityMetadata);\n // validate if table is using inheritance it has a discriminator\n // also validate if discriminator values are not empty and not repeated\n if (entityMetadata.inheritancePattern === \"STI\" || entityMetadata.tableType === \"entity-child\") {\n if (!entityMetadata.discriminatorColumn)\n throw new Error(\"Entity \" + entityMetadata.name + \" using single-table inheritance, it should also have a discriminator column. Did you forget to put discriminator column options?\");\n if (typeof entityMetadata.discriminatorValue === \"undefined\")\n throw new Error(\"Entity \" + entityMetadata.name + \" has an undefined discriminator value. Discriminator value should be defined.\");\n var sameDiscriminatorValueEntityMetadata = allEntityMetadatas.find(function (metadata) {\n return metadata !== entityMetadata\n && (metadata.inheritancePattern === \"STI\" || metadata.tableType === \"entity-child\")\n && metadata.discriminatorValue === entityMetadata.discriminatorValue\n && metadata.inheritanceTree.some(function (parent) { return entityMetadata.inheritanceTree.indexOf(parent) !== -1; });\n });\n if (sameDiscriminatorValueEntityMetadata)\n throw new Error(\"Entities \" + entityMetadata.name + \" and \" + sameDiscriminatorValueEntityMetadata.name + \" have the same discriminator values. Make sure they are different while using the @ChildEntity decorator.\");\n }\n entityMetadata.relationCounts.forEach(function (relationCount) {\n if (relationCount.relation.isManyToOne || relationCount.relation.isOneToOne)\n throw new Error(\"Relation count can not be implemented on ManyToOne or OneToOne relations.\");\n });\n if (!(driver instanceof MongoDriver)) {\n entityMetadata.columns.forEach(function (column) {\n var normalizedColumn = driver.normalizeType(column);\n if (driver.supportedDataTypes.indexOf(normalizedColumn) === -1)\n throw new DataTypeNotSupportedError(column, normalizedColumn, driver.options.type);\n if (column.length && driver.withLengthColumnTypes.indexOf(normalizedColumn) === -1)\n throw new Error(\"Column \" + column.propertyName + \" of Entity \" + entityMetadata.name + \" does not support length property.\");\n if (column.type === \"enum\" && !column.enum && !column.enumName)\n throw new Error(\"Column \\\"\" + column.propertyName + \"\\\" of Entity \\\"\" + entityMetadata.name + \"\\\" is defined as enum, but missing \\\"enum\\\" or \\\"enumName\\\" properties.\");\n });\n }\n if (driver instanceof MysqlDriver || driver instanceof AuroraDataApiDriver) {\n var generatedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated && column.generationStrategy !== \"uuid\"; });\n if (generatedColumns.length > 1)\n throw new Error(\"Error in \" + entityMetadata.name + \" entity. There can be only one auto-increment column in MySql table.\");\n }\n // for mysql we are able to not define a default selected database, instead all entities can have their database\n // defined in their decorators. To make everything work either all entities must have database define and we\n // can live without database set in the connection options, either database in the connection options must be set\n if (driver instanceof MysqlDriver) {\n var metadatasWithDatabase = allEntityMetadatas.filter(function (metadata) { return metadata.database; });\n if (metadatasWithDatabase.length === 0 && !driver.database)\n throw new NoConnectionOptionError(\"database\");\n }\n if (driver instanceof SqlServerDriver) {\n var charsetColumns = entityMetadata.columns.filter(function (column) { return column.charset; });\n if (charsetColumns.length > 1)\n throw new Error(\"Character set specifying is not supported in Sql Server\");\n }\n // check if relations are all without initialized properties\n var entityInstance = entityMetadata.create();\n entityMetadata.relations.forEach(function (relation) {\n if (relation.isManyToMany || relation.isOneToMany) {\n // we skip relations for which persistence is disabled since initialization in them cannot harm somehow\n if (relation.persistenceEnabled === false)\n return;\n // get entity relation value and check if its an array\n var relationInitializedValue = relation.getEntityValue(entityInstance);\n if (Array.isArray(relationInitializedValue))\n throw new InitializedRelationError(relation);\n }\n });\n // validate relations\n entityMetadata.relations.forEach(function (relation) {\n // check join tables:\n // using JoinTable is possible only on one side of the many-to-many relation\n // todo(dima): fix\n // if (relation.joinTable) {\n // if (!relation.isManyToMany)\n // throw new UsingJoinTableIsNotAllowedError(entityMetadata, relation);\n // // if there is inverse side of the relation, then check if it does not have join table too\n // if (relation.hasInverseSide && relation.inverseRelation.joinTable)\n // throw new UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation);\n // }\n // check join columns:\n // using JoinColumn is possible only on one side of the relation and on one-to-one, many-to-one relation types\n // first check if relation is one-to-one or many-to-one\n // todo(dima): fix\n /*if (relation.joinColumn) {\n\n // join column can be applied only on one-to-one and many-to-one relations\n if (!relation.isOneToOne && !relation.isManyToOne)\n throw new UsingJoinColumnIsNotAllowedError(entityMetadata, relation);\n\n // if there is inverse side of the relation, then check if it does not have join table too\n if (relation.hasInverseSide && relation.inverseRelation.joinColumn && relation.isOneToOne)\n throw new UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation);\n\n // check if join column really has referenced column\n if (relation.joinColumn && !relation.joinColumn.referencedColumn)\n throw new Error(`Join column does not have referenced column set`);\n\n }\n\n // if its a one-to-one relation and JoinColumn is missing on both sides of the relation\n // or its one-side relation without JoinColumn we should give an error\n if (!relation.joinColumn && relation.isOneToOne && (!relation.hasInverseSide || !relation.inverseRelation.joinColumn))\n throw new MissingJoinColumnError(entityMetadata, relation);*/\n // if its a many-to-many relation and JoinTable is missing on both sides of the relation\n // or its one-side relation without JoinTable we should give an error\n // todo(dima): fix it\n // if (!relation.joinTable && relation.isManyToMany && (!relation.hasInverseSide || !relation.inverseRelation.joinTable))\n // throw new MissingJoinTableError(entityMetadata, relation);\n // todo: validate if its one-to-one and side which does not have join column MUST have inverse side\n // todo: validate if its many-to-many and side which does not have join table MUST have inverse side\n // todo: if there is a relation, and inverse side is specified only on one side, shall we give error\n // todo: with message like: \"Inverse side is specified only on one side of the relationship. Specify on other side too to prevent confusion\".\n // todo: add validation if there two entities with the same target, and show error message with description of the problem (maybe file was renamed/moved but left in output directory)\n // todo: check if there are multiple columns on the same column applied.\n // todo: check column type if is missing in relational databases (throw new Error(`Column type of ${type} cannot be determined.`);)\n // todo: include driver-specific checks. for example in mongodb empty prefixes are not allowed\n // todo: if multiple columns with same name - throw exception, including cases when columns are in embeds with same prefixes or without prefix at all\n // todo: if multiple primary key used, at least one of them must be unique or @Index decorator must be set on entity\n // todo: check if entity with duplicate names, some decorators exist\n });\n // make sure cascade remove is not set for both sides of relationships (can be set in OneToOne decorators)\n entityMetadata.relations.forEach(function (relation) {\n var isCircularCascadeRemove = relation.isCascadeRemove && relation.inverseRelation && relation.inverseRelation.isCascadeRemove;\n if (isCircularCascadeRemove)\n throw new Error(\"Relation \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" + relation.inverseRelation.entityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" both has cascade remove set. \" +\n \"This may lead to unexpected circular removals. Please set cascade remove only from one side of relationship.\");\n }); // todo: maybe better just deny removal from one to one relation without join column?\n entityMetadata.eagerRelations.forEach(function (relation) {\n });\n };\n /**\n * Validates dependencies of the entity metadatas.\n */\n EntityMetadataValidator.prototype.validateDependencies = function (entityMetadatas) {\n var graph = new DepGraph();\n entityMetadatas.forEach(function (entityMetadata) {\n graph.addNode(entityMetadata.name);\n });\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.relationsWithJoinColumns\n .filter(function (relation) { return !relation.isNullable; })\n .forEach(function (relation) {\n graph.addDependency(entityMetadata.name, relation.inverseEntityMetadata.name);\n });\n });\n try {\n graph.overallOrder();\n }\n catch (err) {\n throw new CircularRelationsError(err.toString().replace(\"Error: Dependency Cycle Found: \", \"\"));\n }\n };\n /**\n * Validates eager relations to prevent circular dependency in them.\n */\n EntityMetadataValidator.prototype.validateEagerRelations = function (entityMetadatas) {\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.eagerRelations.forEach(function (relation) {\n if (relation.inverseRelation && relation.inverseRelation.isEager)\n throw new Error(\"Circular eager relations are disallowed. \" +\n (entityMetadata.targetName + \"#\" + relation.propertyPath + \" contains \\\"eager: true\\\", and its inverse side \") +\n (relation.inverseEntityMetadata.targetName + \"#\" + relation.inverseRelation.propertyPath + \" contains \\\"eager: true\\\" as well.\") +\n \" Remove \\\"eager: true\\\" from one side of the relation.\");\n });\n });\n };\n return EntityMetadataValidator;\n}());\nexport { EntityMetadataValidator };\n\n//# sourceMappingURL=EntityMetadataValidator.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to use query runner from query runner provider after it was released.\n */\nvar QueryRunnerProviderAlreadyReleasedError = /** @class */ (function (_super) {\n __extends(QueryRunnerProviderAlreadyReleasedError, _super);\n function QueryRunnerProviderAlreadyReleasedError() {\n var _this = _super.call(this) || this;\n _this.name = \"QueryRunnerProviderAlreadyReleasedError\";\n Object.setPrototypeOf(_this, QueryRunnerProviderAlreadyReleasedError.prototype);\n _this.message = \"Database connection provided by a query runner was already released, cannot continue to use its querying methods anymore.\";\n return _this;\n }\n return QueryRunnerProviderAlreadyReleasedError;\n}(Error));\nexport { QueryRunnerProviderAlreadyReleasedError };\n\n//# sourceMappingURL=QueryRunnerProviderAlreadyReleasedError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to release entity manager that does not use single database connection.\n */\nvar NoNeedToReleaseEntityManagerError = /** @class */ (function (_super) {\n __extends(NoNeedToReleaseEntityManagerError, _super);\n function NoNeedToReleaseEntityManagerError() {\n var _this = _super.call(this) || this;\n _this.name = \"NoNeedToReleaseEntityManagerError\";\n Object.setPrototypeOf(_this, NoNeedToReleaseEntityManagerError.prototype);\n _this.message = \"Entity manager is not using single database connection and cannot be released. \" +\n \"Only entity managers created by connection#createEntityManagerWithSingleDatabaseConnection \" +\n \"methods have a single database connection and they should be released.\";\n return _this;\n }\n return NoNeedToReleaseEntityManagerError;\n}(Error));\nexport { NoNeedToReleaseEntityManagerError };\n\n//# sourceMappingURL=NoNeedToReleaseEntityManagerError.js.map\n","import { __read, __spreadArray } from \"tslib\";\n/**\n * Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc.\n */\nvar Repository = /** @class */ (function () {\n function Repository() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n Repository.prototype.createQueryBuilder = function (alias, queryRunner) {\n return this.manager.createQueryBuilder(this.metadata.target, alias || this.metadata.targetName, queryRunner || this.queryRunner);\n };\n Object.defineProperty(Repository.prototype, \"target\", {\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n get: function () {\n return this.metadata.target;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n Repository.prototype.hasId = function (entity) {\n return this.manager.hasId(this.metadata.target, entity);\n };\n /**\n * Gets entity mixed id.\n */\n Repository.prototype.getId = function (entity) {\n return this.manager.getId(this.metadata.target, entity);\n };\n /**\n * Creates a new entity instance or instances.\n * Can copy properties from the given object into new entities.\n */\n Repository.prototype.create = function (plainEntityLikeOrPlainEntityLikes) {\n return this.manager.create(this.metadata.target, plainEntityLikeOrPlainEntityLikes);\n };\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n Repository.prototype.merge = function (mergeIntoEntity) {\n var _a;\n var entityLikes = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n entityLikes[_i - 1] = arguments[_i];\n }\n return (_a = this.manager).merge.apply(_a, __spreadArray([this.metadata.target, mergeIntoEntity], __read(entityLikes)));\n };\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n Repository.prototype.preload = function (entityLike) {\n return this.manager.preload(this.metadata.target, entityLike);\n };\n /**\n * Saves one or many given entities.\n */\n Repository.prototype.save = function (entityOrEntities, options) {\n return this.manager.save(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Removes one or many given entities.\n */\n Repository.prototype.remove = function (entityOrEntities, options) {\n return this.manager.remove(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Records the delete date of one or many given entities.\n */\n Repository.prototype.softRemove = function (entityOrEntities, options) {\n return this.manager.softRemove(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Recovers one or many given entities.\n */\n Repository.prototype.recover = function (entityOrEntities, options) {\n return this.manager.recover(this.metadata.target, entityOrEntities, options);\n };\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n Repository.prototype.insert = function (entity) {\n return this.manager.insert(this.metadata.target, entity);\n };\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.update = function (criteria, partialEntity) {\n return this.manager.update(this.metadata.target, criteria, partialEntity);\n };\n /**\n * Deletes entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.delete = function (criteria) {\n return this.manager.delete(this.metadata.target, criteria);\n };\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.softDelete = function (criteria) {\n return this.manager.softDelete(this.metadata.target, criteria);\n };\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n Repository.prototype.restore = function (criteria) {\n return this.manager.restore(this.metadata.target, criteria);\n };\n /**\n * Counts entities that match given find options or conditions.\n */\n Repository.prototype.count = function (optionsOrConditions) {\n return this.manager.count(this.metadata.target, optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n */\n Repository.prototype.find = function (optionsOrConditions) {\n return this.manager.find(this.metadata.target, optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n Repository.prototype.findAndCount = function (optionsOrConditions) {\n return this.manager.findAndCount(this.metadata.target, optionsOrConditions);\n };\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n Repository.prototype.findByIds = function (ids, optionsOrConditions) {\n return this.manager.findByIds(this.metadata.target, ids, optionsOrConditions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n Repository.prototype.findOne = function (optionsOrConditions, maybeOptions) {\n return this.manager.findOne(this.metadata.target, optionsOrConditions, maybeOptions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n Repository.prototype.findOneOrFail = function (optionsOrConditions, maybeOptions) {\n return this.manager.findOneOrFail(this.metadata.target, optionsOrConditions, maybeOptions);\n };\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n Repository.prototype.query = function (query, parameters) {\n return this.manager.query(query, parameters);\n };\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n Repository.prototype.clear = function () {\n return this.manager.clear(this.metadata.target);\n };\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n Repository.prototype.increment = function (conditions, propertyPath, value) {\n return this.manager.increment(this.metadata.target, conditions, propertyPath, value);\n };\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n Repository.prototype.decrement = function (conditions, propertyPath, value) {\n return this.manager.decrement(this.metadata.target, conditions, propertyPath, value);\n };\n return Repository;\n}());\nexport { Repository };\n\n//# sourceMappingURL=Repository.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { Repository } from \"./Repository\";\nimport { AbstractSqliteDriver } from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\n/**\n * Repository with additional functions to work with trees.\n *\n * @see Repository\n */\nvar TreeRepository = /** @class */ (function (_super) {\n __extends(TreeRepository, _super);\n function TreeRepository() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // todo: implement moving\n // todo: implement removing\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Gets complete trees for all roots in the table.\n */\n TreeRepository.prototype.findTrees = function () {\n return __awaiter(this, void 0, void 0, function () {\n var roots;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.findRoots()];\n case 1:\n roots = _a.sent();\n return [4 /*yield*/, Promise.all(roots.map(function (root) { return _this.findDescendantsTree(root); }))];\n case 2:\n _a.sent();\n return [2 /*return*/, roots];\n }\n });\n });\n };\n /**\n * Roots are entities that have no ancestors. Finds them all.\n */\n TreeRepository.prototype.findRoots = function () {\n var _this = this;\n var escapeAlias = function (alias) { return _this.manager.connection.driver.escape(alias); };\n var escapeColumn = function (column) { return _this.manager.connection.driver.escape(column); };\n var parentPropertyName = this.manager.connection.namingStrategy.joinColumnName(this.metadata.treeParentRelation.propertyName, this.metadata.primaryColumns[0].propertyName);\n return this.createQueryBuilder(\"treeEntity\")\n .where(escapeAlias(\"treeEntity\") + \".\" + escapeColumn(parentPropertyName) + \" IS NULL\")\n .getMany();\n };\n /**\n * Gets all children (descendants) of the given entity. Returns them all in a flat array.\n */\n TreeRepository.prototype.findDescendants = function (entity) {\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getMany();\n };\n /**\n * Gets all children (descendants) of the given entity. Returns them in a tree - nested into each other.\n */\n TreeRepository.prototype.findDescendantsTree = function (entity) {\n var _this = this;\n // todo: throw exception if there is no column of this relation?\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getRawAndEntities()\n .then(function (entitiesAndScalars) {\n var relationMaps = _this.createRelationMaps(\"treeEntity\", entitiesAndScalars.raw);\n _this.buildChildrenEntityTree(entity, entitiesAndScalars.entities, relationMaps);\n return entity;\n });\n };\n /**\n * Gets number of descendants of the entity.\n */\n TreeRepository.prototype.countDescendants = function (entity) {\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n };\n /**\n * Creates a query builder used to get descendants of the entities in a tree.\n */\n TreeRepository.prototype.createDescendantsQueryBuilder = function (alias, closureTableAlias, entity) {\n var _this = this;\n // create shortcuts for better readability\n var escape = function (alias) { return _this.manager.connection.driver.escape(alias); };\n if (this.metadata.treeType === \"closure-table\") {\n var joinCondition = this.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = \" + escape(alias) + \".\" + escape(column.referencedColumn.propertyPath);\n }).join(\" AND \");\n var parameters_1 = {};\n var whereCondition = this.metadata.closureJunctionTable.ancestorColumns.map(function (column) {\n parameters_1[column.referencedColumn.propertyName] = column.referencedColumn.getEntityValue(entity);\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = :\" + column.referencedColumn.propertyName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters_1);\n }\n else if (this.metadata.treeType === \"nested-set\") {\n var whereCondition = alias + \".\" + this.metadata.nestedSetLeftColumn.propertyPath + \" BETWEEN \" +\n \"joined.\" + this.metadata.nestedSetLeftColumn.propertyPath + \" AND joined.\" + this.metadata.nestedSetRightColumn.propertyPath;\n var parameters_2 = {};\n var joinCondition = this.metadata.treeParentRelation.joinColumns.map(function (joinColumn) {\n var parameterName = joinColumn.referencedColumn.propertyPath.replace(\".\", \"_\");\n parameters_2[parameterName] = joinColumn.referencedColumn.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", whereCondition)\n .where(joinCondition, parameters_2);\n }\n else if (this.metadata.treeType === \"materialized-path\") {\n return this\n .createQueryBuilder(alias)\n .where(function (qb) {\n var subQuery = qb.subQuery()\n .select(_this.metadata.targetName + \".\" + _this.metadata.materializedPathColumn.propertyPath, \"path\")\n .from(_this.metadata.target, _this.metadata.targetName)\n .whereInIds(_this.metadata.getEntityIdMap(entity));\n qb.setNativeParameters(subQuery.expressionMap.nativeParameters);\n if (_this.manager.connection.driver instanceof AbstractSqliteDriver) {\n return alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \" LIKE \" + subQuery.getQuery() + \" || '%'\";\n }\n else {\n return alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \" LIKE CONCAT(\" + subQuery.getQuery() + \", '%')\";\n }\n });\n }\n throw new Error(\"Supported only in tree entities\");\n };\n /**\n * Gets all parents (ancestors) of the given entity. Returns them all in a flat array.\n */\n TreeRepository.prototype.findAncestors = function (entity) {\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getMany();\n };\n /**\n * Gets all parents (ancestors) of the given entity. Returns them in a tree - nested into each other.\n */\n TreeRepository.prototype.findAncestorsTree = function (entity) {\n var _this = this;\n // todo: throw exception if there is no column of this relation?\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getRawAndEntities()\n .then(function (entitiesAndScalars) {\n var relationMaps = _this.createRelationMaps(\"treeEntity\", entitiesAndScalars.raw);\n _this.buildParentEntityTree(entity, entitiesAndScalars.entities, relationMaps);\n return entity;\n });\n };\n /**\n * Gets number of ancestors of the entity.\n */\n TreeRepository.prototype.countAncestors = function (entity) {\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n };\n /**\n * Creates a query builder used to get ancestors of the entities in the tree.\n */\n TreeRepository.prototype.createAncestorsQueryBuilder = function (alias, closureTableAlias, entity) {\n // create shortcuts for better readability\n // const escape = (alias: string) => this.manager.connection.driver.escape(alias);\n var _this = this;\n if (this.metadata.treeType === \"closure-table\") {\n var joinCondition = this.metadata.closureJunctionTable.ancestorColumns.map(function (column) {\n return closureTableAlias + \".\" + column.propertyPath + \" = \" + alias + \".\" + column.referencedColumn.propertyPath;\n }).join(\" AND \");\n var parameters_3 = {};\n var whereCondition = this.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n parameters_3[column.referencedColumn.propertyName] = column.referencedColumn.getEntityValue(entity);\n return closureTableAlias + \".\" + column.propertyPath + \" = :\" + column.referencedColumn.propertyName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters_3);\n }\n else if (this.metadata.treeType === \"nested-set\") {\n var joinCondition = \"joined.\" + this.metadata.nestedSetLeftColumn.propertyPath + \" BETWEEN \" +\n alias + \".\" + this.metadata.nestedSetLeftColumn.propertyPath + \" AND \" + alias + \".\" + this.metadata.nestedSetRightColumn.propertyPath;\n var parameters_4 = {};\n var whereCondition = this.metadata.treeParentRelation.joinColumns.map(function (joinColumn) {\n var parameterName = joinColumn.referencedColumn.propertyPath.replace(\".\", \"_\");\n parameters_4[parameterName] = joinColumn.referencedColumn.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", joinCondition)\n .where(whereCondition, parameters_4);\n }\n else if (this.metadata.treeType === \"materialized-path\") {\n // example: SELECT * FROM category category WHERE (SELECT mpath FROM `category` WHERE id = 2) LIKE CONCAT(category.mpath, '%');\n return this\n .createQueryBuilder(alias)\n .where(function (qb) {\n var subQuery = qb.subQuery()\n .select(_this.metadata.targetName + \".\" + _this.metadata.materializedPathColumn.propertyPath, \"path\")\n .from(_this.metadata.target, _this.metadata.targetName)\n .whereInIds(_this.metadata.getEntityIdMap(entity));\n qb.setNativeParameters(subQuery.expressionMap.nativeParameters);\n if (_this.manager.connection.driver instanceof AbstractSqliteDriver) {\n return subQuery.getQuery() + \" LIKE \" + alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \" || '%'\";\n }\n else {\n return subQuery.getQuery() + \" LIKE CONCAT(\" + alias + \".\" + _this.metadata.materializedPathColumn.propertyPath + \", '%')\";\n }\n });\n }\n throw new Error(\"Supported only in tree entities\");\n };\n /**\n * Moves entity to the children of then given entity.\n *\n move(entity: Entity, to: Entity): Promise {\n return Promise.resolve();\n } */\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n TreeRepository.prototype.createRelationMaps = function (alias, rawResults) {\n var _this = this;\n return rawResults.map(function (rawResult) {\n var joinColumn = _this.metadata.treeParentRelation.joinColumns[0];\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n var joinColumnName = joinColumn.givenDatabaseName || joinColumn.databaseName;\n var id = rawResult[alias + \"_\" + _this.metadata.primaryColumns[0].databaseName];\n var parentId = rawResult[alias + \"_\" + joinColumnName];\n return {\n id: _this.manager.connection.driver.prepareHydratedValue(id, _this.metadata.primaryColumns[0]),\n parentId: _this.manager.connection.driver.prepareHydratedValue(parentId, joinColumn),\n };\n });\n };\n TreeRepository.prototype.buildChildrenEntityTree = function (entity, entities, relationMaps) {\n var _this = this;\n var childProperty = this.metadata.treeChildrenRelation.propertyName;\n var parentEntityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n var childRelationMaps = relationMaps.filter(function (relationMap) { return relationMap.parentId === parentEntityId; });\n var childIds = new Set(childRelationMaps.map(function (relationMap) { return relationMap.id; }));\n entity[childProperty] = entities.filter(function (entity) { return childIds.has(_this.metadata.primaryColumns[0].getEntityValue(entity)); });\n entity[childProperty].forEach(function (childEntity) {\n _this.buildChildrenEntityTree(childEntity, entities, relationMaps);\n });\n };\n TreeRepository.prototype.buildParentEntityTree = function (entity, entities, relationMaps) {\n var _this = this;\n var parentProperty = this.metadata.treeParentRelation.propertyName;\n var entityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n var parentRelationMap = relationMaps.find(function (relationMap) { return relationMap.id === entityId; });\n var parentEntity = entities.find(function (entity) {\n if (!parentRelationMap)\n return false;\n return _this.metadata.primaryColumns[0].getEntityValue(entity) === parentRelationMap.parentId;\n });\n if (parentEntity) {\n entity[parentProperty] = parentEntity;\n this.buildParentEntityTree(entity[parentProperty], entities, relationMaps);\n }\n };\n return TreeRepository;\n}(Repository));\nexport { TreeRepository };\n\n//# sourceMappingURL=TreeRepository.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when relations specified in the find options were not found in the entities.\n*/\nvar FindRelationsNotFoundError = /** @class */ (function (_super) {\n __extends(FindRelationsNotFoundError, _super);\n function FindRelationsNotFoundError(notFoundRelations) {\n var _this = _super.call(this) || this;\n Object.setPrototypeOf(_this, FindRelationsNotFoundError.prototype);\n if (notFoundRelations.length === 1) {\n _this.message = \"Relation \\\"\" + notFoundRelations[0] + \"\\\" was not found; please check if it is correct and really exists in your entity.\";\n }\n else {\n _this.message = \"Relations \" + notFoundRelations.map(function (relation) { return \"\\\"\" + relation + \"\\\"\"; }).join(\", \") + \" were not found; please check if relations are correct and they exist in your entities.\";\n }\n return _this;\n }\n return FindRelationsNotFoundError;\n}(Error));\nexport { FindRelationsNotFoundError };\n\n//# sourceMappingURL=FindRelationsNotFoundError.js.map\n","import { FindRelationsNotFoundError } from \"../error/FindRelationsNotFoundError\";\nimport { shorten } from \"../util/StringUtils\";\n/**\n * Utilities to work with FindOptions.\n */\nvar FindOptionsUtils = /** @class */ (function () {\n function FindOptionsUtils() {\n }\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if given object is really instance of FindOneOptions interface.\n */\n FindOptionsUtils.isFindOneOptions = function (obj) {\n var possibleOptions = obj;\n return possibleOptions &&\n (Array.isArray(possibleOptions.select) ||\n possibleOptions.where instanceof Object ||\n typeof possibleOptions.where === \"string\" ||\n Array.isArray(possibleOptions.relations) ||\n possibleOptions.join instanceof Object ||\n possibleOptions.order instanceof Object ||\n possibleOptions.cache instanceof Object ||\n typeof possibleOptions.cache === \"boolean\" ||\n typeof possibleOptions.cache === \"number\" ||\n possibleOptions.lock instanceof Object ||\n possibleOptions.loadRelationIds instanceof Object ||\n typeof possibleOptions.loadRelationIds === \"boolean\" ||\n typeof possibleOptions.loadEagerRelations === \"boolean\" ||\n typeof possibleOptions.withDeleted === \"boolean\" ||\n typeof possibleOptions.transaction === \"boolean\");\n };\n /**\n * Checks if given object is really instance of FindManyOptions interface.\n */\n FindOptionsUtils.isFindManyOptions = function (obj) {\n var possibleOptions = obj;\n return possibleOptions && (this.isFindOneOptions(possibleOptions) ||\n typeof possibleOptions.skip === \"number\" ||\n typeof possibleOptions.take === \"number\" ||\n typeof possibleOptions.skip === \"string\" ||\n typeof possibleOptions.take === \"string\");\n };\n /**\n * Checks if given object is really instance of FindOptions interface.\n */\n FindOptionsUtils.extractFindManyOptionsAlias = function (object) {\n if (this.isFindManyOptions(object) && object.join)\n return object.join.alias;\n return undefined;\n };\n /**\n * Applies give find many options to the given query builder.\n */\n FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder = function (qb, options) {\n if (this.isFindManyOptions(options))\n return this.applyOptionsToQueryBuilder(qb, options);\n if (options)\n return qb.where(options);\n return qb;\n };\n /**\n * Applies give find options to the given query builder.\n */\n FindOptionsUtils.applyOptionsToQueryBuilder = function (qb, options) {\n // if options are not set then simply return query builder. This is made for simplicity of usage.\n if (!options || (!this.isFindOneOptions(options) && !this.isFindManyOptions(options)))\n return qb;\n if (options.transaction === true) {\n qb.expressionMap.useTransaction = true;\n }\n if (!qb.expressionMap.mainAlias || !qb.expressionMap.mainAlias.hasMetadata)\n return qb;\n var metadata = qb.expressionMap.mainAlias.metadata;\n // apply all options from FindOptions\n if (options.select) {\n qb.select([]);\n options.select.forEach(function (select) {\n if (!metadata.findColumnWithPropertyPath(String(select)))\n throw new Error(select + \" column was not found in the \" + metadata.name + \" entity.\");\n qb.addSelect(qb.alias + \".\" + select);\n });\n }\n if (options.where)\n qb.where(options.where);\n if (options.skip)\n qb.skip(options.skip);\n if (options.take)\n qb.take(options.take);\n if (options.order)\n Object.keys(options.order).forEach(function (key) {\n var order = options.order[key];\n if (!metadata.findColumnWithPropertyPath(key))\n throw new Error(key + \" column was not found in the \" + metadata.name + \" entity.\");\n switch (order) {\n case 1:\n qb.addOrderBy(qb.alias + \".\" + key, \"ASC\");\n break;\n case -1:\n qb.addOrderBy(qb.alias + \".\" + key, \"DESC\");\n break;\n case \"ASC\":\n qb.addOrderBy(qb.alias + \".\" + key, \"ASC\");\n break;\n case \"DESC\":\n qb.addOrderBy(qb.alias + \".\" + key, \"DESC\");\n break;\n }\n });\n if (options.relations) {\n var allRelations = options.relations.map(function (relation) { return relation; });\n this.applyRelationsRecursively(qb, allRelations, qb.expressionMap.mainAlias.name, qb.expressionMap.mainAlias.metadata, \"\");\n // recursive removes found relations from allRelations array\n // if there are relations left in this array it means those relations were not found in the entity structure\n // so, we give an exception about not found relations\n if (allRelations.length > 0)\n throw new FindRelationsNotFoundError(allRelations);\n }\n if (options.join) {\n if (options.join.leftJoin)\n Object.keys(options.join.leftJoin).forEach(function (key) {\n qb.leftJoin(options.join.leftJoin[key], key);\n });\n if (options.join.innerJoin)\n Object.keys(options.join.innerJoin).forEach(function (key) {\n qb.innerJoin(options.join.innerJoin[key], key);\n });\n if (options.join.leftJoinAndSelect)\n Object.keys(options.join.leftJoinAndSelect).forEach(function (key) {\n qb.leftJoinAndSelect(options.join.leftJoinAndSelect[key], key);\n });\n if (options.join.innerJoinAndSelect)\n Object.keys(options.join.innerJoinAndSelect).forEach(function (key) {\n qb.innerJoinAndSelect(options.join.innerJoinAndSelect[key], key);\n });\n }\n if (options.cache) {\n if (options.cache instanceof Object) {\n var cache = options.cache;\n qb.cache(cache.id, cache.milliseconds);\n }\n else {\n qb.cache(options.cache);\n }\n }\n if (options.lock) {\n if (options.lock.mode === \"optimistic\") {\n qb.setLock(options.lock.mode, options.lock.version);\n }\n else if (options.lock.mode === \"pessimistic_read\" || options.lock.mode === \"pessimistic_write\" || options.lock.mode === \"dirty_read\" || options.lock.mode === \"pessimistic_partial_write\" || options.lock.mode === \"pessimistic_write_or_fail\") {\n var tableNames = options.lock.tables ? options.lock.tables.map(function (table) {\n var tableAlias = qb.expressionMap.aliases.find(function (alias) {\n return alias.metadata.tableNameWithoutPrefix === table;\n });\n if (!tableAlias) {\n throw new Error(\"\\\"\" + table + \"\\\" is not part of this query\");\n }\n return qb.escape(tableAlias.name);\n }) : undefined;\n qb.setLock(options.lock.mode, undefined, tableNames);\n }\n }\n if (options.withDeleted) {\n qb.withDeleted();\n }\n if (options.loadRelationIds === true) {\n qb.loadAllRelationIds();\n }\n else if (options.loadRelationIds instanceof Object) {\n qb.loadAllRelationIds(options.loadRelationIds);\n }\n return qb;\n };\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n /**\n * Adds joins for all relations and sub-relations of the given relations provided in the find options.\n */\n FindOptionsUtils.applyRelationsRecursively = function (qb, allRelations, alias, metadata, prefix) {\n var _this = this;\n // find all relations that match given prefix\n var matchedBaseRelations = [];\n if (prefix) {\n var regexp_1 = new RegExp(\"^\" + prefix.replace(\".\", \"\\\\.\") + \"\\\\.\");\n matchedBaseRelations = allRelations\n .filter(function (relation) { return relation.match(regexp_1); })\n .map(function (relation) { return relation.replace(regexp_1, \"\"); })\n .filter(function (relation) { return metadata.findRelationWithPropertyPath(relation); });\n }\n else {\n matchedBaseRelations = allRelations.filter(function (relation) { return metadata.findRelationWithPropertyPath(relation); });\n }\n // go through all matched relations and add join for them\n matchedBaseRelations.forEach(function (relation) {\n // generate a relation alias\n var relationAlias = alias + \"__\" + relation;\n // shorten it if needed by the driver\n if (qb.connection.driver.maxAliasLength && relationAlias.length > qb.connection.driver.maxAliasLength) {\n relationAlias = shorten(relationAlias);\n }\n // add a join for the found relation\n var selection = alias + \".\" + relation;\n qb.leftJoinAndSelect(selection, relationAlias);\n // join the eager relations of the found relation\n var relMetadata = metadata.relations.find(function (metadata) { return metadata.propertyName === relation; });\n if (relMetadata) {\n _this.joinEagerRelations(qb, relationAlias, relMetadata.inverseEntityMetadata);\n }\n // remove added relations from the allRelations array, this is needed to find all not found relations at the end\n allRelations.splice(allRelations.indexOf(prefix ? prefix + \".\" + relation : relation), 1);\n // try to find sub-relations\n var join = qb.expressionMap.joinAttributes.find(function (join) { return join.entityOrProperty === selection; });\n _this.applyRelationsRecursively(qb, allRelations, join.alias.name, join.metadata, prefix ? prefix + \".\" + relation : relation);\n });\n };\n FindOptionsUtils.joinEagerRelations = function (qb, alias, metadata) {\n var _this = this;\n metadata.eagerRelations.forEach(function (relation) {\n var relationAlias = qb.connection.namingStrategy.eagerJoinRelationAlias(alias, relation.propertyPath);\n qb.leftJoinAndSelect(alias + \".\" + relation.propertyPath, relationAlias);\n _this.joinEagerRelations(qb, relationAlias, relation.inverseEntityMetadata);\n });\n };\n return FindOptionsUtils;\n}());\nexport { FindOptionsUtils };\n\n//# sourceMappingURL=FindOptionsUtils.js.map\n","/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nvar PlainObjectToNewEntityTransformer = /** @class */ (function () {\n function PlainObjectToNewEntityTransformer() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n PlainObjectToNewEntityTransformer.prototype.transform = function (newEntity, object, metadata, getLazyRelationsPromiseValue) {\n if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; }\n // console.log(\"groupAndTransform entity:\", newEntity);\n // console.log(\"groupAndTransform object:\", object);\n this.groupAndTransform(newEntity, object, metadata, getLazyRelationsPromiseValue);\n // console.log(\"result:\", newEntity);\n return newEntity;\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n PlainObjectToNewEntityTransformer.prototype.groupAndTransform = function (entity, object, metadata, getLazyRelationsPromiseValue) {\n // console.log(\"groupAndTransform entity:\", entity);\n // console.log(\"groupAndTransform object:\", object);\n var _this = this;\n if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; }\n // copy regular column properties from the given object\n metadata.nonVirtualColumns.forEach(function (column) {\n var objectColumnValue = column.getEntityValue(object);\n if (objectColumnValue !== undefined)\n column.setEntityValue(entity, objectColumnValue);\n });\n // // copy relation properties from the given object\n if (metadata.relations.length) {\n metadata.relations.forEach(function (relation) {\n var entityRelatedValue = relation.getEntityValue(entity);\n var objectRelatedValue = relation.getEntityValue(object, getLazyRelationsPromiseValue);\n if (objectRelatedValue === undefined)\n return;\n if (relation.isOneToMany || relation.isManyToMany) {\n if (!Array.isArray(objectRelatedValue))\n return;\n if (!entityRelatedValue) {\n entityRelatedValue = [];\n relation.setEntityValue(entity, entityRelatedValue);\n }\n objectRelatedValue.forEach(function (objectRelatedValueItem) {\n // check if we have this item from the merging object in the original entity we merge into\n var objectRelatedValueEntity = entityRelatedValue.find(function (entityRelatedValueItem) {\n return relation.inverseEntityMetadata.compareEntities(objectRelatedValueItem, entityRelatedValueItem);\n });\n // if such item already exist then merge new data into it, if its not we create a new entity and merge it into the array\n if (!objectRelatedValueEntity) {\n objectRelatedValueEntity = relation.inverseEntityMetadata.create();\n entityRelatedValue.push(objectRelatedValueEntity);\n }\n _this.groupAndTransform(objectRelatedValueEntity, objectRelatedValueItem, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n });\n }\n else {\n // if related object isn't an object (direct relation id for example)\n // we just set it to the entity relation, we don't need anything more from it\n // however we do it only if original entity does not have this relation set to object\n // to prevent full overriding of objects\n if (!(objectRelatedValue instanceof Object)) {\n if (!(entityRelatedValue instanceof Object))\n relation.setEntityValue(entity, objectRelatedValue);\n return;\n }\n if (!entityRelatedValue) {\n entityRelatedValue = relation.inverseEntityMetadata.create();\n relation.setEntityValue(entity, entityRelatedValue);\n }\n _this.groupAndTransform(entityRelatedValue, objectRelatedValue, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n }\n });\n }\n };\n return PlainObjectToNewEntityTransformer;\n}());\nexport { PlainObjectToNewEntityTransformer };\n\n//# sourceMappingURL=PlainObjectToNewEntityTransformer.js.map\n","import { __awaiter, __generator, __read } from \"tslib\";\n/**\n */\nvar LoadMapItem = /** @class */ (function () {\n function LoadMapItem(plainEntity, metadata, parentLoadMapItem, relation) {\n this.plainEntity = plainEntity;\n this.metadata = metadata;\n this.parentLoadMapItem = parentLoadMapItem;\n this.relation = relation;\n }\n Object.defineProperty(LoadMapItem.prototype, \"target\", {\n get: function () {\n return this.metadata.target;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LoadMapItem.prototype, \"id\", {\n get: function () {\n return this.metadata.getEntityIdMixedMap(this.plainEntity);\n },\n enumerable: false,\n configurable: true\n });\n return LoadMapItem;\n}());\nvar LoadMap = /** @class */ (function () {\n function LoadMap() {\n this.loadMapItems = [];\n }\n Object.defineProperty(LoadMap.prototype, \"mainLoadMapItem\", {\n get: function () {\n return this.loadMapItems.find(function (item) { return !item.relation && !item.parentLoadMapItem; });\n },\n enumerable: false,\n configurable: true\n });\n LoadMap.prototype.addLoadMap = function (newLoadMap) {\n var item = this.loadMapItems.find(function (item) { return item.target === newLoadMap.target && item.id === newLoadMap.id; });\n if (!item)\n this.loadMapItems.push(newLoadMap);\n };\n LoadMap.prototype.fillEntities = function (target, entities) {\n var _this = this;\n entities.forEach(function (entity) {\n var item = _this.loadMapItems.find(function (loadMapItem) {\n return loadMapItem.target === target && loadMapItem.metadata.compareEntities(entity, loadMapItem.plainEntity);\n });\n if (item)\n item.entity = entity;\n });\n };\n LoadMap.prototype.groupByTargetIds = function () {\n var groups = [];\n this.loadMapItems.forEach(function (loadMapItem) {\n var group = groups.find(function (group) { return group.target === loadMapItem.target; });\n if (!group) {\n group = { target: loadMapItem.target, ids: [] };\n groups.push(group);\n }\n group.ids.push(loadMapItem.id);\n });\n return groups;\n };\n return LoadMap;\n}());\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nvar PlainObjectToDatabaseEntityTransformer = /** @class */ (function () {\n function PlainObjectToDatabaseEntityTransformer(manager) {\n this.manager = manager;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n PlainObjectToDatabaseEntityTransformer.prototype.transform = function (plainObject, metadata) {\n return __awaiter(this, void 0, void 0, function () {\n var loadMap, fillLoadMap;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return [2 /*return*/, Promise.reject(\"Given object does not have a primary column, cannot transform it to database entity.\")];\n loadMap = new LoadMap();\n fillLoadMap = function (entity, entityMetadata, parentLoadMapItem, relation) {\n var item = new LoadMapItem(entity, entityMetadata, parentLoadMapItem, relation);\n loadMap.addLoadMap(item);\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter(function (value) { return value !== null && value !== undefined; })\n .forEach(function (_a) {\n var _b = __read(_a, 3), relation = _b[0], value = _b[1], inverseEntityMetadata = _b[2];\n return fillLoadMap(value, inverseEntityMetadata, item, relation);\n });\n };\n fillLoadMap(plainObject, metadata);\n // load all entities and store them in the load map\n return [4 /*yield*/, Promise.all(loadMap.groupByTargetIds().map(function (targetWithIds) {\n return _this.manager\n .findByIds(targetWithIds.target, targetWithIds.ids)\n .then(function (entities) { return loadMap.fillEntities(targetWithIds.target, entities); });\n }))];\n case 1:\n // load all entities and store them in the load map\n _a.sent();\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach(function (loadMapItem) {\n if (!loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity)\n return;\n if (loadMapItem.relation.isManyToMany || loadMapItem.relation.isOneToMany) {\n if (!loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName])\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = [];\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName].push(loadMapItem.entity);\n }\n else {\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = loadMapItem.entity;\n }\n });\n return [2 /*return*/, loadMap.mainLoadMapItem ? loadMap.mainLoadMapItem.entity : undefined];\n }\n });\n });\n };\n return PlainObjectToDatabaseEntityTransformer;\n}());\nexport { PlainObjectToDatabaseEntityTransformer };\n\n//# sourceMappingURL=PlainObjectToDatabaseEntityTransformer.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown if custom repository was not found.\n */\nvar CustomRepositoryNotFoundError = /** @class */ (function (_super) {\n __extends(CustomRepositoryNotFoundError, _super);\n function CustomRepositoryNotFoundError(repository) {\n var _this = _super.call(this) || this;\n _this.name = \"CustomRepositoryNotFoundError\";\n Object.setPrototypeOf(_this, CustomRepositoryNotFoundError.prototype);\n _this.message = \"Custom repository \" + (repository instanceof Function ? repository.name : repository.constructor.name) + \" was not found. \" +\n \"Did you forgot to put @EntityRepository decorator on it?\";\n return _this;\n }\n return CustomRepositoryNotFoundError;\n}(Error));\nexport { CustomRepositoryNotFoundError };\n\n//# sourceMappingURL=CustomRepositoryNotFoundError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown if custom repositories that extend AbstractRepository classes does not have managed entity.\n */\nvar CustomRepositoryDoesNotHaveEntityError = /** @class */ (function (_super) {\n __extends(CustomRepositoryDoesNotHaveEntityError, _super);\n function CustomRepositoryDoesNotHaveEntityError(repository) {\n var _this = _super.call(this) || this;\n _this.name = \"CustomRepositoryDoesNotHaveEntityError\";\n Object.setPrototypeOf(_this, CustomRepositoryDoesNotHaveEntityError.prototype);\n _this.message = \"Custom repository \" + (repository instanceof Function ? repository.name : repository.constructor.name) + \" does not have managed entity. \" +\n \"Did you forget to specify entity for it @EntityRepository(MyEntity)? \";\n return _this;\n }\n return CustomRepositoryDoesNotHaveEntityError;\n}(Error));\nexport { CustomRepositoryDoesNotHaveEntityError };\n\n//# sourceMappingURL=CustomRepositoryDoesNotHaveEntityError.js.map\n","import { CustomRepositoryDoesNotHaveEntityError } from \"../error/CustomRepositoryDoesNotHaveEntityError\";\nimport { getMetadataArgsStorage } from \"../index\";\nimport { CustomRepositoryNotFoundError } from \"../error/CustomRepositoryNotFoundError\";\n/**\n * Provides abstract class for custom repositories that do not inherit from original orm Repository.\n * Contains all most-necessary methods to simplify code in the custom repository.\n * All methods are protected thus not exposed and it allows to create encapsulated custom repository.\n *\n * @experimental\n */\nvar AbstractRepository = /** @class */ (function () {\n function AbstractRepository() {\n }\n Object.defineProperty(AbstractRepository.prototype, \"repository\", {\n // -------------------------------------------------------------------------\n // Protected Accessors\n // -------------------------------------------------------------------------\n /**\n * Gets the original ORM repository for the entity that is managed by this repository.\n * If current repository does not manage any entity, then exception will be thrown.\n */\n get: function () {\n var target = this.getCustomRepositoryTarget(this);\n if (!target)\n throw new CustomRepositoryDoesNotHaveEntityError(this.constructor);\n return this.manager.getRepository(target);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AbstractRepository.prototype, \"treeRepository\", {\n /**\n * Gets the original ORM tree repository for the entity that is managed by this repository.\n * If current repository does not manage any entity, then exception will be thrown.\n */\n get: function () {\n var target = this.getCustomRepositoryTarget(this);\n if (!target)\n throw new CustomRepositoryDoesNotHaveEntityError(this.constructor);\n return this.manager.getTreeRepository(target);\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new query builder for the repository's entity that can be used to build a sql query.\n * If current repository does not manage any entity, then exception will be thrown.\n */\n AbstractRepository.prototype.createQueryBuilder = function (alias) {\n var target = this.getCustomRepositoryTarget(this.constructor);\n if (!target)\n throw new CustomRepositoryDoesNotHaveEntityError(this.constructor);\n return this.manager.getRepository(target).createQueryBuilder(alias);\n };\n /**\n * Creates a new query builder for the given entity that can be used to build a sql query.\n */\n AbstractRepository.prototype.createQueryBuilderFor = function (entity, alias) {\n return this.getRepositoryFor(entity).createQueryBuilder(alias);\n };\n /**\n * Gets the original ORM repository for the given entity class.\n */\n AbstractRepository.prototype.getRepositoryFor = function (entity) {\n return this.manager.getRepository(entity);\n };\n /**\n * Gets the original ORM tree repository for the given entity class.\n */\n AbstractRepository.prototype.getTreeRepositoryFor = function (entity) {\n return this.manager.getTreeRepository(entity);\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n /**\n * Gets custom repository's managed entity.\n * If given custom repository does not manage any entity then undefined will be returned.\n */\n AbstractRepository.prototype.getCustomRepositoryTarget = function (customRepository) {\n var entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find(function (repository) {\n return repository.target === (customRepository instanceof Function ? customRepository : customRepository.constructor);\n });\n if (!entityRepositoryMetadataArgs)\n throw new CustomRepositoryNotFoundError(customRepository);\n return entityRepositoryMetadataArgs.entity;\n };\n return AbstractRepository;\n}());\nexport { AbstractRepository };\n\n//# sourceMappingURL=AbstractRepository.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown if custom repository inherits Repository class however entity is not set in @EntityRepository decorator.\n */\nvar CustomRepositoryCannotInheritRepositoryError = /** @class */ (function (_super) {\n __extends(CustomRepositoryCannotInheritRepositoryError, _super);\n function CustomRepositoryCannotInheritRepositoryError(repository) {\n var _this = _super.call(this) || this;\n _this.name = \"CustomRepositoryCannotInheritRepositoryError\";\n Object.setPrototypeOf(_this, CustomRepositoryCannotInheritRepositoryError.prototype);\n _this.message = \"Custom entity repository \" + (repository instanceof Function ? repository.name : repository.constructor.name) + \" \" +\n \" cannot inherit Repository class without entity being set in the @EntityRepository decorator.\";\n return _this;\n }\n return CustomRepositoryCannotInheritRepositoryError;\n}(Error));\nexport { CustomRepositoryCannotInheritRepositoryError };\n\n//# sourceMappingURL=CustomRepositoryCannotInheritRepositoryError.js.map\n","import { __extends } from \"tslib\";\nimport { EntitySchema } from \"../index\";\n/**\n * Thrown when repository for the given class is not found.\n */\nvar RepositoryNotFoundError = /** @class */ (function (_super) {\n __extends(RepositoryNotFoundError, _super);\n function RepositoryNotFoundError(connectionName, entityClass) {\n var _this = _super.call(this) || this;\n _this.name = \"RepositoryNotFoundError\";\n Object.setPrototypeOf(_this, RepositoryNotFoundError.prototype);\n var targetName;\n if (entityClass instanceof EntitySchema) {\n targetName = entityClass.options.name;\n }\n else if (typeof entityClass === \"function\") {\n targetName = entityClass.name;\n }\n else if (typeof entityClass === \"object\" && \"name\" in entityClass) {\n targetName = entityClass.name;\n }\n else {\n targetName = entityClass;\n }\n _this.message = \"No repository for \\\"\" + targetName + \"\\\" was found. Looks like this entity is not registered in \" +\n (\"current \\\"\" + connectionName + \"\\\" connection?\");\n return _this;\n }\n return RepositoryNotFoundError;\n}(Error));\nexport { RepositoryNotFoundError };\n\n//# sourceMappingURL=RepositoryNotFoundError.js.map\n","import { __extends } from \"tslib\";\nimport { EntitySchema } from \"../index\";\n/**\n * Thrown when repository for the given class is not found.\n */\nvar RepositoryNotTreeError = /** @class */ (function (_super) {\n __extends(RepositoryNotTreeError, _super);\n function RepositoryNotTreeError(entityClass) {\n var _this = _super.call(this) || this;\n _this.name = \"RepositoryNotTreeError\";\n Object.setPrototypeOf(_this, RepositoryNotTreeError.prototype);\n var targetName;\n if (entityClass instanceof EntitySchema) {\n targetName = entityClass.options.name;\n }\n else if (typeof entityClass === \"function\") {\n targetName = entityClass.name;\n }\n else if (typeof entityClass === \"object\" && \"name\" in entityClass) {\n targetName = entityClass.name;\n }\n else {\n targetName = entityClass;\n }\n _this.message = \"Repository of the \\\"\" + targetName + \"\\\" class is not a TreeRepository. Try to apply @Tree decorator on your entity.\";\n return _this;\n }\n return RepositoryNotTreeError;\n}(Error));\nexport { RepositoryNotTreeError };\n\n//# sourceMappingURL=RepositoryNotTreeError.js.map\n","import { TreeRepository } from \"./TreeRepository\";\nimport { Repository } from \"./Repository\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { MongoRepository } from \"./MongoRepository\";\n/**\n * Factory used to create different types of repositories.\n */\nvar RepositoryFactory = /** @class */ (function () {\n function RepositoryFactory() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a repository.\n */\n RepositoryFactory.prototype.create = function (manager, metadata, queryRunner) {\n if (metadata.treeType) {\n // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed,\n // however we need these properties for internal work of the class\n var repository = new TreeRepository();\n Object.assign(repository, {\n manager: manager,\n metadata: metadata,\n queryRunner: queryRunner,\n });\n return repository;\n }\n else {\n // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed,\n // however we need these properties for internal work of the class\n var repository = void 0;\n if (manager.connection.driver instanceof MongoDriver) {\n repository = new MongoRepository();\n }\n else {\n repository = new Repository();\n }\n Object.assign(repository, {\n manager: manager,\n metadata: metadata,\n queryRunner: queryRunner,\n });\n return repository;\n }\n };\n return RepositoryFactory;\n}());\nexport { RepositoryFactory };\n\n//# sourceMappingURL=RepositoryFactory.js.map\n","import { __extends } from \"tslib\";\nvar TreeRepositoryNotSupportedError = /** @class */ (function (_super) {\n __extends(TreeRepositoryNotSupportedError, _super);\n function TreeRepositoryNotSupportedError(driver) {\n var _this = _super.call(this) || this;\n _this.name = \"TreeRepositoryNotSupportedError\";\n Object.setPrototypeOf(_this, TreeRepositoryNotSupportedError.prototype);\n _this.message = \"Tree repositories are not supported in \" + driver.options.type + \" driver.\";\n return _this;\n }\n return TreeRepositoryNotSupportedError;\n}(Error));\nexport { TreeRepositoryNotSupportedError };\n\n//# sourceMappingURL=TreeRepositoryNotSupportedError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when method expects entity but instead something else is given.\n */\nvar MustBeEntityError = /** @class */ (function (_super) {\n __extends(MustBeEntityError, _super);\n function MustBeEntityError(operation, wrongValue) {\n var _this = _super.call(this) || this;\n _this.name = \"MustBeEntityError\";\n Object.setPrototypeOf(_this, MustBeEntityError.prototype);\n _this.message = \"Cannot \" + operation + \", given value must be an entity, instead \\\"\" + wrongValue + \"\\\" is given.\";\n return _this;\n }\n return MustBeEntityError;\n}(Error));\nexport { MustBeEntityError };\n\n//# sourceMappingURL=MustBeEntityError.js.map\n","import { __read, __spreadArray } from \"tslib\";\n/**\n * Orders insert or remove subjects in proper order (using topological sorting)\n * to make sure insert or remove operations are executed in a proper order.\n */\nvar SubjectTopoligicalSorter = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SubjectTopoligicalSorter(subjects) {\n this.subjects = __spreadArray([], __read(subjects)); // copy subjects to prevent changing of sent array\n this.metadatas = this.getUniqueMetadatas(this.subjects);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Sorts (orders) subjects in their topological order.\n */\n SubjectTopoligicalSorter.prototype.sort = function (direction) {\n var _this = this;\n // if there are no metadatas it probably mean there is no subjects... we don't have to do anything here\n if (!this.metadatas.length)\n return this.subjects;\n var sortedSubjects = [];\n // first if we sort for deletion all junction subjects\n // junction subjects are subjects without entity and database entity set\n if (direction === \"delete\") {\n var junctionSubjects = this.subjects.filter(function (subject) { return !subject.entity && !subject.databaseEntity; });\n sortedSubjects.push.apply(sortedSubjects, __spreadArray([], __read(junctionSubjects)));\n this.removeAlreadySorted(junctionSubjects);\n }\n // next we always insert entities with non-nullable relations, sort them first\n var nonNullableDependencies = this.getNonNullableDependencies();\n var sortedNonNullableEntityTargets = this.toposort(nonNullableDependencies);\n if (direction === \"insert\")\n sortedNonNullableEntityTargets = sortedNonNullableEntityTargets.reverse();\n // so we have a sorted entity targets\n // go thought each of them and find all subjects with sorted entity target\n // add those sorted targets and remove them from original array of targets\n sortedNonNullableEntityTargets.forEach(function (sortedEntityTarget) {\n var entityTargetSubjects = _this.subjects.filter(function (subject) { return subject.metadata.targetName === sortedEntityTarget; });\n sortedSubjects.push.apply(sortedSubjects, __spreadArray([], __read(entityTargetSubjects)));\n _this.removeAlreadySorted(entityTargetSubjects);\n });\n // next sort all other entities\n // same process as in above but with other entities\n var otherDependencies = this.getDependencies();\n var sortedOtherEntityTargets = this.toposort(otherDependencies);\n if (direction === \"insert\")\n sortedOtherEntityTargets = sortedOtherEntityTargets.reverse();\n sortedOtherEntityTargets.forEach(function (sortedEntityTarget) {\n var entityTargetSubjects = _this.subjects.filter(function (subject) { return subject.metadata.targetName === sortedEntityTarget; });\n sortedSubjects.push.apply(sortedSubjects, __spreadArray([], __read(entityTargetSubjects)));\n _this.removeAlreadySorted(entityTargetSubjects);\n });\n // if we have something left in the subjects add them as well\n sortedSubjects.push.apply(sortedSubjects, __spreadArray([], __read(this.subjects)));\n return sortedSubjects;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Removes already sorted subjects from this.subjects list of subjects.\n */\n SubjectTopoligicalSorter.prototype.removeAlreadySorted = function (subjects) {\n var _this = this;\n subjects.forEach(function (subject) {\n _this.subjects.splice(_this.subjects.indexOf(subject), 1);\n });\n };\n /**\n * Extracts all unique metadatas from the given subjects.\n */\n SubjectTopoligicalSorter.prototype.getUniqueMetadatas = function (subjects) {\n var metadatas = [];\n subjects.forEach(function (subject) {\n if (metadatas.indexOf(subject.metadata) === -1)\n metadatas.push(subject.metadata);\n });\n return metadatas;\n };\n /**\n * Gets dependency tree for all entity metadatas with non-nullable relations.\n * We need to execute insertions first for entities which non-nullable relations.\n */\n SubjectTopoligicalSorter.prototype.getNonNullableDependencies = function () {\n return this.metadatas.reduce(function (dependencies, metadata) {\n metadata.relationsWithJoinColumns.forEach(function (relation) {\n if (relation.isNullable)\n return;\n dependencies.push([metadata.targetName, relation.inverseEntityMetadata.targetName]);\n });\n return dependencies;\n }, []);\n };\n /**\n * Gets dependency tree for all entity metadatas with non-nullable relations.\n * We need to execute insertions first for entities which non-nullable relations.\n */\n SubjectTopoligicalSorter.prototype.getDependencies = function () {\n return this.metadatas.reduce(function (dependencies, metadata) {\n metadata.relationsWithJoinColumns.forEach(function (relation) {\n // if relation is self-referenced we skip it\n if (relation.inverseEntityMetadata === metadata)\n return;\n dependencies.push([metadata.targetName, relation.inverseEntityMetadata.targetName]);\n });\n return dependencies;\n }, []);\n };\n /**\n * Sorts given graph using topological sorting algorithm.\n *\n * Algorithm is kindly taken from https://github.com/marcelklehr/toposort repository.\n */\n SubjectTopoligicalSorter.prototype.toposort = function (edges) {\n function uniqueNodes(arr) {\n var res = [];\n for (var i_1 = 0, len = arr.length; i_1 < len; i_1++) {\n var edge = arr[i_1];\n if (res.indexOf(edge[0]) < 0)\n res.push(edge[0]);\n if (res.indexOf(edge[1]) < 0)\n res.push(edge[1]);\n }\n return res;\n }\n var nodes = uniqueNodes(edges);\n var cursor = nodes.length, sorted = new Array(cursor), visited = {}, i = cursor;\n while (i--) {\n if (!visited[i])\n visit(nodes[i], i, []);\n }\n function visit(node, i, predecessors) {\n if (predecessors.indexOf(node) >= 0) {\n throw new Error(\"Cyclic dependency: \" + JSON.stringify(node)); // todo: better error\n }\n if (!~nodes.indexOf(node)) {\n throw new Error(\"Found unknown node. Make sure to provided all involved nodes. Unknown node: \" + JSON.stringify(node));\n }\n if (visited[i])\n return;\n visited[i] = true;\n // outgoing edges\n var outgoing = edges.filter(function (edge) {\n return edge[0] === node;\n });\n if (i = outgoing.length) {\n var preds = predecessors.concat(node);\n do {\n var child = outgoing[--i][1];\n visit(child, nodes.indexOf(child), preds);\n } while (i);\n }\n sorted[--cursor] = node;\n }\n return sorted;\n };\n return SubjectTopoligicalSorter;\n}());\nexport { SubjectTopoligicalSorter };\n\n//# sourceMappingURL=SubjectTopoligicalSorter.js.map\n","import { DateUtils } from \"../util/DateUtils\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport { ApplyValueTransformers } from \"../util/ApplyValueTransformers\";\n/**\n * Finds what columns are changed in the subject entities.\n */\nvar SubjectChangedColumnsComputer = /** @class */ (function () {\n function SubjectChangedColumnsComputer() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Finds what columns are changed in the subject entities.\n */\n SubjectChangedColumnsComputer.prototype.compute = function (subjects) {\n var _this = this;\n subjects.forEach(function (subject) {\n _this.computeDiffColumns(subject);\n _this.computeDiffRelationalColumns(subjects, subject);\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Differentiate columns from the updated entity and entity stored in the database.\n */\n SubjectChangedColumnsComputer.prototype.computeDiffColumns = function (subject) {\n // if there is no persisted entity then nothing to compute changed in it\n if (!subject.entity)\n return;\n subject.metadata.columns.forEach(function (column) {\n // ignore special columns\n if (column.isVirtual ||\n column.isDiscriminator // ||\n // column.isUpdateDate ||\n // column.isVersion ||\n // column.isCreateDate\n )\n return;\n var changeMap = subject.changeMaps.find(function (changeMap) { return changeMap.column === column; });\n if (changeMap) {\n subject.changeMaps.splice(subject.changeMaps.indexOf(changeMap), 1);\n }\n // get user provided value - column value from the user provided persisted entity\n var entityValue = column.getEntityValue(subject.entity);\n // we don't perform operation over undefined properties (but we DO need null properties!)\n if (entityValue === undefined)\n return;\n // if there is no database entity then all columns are treated as new, e.g. changed\n if (subject.databaseEntity) {\n // skip transform database value for json / jsonb for comparison later on\n var shouldTransformDatabaseEntity = column.type !== \"json\" && column.type !== \"jsonb\";\n // get database value of the column\n var databaseValue = column.getEntityValue(subject.databaseEntity, shouldTransformDatabaseEntity);\n // filter out \"relational columns\" only in the case if there is a relation object in entity\n if (column.relationMetadata) {\n var value = column.relationMetadata.getEntityValue(subject.entity);\n if (value !== null && value !== undefined)\n return;\n }\n var normalizedValue = entityValue;\n // normalize special values to make proper comparision\n if (entityValue !== null) {\n switch (column.type) {\n case \"date\":\n normalizedValue = DateUtils.mixedDateToDateString(entityValue);\n break;\n case \"time\":\n case \"time with time zone\":\n case \"time without time zone\":\n case \"timetz\":\n normalizedValue = DateUtils.mixedDateToTimeString(entityValue);\n break;\n case \"datetime\":\n case \"datetime2\":\n case Date:\n case \"timestamp\":\n case \"timestamp without time zone\":\n case \"timestamp with time zone\":\n case \"timestamp with local time zone\":\n case \"timestamptz\":\n normalizedValue = DateUtils.mixedDateToUtcDatetimeString(entityValue);\n databaseValue = DateUtils.mixedDateToUtcDatetimeString(databaseValue);\n break;\n case \"json\":\n case \"jsonb\":\n // JSON.stringify doesn't work because postgresql sorts jsonb before save.\n // If you try to save json '[{\"messages\": \"\", \"attribute Key\": \"\", \"level\":\"\"}] ' as jsonb,\n // then postgresql will save it as '[{\"level\": \"\", \"message\":\"\", \"attributeKey\": \"\"}]'\n if (OrmUtils.deepCompare(entityValue, databaseValue))\n return;\n break;\n case \"simple-array\":\n normalizedValue = DateUtils.simpleArrayToString(entityValue);\n databaseValue = DateUtils.simpleArrayToString(databaseValue);\n break;\n case \"simple-enum\":\n normalizedValue = DateUtils.simpleEnumToString(entityValue);\n databaseValue = DateUtils.simpleEnumToString(databaseValue);\n break;\n case \"simple-json\":\n normalizedValue = DateUtils.simpleJsonToString(entityValue);\n databaseValue = DateUtils.simpleJsonToString(databaseValue);\n break;\n }\n if (column.transformer) {\n normalizedValue = ApplyValueTransformers.transformTo(column.transformer, entityValue);\n }\n }\n // if value is not changed - then do nothing\n if (normalizedValue === databaseValue)\n return;\n }\n subject.diffColumns.push(column);\n subject.changeMaps.push({\n column: column,\n value: entityValue\n });\n });\n };\n /**\n * Difference columns of the owning one-to-one and many-to-one columns.\n */\n SubjectChangedColumnsComputer.prototype.computeDiffRelationalColumns = function (allSubjects, subject) {\n // if there is no persisted entity then nothing to compute changed in it\n if (!subject.entity)\n return;\n subject.metadata.relationsWithJoinColumns.forEach(function (relation) {\n // get the related entity from the persisted entity\n var relatedEntity = relation.getEntityValue(subject.entity);\n // we don't perform operation over undefined properties (but we DO need null properties!)\n if (relatedEntity === undefined)\n return;\n // if there is no database entity then all relational columns are treated as new, e.g. changed\n if (subject.databaseEntity) {\n // here we cover two scenarios:\n // 1. related entity can be another entity which is natural way\n // 2. related entity can be just an entity id\n // if relation entity is just a relation id set (for example post.tag = 1)\n // then we create an id map from it to make a proper comparision\n var relatedEntityRelationIdMap = relatedEntity;\n if (relatedEntityRelationIdMap !== null && relatedEntityRelationIdMap instanceof Object)\n relatedEntityRelationIdMap = relation.getRelationIdMap(relatedEntityRelationIdMap);\n // get database related entity. Since loadRelationIds are used on databaseEntity\n // related entity will contain only its relation ids\n var databaseRelatedEntityRelationIdMap = relation.getEntityValue(subject.databaseEntity);\n // if relation ids are equal then we don't need to update anything\n var areRelatedIdsEqual = OrmUtils.compareIds(relatedEntityRelationIdMap, databaseRelatedEntityRelationIdMap);\n if (areRelatedIdsEqual) {\n return;\n }\n else {\n subject.diffRelations.push(relation);\n }\n }\n // if there is an inserted subject for the related entity of the persisted entity then use it as related entity\n // this code is used for related entities without ids to be properly inserted (and then updated if needed)\n var valueSubject = allSubjects.find(function (subject) { return subject.mustBeInserted && subject.entity === relatedEntity; });\n if (valueSubject)\n relatedEntity = valueSubject;\n // find if there is already a relation to be changed\n var changeMap = subject.changeMaps.find(function (changeMap) { return changeMap.relation === relation; });\n if (changeMap) { // and update its value if it was found\n changeMap.value = relatedEntity;\n }\n else { // if it wasn't found add a new relation for change\n subject.changeMaps.push({\n relation: relation,\n value: relatedEntity\n });\n }\n });\n };\n return SubjectChangedColumnsComputer;\n}());\nexport { SubjectChangedColumnsComputer };\n\n//# sourceMappingURL=SubjectChangedColumnsComputer.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when operation is going to be executed on a subject without identifier.\n * This error should never be thrown, however it still presents to prevent user from updation or removing the whole table.\n * If this error occurs still, it most probably is an ORM internal problem which must be reported and fixed.\n */\nvar SubjectWithoutIdentifierError = /** @class */ (function (_super) {\n __extends(SubjectWithoutIdentifierError, _super);\n function SubjectWithoutIdentifierError(subject) {\n var _this = _super.call(this) || this;\n _this.name = \"SubjectWithoutIdentifierError\";\n Object.setPrototypeOf(_this, SubjectWithoutIdentifierError.prototype);\n _this.message = \"Internal error. Subject \" + subject.metadata.targetName + \" must have an identifier to perform operation. \" +\n \"Please report a github issue if you face this error.\";\n return _this;\n }\n return SubjectWithoutIdentifierError;\n}(Error));\nexport { SubjectWithoutIdentifierError };\n\n//# sourceMappingURL=SubjectWithoutIdentifierError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when same object is scheduled for remove and updation at the same time.\n */\nvar SubjectRemovedAndUpdatedError = /** @class */ (function (_super) {\n __extends(SubjectRemovedAndUpdatedError, _super);\n function SubjectRemovedAndUpdatedError(subject) {\n var _this = _super.call(this) || this;\n _this.name = \"SubjectRemovedAndUpdatedError\";\n Object.setPrototypeOf(_this, SubjectRemovedAndUpdatedError.prototype);\n _this.message = \"Removed entity \\\"\" + subject.metadata.name + \"\\\" is also scheduled for update operation. \" +\n \"Make sure you are not updating and removing same object (note that update or remove may be executed by cascade operations).\";\n return _this;\n }\n return SubjectRemovedAndUpdatedError;\n}(Error));\nexport { SubjectRemovedAndUpdatedError };\n\n//# sourceMappingURL=SubjectRemovedAndUpdatedError.js.map\n","import { __awaiter, __generator } from \"tslib\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\n/**\n * Executes subject operations for nested set tree entities.\n */\nvar NestedSetSubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function NestedSetSubjectExecutor(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes operations when subject is being inserted.\n */\n NestedSetSubjectExecutor.prototype.insert = function (subject) {\n return __awaiter(this, void 0, void 0, function () {\n var escape, tableName, leftColumnName, rightColumnName, parent, parentId, parentNsRight;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n escape = function (alias) { return _this.queryRunner.connection.driver.escape(alias); };\n tableName = this.getTableName(subject.metadata.tablePath);\n leftColumnName = escape(subject.metadata.nestedSetLeftColumn.databaseName);\n rightColumnName = escape(subject.metadata.nestedSetRightColumn.databaseName);\n parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity);\n if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity;\n parentId = subject.metadata.getEntityIdMap(parent);\n parentNsRight = undefined;\n if (!parentId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(subject.metadata.targetName + \".\" + subject.metadata.nestedSetRightColumn.propertyPath, \"right\")\n .from(subject.metadata.target, subject.metadata.targetName)\n .whereInIds(parentId)\n .getRawOne()\n .then(function (result) {\n var value = result ? result[\"right\"] : undefined;\n // CockroachDB returns numeric types as string\n return typeof value === \"string\" ? parseInt(value) : value;\n })];\n case 1:\n parentNsRight = _a.sent();\n _a.label = 2;\n case 2:\n if (!(parentNsRight !== undefined)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.queryRunner.query(\"UPDATE \" + tableName + \" SET \" +\n (leftColumnName + \" = CASE WHEN \" + leftColumnName + \" > \" + parentNsRight + \" THEN \" + leftColumnName + \" + 2 ELSE \" + leftColumnName + \" END,\") +\n (rightColumnName + \" = \" + rightColumnName + \" + 2 \") +\n (\"WHERE \" + rightColumnName + \" >= \" + parentNsRight))];\n case 3:\n _a.sent();\n OrmUtils.mergeDeep(subject.insertedValueSet, subject.metadata.nestedSetLeftColumn.createValueMap(parentNsRight), subject.metadata.nestedSetRightColumn.createValueMap(parentNsRight + 1));\n return [3 /*break*/, 5];\n case 4:\n OrmUtils.mergeDeep(subject.insertedValueSet, subject.metadata.nestedSetLeftColumn.createValueMap(1), subject.metadata.nestedSetRightColumn.createValueMap(2));\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom\n * schema name, otherwise returns escaped table name.\n */\n NestedSetSubjectExecutor.prototype.getTableName = function (tablePath) {\n var _this = this;\n return tablePath.split(\".\")\n .map(function (i) {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n if (i === \"\")\n return i;\n return _this.queryRunner.connection.driver.escape(i);\n }).join(\".\");\n };\n return NestedSetSubjectExecutor;\n}());\nexport { NestedSetSubjectExecutor };\n\n//# sourceMappingURL=NestedSetSubjectExecutor.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when user saves tree children entity but its parent is not saved yet.\n*/\nvar CannotAttachTreeChildrenEntityError = /** @class */ (function (_super) {\n __extends(CannotAttachTreeChildrenEntityError, _super);\n function CannotAttachTreeChildrenEntityError(entityName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotAttachTreeChildrenEntityError\";\n Object.setPrototypeOf(_this, CannotAttachTreeChildrenEntityError.prototype);\n _this.message = \"Cannot attach entity \\\"\" + entityName + \"\\\" to its parent. Please make sure parent is saved in the database before saving children nodes.\";\n return _this;\n }\n return CannotAttachTreeChildrenEntityError;\n}(Error));\nexport { CannotAttachTreeChildrenEntityError };\n\n//# sourceMappingURL=CannotAttachTreeChildrenEntityError.js.map\n","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { CannotAttachTreeChildrenEntityError } from \"../../error/CannotAttachTreeChildrenEntityError\";\n/**\n * Executes subject operations for closure entities.\n */\nvar ClosureSubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ClosureSubjectExecutor(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Removes all children of the given subject's entity.\n\n async deleteChildrenOf(subject: Subject) {\n // const relationValue = subject.metadata.treeParentRelation.getEntityValue(subject.databaseEntity);\n // console.log(\"relationValue: \", relationValue);\n // this.queryRunner.manager\n // .createQueryBuilder()\n // .from(subject.metadata.closureJunctionTable.target, \"tree\")\n // .where(\"tree.\");\n }*/\n /**\n * Executes operations when subject is being inserted.\n */\n ClosureSubjectExecutor.prototype.insert = function (subject) {\n return __awaiter(this, void 0, void 0, function () {\n var closureJunctionInsertMap, parent, escape_1, tableName, ancestorColumnNames, descendantColumnNames, firstQueryParameters_1, childEntityIdValues_1, childEntityIds1, whereCondition;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n closureJunctionInsertMap = {};\n subject.metadata.closureJunctionTable.ancestorColumns.forEach(function (column) {\n closureJunctionInsertMap[column.databaseName] = subject.identifier;\n });\n subject.metadata.closureJunctionTable.descendantColumns.forEach(function (column) {\n closureJunctionInsertMap[column.databaseName] = subject.identifier;\n });\n // insert values into the closure junction table\n return [4 /*yield*/, this.queryRunner\n .manager\n .createQueryBuilder()\n .insert()\n .into(subject.metadata.closureJunctionTable.tablePath)\n .values(closureJunctionInsertMap)\n .updateEntity(false)\n .callListeners(false)\n .execute()];\n case 1:\n // insert values into the closure junction table\n _a.sent();\n parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity);\n if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity;\n if (!parent) return [3 /*break*/, 3];\n escape_1 = function (alias) { return _this.queryRunner.connection.driver.escape(alias); };\n tableName = this.getTableName(subject.metadata.closureJunctionTable.tablePath);\n ancestorColumnNames = subject.metadata.closureJunctionTable.ancestorColumns.map(function (column) {\n return escape_1(column.databaseName);\n });\n descendantColumnNames = subject.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n return escape_1(column.databaseName);\n });\n firstQueryParameters_1 = [];\n childEntityIdValues_1 = subject.metadata.primaryColumns.map(function (column) { return column.getEntityValue(subject.insertedValueSet); });\n childEntityIds1 = subject.metadata.primaryColumns.map(function (column, index) {\n firstQueryParameters_1.push(childEntityIdValues_1[index]);\n return _this.queryRunner.connection.driver.createParameter(\"child_entity_\" + column.databaseName, firstQueryParameters_1.length - 1);\n });\n whereCondition = subject.metadata.closureJunctionTable.descendantColumns.map(function (column) {\n var columnName = escape_1(column.databaseName);\n var parentId = column.referencedColumn.getEntityValue(parent);\n if (!parentId)\n throw new CannotAttachTreeChildrenEntityError(subject.metadata.name);\n firstQueryParameters_1.push(parentId);\n var parameterName = _this.queryRunner.connection.driver.createParameter(\"parent_entity_\" + column.referencedColumn.databaseName, firstQueryParameters_1.length - 1);\n return columnName + \" = \" + parameterName;\n }).join(\", \");\n return [4 /*yield*/, this.queryRunner.query(\"INSERT INTO \" + tableName + \" (\" + __spreadArray(__spreadArray([], __read(ancestorColumnNames)), __read(descendantColumnNames)).join(\", \") + \") \" +\n (\"SELECT \" + ancestorColumnNames.join(\", \") + \", \" + childEntityIds1.join(\", \") + \" FROM \" + tableName + \" WHERE \" + whereCondition), firstQueryParameters_1)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom\n * schema name, otherwise returns escaped table name.\n */\n ClosureSubjectExecutor.prototype.getTableName = function (tablePath) {\n var _this = this;\n return tablePath.split(\".\")\n .map(function (i) {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n if (i === \"\")\n return i;\n return _this.queryRunner.connection.driver.escape(i);\n }).join(\".\");\n };\n return ClosureSubjectExecutor;\n}());\nexport { ClosureSubjectExecutor };\n\n//# sourceMappingURL=ClosureSubjectExecutor.js.map\n","import { __awaiter, __generator } from \"tslib\";\n/**\n * Executes subject operations for materialized-path tree entities.\n */\nvar MaterializedPathSubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function MaterializedPathSubjectExecutor(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes operations when subject is being inserted.\n */\n MaterializedPathSubjectExecutor.prototype.insert = function (subject) {\n return __awaiter(this, void 0, void 0, function () {\n var parent, parentId, parentPath, insertedEntityId;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity);\n if (!parent && subject.parentSubject && subject.parentSubject.entity) // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet ? subject.parentSubject.insertedValueSet : subject.parentSubject.entity;\n parentId = subject.metadata.getEntityIdMap(parent);\n parentPath = \"\";\n if (!parentId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(subject.metadata.targetName + \".\" + subject.metadata.materializedPathColumn.propertyPath, \"path\")\n .from(subject.metadata.target, subject.metadata.targetName)\n .whereInIds(parentId)\n .getRawOne()\n .then(function (result) { return result ? result[\"path\"] : undefined; })];\n case 1:\n parentPath = _b.sent();\n _b.label = 2;\n case 2:\n insertedEntityId = subject.metadata.treeParentRelation.joinColumns.map(function (joinColumn) {\n return joinColumn.referencedColumn.getEntityValue(subject.insertedValueSet);\n }).join(\"_\");\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set((_a = {},\n _a[subject.metadata.materializedPathColumn.propertyPath] = parentPath + insertedEntityId + \".\",\n _a))\n .where(subject.identifier)\n .execute()];\n case 3:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return MaterializedPathSubjectExecutor;\n}());\nexport { MaterializedPathSubjectExecutor };\n\n//# sourceMappingURL=MaterializedPathSubjectExecutor.js.map\n","import { __awaiter, __generator, __read, __values } from \"tslib\";\nimport { SapDriver } from \"../driver/sap/SapDriver\";\nimport { SubjectTopoligicalSorter } from \"./SubjectTopoligicalSorter\";\nimport { SubjectChangedColumnsComputer } from \"./SubjectChangedColumnsComputer\";\nimport { SubjectWithoutIdentifierError } from \"../error/SubjectWithoutIdentifierError\";\nimport { SubjectRemovedAndUpdatedError } from \"../error/SubjectRemovedAndUpdatedError\";\nimport { MongoQueryRunner } from \"../driver/mongodb/MongoQueryRunner\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { NestedSetSubjectExecutor } from \"./tree/NestedSetSubjectExecutor\";\nimport { ClosureSubjectExecutor } from \"./tree/ClosureSubjectExecutor\";\nimport { MaterializedPathSubjectExecutor } from \"./tree/MaterializedPathSubjectExecutor\";\nimport { OrmUtils } from \"../util/OrmUtils\";\n/**\n * Executes all database operations (inserts, updated, deletes) that must be executed\n * with given persistence subjects.\n */\nvar SubjectExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SubjectExecutor(queryRunner, subjects, options) {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed).\n */\n this.hasExecutableOperations = false;\n /**\n * Subjects that must be inserted.\n */\n this.insertSubjects = [];\n /**\n * Subjects that must be updated.\n */\n this.updateSubjects = [];\n /**\n * Subjects that must be removed.\n */\n this.removeSubjects = [];\n /**\n * Subjects that must be soft-removed.\n */\n this.softRemoveSubjects = [];\n /**\n * Subjects that must be recovered.\n */\n this.recoverSubjects = [];\n this.queryRunner = queryRunner;\n this.allSubjects = subjects;\n this.options = options;\n this.validate();\n this.recompute();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes all operations over given array of subjects.\n * Executes queries using given query runner.\n */\n SubjectExecutor.prototype.execute = function () {\n return __awaiter(this, void 0, void 0, function () {\n var broadcasterResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n broadcasterResult = undefined;\n if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 2];\n // console.time(\".broadcastBeforeEventsForAll\");\n broadcasterResult = this.broadcastBeforeEventsForAll();\n if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(broadcasterResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n // since event listeners and subscribers can call save methods and/or trigger entity changes we need to recompute operational subjects\n // recompute only in the case if any listener or subscriber was really executed\n if (broadcasterResult && broadcasterResult.count > 0) {\n // console.time(\".recompute\");\n this.insertSubjects.forEach(function (subject) { return subject.recompute(); });\n this.updateSubjects.forEach(function (subject) { return subject.recompute(); });\n this.removeSubjects.forEach(function (subject) { return subject.recompute(); });\n this.softRemoveSubjects.forEach(function (subject) { return subject.recompute(); });\n this.recoverSubjects.forEach(function (subject) { return subject.recompute(); });\n this.recompute();\n // console.timeEnd(\".recompute\");\n }\n // make sure our insert subjects are sorted (using topological sorting) to make cascade inserts work properly\n // console.timeEnd(\"prepare\");\n // execute all insert operations\n // console.time(\".insertion\");\n this.insertSubjects = new SubjectTopoligicalSorter(this.insertSubjects).sort(\"insert\");\n return [4 /*yield*/, this.executeInsertOperations()];\n case 3:\n _a.sent();\n // console.timeEnd(\".insertion\");\n // recompute update operations since insertion can create updation operations for the\n // properties it wasn't able to handle on its own (referenced columns)\n this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; });\n // execute update operations\n // console.time(\".updation\");\n return [4 /*yield*/, this.executeUpdateOperations()];\n case 4:\n // execute update operations\n // console.time(\".updation\");\n _a.sent();\n // console.timeEnd(\".updation\");\n // make sure our remove subjects are sorted (using topological sorting) when multiple entities are passed for the removal\n // console.time(\".removal\");\n this.removeSubjects = new SubjectTopoligicalSorter(this.removeSubjects).sort(\"delete\");\n return [4 /*yield*/, this.executeRemoveOperations()];\n case 5:\n _a.sent();\n // console.timeEnd(\".removal\");\n // recompute soft-remove operations\n this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; });\n // execute soft-remove operations\n return [4 /*yield*/, this.executeSoftRemoveOperations()];\n case 6:\n // execute soft-remove operations\n _a.sent();\n // recompute recover operations\n this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; });\n // execute recover operations\n return [4 /*yield*/, this.executeRecoverOperations()];\n case 7:\n // execute recover operations\n _a.sent();\n // update all special columns in persisted entities, like inserted id or remove ids from the removed entities\n // console.time(\".updateSpecialColumnsInPersistedEntities\");\n return [4 /*yield*/, this.updateSpecialColumnsInPersistedEntities()];\n case 8:\n // update all special columns in persisted entities, like inserted id or remove ids from the removed entities\n // console.time(\".updateSpecialColumnsInPersistedEntities\");\n _a.sent();\n if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 10];\n // console.time(\".broadcastAfterEventsForAll\");\n broadcasterResult = this.broadcastAfterEventsForAll();\n if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcasterResult.promises)];\n case 9:\n _a.sent();\n _a.label = 10;\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Validates all given subjects.\n */\n SubjectExecutor.prototype.validate = function () {\n this.allSubjects.forEach(function (subject) {\n if (subject.mustBeUpdated && subject.mustBeRemoved)\n throw new SubjectRemovedAndUpdatedError(subject);\n });\n };\n /**\n * Performs entity re-computations - finds changed columns, re-builds insert/update/remove subjects.\n */\n SubjectExecutor.prototype.recompute = function () {\n new SubjectChangedColumnsComputer().compute(this.allSubjects);\n this.insertSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeInserted; });\n this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; });\n this.removeSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRemoved; });\n this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; });\n this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; });\n this.hasExecutableOperations = this.insertSubjects.length > 0 || this.updateSubjects.length > 0 || this.removeSubjects.length > 0 || this.softRemoveSubjects.length > 0 || this.recoverSubjects.length > 0;\n };\n /**\n * Broadcasts \"BEFORE_INSERT\", \"BEFORE_UPDATE\", \"BEFORE_REMOVE\" events for all given subjects.\n */\n SubjectExecutor.prototype.broadcastBeforeEventsForAll = function () {\n var _this = this;\n var result = new BroadcasterResult();\n if (this.insertSubjects.length)\n this.insertSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity); });\n if (this.updateSubjects.length)\n this.updateSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.removeSubjects.length)\n this.removeSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity); });\n if (this.softRemoveSubjects.length)\n this.softRemoveSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.recoverSubjects.length)\n this.recoverSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n return result;\n };\n /**\n * Broadcasts \"AFTER_INSERT\", \"AFTER_UPDATE\", \"AFTER_REMOVE\" events for all given subjects.\n * Returns void if there wasn't any listener or subscriber executed.\n * Note: this method has a performance-optimized code organization.\n */\n SubjectExecutor.prototype.broadcastAfterEventsForAll = function () {\n var _this = this;\n var result = new BroadcasterResult();\n if (this.insertSubjects.length)\n this.insertSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity); });\n if (this.updateSubjects.length)\n this.updateSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.removeSubjects.length)\n this.removeSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity); });\n if (this.softRemoveSubjects.length)\n this.softRemoveSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n if (this.recoverSubjects.length)\n this.recoverSubjects.forEach(function (subject) { return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations); });\n return result;\n };\n /**\n * Executes insert operations.\n */\n SubjectExecutor.prototype.executeInsertOperations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, groupedInsertSubjects, groupedInsertSubjectKeys, _loop_1, this_1, groupedInsertSubjectKeys_1, groupedInsertSubjectKeys_1_1, groupName, e_1_1;\n var e_1, _b;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = __read(this.groupBulkSubjects(this.insertSubjects, \"insert\"), 2), groupedInsertSubjects = _a[0], groupedInsertSubjectKeys = _a[1];\n _loop_1 = function (groupName) {\n var subjects, bulkInsertMaps, bulkInsertSubjects, singleInsertSubjects, manager, insertResult_1, insertResult_2, _loop_2, singleInsertSubjects_1, singleInsertSubjects_1_1, subject, e_2_1;\n var e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n subjects = groupedInsertSubjects[groupName];\n bulkInsertMaps = [];\n bulkInsertSubjects = [];\n singleInsertSubjects = [];\n if (this_1.queryRunner.connection.driver instanceof MongoDriver) {\n subjects.forEach(function (subject) {\n if (subject.metadata.createDateColumn && subject.entity) {\n subject.entity[subject.metadata.createDateColumn.databaseName] = new Date();\n }\n if (subject.metadata.updateDateColumn && subject.entity) {\n subject.entity[subject.metadata.updateDateColumn.databaseName] = new Date();\n }\n subject.createValueSetAndPopChangeMap();\n bulkInsertSubjects.push(subject);\n bulkInsertMaps.push(subject.entity);\n });\n }\n else if (this_1.queryRunner.connection.driver instanceof OracleDriver) {\n subjects.forEach(function (subject) {\n singleInsertSubjects.push(subject);\n });\n }\n else {\n subjects.forEach(function (subject) {\n // we do not insert in bulk in following cases:\n // - when there is no values in insert (only defaults are inserted), since we cannot use DEFAULT VALUES expression for multiple inserted rows\n // - when entity is a tree table, since tree tables require extra operation per each inserted row\n // - when oracle is used, since oracle's bulk insertion is very bad\n if (subject.changeMaps.length === 0 ||\n subject.metadata.treeType ||\n _this.queryRunner.connection.driver instanceof OracleDriver ||\n _this.queryRunner.connection.driver instanceof SapDriver) {\n singleInsertSubjects.push(subject);\n }\n else {\n bulkInsertSubjects.push(subject);\n bulkInsertMaps.push(subject.createValueSetAndPopChangeMap());\n }\n });\n }\n if (!(this_1.queryRunner instanceof MongoQueryRunner)) return [3 /*break*/, 2];\n manager = this_1.queryRunner.manager;\n return [4 /*yield*/, manager.insert(subjects[0].metadata.target, bulkInsertMaps)];\n case 1:\n insertResult_1 = _e.sent();\n subjects.forEach(function (subject, index) {\n subject.identifier = insertResult_1.identifiers[index];\n subject.generatedMap = insertResult_1.generatedMaps[index];\n subject.insertedValueSet = bulkInsertMaps[index];\n });\n return [3 /*break*/, 12];\n case 2:\n if (!(bulkInsertMaps.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, this_1.queryRunner\n .manager\n .createQueryBuilder()\n .insert()\n .into(subjects[0].metadata.target)\n .values(bulkInsertMaps)\n .updateEntity(this_1.options && this_1.options.reload === false ? false : true)\n .callListeners(false)\n .execute()];\n case 3:\n insertResult_2 = _e.sent();\n bulkInsertSubjects.forEach(function (subject, index) {\n subject.identifier = insertResult_2.identifiers[index];\n subject.generatedMap = insertResult_2.generatedMaps[index];\n subject.insertedValueSet = bulkInsertMaps[index];\n });\n _e.label = 4;\n case 4:\n if (!(singleInsertSubjects.length > 0)) return [3 /*break*/, 12];\n _loop_2 = function (subject) {\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n subject.insertedValueSet = subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it\n if (!(subject.metadata.treeType === \"nested-set\")) return [3 /*break*/, 2];\n return [4 /*yield*/, new NestedSetSubjectExecutor(this_1.queryRunner).insert(subject)];\n case 1:\n _f.sent();\n _f.label = 2;\n case 2: return [4 /*yield*/, this_1.queryRunner\n .manager\n .createQueryBuilder()\n .insert()\n .into(subject.metadata.target)\n .values(subject.insertedValueSet)\n .updateEntity(this_1.options && this_1.options.reload === false ? false : true)\n .callListeners(false)\n .execute()\n .then(function (insertResult) {\n subject.identifier = insertResult.identifiers[0];\n subject.generatedMap = insertResult.generatedMaps[0];\n })];\n case 3:\n _f.sent();\n if (!(subject.metadata.treeType === \"closure-table\")) return [3 /*break*/, 5];\n return [4 /*yield*/, new ClosureSubjectExecutor(this_1.queryRunner).insert(subject)];\n case 4:\n _f.sent();\n return [3 /*break*/, 7];\n case 5:\n if (!(subject.metadata.treeType === \"materialized-path\")) return [3 /*break*/, 7];\n return [4 /*yield*/, new MaterializedPathSubjectExecutor(this_1.queryRunner).insert(subject)];\n case 6:\n _f.sent();\n _f.label = 7;\n case 7: return [2 /*return*/];\n }\n });\n };\n _e.label = 5;\n case 5:\n _e.trys.push([5, 10, 11, 12]);\n singleInsertSubjects_1 = (e_2 = void 0, __values(singleInsertSubjects)), singleInsertSubjects_1_1 = singleInsertSubjects_1.next();\n _e.label = 6;\n case 6:\n if (!!singleInsertSubjects_1_1.done) return [3 /*break*/, 9];\n subject = singleInsertSubjects_1_1.value;\n return [5 /*yield**/, _loop_2(subject)];\n case 7:\n _e.sent();\n _e.label = 8;\n case 8:\n singleInsertSubjects_1_1 = singleInsertSubjects_1.next();\n return [3 /*break*/, 6];\n case 9: return [3 /*break*/, 12];\n case 10:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 12];\n case 11:\n try {\n if (singleInsertSubjects_1_1 && !singleInsertSubjects_1_1.done && (_d = singleInsertSubjects_1.return)) _d.call(singleInsertSubjects_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 12:\n subjects.forEach(function (subject) {\n if (subject.generatedMap) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(subject.generatedMap);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(subject.generatedMap, preparedValue);\n }\n });\n }\n });\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 6, 7, 8]);\n groupedInsertSubjectKeys_1 = __values(groupedInsertSubjectKeys), groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();\n _c.label = 2;\n case 2:\n if (!!groupedInsertSubjectKeys_1_1.done) return [3 /*break*/, 5];\n groupName = groupedInsertSubjectKeys_1_1.value;\n return [5 /*yield**/, _loop_1(groupName)];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4:\n groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _c.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (groupedInsertSubjectKeys_1_1 && !groupedInsertSubjectKeys_1_1.done && (_b = groupedInsertSubjectKeys_1.return)) _b.call(groupedInsertSubjectKeys_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates all given subjects in the database.\n */\n SubjectExecutor.prototype.executeUpdateOperations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.updateSubjects.map(function (subject) { return __awaiter(_this, void 0, void 0, function () {\n var partialEntity, manager, updateMap, updateQueryBuilder, updateResult, updateGeneratedMap_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!subject.identifier)\n throw new SubjectWithoutIdentifierError(subject);\n if (!(this.queryRunner instanceof MongoQueryRunner)) return [3 /*break*/, 2];\n partialEntity = OrmUtils.mergeDeep({}, subject.entity);\n if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) {\n delete partialEntity[subject.metadata.objectIdColumn.propertyName];\n }\n if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) {\n delete partialEntity[subject.metadata.createDateColumn.propertyName];\n }\n if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) {\n partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();\n }\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n updateMap = subject.createValueSetAndPopChangeMap();\n updateQueryBuilder = this.queryRunner\n .manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set(updateMap)\n .updateEntity(this.options && this.options.reload === false ? false : true)\n .callListeners(false);\n if (subject.entity) {\n updateQueryBuilder.whereEntity(subject.identifier);\n }\n else { // in this case identifier is just conditions object to update by\n updateQueryBuilder.where(subject.identifier);\n }\n return [4 /*yield*/, updateQueryBuilder.execute()];\n case 3:\n updateResult = _a.sent();\n updateGeneratedMap_1 = updateResult.generatedMaps[0];\n if (updateGeneratedMap_1) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(updateGeneratedMap_1);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(updateGeneratedMap_1, preparedValue);\n }\n });\n if (!subject.generatedMap) {\n subject.generatedMap = {};\n }\n Object.assign(subject.generatedMap, updateGeneratedMap_1);\n }\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes all given subjects from the database.\n *\n * todo: we need to apply topological sort here as well\n */\n SubjectExecutor.prototype.executeRemoveOperations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, groupedRemoveSubjects, groupedRemoveSubjectKeys, groupedRemoveSubjectKeys_1, groupedRemoveSubjectKeys_1_1, groupName, subjects, deleteMaps, manager, e_3_1;\n var e_3, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = __read(this.groupBulkSubjects(this.removeSubjects, \"delete\"), 2), groupedRemoveSubjects = _a[0], groupedRemoveSubjectKeys = _a[1];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 8, 9, 10]);\n groupedRemoveSubjectKeys_1 = __values(groupedRemoveSubjectKeys), groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();\n _c.label = 2;\n case 2:\n if (!!groupedRemoveSubjectKeys_1_1.done) return [3 /*break*/, 7];\n groupName = groupedRemoveSubjectKeys_1_1.value;\n subjects = groupedRemoveSubjects[groupName];\n deleteMaps = subjects.map(function (subject) {\n if (!subject.identifier)\n throw new SubjectWithoutIdentifierError(subject);\n return subject.identifier;\n });\n if (!(this.queryRunner instanceof MongoQueryRunner)) return [3 /*break*/, 4];\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.delete(subjects[0].metadata.target, deleteMaps)];\n case 3:\n _c.sent();\n return [3 /*break*/, 6];\n case 4: \n // here we execute our deletion query\n // we don't need to specify entities and set update entity to true since the only thing query builder\n // will do for use is a primary keys deletion which is handled by us later once persistence is finished\n // also, we disable listeners because we call them on our own in persistence layer\n return [4 /*yield*/, this.queryRunner\n .manager\n .createQueryBuilder()\n .delete()\n .from(subjects[0].metadata.target)\n .where(deleteMaps)\n .callListeners(false)\n .execute()];\n case 5:\n // here we execute our deletion query\n // we don't need to specify entities and set update entity to true since the only thing query builder\n // will do for use is a primary keys deletion which is handled by us later once persistence is finished\n // also, we disable listeners because we call them on our own in persistence layer\n _c.sent();\n _c.label = 6;\n case 6:\n groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_3_1 = _c.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (groupedRemoveSubjectKeys_1_1 && !groupedRemoveSubjectKeys_1_1.done && (_b = groupedRemoveSubjectKeys_1.return)) _b.call(groupedRemoveSubjectKeys_1);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Soft-removes all given subjects in the database.\n */\n SubjectExecutor.prototype.executeSoftRemoveOperations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.softRemoveSubjects.map(function (subject) { return __awaiter(_this, void 0, void 0, function () {\n var partialEntity, manager, softDeleteQueryBuilder, updateResult;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!subject.identifier)\n throw new SubjectWithoutIdentifierError(subject);\n if (!(this.queryRunner instanceof MongoQueryRunner)) return [3 /*break*/, 2];\n partialEntity = OrmUtils.mergeDeep({}, subject.entity);\n if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) {\n delete partialEntity[subject.metadata.objectIdColumn.propertyName];\n }\n if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) {\n delete partialEntity[subject.metadata.createDateColumn.propertyName];\n }\n if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) {\n partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();\n }\n if (subject.metadata.deleteDateColumn && subject.metadata.deleteDateColumn.propertyName) {\n partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date();\n }\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n softDeleteQueryBuilder = this.queryRunner\n .manager\n .createQueryBuilder()\n .softDelete()\n .from(subject.metadata.target)\n .updateEntity(this.options && this.options.reload === false ? false : true)\n .callListeners(false);\n if (subject.entity) {\n softDeleteQueryBuilder.whereEntity(subject.identifier);\n }\n else { // in this case identifier is just conditions object to update by\n softDeleteQueryBuilder.where(subject.identifier);\n }\n return [4 /*yield*/, softDeleteQueryBuilder.execute()];\n case 3:\n updateResult = _a.sent();\n subject.generatedMap = updateResult.generatedMaps[0];\n if (subject.generatedMap) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(subject.generatedMap);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(subject.generatedMap, preparedValue);\n }\n });\n }\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Recovers all given subjects in the database.\n */\n SubjectExecutor.prototype.executeRecoverOperations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(this.recoverSubjects.map(function (subject) { return __awaiter(_this, void 0, void 0, function () {\n var partialEntity, manager, softDeleteQueryBuilder, updateResult;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!subject.identifier)\n throw new SubjectWithoutIdentifierError(subject);\n if (!(this.queryRunner instanceof MongoQueryRunner)) return [3 /*break*/, 2];\n partialEntity = OrmUtils.mergeDeep({}, subject.entity);\n if (subject.metadata.objectIdColumn && subject.metadata.objectIdColumn.propertyName) {\n delete partialEntity[subject.metadata.objectIdColumn.propertyName];\n }\n if (subject.metadata.createDateColumn && subject.metadata.createDateColumn.propertyName) {\n delete partialEntity[subject.metadata.createDateColumn.propertyName];\n }\n if (subject.metadata.updateDateColumn && subject.metadata.updateDateColumn.propertyName) {\n partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();\n }\n if (subject.metadata.deleteDateColumn && subject.metadata.deleteDateColumn.propertyName) {\n partialEntity[subject.metadata.deleteDateColumn.propertyName] = null;\n }\n manager = this.queryRunner.manager;\n return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n softDeleteQueryBuilder = this.queryRunner\n .manager\n .createQueryBuilder()\n .restore()\n .from(subject.metadata.target)\n .updateEntity(this.options && this.options.reload === false ? false : true)\n .callListeners(false);\n if (subject.entity) {\n softDeleteQueryBuilder.whereEntity(subject.identifier);\n }\n else { // in this case identifier is just conditions object to update by\n softDeleteQueryBuilder.where(subject.identifier);\n }\n return [4 /*yield*/, softDeleteQueryBuilder.execute()];\n case 3:\n updateResult = _a.sent();\n subject.generatedMap = updateResult.generatedMaps[0];\n if (subject.generatedMap) {\n subject.metadata.columns.forEach(function (column) {\n var value = column.getEntityValue(subject.generatedMap);\n if (value !== undefined && value !== null) {\n var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);\n column.setEntityValue(subject.generatedMap, preparedValue);\n }\n });\n }\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates all special columns of the saving entities (create date, update date, version, etc.).\n * Also updates nullable columns and columns with default values.\n */\n SubjectExecutor.prototype.updateSpecialColumnsInPersistedEntities = function () {\n var _this = this;\n // update inserted entity properties\n if (this.insertSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.insertSubjects);\n // update updated entity properties\n if (this.updateSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.updateSubjects);\n // update soft-removed entity properties\n if (this.updateSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.softRemoveSubjects);\n // update recovered entity properties\n if (this.updateSubjects.length)\n this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.recoverSubjects);\n // remove ids from the entities that were removed\n if (this.removeSubjects.length) {\n this.removeSubjects.forEach(function (subject) {\n if (!subject.entity)\n return;\n subject.metadata.primaryColumns.forEach(function (primaryColumn) {\n primaryColumn.setEntityValue(subject.entity, undefined);\n });\n });\n }\n // other post-persist updations\n this.allSubjects.forEach(function (subject) {\n if (!subject.entity)\n return;\n subject.metadata.relationIds.forEach(function (relationId) {\n relationId.setValue(subject.entity);\n });\n // mongo _id remove\n if (_this.queryRunner instanceof MongoQueryRunner) {\n if (subject.metadata.objectIdColumn\n && subject.metadata.objectIdColumn.databaseName\n && subject.metadata.objectIdColumn.databaseName !== subject.metadata.objectIdColumn.propertyName) {\n delete subject.entity[subject.metadata.objectIdColumn.databaseName];\n }\n }\n });\n };\n /**\n * Updates all special columns of the saving entities (create date, update date, version, etc.).\n * Also updates nullable columns and columns with default values.\n */\n SubjectExecutor.prototype.updateSpecialColumnsInInsertedAndUpdatedEntities = function (subjects) {\n var _this = this;\n subjects.forEach(function (subject) {\n if (!subject.entity)\n return;\n // set values to \"null\" for nullable columns that did not have values\n subject.metadata.columns.forEach(function (column) {\n // if table inheritance is used make sure this column is not child's column\n if (subject.metadata.childEntityMetadatas.length > 0 && subject.metadata.childEntityMetadatas.map(function (metadata) { return metadata.target; }).indexOf(column.target) !== -1)\n return;\n // entities does not have virtual columns\n if (column.isVirtual)\n return;\n // update nullable columns\n if (column.isNullable) {\n var columnValue = column.getEntityValue(subject.entity);\n if (columnValue === undefined)\n column.setEntityValue(subject.entity, null);\n }\n // update relational columns\n if (subject.updatedRelationMaps.length > 0) {\n subject.updatedRelationMaps.forEach(function (updatedRelationMap) {\n updatedRelationMap.relation.joinColumns.forEach(function (column) {\n if (column.isVirtual === true)\n return;\n column.setEntityValue(subject.entity, updatedRelationMap.value instanceof Object ? column.referencedColumn.getEntityValue(updatedRelationMap.value) : updatedRelationMap.value);\n });\n });\n }\n });\n // merge into entity all generated values returned by a database\n if (subject.generatedMap)\n _this.queryRunner.manager.merge(subject.metadata.target, subject.entity, subject.generatedMap);\n });\n };\n /**\n * Groups subjects by metadata names (by tables) to make bulk insertions and deletions possible.\n * However there are some limitations with bulk insertions of data into tables with generated (increment) columns\n * in some drivers. Some drivers like mysql and sqlite does not support returning multiple generated columns\n * after insertion and can only return a single generated column value, that's why its not possible to do bulk insertion,\n * because it breaks insertion result's generatedMap and leads to problems when this subject is used in other subjects saves.\n * That's why we only support bulking in junction tables for those drivers.\n *\n * Other drivers like postgres and sql server support RETURNING / OUTPUT statement which allows to return generated\n * id for each inserted row, that's why bulk insertion is not limited to junction tables in there.\n */\n SubjectExecutor.prototype.groupBulkSubjects = function (subjects, type) {\n var group = {};\n var keys = [];\n var groupingAllowed = type === \"delete\" || this.queryRunner.connection.driver.isReturningSqlSupported();\n subjects.forEach(function (subject, index) {\n var key = groupingAllowed || subject.metadata.isJunction ? subject.metadata.name : subject.metadata.name + \"_\" + index;\n if (!group[key]) {\n group[key] = [subject];\n keys.push(key);\n }\n else {\n group[key].push(subject);\n }\n });\n return [group, keys];\n };\n return SubjectExecutor;\n}());\nexport { SubjectExecutor };\n\n//# sourceMappingURL=SubjectExecutor.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to save/remove/etc. constructor-less object (object literal) instead of entity.\n */\nvar CannotDetermineEntityError = /** @class */ (function (_super) {\n __extends(CannotDetermineEntityError, _super);\n function CannotDetermineEntityError(operation) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotDetermineEntityError\";\n Object.setPrototypeOf(_this, CannotDetermineEntityError.prototype);\n _this.message = \"Cannot \" + operation + \", given value must be instance of entity class, instead object literal is given. Or you must specify an entity target to method call.\";\n return _this;\n }\n return CannotDetermineEntityError;\n}(Error));\nexport { CannotDetermineEntityError };\n\n//# sourceMappingURL=CannotDetermineEntityError.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { OrmUtils } from \"../util/OrmUtils\";\n/**\n * Subject is a subject of persistence.\n * It holds information about each entity that needs to be persisted:\n * - what entity should be persisted\n * - what is database representation of the persisted entity\n * - what entity metadata of the persisted entity\n * - what is allowed to with persisted entity (insert/update/remove)\n *\n * Having this collection of subjects we can perform database queries.\n */\nvar Subject = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Subject(options) {\n var _a;\n /**\n * Subject identifier.\n * This identifier is not limited to table entity primary columns.\n * This can be entity id or ids as well as some unique entity properties, like name or title.\n * Insert / Update / Remove operation will be executed by a given identifier.\n */\n this.identifier = undefined;\n /**\n * Copy of entity but with relational ids fulfilled.\n */\n this.entityWithFulfilledIds = undefined;\n /**\n * Indicates if database entity was loaded.\n * No matter if it was found or not, it indicates the fact of loading.\n */\n this.databaseEntityLoaded = false;\n /**\n * Changes needs to be applied in the database for the given subject.\n */\n this.changeMaps = [];\n /**\n * Indicates if this subject can be inserted into the database.\n * This means that this subject either is newly persisted, either can be inserted by cascades.\n */\n this.canBeInserted = false;\n /**\n * Indicates if this subject can be updated in the database.\n * This means that this subject either was persisted, either can be updated by cascades.\n */\n this.canBeUpdated = false;\n /**\n * Indicates if this subject MUST be removed from the database.\n * This means that this subject either was removed, either was removed by cascades.\n */\n this.mustBeRemoved = false;\n /**\n * Indicates if this subject can be soft-removed from the database.\n * This means that this subject either was soft-removed, either was soft-removed by cascades.\n */\n this.canBeSoftRemoved = false;\n /**\n * Indicates if this subject can be recovered from the database.\n * This means that this subject either was recovered, either was recovered by cascades.\n */\n this.canBeRecovered = false;\n /**\n * Relations updated by the change maps.\n */\n this.updatedRelationMaps = [];\n /**\n * List of updated columns\n */\n this.diffColumns = [];\n /**\n * List of updated relations\n */\n this.diffRelations = [];\n this.metadata = options.metadata;\n this.entity = options.entity;\n this.parentSubject = options.parentSubject;\n if (options.canBeInserted !== undefined)\n this.canBeInserted = options.canBeInserted;\n if (options.canBeUpdated !== undefined)\n this.canBeUpdated = options.canBeUpdated;\n if (options.mustBeRemoved !== undefined)\n this.mustBeRemoved = options.mustBeRemoved;\n if (options.canBeSoftRemoved !== undefined)\n this.canBeSoftRemoved = options.canBeSoftRemoved;\n if (options.canBeRecovered !== undefined)\n this.canBeRecovered = options.canBeRecovered;\n if (options.identifier !== undefined)\n this.identifier = options.identifier;\n if (options.changeMaps !== undefined)\n (_a = this.changeMaps).push.apply(_a, __spreadArray([], __read(options.changeMaps)));\n this.recompute();\n }\n Object.defineProperty(Subject.prototype, \"mustBeInserted\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Checks if this subject must be inserted into the database.\n * Subject can be inserted into the database if it is allowed to be inserted (explicitly persisted or by cascades)\n * and if it does not have database entity set.\n */\n get: function () {\n return this.canBeInserted && !this.databaseEntity;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Subject.prototype, \"mustBeUpdated\", {\n /**\n * Checks if this subject must be updated into the database.\n * Subject can be updated in the database if it is allowed to be updated (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get: function () {\n return this.canBeUpdated &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity)) &&\n // ((this.entity && this.databaseEntity) || (!this.entity && !this.databaseEntity)) &&\n this.changeMaps.length > 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Subject.prototype, \"mustBeSoftRemoved\", {\n /**\n * Checks if this subject must be soft-removed into the database.\n * Subject can be updated in the database if it is allowed to be soft-removed (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get: function () {\n return this.canBeSoftRemoved &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Subject.prototype, \"mustBeRecovered\", {\n /**\n * Checks if this subject must be recovered into the database.\n * Subject can be updated in the database if it is allowed to be recovered (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get: function () {\n return this.canBeRecovered &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a value set needs to be inserted / updated in the database.\n * Value set is based on the entity and change maps of the subject.\n * Important note: this method pops data from this subject's change maps.\n */\n Subject.prototype.createValueSetAndPopChangeMap = function () {\n var _this = this;\n var changeMapsWithoutValues = [];\n var changeSet = this.changeMaps.reduce(function (updateMap, changeMap) {\n var value = changeMap.value;\n if (value instanceof Subject) {\n // referenced columns can refer on values both which were just inserted and which were present in the model\n // if entity was just inserted valueSets must contain all values from the entity and values just inserted in the database\n // so, here we check if we have a value set then we simply use it as value to get our reference column values\n // otherwise simply use an entity which cannot be just inserted at the moment and have all necessary data\n value = value.insertedValueSet ? value.insertedValueSet : value.entity;\n }\n // value = changeMap.valueFactory ? changeMap.valueFactory(value) : changeMap.column.createValueMap(value);\n var valueMap;\n if (_this.metadata.isJunction && changeMap.column) {\n valueMap = changeMap.column.createValueMap(changeMap.column.referencedColumn.getEntityValue(value));\n }\n else if (changeMap.column) {\n valueMap = changeMap.column.createValueMap(value);\n }\n else if (changeMap.relation) {\n // value can be a related object, for example: post.question = { id: 1 }\n // or value can be a null or direct relation id, e.g. post.question = 1\n // if its a direction relation id then we just set it to the valueMap,\n // however if its an object then we need to extract its relation id map and set it to the valueMap\n if (value instanceof Object) {\n // get relation id, e.g. referenced column name and its value,\n // for example: { id: 1 } which then will be set to relation, e.g. post.category = { id: 1 }\n var relationId = changeMap.relation.getRelationIdMap(value);\n // but relation id can be empty, for example in the case when you insert a new post with category\n // and both post and category are newly inserted objects (by cascades) and in this case category will not have id\n // this means we need to insert post without question id and update post's questionId once question be inserted\n // that's why we create a new changeMap operation for future updation of the post entity\n if (relationId === undefined) {\n changeMapsWithoutValues.push(changeMap);\n _this.canBeUpdated = true;\n return updateMap;\n }\n valueMap = changeMap.relation.createValueMap(relationId);\n _this.updatedRelationMaps.push({ relation: changeMap.relation, value: relationId });\n }\n else { // value can be \"null\" or direct relation id here\n valueMap = changeMap.relation.createValueMap(value);\n _this.updatedRelationMaps.push({ relation: changeMap.relation, value: value });\n }\n }\n OrmUtils.mergeDeep(updateMap, valueMap);\n return updateMap;\n }, {});\n this.changeMaps = changeMapsWithoutValues;\n return changeSet;\n };\n /**\n * Recomputes entityWithFulfilledIds and identifier when entity changes.\n */\n Subject.prototype.recompute = function () {\n var _this = this;\n if (this.entity) {\n this.entityWithFulfilledIds = Object.assign({}, this.entity);\n if (this.parentSubject) {\n this.metadata.primaryColumns.forEach(function (primaryColumn) {\n if (primaryColumn.relationMetadata && primaryColumn.relationMetadata.inverseEntityMetadata === _this.parentSubject.metadata) {\n var value = primaryColumn.referencedColumn.getEntityValue(_this.parentSubject.entity);\n primaryColumn.setEntityValue(_this.entityWithFulfilledIds, value);\n }\n });\n }\n this.identifier = this.metadata.getEntityIdMap(this.entityWithFulfilledIds);\n }\n else if (this.databaseEntity) {\n this.identifier = this.metadata.getEntityIdMap(this.databaseEntity);\n }\n };\n return Subject;\n}());\nexport { Subject };\n\n//# sourceMappingURL=Subject.js.map\n","import { Subject } from \"../Subject\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\";\n/**\n * Builds operations needs to be executed for one-to-many relations of the given subjects.\n *\n * by example: post contains one-to-many relation with category in the property called \"categories\", e.g.\n * @OneToMany(type => Category, category => category.post) categories: Category[]\n * If user adds categories into the post and saves post we need to bind them.\n * This operation requires updation of category table since its owner of the relation and contains a join column.\n *\n * note: this class shares lot of things with OneToOneInverseSideOperationBuilder, so when you change this class\n * make sure to reflect changes there as well.\n */\nvar OneToManySubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function OneToManySubjectBuilder(subjects) {\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds all required operations.\n */\n OneToManySubjectBuilder.prototype.build = function () {\n var _this = this;\n this.subjects.forEach(function (subject) {\n subject.metadata.oneToManyRelations.forEach(function (relation) {\n // skip relations for which persistence is disabled\n if (relation.persistenceEnabled === false)\n return;\n _this.buildForSubjectRelation(subject, relation);\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"categories\" inside it here.\n */\n OneToManySubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) {\n var _this = this;\n // prepare objects (relation id maps) for the database entity\n // note: subject.databaseEntity contains relations with loaded relation ids only\n // by example: since subject is a post, we are expecting to get all post's categories saved in the database here,\n // particularly their relation ids, e.g. category ids stored in the database\n var relatedEntityDatabaseRelationIds = [];\n if (subject.databaseEntity) { // related entities in the database can exist only if this entity (post) is saved\n relatedEntityDatabaseRelationIds = relation.getEntityValue(subject.databaseEntity);\n }\n // get related entities of persisted entity\n // by example: get categories from the passed to persist post entity\n var relatedEntities = relation.getEntityValue(subject.entity);\n if (relatedEntities === null) // we treat relations set to null as removed, so we don't skip it\n relatedEntities = [];\n if (relatedEntities === undefined) // if relation is undefined then nothing to update\n return;\n // extract only relation ids from the related entities, since we only need them for comparision\n // by example: extract from categories only relation ids (category id, or let's say category title, depend on join column options)\n var relatedPersistedEntityRelationIds = [];\n relatedEntities.forEach(function (relatedEntity) {\n var relationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); // by example: relationIdMap is category.id map here, e.g. { id: ... }\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = _this.subjects.find(function (subject) {\n return subject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relationIdMap = relatedEntitySubject.identifier;\n // if relationIdMap is undefined then it means user binds object which is not saved in the database yet\n // by example: if post contains categories which does not have ids yet (because they are new)\n // it means they are always newly inserted and relation update operation always must be created for them\n // it does not make sense to perform difference operation for them for both add and remove actions\n if (!relationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if (!relatedEntitySubject)\n // throw new Error(`One-to-many relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entities which do not exist in the database yet, thus they cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entities before binding it.`);\n if (!relatedEntitySubject)\n return;\n // okay, so related subject exist and its marked for insertion, then add a new change map\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n return;\n }\n // check if this binding really exist in the database\n // by example: find our category if its already bind in the database\n var relationIdInDatabaseSubjectRelation = relatedEntityDatabaseRelationIds.find(function (relatedDatabaseEntityRelationId) {\n return OrmUtils.compareIds(relationIdMap, relatedDatabaseEntityRelationId);\n });\n // if relationIdMap DOES NOT exist in the subject's relation in the database it means its a new relation and we need to \"bind\" them\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n if (!relationIdInDatabaseSubjectRelation) {\n // if there is no relatedEntitySubject then it means \"category\" wasn't persisted,\n // but since we are going to update \"category\" table (since its an owning side of relation with join column)\n // we create a new subject here:\n if (!relatedEntitySubject) {\n relatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n canBeUpdated: true,\n identifier: relationIdMap\n });\n _this.subjects.push(relatedEntitySubject);\n }\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n }\n // if related entity has relation id then we add it to the list of relation ids\n // this list will be used later to compare with database relation ids to find a difference\n // what exist in this array and does not exist in the database are newly inserted relations\n // what does not exist in this array, but exist in the database are removed relations\n // removed relations are set to null from inverse side of relation\n relatedPersistedEntityRelationIds.push(relationIdMap);\n });\n // find what related entities were added and what were removed based on difference between what we save and what database has\n EntityMetadata\n .difference(relatedEntityDatabaseRelationIds, relatedPersistedEntityRelationIds)\n .forEach(function (removedRelatedEntityRelationId) {\n // todo: probably we can improve this in the future by finding entity with column those values,\n // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns\n // we create a new subject which operations will be executed in subject operation executor\n var removedRelatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n identifier: removedRelatedEntityRelationId,\n });\n if (!relation.inverseRelation || relation.inverseRelation.orphanedRowAction === \"nullify\") {\n removedRelatedEntitySubject.canBeUpdated = true;\n removedRelatedEntitySubject.changeMaps = [{\n relation: relation.inverseRelation,\n value: null\n }];\n }\n else if (relation.inverseRelation.orphanedRowAction === \"delete\") {\n removedRelatedEntitySubject.mustBeRemoved = true;\n }\n _this.subjects.push(removedRelatedEntitySubject);\n });\n };\n return OneToManySubjectBuilder;\n}());\nexport { OneToManySubjectBuilder };\n\n//# sourceMappingURL=OneToManySubjectBuilder.js.map\n","import { Subject } from \"../Subject\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\n/**\n * Builds operations needs to be executed for one-to-one non-owner relations of the given subjects.\n *\n * by example: post contains one-to-one non-owner relation with category in the property called \"category\", e.g.\n * @OneToOne(type => Category, category => category.post) category: Category\n * If user sets a category into the post and saves post we need to bind them.\n * This operation requires updation of category table since its owner of the relation and contains a join column.\n *\n * note: this class shares lot of things with OneToManyUpdateBuilder, so when you change this class\n * make sure to reflect changes there as well.\n */\nvar OneToOneInverseSideSubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function OneToOneInverseSideSubjectBuilder(subjects) {\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds all required operations.\n */\n OneToOneInverseSideSubjectBuilder.prototype.build = function () {\n var _this = this;\n this.subjects.forEach(function (subject) {\n subject.metadata.oneToOneRelations.forEach(function (relation) {\n // we don't need owning relations, this operation is only for inverse side of one-to-one relations\n // skip relations for which persistence is disabled\n if (relation.isOwning || relation.persistenceEnabled === false)\n return;\n _this.buildForSubjectRelation(subject, relation);\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"category\" inside it here.\n */\n OneToOneInverseSideSubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) {\n // prepare objects (relation id map) for the database entity\n // note: subject.databaseEntity contains relation with loaded relation id only (id map)\n // by example: since subject is a post, we are expecting to get post's category saved in the database here,\n // particularly its relation id, e.g. category id stored in the database\n var relatedEntityDatabaseRelationId = undefined;\n if (subject.databaseEntity) // related entity in the database can exist only if this entity (post) is saved\n relatedEntityDatabaseRelationId = relation.getEntityValue(subject.databaseEntity);\n // get related entities of persisted entity\n // by example: get category from the passed to persist post entity\n var relatedEntity = relation.getEntityValue(subject.entity); // by example: relatedEntity is a category here\n if (relatedEntity === undefined) // if relation is undefined then nothing to update\n return;\n // if related entity is null then we need to check if there a bind in the database and unset it\n // if there is no bind in the entity then we don't need to do anything\n // by example: if post.category = null and category has this post in the database then we unset it\n if (relatedEntity === null) {\n // it makes sense to update database only there is a previously set value in the database\n if (relatedEntityDatabaseRelationId) {\n // todo: probably we can improve this in the future by finding entity with column those values,\n // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns\n // we create a new subject which operations will be executed in subject operation executor\n var removedRelatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n canBeUpdated: true,\n identifier: relatedEntityDatabaseRelationId,\n changeMaps: [{\n relation: relation.inverseRelation,\n value: null\n }]\n });\n this.subjects.push(removedRelatedEntitySubject);\n }\n return;\n } // else means entity is bind in the database\n // extract only relation id from the related entities, since we only need it for comparision\n // by example: extract from category only relation id (category id, or let's say category title, depend on join column options)\n var relationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity); // by example: relationIdMap is category.id map here, e.g. { id: ... }\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = this.subjects.find(function (operateSubject) {\n return !!operateSubject.entity && operateSubject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relationIdMap = relatedEntitySubject.identifier;\n // if relationIdMap is undefined then it means user binds object which is not saved in the database yet\n // by example: if post contains category which does not have id(s) yet (because its a new category)\n // it means its always newly inserted and relation update operation always must be created for it\n // it does not make sense to perform difference operation for it for both add and remove actions\n if (!relationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if related entity does not have a subject then it means user tries to bind entity which wasn't saved\n // in this persistence because he didn't pass this entity for save or he did not set cascades\n // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here\n // if (!relatedEntitySubject)\n // throw new Error(`One-to-one inverse relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entity which does not exist in the database yet, thus cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entity before binding it.`);\n if (!relatedEntitySubject)\n return;\n // okay, so related subject exist and its marked for insertion, then add a new change map\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is OneToOne owner relation inside Category\n // subject is Post needs to be inserted into Category\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n }\n // check if this binding really exist in the database\n // by example: find our post if its already bind to category in the database and its not equal to what user tries to set\n var areRelatedIdEqualWithDatabase = relatedEntityDatabaseRelationId && OrmUtils.compareIds(relationIdMap, relatedEntityDatabaseRelationId);\n // if they aren't equal it means its a new relation and we need to \"bind\" them\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n if (!areRelatedIdEqualWithDatabase) {\n // if there is no relatedEntitySubject then it means \"category\" wasn't persisted,\n // but since we are going to update \"category\" table (since its an owning side of relation with join column)\n // we create a new subject here:\n if (!relatedEntitySubject) {\n relatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n canBeUpdated: true,\n identifier: relationIdMap\n });\n this.subjects.push(relatedEntitySubject);\n }\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation,\n value: subject\n });\n }\n };\n return OneToOneInverseSideSubjectBuilder;\n}());\nexport { OneToOneInverseSideSubjectBuilder };\n\n//# sourceMappingURL=OneToOneInverseSideSubjectBuilder.js.map\n","import { Subject } from \"../Subject\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\n/**\n * Builds operations needs to be executed for many-to-many relations of the given subjects.\n *\n * by example: post contains owner many-to-many relation with categories in the property called \"categories\", e.g.\n * @ManyToMany(type => Category, category => category.posts) categories: Category[]\n * If user adds categories into the post and saves post we need to bind them.\n * This operation requires updation of junction table.\n */\nvar ManyToManySubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ManyToManySubjectBuilder(subjects) {\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for any changes in the many-to-many relations of the subjects.\n */\n ManyToManySubjectBuilder.prototype.build = function () {\n var _this = this;\n this.subjects.forEach(function (subject) {\n // if subject doesn't have entity then no need to find something that should be inserted or removed\n if (!subject.entity)\n return;\n // go through all persistence enabled many-to-many relations and build subject operations for them\n subject.metadata.manyToManyRelations.forEach(function (relation) {\n // skip relations for which persistence is disabled\n if (relation.persistenceEnabled === false)\n return;\n _this.buildForSubjectRelation(subject, relation);\n });\n });\n };\n /**\n * Builds operations for removal of all many-to-many records of all many-to-many relations of the given subject.\n */\n ManyToManySubjectBuilder.prototype.buildForAllRemoval = function (subject) {\n var _this = this;\n // if subject does not have a database entity then it means it does not exist in the database\n // if it does not exist in the database then we don't have anything for deletion\n if (!subject.databaseEntity)\n return;\n // go through all persistence enabled many-to-many relations and build subject operations for them\n subject.metadata.manyToManyRelations.forEach(function (relation) {\n // skip relations for which persistence is disabled\n if (relation.persistenceEnabled === false)\n return;\n // get all related entities (actually related entity relation ids) bind to this subject entity\n // by example: returns category ids of the post we are currently working with (subject.entity is post)\n var relatedEntityRelationIdsInDatabase = relation.getEntityValue(subject.databaseEntity);\n // go through all related entities and create a new junction subject for each row in junction table\n relatedEntityRelationIdsInDatabase.forEach(function (relationId) {\n var junctionSubject = new Subject({\n metadata: relation.junctionEntityMetadata,\n parentSubject: subject,\n mustBeRemoved: true,\n identifier: _this.buildJunctionIdentifier(subject, relation, relationId)\n });\n // we use unshift because we need to perform those operations before post deletion is performed\n // but post deletion was already added as an subject\n // this is temporary solution, later we need to implement proper sorting of subjects before their removal\n _this.subjects.push(junctionSubject);\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"categories\" inside it here.\n */\n ManyToManySubjectBuilder.prototype.buildForSubjectRelation = function (subject, relation) {\n var _this = this;\n // load from db all relation ids of inverse entities that are \"bind\" to the subject's entity\n // this way we gonna check which relation ids are missing and which are new (e.g. inserted or removed)\n var databaseRelatedEntityIds = [];\n // if subject don't have database entity it means all related entities in persisted subject are new and must be bind\n // and we don't need to remove something that is not exist\n if (subject.databaseEntity)\n databaseRelatedEntityIds = relation.getEntityValue(subject.databaseEntity);\n // extract entity's relation value\n // by example: categories inside our post (subject.entity is post)\n var relatedEntities = relation.getEntityValue(subject.entity);\n if (relatedEntities === null) // if value set to null its equal if we set it to empty array - all items must be removed from the database\n relatedEntities = [];\n if (!(Array.isArray(relatedEntities)))\n return;\n // from all related entities find only those which aren't found in the db - for them we will create operation subjects\n relatedEntities.forEach(function (relatedEntity) {\n // todo: check how it will work for entities which are saved by cascades, but aren't saved in the database yet\n // extract only relation id from the related entities, since we only need it for comparision\n // by example: extract from category only relation id (category id, or let's say category title, depend on join column options)\n var relatedEntityRelationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity);\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = _this.subjects.find(function (subject) {\n return subject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relatedEntityRelationIdMap = relatedEntitySubject.identifier;\n // if related entity relation id map is empty it means related entity is newly persisted\n if (!relatedEntityRelationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if related entity does not have a subject then it means user tries to bind entity which wasn't saved\n // in this persistence because he didn't pass this entity for save or he did not set cascades\n // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if (!relatedEntitySubject)\n // throw new Error(`Many-to-many relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entities which do not exist in the database yet, thus they cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entities before binding it.`);\n if (!relatedEntitySubject)\n return;\n }\n // try to find related entity in the database\n // by example: find post's category in the database post's categories\n var relatedEntityExistInDatabase = databaseRelatedEntityIds.find(function (databaseRelatedEntityRelationId) {\n return OrmUtils.compareIds(databaseRelatedEntityRelationId, relatedEntityRelationIdMap);\n });\n // if entity is found then don't do anything - it means binding in junction table already exist, we don't need to add anything\n if (relatedEntityExistInDatabase)\n return;\n var ownerValue = relation.isOwning ? subject : (relatedEntitySubject || relatedEntity); // by example: ownerEntityMap is post from subject here\n var inverseValue = relation.isOwning ? (relatedEntitySubject || relatedEntity) : subject; // by example: inverseEntityMap is category from categories array here\n // create a new subject for insert operation of junction rows\n var junctionSubject = new Subject({\n metadata: relation.junctionEntityMetadata,\n parentSubject: subject,\n canBeInserted: true,\n });\n _this.subjects.push(junctionSubject);\n relation.junctionEntityMetadata.ownerColumns.forEach(function (column) {\n junctionSubject.changeMaps.push({\n column: column,\n value: ownerValue,\n // valueFactory: (value) => column.referencedColumn!.getEntityValue(value) // column.referencedColumn!.getEntityValue(ownerEntityMap),\n });\n });\n relation.junctionEntityMetadata.inverseColumns.forEach(function (column) {\n junctionSubject.changeMaps.push({\n column: column,\n value: inverseValue,\n // valueFactory: (value) => column.referencedColumn!.getEntityValue(value) // column.referencedColumn!.getEntityValue(inverseEntityMap),\n });\n });\n });\n // get all inverse entities relation ids that are \"bind\" to the currently persisted entity\n var changedInverseEntityRelationIds = [];\n relatedEntities.forEach(function (relatedEntity) {\n // relation.inverseEntityMetadata!.getEntityIdMap(relatedEntity)\n var relatedEntityRelationIdMap = relation.inverseEntityMetadata.getEntityIdMap(relatedEntity);\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n var relatedEntitySubject = _this.subjects.find(function (subject) {\n return subject.entity === relatedEntity;\n });\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relatedEntityRelationIdMap = relatedEntitySubject.identifier;\n if (relatedEntityRelationIdMap !== undefined && relatedEntityRelationIdMap !== null)\n changedInverseEntityRelationIds.push(relatedEntityRelationIdMap);\n });\n // now from all entities in the persisted entity find only those which aren't found in the db\n var removedJunctionEntityIds = databaseRelatedEntityIds.filter(function (existRelationId) {\n return !changedInverseEntityRelationIds.find(function (changedRelationId) {\n return OrmUtils.compareIds(changedRelationId, existRelationId);\n });\n });\n // finally create a new junction remove operations for missing related entities\n removedJunctionEntityIds.forEach(function (removedEntityRelationId) {\n var junctionSubject = new Subject({\n metadata: relation.junctionEntityMetadata,\n parentSubject: subject,\n mustBeRemoved: true,\n identifier: _this.buildJunctionIdentifier(subject, relation, removedEntityRelationId)\n });\n _this.subjects.push(junctionSubject);\n });\n };\n /**\n * Creates identifiers for junction table.\n * Example: { postId: 1, categoryId: 2 }\n */\n ManyToManySubjectBuilder.prototype.buildJunctionIdentifier = function (subject, relation, relationId) {\n var ownerEntityMap = relation.isOwning ? subject.entity : relationId;\n var inverseEntityMap = relation.isOwning ? relationId : subject.entity;\n var identifier = {};\n relation.junctionEntityMetadata.ownerColumns.forEach(function (column) {\n OrmUtils.mergeDeep(identifier, column.createValueMap(column.referencedColumn.getEntityValue(ownerEntityMap)));\n });\n relation.junctionEntityMetadata.inverseColumns.forEach(function (column) {\n OrmUtils.mergeDeep(identifier, column.createValueMap(column.referencedColumn.getEntityValue(inverseEntityMap)));\n });\n return identifier;\n };\n return ManyToManySubjectBuilder;\n}());\nexport { ManyToManySubjectBuilder };\n\n//# sourceMappingURL=ManyToManySubjectBuilder.js.map\n","import { __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/**\n * Loads database entities for all operate subjects which do not have database entity set.\n * All entities that we load database entities for are marked as updated or inserted.\n * To understand which of them really needs to be inserted or updated we need to load\n * their original representations from the database.\n */\nvar SubjectDatabaseEntityLoader = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function SubjectDatabaseEntityLoader(queryRunner, subjects) {\n this.queryRunner = queryRunner;\n this.subjects = subjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Loads database entities for all subjects.\n *\n * loadAllRelations flag is used to load all relation ids of the object, no matter if they present in subject entity or not.\n * This option is used for deletion.\n */\n SubjectDatabaseEntityLoader.prototype.load = function (operationType) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = this.groupByEntityTargets().map(function (subjectGroup) { return __awaiter(_this, void 0, void 0, function () {\n var allIds, allSubjects, loadRelationPropertyPaths, findOptions, entities, allSubjects_1, allSubjects_1_1, subject;\n var e_1, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n allIds = [];\n allSubjects = [];\n subjectGroup.subjects.forEach(function (subject) {\n // we don't load if subject already has a database entity loaded\n if (subject.databaseEntity || !subject.identifier)\n return;\n allIds.push(subject.identifier);\n allSubjects.push(subject);\n });\n // if there no ids found (means all entities are new and have generated ids) - then nothing to load there\n if (!allIds.length)\n return [2 /*return*/];\n loadRelationPropertyPaths = [];\n // for the save, soft-remove and recover operation\n // extract all property paths of the relations we need to load relation ids for\n // this is for optimization purpose - this way we don't load relation ids for entities\n // whose relations are undefined, and since they are undefined its really pointless to\n // load something for them, since undefined properties are skipped by the orm\n if (operationType === \"save\" || operationType === \"soft-remove\" || operationType === \"recover\") {\n subjectGroup.subjects.forEach(function (subject) {\n // gets all relation property paths that exist in the persisted entity.\n subject.metadata.relations.forEach(function (relation) {\n var value = relation.getEntityValue(subject.entityWithFulfilledIds);\n if (value === undefined)\n return;\n if (loadRelationPropertyPaths.indexOf(relation.propertyPath) === -1)\n loadRelationPropertyPaths.push(relation.propertyPath);\n });\n });\n }\n else { // remove\n // for remove operation\n // we only need to load junction relation ids since only they are removed by cascades\n loadRelationPropertyPaths.push.apply(// remove\n loadRelationPropertyPaths, __spreadArray([], __read(subjectGroup.subjects[0].metadata.manyToManyRelations.map(function (relation) { return relation.propertyPath; }))));\n }\n findOptions = {\n loadEagerRelations: false,\n loadRelationIds: {\n relations: loadRelationPropertyPaths,\n disableMixedMap: true\n },\n // the soft-deleted entities should be included in the loaded entities for recover operation\n withDeleted: true\n };\n return [4 /*yield*/, this.queryRunner.manager\n .getRepository(subjectGroup.target)\n .findByIds(allIds, findOptions)];\n case 1:\n entities = _b.sent();\n // now when we have entities we need to find subject of each entity\n // and insert that entity into database entity of the found subjects\n entities.forEach(function (entity) {\n var subjects = _this.findByPersistEntityLike(subjectGroup.target, entity);\n subjects.forEach(function (subject) {\n subject.databaseEntity = entity;\n if (!subject.identifier)\n subject.identifier = subject.metadata.hasAllPrimaryKeys(entity) ? subject.metadata.getEntityIdMap(entity) : undefined;\n });\n });\n try {\n // this way we tell what subjects we tried to load database entities of\n for (allSubjects_1 = __values(allSubjects), allSubjects_1_1 = allSubjects_1.next(); !allSubjects_1_1.done; allSubjects_1_1 = allSubjects_1.next()) {\n subject = allSubjects_1_1.value;\n subject.databaseEntityLoaded = true;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (allSubjects_1_1 && !allSubjects_1_1.done && (_a = allSubjects_1.return)) _a.call(allSubjects_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [2 /*return*/];\n }\n });\n }); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Finds subjects where entity like given subject's entity.\n * Comparision made by entity id.\n * Multiple subjects may be returned if duplicates are present in the subject array.\n * This will likely result in the same row being updated multiple times during a transaction.\n */\n SubjectDatabaseEntityLoader.prototype.findByPersistEntityLike = function (entityTarget, entity) {\n return this.subjects.filter(function (subject) {\n if (!subject.entity)\n return false;\n if (subject.entity === entity)\n return true;\n return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds, entity);\n });\n };\n /**\n * Groups given Subject objects into groups separated by entity targets.\n */\n SubjectDatabaseEntityLoader.prototype.groupByEntityTargets = function () {\n return this.subjects.reduce(function (groups, operatedEntity) {\n var group = groups.find(function (group) { return group.target === operatedEntity.metadata.target; });\n if (!group) {\n group = { target: operatedEntity.metadata.target, subjects: [] };\n groups.push(group);\n }\n group.subjects.push(operatedEntity);\n return groups;\n }, []);\n };\n return SubjectDatabaseEntityLoader;\n}());\nexport { SubjectDatabaseEntityLoader };\n\n//# sourceMappingURL=SubjectDatabaseEntityLoader.js.map\n","import { __read } from \"tslib\";\nimport { Subject } from \"../Subject\";\n/**\n * Finds all cascade operations of the given subject and cascade operations of the found cascaded subjects,\n * e.g. builds a cascade tree and creates a subjects for them.\n */\nvar CascadesSubjectBuilder = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function CascadesSubjectBuilder(allSubjects) {\n this.allSubjects = allSubjects;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds a cascade subjects tree and pushes them in into the given array of subjects.\n */\n CascadesSubjectBuilder.prototype.build = function (subject, operationType) {\n var _this = this;\n subject.metadata\n .extractRelationValuesFromEntity(subject.entity, subject.metadata.relations) // todo: we can create EntityMetadata.cascadeRelations\n .forEach(function (_a) {\n var _b = __read(_a, 3), relation = _b[0], relationEntity = _b[1], relationEntityMetadata = _b[2];\n // we need only defined values and insert, update, soft-remove or recover cascades of the relation should be set\n if (relationEntity === undefined ||\n relationEntity === null ||\n (!relation.isCascadeInsert && !relation.isCascadeUpdate && !relation.isCascadeSoftRemove && !relation.isCascadeRecover))\n return;\n // if relation entity is just a relation id set (for example post.tag = 1)\n // then we don't really need to check cascades since there is no object to insert or update\n if (!(relationEntity instanceof Object))\n return;\n // if we already has this entity in list of operated subjects then skip it to avoid recursion\n var alreadyExistRelationEntitySubject = _this.findByPersistEntityLike(relationEntityMetadata.target, relationEntity);\n if (alreadyExistRelationEntitySubject) {\n if (alreadyExistRelationEntitySubject.canBeInserted === false) // if its not marked for insertion yet\n alreadyExistRelationEntitySubject.canBeInserted = relation.isCascadeInsert === true && operationType === \"save\";\n if (alreadyExistRelationEntitySubject.canBeUpdated === false) // if its not marked for update yet\n alreadyExistRelationEntitySubject.canBeUpdated = relation.isCascadeUpdate === true && operationType === \"save\";\n if (alreadyExistRelationEntitySubject.canBeSoftRemoved === false) // if its not marked for removal yet\n alreadyExistRelationEntitySubject.canBeSoftRemoved = relation.isCascadeSoftRemove === true && operationType === \"soft-remove\";\n if (alreadyExistRelationEntitySubject.canBeRecovered === false) // if its not marked for recovery yet\n alreadyExistRelationEntitySubject.canBeRecovered = relation.isCascadeRecover === true && operationType === \"recover\";\n return;\n }\n // mark subject with what we can do with it\n // and add to the array of subjects to load only if there is no same entity there already\n var relationEntitySubject = new Subject({\n metadata: relationEntityMetadata,\n parentSubject: subject,\n entity: relationEntity,\n canBeInserted: relation.isCascadeInsert === true && operationType === \"save\",\n canBeUpdated: relation.isCascadeUpdate === true && operationType === \"save\",\n canBeSoftRemoved: relation.isCascadeSoftRemove === true && operationType === \"soft-remove\",\n canBeRecovered: relation.isCascadeRecover === true && operationType === \"recover\"\n });\n _this.allSubjects.push(relationEntitySubject);\n // go recursively and find other entities we need to insert/update\n _this.build(relationEntitySubject, operationType);\n });\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Finds subject where entity like given subject's entity.\n * Comparision made by entity id.\n */\n CascadesSubjectBuilder.prototype.findByPersistEntityLike = function (entityTarget, entity) {\n return this.allSubjects.find(function (subject) {\n if (!subject.entity)\n return false;\n if (subject.entity === entity)\n return true;\n return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds, entity);\n });\n };\n return CascadesSubjectBuilder;\n}());\nexport { CascadesSubjectBuilder };\n\n//# sourceMappingURL=CascadesSubjectBuilder.js.map\n","import { __awaiter, __generator, __values } from \"tslib\";\nimport { MustBeEntityError } from \"../error/MustBeEntityError\";\nimport { SubjectExecutor } from \"./SubjectExecutor\";\nimport { CannotDetermineEntityError } from \"../error/CannotDetermineEntityError\";\nimport { Subject } from \"./Subject\";\nimport { OneToManySubjectBuilder } from \"./subject-builder/OneToManySubjectBuilder\";\nimport { OneToOneInverseSideSubjectBuilder } from \"./subject-builder/OneToOneInverseSideSubjectBuilder\";\nimport { ManyToManySubjectBuilder } from \"./subject-builder/ManyToManySubjectBuilder\";\nimport { SubjectDatabaseEntityLoader } from \"./SubjectDatabaseEntityLoader\";\nimport { CascadesSubjectBuilder } from \"./subject-builder/CascadesSubjectBuilder\";\nimport { OrmUtils } from \"../util/OrmUtils\";\n/**\n * Persists a single entity or multiple entities - saves or removes them.\n */\nvar EntityPersistExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function EntityPersistExecutor(connection, queryRunner, mode, target, entity, options) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n this.mode = mode;\n this.target = target;\n this.entity = entity;\n this.options = options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Executes persistence operation ob given entity or entities.\n */\n EntityPersistExecutor.prototype.execute = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, entities, entitiesInChunks, executors, executorsWithExecutableOperations, isTransactionStartedByUs, executorsWithExecutableOperations_1, executorsWithExecutableOperations_1_1, executor, e_1_1, error_1, rollbackError_1;\n var e_1, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // check if entity we are going to save is valid and is an object\n if (!this.entity || typeof this.entity !== \"object\")\n return [2 /*return*/, Promise.reject(new MustBeEntityError(this.mode, this.entity))];\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n return [4 /*yield*/, Promise.resolve()];\n case 1:\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n _b.sent();\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // save data in the query runner - this is useful functionality to share data from outside of the world\n // with third classes - like subscribers and listener methods\n if (this.options && this.options.data)\n queryRunner.data = this.options.data;\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 22, 25]);\n entities = Array.isArray(this.entity) ? this.entity : [this.entity];\n entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils.chunk(entities, this.options.chunk) : [entities];\n return [4 /*yield*/, Promise.all(entitiesInChunks.map(function (entities) { return __awaiter(_this, void 0, void 0, function () {\n var subjects, cascadesSubjectBuilder;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n subjects = [];\n // create subjects for all entities we received for the persistence\n entities.forEach(function (entity) {\n var entityTarget = _this.target ? _this.target : entity.constructor;\n if (entityTarget === Object)\n throw new CannotDetermineEntityError(_this.mode);\n subjects.push(new Subject({\n metadata: _this.connection.getMetadata(entityTarget),\n entity: entity,\n canBeInserted: _this.mode === \"save\",\n canBeUpdated: _this.mode === \"save\",\n mustBeRemoved: _this.mode === \"remove\",\n canBeSoftRemoved: _this.mode === \"soft-remove\",\n canBeRecovered: _this.mode === \"recover\"\n }));\n });\n cascadesSubjectBuilder = new CascadesSubjectBuilder(subjects);\n subjects.forEach(function (subject) {\n // next step we build list of subjects we will operate with\n // these subjects are subjects that we need to insert or update alongside with main persisted entity\n cascadesSubjectBuilder.build(subject, _this.mode);\n });\n // console.timeEnd(\"building cascades...\");\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n return [4 /*yield*/, new SubjectDatabaseEntityLoader(queryRunner, subjects).load(this.mode)];\n case 1:\n // console.timeEnd(\"building cascades...\");\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n _a.sent();\n // console.timeEnd(\"loading...\");\n // console.time(\"other subjects...\");\n // build all related subjects and change maps\n if (this.mode === \"save\" || this.mode === \"soft-remove\" || this.mode === \"recover\") {\n new OneToManySubjectBuilder(subjects).build();\n new OneToOneInverseSideSubjectBuilder(subjects).build();\n new ManyToManySubjectBuilder(subjects).build();\n }\n else {\n subjects.forEach(function (subject) {\n if (subject.mustBeRemoved) {\n new ManyToManySubjectBuilder(subjects).buildForAllRemoval(subject);\n }\n });\n }\n // console.timeEnd(\"other subjects...\");\n // console.timeEnd(\"building subjects...\");\n // console.log(\"subjects\", subjects);\n // create a subject executor\n return [2 /*return*/, new SubjectExecutor(queryRunner, subjects, this.options)];\n }\n });\n }); }))];\n case 3:\n executors = _b.sent();\n executorsWithExecutableOperations = executors.filter(function (executor) { return executor.hasExecutableOperations; });\n if (executorsWithExecutableOperations.length === 0)\n return [2 /*return*/];\n isTransactionStartedByUs = false;\n _b.label = 4;\n case 4:\n _b.trys.push([4, 16, , 21]);\n if (!!queryRunner.isTransactionActive) return [3 /*break*/, 6];\n if (!(!this.options || this.options.transaction !== false)) return [3 /*break*/, 6];\n isTransactionStartedByUs = true;\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n _b.trys.push([6, 11, 12, 13]);\n executorsWithExecutableOperations_1 = __values(executorsWithExecutableOperations), executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();\n _b.label = 7;\n case 7:\n if (!!executorsWithExecutableOperations_1_1.done) return [3 /*break*/, 10];\n executor = executorsWithExecutableOperations_1_1.value;\n return [4 /*yield*/, executor.execute()];\n case 8:\n _b.sent();\n _b.label = 9;\n case 9:\n executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();\n return [3 /*break*/, 7];\n case 10: return [3 /*break*/, 13];\n case 11:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 13];\n case 12:\n try {\n if (executorsWithExecutableOperations_1_1 && !executorsWithExecutableOperations_1_1.done && (_a = executorsWithExecutableOperations_1.return)) _a.call(executorsWithExecutableOperations_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 13:\n if (!(isTransactionStartedByUs === true)) return [3 /*break*/, 15];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 14:\n _b.sent();\n _b.label = 15;\n case 15: return [3 /*break*/, 21];\n case 16:\n error_1 = _b.sent();\n if (!isTransactionStartedByUs) return [3 /*break*/, 20];\n _b.label = 17;\n case 17:\n _b.trys.push([17, 19, , 20]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 18:\n _b.sent();\n return [3 /*break*/, 20];\n case 19:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 20];\n case 20: throw error_1;\n case 21: return [3 /*break*/, 25];\n case 22:\n if (!!this.queryRunner) return [3 /*break*/, 24];\n return [4 /*yield*/, queryRunner.release()];\n case 23:\n _b.sent();\n _b.label = 24;\n case 24: return [7 /*endfinally*/];\n case 25: return [2 /*return*/];\n }\n });\n });\n };\n return EntityPersistExecutor;\n}());\nexport { EntityPersistExecutor };\n\n//# sourceMappingURL=EntityPersistExecutor.js.map\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { EntityNotFoundError } from \"../error/EntityNotFoundError\";\nimport { QueryRunnerProviderAlreadyReleasedError } from \"../error/QueryRunnerProviderAlreadyReleasedError\";\nimport { NoNeedToReleaseEntityManagerError } from \"../error/NoNeedToReleaseEntityManagerError\";\nimport { TreeRepository } from \"../repository/TreeRepository\";\nimport { Repository } from \"../repository/Repository\";\nimport { FindOptionsUtils } from \"../find-options/FindOptionsUtils\";\nimport { PlainObjectToNewEntityTransformer } from \"../query-builder/transformer/PlainObjectToNewEntityTransformer\";\nimport { PlainObjectToDatabaseEntityTransformer } from \"../query-builder/transformer/PlainObjectToDatabaseEntityTransformer\";\nimport { CustomRepositoryNotFoundError } from \"../error/CustomRepositoryNotFoundError\";\nimport { EntitySchema, getMetadataArgsStorage } from \"../index\";\nimport { AbstractRepository } from \"../repository/AbstractRepository\";\nimport { CustomRepositoryCannotInheritRepositoryError } from \"../error/CustomRepositoryCannotInheritRepositoryError\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { RepositoryNotFoundError } from \"../error/RepositoryNotFoundError\";\nimport { RepositoryNotTreeError } from \"../error/RepositoryNotTreeError\";\nimport { RepositoryFactory } from \"../repository/RepositoryFactory\";\nimport { TreeRepositoryNotSupportedError } from \"../error/TreeRepositoryNotSupportedError\";\nimport { EntityPersistExecutor } from \"../persistence/EntityPersistExecutor\";\nimport { ObjectUtils } from \"../util/ObjectUtils\";\n/**\n * Entity manager supposed to work with any entity, automatically find its repository and call its methods,\n * whatever entity type are you passing.\n */\nvar EntityManager = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function EntityManager(connection, queryRunner) {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n /**\n * Once created and then reused by en repositories.\n */\n this.repositories = [];\n /**\n * Plain to object transformer used in create and merge operations.\n */\n this.plainObjectToEntityTransformer = new PlainObjectToNewEntityTransformer();\n this.connection = connection;\n if (queryRunner) {\n this.queryRunner = queryRunner;\n // dynamic: this.queryRunner = manager;\n ObjectUtils.assign(this.queryRunner, { manager: this });\n }\n }\n /**\n * Wraps given function execution (and all operations made there) in a transaction.\n * All database operations must be executed using provided entity manager.\n */\n EntityManager.prototype.transaction = function (isolationOrRunInTransaction, runInTransactionParam) {\n return __awaiter(this, void 0, void 0, function () {\n var isolation, runInTransaction, queryRunner, result, err_1, rollbackError_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isolation = typeof isolationOrRunInTransaction === \"string\" ? isolationOrRunInTransaction : undefined;\n runInTransaction = typeof isolationOrRunInTransaction === \"function\" ? isolationOrRunInTransaction : runInTransactionParam;\n if (!runInTransaction) {\n throw new Error(\"Transaction method requires callback in second paramter if isolation level is supplied.\");\n }\n if (this.connection.driver instanceof MongoDriver)\n throw new Error(\"Transactions aren't supported by MongoDB.\");\n if (this.queryRunner && this.queryRunner.isReleased)\n throw new QueryRunnerProviderAlreadyReleasedError();\n if (this.queryRunner && this.queryRunner.isTransactionActive)\n throw new Error(\"Cannot start transaction because its already started\");\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 8, 13, 16]);\n if (!isolation) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction(isolation)];\n case 2:\n _a.sent();\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, queryRunner.startTransaction()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [4 /*yield*/, runInTransaction(queryRunner.manager)];\n case 6:\n result = _a.sent();\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 7:\n _a.sent();\n return [2 /*return*/, result];\n case 8:\n err_1 = _a.sent();\n _a.label = 9;\n case 9:\n _a.trys.push([9, 11, , 12]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 10:\n _a.sent();\n return [3 /*break*/, 12];\n case 11:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 12];\n case 12: throw err_1;\n case 13:\n if (!!this.queryRunner) return [3 /*break*/, 15];\n return [4 /*yield*/, queryRunner.release()];\n case 14:\n _a.sent();\n _a.label = 15;\n case 15: return [7 /*endfinally*/];\n case 16: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes raw SQL query and returns raw database results.\n */\n EntityManager.prototype.query = function (query, parameters) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.connection.query(query, parameters, this.queryRunner)];\n });\n });\n };\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n EntityManager.prototype.createQueryBuilder = function (entityClass, alias, queryRunner) {\n if (alias) {\n return this.connection.createQueryBuilder(entityClass, alias, queryRunner || this.queryRunner);\n }\n else {\n return this.connection.createQueryBuilder(entityClass || queryRunner || this.queryRunner);\n }\n };\n /**\n * Checks if entity has an id by its Function type or schema name.\n */\n EntityManager.prototype.hasId = function (targetOrEntity, maybeEntity) {\n var target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;\n var entity = arguments.length === 2 ? maybeEntity : targetOrEntity;\n var metadata = this.connection.getMetadata(target);\n return metadata.hasId(entity);\n };\n /**\n * Gets entity mixed id.\n */\n EntityManager.prototype.getId = function (targetOrEntity, maybeEntity) {\n var target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;\n var entity = arguments.length === 2 ? maybeEntity : targetOrEntity;\n var metadata = this.connection.getMetadata(target);\n return metadata.getEntityIdMixedMap(entity);\n };\n /**\n * Creates a new entity instance or instances.\n * Can copy properties from the given object into new entities.\n */\n EntityManager.prototype.create = function (entityClass, plainObjectOrObjects) {\n var _this = this;\n var metadata = this.connection.getMetadata(entityClass);\n if (!plainObjectOrObjects)\n return metadata.create(this.queryRunner);\n if (Array.isArray(plainObjectOrObjects))\n return plainObjectOrObjects.map(function (plainEntityLike) { return _this.create(entityClass, plainEntityLike); });\n var mergeIntoEntity = metadata.create(this.queryRunner);\n this.plainObjectToEntityTransformer.transform(mergeIntoEntity, plainObjectOrObjects, metadata, true);\n return mergeIntoEntity;\n };\n /**\n * Merges two entities into one new entity.\n */\n EntityManager.prototype.merge = function (entityClass, mergeIntoEntity) {\n var _this = this;\n var entityLikes = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n entityLikes[_i - 2] = arguments[_i];\n }\n var metadata = this.connection.getMetadata(entityClass);\n entityLikes.forEach(function (object) { return _this.plainObjectToEntityTransformer.transform(mergeIntoEntity, object, metadata); });\n return mergeIntoEntity;\n };\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n */\n EntityManager.prototype.preload = function (entityClass, entityLike) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, plainObjectToDatabaseEntityTransformer, transformedEntity;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.connection.getMetadata(entityClass);\n plainObjectToDatabaseEntityTransformer = new PlainObjectToDatabaseEntityTransformer(this.connection.manager);\n return [4 /*yield*/, plainObjectToDatabaseEntityTransformer.transform(entityLike, metadata)];\n case 1:\n transformedEntity = _a.sent();\n if (transformedEntity)\n return [2 /*return*/, this.merge(entityClass, transformedEntity, entityLike)];\n return [2 /*return*/, undefined];\n }\n });\n });\n };\n /**\n * Saves a given entity in the database.\n */\n EntityManager.prototype.save = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof EntitySchema || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n if (target instanceof EntitySchema)\n target = target.options.name;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute save operation\n return new EntityPersistExecutor(this.connection, this.queryRunner, \"save\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Removes a given entity from the database.\n */\n EntityManager.prototype.remove = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute save operation\n return new EntityPersistExecutor(this.connection, this.queryRunner, \"remove\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Records the delete date of one or many given entities.\n */\n EntityManager.prototype.softRemove = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof EntitySchema || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n if (target instanceof EntitySchema)\n target = target.options.name;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute soft-remove operation\n return new EntityPersistExecutor(this.connection, this.queryRunner, \"soft-remove\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Recovers one or many given entities.\n */\n EntityManager.prototype.recover = function (targetOrEntity, maybeEntityOrOptions, maybeOptions) {\n // normalize mixed parameters\n var target = (arguments.length > 1 && (targetOrEntity instanceof Function || targetOrEntity instanceof EntitySchema || typeof targetOrEntity === \"string\")) ? targetOrEntity : undefined;\n var entity = target ? maybeEntityOrOptions : targetOrEntity;\n var options = target ? maybeOptions : maybeEntityOrOptions;\n if (target instanceof EntitySchema)\n target = target.options.name;\n // if user passed empty array of entities then we don't need to do anything\n if (Array.isArray(entity) && entity.length === 0)\n return Promise.resolve(entity);\n // execute recover operation\n return new EntityPersistExecutor(this.connection, this.queryRunner, \"recover\", target, entity, options)\n .execute()\n .then(function () { return entity; });\n };\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n * You can execute bulk inserts using this method.\n */\n EntityManager.prototype.insert = function (target, entity) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.createQueryBuilder()\n .insert()\n .into(target)\n .values(entity)\n .execute()];\n });\n });\n };\n /**\n * Updates entity partially. Entity can be found by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.update = function (target, criteria, partialEntity) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the update method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .update(target)\n .set(partialEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .update(target)\n .set(partialEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Deletes entities by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.delete = function (targetOrEntity, criteria) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the delete method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .delete()\n .from(targetOrEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .delete()\n .from(targetOrEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Records the delete date of entities by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.softDelete = function (targetOrEntity, criteria) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the delete method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .softDelete()\n .from(targetOrEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .softDelete()\n .from(targetOrEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Restores entities by a given condition(s).\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n * Condition(s) cannot be empty.\n */\n EntityManager.prototype.restore = function (targetOrEntity, criteria) {\n // if user passed empty criteria or empty list of criterias, then throw an error\n if (criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0)) {\n return Promise.reject(new Error(\"Empty criteria(s) are not allowed for the delete method.\"));\n }\n if (typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date ||\n Array.isArray(criteria)) {\n return this.createQueryBuilder()\n .restore()\n .from(targetOrEntity)\n .whereInIds(criteria)\n .execute();\n }\n else {\n return this.createQueryBuilder()\n .restore()\n .from(targetOrEntity)\n .where(criteria)\n .execute();\n }\n };\n /**\n * Counts entities that match given find options or conditions.\n * Useful for pagination.\n */\n EntityManager.prototype.count = function (entityClass, optionsOrConditions) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, qb;\n return __generator(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n return [2 /*return*/, FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getCount()];\n });\n });\n };\n /**\n * Finds entities that match given find options or conditions.\n */\n EntityManager.prototype.find = function (entityClass, optionsOrConditions) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, qb;\n return __generator(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n if (!FindOptionsUtils.isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false)\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, metadata);\n return [2 /*return*/, FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getMany()];\n });\n });\n };\n /**\n * Finds entities that match given find options and conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n EntityManager.prototype.findAndCount = function (entityClass, optionsOrConditions) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, qb;\n return __generator(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n if (!FindOptionsUtils.isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false)\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, metadata);\n return [2 /*return*/, FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions).getManyAndCount()];\n });\n });\n };\n /**\n * Finds entities with ids.\n * Optionally find options or conditions can be applied.\n */\n EntityManager.prototype.findByIds = function (entityClass, ids, optionsOrConditions) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, qb;\n return __generator(this, function (_a) {\n // if no ids passed, no need to execute a query - just return an empty array of values\n if (!ids.length)\n return [2 /*return*/, Promise.resolve([])];\n metadata = this.connection.getMetadata(entityClass);\n qb = this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(optionsOrConditions) || metadata.name);\n FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, optionsOrConditions);\n if (!FindOptionsUtils.isFindManyOptions(optionsOrConditions) || optionsOrConditions.loadEagerRelations !== false)\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, metadata);\n return [2 /*return*/, qb.andWhereInIds(ids).getMany()];\n });\n });\n };\n /**\n * Finds first entity that matches given conditions.\n */\n EntityManager.prototype.findOne = function (entityClass, idOrOptionsOrConditions, maybeOptions) {\n return __awaiter(this, void 0, void 0, function () {\n var findOptions, options, metadata, alias, qb, passedId;\n return __generator(this, function (_a) {\n findOptions = undefined;\n if (FindOptionsUtils.isFindOneOptions(idOrOptionsOrConditions)) {\n findOptions = idOrOptionsOrConditions;\n }\n else if (maybeOptions && FindOptionsUtils.isFindOneOptions(maybeOptions)) {\n findOptions = maybeOptions;\n }\n options = undefined;\n if (idOrOptionsOrConditions instanceof Object && !FindOptionsUtils.isFindOneOptions(idOrOptionsOrConditions))\n options = idOrOptionsOrConditions;\n metadata = this.connection.getMetadata(entityClass);\n alias = metadata.name;\n if (findOptions && findOptions.join) {\n alias = findOptions.join.alias;\n }\n else if (maybeOptions && FindOptionsUtils.isFindOneOptions(maybeOptions) && maybeOptions.join) {\n alias = maybeOptions.join.alias;\n }\n qb = this.createQueryBuilder(entityClass, alias);\n if (!findOptions || findOptions.loadEagerRelations !== false)\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);\n passedId = typeof idOrOptionsOrConditions === \"string\" || typeof idOrOptionsOrConditions === \"number\" || idOrOptionsOrConditions instanceof Date;\n if (!passedId) {\n findOptions = __assign(__assign({}, (findOptions || {})), { take: 1 });\n }\n FindOptionsUtils.applyOptionsToQueryBuilder(qb, findOptions);\n if (options) {\n qb.where(options);\n }\n else if (passedId) {\n qb.andWhereInIds(metadata.ensureEntityIdMap(idOrOptionsOrConditions));\n }\n return [2 /*return*/, qb.getOne()];\n });\n });\n };\n /**\n * Finds first entity that matches given conditions or rejects the returned promise on error.\n */\n EntityManager.prototype.findOneOrFail = function (entityClass, idOrOptionsOrConditions, maybeOptions) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.findOne(entityClass, idOrOptionsOrConditions, maybeOptions).then(function (value) {\n if (value === undefined) {\n return Promise.reject(new EntityNotFoundError(entityClass, idOrOptionsOrConditions));\n }\n return Promise.resolve(value);\n })];\n });\n });\n };\n /**\n * Clears all the data from the given table (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n EntityManager.prototype.clear = function (entityClass) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, queryRunner;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.connection.getMetadata(entityClass);\n queryRunner = this.queryRunner || this.connection.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 6]);\n return [4 /*yield*/, queryRunner.clearTable(metadata.tablePath)];\n case 2: return [2 /*return*/, _a.sent()]; // await is needed here because we are using finally\n case 3:\n if (!!this.queryRunner) return [3 /*break*/, 5];\n return [4 /*yield*/, queryRunner.release()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n EntityManager.prototype.increment = function (entityClass, conditions, propertyPath, value) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, column, values;\n var _this = this;\n return __generator(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n column = metadata.findColumnWithPropertyPath(propertyPath);\n if (!column)\n throw new Error(\"Column \" + propertyPath + \" was not found in \" + metadata.targetName + \" entity.\");\n if (isNaN(Number(value)))\n throw new Error(\"Value \\\"\" + value + \"\\\" is not a number.\");\n values = propertyPath\n .split(\".\")\n .reduceRight(function (value, key) {\n var _a;\n return (_a = {}, _a[key] = value, _a);\n }, function () { return _this.connection.driver.escape(column.databaseName) + \" + \" + value; });\n return [2 /*return*/, this\n .createQueryBuilder(entityClass, \"entity\")\n .update(entityClass)\n .set(values)\n .where(conditions)\n .execute()];\n });\n });\n };\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n EntityManager.prototype.decrement = function (entityClass, conditions, propertyPath, value) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, column, values;\n var _this = this;\n return __generator(this, function (_a) {\n metadata = this.connection.getMetadata(entityClass);\n column = metadata.findColumnWithPropertyPath(propertyPath);\n if (!column)\n throw new Error(\"Column \" + propertyPath + \" was not found in \" + metadata.targetName + \" entity.\");\n if (isNaN(Number(value)))\n throw new Error(\"Value \\\"\" + value + \"\\\" is not a number.\");\n values = propertyPath\n .split(\".\")\n .reduceRight(function (value, key) {\n var _a;\n return (_a = {}, _a[key] = value, _a);\n }, function () { return _this.connection.driver.escape(column.databaseName) + \" - \" + value; });\n return [2 /*return*/, this\n .createQueryBuilder(entityClass, \"entity\")\n .update(entityClass)\n .set(values)\n .where(conditions)\n .execute()];\n });\n });\n };\n /**\n * Gets repository for the given entity class or name.\n * If single database connection mode is used, then repository is obtained from the\n * repository aggregator, where each repository is individually created for this entity manager.\n * When single database connection is not used, repository is being obtained from the connection.\n */\n EntityManager.prototype.getRepository = function (target) {\n // throw exception if there is no repository with this target registered\n if (!this.connection.hasMetadata(target))\n throw new RepositoryNotFoundError(this.connection.name, target);\n // find already created repository instance and return it if found\n var metadata = this.connection.getMetadata(target);\n var repository = this.repositories.find(function (repository) { return repository.metadata === metadata; });\n if (repository)\n return repository;\n // if repository was not found then create it, store its instance and return it\n var newRepository = new RepositoryFactory().create(this, metadata, this.queryRunner);\n this.repositories.push(newRepository);\n return newRepository;\n };\n /**\n * Gets tree repository for the given entity class or name.\n * If single database connection mode is used, then repository is obtained from the\n * repository aggregator, where each repository is individually created for this entity manager.\n * When single database connection is not used, repository is being obtained from the connection.\n */\n EntityManager.prototype.getTreeRepository = function (target) {\n // tree tables aren't supported by some drivers (mongodb)\n if (this.connection.driver.treeSupport === false)\n throw new TreeRepositoryNotSupportedError(this.connection.driver);\n // check if repository is real tree repository\n var repository = this.getRepository(target);\n if (!(repository instanceof TreeRepository))\n throw new RepositoryNotTreeError(target);\n return repository;\n };\n /**\n * Gets mongodb repository for the given entity class.\n */\n EntityManager.prototype.getMongoRepository = function (target) {\n return this.connection.getMongoRepository(target);\n };\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n */\n EntityManager.prototype.getCustomRepository = function (customRepository) {\n var entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find(function (repository) {\n return repository.target === (customRepository instanceof Function ? customRepository : customRepository.constructor);\n });\n if (!entityRepositoryMetadataArgs)\n throw new CustomRepositoryNotFoundError(customRepository);\n var entityMetadata = entityRepositoryMetadataArgs.entity ? this.connection.getMetadata(entityRepositoryMetadataArgs.entity) : undefined;\n var entityRepositoryInstance = new entityRepositoryMetadataArgs.target(this, entityMetadata);\n // NOTE: dynamic access to protected properties. We need this to prevent unwanted properties in those classes to be exposed,\n // however we need these properties for internal work of the class\n if (entityRepositoryInstance instanceof AbstractRepository) {\n if (!entityRepositoryInstance[\"manager\"])\n entityRepositoryInstance[\"manager\"] = this;\n }\n if (entityRepositoryInstance instanceof Repository) {\n if (!entityMetadata)\n throw new CustomRepositoryCannotInheritRepositoryError(customRepository);\n entityRepositoryInstance[\"manager\"] = this;\n entityRepositoryInstance[\"metadata\"] = entityMetadata;\n }\n return entityRepositoryInstance;\n };\n /**\n * Releases all resources used by entity manager.\n * This is used when entity manager is created with a single query runner,\n * and this single query runner needs to be released after job with entity manager is done.\n */\n EntityManager.prototype.release = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this.queryRunner)\n throw new NoNeedToReleaseEntityManagerError();\n return [2 /*return*/, this.queryRunner.release()];\n });\n });\n };\n return EntityManager;\n}());\nexport { EntityManager };\n\n//# sourceMappingURL=EntityManager.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { EntityManager } from \"./EntityManager\";\n/**\n * A special EntityManager that includes import/export and load/save function\n * that are unique to Sql.js.\n */\nvar SqljsEntityManager = /** @class */ (function (_super) {\n __extends(SqljsEntityManager, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SqljsEntityManager(connection, queryRunner) {\n var _this = _super.call(this, connection, queryRunner) || this;\n _this.driver = connection.driver;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Loads either the definition from a file (Node.js) or localstorage (browser)\n * or uses the given definition to open a new database.\n */\n SqljsEntityManager.prototype.loadDatabase = function (fileNameOrLocalStorageOrData) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.driver.load(fileNameOrLocalStorageOrData)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Saves the current database to a file (Node.js) or localstorage (browser)\n * if fileNameOrLocalStorage is not set options.location is used.\n */\n SqljsEntityManager.prototype.saveDatabase = function (fileNameOrLocalStorage) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.driver.save(fileNameOrLocalStorage)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns the current database definition.\n */\n SqljsEntityManager.prototype.exportDatabase = function () {\n return this.driver.export();\n };\n return SqljsEntityManager;\n}(EntityManager));\nexport { SqljsEntityManager };\n\n//# sourceMappingURL=SqljsEntityManager.js.map\n","import { EntityManager } from \"./EntityManager\";\nimport { MongoEntityManager } from \"./MongoEntityManager\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { SqljsEntityManager } from \"./SqljsEntityManager\";\nimport { SqljsDriver } from \"../driver/sqljs/SqljsDriver\";\n/**\n * Helps to create entity managers.\n */\nvar EntityManagerFactory = /** @class */ (function () {\n function EntityManagerFactory() {\n }\n /**\n * Creates a new entity manager depend on a given connection's driver.\n */\n EntityManagerFactory.prototype.create = function (connection, queryRunner) {\n if (connection.driver instanceof MongoDriver)\n return new MongoEntityManager(connection);\n if (connection.driver instanceof SqljsDriver)\n return new SqljsEntityManager(connection, queryRunner);\n return new EntityManager(connection, queryRunner);\n };\n return EntityManagerFactory;\n}());\nexport { EntityManagerFactory };\n\n//# sourceMappingURL=EntityManagerFactory.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer specifies driver type that does not exist or supported.\n */\nvar MissingDriverError = /** @class */ (function (_super) {\n __extends(MissingDriverError, _super);\n function MissingDriverError(driverType) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingDriverError\";\n Object.setPrototypeOf(_this, MissingDriverError.prototype);\n _this.message = \"Wrong driver: \\\"\" + driverType + \"\\\" given. Supported drivers are: \\\"cordova\\\", \\\"expo\\\", \\\"mariadb\\\", \\\"mongodb\\\", \\\"mssql\\\", \\\"mysql\\\", \\\"oracle\\\", \\\"postgres\\\", \\\"sqlite\\\", \\\"better-sqlite3\\\", \\\"sqljs\\\", \\\"react-native\\\", \\\"aurora-data-api\\\", \\\"aurora-data-api-pg\\\".\";\n return _this;\n }\n return MissingDriverError;\n}(Error));\nexport { MissingDriverError };\n\n//# sourceMappingURL=MissingDriverError.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport { QueryFailedError } from \"../../error/QueryFailedError\";\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport { Broadcaster } from \"../../subscriber/Broadcaster\";\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar CordovaQueryRunner = /** @class */ (function (_super) {\n __extends(CordovaQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function CordovaQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new Broadcaster(_this);\n return _this;\n }\n /**\n * Executes a given SQL query.\n */\n CordovaQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n return new Promise(function (ok, fail) { return __awaiter(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n databaseConnection.executeSql(query, parameters, function (result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);\n if (query.substr(0, 11) === \"INSERT INTO\") {\n ok(result.insertId);\n }\n else {\n var resultSet = [];\n for (var i = 0; i < result.rows.length; i++) {\n resultSet.push(result.rows.item(i));\n }\n ok(resultSet);\n }\n }, function (err) {\n _this.driver.connection.logger.logQueryError(err, query, parameters, _this);\n fail(new QueryFailedError(query, parameters, err));\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Insert a new row with given values into the given table.\n * Returns value of the generated column if given and generate column exist in the table.\n // todo: implement new syntax\n async insert(tableName: string, keyValues: ObjectLiteral): Promise {\n const keys = Object.keys(keyValues);\n const columns = keys.map(key => `\"${key}\"`).join(\", \");\n const values = keys.map(key => \"?\").join(\",\");\n const generatedColumns = this.connection.hasMetadata(tableName) ? this.connection.getMetadata(tableName).generatedColumns : [];\n const sql = columns.length > 0 ? (`INSERT INTO \"${tableName}\"(${columns}) VALUES (${values})`) : `INSERT INTO \"${tableName}\" DEFAULT VALUES`;\n const parameters = keys.map(key => keyValues[key]);\n\n return new Promise(async (ok, fail) => {\n this.driver.connection.logger.logQuery(sql, parameters, this);\n const __this = this;\n const databaseConnection = await this.connect();\n databaseConnection.executeSql(sql, parameters, (resultSet: any) => {\n const generatedMap = generatedColumns.reduce((map, generatedColumn) => {\n const value = generatedColumn.isPrimary && generatedColumn.generationStrategy === \"increment\" && resultSet.insertId ? resultSet.insertId : keyValues[generatedColumn.databaseName];\n if (!value) return map;\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n ok({\n result: undefined,\n generatedMap: Object.keys(generatedMap).length > 0 ? generatedMap : undefined\n });\n }, (err: any) => {\n __this.driver.connection.logger.logQueryError(err, sql, parameters, this);\n fail(err);\n });\n });\n }*/\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n CordovaQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n return Object.keys(objectLiteral).map(function (key, index) { return \"\\\"\" + key + \"\\\"\" + \"=?\"; });\n };\n return CordovaQueryRunner;\n}(AbstractSqliteQueryRunner));\nexport { CordovaQueryRunner };\n\n//# sourceMappingURL=CordovaQueryRunner.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport { CordovaQueryRunner } from \"./CordovaQueryRunner\";\nimport { DriverOptionNotSetError } from \"../../error/DriverOptionNotSetError\";\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\";\nvar CordovaDriver = /** @class */ (function (_super) {\n __extends(CordovaDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function CordovaDriver(connection) {\n var _this = _super.call(this, connection) || this;\n // this.connection = connection;\n // this.options = connection.options as CordovaConnectionOptions;\n _this.database = _this.options.database;\n // validate options to make sure everything is set\n if (!_this.options.database)\n throw new DriverOptionNotSetError(\"database\");\n if (!_this.options.location)\n throw new DriverOptionNotSetError(\"location\");\n // load sqlite package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n CordovaDriver.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close(ok, fail);\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n CordovaDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new CordovaQueryRunner(this);\n return this.queryRunner;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n CordovaDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n var options = Object.assign({}, {\n name: _this.options.database,\n location: _this.options.location,\n }, _this.options.extra || {});\n _this.sqlite.openDatabase(options, function (db) {\n var databaseConnection = db;\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n databaseConnection.executeSql(\"PRAGMA foreign_keys = ON;\", [], function (result) {\n ok(databaseConnection);\n }, function (error) {\n fail(error);\n });\n }, function (error) {\n fail(error);\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n CordovaDriver.prototype.loadDependencies = function () {\n try {\n this.sqlite = window.sqlitePlugin;\n }\n catch (e) {\n throw new DriverPackageNotInstalledError(\"Cordova-SQLite\", \"cordova-sqlite-storage\");\n }\n };\n return CordovaDriver;\n}(AbstractSqliteDriver));\nexport { CordovaDriver };\n\n//# sourceMappingURL=CordovaDriver.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport { QueryFailedError } from \"../../error/QueryFailedError\";\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport { Broadcaster } from \"../../subscriber/Broadcaster\";\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar ReactNativeQueryRunner = /** @class */ (function (_super) {\n __extends(ReactNativeQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ReactNativeQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new Broadcaster(_this);\n return _this;\n }\n /**\n * Executes a given SQL query.\n */\n ReactNativeQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n return new Promise(function (ok, fail) { return __awaiter(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n databaseConnection.executeSql(query, parameters, function (result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);\n // return id of inserted row, if query was insert statement.\n if (query.substr(0, 11) === \"INSERT INTO\") {\n ok(result.insertId);\n }\n else {\n var resultSet = [];\n for (var i = 0; i < result.rows.length; i++) {\n resultSet.push(result.rows.item(i));\n }\n ok(resultSet);\n }\n }, function (err) {\n _this.driver.connection.logger.logQueryError(err, query, parameters, _this);\n fail(new QueryFailedError(query, parameters, err));\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n ReactNativeQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n return Object.keys(objectLiteral).map(function (key, index) { return \"\\\"\" + key + \"\\\"\" + \"=?\"; });\n };\n return ReactNativeQueryRunner;\n}(AbstractSqliteQueryRunner));\nexport { ReactNativeQueryRunner };\n\n//# sourceMappingURL=ReactNativeQueryRunner.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport { ReactNativeQueryRunner } from \"./ReactNativeQueryRunner\";\nimport { DriverOptionNotSetError } from \"../../error/DriverOptionNotSetError\";\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\";\nvar ReactNativeDriver = /** @class */ (function (_super) {\n __extends(ReactNativeDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ReactNativeDriver(connection) {\n var _this = _super.call(this, connection) || this;\n _this.database = _this.options.database;\n // validate options to make sure everything is set\n if (!_this.options.database)\n throw new DriverOptionNotSetError(\"database\");\n if (!_this.options.location)\n throw new DriverOptionNotSetError(\"location\");\n // load sqlite package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n ReactNativeDriver.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close(ok, fail);\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n ReactNativeDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new ReactNativeQueryRunner(this);\n return this.queryRunner;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n ReactNativeDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n var options = Object.assign({}, {\n name: _this.options.database,\n location: _this.options.location,\n }, _this.options.extra || {});\n _this.sqlite.openDatabase(options, function (db) {\n var databaseConnection = db;\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n databaseConnection.executeSql(\"PRAGMA foreign_keys = ON;\", [], function (result) {\n ok(databaseConnection);\n }, function (error) {\n fail(error);\n });\n }, function (error) {\n fail(error);\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n ReactNativeDriver.prototype.loadDependencies = function () {\n try {\n this.sqlite = require(\"react-native-sqlite-storage\");\n }\n catch (e) {\n throw new DriverPackageNotInstalledError(\"React-Native\", \"react-native-sqlite-storage\");\n }\n };\n return ReactNativeDriver;\n}(AbstractSqliteDriver));\nexport { ReactNativeDriver };\n\n//# sourceMappingURL=ReactNativeDriver.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport { QueryFailedError } from \"../../error/QueryFailedError\";\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport { TransactionAlreadyStartedError } from \"../../error/TransactionAlreadyStartedError\";\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\";\nimport { Broadcaster } from \"../../subscriber/Broadcaster\";\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\";\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar ExpoQueryRunner = /** @class */ (function (_super) {\n __extends(ExpoQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ExpoQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new Broadcaster(_this);\n return _this;\n }\n /**\n * Starts transaction. Within Expo, all database operations happen in a\n * transaction context, so issuing a `BEGIN TRANSACTION` command is\n * redundant and will result in the following error:\n *\n * `Error: Error code 1: cannot start a transaction within a transaction`\n *\n * Instead, we keep track of a `Transaction` object in `this.transaction`\n * and continue using the same object until we wish to commit the\n * transaction.\n */\n ExpoQueryRunner.prototype.startTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive && typeof this.transaction !== \"undefined\")\n throw new TransactionAlreadyStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = true;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n * Since Expo will automatically commit the transaction once all the\n * callbacks of the transaction object have been completed, \"committing\" a\n * transaction in this driver's context means that we delete the transaction\n * object and set the stage for the next transaction.\n */\n ExpoQueryRunner.prototype.commitTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive && typeof this.transaction === \"undefined\")\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = false;\n this.transaction = undefined;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n * This method's functionality is identical to `commitTransaction()` because\n * the transaction lifecycle is handled within the Expo transaction object.\n * Issuing separate statements for `COMMIT` or `ROLLBACK` aren't necessary.\n */\n ExpoQueryRunner.prototype.rollbackTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive && typeof this.transaction === \"undefined\")\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = false;\n this.transaction = undefined;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n ExpoQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n return new Promise(function (ok, fail) { return __awaiter(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n // All Expo SQL queries are executed in a transaction context\n databaseConnection.transaction(function (transaction) {\n if (typeof _this.transaction === \"undefined\") {\n _this.startTransaction();\n _this.transaction = transaction;\n }\n _this.transaction.executeSql(query, parameters, function (t, result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) {\n _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);\n }\n // return id of inserted row, if query was insert statement.\n if (query.substr(0, 11) === \"INSERT INTO\") {\n ok(result.insertId);\n }\n else {\n var resultSet = [];\n for (var i = 0; i < result.rows.length; i++) {\n resultSet.push(result.rows.item(i));\n }\n ok(resultSet);\n }\n }, function (t, err) {\n _this.driver.connection.logger.logQueryError(err, query, parameters, _this);\n fail(new QueryFailedError(query, parameters, err));\n });\n }, function (err) {\n _this.rollbackTransaction();\n }, function () {\n _this.isTransactionActive = false;\n _this.transaction = undefined;\n });\n return [2 /*return*/];\n }\n });\n }); });\n };\n return ExpoQueryRunner;\n}(AbstractSqliteQueryRunner));\nexport { ExpoQueryRunner };\n\n//# sourceMappingURL=ExpoQueryRunner.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport { ExpoQueryRunner } from \"./ExpoQueryRunner\";\nimport { DriverOptionNotSetError } from \"../../error/DriverOptionNotSetError\";\nvar ExpoDriver = /** @class */ (function (_super) {\n __extends(ExpoDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ExpoDriver(connection) {\n var _this = _super.call(this, connection) || this;\n _this.database = _this.options.database;\n // validate options to make sure everything is set\n if (!_this.options.database)\n throw new DriverOptionNotSetError(\"database\");\n if (!_this.options.driver)\n throw new DriverOptionNotSetError(\"driver\");\n // load sqlite package\n _this.sqlite = _this.options.driver;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n ExpoDriver.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n try {\n _this.queryRunner = undefined;\n _this.databaseConnection._db.close();\n _this.databaseConnection = undefined;\n ok();\n }\n catch (error) {\n fail(error);\n }\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n ExpoDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner)\n this.queryRunner = new ExpoQueryRunner(this);\n return this.queryRunner;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n ExpoDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n try {\n var databaseConnection_1 = _this.sqlite.openDatabase(_this.options.database);\n /*\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n */\n databaseConnection_1.transaction(function (tsx) {\n tsx.executeSql(\"PRAGMA foreign_keys = ON;\", [], function (t, result) {\n ok(databaseConnection_1);\n }, function (t, err) {\n fail({ transaction: t, error: err });\n });\n }, function (err) {\n fail(err);\n });\n }\n catch (error) {\n fail(error);\n }\n });\n };\n return ExpoDriver;\n}(AbstractSqliteDriver));\nexport { ExpoDriver };\n\n//# sourceMappingURL=ExpoDriver.js.map\n","import { __awaiter, __extends, __generator, __read, __values } from \"tslib\";\nimport { QueryFailedError } from \"../../error/QueryFailedError\";\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport { TransactionAlreadyStartedError } from \"../../error/TransactionAlreadyStartedError\";\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\";\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\";\nimport { Table } from \"../../schema-builder/table/Table\";\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\";\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\";\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\";\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\";\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\";\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\";\nimport { View } from \"../../schema-builder/view/View\";\nimport { Broadcaster } from \"../../subscriber/Broadcaster\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\nimport { Query } from \"../Query\";\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\";\n/**\n * Runs queries on a single postgres database connection.\n */\nvar PostgresQueryRunner = /** @class */ (function (_super) {\n __extends(PostgresQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function PostgresQueryRunner(driver, mode) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.mode = mode;\n _this.broadcaster = new Broadcaster(_this);\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n PostgresQueryRunner.prototype.connect = function () {\n var _this = this;\n if (this.databaseConnection)\n return Promise.resolve(this.databaseConnection);\n if (this.databaseConnectionPromise)\n return this.databaseConnectionPromise;\n if (this.mode === \"slave\" && this.driver.isReplicated) {\n this.databaseConnectionPromise = this.driver.obtainSlaveConnection().then(function (_a) {\n var _b = __read(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n var onErrorCallback = function () { return _this.release(); };\n _this.releaseCallback = function () {\n _this.databaseConnection.removeListener(\"error\", onErrorCallback);\n release();\n };\n _this.databaseConnection.on(\"error\", onErrorCallback);\n return _this.databaseConnection;\n });\n }\n else { // master\n this.databaseConnectionPromise = this.driver.obtainMasterConnection().then(function (_a) {\n var _b = __read(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n var onErrorCallback = function () { return _this.release(); };\n _this.releaseCallback = function () {\n _this.databaseConnection.removeListener(\"error\", onErrorCallback);\n release();\n };\n _this.databaseConnection.on(\"error\", onErrorCallback);\n return _this.databaseConnection;\n });\n }\n return this.databaseConnectionPromise;\n };\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n PostgresQueryRunner.prototype.release = function () {\n if (this.isReleased) {\n return Promise.resolve();\n }\n this.isReleased = true;\n if (this.releaseCallback)\n this.releaseCallback();\n var index = this.driver.connectedQueryRunners.indexOf(this);\n if (index !== -1)\n this.driver.connectedQueryRunners.splice(index);\n return Promise.resolve();\n };\n /**\n * Starts transaction.\n */\n PostgresQueryRunner.prototype.startTransaction = function (isolationLevel) {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive)\n throw new TransactionAlreadyStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = true;\n return [4 /*yield*/, this.query(\"START TRANSACTION\")];\n case 3:\n _a.sent();\n if (!isolationLevel) return [3 /*break*/, 5];\n return [4 /*yield*/, this.query(\"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5:\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 7];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n PostgresQueryRunner.prototype.commitTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"COMMIT\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n PostgresQueryRunner.prototype.rollbackTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"ROLLBACK\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n PostgresQueryRunner.prototype.query = function (query, parameters) {\n return __awaiter(this, void 0, void 0, function () {\n var databaseConnection, queryStartTime, result, maxQueryExecutionTime, queryEndTime, queryExecutionTime, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n queryStartTime = +new Date();\n return [4 /*yield*/, databaseConnection.query(query, parameters)];\n case 3:\n result = _a.sent();\n maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;\n queryEndTime = +new Date();\n queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n switch (result.command) {\n case \"DELETE\":\n case \"UPDATE\":\n // for UPDATE and DELETE query additionally return number of affected rows\n return [2 /*return*/, [result.rows, result.rowCount]];\n break;\n default:\n return [2 /*return*/, result.rows];\n }\n return [3 /*break*/, 5];\n case 4:\n err_1 = _a.sent();\n this.driver.connection.logger.logQueryError(err_1, query, parameters, this);\n throw new QueryFailedError(query, parameters, err_1);\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns raw data stream.\n */\n PostgresQueryRunner.prototype.stream = function (query, parameters, onEnd, onError) {\n var _this = this;\n var QueryStream = this.driver.loadStreamDependency();\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n return new Promise(function (ok, fail) { return __awaiter(_this, void 0, void 0, function () {\n var databaseConnection, stream, err_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.connect()];\n case 1:\n databaseConnection = _a.sent();\n this.driver.connection.logger.logQuery(query, parameters, this);\n stream = databaseConnection.query(new QueryStream(query, parameters));\n if (onEnd)\n stream.on(\"end\", onEnd);\n if (onError)\n stream.on(\"error\", onError);\n ok(stream);\n return [3 /*break*/, 3];\n case 2:\n err_2 = _a.sent();\n fail(err_2);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n }); });\n };\n /**\n * Returns all available database names including system databases.\n */\n PostgresQueryRunner.prototype.getDatabases = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n PostgresQueryRunner.prototype.getSchemas = function (database) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Checks if database with the given name exist.\n */\n PostgresQueryRunner.prototype.hasDatabase = function (database) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve(false)];\n });\n });\n };\n /**\n * Checks if schema with the given name exist.\n */\n PostgresQueryRunner.prototype.hasSchema = function (schema) {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM \\\"information_schema\\\".\\\"schemata\\\" WHERE \\\"schema_name\\\" = '\" + schema + \"'\")];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Checks if table with the given name exist in the database.\n */\n PostgresQueryRunner.prototype.hasTable = function (tableOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedTableName, sql, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n parsedTableName = this.parseTableName(tableOrName);\n sql = \"SELECT * FROM \\\"information_schema\\\".\\\"tables\\\" WHERE \\\"table_schema\\\" = \" + parsedTableName.schema + \" AND \\\"table_name\\\" = \" + parsedTableName.tableName;\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Checks if column with the given name exist in the given table.\n */\n PostgresQueryRunner.prototype.hasColumn = function (tableOrName, columnName) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedTableName, sql, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n parsedTableName = this.parseTableName(tableOrName);\n sql = \"SELECT * FROM \\\"information_schema\\\".\\\"columns\\\" WHERE \\\"table_schema\\\" = \" + parsedTableName.schema + \" AND \\\"table_name\\\" = \" + parsedTableName.tableName + \" AND \\\"column_name\\\" = '\" + columnName + \"'\";\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Creates a new database.\n * Postgres does not supports database creation inside a transaction block.\n */\n PostgresQueryRunner.prototype.createDatabase = function (database, ifNotExist) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops database.\n * Postgres does not supports database drop inside a transaction block.\n */\n PostgresQueryRunner.prototype.dropDatabase = function (database, ifExist) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Creates a new table schema.\n */\n PostgresQueryRunner.prototype.createSchema = function (schema, ifNotExist) {\n return __awaiter(this, void 0, void 0, function () {\n var up, down;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n up = ifNotExist ? \"CREATE SCHEMA IF NOT EXISTS \\\"\" + schema + \"\\\"\" : \"CREATE SCHEMA \\\"\" + schema + \"\\\"\";\n down = \"DROP SCHEMA \\\"\" + schema + \"\\\" CASCADE\";\n return [4 /*yield*/, this.executeQueries(new Query(up), new Query(down))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops table schema.\n */\n PostgresQueryRunner.prototype.dropSchema = function (schemaPath, ifExist, isCascade) {\n return __awaiter(this, void 0, void 0, function () {\n var schema, up, down;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n schema = schemaPath.indexOf(\".\") === -1 ? schemaPath : schemaPath.split(\".\")[0];\n up = ifExist ? \"DROP SCHEMA IF EXISTS \\\"\" + schema + \"\\\" \" + (isCascade ? \"CASCADE\" : \"\") : \"DROP SCHEMA \\\"\" + schema + \"\\\" \" + (isCascade ? \"CASCADE\" : \"\");\n down = \"CREATE SCHEMA \\\"\" + schema + \"\\\"\";\n return [4 /*yield*/, this.executeQueries(new Query(up), new Query(down))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new table.\n */\n PostgresQueryRunner.prototype.createTable = function (table, ifNotExist, createForeignKeys, createIndices) {\n if (ifNotExist === void 0) { ifNotExist = false; }\n if (createForeignKeys === void 0) { createForeignKeys = true; }\n if (createIndices === void 0) { createIndices = true; }\n return __awaiter(this, void 0, void 0, function () {\n var isTableExist, upQueries, downQueries, enumColumns, createdEnumTypes, enumColumns_1, enumColumns_1_1, column, hasEnum, enumName, e_1_1;\n var e_1, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!ifNotExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(table)];\n case 1:\n isTableExist = _b.sent();\n if (isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _b.label = 2;\n case 2:\n upQueries = [];\n downQueries = [];\n enumColumns = table.columns.filter(function (column) { return column.type === \"enum\" || column.type === \"simple-enum\"; });\n createdEnumTypes = [];\n _b.label = 3;\n case 3:\n _b.trys.push([3, 8, 9, 10]);\n enumColumns_1 = __values(enumColumns), enumColumns_1_1 = enumColumns_1.next();\n _b.label = 4;\n case 4:\n if (!!enumColumns_1_1.done) return [3 /*break*/, 7];\n column = enumColumns_1_1.value;\n return [4 /*yield*/, this.hasEnumType(table, column)];\n case 5:\n hasEnum = _b.sent();\n enumName = this.buildEnumName(table, column);\n // if enum with the same \"enumName\" is defined more then once, me must prevent double creation\n if (!hasEnum && createdEnumTypes.indexOf(enumName) === -1) {\n createdEnumTypes.push(enumName);\n upQueries.push(this.createEnumTypeSql(table, column, enumName));\n downQueries.push(this.dropEnumTypeSql(table, column, enumName));\n }\n _b.label = 6;\n case 6:\n enumColumns_1_1 = enumColumns_1.next();\n return [3 /*break*/, 4];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (enumColumns_1_1 && !enumColumns_1_1.done && (_a = enumColumns_1.return)) _a.call(enumColumns_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10:\n upQueries.push(this.createTableSql(table, createForeignKeys));\n downQueries.push(this.dropTableSql(table));\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach(function (foreignKey) { return downQueries.push(_this.dropForeignKeySql(table, foreignKey)); });\n if (createIndices) {\n table.indices.forEach(function (index) {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = _this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n upQueries.push(_this.createIndexSql(table, index));\n downQueries.push(_this.dropIndexSql(table, index));\n });\n }\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 11:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the table.\n */\n PostgresQueryRunner.prototype.dropTable = function (target, ifExist, dropForeignKeys, dropIndices) {\n if (dropForeignKeys === void 0) { dropForeignKeys = true; }\n if (dropIndices === void 0) { dropIndices = true; }\n return __awaiter(this, void 0, void 0, function () {\n var isTableExist, createForeignKeys, tableName, table, upQueries, downQueries;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!ifExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(target)];\n case 1:\n isTableExist = _a.sent();\n if (!isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _a.label = 2;\n case 2:\n createForeignKeys = dropForeignKeys;\n tableName = target instanceof Table ? target.name : target;\n return [4 /*yield*/, this.getCachedTable(tableName)];\n case 3:\n table = _a.sent();\n upQueries = [];\n downQueries = [];\n if (dropIndices) {\n table.indices.forEach(function (index) {\n upQueries.push(_this.dropIndexSql(table, index));\n downQueries.push(_this.createIndexSql(table, index));\n });\n }\n if (dropForeignKeys)\n table.foreignKeys.forEach(function (foreignKey) { return upQueries.push(_this.dropForeignKeySql(table, foreignKey)); });\n upQueries.push(this.dropTableSql(table));\n downQueries.push(this.createTableSql(table, createForeignKeys));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new view.\n */\n PostgresQueryRunner.prototype.createView = function (view) {\n return __awaiter(this, void 0, void 0, function () {\n var upQueries, downQueries, _a, _b, _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n upQueries.push(this.createViewSql(view));\n _b = (_a = upQueries).push;\n return [4 /*yield*/, this.insertViewDefinitionSql(view)];\n case 1:\n _b.apply(_a, [_e.sent()]);\n downQueries.push(this.dropViewSql(view));\n _d = (_c = downQueries).push;\n return [4 /*yield*/, this.deleteViewDefinitionSql(view)];\n case 2:\n _d.apply(_c, [_e.sent()]);\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 3:\n _e.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the view.\n */\n PostgresQueryRunner.prototype.dropView = function (target) {\n return __awaiter(this, void 0, void 0, function () {\n var viewName, view, upQueries, downQueries, _a, _b, _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n viewName = target instanceof View ? target.name : target;\n return [4 /*yield*/, this.getCachedView(viewName)];\n case 1:\n view = _e.sent();\n upQueries = [];\n downQueries = [];\n _b = (_a = upQueries).push;\n return [4 /*yield*/, this.deleteViewDefinitionSql(view)];\n case 2:\n _b.apply(_a, [_e.sent()]);\n upQueries.push(this.dropViewSql(view));\n _d = (_c = downQueries).push;\n return [4 /*yield*/, this.insertViewDefinitionSql(view)];\n case 3:\n _d.apply(_c, [_e.sent()]);\n downQueries.push(this.createViewSql(view));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 4:\n _e.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames the given table.\n */\n PostgresQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) {\n return __awaiter(this, void 0, void 0, function () {\n var upQueries, downQueries, oldTable, _a, newTable, oldTableName, schemaName, columnNames, oldPkName, newPkName, enumColumns, enumColumns_2, enumColumns_2_1, column, oldEnumType, e_2_1;\n var e_2, _b;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n if (!(oldTableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = oldTableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(oldTableOrName)];\n case 2:\n _a = _c.sent();\n _c.label = 3;\n case 3:\n oldTable = _a;\n newTable = oldTable.clone();\n oldTableName = oldTable.name.indexOf(\".\") === -1 ? oldTable.name : oldTable.name.split(\".\")[1];\n schemaName = oldTable.name.indexOf(\".\") === -1 ? undefined : oldTable.name.split(\".\")[0];\n newTable.name = schemaName ? schemaName + \".\" + newTableName : newTableName;\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(oldTable) + \" RENAME TO \\\"\" + newTableName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(newTable) + \" RENAME TO \\\"\" + oldTableName + \"\\\"\"));\n // rename column primary key constraint\n if (newTable.primaryColumns.length > 0) {\n columnNames = newTable.primaryColumns.map(function (column) { return column.name; });\n oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);\n newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + oldPkName + \"\\\" TO \\\"\" + newPkName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + newPkName + \"\\\" TO \\\"\" + oldPkName + \"\\\"\"));\n }\n // rename sequences\n newTable.columns.map(function (col) {\n if (col.isGenerated && col.generationStrategy === \"increment\") {\n var seqName = _this.buildSequenceName(oldTable, col.name, undefined, true, true);\n var newSeqName = _this.buildSequenceName(newTable, col.name, undefined, true, true);\n var up = schemaName ? \"ALTER SEQUENCE \\\"\" + schemaName + \"\\\".\\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\";\n var down = schemaName ? \"ALTER SEQUENCE \\\"\" + schemaName + \"\\\".\\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\";\n upQueries.push(new Query(up));\n downQueries.push(new Query(down));\n }\n });\n // rename unique constraints\n newTable.uniques.forEach(function (unique) {\n // build new constraint name\n var newUniqueName = _this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);\n // build queries\n upQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + unique.name + \"\\\" TO \\\"\" + newUniqueName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + newUniqueName + \"\\\" TO \\\"\" + unique.name + \"\\\"\"));\n // replace constraint name\n unique.name = newUniqueName;\n });\n // rename index constraints\n newTable.indices.forEach(function (index) {\n // build new constraint name\n var schema = _this.extractSchema(newTable);\n var newIndexName = _this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n // build queries\n var up = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\" : \"ALTER INDEX \\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\";\n var down = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\" : \"ALTER INDEX \\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\";\n upQueries.push(new Query(up));\n downQueries.push(new Query(down));\n // replace constraint name\n index.name = newIndexName;\n });\n // rename foreign key constraints\n newTable.foreignKeys.forEach(function (foreignKey) {\n // build new constraint name\n var newForeignKeyName = _this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n // build queries\n upQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + foreignKey.name + \"\\\" TO \\\"\" + newForeignKeyName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(newTable) + \" RENAME CONSTRAINT \\\"\" + newForeignKeyName + \"\\\" TO \\\"\" + foreignKey.name + \"\\\"\"));\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n });\n enumColumns = newTable.columns.filter(function (column) { return column.type === \"enum\" || column.type === \"simple-enum\"; });\n _c.label = 4;\n case 4:\n _c.trys.push([4, 9, 10, 11]);\n enumColumns_2 = __values(enumColumns), enumColumns_2_1 = enumColumns_2.next();\n _c.label = 5;\n case 5:\n if (!!enumColumns_2_1.done) return [3 /*break*/, 8];\n column = enumColumns_2_1.value;\n return [4 /*yield*/, this.getEnumTypeName(oldTable, column)];\n case 6:\n oldEnumType = _c.sent();\n upQueries.push(new Query(\"ALTER TYPE \\\"\" + oldEnumType.enumTypeSchema + \"\\\".\\\"\" + oldEnumType.enumTypeName + \"\\\" RENAME TO \" + this.buildEnumName(newTable, column, false)));\n downQueries.push(new Query(\"ALTER TYPE \" + this.buildEnumName(newTable, column) + \" RENAME TO \\\"\" + oldEnumType.enumTypeName + \"\\\"\"));\n _c.label = 7;\n case 7:\n enumColumns_2_1 = enumColumns_2.next();\n return [3 /*break*/, 5];\n case 8: return [3 /*break*/, 11];\n case 9:\n e_2_1 = _c.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 11];\n case 10:\n try {\n if (enumColumns_2_1 && !enumColumns_2_1.done && (_b = enumColumns_2.return)) _b.call(enumColumns_2);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 11: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 12:\n _c.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new column from the column in the table.\n */\n PostgresQueryRunner.prototype.addColumn = function (tableOrName, column) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, clonedTable, upQueries, downQueries, hasEnum, primaryColumns, pkName_1, columnNames_1, pkName, columnNames, columnIndex, uniqueConstraint;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n upQueries = [];\n downQueries = [];\n if (!(column.type === \"enum\" || column.type === \"simple-enum\")) return [3 /*break*/, 5];\n return [4 /*yield*/, this.hasEnumType(table, column)];\n case 4:\n hasEnum = _b.sent();\n if (!hasEnum) {\n upQueries.push(this.createEnumTypeSql(table, column));\n downQueries.push(this.dropEnumTypeSql(table, column));\n }\n _b.label = 5;\n case 5:\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD \" + this.buildCreateColumnSql(table, column)));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP COLUMN \\\"\" + column.name + \"\\\"\"));\n // create or update primary key constraint\n if (column.isPrimary) {\n primaryColumns = clonedTable.primaryColumns;\n // if table already have primary key, me must drop it and recreate again\n if (primaryColumns.length > 0) {\n pkName_1 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames_1 = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName_1 + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName_1 + \"\\\" PRIMARY KEY (\" + columnNames_1 + \")\"));\n }\n primaryColumns.push(column);\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n }\n columnIndex = clonedTable.indices.find(function (index) { return index.columnNames.length === 1 && index.columnNames[0] === column.name; });\n if (columnIndex) {\n upQueries.push(this.createIndexSql(table, columnIndex));\n downQueries.push(this.dropIndexSql(table, columnIndex));\n }\n // create unique constraint\n if (column.isUnique) {\n uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n });\n clonedTable.uniques.push(uniqueConstraint);\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\\\"\" + column.name + \"\\\")\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\"\"));\n }\n // create column's comment\n if (column.comment) {\n upQueries.push(new Query(\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + column.name + \"\\\" IS \" + this.escapeComment(column.comment)));\n downQueries.push(new Query(\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + column.name + \"\\\" IS \" + this.escapeComment(column.comment)));\n }\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 6:\n _b.sent();\n clonedTable.addColumn(column);\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new columns from the column in the table.\n */\n PostgresQueryRunner.prototype.addColumns = function (tableOrName, columns) {\n return __awaiter(this, void 0, void 0, function () {\n var columns_1, columns_1_1, column, e_3_1;\n var e_3, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n columns_1 = __values(columns), columns_1_1 = columns_1.next();\n _b.label = 1;\n case 1:\n if (!!columns_1_1.done) return [3 /*break*/, 4];\n column = columns_1_1.value;\n return [4 /*yield*/, this.addColumn(tableOrName, column)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n columns_1_1 = columns_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_3_1 = _b.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames column in the given table.\n */\n PostgresQueryRunner.prototype.renameColumn = function (tableOrName, oldTableColumnOrName, newTableColumnOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, oldColumn, newColumn;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n if (newTableColumnOrName instanceof TableColumn) {\n newColumn = newTableColumnOrName;\n }\n else {\n newColumn = oldColumn.clone();\n newColumn.name = newTableColumnOrName;\n }\n return [2 /*return*/, this.changeColumn(table, oldColumn, newColumn)];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n */\n PostgresQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, clonedTable, upQueries, downQueries, defaultValueChanged, oldColumn, oldEnumType, primaryColumns, columnNames, oldPkName, newPkName, schema, seqName, newSeqName, up, down, oldTableColumn, arraySuffix, newEnumName, oldEnumName, oldEnumNameWithoutSchema, oldEnumNameWithSchema_old, oldEnumNameWithoutSchema_old, upType, downType, primaryColumns, pkName, columnNames, column, pkName, columnNames, primaryColumn, column, pkName, columnNames, uniqueConstraint, uniqueConstraint;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n upQueries = [];\n downQueries = [];\n defaultValueChanged = false;\n oldColumn = oldTableColumnOrName instanceof TableColumn\n ? oldTableColumnOrName\n : table.columns.find(function (column) { return column.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n if (!(oldColumn.type !== newColumn.type || oldColumn.length !== newColumn.length || newColumn.isArray !== oldColumn.isArray)) return [3 /*break*/, 6];\n // To avoid data conversion, we just recreate column\n return [4 /*yield*/, this.dropColumn(table, oldColumn)];\n case 4:\n // To avoid data conversion, we just recreate column\n _b.sent();\n return [4 /*yield*/, this.addColumn(table, newColumn)];\n case 5:\n _b.sent();\n // update cloned table\n clonedTable = table.clone();\n return [3 /*break*/, 10];\n case 6:\n if (!(oldColumn.name !== newColumn.name)) return [3 /*break*/, 9];\n // rename column\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" RENAME COLUMN \\\"\" + oldColumn.name + \"\\\" TO \\\"\" + newColumn.name + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" RENAME COLUMN \\\"\" + newColumn.name + \"\\\" TO \\\"\" + oldColumn.name + \"\\\"\"));\n if (!(oldColumn.type === \"enum\" || oldColumn.type === \"simple-enum\")) return [3 /*break*/, 8];\n return [4 /*yield*/, this.getEnumTypeName(table, oldColumn)];\n case 7:\n oldEnumType = _b.sent();\n upQueries.push(new Query(\"ALTER TYPE \\\"\" + oldEnumType.enumTypeSchema + \"\\\".\\\"\" + oldEnumType.enumTypeName + \"\\\" RENAME TO \" + this.buildEnumName(table, newColumn, false)));\n downQueries.push(new Query(\"ALTER TYPE \" + this.buildEnumName(table, newColumn) + \" RENAME TO \\\"\" + oldEnumType.enumTypeName + \"\\\"\"));\n _b.label = 8;\n case 8:\n // rename column primary key constraint\n if (oldColumn.isPrimary === true) {\n primaryColumns = clonedTable.primaryColumns;\n columnNames = primaryColumns.map(function (column) { return column.name; });\n oldPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1);\n columnNames.push(newColumn.name);\n newPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + oldPkName + \"\\\" TO \\\"\" + newPkName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + newPkName + \"\\\" TO \\\"\" + oldPkName + \"\\\"\"));\n }\n // rename column sequence\n if (oldColumn.isGenerated === true && newColumn.generationStrategy === \"increment\") {\n schema = this.extractSchema(table);\n seqName = this.buildSequenceName(table, oldColumn.name, undefined, true, true);\n newSeqName = this.buildSequenceName(table, newColumn.name, undefined, true, true);\n up = schema ? \"ALTER SEQUENCE \\\"\" + schema + \"\\\".\\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + seqName + \"\\\" RENAME TO \\\"\" + newSeqName + \"\\\"\";\n down = schema ? \"ALTER SEQUENCE \\\"\" + schema + \"\\\".\\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\" : \"ALTER SEQUENCE \\\"\" + newSeqName + \"\\\" RENAME TO \\\"\" + seqName + \"\\\"\";\n upQueries.push(new Query(up));\n downQueries.push(new Query(down));\n }\n // rename unique constraints\n clonedTable.findColumnUniques(oldColumn).forEach(function (unique) {\n // build new constraint name\n unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);\n unique.columnNames.push(newColumn.name);\n var newUniqueName = _this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);\n // build queries\n upQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + unique.name + \"\\\" TO \\\"\" + newUniqueName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + newUniqueName + \"\\\" TO \\\"\" + unique.name + \"\\\"\"));\n // replace constraint name\n unique.name = newUniqueName;\n });\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach(function (index) {\n // build new constraint name\n index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);\n index.columnNames.push(newColumn.name);\n var schema = _this.extractSchema(table);\n var newIndexName = _this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);\n // build queries\n var up = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\" : \"ALTER INDEX \\\"\" + index.name + \"\\\" RENAME TO \\\"\" + newIndexName + \"\\\"\";\n var down = schema ? \"ALTER INDEX \\\"\" + schema + \"\\\".\\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\" : \"ALTER INDEX \\\"\" + newIndexName + \"\\\" RENAME TO \\\"\" + index.name + \"\\\"\";\n upQueries.push(new Query(up));\n downQueries.push(new Query(down));\n // replace constraint name\n index.name = newIndexName;\n });\n // rename foreign key constraints\n clonedTable.findColumnForeignKeys(oldColumn).forEach(function (foreignKey) {\n // build new constraint name\n foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);\n foreignKey.columnNames.push(newColumn.name);\n var newForeignKeyName = _this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n // build queries\n upQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + foreignKey.name + \"\\\" TO \\\"\" + newForeignKeyName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + _this.escapePath(table) + \" RENAME CONSTRAINT \\\"\" + newForeignKeyName + \"\\\" TO \\\"\" + foreignKey.name + \"\\\"\"));\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n });\n oldTableColumn = clonedTable.columns.find(function (column) { return column.name === oldColumn.name; });\n clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn)].name = newColumn.name;\n oldColumn.name = newColumn.name;\n _b.label = 9;\n case 9:\n if (newColumn.precision !== oldColumn.precision || newColumn.scale !== oldColumn.scale) {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(newColumn)));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(oldColumn)));\n }\n if ((newColumn.type === \"enum\" || newColumn.type === \"simple-enum\")\n && (oldColumn.type === \"enum\" || oldColumn.type === \"simple-enum\")\n && (!OrmUtils.isArraysEqual(newColumn.enum, oldColumn.enum) || newColumn.enumName !== oldColumn.enumName)) {\n arraySuffix = newColumn.isArray ? \"[]\" : \"\";\n newEnumName = this.buildEnumName(table, newColumn);\n oldEnumName = this.buildEnumName(table, oldColumn);\n oldEnumNameWithoutSchema = this.buildEnumName(table, oldColumn, false);\n oldEnumNameWithSchema_old = this.buildEnumName(table, oldColumn, true, false, true);\n oldEnumNameWithoutSchema_old = this.buildEnumName(table, oldColumn, false, false, true);\n // rename old ENUM\n upQueries.push(new Query(\"ALTER TYPE \" + oldEnumName + \" RENAME TO \" + oldEnumNameWithoutSchema_old));\n downQueries.push(new Query(\"ALTER TYPE \" + oldEnumNameWithSchema_old + \" RENAME TO \" + oldEnumNameWithoutSchema));\n // create new ENUM\n upQueries.push(this.createEnumTypeSql(table, newColumn, newEnumName));\n downQueries.push(this.dropEnumTypeSql(table, newColumn, newEnumName));\n // if column have default value, we must drop it to avoid issues with type casting\n if (oldColumn.default !== null && oldColumn.default !== undefined) {\n // mark default as changed to prevent double update\n defaultValueChanged = true;\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" DROP DEFAULT\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" SET DEFAULT \" + oldColumn.default));\n }\n upType = \"\" + newEnumName + arraySuffix + \" USING \\\"\" + newColumn.name + \"\\\"::\\\"text\\\"::\" + newEnumName + arraySuffix;\n downType = \"\" + oldEnumNameWithSchema_old + arraySuffix + \" USING \\\"\" + newColumn.name + \"\\\"::\\\"text\\\"::\" + oldEnumNameWithSchema_old + arraySuffix;\n // update column to use new type\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + upType));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + downType));\n // restore column default or create new one\n if (newColumn.default !== null && newColumn.default !== undefined) {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + newColumn.default));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n }\n // remove old ENUM\n upQueries.push(this.dropEnumTypeSql(table, oldColumn, oldEnumNameWithSchema_old));\n downQueries.push(this.createEnumTypeSql(table, oldColumn, oldEnumNameWithSchema_old));\n }\n if (oldColumn.isNullable !== newColumn.isNullable) {\n if (newColumn.isNullable) {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" DROP NOT NULL\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" SET NOT NULL\"));\n }\n else {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" SET NOT NULL\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + oldColumn.name + \"\\\" DROP NOT NULL\"));\n }\n }\n if (oldColumn.comment !== newColumn.comment) {\n upQueries.push(new Query(\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + oldColumn.name + \"\\\" IS \" + this.escapeComment(newColumn.comment)));\n downQueries.push(new Query(\"COMMENT ON COLUMN \" + this.escapePath(table) + \".\\\"\" + newColumn.name + \"\\\" IS \" + this.escapeComment(oldColumn.comment)));\n }\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n primaryColumns = clonedTable.primaryColumns;\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n }\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn);\n column = clonedTable.columns.find(function (column) { return column.name === newColumn.name; });\n column.isPrimary = true;\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n }\n else {\n primaryColumn = primaryColumns.find(function (c) { return c.name === newColumn.name; });\n primaryColumns.splice(primaryColumns.indexOf(primaryColumn), 1);\n column = clonedTable.columns.find(function (column) { return column.name === newColumn.name; });\n column.isPrimary = false;\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n }\n }\n }\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [newColumn.name]),\n columnNames: [newColumn.name]\n });\n clonedTable.uniques.push(uniqueConstraint);\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\\\"\" + newColumn.name + \"\\\")\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\"\"));\n }\n else {\n uniqueConstraint = clonedTable.uniques.find(function (unique) {\n return unique.columnNames.length === 1 && !!unique.columnNames.find(function (columnName) { return columnName === newColumn.name; });\n });\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(uniqueConstraint), 1);\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\\\"\" + newColumn.name + \"\\\")\"));\n }\n }\n if (oldColumn.isGenerated !== newColumn.isGenerated && newColumn.generationStrategy !== \"uuid\") {\n if (newColumn.isGenerated === true) {\n upQueries.push(new Query(\"CREATE SEQUENCE \" + this.buildSequenceName(table, newColumn) + \" OWNED BY \" + this.escapePath(table) + \".\\\"\" + newColumn.name + \"\\\"\"));\n downQueries.push(new Query(\"DROP SEQUENCE \" + this.buildSequenceName(table, newColumn)));\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT nextval('\" + this.buildSequenceName(table, newColumn, undefined, true) + \"')\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n }\n else {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT nextval('\" + this.buildSequenceName(table, newColumn, undefined, true) + \"')\"));\n upQueries.push(new Query(\"DROP SEQUENCE \" + this.buildSequenceName(table, newColumn)));\n downQueries.push(new Query(\"CREATE SEQUENCE \" + this.buildSequenceName(table, newColumn) + \" OWNED BY \" + this.escapePath(table) + \".\\\"\" + newColumn.name + \"\\\"\"));\n }\n }\n // the default might have changed when the enum changed\n if (newColumn.default !== oldColumn.default && !defaultValueChanged) {\n if (newColumn.default !== null && newColumn.default !== undefined) {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + newColumn.default));\n if (oldColumn.default !== null && oldColumn.default !== undefined) {\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + oldColumn.default));\n }\n else {\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n }\n }\n else if (oldColumn.default !== null && oldColumn.default !== undefined) {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" DROP DEFAULT\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" SET DEFAULT \" + oldColumn.default));\n }\n }\n if ((newColumn.spatialFeatureType || \"\").toLowerCase() !== (oldColumn.spatialFeatureType || \"\").toLowerCase() || newColumn.srid !== oldColumn.srid) {\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(newColumn)));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ALTER COLUMN \\\"\" + newColumn.name + \"\\\" TYPE \" + this.driver.createFullType(oldColumn)));\n }\n _b.label = 10;\n case 10: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 11:\n _b.sent();\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n */\n PostgresQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) {\n return __awaiter(this, void 0, void 0, function () {\n var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn, e_4_1;\n var e_4, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 5, 6, 7]);\n changedColumns_1 = __values(changedColumns), changedColumns_1_1 = changedColumns_1.next();\n _c.label = 1;\n case 1:\n if (!!changedColumns_1_1.done) return [3 /*break*/, 4];\n _a = changedColumns_1_1.value, oldColumn = _a.oldColumn, newColumn = _a.newColumn;\n return [4 /*yield*/, this.changeColumn(tableOrName, oldColumn, newColumn)];\n case 2:\n _c.sent();\n _c.label = 3;\n case 3:\n changedColumns_1_1 = changedColumns_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_4_1 = _c.sent();\n e_4 = { error: e_4_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (changedColumns_1_1 && !changedColumns_1_1.done && (_b = changedColumns_1.return)) _b.call(changedColumns_1);\n }\n finally { if (e_4) throw e_4.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops column in the table.\n */\n PostgresQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, column, clonedTable, upQueries, downQueries, pkName, columnNames, tableColumn, pkName_2, columnNames_2, columnIndex, columnCheck, columnUnique, hasEnum, enumType, escapedEnumName;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n column = columnOrName instanceof TableColumn ? columnOrName : table.findColumnByName(columnOrName);\n if (!column)\n throw new Error(\"Column \\\"\" + columnOrName + \"\\\" was not found in table \\\"\" + table.name + \"\\\"\");\n clonedTable = table.clone();\n upQueries = [];\n downQueries = [];\n // drop primary key constraint\n if (column.isPrimary) {\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(function (column) { return column.name; }));\n columnNames = clonedTable.primaryColumns.map(function (primaryColumn) { return \"\\\"\" + primaryColumn.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(clonedTable) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(clonedTable) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNames + \")\"));\n tableColumn = clonedTable.findColumnByName(column.name);\n tableColumn.isPrimary = false;\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n pkName_2 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(function (column) { return column.name; }));\n columnNames_2 = clonedTable.primaryColumns.map(function (primaryColumn) { return \"\\\"\" + primaryColumn.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(clonedTable) + \" ADD CONSTRAINT \\\"\" + pkName_2 + \"\\\" PRIMARY KEY (\" + columnNames_2 + \")\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(clonedTable) + \" DROP CONSTRAINT \\\"\" + pkName_2 + \"\\\"\"));\n }\n }\n columnIndex = clonedTable.indices.find(function (index) { return index.columnNames.length === 1 && index.columnNames[0] === column.name; });\n if (columnIndex) {\n clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1);\n upQueries.push(this.dropIndexSql(table, columnIndex));\n downQueries.push(this.createIndexSql(table, columnIndex));\n }\n columnCheck = clonedTable.checks.find(function (check) { return !!check.columnNames && check.columnNames.length === 1 && check.columnNames[0] === column.name; });\n if (columnCheck) {\n clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1);\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck));\n downQueries.push(this.createCheckConstraintSql(table, columnCheck));\n }\n columnUnique = clonedTable.uniques.find(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; });\n if (columnUnique) {\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(columnUnique), 1);\n upQueries.push(this.dropUniqueConstraintSql(table, columnUnique));\n downQueries.push(this.createUniqueConstraintSql(table, columnUnique));\n }\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP COLUMN \\\"\" + column.name + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD \" + this.buildCreateColumnSql(table, column)));\n if (!(column.type === \"enum\" || column.type === \"simple-enum\")) return [3 /*break*/, 6];\n return [4 /*yield*/, this.hasEnumType(table, column)];\n case 4:\n hasEnum = _b.sent();\n if (!hasEnum) return [3 /*break*/, 6];\n return [4 /*yield*/, this.getEnumTypeName(table, column)];\n case 5:\n enumType = _b.sent();\n escapedEnumName = \"\\\"\" + enumType.enumTypeSchema + \"\\\".\\\"\" + enumType.enumTypeName + \"\\\"\";\n upQueries.push(this.dropEnumTypeSql(table, column, escapedEnumName));\n downQueries.push(this.createEnumTypeSql(table, column, escapedEnumName));\n _b.label = 6;\n case 6: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 7:\n _b.sent();\n clonedTable.removeColumn(column);\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the columns in the table.\n */\n PostgresQueryRunner.prototype.dropColumns = function (tableOrName, columns) {\n return __awaiter(this, void 0, void 0, function () {\n var columns_2, columns_2_1, column, e_5_1;\n var e_5, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n columns_2 = __values(columns), columns_2_1 = columns_2.next();\n _b.label = 1;\n case 1:\n if (!!columns_2_1.done) return [3 /*break*/, 4];\n column = columns_2_1.value;\n return [4 /*yield*/, this.dropColumn(tableOrName, column)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n columns_2_1 = columns_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_5_1 = _b.sent();\n e_5 = { error: e_5_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);\n }\n finally { if (e_5) throw e_5.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new primary key.\n */\n PostgresQueryRunner.prototype.createPrimaryKey = function (tableOrName, columnNames) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, clonedTable, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n up = this.createPrimaryKeySql(table, columnNames);\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach(function (column) {\n if (columnNames.find(function (columnName) { return columnName === column.name; }))\n column.isPrimary = true;\n });\n down = this.dropPrimaryKeySql(clonedTable);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates composite primary keys.\n */\n PostgresQueryRunner.prototype.updatePrimaryKeys = function (tableOrName, columns) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, clonedTable, columnNames, upQueries, downQueries, primaryColumns, pkName_3, columnNamesString_1, pkName, columnNamesString;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n clonedTable = table.clone();\n columnNames = columns.map(function (column) { return column.name; });\n upQueries = [];\n downQueries = [];\n primaryColumns = clonedTable.primaryColumns;\n if (primaryColumns.length > 0) {\n pkName_3 = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(function (column) { return column.name; }));\n columnNamesString_1 = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName_3 + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName_3 + \"\\\" PRIMARY KEY (\" + columnNamesString_1 + \")\"));\n }\n // update columns in table.\n clonedTable.columns\n .filter(function (column) { return columnNames.indexOf(column.name) !== -1; })\n .forEach(function (column) { return column.isPrimary = true; });\n pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, columnNames);\n columnNamesString = columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n upQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + pkName + \"\\\" PRIMARY KEY (\" + columnNamesString + \")\"));\n downQueries.push(new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + pkName + \"\\\"\"));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 4:\n _b.sent();\n this.replaceCachedTable(table, clonedTable);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a primary key.\n */\n PostgresQueryRunner.prototype.dropPrimaryKey = function (tableOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n up = this.dropPrimaryKeySql(table);\n down = this.createPrimaryKeySql(table, table.primaryColumns.map(function (column) { return column.name; }));\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.primaryColumns.forEach(function (column) {\n column.isPrimary = false;\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new unique constraint.\n */\n PostgresQueryRunner.prototype.createUniqueConstraint = function (tableOrName, uniqueConstraint) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!uniqueConstraint.name)\n uniqueConstraint.name = this.connection.namingStrategy.uniqueConstraintName(table.name, uniqueConstraint.columnNames);\n up = this.createUniqueConstraintSql(table, uniqueConstraint);\n down = this.dropUniqueConstraintSql(table, uniqueConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addUniqueConstraint(uniqueConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new unique constraints.\n */\n PostgresQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var uniqueConstraints_1, uniqueConstraints_1_1, uniqueConstraint, e_6_1;\n var e_6, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n uniqueConstraints_1 = __values(uniqueConstraints), uniqueConstraints_1_1 = uniqueConstraints_1.next();\n _b.label = 1;\n case 1:\n if (!!uniqueConstraints_1_1.done) return [3 /*break*/, 4];\n uniqueConstraint = uniqueConstraints_1_1.value;\n return [4 /*yield*/, this.createUniqueConstraint(tableOrName, uniqueConstraint)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n uniqueConstraints_1_1 = uniqueConstraints_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_6_1 = _b.sent();\n e_6 = { error: e_6_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (uniqueConstraints_1_1 && !uniqueConstraints_1_1.done && (_a = uniqueConstraints_1.return)) _a.call(uniqueConstraints_1);\n }\n finally { if (e_6) throw e_6.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops unique constraint.\n */\n PostgresQueryRunner.prototype.dropUniqueConstraint = function (tableOrName, uniqueOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, uniqueConstraint, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n uniqueConstraint = uniqueOrName instanceof TableUnique ? uniqueOrName : table.uniques.find(function (u) { return u.name === uniqueOrName; });\n if (!uniqueConstraint)\n throw new Error(\"Supplied unique constraint was not found in table \" + table.name);\n up = this.dropUniqueConstraintSql(table, uniqueConstraint);\n down = this.createUniqueConstraintSql(table, uniqueConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeUniqueConstraint(uniqueConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops unique constraints.\n */\n PostgresQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var uniqueConstraints_2, uniqueConstraints_2_1, uniqueConstraint, e_7_1;\n var e_7, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n uniqueConstraints_2 = __values(uniqueConstraints), uniqueConstraints_2_1 = uniqueConstraints_2.next();\n _b.label = 1;\n case 1:\n if (!!uniqueConstraints_2_1.done) return [3 /*break*/, 4];\n uniqueConstraint = uniqueConstraints_2_1.value;\n return [4 /*yield*/, this.dropUniqueConstraint(tableOrName, uniqueConstraint)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n uniqueConstraints_2_1 = uniqueConstraints_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_7_1 = _b.sent();\n e_7 = { error: e_7_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (uniqueConstraints_2_1 && !uniqueConstraints_2_1.done && (_a = uniqueConstraints_2.return)) _a.call(uniqueConstraints_2);\n }\n finally { if (e_7) throw e_7.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraint.\n */\n PostgresQueryRunner.prototype.createCheckConstraint = function (tableOrName, checkConstraint) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name = this.connection.namingStrategy.checkConstraintName(table.name, checkConstraint.expression);\n up = this.createCheckConstraintSql(table, checkConstraint);\n down = this.dropCheckConstraintSql(table, checkConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addCheckConstraint(checkConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraints.\n */\n PostgresQueryRunner.prototype.createCheckConstraints = function (tableOrName, checkConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = checkConstraints.map(function (checkConstraint) { return _this.createCheckConstraint(tableOrName, checkConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraint.\n */\n PostgresQueryRunner.prototype.dropCheckConstraint = function (tableOrName, checkOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, checkConstraint, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n checkConstraint = checkOrName instanceof TableCheck ? checkOrName : table.checks.find(function (c) { return c.name === checkOrName; });\n if (!checkConstraint)\n throw new Error(\"Supplied check constraint was not found in table \" + table.name);\n up = this.dropCheckConstraintSql(table, checkConstraint);\n down = this.createCheckConstraintSql(table, checkConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeCheckConstraint(checkConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraints.\n */\n PostgresQueryRunner.prototype.dropCheckConstraints = function (tableOrName, checkConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = checkConstraints.map(function (checkConstraint) { return _this.dropCheckConstraint(tableOrName, checkConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new exclusion constraint.\n */\n PostgresQueryRunner.prototype.createExclusionConstraint = function (tableOrName, exclusionConstraint) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!exclusionConstraint.name)\n exclusionConstraint.name = this.connection.namingStrategy.exclusionConstraintName(table.name, exclusionConstraint.expression);\n up = this.createExclusionConstraintSql(table, exclusionConstraint);\n down = this.dropExclusionConstraintSql(table, exclusionConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addExclusionConstraint(exclusionConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new exclusion constraints.\n */\n PostgresQueryRunner.prototype.createExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = exclusionConstraints.map(function (exclusionConstraint) { return _this.createExclusionConstraint(tableOrName, exclusionConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops exclusion constraint.\n */\n PostgresQueryRunner.prototype.dropExclusionConstraint = function (tableOrName, exclusionOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, exclusionConstraint, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n exclusionConstraint = exclusionOrName instanceof TableExclusion ? exclusionOrName : table.exclusions.find(function (c) { return c.name === exclusionOrName; });\n if (!exclusionConstraint)\n throw new Error(\"Supplied exclusion constraint was not found in table \" + table.name);\n up = this.dropExclusionConstraintSql(table, exclusionConstraint);\n down = this.createExclusionConstraintSql(table, exclusionConstraint);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeExclusionConstraint(exclusionConstraint);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops exclusion constraints.\n */\n PostgresQueryRunner.prototype.dropExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = exclusionConstraints.map(function (exclusionConstraint) { return _this.dropExclusionConstraint(tableOrName, exclusionConstraint); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new foreign key.\n */\n PostgresQueryRunner.prototype.createForeignKey = function (tableOrName, foreignKey) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(table.name, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n up = this.createForeignKeySql(table, foreignKey);\n down = this.dropForeignKeySql(table, foreignKey);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addForeignKey(foreignKey);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new foreign keys.\n */\n PostgresQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) {\n return __awaiter(this, void 0, void 0, function () {\n var foreignKeys_1, foreignKeys_1_1, foreignKey, e_8_1;\n var e_8, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n foreignKeys_1 = __values(foreignKeys), foreignKeys_1_1 = foreignKeys_1.next();\n _b.label = 1;\n case 1:\n if (!!foreignKeys_1_1.done) return [3 /*break*/, 4];\n foreignKey = foreignKeys_1_1.value;\n return [4 /*yield*/, this.createForeignKey(tableOrName, foreignKey)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n foreignKeys_1_1 = foreignKeys_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_8_1 = _b.sent();\n e_8 = { error: e_8_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (foreignKeys_1_1 && !foreignKeys_1_1.done && (_a = foreignKeys_1.return)) _a.call(foreignKeys_1);\n }\n finally { if (e_8) throw e_8.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign key from the table.\n */\n PostgresQueryRunner.prototype.dropForeignKey = function (tableOrName, foreignKeyOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, foreignKey, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n foreignKey = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName : table.foreignKeys.find(function (fk) { return fk.name === foreignKeyOrName; });\n if (!foreignKey)\n throw new Error(\"Supplied foreign key was not found in table \" + table.name);\n up = this.dropForeignKeySql(table, foreignKey);\n down = this.createForeignKeySql(table, foreignKey);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeForeignKey(foreignKey);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign keys from the table.\n */\n PostgresQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) {\n return __awaiter(this, void 0, void 0, function () {\n var foreignKeys_2, foreignKeys_2_1, foreignKey, e_9_1;\n var e_9, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n foreignKeys_2 = __values(foreignKeys), foreignKeys_2_1 = foreignKeys_2.next();\n _b.label = 1;\n case 1:\n if (!!foreignKeys_2_1.done) return [3 /*break*/, 4];\n foreignKey = foreignKeys_2_1.value;\n return [4 /*yield*/, this.dropForeignKey(tableOrName, foreignKey)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n foreignKeys_2_1 = foreignKeys_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_9_1 = _b.sent();\n e_9 = { error: e_9_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (foreignKeys_2_1 && !foreignKeys_2_1.done && (_a = foreignKeys_2.return)) _a.call(foreignKeys_2);\n }\n finally { if (e_9) throw e_9.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new index.\n */\n PostgresQueryRunner.prototype.createIndex = function (tableOrName, index) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n up = this.createIndexSql(table, index);\n down = this.dropIndexSql(table, index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new indices\n */\n PostgresQueryRunner.prototype.createIndices = function (tableOrName, indices) {\n return __awaiter(this, void 0, void 0, function () {\n var indices_1, indices_1_1, index, e_10_1;\n var e_10, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n indices_1 = __values(indices), indices_1_1 = indices_1.next();\n _b.label = 1;\n case 1:\n if (!!indices_1_1.done) return [3 /*break*/, 4];\n index = indices_1_1.value;\n return [4 /*yield*/, this.createIndex(tableOrName, index)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n indices_1_1 = indices_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_10_1 = _b.sent();\n e_10 = { error: e_10_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1);\n }\n finally { if (e_10) throw e_10.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an index from the table.\n */\n PostgresQueryRunner.prototype.dropIndex = function (tableOrName, indexOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, index, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n index = indexOrName instanceof TableIndex ? indexOrName : table.indices.find(function (i) { return i.name === indexOrName; });\n if (!index)\n throw new Error(\"Supplied index was not found in table \" + table.name);\n up = this.dropIndexSql(table, index);\n down = this.createIndexSql(table, index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an indices from the table.\n */\n PostgresQueryRunner.prototype.dropIndices = function (tableOrName, indices) {\n return __awaiter(this, void 0, void 0, function () {\n var indices_2, indices_2_1, index, e_11_1;\n var e_11, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n indices_2 = __values(indices), indices_2_1 = indices_2.next();\n _b.label = 1;\n case 1:\n if (!!indices_2_1.done) return [3 /*break*/, 4];\n index = indices_2_1.value;\n return [4 /*yield*/, this.dropIndex(tableOrName, index)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n indices_2_1 = indices_2.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_11_1 = _b.sent();\n e_11 = { error: e_11_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (indices_2_1 && !indices_2_1.done && (_a = indices_2.return)) _a.call(indices_2);\n }\n finally { if (e_11) throw e_11.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n PostgresQueryRunner.prototype.clearTable = function (tableName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"TRUNCATE TABLE \" + this.escapePath(tableName))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes all tables from the currently connected database.\n */\n PostgresQueryRunner.prototype.clearDatabase = function () {\n return __awaiter(this, void 0, void 0, function () {\n var schemas, schemaNamesString, selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n schemas = [];\n this.connection.entityMetadatas\n .filter(function (metadata) { return metadata.schema; })\n .forEach(function (metadata) {\n var isSchemaExist = !!schemas.find(function (schema) { return schema === metadata.schema; });\n if (!isSchemaExist)\n schemas.push(metadata.schema);\n });\n schemas.push(this.driver.options.schema || \"current_schema()\");\n schemaNamesString = schemas.map(function (name) {\n return name === \"current_schema()\" ? name : \"'\" + name + \"'\";\n }).join(\", \");\n return [4 /*yield*/, this.startTransaction()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 9, , 14]);\n selectViewDropsQuery = \"SELECT 'DROP VIEW IF EXISTS \\\"' || schemaname || '\\\".\\\"' || viewname || '\\\" CASCADE;' as \\\"query\\\" \" +\n (\"FROM \\\"pg_views\\\" WHERE \\\"schemaname\\\" IN (\" + schemaNamesString + \") AND \\\"viewname\\\" NOT IN ('geography_columns', 'geometry_columns', 'raster_columns', 'raster_overviews')\");\n return [4 /*yield*/, this.query(selectViewDropsQuery)];\n case 3:\n dropViewQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 4:\n _a.sent();\n selectTableDropsQuery = \"SELECT 'DROP TABLE IF EXISTS \\\"' || schemaname || '\\\".\\\"' || tablename || '\\\" CASCADE;' as \\\"query\\\" FROM \\\"pg_tables\\\" WHERE \\\"schemaname\\\" IN (\" + schemaNamesString + \") AND \\\"tablename\\\" NOT IN ('spatial_ref_sys')\";\n return [4 /*yield*/, this.query(selectTableDropsQuery)];\n case 5:\n dropTableQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropTableQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 6:\n _a.sent();\n return [4 /*yield*/, this.dropEnumTypes(schemaNamesString)];\n case 7:\n _a.sent();\n return [4 /*yield*/, this.commitTransaction()];\n case 8:\n _a.sent();\n return [3 /*break*/, 14];\n case 9:\n error_1 = _a.sent();\n _a.label = 10;\n case 10:\n _a.trys.push([10, 12, , 13]);\n return [4 /*yield*/, this.rollbackTransaction()];\n case 11:\n _a.sent();\n return [3 /*break*/, 13];\n case 12:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 13];\n case 13: throw error_1;\n case 14: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n PostgresQueryRunner.prototype.loadViews = function (viewNames) {\n return __awaiter(this, void 0, void 0, function () {\n var hasTable, currentSchemaQuery, currentSchema, viewsCondition, query, dbViews;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.hasTable(this.getTypeormMetadataTableName())];\n case 1:\n hasTable = _a.sent();\n if (!hasTable)\n return [2 /*return*/, Promise.resolve([])];\n return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 2:\n currentSchemaQuery = _a.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n viewsCondition = viewNames.map(function (viewName) {\n var _a = __read(viewName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"t\\\".\\\"schema\\\" = '\" + schema + \"' AND \\\"t\\\".\\\"name\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n query = \"SELECT \\\"t\\\".*, \\\"v\\\".\\\"check_option\\\" FROM \" + this.escapePath(this.getTypeormMetadataTableName()) + \" \\\"t\\\" \" +\n (\"INNER JOIN \\\"information_schema\\\".\\\"views\\\" \\\"v\\\" ON \\\"v\\\".\\\"table_schema\\\" = \\\"t\\\".\\\"schema\\\" AND \\\"v\\\".\\\"table_name\\\" = \\\"t\\\".\\\"name\\\" WHERE \\\"t\\\".\\\"type\\\" = 'VIEW' \" + (viewsCondition ? \"AND (\" + viewsCondition + \")\" : \"\"));\n return [4 /*yield*/, this.query(query)];\n case 3:\n dbViews = _a.sent();\n return [2 /*return*/, dbViews.map(function (dbView) {\n var view = new View();\n var schema = dbView[\"schema\"] === currentSchema && !_this.driver.options.schema ? undefined : dbView[\"schema\"];\n view.name = _this.driver.buildTableName(dbView[\"name\"], schema);\n view.expression = dbView[\"value\"];\n return view;\n })];\n }\n });\n });\n };\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n PostgresQueryRunner.prototype.loadTables = function (tableNames) {\n return __awaiter(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, tablesCondition, tablesSql, columnsSql, constraintsCondition, constraintsSql, indicesSql, foreignKeysCondition, hasRelispartitionColumn, isPartitionCondition, foreignKeysSql, _a, dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // if no tables given then no need to proceed\n if (!tableNames || !tableNames.length)\n return [2 /*return*/, []];\n return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n tablesCondition = tableNames.map(function (tableName) {\n var _a = __read(tableName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"table_schema\\\" = '\" + schema + \"' AND \\\"table_name\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n tablesSql = \"SELECT * FROM \\\"information_schema\\\".\\\"tables\\\" WHERE \" + tablesCondition;\n columnsSql = \"\\n SELECT columns.*,\\n pg_catalog.col_description(('\\\"' || table_catalog || '\\\".\\\"' || table_schema || '\\\".\\\"' || table_name || '\\\"')::regclass::oid, ordinal_position) AS description,\\n ('\\\"' || \\\"udt_schema\\\" || '\\\".\\\"' || \\\"udt_name\\\" || '\\\"')::\\\"regtype\\\" AS \\\"regtype\\\",\\n pg_catalog.format_type(\\\"col_attr\\\".\\\"atttypid\\\", \\\"col_attr\\\".\\\"atttypmod\\\") AS \\\"format_type\\\"\\n FROM \\\"information_schema\\\".\\\"columns\\\"\\n LEFT JOIN \\\"pg_catalog\\\".\\\"pg_attribute\\\" AS \\\"col_attr\\\"\\n ON \\\"col_attr\\\".\\\"attname\\\" = \\\"columns\\\".\\\"column_name\\\"\\n AND \\\"col_attr\\\".\\\"attrelid\\\" = (\\n SELECT\\n \\\"cls\\\".\\\"oid\\\" FROM \\\"pg_catalog\\\".\\\"pg_class\\\" AS \\\"cls\\\"\\n LEFT JOIN \\\"pg_catalog\\\".\\\"pg_namespace\\\" AS \\\"ns\\\"\\n ON \\\"ns\\\".\\\"oid\\\" = \\\"cls\\\".\\\"relnamespace\\\"\\n WHERE \\\"cls\\\".\\\"relname\\\" = \\\"columns\\\".\\\"table_name\\\"\\n AND \\\"ns\\\".\\\"nspname\\\" = \\\"columns\\\".\\\"table_schema\\\"\\n )\\n WHERE\\n \" + tablesCondition;\n constraintsCondition = tableNames.map(function (tableName) {\n var _a = __read(tableName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"ns\\\".\\\"nspname\\\" = '\" + schema + \"' AND \\\"t\\\".\\\"relname\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n constraintsSql = \"SELECT \\\"ns\\\".\\\"nspname\\\" AS \\\"table_schema\\\", \\\"t\\\".\\\"relname\\\" AS \\\"table_name\\\", \\\"cnst\\\".\\\"conname\\\" AS \\\"constraint_name\\\", \" +\n \"pg_get_constraintdef(\\\"cnst\\\".\\\"oid\\\") AS \\\"expression\\\", \" +\n \"CASE \\\"cnst\\\".\\\"contype\\\" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS \\\"constraint_type\\\", \\\"a\\\".\\\"attname\\\" AS \\\"column_name\\\" \" +\n \"FROM \\\"pg_constraint\\\" \\\"cnst\\\" \" +\n \"INNER JOIN \\\"pg_class\\\" \\\"t\\\" ON \\\"t\\\".\\\"oid\\\" = \\\"cnst\\\".\\\"conrelid\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"ns\\\".\\\"oid\\\" = \\\"cnst\\\".\\\"connamespace\\\" \" +\n \"LEFT JOIN \\\"pg_attribute\\\" \\\"a\\\" ON \\\"a\\\".\\\"attrelid\\\" = \\\"cnst\\\".\\\"conrelid\\\" AND \\\"a\\\".\\\"attnum\\\" = ANY (\\\"cnst\\\".\\\"conkey\\\") \" +\n (\"WHERE \\\"t\\\".\\\"relkind\\\" IN ('r', 'p') AND (\" + constraintsCondition + \")\");\n indicesSql = \"SELECT \\\"ns\\\".\\\"nspname\\\" AS \\\"table_schema\\\", \\\"t\\\".\\\"relname\\\" AS \\\"table_name\\\", \\\"i\\\".\\\"relname\\\" AS \\\"constraint_name\\\", \\\"a\\\".\\\"attname\\\" AS \\\"column_name\\\", \" +\n \"CASE \\\"ix\\\".\\\"indisunique\\\" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS \\\"is_unique\\\", pg_get_expr(\\\"ix\\\".\\\"indpred\\\", \\\"ix\\\".\\\"indrelid\\\") AS \\\"condition\\\", \" +\n \"\\\"types\\\".\\\"typname\\\" AS \\\"type_name\\\" \" +\n \"FROM \\\"pg_class\\\" \\\"t\\\" \" +\n \"INNER JOIN \\\"pg_index\\\" \\\"ix\\\" ON \\\"ix\\\".\\\"indrelid\\\" = \\\"t\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_attribute\\\" \\\"a\\\" ON \\\"a\\\".\\\"attrelid\\\" = \\\"t\\\".\\\"oid\\\" AND \\\"a\\\".\\\"attnum\\\" = ANY (\\\"ix\\\".\\\"indkey\\\") \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"ns\\\".\\\"oid\\\" = \\\"t\\\".\\\"relnamespace\\\" \" +\n \"INNER JOIN \\\"pg_class\\\" \\\"i\\\" ON \\\"i\\\".\\\"oid\\\" = \\\"ix\\\".\\\"indexrelid\\\" \" +\n \"INNER JOIN \\\"pg_type\\\" \\\"types\\\" ON \\\"types\\\".\\\"oid\\\" = \\\"a\\\".\\\"atttypid\\\" \" +\n \"LEFT JOIN \\\"pg_constraint\\\" \\\"cnst\\\" ON \\\"cnst\\\".\\\"conname\\\" = \\\"i\\\".\\\"relname\\\" \" +\n (\"WHERE \\\"t\\\".\\\"relkind\\\" IN ('r', 'p') AND \\\"cnst\\\".\\\"contype\\\" IS NULL AND (\" + constraintsCondition + \")\");\n foreignKeysCondition = tableNames.map(function (tableName) {\n var _a = __read(tableName.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = _this.driver.options.schema || currentSchema;\n }\n return \"(\\\"ns\\\".\\\"nspname\\\" = '\" + schema + \"' AND \\\"cl\\\".\\\"relname\\\" = '\" + name + \"')\";\n }).join(\" OR \");\n return [4 /*yield*/, this.hasSupportForPartitionedTables()];\n case 2:\n hasRelispartitionColumn = _b.sent();\n isPartitionCondition = hasRelispartitionColumn ? \" AND \\\"cl\\\".\\\"relispartition\\\" = 'f'\" : \"\";\n foreignKeysSql = \"SELECT \\\"con\\\".\\\"conname\\\" AS \\\"constraint_name\\\", \\\"con\\\".\\\"nspname\\\" AS \\\"table_schema\\\", \\\"con\\\".\\\"relname\\\" AS \\\"table_name\\\", \\\"att2\\\".\\\"attname\\\" AS \\\"column_name\\\", \" +\n \"\\\"ns\\\".\\\"nspname\\\" AS \\\"referenced_table_schema\\\", \\\"cl\\\".\\\"relname\\\" AS \\\"referenced_table_name\\\", \\\"att\\\".\\\"attname\\\" AS \\\"referenced_column_name\\\", \\\"con\\\".\\\"confdeltype\\\" AS \\\"on_delete\\\", \" +\n \"\\\"con\\\".\\\"confupdtype\\\" AS \\\"on_update\\\", \\\"con\\\".\\\"condeferrable\\\" AS \\\"deferrable\\\", \\\"con\\\".\\\"condeferred\\\" AS \\\"deferred\\\" \" +\n \"FROM ( \" +\n \"SELECT UNNEST (\\\"con1\\\".\\\"conkey\\\") AS \\\"parent\\\", UNNEST (\\\"con1\\\".\\\"confkey\\\") AS \\\"child\\\", \\\"con1\\\".\\\"confrelid\\\", \\\"con1\\\".\\\"conrelid\\\", \\\"con1\\\".\\\"conname\\\", \\\"con1\\\".\\\"contype\\\", \\\"ns\\\".\\\"nspname\\\", \" +\n \"\\\"cl\\\".\\\"relname\\\", \\\"con1\\\".\\\"condeferrable\\\", \" +\n \"CASE WHEN \\\"con1\\\".\\\"condeferred\\\" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, \" +\n \"CASE \\\"con1\\\".\\\"confdeltype\\\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \\\"confdeltype\\\", \" +\n \"CASE \\\"con1\\\".\\\"confupdtype\\\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \\\"confupdtype\\\" \" +\n \"FROM \\\"pg_class\\\" \\\"cl\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"cl\\\".\\\"relnamespace\\\" = \\\"ns\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_constraint\\\" \\\"con1\\\" ON \\\"con1\\\".\\\"conrelid\\\" = \\\"cl\\\".\\\"oid\\\" \" +\n (\"WHERE \\\"con1\\\".\\\"contype\\\" = 'f' AND (\" + foreignKeysCondition + \") \") +\n \") \\\"con\\\" \" +\n \"INNER JOIN \\\"pg_attribute\\\" \\\"att\\\" ON \\\"att\\\".\\\"attrelid\\\" = \\\"con\\\".\\\"confrelid\\\" AND \\\"att\\\".\\\"attnum\\\" = \\\"con\\\".\\\"child\\\" \" +\n (\"INNER JOIN \\\"pg_class\\\" \\\"cl\\\" ON \\\"cl\\\".\\\"oid\\\" = \\\"con\\\".\\\"confrelid\\\" \" + isPartitionCondition) +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"ns\\\" ON \\\"cl\\\".\\\"relnamespace\\\" = \\\"ns\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_attribute\\\" \\\"att2\\\" ON \\\"att2\\\".\\\"attrelid\\\" = \\\"con\\\".\\\"conrelid\\\" AND \\\"att2\\\".\\\"attnum\\\" = \\\"con\\\".\\\"parent\\\"\";\n return [4 /*yield*/, Promise.all([\n this.query(tablesSql),\n this.query(columnsSql),\n this.query(constraintsSql),\n this.query(indicesSql),\n this.query(foreignKeysSql),\n ])];\n case 3:\n _a = __read.apply(void 0, [_b.sent(), 5]), dbTables = _a[0], dbColumns = _a[1], dbConstraints = _a[2], dbIndices = _a[3], dbForeignKeys = _a[4];\n // if tables were not found in the db, no need to proceed\n if (!dbTables.length)\n return [2 /*return*/, []];\n // create tables for loaded tables\n return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return __awaiter(_this, void 0, void 0, function () {\n var table, getSchemaFromKey, schema, tableFullName, _a, tableUniqueConstraints, tableCheckConstraints, tableExclusionConstraints, tableForeignKeyConstraints, tableIndexConstraints;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n table = new Table();\n getSchemaFromKey = function (dbObject, key) { return dbObject[key] === currentSchema && !_this.driver.options.schema ? undefined : dbObject[key]; };\n schema = getSchemaFromKey(dbTable, \"table_schema\");\n table.name = this.driver.buildTableName(dbTable[\"table_name\"], schema);\n tableFullName = this.driver.buildTableName(dbTable[\"table_name\"], dbTable[\"table_schema\"]);\n // create columns from the loaded columns\n _a = table;\n return [4 /*yield*/, Promise.all(dbColumns\n .filter(function (dbColumn) { return _this.driver.buildTableName(dbColumn[\"table_name\"], dbColumn[\"table_schema\"]) === tableFullName; })\n .map(function (dbColumn) { return __awaiter(_this, void 0, void 0, function () {\n var columnConstraints, tableColumn, type, enumTypeName, builtEnumName, sql, results, geometryColumnSql, results, geographyColumnSql, results, length_1, match, uniqueConstraint, isConstraintComposite;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n columnConstraints = dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName && dbConstraint[\"column_name\"] === dbColumn[\"column_name\"];\n });\n tableColumn = new TableColumn();\n tableColumn.name = dbColumn[\"column_name\"];\n tableColumn.type = dbColumn[\"regtype\"].toLowerCase();\n if (tableColumn.type === \"numeric\" || tableColumn.type === \"decimal\" || tableColumn.type === \"float\") {\n // If one of these properties was set, and another was not, Postgres sets '0' in to unspecified property\n // we set 'undefined' in to unspecified property to avoid changing column on sync\n if (dbColumn[\"numeric_precision\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"numeric_precision\"])) {\n tableColumn.precision = dbColumn[\"numeric_precision\"];\n }\n else if (dbColumn[\"numeric_scale\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"numeric_scale\"])) {\n tableColumn.precision = undefined;\n }\n if (dbColumn[\"numeric_scale\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"numeric_scale\"])) {\n tableColumn.scale = dbColumn[\"numeric_scale\"];\n }\n else if (dbColumn[\"numeric_precision\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"numeric_precision\"])) {\n tableColumn.scale = undefined;\n }\n }\n if (dbColumn[\"data_type\"].toLowerCase() === \"array\") {\n tableColumn.isArray = true;\n type = tableColumn.type.replace(\"[]\", \"\");\n tableColumn.type = this.connection.driver.normalizeType({ type: type });\n }\n if (tableColumn.type === \"interval\"\n || tableColumn.type === \"time without time zone\"\n || tableColumn.type === \"time with time zone\"\n || tableColumn.type === \"timestamp without time zone\"\n || tableColumn.type === \"timestamp with time zone\") {\n tableColumn.precision = !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"datetime_precision\"]) ? dbColumn[\"datetime_precision\"] : undefined;\n }\n if (!(tableColumn.type.indexOf(\"enum\") !== -1)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.getEnumTypeName(table, tableColumn)];\n case 1:\n enumTypeName = (_a.sent()).enumTypeName;\n builtEnumName = this.buildEnumName(table, tableColumn, false, true);\n if (builtEnumName !== enumTypeName)\n tableColumn.enumName = enumTypeName;\n tableColumn.type = \"enum\";\n sql = \"SELECT \\\"e\\\".\\\"enumlabel\\\" AS \\\"value\\\" FROM \\\"pg_enum\\\" \\\"e\\\" \" +\n \"INNER JOIN \\\"pg_type\\\" \\\"t\\\" ON \\\"t\\\".\\\"oid\\\" = \\\"e\\\".\\\"enumtypid\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"n\\\" ON \\\"n\\\".\\\"oid\\\" = \\\"t\\\".\\\"typnamespace\\\" \" +\n (\"WHERE \\\"n\\\".\\\"nspname\\\" = '\" + dbTable[\"table_schema\"] + \"' AND \\\"t\\\".\\\"typname\\\" = '\" + this.buildEnumName(table, tableColumn, false, true) + \"'\");\n return [4 /*yield*/, this.query(sql)];\n case 2:\n results = _a.sent();\n tableColumn.enum = results.map(function (result) { return result[\"value\"]; });\n _a.label = 3;\n case 3:\n if (!(tableColumn.type === \"geometry\")) return [3 /*break*/, 5];\n geometryColumnSql = \"SELECT * FROM (\\n SELECT\\n \\\"f_table_schema\\\" \\\"table_schema\\\",\\n \\\"f_table_name\\\" \\\"table_name\\\",\\n \\\"f_geometry_column\\\" \\\"column_name\\\",\\n \\\"srid\\\",\\n \\\"type\\\"\\n FROM \\\"geometry_columns\\\"\\n ) AS _\\n WHERE (\" + tablesCondition + \") AND \\\"column_name\\\" = '\" + tableColumn.name + \"' AND \\\"table_name\\\" = '\" + dbTable[\"table_name\"] + \"'\";\n return [4 /*yield*/, this.query(geometryColumnSql)];\n case 4:\n results = _a.sent();\n tableColumn.spatialFeatureType = results[0].type;\n tableColumn.srid = results[0].srid;\n _a.label = 5;\n case 5:\n if (!(tableColumn.type === \"geography\")) return [3 /*break*/, 7];\n geographyColumnSql = \"SELECT * FROM (\\n SELECT\\n \\\"f_table_schema\\\" \\\"table_schema\\\",\\n \\\"f_table_name\\\" \\\"table_name\\\",\\n \\\"f_geography_column\\\" \\\"column_name\\\",\\n \\\"srid\\\",\\n \\\"type\\\"\\n FROM \\\"geography_columns\\\"\\n ) AS _\\n WHERE (\" + tablesCondition + \") AND \\\"column_name\\\" = '\" + tableColumn.name + \"' AND \\\"table_name\\\" = '\" + dbTable[\"table_name\"] + \"'\";\n return [4 /*yield*/, this.query(geographyColumnSql)];\n case 6:\n results = _a.sent();\n tableColumn.spatialFeatureType = results[0].type;\n tableColumn.srid = results[0].srid;\n _a.label = 7;\n case 7:\n // check only columns that have length property\n if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1) {\n if (tableColumn.isArray) {\n match = /\\((\\d+)\\)/.exec(dbColumn[\"format_type\"]);\n length_1 = match ? match[1] : undefined;\n }\n else if (dbColumn[\"character_maximum_length\"]) {\n length_1 = dbColumn[\"character_maximum_length\"].toString();\n }\n if (length_1) {\n tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length_1) ? length_1 : \"\";\n }\n }\n tableColumn.isNullable = dbColumn[\"is_nullable\"] === \"YES\";\n tableColumn.isPrimary = !!columnConstraints.find(function (constraint) { return constraint[\"constraint_type\"] === \"PRIMARY\"; });\n uniqueConstraint = columnConstraints.find(function (constraint) { return constraint[\"constraint_type\"] === \"UNIQUE\"; });\n isConstraintComposite = uniqueConstraint\n ? !!dbConstraints.find(function (dbConstraint) { return dbConstraint[\"constraint_type\"] === \"UNIQUE\"\n && dbConstraint[\"constraint_name\"] === uniqueConstraint[\"constraint_name\"]\n && dbConstraint[\"column_name\"] !== dbColumn[\"column_name\"]; })\n : false;\n tableColumn.isUnique = !!uniqueConstraint && !isConstraintComposite;\n if (dbColumn[\"column_default\"] !== null && dbColumn[\"column_default\"] !== undefined) {\n if (dbColumn[\"column_default\"].replace(/\"/gi, \"\") === \"nextval('\" + this.buildSequenceName(table, dbColumn[\"column_name\"], currentSchema, true) + \"'::regclass)\") {\n tableColumn.isGenerated = true;\n tableColumn.generationStrategy = \"increment\";\n }\n else if (dbColumn[\"column_default\"] === \"gen_random_uuid()\" || /^uuid_generate_v\\d\\(\\)/.test(dbColumn[\"column_default\"])) {\n tableColumn.isGenerated = true;\n tableColumn.generationStrategy = \"uuid\";\n }\n else {\n tableColumn.default = dbColumn[\"column_default\"].replace(/::.*/, \"\");\n tableColumn.default = tableColumn.default.replace(/^(-?\\d+)$/, \"'$1'\");\n }\n }\n tableColumn.comment = dbColumn[\"description\"] ? dbColumn[\"description\"] : undefined;\n if (dbColumn[\"character_set_name\"])\n tableColumn.charset = dbColumn[\"character_set_name\"];\n if (dbColumn[\"collation_name\"])\n tableColumn.collation = dbColumn[\"collation_name\"];\n return [2 /*return*/, tableColumn];\n }\n });\n }); }))];\n case 1:\n // create columns from the loaded columns\n _a.columns = _b.sent();\n tableUniqueConstraints = OrmUtils.uniq(dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName\n && dbConstraint[\"constraint_type\"] === \"UNIQUE\";\n }), function (dbConstraint) { return dbConstraint[\"constraint_name\"]; });\n table.uniques = tableUniqueConstraints.map(function (constraint) {\n var uniques = dbConstraints.filter(function (dbC) { return dbC[\"constraint_name\"] === constraint[\"constraint_name\"]; });\n return new TableUnique({\n name: constraint[\"constraint_name\"],\n columnNames: uniques.map(function (u) { return u[\"column_name\"]; })\n });\n });\n tableCheckConstraints = OrmUtils.uniq(dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName\n && dbConstraint[\"constraint_type\"] === \"CHECK\";\n }), function (dbConstraint) { return dbConstraint[\"constraint_name\"]; });\n table.checks = tableCheckConstraints.map(function (constraint) {\n var checks = dbConstraints.filter(function (dbC) { return dbC[\"constraint_name\"] === constraint[\"constraint_name\"]; });\n return new TableCheck({\n name: constraint[\"constraint_name\"],\n columnNames: checks.map(function (c) { return c[\"column_name\"]; }),\n expression: constraint[\"expression\"].replace(/^\\s*CHECK\\s*\\((.*)\\)\\s*$/i, \"$1\")\n });\n });\n tableExclusionConstraints = OrmUtils.uniq(dbConstraints.filter(function (dbConstraint) {\n return _this.driver.buildTableName(dbConstraint[\"table_name\"], dbConstraint[\"table_schema\"]) === tableFullName\n && dbConstraint[\"constraint_type\"] === \"EXCLUDE\";\n }), function (dbConstraint) { return dbConstraint[\"constraint_name\"]; });\n table.exclusions = tableExclusionConstraints.map(function (constraint) {\n return new TableExclusion({\n name: constraint[\"constraint_name\"],\n expression: constraint[\"expression\"].substring(8) // trim EXCLUDE from start of expression\n });\n });\n tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter(function (dbForeignKey) {\n return _this.driver.buildTableName(dbForeignKey[\"table_name\"], dbForeignKey[\"table_schema\"]) === tableFullName;\n }), function (dbForeignKey) { return dbForeignKey[\"constraint_name\"]; });\n table.foreignKeys = tableForeignKeyConstraints.map(function (dbForeignKey) {\n var foreignKeys = dbForeignKeys.filter(function (dbFk) { return dbFk[\"constraint_name\"] === dbForeignKey[\"constraint_name\"]; });\n // if referenced table located in currently used schema, we don't need to concat schema name to table name.\n var schema = getSchemaFromKey(dbForeignKey, \"referenced_table_schema\");\n var referencedTableName = _this.driver.buildTableName(dbForeignKey[\"referenced_table_name\"], schema);\n return new TableForeignKey({\n name: dbForeignKey[\"constraint_name\"],\n columnNames: foreignKeys.map(function (dbFk) { return dbFk[\"column_name\"]; }),\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(function (dbFk) { return dbFk[\"referenced_column_name\"]; }),\n onDelete: dbForeignKey[\"on_delete\"],\n onUpdate: dbForeignKey[\"on_update\"],\n deferrable: dbForeignKey[\"deferrable\"] ? dbForeignKey[\"deferred\"] : undefined,\n });\n });\n tableIndexConstraints = OrmUtils.uniq(dbIndices.filter(function (dbIndex) {\n return _this.driver.buildTableName(dbIndex[\"table_name\"], dbIndex[\"table_schema\"]) === tableFullName;\n }), function (dbIndex) { return dbIndex[\"constraint_name\"]; });\n table.indices = tableIndexConstraints.map(function (constraint) {\n var indices = dbIndices.filter(function (index) {\n return index[\"table_schema\"] === constraint[\"table_schema\"]\n && index[\"table_name\"] === constraint[\"table_name\"]\n && index[\"constraint_name\"] === constraint[\"constraint_name\"];\n });\n return new TableIndex({\n table: table,\n name: constraint[\"constraint_name\"],\n columnNames: indices.map(function (i) { return i[\"column_name\"]; }),\n isUnique: constraint[\"is_unique\"] === \"TRUE\",\n where: constraint[\"condition\"],\n isSpatial: indices.every(function (i) { return _this.driver.spatialTypes.indexOf(i[\"type_name\"]) >= 0; }),\n isFulltext: false\n });\n });\n return [2 /*return*/, table];\n }\n });\n }); }))];\n }\n });\n });\n };\n /**\n * Builds create table sql.\n */\n PostgresQueryRunner.prototype.createTableSql = function (table, createForeignKeys) {\n var _this = this;\n var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(table, column); }).join(\", \");\n var sql = \"CREATE TABLE \" + this.escapePath(table) + \" (\" + columnDefinitions;\n table.columns\n .filter(function (column) { return column.isUnique; })\n .forEach(function (column) {\n var isUniqueExist = table.uniques.some(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; });\n if (!isUniqueExist)\n table.uniques.push(new TableUnique({\n name: _this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n }));\n });\n if (table.uniques.length > 0) {\n var uniquesSql = table.uniques.map(function (unique) {\n var uniqueName = unique.name ? unique.name : _this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames);\n var columnNames = unique.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return \"CONSTRAINT \\\"\" + uniqueName + \"\\\" UNIQUE (\" + columnNames + \")\";\n }).join(\", \");\n sql += \", \" + uniquesSql;\n }\n if (table.checks.length > 0) {\n var checksSql = table.checks.map(function (check) {\n var checkName = check.name ? check.name : _this.connection.namingStrategy.checkConstraintName(table.name, check.expression);\n return \"CONSTRAINT \\\"\" + checkName + \"\\\" CHECK (\" + check.expression + \")\";\n }).join(\", \");\n sql += \", \" + checksSql;\n }\n if (table.exclusions.length > 0) {\n var exclusionsSql = table.exclusions.map(function (exclusion) {\n var exclusionName = exclusion.name ? exclusion.name : _this.connection.namingStrategy.exclusionConstraintName(table.name, exclusion.expression);\n return \"CONSTRAINT \\\"\" + exclusionName + \"\\\" EXCLUDE \" + exclusion.expression;\n }).join(\", \");\n sql += \", \" + exclusionsSql;\n }\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n var foreignKeysSql = table.foreignKeys.map(function (fk) {\n var columnNames = fk.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n if (!fk.name)\n fk.name = _this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n var constraint = \"CONSTRAINT \\\"\" + fk.name + \"\\\" FOREIGN KEY (\" + columnNames + \") REFERENCES \" + _this.escapePath(fk.referencedTableName) + \" (\" + referencedColumnNames + \")\";\n if (fk.onDelete)\n constraint += \" ON DELETE \" + fk.onDelete;\n if (fk.onUpdate)\n constraint += \" ON UPDATE \" + fk.onUpdate;\n if (fk.deferrable)\n constraint += \" DEFERRABLE \" + fk.deferrable;\n return constraint;\n }).join(\", \");\n sql += \", \" + foreignKeysSql;\n }\n var primaryColumns = table.columns.filter(function (column) { return column.isPrimary; });\n if (primaryColumns.length > 0) {\n var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, primaryColumns.map(function (column) { return column.name; }));\n var columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n sql += \", CONSTRAINT \\\"\" + primaryKeyName + \"\\\" PRIMARY KEY (\" + columnNames + \")\";\n }\n sql += \")\";\n table.columns\n .filter(function (it) { return it.comment; })\n .forEach(function (it) { return sql += \"; COMMENT ON COLUMN \" + _this.escapePath(table) + \".\\\"\" + it.name + \"\\\" IS \" + _this.escapeComment(it.comment); });\n return new Query(sql);\n };\n /**\n * Builds drop table sql.\n */\n PostgresQueryRunner.prototype.dropTableSql = function (tableOrPath) {\n return new Query(\"DROP TABLE \" + this.escapePath(tableOrPath));\n };\n PostgresQueryRunner.prototype.createViewSql = function (view) {\n var materializedClause = view.materialized ? \"MATERIALIZED \" : \"\";\n var viewName = this.escapePath(view);\n if (typeof view.expression === \"string\") {\n return new Query(\"CREATE \" + materializedClause + \"VIEW \" + viewName + \" AS \" + view.expression);\n }\n else {\n return new Query(\"CREATE \" + materializedClause + \"VIEW \" + viewName + \" AS \" + view.expression(this.connection).getQuery());\n }\n };\n PostgresQueryRunner.prototype.insertViewDefinitionSql = function (view) {\n return __awaiter(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, splittedName, schema, name, expression, _a, query, parameters;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n splittedName = view.name.split(\".\");\n schema = this.driver.options.schema || currentSchema;\n name = view.name;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n _a = __read(this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ type: \"VIEW\", schema: schema, name: name, value: expression })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return [2 /*return*/, new Query(query, parameters)];\n }\n });\n });\n };\n /**\n * Builds drop view sql.\n */\n PostgresQueryRunner.prototype.dropViewSql = function (viewOrPath) {\n return new Query(\"DROP VIEW \" + this.escapePath(viewOrPath));\n };\n /**\n * Builds remove view sql.\n */\n PostgresQueryRunner.prototype.deleteViewDefinitionSql = function (viewOrPath) {\n return __awaiter(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, viewName, splittedName, schema, name, qb, _a, query, parameters;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n viewName = viewOrPath instanceof View ? viewOrPath.name : viewOrPath;\n splittedName = viewName.split(\".\");\n schema = this.driver.options.schema || currentSchema;\n name = viewName;\n if (splittedName.length === 2) {\n schema = splittedName[0];\n name = splittedName[1];\n }\n qb = this.connection.createQueryBuilder();\n _a = __read(qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(qb.escape(\"type\") + \" = 'VIEW'\")\n .andWhere(qb.escape(\"schema\") + \" = :schema\", { schema: schema })\n .andWhere(qb.escape(\"name\") + \" = :name\", { name: name })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return [2 /*return*/, new Query(query, parameters)];\n }\n });\n });\n };\n /**\n * Extracts schema name from given Table object or table name string.\n */\n PostgresQueryRunner.prototype.extractSchema = function (target) {\n var tableName = target instanceof Table ? target.name : target;\n return tableName.indexOf(\".\") === -1 ? this.driver.options.schema : tableName.split(\".\")[0];\n };\n /**\n * Drops ENUM type from given schemas.\n */\n PostgresQueryRunner.prototype.dropEnumTypes = function (schemaNames) {\n return __awaiter(this, void 0, void 0, function () {\n var selectDropsQuery, dropQueries;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n selectDropsQuery = \"SELECT 'DROP TYPE IF EXISTS \\\"' || n.nspname || '\\\".\\\"' || t.typname || '\\\" CASCADE;' as \\\"query\\\" FROM \\\"pg_type\\\" \\\"t\\\" \" +\n \"INNER JOIN \\\"pg_enum\\\" \\\"e\\\" ON \\\"e\\\".\\\"enumtypid\\\" = \\\"t\\\".\\\"oid\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"n\\\" ON \\\"n\\\".\\\"oid\\\" = \\\"t\\\".\\\"typnamespace\\\" \" +\n (\"WHERE \\\"n\\\".\\\"nspname\\\" IN (\" + schemaNames + \") GROUP BY \\\"n\\\".\\\"nspname\\\", \\\"t\\\".\\\"typname\\\"\");\n return [4 /*yield*/, this.query(selectDropsQuery)];\n case 1:\n dropQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Checks if enum with the given name exist in the database.\n */\n PostgresQueryRunner.prototype.hasEnumType = function (table, column) {\n return __awaiter(this, void 0, void 0, function () {\n var schema, enumName, sql, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n schema = this.parseTableName(table).schema;\n enumName = this.buildEnumName(table, column, false, true);\n sql = \"SELECT \\\"n\\\".\\\"nspname\\\", \\\"t\\\".\\\"typname\\\" FROM \\\"pg_type\\\" \\\"t\\\" \" +\n \"INNER JOIN \\\"pg_namespace\\\" \\\"n\\\" ON \\\"n\\\".\\\"oid\\\" = \\\"t\\\".\\\"typnamespace\\\" \" +\n (\"WHERE \\\"n\\\".\\\"nspname\\\" = \" + schema + \" AND \\\"t\\\".\\\"typname\\\" = '\" + enumName + \"'\");\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Builds create ENUM type sql.\n */\n PostgresQueryRunner.prototype.createEnumTypeSql = function (table, column, enumName) {\n if (!enumName)\n enumName = this.buildEnumName(table, column);\n var enumValues = column.enum.map(function (value) { return \"'\" + value.replace(\"'\", \"''\") + \"'\"; }).join(\", \");\n return new Query(\"CREATE TYPE \" + enumName + \" AS ENUM(\" + enumValues + \")\");\n };\n /**\n * Builds create ENUM type sql.\n */\n PostgresQueryRunner.prototype.dropEnumTypeSql = function (table, column, enumName) {\n if (!enumName)\n enumName = this.buildEnumName(table, column);\n return new Query(\"DROP TYPE \" + enumName);\n };\n /**\n * Builds create index sql.\n */\n PostgresQueryRunner.prototype.createIndexSql = function (table, index) {\n var columns = index.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return new Query(\"CREATE \" + (index.isUnique ? \"UNIQUE \" : \"\") + \"INDEX \\\"\" + index.name + \"\\\" ON \" + this.escapePath(table) + \" \" + (index.isSpatial ? \"USING GiST \" : \"\") + \"(\" + columns + \") \" + (index.where ? \"WHERE \" + index.where : \"\"));\n };\n /**\n * Builds drop index sql.\n */\n PostgresQueryRunner.prototype.dropIndexSql = function (table, indexOrName) {\n var indexName = indexOrName instanceof TableIndex ? indexOrName.name : indexOrName;\n var schema = this.extractSchema(table);\n return schema ? new Query(\"DROP INDEX \\\"\" + schema + \"\\\".\\\"\" + indexName + \"\\\"\") : new Query(\"DROP INDEX \\\"\" + indexName + \"\\\"\");\n };\n /**\n * Builds create primary key sql.\n */\n PostgresQueryRunner.prototype.createPrimaryKeySql = function (table, columnNames) {\n var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n var columnNamesString = columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + primaryKeyName + \"\\\" PRIMARY KEY (\" + columnNamesString + \")\");\n };\n /**\n * Builds drop primary key sql.\n */\n PostgresQueryRunner.prototype.dropPrimaryKeySql = function (table) {\n var columnNames = table.primaryColumns.map(function (column) { return column.name; });\n var primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + primaryKeyName + \"\\\"\");\n };\n /**\n * Builds create unique constraint sql.\n */\n PostgresQueryRunner.prototype.createUniqueConstraintSql = function (table, uniqueConstraint) {\n var columnNames = uniqueConstraint.columnNames.map(function (column) { return \"\\\"\" + column + \"\\\"\"; }).join(\", \");\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + uniqueConstraint.name + \"\\\" UNIQUE (\" + columnNames + \")\");\n };\n /**\n * Builds drop unique constraint sql.\n */\n PostgresQueryRunner.prototype.dropUniqueConstraintSql = function (table, uniqueOrName) {\n var uniqueName = uniqueOrName instanceof TableUnique ? uniqueOrName.name : uniqueOrName;\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + uniqueName + \"\\\"\");\n };\n /**\n * Builds create check constraint sql.\n */\n PostgresQueryRunner.prototype.createCheckConstraintSql = function (table, checkConstraint) {\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + checkConstraint.name + \"\\\" CHECK (\" + checkConstraint.expression + \")\");\n };\n /**\n * Builds drop check constraint sql.\n */\n PostgresQueryRunner.prototype.dropCheckConstraintSql = function (table, checkOrName) {\n var checkName = checkOrName instanceof TableCheck ? checkOrName.name : checkOrName;\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + checkName + \"\\\"\");\n };\n /**\n * Builds create exclusion constraint sql.\n */\n PostgresQueryRunner.prototype.createExclusionConstraintSql = function (table, exclusionConstraint) {\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + exclusionConstraint.name + \"\\\" EXCLUDE \" + exclusionConstraint.expression);\n };\n /**\n * Builds drop exclusion constraint sql.\n */\n PostgresQueryRunner.prototype.dropExclusionConstraintSql = function (table, exclusionOrName) {\n var exclusionName = exclusionOrName instanceof TableExclusion ? exclusionOrName.name : exclusionOrName;\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + exclusionName + \"\\\"\");\n };\n /**\n * Builds create foreign key sql.\n */\n PostgresQueryRunner.prototype.createForeignKeySql = function (table, foreignKey) {\n var columnNames = foreignKey.columnNames.map(function (column) { return \"\\\"\" + column + \"\\\"\"; }).join(\", \");\n var referencedColumnNames = foreignKey.referencedColumnNames.map(function (column) { return \"\\\"\" + column + \"\\\"\"; }).join(\",\");\n var sql = \"ALTER TABLE \" + this.escapePath(table) + \" ADD CONSTRAINT \\\"\" + foreignKey.name + \"\\\" FOREIGN KEY (\" + columnNames + \") \" +\n (\"REFERENCES \" + this.escapePath(foreignKey.referencedTableName) + \"(\" + referencedColumnNames + \")\");\n if (foreignKey.onDelete)\n sql += \" ON DELETE \" + foreignKey.onDelete;\n if (foreignKey.onUpdate)\n sql += \" ON UPDATE \" + foreignKey.onUpdate;\n if (foreignKey.deferrable)\n sql += \" DEFERRABLE \" + foreignKey.deferrable;\n return new Query(sql);\n };\n /**\n * Builds drop foreign key sql.\n */\n PostgresQueryRunner.prototype.dropForeignKeySql = function (table, foreignKeyOrName) {\n var foreignKeyName = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName.name : foreignKeyOrName;\n return new Query(\"ALTER TABLE \" + this.escapePath(table) + \" DROP CONSTRAINT \\\"\" + foreignKeyName + \"\\\"\");\n };\n /**\n * Builds sequence name from given table and column.\n */\n PostgresQueryRunner.prototype.buildSequenceName = function (table, columnOrName, currentSchema, disableEscape, skipSchema) {\n var columnName = columnOrName instanceof TableColumn ? columnOrName.name : columnOrName;\n var schema = undefined;\n var tableName = undefined;\n if (table.name.indexOf(\".\") === -1) {\n tableName = table.name;\n }\n else {\n schema = table.name.split(\".\")[0];\n tableName = table.name.split(\".\")[1];\n }\n var seqName = tableName + \"_\" + columnName + \"_seq\";\n if (seqName.length > this.connection.driver.maxAliasLength) // note doesn't yet handle corner cases where .length differs from number of UTF-8 bytes\n seqName = tableName.substring(0, 29) + \"_\" + columnName.substring(0, Math.max(29, 63 - tableName.length - 5)) + \"_seq\";\n if (schema && schema !== currentSchema && !skipSchema) {\n return disableEscape ? schema + \".\" + seqName : \"\\\"\" + schema + \"\\\".\\\"\" + seqName + \"\\\"\";\n }\n else {\n return disableEscape ? \"\" + seqName : \"\\\"\" + seqName + \"\\\"\";\n }\n };\n /**\n * Builds ENUM type name from given table and column.\n */\n PostgresQueryRunner.prototype.buildEnumName = function (table, column, withSchema, disableEscape, toOld) {\n if (withSchema === void 0) { withSchema = true; }\n var schema = table.name.indexOf(\".\") === -1 ? this.driver.options.schema : table.name.split(\".\")[0];\n var tableName = table.name.indexOf(\".\") === -1 ? table.name : table.name.split(\".\")[1];\n var enumName = column.enumName ? column.enumName : tableName + \"_\" + column.name.toLowerCase() + \"_enum\";\n if (schema && withSchema)\n enumName = schema + \".\" + enumName;\n if (toOld)\n enumName = enumName + \"_old\";\n return enumName.split(\".\").map(function (i) {\n return disableEscape ? i : \"\\\"\" + i + \"\\\"\";\n }).join(\".\");\n };\n PostgresQueryRunner.prototype.getEnumTypeName = function (table, column) {\n return __awaiter(this, void 0, void 0, function () {\n var currentSchemaQuery, currentSchema, _a, schema, name, result, udtName;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT * FROM current_schema()\")];\n case 1:\n currentSchemaQuery = _b.sent();\n currentSchema = currentSchemaQuery[0][\"current_schema\"];\n _a = __read(table.name.split(\".\"), 2), schema = _a[0], name = _a[1];\n if (!name) {\n name = schema;\n schema = this.driver.options.schema || currentSchema;\n }\n return [4 /*yield*/, this.query(\"SELECT \\\"udt_schema\\\", \\\"udt_name\\\" \" +\n (\"FROM \\\"information_schema\\\".\\\"columns\\\" WHERE \\\"table_schema\\\" = '\" + schema + \"' AND \\\"table_name\\\" = '\" + name + \"' AND \\\"column_name\\\"='\" + column.name + \"'\"))];\n case 2:\n result = _b.sent();\n udtName = result[0][\"udt_name\"];\n if (udtName.indexOf(\"_\") === 0) {\n udtName = udtName.substr(1, udtName.length);\n }\n return [2 /*return*/, {\n enumTypeSchema: result[0][\"udt_schema\"],\n enumTypeName: udtName\n }];\n }\n });\n });\n };\n /**\n * Escapes a given comment so it's safe to include in a query.\n */\n PostgresQueryRunner.prototype.escapeComment = function (comment) {\n if (!comment || comment.length === 0) {\n return \"NULL\";\n }\n comment = comment\n .replace(/'/g, \"''\")\n .replace(\"\\0\", \"\"); // Null bytes aren't allowed in comments\n return \"'\" + comment + \"'\";\n };\n /**\n * Escapes given table or view path.\n */\n PostgresQueryRunner.prototype.escapePath = function (target, disableEscape) {\n var tableName = target instanceof Table || target instanceof View ? target.name : target;\n tableName = tableName.indexOf(\".\") === -1 && this.driver.options.schema ? this.driver.options.schema + \".\" + tableName : tableName;\n return tableName.split(\".\").map(function (i) {\n return disableEscape ? i : \"\\\"\" + i + \"\\\"\";\n }).join(\".\");\n };\n /**\n * Returns object with table schema and table name.\n */\n PostgresQueryRunner.prototype.parseTableName = function (target) {\n var tableName = target instanceof Table ? target.name : target;\n if (tableName.indexOf(\".\") === -1) {\n return {\n schema: this.driver.options.schema ? \"'\" + this.driver.options.schema + \"'\" : \"current_schema()\",\n tableName: \"'\" + tableName + \"'\"\n };\n }\n else {\n return {\n schema: \"'\" + tableName.split(\".\")[0] + \"'\",\n tableName: \"'\" + tableName.split(\".\")[1] + \"'\"\n };\n }\n };\n /**\n * Builds a query for create column.\n */\n PostgresQueryRunner.prototype.buildCreateColumnSql = function (table, column) {\n var c = \"\\\"\" + column.name + \"\\\"\";\n if (column.isGenerated === true && column.generationStrategy !== \"uuid\") {\n if (column.type === \"integer\" || column.type === \"int\" || column.type === \"int4\")\n c += \" SERIAL\";\n if (column.type === \"smallint\" || column.type === \"int2\")\n c += \" SMALLSERIAL\";\n if (column.type === \"bigint\" || column.type === \"int8\")\n c += \" BIGSERIAL\";\n }\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n c += \" \" + this.buildEnumName(table, column);\n if (column.isArray)\n c += \" array\";\n }\n else if (!column.isGenerated || column.type === \"uuid\") {\n c += \" \" + this.connection.driver.createFullType(column);\n }\n if (column.charset)\n c += \" CHARACTER SET \\\"\" + column.charset + \"\\\"\";\n if (column.collation)\n c += \" COLLATE \\\"\" + column.collation + \"\\\"\";\n if (column.isNullable !== true)\n c += \" NOT NULL\";\n if (column.default !== undefined && column.default !== null)\n c += \" DEFAULT \" + column.default;\n if (column.isGenerated && column.generationStrategy === \"uuid\" && !column.default)\n c += \" DEFAULT \" + this.driver.uuidGenerator;\n return c;\n };\n /**\n * Checks if the PostgreSQL server has support for partitioned tables\n */\n PostgresQueryRunner.prototype.hasSupportForPartitionedTables = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition'\")];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n return PostgresQueryRunner;\n}(BaseQueryRunner));\nexport { PostgresQueryRunner };\n\n//# sourceMappingURL=PostgresQueryRunner.js.map\n","import { __awaiter, __extends, __generator, __read } from \"tslib\";\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport { TransactionAlreadyStartedError } from \"../../error/TransactionAlreadyStartedError\";\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\";\nimport { PostgresQueryRunner } from \"../postgres/PostgresQueryRunner\";\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\";\nvar PostgresQueryRunnerWrapper = /** @class */ (function (_super) {\n __extends(PostgresQueryRunnerWrapper, _super);\n function PostgresQueryRunnerWrapper(driver, mode) {\n return _super.call(this, driver, mode) || this;\n }\n return PostgresQueryRunnerWrapper;\n}(PostgresQueryRunner));\n/**\n * Runs queries on a single postgres database connection.\n */\nvar AuroraDataApiPostgresQueryRunner = /** @class */ (function (_super) {\n __extends(AuroraDataApiPostgresQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AuroraDataApiPostgresQueryRunner(driver, client, mode) {\n var _this = _super.call(this, driver, mode) || this;\n _this.client = client;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n AuroraDataApiPostgresQueryRunner.prototype.connect = function () {\n var _this = this;\n if (this.databaseConnection)\n return Promise.resolve(this.databaseConnection);\n if (this.databaseConnectionPromise)\n return this.databaseConnectionPromise;\n if (this.mode === \"slave\" && this.driver.isReplicated) {\n this.databaseConnectionPromise = this.driver.obtainSlaveConnection().then(function (_a) {\n var _b = __read(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n _this.releaseCallback = release;\n return _this.databaseConnection;\n });\n }\n else { // master\n this.databaseConnectionPromise = this.driver.obtainMasterConnection().then(function (_a) {\n var _b = __read(_a, 2), connection = _b[0], release = _b[1];\n _this.driver.connectedQueryRunners.push(_this);\n _this.databaseConnection = connection;\n _this.releaseCallback = release;\n return _this.databaseConnection;\n });\n }\n return this.databaseConnectionPromise;\n };\n /**\n * Starts transaction on the current connection.\n */\n AuroraDataApiPostgresQueryRunner.prototype.startTransaction = function (isolationLevel) {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive)\n throw new TransactionAlreadyStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.isTransactionActive = true;\n return [4 /*yield*/, this.client.startTransaction()];\n case 3:\n _a.sent();\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n AuroraDataApiPostgresQueryRunner.prototype.commitTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.client.commitTransaction()];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n AuroraDataApiPostgresQueryRunner.prototype.rollbackTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.client.rollbackTransaction()];\n case 3:\n _a.sent();\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n AuroraDataApiPostgresQueryRunner.prototype.query = function (query, parameters) {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n return [4 /*yield*/, this.client.query(query, parameters)];\n case 1:\n result = _a.sent();\n if (result.records) {\n return [2 /*return*/, result.records];\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n return AuroraDataApiPostgresQueryRunner;\n}(PostgresQueryRunnerWrapper));\nexport { AuroraDataApiPostgresQueryRunner };\n\n//# sourceMappingURL=AuroraDataApiPostgresQueryRunner.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { PostgresDriver } from \"../postgres/PostgresDriver\";\nimport { PlatformTools } from \"../../platform/PlatformTools\";\nimport { AuroraDataApiPostgresQueryRunner } from \"../aurora-data-api-pg/AuroraDataApiPostgresQueryRunner\";\nimport { ApplyValueTransformers } from \"../../util/ApplyValueTransformers\";\nvar PostgresWrapper = /** @class */ (function (_super) {\n __extends(PostgresWrapper, _super);\n function PostgresWrapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PostgresWrapper;\n}(PostgresDriver));\nvar AuroraDataApiPostgresDriver = /** @class */ (function (_super) {\n __extends(AuroraDataApiPostgresDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AuroraDataApiPostgresDriver(connection) {\n var _this = _super.call(this) || this;\n _this.connection = connection;\n _this.options = connection.options;\n _this.isReplicated = false;\n // load data-api package\n _this.loadDependencies();\n _this.client = new _this.DataApiDriver(_this.options.region, _this.options.secretArn, _this.options.resourceArn, _this.options.database, function (query, parameters) { return _this.connection.logger.logQuery(query, parameters); }, _this.options.serviceConfigOptions, _this.options.formatOptions);\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n * Based on pooling options, it can either create connection immediately,\n * either create a pool and create connection when needed.\n */\n AuroraDataApiPostgresDriver.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Closes connection with database.\n */\n AuroraDataApiPostgresDriver.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n AuroraDataApiPostgresDriver.prototype.createQueryRunner = function (mode) {\n var _this = this;\n return new AuroraDataApiPostgresQueryRunner(this, new this.DataApiDriver(this.options.region, this.options.secretArn, this.options.resourceArn, this.options.database, function (query, parameters) { return _this.connection.logger.logQuery(query, parameters); }, this.options.serviceConfigOptions, this.options.formatOptions), mode);\n };\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n AuroraDataApiPostgresDriver.prototype.preparePersistentValue = function (value, columnMetadata) {\n if (this.options.formatOptions && this.options.formatOptions.castParameters === false) {\n return _super.prototype.preparePersistentValue.call(this, value, columnMetadata);\n }\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n return this.client.preparePersistentValue(value, columnMetadata);\n };\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n AuroraDataApiPostgresDriver.prototype.prepareHydratedValue = function (value, columnMetadata) {\n if (this.options.formatOptions && this.options.formatOptions.castParameters === false) {\n return _super.prototype.prepareHydratedValue.call(this, value, columnMetadata);\n }\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n return this.client.prepareHydratedValue(value, columnMetadata);\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n AuroraDataApiPostgresDriver.prototype.loadDependencies = function () {\n var pg = PlatformTools.load(\"typeorm-aurora-data-api-driver\").pg;\n this.DataApiDriver = pg;\n };\n /**\n * Executes given query.\n */\n AuroraDataApiPostgresDriver.prototype.executeQuery = function (connection, query) {\n return this.connection.query(query);\n };\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n AuroraDataApiPostgresDriver.prototype.afterConnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var extensionsMetadata;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.checkMetadataForExtensions()];\n case 1:\n extensionsMetadata = _a.sent();\n if (!extensionsMetadata.hasExtensions) return [3 /*break*/, 3];\n return [4 /*yield*/, this.enableExtensions(extensionsMetadata, this.connection)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/, Promise.resolve()];\n }\n });\n });\n };\n return AuroraDataApiPostgresDriver;\n}(PostgresWrapper));\nexport { AuroraDataApiPostgresDriver };\n\n//# sourceMappingURL=AuroraDataApiPostgresDriver.js.map\n","import { MissingDriverError } from \"../error/MissingDriverError\";\nimport { CockroachDriver } from \"./cockroachdb/CockroachDriver\";\nimport { MongoDriver } from \"./mongodb/MongoDriver\";\nimport { SqlServerDriver } from \"./sqlserver/SqlServerDriver\";\nimport { OracleDriver } from \"./oracle/OracleDriver\";\nimport { SqliteDriver } from \"./sqlite/SqliteDriver\";\nimport { CordovaDriver } from \"./cordova/CordovaDriver\";\nimport { ReactNativeDriver } from \"./react-native/ReactNativeDriver\";\nimport { NativescriptDriver } from \"./nativescript/NativescriptDriver\";\nimport { SqljsDriver } from \"./sqljs/SqljsDriver\";\nimport { MysqlDriver } from \"./mysql/MysqlDriver\";\nimport { PostgresDriver } from \"./postgres/PostgresDriver\";\nimport { ExpoDriver } from \"./expo/ExpoDriver\";\nimport { AuroraDataApiDriver } from \"./aurora-data-api/AuroraDataApiDriver\";\nimport { AuroraDataApiPostgresDriver } from \"./aurora-data-api-pg/AuroraDataApiPostgresDriver\";\nimport { SapDriver } from \"./sap/SapDriver\";\nimport { BetterSqlite3Driver } from \"./better-sqlite3/BetterSqlite3Driver\";\n/**\n * Helps to create drivers.\n */\nvar DriverFactory = /** @class */ (function () {\n function DriverFactory() {\n }\n /**\n * Creates a new driver depend on a given connection's driver type.\n */\n DriverFactory.prototype.create = function (connection) {\n var type = connection.options.type;\n switch (type) {\n case \"mysql\":\n return new MysqlDriver(connection);\n case \"postgres\":\n return new PostgresDriver(connection);\n case \"cockroachdb\":\n return new CockroachDriver(connection);\n case \"sap\":\n return new SapDriver(connection);\n case \"mariadb\":\n return new MysqlDriver(connection);\n case \"sqlite\":\n return new SqliteDriver(connection);\n case \"better-sqlite3\":\n return new BetterSqlite3Driver(connection);\n case \"cordova\":\n return new CordovaDriver(connection);\n case \"nativescript\":\n return new NativescriptDriver(connection);\n case \"react-native\":\n return new ReactNativeDriver(connection);\n case \"sqljs\":\n return new SqljsDriver(connection);\n case \"oracle\":\n return new OracleDriver(connection);\n case \"mssql\":\n return new SqlServerDriver(connection);\n case \"mongodb\":\n return new MongoDriver(connection);\n case \"expo\":\n return new ExpoDriver(connection);\n case \"aurora-data-api\":\n return new AuroraDataApiDriver(connection);\n case \"aurora-data-api-pg\":\n return new AuroraDataApiPostgresDriver(connection);\n default:\n throw new MissingDriverError(type);\n }\n };\n return DriverFactory;\n}());\nexport { DriverFactory };\n\n//# sourceMappingURL=DriverFactory.js.map\n","/**\n * Dummy functions for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\n/**\n * Loads all exported classes from the given directory.\n */\nexport function importClassesFromDirectories(logger, directories, formats) {\n if (formats === void 0) { formats = [\".js\", \".cjs\", \".ts\"]; }\n return [];\n}\n/**\n * Loads all json files from the given directory.\n */\nexport function importJsonsFromDirectories(directories, format) {\n if (format === void 0) { format = \".json\"; }\n return [];\n}\n\n//# sourceMappingURL=BrowserDirectoryExportedClassesLoader.js.map\n","/**\n * Container to be used by this library for inversion control. If container was not implicitly set then by default\n * container simply creates a new instance of the given class.\n */\nvar defaultContainer = new (/** @class */ (function () {\n function class_1() {\n this.instances = [];\n }\n class_1.prototype.get = function (someClass) {\n var instance = this.instances.find(function (i) { return i.type === someClass; });\n if (!instance) {\n instance = { type: someClass, object: new someClass() };\n this.instances.push(instance);\n }\n return instance.object;\n };\n return class_1;\n}()))();\nvar userContainer;\nvar userContainerOptions;\n/**\n * Sets container to be used by this library.\n */\nexport function useContainer(iocContainer, options) {\n userContainer = iocContainer;\n userContainerOptions = options;\n}\n/**\n * Gets the IOC container used by this library.\n */\nexport function getFromContainer(someClass) {\n if (userContainer) {\n try {\n var instance = userContainer.get(someClass);\n if (instance)\n return instance;\n if (!userContainerOptions || !userContainerOptions.fallback)\n return instance;\n }\n catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors)\n throw error;\n }\n }\n return defaultContainer.get(someClass);\n}\n\n//# sourceMappingURL=container.js.map\n","/**\n * Index metadata contains all information about table's index.\n */\nvar IndexMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function IndexMetadata(options) {\n /**\n * Indicates if this index must be unique.\n */\n this.isUnique = false;\n /**\n * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\n * Works only in MySQL.\n */\n this.isSpatial = false;\n /**\n * The FULLTEXT modifier indexes the entire column and does not allow prefixing.\n * Works only in MySQL.\n */\n this.isFulltext = false;\n /**\n * Indicates if this index must synchronize with database index.\n */\n this.synchronize = true;\n /**\n * Indexed columns.\n */\n this.columns = [];\n /**\n * Map of column names with order set.\n * Used only by MongoDB driver.\n */\n this.columnNamesWithOrderingMap = {};\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n if (options.columns)\n this.columns = options.columns;\n if (options.args) {\n this.target = options.args.target;\n if (options.args.synchronize !== null && options.args.synchronize !== undefined)\n this.synchronize = options.args.synchronize;\n this.isUnique = !!options.args.unique;\n this.isSpatial = !!options.args.spatial;\n this.isFulltext = !!options.args.fulltext;\n this.parser = options.args.parser;\n this.where = options.args.where;\n this.isSparse = options.args.sparse;\n this.isBackground = options.args.background;\n this.expireAfterSeconds = options.args.expireAfterSeconds;\n this.givenName = options.args.name;\n this.givenColumnNames = options.args.columns;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend index properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n IndexMetadata.prototype.build = function (namingStrategy) {\n var _this = this;\n if (this.synchronize === false) {\n this.name = this.givenName;\n return this;\n }\n var map = {};\n // if columns already an array of string then simply return it\n if (this.givenColumnNames) {\n var columnPropertyPaths = [];\n if (Array.isArray(this.givenColumnNames)) {\n columnPropertyPaths = this.givenColumnNames.map(function (columnName) {\n if (_this.embeddedMetadata)\n return _this.embeddedMetadata.propertyPath + \".\" + columnName;\n return columnName;\n });\n columnPropertyPaths.forEach(function (propertyPath) { return map[propertyPath] = 1; });\n }\n else { // todo: indices in embeds are not implemented in this syntax. deprecate this syntax?\n // if columns is a function that returns array of field names then execute it and get columns names from it\n var columnsFnResult_1 = this.givenColumnNames(this.entityMetadata.propertiesMap);\n if (Array.isArray(columnsFnResult_1)) {\n columnPropertyPaths = columnsFnResult_1.map(function (i) { return String(i); });\n columnPropertyPaths.forEach(function (name) { return map[name] = 1; });\n }\n else {\n columnPropertyPaths = Object.keys(columnsFnResult_1).map(function (i) { return String(i); });\n Object.keys(columnsFnResult_1).forEach(function (columnName) { return map[columnName] = columnsFnResult_1[columnName]; });\n }\n }\n this.columns = columnPropertyPaths.map(function (propertyPath) {\n var columnWithSameName = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === propertyPath; });\n if (columnWithSameName) {\n return [columnWithSameName];\n }\n var relationWithSameName = _this.entityMetadata.relations.find(function (relation) { return relation.isWithJoinColumn && relation.propertyName === propertyPath; });\n if (relationWithSameName) {\n return relationWithSameName.joinColumns;\n }\n var indexName = _this.givenName ? \"\\\"\" + _this.givenName + \"\\\" \" : \"\";\n var entityName = _this.entityMetadata.targetName;\n throw new Error(\"Index \" + indexName + \"contains column that is missing in the entity (\" + entityName + \"): \" + propertyPath);\n })\n .reduce(function (a, b) { return a.concat(b); });\n }\n this.columnNamesWithOrderingMap = Object.keys(map).reduce(function (updatedMap, key) {\n var column = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === key; });\n if (column)\n updatedMap[column.databasePath] = map[key];\n return updatedMap;\n }, {});\n this.name = this.givenName ? this.givenName : namingStrategy.indexName(this.entityMetadata.tablePath, this.columns.map(function (column) { return column.databaseName; }), this.where);\n return this;\n };\n return IndexMetadata;\n}());\nexport { IndexMetadata };\n\n//# sourceMappingURL=IndexMetadata.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { EntityMetadata } from \"./EntityMetadata\";\n/**\n * Contains all information about some entity's relation.\n */\nvar RelationMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function RelationMetadata(options) {\n /**\n * Indicates if this is a parent (can be only many-to-one relation) relation in the tree tables.\n */\n this.isTreeParent = false;\n /**\n * Indicates if this is a children (can be only one-to-many relation) relation in the tree tables.\n */\n this.isTreeChildren = false;\n /**\n * Indicates if this relation's column is a primary key.\n * Can be used only for many-to-one and owner one-to-one relations.\n */\n this.isPrimary = false;\n /**\n * Indicates if this relation is lazily loaded.\n */\n this.isLazy = false;\n /**\n * Indicates if this relation is eagerly loaded.\n */\n this.isEager = false;\n /**\n * Indicates if persistence is enabled for the relation.\n * By default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it.\n * If its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality.\n * This is useful for performance optimization since its disabling avoid multiple extra queries during entity save.\n */\n this.persistenceEnabled = true;\n /**\n * If set to true then related objects are allowed to be inserted to the database.\n */\n this.isCascadeInsert = false;\n /**\n * If set to true then related objects are allowed to be updated in the database.\n */\n this.isCascadeUpdate = false;\n /**\n * If set to true then related objects are allowed to be remove from the database.\n */\n this.isCascadeRemove = false;\n /**\n * If set to true then related objects are allowed to be soft-removed from the database.\n */\n this.isCascadeSoftRemove = false;\n /**\n * If set to true then related objects are allowed to be recovered from the database.\n */\n this.isCascadeRecover = false;\n /**\n * Indicates if relation column value can be nullable or not.\n */\n this.isNullable = true;\n /**\n * Indicates whether foreign key constraints will be created for join columns.\n * Can be used only for many-to-one and owner one-to-one relations.\n * Defaults to true.\n */\n this.createForeignKeyConstraints = true;\n /**\n * Indicates if this side is an owner of this relation.\n */\n this.isOwning = false;\n /**\n * Checks if this relation's type is \"one-to-one\".\n */\n this.isOneToOne = false;\n /**\n * Checks if this relation is owner side of the \"one-to-one\" relation.\n * Owner side means this side of relation has a join column in the table.\n */\n this.isOneToOneOwner = false;\n /**\n * Checks if this relation has a join column (e.g. is it many-to-one or one-to-one owner side).\n */\n this.isWithJoinColumn = false;\n /**\n * Checks if this relation is NOT owner side of the \"one-to-one\" relation.\n * NOT owner side means this side of relation does not have a join column in the table.\n */\n this.isOneToOneNotOwner = false;\n /**\n * Checks if this relation's type is \"one-to-many\".\n */\n this.isOneToMany = false;\n /**\n * Checks if this relation's type is \"many-to-one\".\n */\n this.isManyToOne = false;\n /**\n * Checks if this relation's type is \"many-to-many\".\n */\n this.isManyToMany = false;\n /**\n * Checks if this relation's type is \"many-to-many\", and is owner side of the relationship.\n * Owner side means this side of relation has a join table.\n */\n this.isManyToManyOwner = false;\n /**\n * Checks if this relation's type is \"many-to-many\", and is NOT owner side of the relationship.\n * Not owner side means this side of relation does not have a join table.\n */\n this.isManyToManyNotOwner = false;\n /**\n * Foreign keys created for this relation.\n */\n this.foreignKeys = [];\n /**\n * Join table columns.\n * Join columns can be obtained only from owner side of the relation.\n * From non-owner side of the relation join columns will be empty.\n * If this relation is a many-to-one/one-to-one then it takes join columns from the current entity.\n * If this relation is many-to-many then it takes all owner join columns from the junction entity.\n */\n this.joinColumns = [];\n /**\n * Inverse join table columns.\n * Inverse join columns are supported only for many-to-many relations\n * and can be obtained only from owner side of the relation.\n * From non-owner side of the relation join columns will be undefined.\n */\n this.inverseJoinColumns = [];\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n var args = options.args;\n this.target = args.target;\n this.propertyName = args.propertyName;\n this.relationType = args.relationType;\n if (args.inverseSideProperty)\n this.givenInverseSidePropertyFactory = args.inverseSideProperty;\n this.isLazy = args.isLazy || false;\n // this.isCascadeInsert = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"insert\") !== -1);\n // this.isCascadeUpdate = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"update\") !== -1);\n // this.isCascadeRemove = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"remove\") !== -1);\n // this.isCascadeSoftRemove = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"soft-remove\") !== -1);\n // this.isCascadeRecover = args.options.cascade === true || (args.options.cascade instanceof Array && args.options.cascade.indexOf(\"recover\") !== -1);\n this.isCascadeInsert = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"insert\") !== -1);\n this.isCascadeUpdate = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"update\") !== -1);\n this.isCascadeRemove = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"remove\") !== -1);\n this.isCascadeSoftRemove = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"soft-remove\") !== -1);\n this.isCascadeRecover = args.options.cascade === true || (Array.isArray(args.options.cascade) && args.options.cascade.indexOf(\"recover\") !== -1);\n this.isPrimary = args.options.primary || false;\n this.isNullable = args.options.nullable === false || this.isPrimary ? false : true;\n this.onDelete = args.options.onDelete;\n this.onUpdate = args.options.onUpdate;\n this.deferrable = args.options.deferrable;\n this.createForeignKeyConstraints = args.options.createForeignKeyConstraints === false ? false : true;\n this.isEager = args.options.eager || false;\n this.persistenceEnabled = args.options.persistence === false ? false : true;\n this.orphanedRowAction = args.options.orphanedRowAction || \"nullify\";\n this.isTreeParent = args.isTreeParent || false;\n this.isTreeChildren = args.isTreeChildren || false;\n this.type = args.type instanceof Function ? args.type() : args.type;\n this.isOneToOne = this.relationType === \"one-to-one\";\n this.isOneToMany = this.relationType === \"one-to-many\";\n this.isManyToOne = this.relationType === \"many-to-one\";\n this.isManyToMany = this.relationType === \"many-to-many\";\n this.isOneToOneNotOwner = this.isOneToOne ? true : false;\n this.isManyToManyNotOwner = this.isManyToMany ? true : false;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Creates join column ids map from the given related entity ids array.\n */\n RelationMetadata.prototype.getRelationIdMap = function (entity) {\n var joinColumns = this.isOwning ? this.joinColumns : this.inverseRelation.joinColumns;\n var referencedColumns = joinColumns.map(function (joinColumn) { return joinColumn.referencedColumn; });\n // console.log(\"entity\", entity);\n // console.log(\"referencedColumns\", referencedColumns);\n return EntityMetadata.getValueMap(entity, referencedColumns);\n };\n /**\n * Ensures that given object is an entity id map.\n * If given id is an object then it means its already id map.\n * If given id isn't an object then it means its a value of the id column\n * and it creates a new id map with this value and name of the primary column.\n */\n RelationMetadata.prototype.ensureRelationIdMap = function (id) {\n if (id instanceof Object)\n return id;\n var joinColumns = this.isOwning ? this.joinColumns : this.inverseRelation.joinColumns;\n var referencedColumns = joinColumns.map(function (joinColumn) { return joinColumn.referencedColumn; });\n if (referencedColumns.length > 1)\n throw new Error(\"Cannot create relation id map for a single value because relation contains multiple referenced columns.\");\n return referencedColumns[0].createValueMap(id);\n };\n /**\n * Extracts column value from the given entity.\n * If column is in embedded (or recursive embedded) it extracts its value from there.\n */\n RelationMetadata.prototype.getEntityValue = function (entity, getLazyRelationsPromiseValue) {\n if (getLazyRelationsPromiseValue === void 0) { getLazyRelationsPromiseValue = false; }\n if (entity === null || entity === undefined)\n return undefined;\n // extract column value from embeddeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = __spreadArray([], __read(this.embeddedMetadata.parentPropertyNames));\n // next we need to access post[data][information][counters][this.propertyName] to get column value from the counters\n // this recursive function takes array of generated property names and gets the post[data][information][counters] embed\n var extractEmbeddedColumnValue_1 = function (propertyNames, value) {\n var propertyName = propertyNames.shift();\n if (propertyName) {\n if (value[propertyName]) {\n return extractEmbeddedColumnValue_1(propertyNames, value[propertyName]);\n }\n return undefined;\n }\n return value;\n };\n // once we get nested embed object we get its column, e.g. post[data][information][counters][this.propertyName]\n var embeddedObject = extractEmbeddedColumnValue_1(propertyNames, entity);\n if (this.isLazy) {\n if (embeddedObject[\"__\" + this.propertyName + \"__\"] !== undefined)\n return embeddedObject[\"__\" + this.propertyName + \"__\"];\n if (getLazyRelationsPromiseValue === true)\n return embeddedObject[this.propertyName];\n return undefined;\n }\n return embeddedObject ? embeddedObject[this.isLazy ? \"__\" + this.propertyName + \"__\" : this.propertyName] : undefined;\n }\n else { // no embeds - no problems. Simply return column name by property name of the entity\n if (this.isLazy) {\n if (entity[\"__\" + this.propertyName + \"__\"] !== undefined)\n return entity[\"__\" + this.propertyName + \"__\"];\n if (getLazyRelationsPromiseValue === true)\n return entity[this.propertyName];\n return undefined;\n }\n return entity[this.propertyName];\n }\n };\n /**\n * Sets given entity's relation's value.\n * Using of this method helps to set entity relation's value of the lazy and non-lazy relations.\n *\n * If merge is set to true, it merges given value into currently\n */\n RelationMetadata.prototype.setEntityValue = function (entity, value) {\n var propertyName = this.isLazy ? \"__\" + this.propertyName + \"__\" : this.propertyName;\n if (this.embeddedMetadata) {\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var extractEmbeddedColumnValue_2 = function (embeddedMetadatas, map) {\n // if (!object[embeddedMetadata.propertyName])\n // object[embeddedMetadata.propertyName] = embeddedMetadata.create();\n var embeddedMetadata = embeddedMetadatas.shift();\n if (embeddedMetadata) {\n if (!map[embeddedMetadata.propertyName])\n map[embeddedMetadata.propertyName] = embeddedMetadata.create();\n extractEmbeddedColumnValue_2(embeddedMetadatas, map[embeddedMetadata.propertyName]);\n return map;\n }\n map[propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_2(__spreadArray([], __read(this.embeddedMetadata.embeddedMetadataTree)), entity);\n }\n else {\n entity[propertyName] = value;\n }\n };\n /**\n * Creates entity id map from the given entity ids array.\n */\n RelationMetadata.prototype.createValueMap = function (value) {\n var _a;\n var _this = this;\n // extract column value from embeds of entity if column is in embedded\n if (this.embeddedMetadata) {\n // example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeddeds\n // we need to get value of \"id\" column from the post real entity object and return it in a\n // { data: { information: { counters: { id: ... } } } } format\n // first step - we extract all parent properties of the entity relative to this column, e.g. [data, information, counters]\n var propertyNames = __spreadArray([], __read(this.embeddedMetadata.parentPropertyNames));\n // now need to access post[data][information][counters] to get column value from the counters\n // and on each step we need to create complex literal object, e.g. first { data },\n // then { data: { information } }, then { data: { information: { counters } } },\n // then { data: { information: { counters: [this.propertyName]: entity[data][information][counters][this.propertyName] } } }\n // this recursive function helps doing that\n var extractEmbeddedColumnValue_3 = function (propertyNames, map) {\n var propertyName = propertyNames.shift();\n if (propertyName) {\n map[propertyName] = {};\n extractEmbeddedColumnValue_3(propertyNames, map[propertyName]);\n return map;\n }\n map[_this.propertyName] = value;\n return map;\n };\n return extractEmbeddedColumnValue_3(propertyNames, {});\n }\n else { // no embeds - no problems. Simply return column property name and its value of the entity\n return _a = {}, _a[this.propertyName] = value, _a;\n }\n };\n // ---------------------------------------------------------------------\n // Builder Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend relation metadata properties.\n * This builder method should be used only after embedded metadata tree was build.\n */\n RelationMetadata.prototype.build = function () {\n this.propertyPath = this.buildPropertyPath();\n };\n /**\n * Registers given foreign keys in the relation.\n * This builder method should be used to register foreign key in the relation.\n */\n RelationMetadata.prototype.registerForeignKeys = function () {\n var _a;\n var foreignKeys = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n foreignKeys[_i] = arguments[_i];\n }\n (_a = this.foreignKeys).push.apply(_a, __spreadArray([], __read(foreignKeys)));\n };\n /**\n * Registers given join columns in the relation.\n * This builder method should be used to register join column in the relation.\n */\n RelationMetadata.prototype.registerJoinColumns = function (joinColumns, inverseJoinColumns) {\n if (joinColumns === void 0) { joinColumns = []; }\n if (inverseJoinColumns === void 0) { inverseJoinColumns = []; }\n this.joinColumns = joinColumns;\n this.inverseJoinColumns = inverseJoinColumns;\n this.isOwning = this.isManyToOne || ((this.isManyToMany || this.isOneToOne) && this.joinColumns.length > 0);\n this.isOneToOneOwner = this.isOneToOne && this.isOwning;\n this.isOneToOneNotOwner = this.isOneToOne && !this.isOwning;\n this.isManyToManyOwner = this.isManyToMany && this.isOwning;\n this.isManyToManyNotOwner = this.isManyToMany && !this.isOwning;\n this.isWithJoinColumn = this.isManyToOne || this.isOneToOneOwner;\n };\n /**\n * Registers a given junction entity metadata.\n * This builder method can be called after junction entity metadata for the many-to-many relation was created.\n */\n RelationMetadata.prototype.registerJunctionEntityMetadata = function (junctionEntityMetadata) {\n this.junctionEntityMetadata = junctionEntityMetadata;\n this.joinTableName = junctionEntityMetadata.tableName;\n if (this.inverseRelation) {\n this.inverseRelation.junctionEntityMetadata = junctionEntityMetadata;\n this.joinTableName = junctionEntityMetadata.tableName;\n }\n };\n /**\n * Builds inverse side property path based on given inverse side property factory.\n * This builder method should be used only after properties map of the inverse entity metadata was build.\n */\n RelationMetadata.prototype.buildInverseSidePropertyPath = function () {\n if (this.givenInverseSidePropertyFactory) {\n var ownerEntityPropertiesMap = this.inverseEntityMetadata.propertiesMap;\n if (typeof this.givenInverseSidePropertyFactory === \"function\")\n return this.givenInverseSidePropertyFactory(ownerEntityPropertiesMap);\n if (typeof this.givenInverseSidePropertyFactory === \"string\")\n return this.givenInverseSidePropertyFactory;\n }\n else if (this.isTreeParent && this.entityMetadata.treeChildrenRelation) {\n return this.entityMetadata.treeChildrenRelation.propertyName;\n }\n else if (this.isTreeChildren && this.entityMetadata.treeParentRelation) {\n return this.entityMetadata.treeParentRelation.propertyName;\n }\n return \"\";\n };\n /**\n * Builds relation's property path based on its embedded tree.\n */\n RelationMetadata.prototype.buildPropertyPath = function () {\n if (!this.embeddedMetadata || !this.embeddedMetadata.parentPropertyNames.length)\n return this.propertyName;\n return this.embeddedMetadata.parentPropertyNames.join(\".\") + \".\" + this.propertyName;\n };\n return RelationMetadata;\n}());\nexport { RelationMetadata };\n\n//# sourceMappingURL=RelationMetadata.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\n/**\n * Contains all information about entity's embedded property.\n */\nvar EmbeddedMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function EmbeddedMetadata(options) {\n /**\n * Columns inside this embed.\n */\n this.columns = [];\n /**\n * Relations inside this embed.\n */\n this.relations = [];\n /**\n * Entity listeners inside this embed.\n */\n this.listeners = [];\n /**\n * Indices applied to the embed columns.\n */\n this.indices = [];\n /**\n * Uniques applied to the embed columns.\n */\n this.uniques = [];\n /**\n * Relation ids inside this embed.\n */\n this.relationIds = [];\n /**\n * Relation counts inside this embed.\n */\n this.relationCounts = [];\n /**\n * Nested embeddable in this embeddable (which has current embedded as parent embedded).\n */\n this.embeddeds = [];\n /**\n * Indicates if this embedded is in array mode.\n *\n * This option works only in mongodb.\n */\n this.isArray = false;\n /**\n * Returns array of property names of current embed and all its parent embeds.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * we need to get value of \"id\" column from the post real entity object.\n * this method will return [\"data\", \"information\", \"counters\"]\n */\n this.parentPropertyNames = [];\n /**\n * Returns array of prefixes of current embed and all its parent embeds.\n */\n this.parentPrefixes = [];\n /**\n * Returns embed metadatas from all levels of the parent tree.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters]\n */\n this.embeddedMetadataTree = [];\n /**\n * Embed metadatas from all levels of the parent tree.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters]\n */\n this.columnsFromTree = [];\n /**\n * Relations of this embed and all relations from its child embeds.\n */\n this.relationsFromTree = [];\n /**\n * Relations of this embed and all relations from its child embeds.\n */\n this.listenersFromTree = [];\n /**\n * Indices of this embed and all indices from its child embeds.\n */\n this.indicesFromTree = [];\n /**\n * Uniques of this embed and all uniques from its child embeds.\n */\n this.uniquesFromTree = [];\n /**\n * Relation ids of this embed and all relation ids from its child embeds.\n */\n this.relationIdsFromTree = [];\n /**\n * Relation counts of this embed and all relation counts from its child embeds.\n */\n this.relationCountsFromTree = [];\n this.entityMetadata = options.entityMetadata;\n this.type = options.args.type();\n this.propertyName = options.args.propertyName;\n this.customPrefix = options.args.prefix;\n this.isArray = options.args.isArray;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Creates a new embedded object.\n */\n EmbeddedMetadata.prototype.create = function () {\n return new this.type;\n };\n // ---------------------------------------------------------------------\n // Builder Methods\n // ---------------------------------------------------------------------\n EmbeddedMetadata.prototype.build = function (connection) {\n this.embeddeds.forEach(function (embedded) { return embedded.build(connection); });\n this.prefix = this.buildPrefix(connection);\n this.parentPropertyNames = this.buildParentPropertyNames();\n this.parentPrefixes = this.buildParentPrefixes();\n this.propertyPath = this.parentPropertyNames.join(\".\");\n this.embeddedMetadataTree = this.buildEmbeddedMetadataTree();\n this.columnsFromTree = this.buildColumnsFromTree();\n this.relationsFromTree = this.buildRelationsFromTree();\n this.listenersFromTree = this.buildListenersFromTree();\n this.indicesFromTree = this.buildIndicesFromTree();\n this.uniquesFromTree = this.buildUniquesFromTree();\n this.relationIdsFromTree = this.buildRelationIdsFromTree();\n this.relationCountsFromTree = this.buildRelationCountsFromTree();\n return this;\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n EmbeddedMetadata.prototype.buildPartialPrefix = function () {\n // if prefix option was not set or explicitly set to true - default prefix\n if (this.customPrefix === undefined || this.customPrefix === true) {\n return [this.propertyName];\n }\n // if prefix option was set to empty string or explicity set to false - disable prefix\n if (this.customPrefix === \"\" || this.customPrefix === false) {\n return [];\n }\n // use custom prefix\n if (typeof this.customPrefix === \"string\") {\n return [this.customPrefix];\n }\n throw new Error(\"Invalid prefix option given for \" + this.entityMetadata.targetName + \"#\" + this.propertyName);\n };\n EmbeddedMetadata.prototype.buildPrefix = function (connection) {\n if (connection.driver instanceof MongoDriver)\n return this.propertyName;\n var prefixes = [];\n if (this.parentEmbeddedMetadata)\n prefixes.push(this.parentEmbeddedMetadata.buildPrefix(connection));\n prefixes.push.apply(prefixes, __spreadArray([], __read(this.buildPartialPrefix())));\n return prefixes.join(\"_\"); // todo: use naming strategy instead of \"_\" !!!\n };\n EmbeddedMetadata.prototype.buildParentPropertyNames = function () {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPropertyNames().concat(this.propertyName) : [this.propertyName];\n };\n EmbeddedMetadata.prototype.buildParentPrefixes = function () {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPrefixes().concat(this.buildPartialPrefix()) : this.buildPartialPrefix();\n };\n EmbeddedMetadata.prototype.buildEmbeddedMetadataTree = function () {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildEmbeddedMetadataTree().concat(this) : [this];\n };\n EmbeddedMetadata.prototype.buildColumnsFromTree = function () {\n return this.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.buildColumnsFromTree()); }, this.columns);\n };\n EmbeddedMetadata.prototype.buildRelationsFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationsFromTree()); }, this.relations);\n };\n EmbeddedMetadata.prototype.buildListenersFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildListenersFromTree()); }, this.listeners);\n };\n EmbeddedMetadata.prototype.buildIndicesFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildIndicesFromTree()); }, this.indices);\n };\n EmbeddedMetadata.prototype.buildUniquesFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildUniquesFromTree()); }, this.uniques);\n };\n EmbeddedMetadata.prototype.buildRelationIdsFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationIdsFromTree()); }, this.relationIds);\n };\n EmbeddedMetadata.prototype.buildRelationCountsFromTree = function () {\n return this.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.buildRelationCountsFromTree()); }, this.relationCounts);\n };\n return EmbeddedMetadata;\n}());\nexport { EmbeddedMetadata };\n\n//# sourceMappingURL=EmbeddedMetadata.js.map\n","/**\n * Contains all information about entity's relation count.\n */\nvar RelationIdMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function RelationIdMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n this.target = options.args.target;\n this.propertyName = options.args.propertyName;\n this.relationNameOrFactory = options.args.relation;\n this.alias = options.args.alias;\n this.queryBuilderFactory = options.args.queryBuilderFactory;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Sets relation id value from the given entity.\n *\n * todo: make it to work in embeds as well.\n */\n RelationIdMetadata.prototype.setValue = function (entity) {\n var _this = this;\n var inverseEntity = this.relation.getEntityValue(entity);\n if (Array.isArray(inverseEntity)) {\n entity[this.propertyName] = inverseEntity.map(function (item) {\n return _this.relation.inverseEntityMetadata.getEntityIdMixedMap(item);\n }).filter(function (item) { return item !== null && item !== undefined; });\n }\n else {\n var value = this.relation.inverseEntityMetadata.getEntityIdMixedMap(inverseEntity);\n if (value !== undefined)\n entity[this.propertyName] = value;\n }\n };\n // ---------------------------------------------------------------------\n // Public Builder Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend relation id properties.\n * This builder method should be used only after entity metadata, its properties map and all relations are build.\n */\n RelationIdMetadata.prototype.build = function () {\n var propertyPath = this.relationNameOrFactory instanceof Function ? this.relationNameOrFactory(this.entityMetadata.propertiesMap) : this.relationNameOrFactory;\n var relation = this.entityMetadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(\"Cannot find relation \" + propertyPath + \". Wrong relation specified for @RelationId decorator.\");\n this.relation = relation;\n };\n return RelationIdMetadata;\n}());\nexport { RelationIdMetadata };\n\n//# sourceMappingURL=RelationIdMetadata.js.map\n","/**\n * Contains all information about entity's relation count.\n */\nvar RelationCountMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function RelationCountMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n this.target = options.args.target;\n this.propertyName = options.args.propertyName;\n this.relationNameOrFactory = options.args.relation;\n this.alias = options.args.alias;\n this.queryBuilderFactory = options.args.queryBuilderFactory;\n }\n // ---------------------------------------------------------------------\n // Public Builder Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend relation count metadata properties.\n * This builder method should be used only after entity metadata, its properties map and all relations are build.\n */\n RelationCountMetadata.prototype.build = function () {\n var propertyPath = this.relationNameOrFactory instanceof Function ? this.relationNameOrFactory(this.entityMetadata.propertiesMap) : this.relationNameOrFactory;\n var relation = this.entityMetadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(\"Cannot find relation \" + propertyPath + \". Wrong relation specified for @RelationCount decorator.\");\n this.relation = relation;\n };\n return RelationCountMetadata;\n}());\nexport { RelationCountMetadata };\n\n//# sourceMappingURL=RelationCountMetadata.js.map\n","/**\n * Provides a constants for each entity listener type.\n */\nvar EventListenerTypes = /** @class */ (function () {\n function EventListenerTypes() {\n }\n EventListenerTypes.AFTER_LOAD = \"after-load\";\n EventListenerTypes.BEFORE_INSERT = \"before-insert\";\n EventListenerTypes.AFTER_INSERT = \"after-insert\";\n EventListenerTypes.BEFORE_UPDATE = \"before-update\";\n EventListenerTypes.AFTER_UPDATE = \"after-update\";\n EventListenerTypes.BEFORE_REMOVE = \"before-remove\";\n EventListenerTypes.AFTER_REMOVE = \"after-remove\";\n return EventListenerTypes;\n}());\nexport { EventListenerTypes };\n\n//# sourceMappingURL=EventListenerTypes.js.map\n","/**\n * Metadata args utility functions.\n */\nvar MetadataUtils = /** @class */ (function () {\n function MetadataUtils() {\n }\n /**\n * Gets given's entity all inherited classes.\n * Gives in order from parents to children.\n * For example Post extends ContentModel which extends Unit it will give\n * [Unit, ContentModel, Post]\n */\n MetadataUtils.getInheritanceTree = function (entity) {\n var tree = [entity];\n var getPrototypeOf = function (object) {\n var proto = Object.getPrototypeOf(object);\n if (proto && proto.name) {\n tree.push(proto);\n getPrototypeOf(proto);\n }\n };\n getPrototypeOf(entity);\n return tree;\n };\n /**\n * Checks if this table is inherited from another table.\n */\n MetadataUtils.isInherited = function (target1, target2) {\n return target1.prototype instanceof target2;\n };\n /**\n * Filters given array of targets by a given classes.\n * If classes are not given, then it returns array itself.\n */\n MetadataUtils.filterByTarget = function (array, classes) {\n if (!classes)\n return array;\n return array.filter(function (item) { return item.target && classes.indexOf(item.target) !== -1; });\n };\n return MetadataUtils;\n}());\nexport { MetadataUtils };\n\n//# sourceMappingURL=MetadataUtils.js.map\n","/**\n * Contains all information about entity's foreign key.\n */\nvar ForeignKeyMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ForeignKeyMetadata(options) {\n /**\n * Array of columns of this foreign key.\n */\n this.columns = [];\n /**\n * Array of referenced columns.\n */\n this.referencedColumns = [];\n /**\n * Gets array of column names.\n */\n this.columnNames = [];\n /**\n * Gets array of referenced column names.\n */\n this.referencedColumnNames = [];\n this.entityMetadata = options.entityMetadata;\n this.referencedEntityMetadata = options.referencedEntityMetadata;\n this.columns = options.columns;\n this.referencedColumns = options.referencedColumns;\n this.onDelete = options.onDelete || \"NO ACTION\";\n this.onUpdate = options.onUpdate || \"NO ACTION\";\n this.deferrable = options.deferrable;\n if (options.namingStrategy)\n this.build(options.namingStrategy);\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend foreign key properties.\n * Must be called after all entity metadatas and their columns are built.\n */\n ForeignKeyMetadata.prototype.build = function (namingStrategy) {\n this.columnNames = this.columns.map(function (column) { return column.databaseName; });\n this.referencedColumnNames = this.referencedColumns.map(function (column) { return column.databaseName; });\n this.referencedTablePath = this.referencedEntityMetadata.tablePath;\n this.name = namingStrategy.foreignKeyName(this.entityMetadata.tablePath, this.columnNames, this.referencedTablePath, this.referencedColumnNames);\n };\n return ForeignKeyMetadata;\n}());\nexport { ForeignKeyMetadata };\n\n//# sourceMappingURL=ForeignKeyMetadata.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\";\nimport { IndexMetadata } from \"../metadata/IndexMetadata\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\n/**\n * Creates EntityMetadata for junction tables.\n * Junction tables are tables generated by many-to-many relations.\n */\nvar JunctionEntityMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function JunctionEntityMetadataBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds EntityMetadata for the junction of the given many-to-many relation.\n */\n JunctionEntityMetadataBuilder.prototype.build = function (relation, joinTable) {\n var _this = this;\n var referencedColumns = this.collectReferencedColumns(relation, joinTable);\n var inverseReferencedColumns = this.collectInverseReferencedColumns(relation, joinTable);\n var joinTableName = joinTable.name || this.connection.namingStrategy.joinTableName(relation.entityMetadata.tableNameWithoutPrefix, relation.inverseEntityMetadata.tableNameWithoutPrefix, relation.propertyPath, relation.inverseRelation ? relation.inverseRelation.propertyName : \"\");\n var entityMetadata = new EntityMetadata({\n connection: this.connection,\n args: {\n target: \"\",\n name: joinTableName,\n type: \"junction\",\n database: joinTable.database || relation.entityMetadata.database,\n schema: joinTable.schema || relation.entityMetadata.schema,\n }\n });\n entityMetadata.build();\n // create original side junction columns\n var junctionColumns = referencedColumns.map(function (referencedColumn) {\n var joinColumn = joinTable.joinColumns ? joinTable.joinColumns.find(function (joinColumnArgs) {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === referencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n var columnName = joinColumn && joinColumn.name ? joinColumn.name\n : _this.connection.namingStrategy.joinTableColumnName(relation.entityMetadata.tableNameWithoutPrefix, referencedColumn.propertyName, referencedColumn.databaseName);\n return new ColumnMetadata({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: referencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n name: columnName,\n length: !referencedColumn.length\n && (_this.connection.driver instanceof MysqlDriver || _this.connection.driver instanceof AuroraDataApiDriver)\n && (referencedColumn.generationStrategy === \"uuid\" || referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length,\n width: referencedColumn.width,\n type: referencedColumn.type,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.zerofill ? true : referencedColumn.unsigned,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n // create inverse side junction columns\n var inverseJunctionColumns = inverseReferencedColumns.map(function (inverseReferencedColumn) {\n var joinColumn = joinTable.inverseJoinColumns ? joinTable.inverseJoinColumns.find(function (joinColumnArgs) {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === inverseReferencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n var columnName = joinColumn && joinColumn.name ? joinColumn.name\n : _this.connection.namingStrategy.joinTableInverseColumnName(relation.inverseEntityMetadata.tableNameWithoutPrefix, inverseReferencedColumn.propertyName, inverseReferencedColumn.databaseName);\n return new ColumnMetadata({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: inverseReferencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n length: !inverseReferencedColumn.length\n && (_this.connection.driver instanceof MysqlDriver || _this.connection.driver instanceof AuroraDataApiDriver)\n && (inverseReferencedColumn.generationStrategy === \"uuid\" || inverseReferencedColumn.type === \"uuid\")\n ? \"36\"\n : inverseReferencedColumn.length,\n width: inverseReferencedColumn.width,\n type: inverseReferencedColumn.type,\n precision: inverseReferencedColumn.precision,\n scale: inverseReferencedColumn.scale,\n charset: inverseReferencedColumn.charset,\n collation: inverseReferencedColumn.collation,\n zerofill: inverseReferencedColumn.zerofill,\n unsigned: inverseReferencedColumn.zerofill ? true : inverseReferencedColumn.unsigned,\n enum: inverseReferencedColumn.enum,\n enumName: inverseReferencedColumn.enumName,\n name: columnName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n this.changeDuplicatedColumnNames(junctionColumns, inverseJunctionColumns);\n // set junction table columns\n entityMetadata.ownerColumns = junctionColumns;\n entityMetadata.inverseColumns = inverseJunctionColumns;\n entityMetadata.ownColumns = __spreadArray(__spreadArray([], __read(junctionColumns)), __read(inverseJunctionColumns));\n entityMetadata.ownColumns.forEach(function (column) { return column.relationMetadata = relation; });\n // create junction table foreign keys\n entityMetadata.foreignKeys = relation.createForeignKeyConstraints ? [\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.entityMetadata,\n columns: junctionColumns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete || \"CASCADE\"\n }),\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n columns: inverseJunctionColumns,\n referencedColumns: inverseReferencedColumns,\n onDelete: relation.onDelete || \"CASCADE\"\n }),\n ] : [];\n // create junction table indices\n entityMetadata.ownIndices = [\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: junctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n }),\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: inverseJunctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n })\n ];\n // finally return entity metadata\n return entityMetadata;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Collects referenced columns from the given join column args.\n */\n JunctionEntityMetadataBuilder.prototype.collectReferencedColumns = function (relation, joinTable) {\n var hasAnyReferencedColumnName = joinTable.joinColumns ? joinTable.joinColumns.find(function (joinColumn) { return !!joinColumn.referencedColumnName; }) : false;\n if (!joinTable.joinColumns || (joinTable.joinColumns && !hasAnyReferencedColumnName)) {\n return relation.entityMetadata.columns.filter(function (column) { return column.isPrimary; });\n }\n else {\n return joinTable.joinColumns.map(function (joinColumn) {\n var referencedColumn = relation.entityMetadata.columns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; });\n if (!referencedColumn)\n throw new Error(\"Referenced column \" + joinColumn.referencedColumnName + \" was not found in entity \" + relation.entityMetadata.name);\n return referencedColumn;\n });\n }\n };\n /**\n * Collects inverse referenced columns from the given join column args.\n */\n JunctionEntityMetadataBuilder.prototype.collectInverseReferencedColumns = function (relation, joinTable) {\n var hasInverseJoinColumns = !!joinTable.inverseJoinColumns;\n var hasAnyInverseReferencedColumnName = hasInverseJoinColumns ? joinTable.inverseJoinColumns.find(function (joinColumn) { return !!joinColumn.referencedColumnName; }) : false;\n if (!hasInverseJoinColumns || (hasInverseJoinColumns && !hasAnyInverseReferencedColumnName)) {\n return relation.inverseEntityMetadata.primaryColumns;\n }\n else {\n return joinTable.inverseJoinColumns.map(function (joinColumn) {\n var referencedColumn = relation.inverseEntityMetadata.ownColumns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; });\n if (!referencedColumn)\n throw new Error(\"Referenced column \" + joinColumn.referencedColumnName + \" was not found in entity \" + relation.inverseEntityMetadata.name);\n return referencedColumn;\n });\n }\n };\n JunctionEntityMetadataBuilder.prototype.changeDuplicatedColumnNames = function (junctionColumns, inverseJunctionColumns) {\n var _this = this;\n junctionColumns.forEach(function (junctionColumn) {\n inverseJunctionColumns.forEach(function (inverseJunctionColumn) {\n if (junctionColumn.givenDatabaseName === inverseJunctionColumn.givenDatabaseName) {\n var junctionColumnName = _this.connection.namingStrategy.joinTableColumnDuplicationPrefix(junctionColumn.propertyName, 1);\n junctionColumn.propertyName = junctionColumnName;\n junctionColumn.givenDatabaseName = junctionColumnName;\n var inverseJunctionColumnName = _this.connection.namingStrategy.joinTableColumnDuplicationPrefix(inverseJunctionColumn.propertyName, 2);\n inverseJunctionColumn.propertyName = inverseJunctionColumnName;\n inverseJunctionColumn.givenDatabaseName = inverseJunctionColumnName;\n }\n });\n });\n };\n return JunctionEntityMetadataBuilder;\n}());\nexport { JunctionEntityMetadataBuilder };\n\n//# sourceMappingURL=JunctionEntityMetadataBuilder.js.map\n","import { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\";\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\";\nimport { IndexMetadata } from \"../metadata/IndexMetadata\";\n/**\n * Creates EntityMetadata for junction tables of the closure entities.\n * Closure junction tables are tables generated by closure entities.\n */\nvar ClosureJunctionEntityMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ClosureJunctionEntityMetadataBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds EntityMetadata for the closure junction of the given closure entity.\n */\n ClosureJunctionEntityMetadataBuilder.prototype.build = function (parentClosureEntityMetadata) {\n var _this = this;\n // create entity metadata itself\n var entityMetadata = new EntityMetadata({\n parentClosureEntityMetadata: parentClosureEntityMetadata,\n connection: this.connection,\n args: {\n target: \"\",\n name: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.closureTableName ? parentClosureEntityMetadata.treeOptions.closureTableName : parentClosureEntityMetadata.tableNameWithoutPrefix,\n type: \"closure-junction\"\n }\n });\n entityMetadata.build();\n // create ancestor and descendant columns for new closure junction table\n parentClosureEntityMetadata.primaryColumns.forEach(function (primaryColumn) {\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n closureType: \"ancestor\",\n referencedColumn: primaryColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.ancestorColumnName ? parentClosureEntityMetadata.treeOptions.ancestorColumnName(primaryColumn) : primaryColumn.propertyName + \"_ancestor\",\n options: {\n primary: true,\n length: primaryColumn.length,\n type: primaryColumn.type\n }\n }\n }));\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: _this.connection,\n entityMetadata: entityMetadata,\n closureType: \"descendant\",\n referencedColumn: primaryColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: parentClosureEntityMetadata.treeOptions && parentClosureEntityMetadata.treeOptions.descendantColumnName ? parentClosureEntityMetadata.treeOptions.descendantColumnName(primaryColumn) : primaryColumn.propertyName + \"_descendant\",\n options: {\n primary: true,\n length: primaryColumn.length,\n type: primaryColumn.type,\n }\n }\n }));\n });\n entityMetadata.ownIndices = [\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.ownColumns[0]],\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n }),\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.ownColumns[1]],\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n })\n ];\n // if tree level column was defined by a closure entity then add it to the junction columns as well\n if (parentClosureEntityMetadata.treeLevelColumn) {\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: \"level\",\n options: {\n type: this.connection.driver.mappedDataTypes.treeLevel,\n }\n }\n }));\n }\n // create junction table foreign keys\n entityMetadata.foreignKeys = [\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: parentClosureEntityMetadata,\n columns: [entityMetadata.ownColumns[0]],\n referencedColumns: parentClosureEntityMetadata.primaryColumns,\n // onDelete: \"CASCADE\" // todo: does not work in mssql for some reason\n }),\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: parentClosureEntityMetadata,\n columns: [entityMetadata.ownColumns[1]],\n referencedColumns: parentClosureEntityMetadata.primaryColumns,\n // onDelete: \"CASCADE\" // todo: does not work in mssql for some reason\n }),\n ];\n return entityMetadata;\n };\n return ClosureJunctionEntityMetadataBuilder;\n}());\nexport { ClosureJunctionEntityMetadataBuilder };\n\n//# sourceMappingURL=ClosureJunctionEntityMetadataBuilder.js.map\n","/**\n * Unique metadata contains all information about table's unique constraints.\n */\nvar UniqueMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function UniqueMetadata(options) {\n /**\n * Unique columns.\n */\n this.columns = [];\n /**\n * Map of column names with order set.\n * Used only by MongoDB driver.\n */\n this.columnNamesWithOrderingMap = {};\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n if (options.columns)\n this.columns = options.columns;\n if (options.args) {\n this.target = options.args.target;\n this.givenName = options.args.name;\n this.givenColumnNames = options.args.columns;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend unique constraint properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n UniqueMetadata.prototype.build = function (namingStrategy) {\n var _this = this;\n var map = {};\n // if columns already an array of string then simply return it\n if (this.givenColumnNames) {\n var columnPropertyPaths = [];\n if (Array.isArray(this.givenColumnNames)) {\n columnPropertyPaths = this.givenColumnNames.map(function (columnName) {\n if (_this.embeddedMetadata)\n return _this.embeddedMetadata.propertyPath + \".\" + columnName;\n return columnName;\n });\n columnPropertyPaths.forEach(function (propertyPath) { return map[propertyPath] = 1; });\n }\n else {\n // if columns is a function that returns array of field names then execute it and get columns names from it\n var columnsFnResult_1 = this.givenColumnNames(this.entityMetadata.propertiesMap);\n if (Array.isArray(columnsFnResult_1)) {\n columnPropertyPaths = columnsFnResult_1.map(function (i) { return String(i); });\n columnPropertyPaths.forEach(function (name) { return map[name] = 1; });\n }\n else {\n columnPropertyPaths = Object.keys(columnsFnResult_1).map(function (i) { return String(i); });\n Object.keys(columnsFnResult_1).forEach(function (columnName) { return map[columnName] = columnsFnResult_1[columnName]; });\n }\n }\n this.columns = columnPropertyPaths.map(function (propertyName) {\n var columnWithSameName = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === propertyName; });\n if (columnWithSameName) {\n return [columnWithSameName];\n }\n var relationWithSameName = _this.entityMetadata.relations.find(function (relation) { return relation.isWithJoinColumn && relation.propertyName === propertyName; });\n if (relationWithSameName) {\n return relationWithSameName.joinColumns;\n }\n var indexName = _this.givenName ? \"\\\"\" + _this.givenName + \"\\\" \" : \"\";\n var entityName = _this.entityMetadata.targetName;\n throw new Error(\"Unique constraint \" + indexName + \"contains column that is missing in the entity (\" + entityName + \"): \" + propertyName);\n })\n .reduce(function (a, b) { return a.concat(b); });\n }\n this.columnNamesWithOrderingMap = Object.keys(map).reduce(function (updatedMap, key) {\n var column = _this.entityMetadata.columns.find(function (column) { return column.propertyPath === key; });\n if (column)\n updatedMap[column.databasePath] = map[key];\n return updatedMap;\n }, {});\n this.name = this.givenName ? this.givenName : namingStrategy.uniqueConstraintName(this.entityMetadata.tablePath, this.columns.map(function (column) { return column.databaseName; }));\n return this;\n };\n return UniqueMetadata;\n}());\nexport { UniqueMetadata };\n\n//# sourceMappingURL=UniqueMetadata.js.map\n","import { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\";\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\";\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\n/**\n * Builds join column for the many-to-one and one-to-one owner relations.\n *\n * Cases it should cover:\n * 1. when join column is set with custom name and without referenced column name\n * we need automatically set referenced column name - primary ids by default\n * @JoinColumn({ name: \"custom_name\" })\n *\n * 2. when join column is set with only referenced column name\n * we need automatically set join column name - relation name + referenced column name\n * @JoinColumn({ referencedColumnName: \"title\" })\n *\n * 3. when join column is set without both referenced column name and join column name\n * we need to automatically set both of them\n * @JoinColumn()\n *\n * 4. when join column is not set at all (as in case of @ManyToOne relation)\n * we need to create join column for it with proper referenced column name and join column name\n *\n * 5. when multiple join columns set none of referencedColumnName and name can be optional\n * both options are required\n * @JoinColumn([\n * { name: \"category_title\", referencedColumnName: \"type\" },\n * { name: \"category_title\", referencedColumnName: \"name\" },\n * ])\n *\n * Since for many-to-one relations having JoinColumn decorator is not required,\n * we need to go thought each many-to-one relation without join column decorator set\n * and create join column metadata args for them.\n */\nvar RelationJoinColumnBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationJoinColumnBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds a foreign key of the many-to-one or one-to-one owner relations.\n */\n RelationJoinColumnBuilder.prototype.build = function (joinColumns, relation) {\n var referencedColumns = this.collectReferencedColumns(joinColumns, relation);\n var columns = this.collectColumns(joinColumns, relation, referencedColumns);\n if (!referencedColumns.length || !relation.createForeignKeyConstraints)\n return { foreignKey: undefined, columns: columns, uniqueConstraint: undefined }; // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false\n var foreignKey = new ForeignKeyMetadata({\n entityMetadata: relation.entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n namingStrategy: this.connection.namingStrategy,\n columns: columns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete,\n onUpdate: relation.onUpdate,\n deferrable: relation.deferrable,\n });\n // Oracle does not allow both primary and unique constraints on the same column\n if (this.connection.driver instanceof OracleDriver && columns.every(function (column) { return column.isPrimary; }))\n return { foreignKey: foreignKey, columns: columns, uniqueConstraint: undefined };\n // CockroachDB requires UNIQUE constraints on referenced columns\n if (referencedColumns.length > 0 && relation.isOneToOne) {\n var uniqueConstraint = new UniqueMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n name: this.connection.namingStrategy.relationConstraintName(relation.entityMetadata.tablePath, foreignKey.columns.map(function (c) { return c.databaseName; })),\n target: relation.entityMetadata.target,\n }\n });\n uniqueConstraint.build(this.connection.namingStrategy);\n return { foreignKey: foreignKey, columns: columns, uniqueConstraint: uniqueConstraint };\n }\n return { foreignKey: foreignKey, columns: columns, uniqueConstraint: undefined };\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Collects referenced columns from the given join column args.\n */\n RelationJoinColumnBuilder.prototype.collectReferencedColumns = function (joinColumns, relation) {\n var hasAnyReferencedColumnName = joinColumns.find(function (joinColumnArgs) { return !!joinColumnArgs.referencedColumnName; });\n var manyToOneWithoutJoinColumn = joinColumns.length === 0 && relation.isManyToOne;\n var hasJoinColumnWithoutAnyReferencedColumnName = joinColumns.length > 0 && !hasAnyReferencedColumnName;\n if (manyToOneWithoutJoinColumn || hasJoinColumnWithoutAnyReferencedColumnName) { // covers case3 and case1\n return relation.inverseEntityMetadata.primaryColumns;\n }\n else { // cases with referenced columns defined\n return joinColumns.map(function (joinColumn) {\n var referencedColumn = relation.inverseEntityMetadata.ownColumns.find(function (column) { return column.propertyName === joinColumn.referencedColumnName; }); // todo: can we also search in relations?\n if (!referencedColumn)\n throw new Error(\"Referenced column \" + joinColumn.referencedColumnName + \" was not found in entity \" + relation.inverseEntityMetadata.name);\n return referencedColumn;\n });\n }\n };\n /**\n * Collects columns from the given join column args.\n */\n RelationJoinColumnBuilder.prototype.collectColumns = function (joinColumns, relation, referencedColumns) {\n var _this = this;\n return referencedColumns.map(function (referencedColumn) {\n // in the case if relation has join column with only name set we need this check\n var joinColumnMetadataArg = joinColumns.find(function (joinColumn) {\n return (!joinColumn.referencedColumnName || joinColumn.referencedColumnName === referencedColumn.propertyName) &&\n !!joinColumn.name;\n });\n var joinColumnName = joinColumnMetadataArg ? joinColumnMetadataArg.name : _this.connection.namingStrategy.joinColumnName(relation.propertyName, referencedColumn.propertyName);\n var relationalColumn = relation.entityMetadata.ownColumns.find(function (column) { return column.databaseName === joinColumnName; });\n if (!relationalColumn) {\n relationalColumn = new ColumnMetadata({\n connection: _this.connection,\n entityMetadata: relation.entityMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: relation.propertyName,\n options: {\n name: joinColumnName,\n type: referencedColumn.type,\n length: !referencedColumn.length\n && (_this.connection.driver instanceof MysqlDriver || _this.connection.driver instanceof AuroraDataApiDriver)\n && (referencedColumn.generationStrategy === \"uuid\" || referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length,\n width: referencedColumn.width,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.unsigned,\n comment: referencedColumn.comment,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n primary: relation.isPrimary,\n nullable: relation.isNullable,\n }\n }\n });\n relation.entityMetadata.registerColumn(relationalColumn);\n }\n relationalColumn.referencedColumn = referencedColumn; // its important to set it here because we need to set referenced column for user defined join column\n relationalColumn.type = referencedColumn.type; // also since types of relational column and join column must be equal we override user defined column type\n relationalColumn.relationMetadata = relation;\n relationalColumn.build(_this.connection);\n return relationalColumn;\n });\n };\n return RelationJoinColumnBuilder;\n}());\nexport { RelationJoinColumnBuilder };\n\n//# sourceMappingURL=RelationJoinColumnBuilder.js.map\n","/**\n * This metadata contains all information about entity's listeners.\n */\nvar EntityListenerMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function EntityListenerMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n this.embeddedMetadata = options.embeddedMetadata;\n this.target = options.args.target;\n this.propertyName = options.args.propertyName;\n this.type = options.args.type;\n }\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n /**\n * Checks if entity listener is allowed to be executed on the given entity.\n */\n EntityListenerMetadata.prototype.isAllowed = function (entity) {\n return this.entityMetadata.target === entity.constructor || // todo: .constructor won't work for entity schemas, but there are no entity listeners in schemas since there are no objects, right?\n (this.entityMetadata.target instanceof Function && entity.constructor.prototype instanceof this.entityMetadata.target); // todo: also need to implement entity schema inheritance\n };\n /**\n * Executes listener method of the given entity.\n */\n EntityListenerMetadata.prototype.execute = function (entity) {\n if (!this.embeddedMetadata)\n return entity[this.propertyName]();\n this.callEntityEmbeddedMethod(entity, this.embeddedMetadata.propertyPath.split(\".\"));\n };\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n /**\n * Calls embedded entity listener method no matter how nested it is.\n */\n EntityListenerMetadata.prototype.callEntityEmbeddedMethod = function (entity, propertyPaths) {\n var propertyPath = propertyPaths.shift();\n if (!propertyPath || !entity[propertyPath])\n return;\n if (propertyPaths.length === 0) {\n entity[propertyPath][this.propertyName]();\n }\n else {\n if (entity[propertyPath])\n this.callEntityEmbeddedMethod(entity[propertyPath], propertyPaths);\n }\n };\n return EntityListenerMetadata;\n}());\nexport { EntityListenerMetadata };\n\n//# sourceMappingURL=EntityListenerMetadata.js.map\n","/**\n * Check metadata contains all information about table's check constraints.\n */\nvar CheckMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function CheckMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n if (options.args) {\n this.target = options.args.target;\n this.expression = options.args.expression;\n this.givenName = options.args.name;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend check constraint properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n CheckMetadata.prototype.build = function (namingStrategy) {\n this.name = this.givenName ? this.givenName : namingStrategy.checkConstraintName(this.entityMetadata.tablePath, this.expression);\n return this;\n };\n return CheckMetadata;\n}());\nexport { CheckMetadata };\n\n//# sourceMappingURL=CheckMetadata.js.map\n","/**\n * Exclusion metadata contains all information about table's exclusion constraints.\n */\nvar ExclusionMetadata = /** @class */ (function () {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n function ExclusionMetadata(options) {\n this.entityMetadata = options.entityMetadata;\n if (options.args) {\n this.target = options.args.target;\n this.expression = options.args.expression;\n this.givenName = options.args.name;\n }\n }\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n /**\n * Builds some depend exclusion constraint properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n ExclusionMetadata.prototype.build = function (namingStrategy) {\n this.name = this.givenName ? this.givenName : namingStrategy.exclusionConstraintName(this.entityMetadata.tablePath, this.expression);\n return this;\n };\n return ExclusionMetadata;\n}());\nexport { ExclusionMetadata };\n\n//# sourceMappingURL=ExclusionMetadata.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { SapDriver } from \"../driver/sap/SapDriver\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\";\nimport { IndexMetadata } from \"../metadata/IndexMetadata\";\nimport { RelationMetadata } from \"../metadata/RelationMetadata\";\nimport { EmbeddedMetadata } from \"../metadata/EmbeddedMetadata\";\nimport { RelationIdMetadata } from \"../metadata/RelationIdMetadata\";\nimport { RelationCountMetadata } from \"../metadata/RelationCountMetadata\";\nimport { EventListenerTypes } from \"../metadata/types/EventListenerTypes\";\nimport { MetadataUtils } from \"./MetadataUtils\";\nimport { JunctionEntityMetadataBuilder } from \"./JunctionEntityMetadataBuilder\";\nimport { ClosureJunctionEntityMetadataBuilder } from \"./ClosureJunctionEntityMetadataBuilder\";\nimport { RelationJoinColumnBuilder } from \"./RelationJoinColumnBuilder\";\nimport { EntityListenerMetadata } from \"../metadata/EntityListenerMetadata\";\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { CheckMetadata } from \"../metadata/CheckMetadata\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { ExclusionMetadata } from \"../metadata/ExclusionMetadata\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nvar EntityMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function EntityMetadataBuilder(connection, metadataArgsStorage) {\n this.connection = connection;\n this.metadataArgsStorage = metadataArgsStorage;\n this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(connection);\n this.closureJunctionEntityMetadataBuilder = new ClosureJunctionEntityMetadataBuilder(connection);\n this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(connection);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds a complete entity metadatas for the given entity classes.\n */\n EntityMetadataBuilder.prototype.build = function (entityClasses) {\n var _this = this;\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n var allTables = entityClasses ? this.metadataArgsStorage.filterTables(entityClasses) : this.metadataArgsStorage.tables;\n // filter out table metadata args for those we really create entity metadatas and tables in the db\n var realTables = allTables.filter(function (table) { return table.type === \"regular\" || table.type === \"closure\" || table.type === \"entity-child\" || table.type === \"view\"; });\n // create entity metadatas for a user defined entities (marked with @Entity decorator or loaded from entity schemas)\n var entityMetadatas = realTables.map(function (tableArgs) { return _this.createEntityMetadata(tableArgs); });\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach(function (entityMetadata) { return _this.computeParentEntityMetadata(entityMetadatas, entityMetadata); });\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach(function (metadata) {\n metadata.childEntityMetadatas = entityMetadatas.filter(function (childMetadata) {\n return metadata.target instanceof Function\n && childMetadata.target instanceof Function\n && MetadataUtils.isInherited(childMetadata.target, metadata.target);\n });\n });\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType !== \"entity-child\"; })\n .forEach(function (entityMetadata) { return entityMetadata.build(); });\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType === \"entity-child\"; })\n .forEach(function (entityMetadata) { return entityMetadata.build(); });\n // compute entity metadata columns, relations, etc. first for the regular, non-single-table-inherited entity metadatas\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType !== \"entity-child\"; })\n .forEach(function (entityMetadata) { return _this.computeEntityMetadataStep1(entityMetadatas, entityMetadata); });\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType === \"entity-child\"; })\n .forEach(function (entityMetadata) { return _this.computeEntityMetadataStep1(entityMetadatas, entityMetadata); });\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach(function (entityMetadata) { return _this.computeEntityMetadataStep2(entityMetadata); });\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach(function (entityMetadata) { return _this.computeInverseProperties(entityMetadata, entityMetadatas); });\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(function (entityMetadata) { return entityMetadata.tableType !== \"entity-child\"; })\n .forEach(function (entityMetadata) {\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations.filter(function (relation) { return relation.isOneToOne || relation.isManyToOne; }).forEach(function (relation) {\n var joinColumns = _this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);\n var _a = _this.relationJoinColumnBuilder.build(joinColumns, relation), foreignKey = _a.foreignKey, columns = _a.columns, uniqueConstraint = _a.uniqueConstraint; // create a foreign key based on its metadata args\n if (foreignKey) {\n relation.registerForeignKeys(foreignKey); // push it to the relation and thus register there a join column\n entityMetadata.foreignKeys.push(foreignKey);\n }\n if (columns) {\n relation.registerJoinColumns(columns);\n }\n if (uniqueConstraint) {\n if (_this.connection.driver instanceof MysqlDriver || _this.connection.driver instanceof AuroraDataApiDriver\n || _this.connection.driver instanceof SqlServerDriver || _this.connection.driver instanceof SapDriver) {\n var index = new IndexMetadata({\n entityMetadata: uniqueConstraint.entityMetadata,\n columns: uniqueConstraint.columns,\n args: {\n target: uniqueConstraint.target,\n name: uniqueConstraint.name,\n unique: true,\n synchronize: true\n }\n });\n if (_this.connection.driver instanceof SqlServerDriver) {\n index.where = index.columns.map(function (column) {\n return _this.connection.driver.escape(column.databaseName) + \" IS NOT NULL\";\n }).join(\" AND \");\n }\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n }\n else {\n relation.entityMetadata.ownIndices.push(index);\n }\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(uniqueConstraint);\n }\n else {\n relation.entityMetadata.ownUniques.push(uniqueConstraint);\n }\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n }\n if (foreignKey && _this.connection.driver instanceof CockroachDriver) {\n var index = new IndexMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n target: relation.entityMetadata.target,\n synchronize: true\n }\n });\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n }\n else {\n relation.entityMetadata.ownIndices.push(index);\n }\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n // create junction entity metadatas for entity many-to-many relations\n entityMetadata.relations.filter(function (relation) { return relation.isManyToMany; }).forEach(function (relation) {\n var joinTable = _this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName);\n if (!joinTable)\n return; // no join table set - no need to do anything (it means this is many-to-many inverse side)\n // here we create a junction entity metadata for a new junction table of many-to-many relation\n var junctionEntityMetadata = _this.junctionEntityMetadataBuilder.build(relation, joinTable);\n relation.registerForeignKeys.apply(relation, __spreadArray([], __read(junctionEntityMetadata.foreignKeys)));\n relation.registerJoinColumns(junctionEntityMetadata.ownIndices[0].columns, junctionEntityMetadata.ownIndices[1].columns);\n relation.registerJunctionEntityMetadata(junctionEntityMetadata);\n // compute new entity metadata properties and push it to entity metadatas pool\n _this.computeEntityMetadataStep2(junctionEntityMetadata);\n _this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(junctionEntityMetadata);\n });\n });\n // update entity metadata depend properties\n entityMetadatas\n .forEach(function (entityMetadata) {\n entityMetadata.relationsWithJoinColumns = entityMetadata.relations.filter(function (relation) { return relation.isWithJoinColumn; });\n entityMetadata.hasNonNullableRelations = entityMetadata.relationsWithJoinColumns.some(function (relation) { return !relation.isNullable || relation.isPrimary; });\n });\n // generate closure junction tables for all closure tables\n entityMetadatas\n .filter(function (metadata) { return metadata.treeType === \"closure-table\"; })\n .forEach(function (entityMetadata) {\n var closureJunctionEntityMetadata = _this.closureJunctionEntityMetadataBuilder.build(entityMetadata);\n entityMetadata.closureJunctionTable = closureJunctionEntityMetadata;\n _this.computeEntityMetadataStep2(closureJunctionEntityMetadata);\n _this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(closureJunctionEntityMetadata);\n });\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(function (metadata) { return metadata.inheritancePattern === \"STI\" && metadata.discriminatorColumn; })\n .forEach(function (entityMetadata) { return _this.createKeysForTableInheritance(entityMetadata); });\n // build all indices (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.indices.forEach(function (index) { return index.build(_this.connection.namingStrategy); });\n });\n // build all unique constraints (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.uniques.forEach(function (unique) { return unique.build(_this.connection.namingStrategy); });\n });\n // build all check constraints\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.checks.forEach(function (check) { return check.build(_this.connection.namingStrategy); });\n });\n // build all exclusion constraints\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.exclusions.forEach(function (exclusion) { return exclusion.build(_this.connection.namingStrategy); });\n });\n // add lazy initializer for entity relations\n entityMetadatas\n .filter(function (metadata) { return metadata.target instanceof Function; })\n .forEach(function (entityMetadata) {\n entityMetadata.relations\n .filter(function (relation) { return relation.isLazy; })\n .forEach(function (relation) {\n _this.connection.relationLoader.enableLazyLoad(relation, entityMetadata.target.prototype);\n });\n });\n entityMetadatas.forEach(function (entityMetadata) {\n entityMetadata.columns.forEach(function (column) {\n // const target = column.embeddedMetadata ? column.embeddedMetadata.type : column.target;\n var generated = _this.metadataArgsStorage.findGenerated(column.target, column.propertyName);\n if (generated) {\n column.isGenerated = true;\n column.generationStrategy = generated.strategy;\n if (generated.strategy === \"uuid\") {\n column.type = \"uuid\";\n }\n else if (generated.strategy === \"rowid\") {\n column.type = \"int\";\n }\n else {\n column.type = column.type || Number;\n }\n column.build(_this.connection);\n _this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n });\n return entityMetadatas;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates entity metadata from the given table args.\n * Creates column, relation, etc. metadatas for everything this entity metadata owns.\n */\n EntityMetadataBuilder.prototype.createEntityMetadata = function (tableArgs) {\n // we take all \"inheritance tree\" from a target entity to collect all stored metadata args\n // (by decorators or inside entity schemas). For example for target Post < ContentModel < Unit\n // it will be an array of [Post, ContentModel, Unit] and we can then get all metadata args of those classes\n var inheritanceTree = tableArgs.target instanceof Function\n ? MetadataUtils.getInheritanceTree(tableArgs.target)\n : [tableArgs.target]; // todo: implement later here inheritance for string-targets\n var tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);\n var tableTree = this.metadataArgsStorage.findTree(tableArgs.target);\n // if single table inheritance used, we need to copy all children columns in to parent table\n var singleTableChildrenTargets;\n if ((tableInheritance && tableInheritance.pattern === \"STI\") || tableArgs.type === \"entity-child\") {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map(function (args) { return args.target; })\n .filter(function (target) { return target instanceof Function; });\n inheritanceTree.push.apply(inheritanceTree, __spreadArray([], __read(singleTableChildrenTargets)));\n }\n return new EntityMetadata({\n connection: this.connection,\n args: tableArgs,\n inheritanceTree: inheritanceTree,\n tableTree: tableTree,\n inheritancePattern: tableInheritance ? tableInheritance.pattern : undefined\n });\n };\n EntityMetadataBuilder.prototype.computeParentEntityMetadata = function (allEntityMetadatas, entityMetadata) {\n // after all metadatas created we set parent entity metadata for table inheritance\n if (entityMetadata.tableType === \"entity-child\") {\n entityMetadata.parentEntityMetadata = allEntityMetadatas.find(function (allEntityMetadata) {\n return allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target) !== -1 && allEntityMetadata.inheritancePattern === \"STI\";\n });\n }\n };\n EntityMetadataBuilder.prototype.computeEntityMetadataStep1 = function (allEntityMetadatas, entityMetadata) {\n var _a, _b, _c;\n var _this = this;\n var entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);\n var discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value;\n }\n else {\n entityMetadata.discriminatorValue = entityMetadata.target.name;\n }\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree))\n .map(function (embedded) {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map(function (column) {\n column.isNullable = true;\n return column;\n });\n }\n return embedded;\n });\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map(function (args) {\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(function (column) { return column.propertyName === args.propertyName; });\n var column = new ColumnMetadata({ connection: _this.connection, entityMetadata: entityMetadata, args: args });\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n var columnInSingleTableInheritedChild = allEntityMetadatas.find(function (otherEntityMetadata) { return otherEntityMetadata.tableType === \"entity-child\" && otherEntityMetadata.target === args.target; });\n if (columnInSingleTableInheritedChild)\n column.isNullable = true;\n return column;\n });\n // for table inheritance we need to add a discriminator column\n //\n if (entityInheritance && entityInheritance.column) {\n var discriminatorColumnName_1 = entityInheritance.column && entityInheritance.column.name ? entityInheritance.column.name : \"type\";\n var discriminatorColumn = entityMetadata.ownColumns.find(function (column) { return column.propertyName === discriminatorColumnName_1; });\n if (!discriminatorColumn) {\n discriminatorColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: discriminatorColumnName_1,\n options: entityInheritance.column || {\n name: discriminatorColumnName_1,\n type: \"varchar\",\n nullable: false\n }\n }\n });\n discriminatorColumn.isVirtual = true;\n discriminatorColumn.isDiscriminator = true;\n entityMetadata.ownColumns.push(discriminatorColumn);\n }\n else {\n discriminatorColumn.isDiscriminator = true;\n }\n }\n // add discriminator column to the child entity metadatas\n // discriminator column will not be there automatically since we are creating it in the code above\n if (entityMetadata.tableType === \"entity-child\") {\n var discriminatorColumn_1 = entityMetadata.parentEntityMetadata.ownColumns.find(function (column) { return column.isDiscriminator; });\n if (discriminatorColumn_1 && !entityMetadata.ownColumns.find(function (column) { return column === discriminatorColumn_1; })) {\n entityMetadata.ownColumns.push(discriminatorColumn_1);\n }\n }\n var namingStrategy = this.connection.namingStrategy;\n // check if tree is used then we need to add extra columns for specific tree types\n if (entityMetadata.treeType === \"materialized-path\") {\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n materializedPath: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: \"mpath\",\n options: /*tree.column || */ {\n name: namingStrategy.materializedPathColumnName,\n type: \"varchar\",\n nullable: true,\n default: \"\"\n }\n }\n }));\n }\n else if (entityMetadata.treeType === \"nested-set\") {\n var _d = namingStrategy.nestedSetColumnNames, left = _d.left, right = _d.right;\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetLeft: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: left,\n options: /*tree.column || */ {\n name: left,\n type: \"integer\",\n nullable: false,\n default: 1\n }\n }\n }));\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetRight: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: right,\n options: /*tree.column || */ {\n name: right,\n type: \"integer\",\n nullable: false,\n default: 2\n }\n }\n }));\n }\n entityMetadata.ownRelations = this.metadataArgsStorage.filterRelations(entityMetadata.inheritanceTree).map(function (args) {\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownRelations.find(function (relation) { return relation.propertyName === args.propertyName; });\n return new RelationMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(entityMetadata.inheritanceTree).map(function (args) {\n // for single table children we reuse relation ids created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationIds.find(function (relationId) { return relationId.propertyName === args.propertyName; });\n return new RelationIdMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(entityMetadata.inheritanceTree).map(function (args) {\n // for single table children we reuse relation counts created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationCounts.find(function (relationCount) { return relationCount.propertyName === args.propertyName; });\n return new RelationCountMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.ownListeners = this.metadataArgsStorage.filterListeners(entityMetadata.inheritanceTree).map(function (args) {\n return new EntityListenerMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.checks = this.metadataArgsStorage.filterChecks(entityMetadata.inheritanceTree).map(function (args) {\n return new CheckMetadata({ entityMetadata: entityMetadata, args: args });\n });\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver instanceof PostgresDriver) {\n entityMetadata.exclusions = this.metadataArgsStorage.filterExclusions(entityMetadata.inheritanceTree).map(function (args) {\n return new ExclusionMetadata({ entityMetadata: entityMetadata, args: args });\n });\n }\n if (this.connection.driver instanceof CockroachDriver) {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(function (args) { return !args.unique; })\n .map(function (args) {\n return new IndexMetadata({ entityMetadata: entityMetadata, args: args });\n });\n var uniques = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(function (args) { return args.unique; })\n .map(function (args) {\n return new UniqueMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n }\n });\n });\n (_a = entityMetadata.ownUniques).push.apply(_a, __spreadArray([], __read(uniques)));\n }\n else {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree).map(function (args) {\n return new IndexMetadata({ entityMetadata: entityMetadata, args: args });\n });\n }\n // Mysql and SAP HANA stores unique constraints as unique indices.\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver || this.connection.driver instanceof SapDriver) {\n var indices = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(function (args) {\n return new IndexMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n unique: true,\n synchronize: true\n }\n });\n });\n (_b = entityMetadata.ownIndices).push.apply(_b, __spreadArray([], __read(indices)));\n }\n else {\n var uniques = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(function (args) {\n return new UniqueMetadata({ entityMetadata: entityMetadata, args: args });\n });\n (_c = entityMetadata.ownUniques).push.apply(_c, __spreadArray([], __read(uniques)));\n }\n };\n /**\n * Creates from the given embedded metadata args real embedded metadatas with its columns and relations,\n * and does the same for all its sub-embeddeds (goes recursively).\n */\n EntityMetadataBuilder.prototype.createEmbeddedsRecursively = function (entityMetadata, embeddedArgs) {\n var _this = this;\n return embeddedArgs.map(function (embeddedArgs) {\n var embeddedMetadata = new EmbeddedMetadata({ entityMetadata: entityMetadata, args: embeddedArgs });\n var targets = MetadataUtils.getInheritanceTree(embeddedMetadata.type);\n embeddedMetadata.columns = _this.metadataArgsStorage.filterColumns(targets).map(function (args) {\n return new ColumnMetadata({ connection: _this.connection, entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.relations = _this.metadataArgsStorage.filterRelations(targets).map(function (args) {\n return new RelationMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.listeners = _this.metadataArgsStorage.filterListeners(targets).map(function (args) {\n return new EntityListenerMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.indices = _this.metadataArgsStorage.filterIndices(targets).map(function (args) {\n return new IndexMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.uniques = _this.metadataArgsStorage.filterUniques(targets).map(function (args) {\n return new UniqueMetadata({ entityMetadata: entityMetadata, embeddedMetadata: embeddedMetadata, args: args });\n });\n embeddedMetadata.relationIds = _this.metadataArgsStorage.filterRelationIds(targets).map(function (args) {\n return new RelationIdMetadata({ entityMetadata: entityMetadata, args: args });\n });\n embeddedMetadata.relationCounts = _this.metadataArgsStorage.filterRelationCounts(targets).map(function (args) {\n return new RelationCountMetadata({ entityMetadata: entityMetadata, args: args });\n });\n embeddedMetadata.embeddeds = _this.createEmbeddedsRecursively(entityMetadata, _this.metadataArgsStorage.filterEmbeddeds(targets));\n embeddedMetadata.embeddeds.forEach(function (subEmbedded) { return subEmbedded.parentEmbeddedMetadata = embeddedMetadata; });\n entityMetadata.allEmbeddeds.push(embeddedMetadata);\n return embeddedMetadata;\n });\n };\n /**\n * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).\n */\n EntityMetadataBuilder.prototype.computeEntityMetadataStep2 = function (entityMetadata) {\n var _this = this;\n entityMetadata.embeddeds.forEach(function (embedded) { return embedded.build(_this.connection); });\n entityMetadata.embeddeds.forEach(function (embedded) {\n embedded.columnsFromTree.forEach(function (column) { return column.build(_this.connection); });\n embedded.relationsFromTree.forEach(function (relation) { return relation.build(); });\n });\n entityMetadata.ownColumns.forEach(function (column) { return column.build(_this.connection); });\n entityMetadata.ownRelations.forEach(function (relation) { return relation.build(); });\n entityMetadata.relations = entityMetadata.embeddeds.reduce(function (relations, embedded) { return relations.concat(embedded.relationsFromTree); }, entityMetadata.ownRelations);\n entityMetadata.eagerRelations = entityMetadata.relations.filter(function (relation) { return relation.isEager; });\n entityMetadata.lazyRelations = entityMetadata.relations.filter(function (relation) { return relation.isLazy; });\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToOne; });\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToMany; });\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToOne; });\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToMany; });\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(function (relation) { return relation.isOneToOneOwner; });\n entityMetadata.ownerManyToManyRelations = entityMetadata.relations.filter(function (relation) { return relation.isManyToManyOwner; });\n entityMetadata.treeParentRelation = entityMetadata.relations.find(function (relation) { return relation.isTreeParent; });\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(function (relation) { return relation.isTreeChildren; });\n entityMetadata.columns = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.columnsFromTree); }, entityMetadata.ownColumns);\n entityMetadata.listeners = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.listenersFromTree); }, entityMetadata.ownListeners);\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_LOAD; });\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_INSERT; });\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_UPDATE; });\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.AFTER_REMOVE; });\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.BEFORE_INSERT; });\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.BEFORE_UPDATE; });\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(function (listener) { return listener.type === EventListenerTypes.BEFORE_REMOVE; });\n entityMetadata.indices = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.indicesFromTree); }, entityMetadata.ownIndices);\n entityMetadata.uniques = entityMetadata.embeddeds.reduce(function (columns, embedded) { return columns.concat(embedded.uniquesFromTree); }, entityMetadata.ownUniques);\n entityMetadata.primaryColumns = entityMetadata.columns.filter(function (column) { return column.isPrimary; });\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(function (column) { return !column.isVirtual; });\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(function (column) { return column.closureType === \"ancestor\"; });\n entityMetadata.descendantColumns = entityMetadata.columns.filter(function (column) { return column.closureType === \"descendant\"; });\n entityMetadata.hasMultiplePrimaryKeys = entityMetadata.primaryColumns.length > 1;\n entityMetadata.generatedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated || column.isObjectId; });\n entityMetadata.hasUUIDGeneratedColumns = entityMetadata.columns.filter(function (column) { return column.isGenerated || column.generationStrategy === \"uuid\"; }).length > 0;\n entityMetadata.createDateColumn = entityMetadata.columns.find(function (column) { return column.isCreateDate; });\n entityMetadata.updateDateColumn = entityMetadata.columns.find(function (column) { return column.isUpdateDate; });\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(function (column) { return column.isDeleteDate; });\n entityMetadata.versionColumn = entityMetadata.columns.find(function (column) { return column.isVersion; });\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(function (column) { return column.isDiscriminator; });\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(function (column) { return column.isTreeLevel; });\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(function (column) { return column.isNestedSetLeft; });\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(function (column) { return column.isNestedSetRight; });\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(function (column) { return column.isMaterializedPath; });\n entityMetadata.objectIdColumn = entityMetadata.columns.find(function (column) { return column.isObjectId; });\n entityMetadata.foreignKeys.forEach(function (foreignKey) { return foreignKey.build(_this.connection.namingStrategy); });\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();\n entityMetadata.relationIds.forEach(function (relationId) { return relationId.build(); });\n entityMetadata.relationCounts.forEach(function (relationCount) { return relationCount.build(); });\n entityMetadata.embeddeds.forEach(function (embedded) {\n embedded.relationIdsFromTree.forEach(function (relationId) { return relationId.build(); });\n embedded.relationCountsFromTree.forEach(function (relationCount) { return relationCount.build(); });\n });\n };\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n EntityMetadataBuilder.prototype.computeInverseProperties = function (entityMetadata, entityMetadatas) {\n entityMetadata.relations.forEach(function (relation) {\n // compute inverse side (related) entity metadatas for all relation metadatas\n var inverseEntityMetadata = entityMetadatas.find(function (m) { return m.target === relation.type || (typeof relation.type === \"string\" && (m.targetName === relation.type || m.givenTableName === relation.type)); });\n if (!inverseEntityMetadata)\n throw new Error(\"Entity metadata for \" + entityMetadata.name + \"#\" + relation.propertyPath + \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\");\n relation.inverseEntityMetadata = inverseEntityMetadata;\n relation.inverseSidePropertyPath = relation.buildInverseSidePropertyPath();\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(function (foundRelation) { return foundRelation.propertyPath === relation.inverseSidePropertyPath; });\n });\n };\n /**\n * Creates indices for the table of single table inheritance.\n */\n EntityMetadataBuilder.prototype.createKeysForTableInheritance = function (entityMetadata) {\n entityMetadata.indices.push(new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.discriminatorColumn],\n args: {\n target: entityMetadata.target,\n unique: false\n }\n }));\n };\n return EntityMetadataBuilder;\n}());\nexport { EntityMetadataBuilder };\n\n//# sourceMappingURL=EntityMetadataBuilder.js.map\n","import { MetadataUtils } from \"../metadata-builder/MetadataUtils\";\n/**\n * Storage all metadatas args of all available types: tables, columns, subscribers, relations, etc.\n * Each metadata args represents some specifications of what it represents.\n * MetadataArgs used to create a real Metadata objects.\n */\nvar MetadataArgsStorage = /** @class */ (function () {\n function MetadataArgsStorage() {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n this.tables = [];\n this.trees = [];\n this.entityRepositories = [];\n this.transactionEntityManagers = [];\n this.transactionRepositories = [];\n this.namingStrategies = [];\n this.entitySubscribers = [];\n this.indices = [];\n this.uniques = [];\n this.checks = [];\n this.exclusions = [];\n this.columns = [];\n this.generations = [];\n this.relations = [];\n this.joinColumns = [];\n this.joinTables = [];\n this.entityListeners = [];\n this.relationCounts = [];\n this.relationIds = [];\n this.embeddeds = [];\n this.inheritances = [];\n this.discriminatorValues = [];\n }\n MetadataArgsStorage.prototype.filterTables = function (target) {\n return this.filterByTarget(this.tables, target);\n };\n MetadataArgsStorage.prototype.filterColumns = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.columns, target);\n };\n MetadataArgsStorage.prototype.findGenerated = function (target, propertyName) {\n return this.generations.find(function (generated) {\n return (Array.isArray(target) ? target.indexOf(generated.target) !== -1 : generated.target === target) && generated.propertyName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.findTree = function (target) {\n return this.trees.find(function (tree) {\n return (Array.isArray(target) ? target.indexOf(tree.target) !== -1 : tree.target === target);\n });\n };\n MetadataArgsStorage.prototype.filterRelations = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.relations, target);\n };\n MetadataArgsStorage.prototype.filterRelationIds = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.relationIds, target);\n };\n MetadataArgsStorage.prototype.filterRelationCounts = function (target) {\n return this.filterByTargetAndWithoutDuplicateProperties(this.relationCounts, target);\n };\n MetadataArgsStorage.prototype.filterIndices = function (target) {\n // todo: implement parent-entity overrides?\n return this.indices.filter(function (index) {\n return Array.isArray(target) ? target.indexOf(index.target) !== -1 : index.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterUniques = function (target) {\n return this.uniques.filter(function (unique) {\n return Array.isArray(target) ? target.indexOf(unique.target) !== -1 : unique.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterChecks = function (target) {\n return this.checks.filter(function (check) {\n return Array.isArray(target) ? target.indexOf(check.target) !== -1 : check.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterExclusions = function (target) {\n return this.exclusions.filter(function (exclusion) {\n return Array.isArray(target) ? target.indexOf(exclusion.target) !== -1 : exclusion.target === target;\n });\n };\n MetadataArgsStorage.prototype.filterListeners = function (target) {\n return this.filterByTarget(this.entityListeners, target);\n };\n MetadataArgsStorage.prototype.filterEmbeddeds = function (target) {\n return this.filterByTargetAndWithoutDuplicateEmbeddedProperties(this.embeddeds, target);\n };\n MetadataArgsStorage.prototype.findJoinTable = function (target, propertyName) {\n return this.joinTables.find(function (joinTable) {\n return joinTable.target === target && joinTable.propertyName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterJoinColumns = function (target, propertyName) {\n // todo: implement parent-entity overrides?\n return this.joinColumns.filter(function (joinColumn) {\n return joinColumn.target === target && joinColumn.propertyName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterSubscribers = function (target) {\n return this.filterByTarget(this.entitySubscribers, target);\n };\n MetadataArgsStorage.prototype.filterNamingStrategies = function (target) {\n return this.filterByTarget(this.namingStrategies, target);\n };\n MetadataArgsStorage.prototype.filterTransactionEntityManagers = function (target, propertyName) {\n return this.transactionEntityManagers.filter(function (transactionEm) {\n return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterTransactionRepository = function (target, propertyName) {\n return this.transactionRepositories.filter(function (transactionEm) {\n return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName;\n });\n };\n MetadataArgsStorage.prototype.filterSingleTableChildren = function (target) {\n return this.tables.filter(function (table) {\n return table.target instanceof Function\n && target instanceof Function\n && MetadataUtils.isInherited(table.target, target)\n && table.type === \"entity-child\";\n });\n };\n MetadataArgsStorage.prototype.findInheritanceType = function (target) {\n return this.inheritances.find(function (inheritance) { return inheritance.target === target; });\n };\n MetadataArgsStorage.prototype.findDiscriminatorValue = function (target) {\n return this.discriminatorValues.find(function (discriminatorValue) { return discriminatorValue.target === target; });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Filters given array by a given target or targets.\n */\n MetadataArgsStorage.prototype.filterByTarget = function (array, target) {\n return array.filter(function (table) {\n return Array.isArray(target) ? target.indexOf(table.target) !== -1 : table.target === target;\n });\n };\n /**\n * Filters given array by a given target or targets and prevents duplicate property names.\n */\n MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateProperties = function (array, target) {\n var newArray = [];\n array.forEach(function (item) {\n var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target;\n if (sameTarget) {\n if (!newArray.find(function (newItem) { return newItem.propertyName === item.propertyName; }))\n newArray.push(item);\n }\n });\n return newArray;\n };\n /**\n * Filters given array by a given target or targets and prevents duplicate embedded property names.\n */\n MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateEmbeddedProperties = function (array, target) {\n var newArray = [];\n array.forEach(function (item) {\n var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target;\n if (sameTarget) {\n var isDuplicateEmbeddedProperty = newArray.find(function (newItem) {\n return newItem.prefix === item.prefix && newItem.propertyName === item.propertyName;\n });\n if (!isDuplicateEmbeddedProperty)\n newArray.push(item);\n }\n });\n return newArray;\n };\n return MetadataArgsStorage;\n}());\nexport { MetadataArgsStorage };\n\n//# sourceMappingURL=MetadataArgsStorage.js.map\n","import { __values } from \"tslib\";\nimport { MetadataArgsStorage } from \"../metadata-args/MetadataArgsStorage\";\n/**\n * Transforms entity schema into metadata args storage.\n * The result will be just like entities read from decorators.\n */\nvar EntitySchemaTransformer = /** @class */ (function () {\n function EntitySchemaTransformer() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Transforms entity schema into new metadata args storage object.\n */\n EntitySchemaTransformer.prototype.transform = function (schemas) {\n var metadataArgsStorage = new MetadataArgsStorage();\n schemas.forEach(function (entitySchema) {\n var options = entitySchema.options;\n // add table metadata args from the schema\n var tableMetadata = {\n target: options.target || options.name,\n name: options.tableName,\n database: options.database,\n schema: options.schema,\n type: options.type || \"regular\",\n orderBy: options.orderBy,\n synchronize: options.synchronize,\n expression: options.expression\n };\n metadataArgsStorage.tables.push(tableMetadata);\n // add columns metadata args from the schema\n Object.keys(options.columns).forEach(function (columnName) {\n var column = options.columns[columnName];\n var mode = \"regular\";\n if (column.createDate)\n mode = \"createDate\";\n if (column.updateDate)\n mode = \"updateDate\";\n if (column.deleteDate)\n mode = \"deleteDate\";\n if (column.version)\n mode = \"version\";\n if (column.treeChildrenCount)\n mode = \"treeChildrenCount\";\n if (column.treeLevel)\n mode = \"treeLevel\";\n if (column.objectId)\n mode = \"objectId\";\n var columnAgrs = {\n target: options.target || options.name,\n mode: mode,\n propertyName: columnName,\n options: {\n type: column.type,\n name: column.objectId ? \"_id\" : column.name,\n length: column.length,\n width: column.width,\n nullable: column.nullable,\n readonly: column.readonly,\n update: column.update,\n select: column.select,\n insert: column.insert,\n primary: column.primary,\n unique: column.unique,\n comment: column.comment,\n default: column.default,\n onUpdate: column.onUpdate,\n precision: column.precision,\n scale: column.scale,\n zerofill: column.zerofill,\n unsigned: column.unsigned,\n charset: column.charset,\n collation: column.collation,\n enum: column.enum,\n asExpression: column.asExpression,\n generatedType: column.generatedType,\n hstoreType: column.hstoreType,\n array: column.array,\n transformer: column.transformer,\n spatialFeatureType: column.spatialFeatureType,\n srid: column.srid\n }\n };\n metadataArgsStorage.columns.push(columnAgrs);\n if (column.generated) {\n var generationArgs = {\n target: options.target || options.name,\n propertyName: columnName,\n strategy: typeof column.generated === \"string\" ? column.generated : \"increment\"\n };\n metadataArgsStorage.generations.push(generationArgs);\n }\n if (column.unique)\n metadataArgsStorage.uniques.push({ target: options.target || options.name, columns: [columnName] });\n });\n // add relation metadata args from the schema\n if (options.relations) {\n Object.keys(options.relations).forEach(function (relationName) {\n var e_1, _a;\n var relationSchema = options.relations[relationName];\n var relation = {\n target: options.target || options.name,\n propertyName: relationName,\n relationType: relationSchema.type,\n isLazy: relationSchema.lazy || false,\n type: relationSchema.target,\n inverseSideProperty: relationSchema.inverseSide,\n isTreeParent: relationSchema.treeParent,\n isTreeChildren: relationSchema.treeChildren,\n options: {\n eager: relationSchema.eager || false,\n cascade: relationSchema.cascade,\n nullable: relationSchema.nullable,\n onDelete: relationSchema.onDelete,\n onUpdate: relationSchema.onUpdate,\n deferrable: relationSchema.deferrable,\n primary: relationSchema.primary,\n persistence: relationSchema.persistence\n }\n };\n metadataArgsStorage.relations.push(relation);\n // add join column\n if (relationSchema.joinColumn) {\n if (typeof relationSchema.joinColumn === \"boolean\") {\n var joinColumn = {\n target: options.target || options.name,\n propertyName: relationName\n };\n metadataArgsStorage.joinColumns.push(joinColumn);\n }\n else {\n var joinColumnsOptions = Array.isArray(relationSchema.joinColumn) ? relationSchema.joinColumn : [relationSchema.joinColumn];\n try {\n for (var joinColumnsOptions_1 = __values(joinColumnsOptions), joinColumnsOptions_1_1 = joinColumnsOptions_1.next(); !joinColumnsOptions_1_1.done; joinColumnsOptions_1_1 = joinColumnsOptions_1.next()) {\n var joinColumnOption = joinColumnsOptions_1_1.value;\n var joinColumn = {\n target: options.target || options.name,\n propertyName: relationName,\n name: joinColumnOption.name,\n referencedColumnName: joinColumnOption.referencedColumnName\n };\n metadataArgsStorage.joinColumns.push(joinColumn);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (joinColumnsOptions_1_1 && !joinColumnsOptions_1_1.done && (_a = joinColumnsOptions_1.return)) _a.call(joinColumnsOptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n }\n // add join table\n if (relationSchema.joinTable) {\n if (typeof relationSchema.joinTable === \"boolean\") {\n var joinTable = {\n target: options.target || options.name,\n propertyName: relationName\n };\n metadataArgsStorage.joinTables.push(joinTable);\n }\n else {\n var joinTable = {\n target: options.target || options.name,\n propertyName: relationName,\n name: relationSchema.joinTable.name,\n database: relationSchema.joinTable.database,\n schema: relationSchema.joinTable.schema,\n joinColumns: (relationSchema.joinTable.joinColumn ? [relationSchema.joinTable.joinColumn] : relationSchema.joinTable.joinColumns),\n inverseJoinColumns: (relationSchema.joinTable.inverseJoinColumn ? [relationSchema.joinTable.inverseJoinColumn] : relationSchema.joinTable.inverseJoinColumns),\n };\n metadataArgsStorage.joinTables.push(joinTable);\n }\n }\n });\n }\n // add index metadata args from the schema\n if (options.indices) {\n options.indices.forEach(function (index) {\n var indexAgrs = {\n target: options.target || options.name,\n name: index.name,\n unique: index.unique === true ? true : false,\n spatial: index.spatial === true ? true : false,\n fulltext: index.fulltext === true ? true : false,\n parser: index.parser,\n synchronize: index.synchronize === false ? false : true,\n where: index.where,\n sparse: index.sparse,\n columns: index.columns\n };\n metadataArgsStorage.indices.push(indexAgrs);\n });\n }\n // add unique metadata args from the schema\n if (options.uniques) {\n options.uniques.forEach(function (unique) {\n var uniqueAgrs = {\n target: options.target || options.name,\n name: unique.name,\n columns: unique.columns\n };\n metadataArgsStorage.uniques.push(uniqueAgrs);\n });\n }\n // add check metadata args from the schema\n if (options.checks) {\n options.checks.forEach(function (check) {\n var checkAgrs = {\n target: options.target || options.name,\n name: check.name,\n expression: check.expression\n };\n metadataArgsStorage.checks.push(checkAgrs);\n });\n }\n // add exclusion metadata args from the schema\n if (options.exclusions) {\n options.exclusions.forEach(function (exclusion) {\n var exclusionArgs = {\n target: options.target || options.name,\n name: exclusion.name,\n expression: exclusion.expression\n };\n metadataArgsStorage.exclusions.push(exclusionArgs);\n });\n }\n });\n return metadataArgsStorage;\n };\n return EntitySchemaTransformer;\n}());\nexport { EntitySchemaTransformer };\n\n//# sourceMappingURL=EntitySchemaTransformer.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { importClassesFromDirectories } from \"../util/DirectoryExportedClassesLoader\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport { getFromContainer } from \"../container\";\nimport { getMetadataArgsStorage } from \"../index\";\nimport { EntityMetadataBuilder } from \"../metadata-builder/EntityMetadataBuilder\";\nimport { EntitySchemaTransformer } from \"../entity-schema/EntitySchemaTransformer\";\nimport { EntitySchema } from \"../entity-schema/EntitySchema\";\n/**\n * Builds migration instances, subscriber instances and entity metadatas for the given classes.\n */\nvar ConnectionMetadataBuilder = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ConnectionMetadataBuilder(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Builds migration instances for the given classes or directories.\n */\n ConnectionMetadataBuilder.prototype.buildMigrations = function (migrations) {\n var _a = __read(OrmUtils.splitClassesAndStrings(migrations), 2), migrationClasses = _a[0], migrationDirectories = _a[1];\n var allMigrationClasses = __spreadArray(__spreadArray([], __read(migrationClasses)), __read(importClassesFromDirectories(this.connection.logger, migrationDirectories)));\n return allMigrationClasses.map(function (migrationClass) { return getFromContainer(migrationClass); });\n };\n /**\n * Builds subscriber instances for the given classes or directories.\n */\n ConnectionMetadataBuilder.prototype.buildSubscribers = function (subscribers) {\n var _a = __read(OrmUtils.splitClassesAndStrings(subscribers || []), 2), subscriberClasses = _a[0], subscriberDirectories = _a[1];\n var allSubscriberClasses = __spreadArray(__spreadArray([], __read(subscriberClasses)), __read(importClassesFromDirectories(this.connection.logger, subscriberDirectories)));\n return getMetadataArgsStorage()\n .filterSubscribers(allSubscriberClasses)\n .map(function (metadata) { return getFromContainer(metadata.target); });\n };\n /**\n * Builds entity metadatas for the given classes or directories.\n */\n ConnectionMetadataBuilder.prototype.buildEntityMetadatas = function (entities) {\n // todo: instead we need to merge multiple metadata args storages\n var _a = __read(OrmUtils.splitClassesAndStrings(entities || []), 2), entityClassesOrSchemas = _a[0], entityDirectories = _a[1];\n var entityClasses = entityClassesOrSchemas.filter(function (entityClass) { return (entityClass instanceof EntitySchema) === false; });\n var entitySchemas = entityClassesOrSchemas.filter(function (entityClass) { return entityClass instanceof EntitySchema; });\n var allEntityClasses = __spreadArray(__spreadArray([], __read(entityClasses)), __read(importClassesFromDirectories(this.connection.logger, entityDirectories)));\n allEntityClasses.forEach(function (entityClass) {\n if (entityClass instanceof EntitySchema) {\n entitySchemas.push(entityClass);\n allEntityClasses.slice(allEntityClasses.indexOf(entityClass), 1);\n }\n });\n var decoratorEntityMetadatas = new EntityMetadataBuilder(this.connection, getMetadataArgsStorage()).build(allEntityClasses);\n var metadataArgsStorageFromSchema = new EntitySchemaTransformer().transform(entitySchemas);\n var schemaEntityMetadatas = new EntityMetadataBuilder(this.connection, metadataArgsStorageFromSchema).build();\n return __spreadArray(__spreadArray([], __read(decoratorEntityMetadatas)), __read(schemaEntityMetadatas));\n };\n return ConnectionMetadataBuilder;\n}());\nexport { ConnectionMetadataBuilder };\n\n//# sourceMappingURL=ConnectionMetadataBuilder.js.map\n","/**\n * Performs logging of the events in TypeORM.\n * This version of logger uses console to log events and does not use syntax highlighting.\n */\nvar SimpleConsoleLogger = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SimpleConsoleLogger(options) {\n this.options = options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Logs query and parameters used in it.\n */\n SimpleConsoleLogger.prototype.logQuery = function (query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"query\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n console.log(\"query\" + \": \" + sql);\n }\n };\n /**\n * Logs query that is failed.\n */\n SimpleConsoleLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"error\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n console.log(\"query failed: \" + sql);\n console.log(\"error:\", error);\n }\n };\n /**\n * Logs query that is slow.\n */\n SimpleConsoleLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n console.log(\"query is slow: \" + sql);\n console.log(\"execution time: \" + time);\n };\n /**\n * Logs events from the schema build process.\n */\n SimpleConsoleLogger.prototype.logSchemaBuild = function (message, queryRunner) {\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"schema\") !== -1)) {\n console.log(message);\n }\n };\n /**\n * Logs events from the migrations run process.\n */\n SimpleConsoleLogger.prototype.logMigration = function (message, queryRunner) {\n console.log(message);\n };\n /**\n * Perform logging using given logger, or by default to the console.\n * Log has its own level and message.\n */\n SimpleConsoleLogger.prototype.log = function (level, message, queryRunner) {\n switch (level) {\n case \"log\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"log\") !== -1))\n console.log(message);\n break;\n case \"info\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"info\") !== -1))\n console.info(message);\n break;\n case \"warn\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"warn\") !== -1))\n console.warn(message);\n break;\n }\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Converts parameters to a string.\n * Sometimes parameters can have circular objects and therefor we are handle this case too.\n */\n SimpleConsoleLogger.prototype.stringifyParams = function (parameters) {\n try {\n return JSON.stringify(parameters);\n }\n catch (error) { // most probably circular objects in parameters\n return parameters;\n }\n };\n return SimpleConsoleLogger;\n}());\nexport { SimpleConsoleLogger };\n\n//# sourceMappingURL=SimpleConsoleLogger.js.map\n","import { PlatformTools } from \"../platform/PlatformTools\";\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger uses console to log events and use syntax highlighting.\n */\nvar AdvancedConsoleLogger = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AdvancedConsoleLogger(options) {\n this.options = options;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Logs query and parameters used in it.\n */\n AdvancedConsoleLogger.prototype.logQuery = function (query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"query\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n PlatformTools.logInfo(\"query:\", PlatformTools.highlightSql(sql));\n }\n };\n /**\n * Logs query that is failed.\n */\n AdvancedConsoleLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) {\n if (this.options === \"all\" || this.options === true || (Array.isArray(this.options) && this.options.indexOf(\"error\") !== -1)) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n PlatformTools.logError(\"query failed:\", PlatformTools.highlightSql(sql));\n PlatformTools.logError(\"error:\", error);\n }\n };\n /**\n * Logs query that is slow.\n */\n AdvancedConsoleLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) {\n var sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n PlatformTools.logWarn(\"query is slow:\", PlatformTools.highlightSql(sql));\n PlatformTools.logWarn(\"execution time:\", time);\n };\n /**\n * Logs events from the schema build process.\n */\n AdvancedConsoleLogger.prototype.logSchemaBuild = function (message, queryRunner) {\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"schema\") !== -1)) {\n PlatformTools.log(message);\n }\n };\n /**\n * Logs events from the migration run process.\n */\n AdvancedConsoleLogger.prototype.logMigration = function (message, queryRunner) {\n PlatformTools.log(message);\n };\n /**\n * Perform logging using given logger, or by default to the console.\n * Log has its own level and message.\n */\n AdvancedConsoleLogger.prototype.log = function (level, message, queryRunner) {\n switch (level) {\n case \"log\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"log\") !== -1))\n PlatformTools.log(message);\n break;\n case \"info\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"info\") !== -1))\n PlatformTools.logInfo(\"INFO:\", message);\n break;\n case \"warn\":\n if (this.options === \"all\" || (Array.isArray(this.options) && this.options.indexOf(\"warn\") !== -1))\n console.warn(PlatformTools.warn(message));\n break;\n }\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Converts parameters to a string.\n * Sometimes parameters can have circular objects and therefor we are handle this case too.\n */\n AdvancedConsoleLogger.prototype.stringifyParams = function (parameters) {\n try {\n return JSON.stringify(parameters);\n }\n catch (error) { // most probably circular objects in parameters\n return parameters;\n }\n };\n return AdvancedConsoleLogger;\n}());\nexport { AdvancedConsoleLogger };\n\n//# sourceMappingURL=AdvancedConsoleLogger.js.map\n","import { __extends } from \"tslib\";\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger logs everything into ormlogs.log file.\n */\nvar DummyLogger = /** @class */ (function () {\n function DummyLogger() {\n }\n /**\n * Logs query and parameters used in it.\n */\n DummyLogger.prototype.logQuery = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs query that is failed.\n */\n DummyLogger.prototype.logQueryError = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs query that is slow.\n */\n DummyLogger.prototype.logQuerySlow = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs events from the schema build process.\n */\n DummyLogger.prototype.logSchemaBuild = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Logs events from the migrations run process.\n */\n DummyLogger.prototype.logMigration = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n /**\n * Perform logging using given logger, or by default to the console.\n * Log has its own level and message.\n */\n DummyLogger.prototype.log = function () {\n throw new Error('This logger is not applicable in a browser context');\n };\n return DummyLogger;\n}());\nexport { DummyLogger };\nvar FileLogger = /** @class */ (function (_super) {\n __extends(FileLogger, _super);\n function FileLogger() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FileLogger;\n}(DummyLogger));\nexport { FileLogger };\n\n//# sourceMappingURL=BrowserFileLoggerDummy.js.map\n","import debug from \"debug\";\nimport { PlatformTools } from \"../platform/PlatformTools\";\n/**\n * Performs logging of the events in TypeORM via debug library.\n */\nvar DebugLogger = /** @class */ (function () {\n function DebugLogger() {\n this.debugQueryLog = debug(\"typeorm:query:log\");\n this.debugQueryError = debug(\"typeorm:query:error\");\n this.debugQuerySlow = debug(\"typeorm:query:slow\");\n this.debugSchemaBuild = debug(\"typeorm:schema\");\n this.debugMigration = debug(\"typeorm:migration\");\n this.debugLog = debug(\"typeorm:log\");\n this.debugInfo = debug(\"typeorm:info\");\n this.debugWarn = debug(\"typeorm:warn\");\n }\n /**\n * Logs query and parameters used in it.\n */\n DebugLogger.prototype.logQuery = function (query, parameters, queryRunner) {\n if (this.debugQueryLog.enabled) {\n this.debugQueryLog(PlatformTools.highlightSql(query) + \";\");\n if (parameters && parameters.length) {\n this.debugQueryLog(\"parameters:\", parameters);\n }\n }\n };\n /**\n * Logs query that failed.\n */\n DebugLogger.prototype.logQueryError = function (error, query, parameters, queryRunner) {\n if (this.debugQueryError.enabled) {\n this.debugQueryError(PlatformTools.highlightSql(query) + \";\");\n if (parameters && parameters.length) {\n this.debugQueryError(\"parameters:\", parameters);\n }\n this.debugQueryError(\"error: \", error);\n }\n };\n /**\n * Logs query that is slow.\n */\n DebugLogger.prototype.logQuerySlow = function (time, query, parameters, queryRunner) {\n if (this.debugQuerySlow.enabled) {\n this.debugQuerySlow(PlatformTools.highlightSql(query) + \";\");\n if (parameters && parameters.length) {\n this.debugQuerySlow(\"parameters:\", parameters);\n }\n this.debugQuerySlow(\"execution time:\", time);\n }\n };\n /**\n * Logs events from the schema build process.\n */\n DebugLogger.prototype.logSchemaBuild = function (message, queryRunner) {\n if (this.debugSchemaBuild.enabled) {\n this.debugSchemaBuild(message);\n }\n };\n /**\n * Logs events from the migration run process.\n */\n DebugLogger.prototype.logMigration = function (message, queryRunner) {\n if (this.debugMigration.enabled) {\n this.debugMigration(message);\n }\n };\n /**\n * Perform logging using given logger.\n * Log has its own level and message.\n */\n DebugLogger.prototype.log = function (level, message, queryRunner) {\n switch (level) {\n case \"log\":\n if (this.debugLog.enabled) {\n this.debugLog(message);\n }\n break;\n case \"info\":\n if (this.debugInfo.enabled) {\n this.debugInfo(message);\n }\n break;\n case \"warn\":\n if (this.debugWarn.enabled) {\n this.debugWarn(message);\n }\n break;\n }\n };\n return DebugLogger;\n}());\nexport { DebugLogger };\n\n//# sourceMappingURL=DebugLogger.js.map\n","import { SimpleConsoleLogger } from \"./SimpleConsoleLogger\";\nimport { AdvancedConsoleLogger } from \"./AdvancedConsoleLogger\";\nimport { FileLogger } from \"./FileLogger\";\nimport { DebugLogger } from \"./DebugLogger\";\n/**\n * Helps to create logger instances.\n */\nvar LoggerFactory = /** @class */ (function () {\n function LoggerFactory() {\n }\n /**\n * Creates a new logger depend on a given connection's driver.\n */\n LoggerFactory.prototype.create = function (logger, options) {\n if (logger instanceof Object)\n return logger;\n if (logger) {\n switch (logger) {\n case \"simple-console\":\n return new SimpleConsoleLogger(options);\n case \"file\":\n return new FileLogger(options);\n case \"advanced-console\":\n return new AdvancedConsoleLogger(options);\n case \"debug\":\n return new DebugLogger();\n }\n }\n return new AdvancedConsoleLogger(options);\n };\n return LoggerFactory;\n}());\nexport { LoggerFactory };\n\n//# sourceMappingURL=LoggerFactory.js.map\n","import { __awaiter, __generator } from \"tslib\";\nimport { PlatformTools } from \"../platform/PlatformTools\";\n/**\n * Caches query result into Redis database.\n */\nvar RedisQueryResultCache = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RedisQueryResultCache(connection, clientType) {\n this.connection = connection;\n this.clientType = clientType;\n this.redis = this.loadRedis();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a connection with given cache provider.\n */\n RedisQueryResultCache.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cacheOptions;\n return __generator(this, function (_a) {\n cacheOptions = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n if (cacheOptions && cacheOptions.options) {\n this.client = this.redis.createClient(cacheOptions.options);\n }\n else {\n this.client = this.redis.createClient();\n }\n }\n else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options);\n }\n else {\n this.client = new this.redis();\n }\n }\n else if (this.clientType === \"ioredis/cluster\") {\n if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n }\n else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n }\n else {\n throw new Error(\"options.startupNodes required for \" + this.clientType + \".\");\n }\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Disconnects the connection\n */\n RedisQueryResultCache.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.client.quit(function (err, result) {\n if (err)\n return fail(err);\n ok();\n _this.client = undefined;\n });\n })];\n });\n });\n };\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n RedisQueryResultCache.prototype.synchronize = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n RedisQueryResultCache.prototype.getFromCache = function (options, queryRunner) {\n var _this = this;\n return new Promise(function (ok, fail) {\n if (options.identifier) {\n _this.client.get(options.identifier, function (err, result) {\n if (err)\n return fail(err);\n ok(JSON.parse(result));\n });\n }\n else if (options.query) {\n _this.client.get(options.query, function (err, result) {\n if (err)\n return fail(err);\n ok(JSON.parse(result));\n });\n }\n else {\n ok(undefined);\n }\n });\n };\n /**\n * Checks if cache is expired or not.\n */\n RedisQueryResultCache.prototype.isExpired = function (savedCache) {\n return (savedCache.time + savedCache.duration) < new Date().getTime();\n };\n /**\n * Stores given query result in the cache.\n */\n RedisQueryResultCache.prototype.storeInCache = function (options, savedCache, queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n if (options.identifier) {\n _this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n }\n else if (options.query) {\n _this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n }\n })];\n });\n });\n };\n /**\n * Clears everything stored in the cache.\n */\n RedisQueryResultCache.prototype.clear = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.client.flushdb(function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n })];\n });\n });\n };\n /**\n * Removes all cached results by given identifiers from cache.\n */\n RedisQueryResultCache.prototype.remove = function (identifiers, queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(identifiers.map(function (identifier) {\n return _this.deleteKey(identifier);\n }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Removes a single key from redis database.\n */\n RedisQueryResultCache.prototype.deleteKey = function (key) {\n var _this = this;\n return new Promise(function (ok, fail) {\n _this.client.del(key, function (err, result) {\n if (err)\n return fail(err);\n ok();\n });\n });\n };\n /**\n * Loads redis dependency.\n */\n RedisQueryResultCache.prototype.loadRedis = function () {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\");\n }\n else {\n return PlatformTools.load(this.clientType);\n }\n }\n catch (e) {\n throw new Error(\"Cannot use cache because \" + this.clientType + \" is not installed. Please run \\\"npm i \" + this.clientType + \" --save\\\".\");\n }\n };\n return RedisQueryResultCache;\n}());\nexport { RedisQueryResultCache };\n\n//# sourceMappingURL=RedisQueryResultCache.js.map\n","import { __awaiter, __generator } from \"tslib\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { Table } from \"../schema-builder/table/Table\";\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nvar DbQueryResultCache = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function DbQueryResultCache(connection) {\n this.connection = connection;\n var options = this.connection.driver.options;\n var cacheOptions = typeof this.connection.options.cache === \"object\" ? this.connection.options.cache : {};\n var cacheTableName = cacheOptions.tableName || \"query-result-cache\";\n this.queryResultCacheTable = this.connection.driver.buildTableName(cacheTableName, options.schema, options.database);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a connection with given cache provider.\n */\n DbQueryResultCache.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Disconnects with given cache provider.\n */\n DbQueryResultCache.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n DbQueryResultCache.prototype.synchronize = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var driver, tableExist;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.getQueryRunner(queryRunner);\n driver = this.connection.driver;\n return [4 /*yield*/, queryRunner.hasTable(this.queryResultCacheTable)];\n case 1:\n tableExist = _a.sent();\n if (tableExist)\n return [2 /*return*/];\n return [4 /*yield*/, queryRunner.createTable(new Table({\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheId }),\n generationStrategy: \"increment\",\n isGenerated: true\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheIdentifier }),\n isNullable: true\n },\n {\n name: \"time\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheTime }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"duration\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheDuration }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"query\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheQuery }),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"result\",\n type: driver.normalizeType({ type: driver.mappedDataTypes.cacheResult }),\n isNullable: false\n },\n ]\n }))];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n DbQueryResultCache.prototype.getFromCache = function (options, queryRunner) {\n queryRunner = this.getQueryRunner(queryRunner);\n var qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\");\n if (options.identifier) {\n return qb\n .where(qb.escape(\"cache\") + \".\" + qb.escape(\"identifier\") + \" = :identifier\")\n .setParameters({ identifier: this.connection.driver instanceof SqlServerDriver ? new MssqlParameter(options.identifier, \"nvarchar\") : options.identifier })\n .getRawOne();\n }\n else if (options.query) {\n if (this.connection.driver instanceof OracleDriver) {\n return qb\n .where(\"dbms_lob.compare(\" + qb.escape(\"cache\") + \".\" + qb.escape(\"query\") + \", :query) = 0\", { query: options.query })\n .getRawOne();\n }\n return qb\n .where(qb.escape(\"cache\") + \".\" + qb.escape(\"query\") + \" = :query\")\n .setParameters({ query: this.connection.driver instanceof SqlServerDriver ? new MssqlParameter(options.query, \"nvarchar\") : options.query })\n .getRawOne();\n }\n return Promise.resolve(undefined);\n };\n /**\n * Checks if cache is expired or not.\n */\n DbQueryResultCache.prototype.isExpired = function (savedCache) {\n var duration = typeof savedCache.duration === \"string\" ? parseInt(savedCache.duration) : savedCache.duration;\n return ((typeof savedCache.time === \"string\" ? parseInt(savedCache.time) : savedCache.time) + duration) < new Date().getTime();\n };\n /**\n * Stores given query result in the cache.\n */\n DbQueryResultCache.prototype.storeInCache = function (options, savedCache, queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var insertedValues, qb, qb;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.getQueryRunner(queryRunner);\n insertedValues = options;\n if (this.connection.driver instanceof SqlServerDriver) { // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new MssqlParameter(options.identifier, \"nvarchar\"),\n time: new MssqlParameter(options.time, \"bigint\"),\n duration: new MssqlParameter(options.duration, \"int\"),\n query: new MssqlParameter(options.query, \"nvarchar\"),\n result: new MssqlParameter(options.result, \"nvarchar\"),\n };\n }\n if (!(savedCache && savedCache.identifier)) return [3 /*break*/, 2];\n qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n qb.where(qb.escape(\"identifier\") + \" = :condition\", { condition: insertedValues.identifier });\n return [4 /*yield*/, qb.execute()];\n case 1:\n _a.sent();\n return [3 /*break*/, 6];\n case 2:\n if (!(savedCache && savedCache.query)) return [3 /*break*/, 4];\n qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n if (this.connection.driver instanceof OracleDriver) {\n qb.where(\"dbms_lob.compare(\\\"query\\\", :condition) = 0\", { condition: insertedValues.query });\n }\n else {\n qb.where(qb.escape(\"query\") + \" = :condition\", { condition: insertedValues.query });\n }\n return [4 /*yield*/, qb.execute()];\n case 3:\n _a.sent();\n return [3 /*break*/, 6];\n case 4: // otherwise insert\n return [4 /*yield*/, queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Clears everything stored in the cache.\n */\n DbQueryResultCache.prototype.clear = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.getQueryRunner(queryRunner).clearTable(this.queryResultCacheTable)];\n });\n });\n };\n /**\n * Removes all cached results by given identifiers from cache.\n */\n DbQueryResultCache.prototype.remove = function (identifiers, queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(identifiers.map(function (identifier) {\n var qb = _this.getQueryRunner(queryRunner).manager.createQueryBuilder();\n return qb.delete()\n .from(_this.queryResultCacheTable)\n .where(qb.escape(\"identifier\") + \" = :identifier\", { identifier: identifier })\n .execute();\n }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Gets a query runner to work with.\n */\n DbQueryResultCache.prototype.getQueryRunner = function (queryRunner) {\n if (queryRunner)\n return queryRunner;\n return this.connection.createQueryRunner();\n };\n return DbQueryResultCache;\n}());\nexport { DbQueryResultCache };\n\n//# sourceMappingURL=DbQueryResultCache.js.map\n","import { RedisQueryResultCache } from \"./RedisQueryResultCache\";\nimport { DbQueryResultCache } from \"./DbQueryResultCache\";\n/**\n * Caches query result into Redis database.\n */\nvar QueryResultCacheFactory = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function QueryResultCacheFactory(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new query result cache based on connection options.\n */\n QueryResultCacheFactory.prototype.create = function () {\n if (!this.connection.options.cache)\n throw new Error(\"To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }\");\n var cache = this.connection.options.cache;\n if (cache.provider && typeof cache.provider === \"function\") {\n return cache.provider(this.connection);\n }\n if (cache.type === \"redis\" || cache.type === \"ioredis\" || cache.type === \"ioredis/cluster\") {\n return new RedisQueryResultCache(this.connection, cache.type);\n }\n else {\n return new DbQueryResultCache(this.connection);\n }\n };\n return QueryResultCacheFactory;\n}());\nexport { QueryResultCacheFactory };\n\n//# sourceMappingURL=QueryResultCacheFactory.js.map\n","import { __read, __spreadArray } from \"tslib\";\n/**\n * Wraps entities and creates getters/setters for their relations\n * to be able to lazily load relations when accessing these relations.\n */\nvar RelationLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationLoader(connection) {\n this.connection = connection;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Loads relation data for the given entity and its relation.\n */\n RelationLoader.prototype.load = function (relation, entityOrEntities, queryRunner) {\n if (queryRunner && queryRunner.isReleased)\n queryRunner = undefined; // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner);\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(relation, entityOrEntities, queryRunner);\n }\n else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(relation, entityOrEntities, queryRunner);\n }\n else { // many-to-many non owner\n return this.loadManyToManyNotOwner(relation, entityOrEntities, queryRunner);\n }\n };\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n * example: SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n */\n RelationLoader.prototype.loadManyToOneOrOneToOneOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var columns = relation.entityMetadata.primaryColumns;\n var joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation.joinColumns;\n var conditions = joinColumns.map(function (joinColumn) {\n return relation.entityMetadata.name + \".\" + joinColumn.propertyName + \" = \" + relation.propertyName + \".\" + joinColumn.referencedColumn.propertyName;\n }).join(\" AND \");\n var joinAliasName = relation.entityMetadata.name;\n var qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName) // category\n .from(relation.type, relation.propertyName) // Category, category\n .innerJoin(relation.entityMetadata.target, joinAliasName, conditions);\n if (columns.length === 1) {\n qb.where(joinAliasName + \".\" + columns[0].propertyPath + \" IN (:...\" + (joinAliasName + \"_\" + columns[0].propertyName) + \")\");\n qb.setParameter(joinAliasName + \"_\" + columns[0].propertyName, entities.map(function (entity) { return columns[0].getEntityValue(entity); }));\n }\n else {\n var condition = entities.map(function (entity, entityIndex) {\n return columns.map(function (column, columnIndex) {\n var paramName = joinAliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return joinAliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n qb.where(condition);\n }\n return qb.getMany();\n // return qb.getOne(); todo: fix all usages\n };\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n */\n RelationLoader.prototype.loadOneToManyOrOneToOneNotOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var aliasName = relation.propertyName;\n var columns = relation.inverseRelation.joinColumns;\n var qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(aliasName)\n .from(relation.inverseRelation.entityMetadata.target, aliasName);\n if (columns.length === 1) {\n qb.where(aliasName + \".\" + columns[0].propertyPath + \" IN (:...\" + (aliasName + \"_\" + columns[0].propertyName) + \")\");\n qb.setParameter(aliasName + \"_\" + columns[0].propertyName, entities.map(function (entity) { return columns[0].referencedColumn.getEntityValue(entity); }));\n }\n else {\n var condition = entities.map(function (entity, entityIndex) {\n return columns.map(function (column, columnIndex) {\n var paramName = aliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity));\n return aliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n qb.where(condition);\n }\n return qb.getMany();\n // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages\n };\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n */\n RelationLoader.prototype.loadManyToManyOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var mainAlias = relation.propertyName;\n var joinAlias = relation.junctionEntityMetadata.tableName;\n var joinColumnConditions = relation.joinColumns.map(function (joinColumn) {\n return joinAlias + \".\" + joinColumn.propertyName + \" IN (:...\" + joinColumn.propertyName + \")\";\n });\n var inverseJoinColumnConditions = relation.inverseJoinColumns.map(function (inverseJoinColumn) {\n return joinAlias + \".\" + inverseJoinColumn.propertyName + \"=\" + mainAlias + \".\" + inverseJoinColumn.referencedColumn.propertyName;\n });\n var parameters = relation.joinColumns.reduce(function (parameters, joinColumn) {\n parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); });\n return parameters;\n }, {});\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, __spreadArray(__spreadArray([], __read(joinColumnConditions)), __read(inverseJoinColumnConditions)).join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n };\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n */\n RelationLoader.prototype.loadManyToManyNotOwner = function (relation, entityOrEntities, queryRunner) {\n var entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n var mainAlias = relation.propertyName;\n var joinAlias = relation.junctionEntityMetadata.tableName;\n var joinColumnConditions = relation.inverseRelation.joinColumns.map(function (joinColumn) {\n return joinAlias + \".\" + joinColumn.propertyName + \" = \" + mainAlias + \".\" + joinColumn.referencedColumn.propertyName;\n });\n var inverseJoinColumnConditions = relation.inverseRelation.inverseJoinColumns.map(function (inverseJoinColumn) {\n return joinAlias + \".\" + inverseJoinColumn.propertyName + \" IN (:...\" + inverseJoinColumn.propertyName + \")\";\n });\n var parameters = relation.inverseRelation.inverseJoinColumns.reduce(function (parameters, joinColumn) {\n parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); });\n return parameters;\n }, {});\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, __spreadArray(__spreadArray([], __read(joinColumnConditions)), __read(inverseJoinColumnConditions)).join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n };\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n */\n RelationLoader.prototype.enableLazyLoad = function (relation, entity, queryRunner) {\n var relationLoader = this;\n var dataIndex = \"__\" + relation.propertyName + \"__\"; // in what property of the entity loaded data will be stored\n var promiseIndex = \"__promise_\" + relation.propertyName + \"__\"; // in what property of the entity loading promise will be stored\n var resolveIndex = \"__has_\" + relation.propertyName + \"__\"; // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n var setData = function (entity, value) {\n entity[dataIndex] = value;\n entity[resolveIndex] = true;\n delete entity[promiseIndex];\n return value;\n };\n var setPromise = function (entity, value) {\n delete entity[resolveIndex];\n delete entity[dataIndex];\n entity[promiseIndex] = value;\n value.then(\n // ensure different value is not assigned yet\n function (result) { return entity[promiseIndex] === value ? setData(entity, result) : result; });\n return value;\n };\n Object.defineProperty(entity, relation.propertyName, {\n get: function () {\n if (this[resolveIndex] === true || this[dataIndex] !== undefined) // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex]);\n if (this[promiseIndex]) // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex];\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n var loader = relationLoader.load(relation, this, queryRunner).then(function (result) { return relation.isOneToOne || relation.isManyToOne ? (result.length === 0 ? null : result[0]) : result; });\n return setPromise(this, loader);\n },\n set: function (value) {\n if (value instanceof Promise) { // if set data is a promise then wait for its resolve and save in the object\n setPromise(this, value);\n }\n else { // if its direct data set (non promise, probably not safe-typed)\n setData(this, value);\n }\n },\n configurable: true\n });\n };\n return RelationLoader;\n}());\nexport { RelationLoader };\n\n//# sourceMappingURL=RelationLoader.js.map\n","import { __awaiter, __generator } from \"tslib\";\nimport { RelationMetadata } from \"../metadata/RelationMetadata\";\n/**\n * Loads relation ids for the given entities.\n */\nvar RelationIdLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdLoader(connection) {\n this.connection = connection;\n }\n /**\n * Loads relation ids of the given entity or entities.\n */\n RelationIdLoader.prototype.load = function (relationOrTarget, relationNameOrEntities, entitiesOrRelatedEntities, maybeRelatedEntities) {\n return __awaiter(this, void 0, void 0, function () {\n var relation, entities, relatedEntities, entityMetadata;\n return __generator(this, function (_a) {\n if (relationOrTarget instanceof RelationMetadata) {\n relation = relationOrTarget;\n entities = Array.isArray(relationNameOrEntities) ? relationNameOrEntities : [relationNameOrEntities];\n relatedEntities = Array.isArray(entitiesOrRelatedEntities) ? entitiesOrRelatedEntities : (entitiesOrRelatedEntities ? [entitiesOrRelatedEntities] : undefined);\n }\n else {\n entityMetadata = this.connection.getMetadata(relationOrTarget);\n relation = entityMetadata.findRelationWithPropertyPath(relationNameOrEntities);\n if (!relation)\n throw new Error(\"Relation \\\"\" + relation + \"\\\" was not found in \\\"\" + entityMetadata.name + \"\\\".\");\n entities = Array.isArray(entitiesOrRelatedEntities) ? entitiesOrRelatedEntities : [entitiesOrRelatedEntities];\n relatedEntities = Array.isArray(maybeRelatedEntities) ? maybeRelatedEntities : (maybeRelatedEntities ? [maybeRelatedEntities] : undefined);\n }\n // load relation ids depend of relation type\n if (relation.isManyToMany) {\n return [2 /*return*/, this.loadForManyToMany(relation, entities, relatedEntities)];\n }\n else if (relation.isManyToOne || relation.isOneToOneOwner) {\n return [2 /*return*/, this.loadForManyToOneAndOneToOneOwner(relation, entities, relatedEntities)];\n }\n else { // if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return [2 /*return*/, this.loadForOneToManyAndOneToOneNotOwner(relation, entities, relatedEntities)];\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Loads relation ids of the given entities and groups them into the object with parent and children.\n *\n * todo: extract this method?\n */\n RelationIdLoader.prototype.loadManyToManyRelationIdsAndGroup = function (relation, entitiesOrEntities, relatedEntityOrEntities) {\n return __awaiter(this, void 0, void 0, function () {\n var isMany, entities, relationIds, relatedEntities, columns, inverseColumns;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isMany = relation.isManyToMany || relation.isOneToMany;\n entities = Array.isArray(entitiesOrEntities) ? entitiesOrEntities : [entitiesOrEntities];\n if (!!relatedEntityOrEntities) return [3 /*break*/, 2];\n return [4 /*yield*/, this.connection.relationLoader.load(relation, entitiesOrEntities)];\n case 1:\n relatedEntityOrEntities = _a.sent();\n if (!relatedEntityOrEntities.length)\n return [2 /*return*/, entities.map(function (entity) { return ({ entity: entity, related: isMany ? [] : undefined }); })];\n _a.label = 2;\n case 2: return [4 /*yield*/, this.load(relation, entitiesOrEntities, relatedEntityOrEntities)];\n case 3:\n relationIds = _a.sent();\n relatedEntities = Array.isArray(relatedEntityOrEntities) ? relatedEntityOrEntities : [relatedEntityOrEntities];\n if (relation.isManyToManyOwner) {\n columns = relation.junctionEntityMetadata.inverseColumns.map(function (column) { return column.referencedColumn; });\n inverseColumns = relation.junctionEntityMetadata.ownerColumns.map(function (column) { return column.referencedColumn; });\n }\n else if (relation.isManyToManyNotOwner) {\n columns = relation.junctionEntityMetadata.ownerColumns.map(function (column) { return column.referencedColumn; });\n inverseColumns = relation.junctionEntityMetadata.inverseColumns.map(function (column) { return column.referencedColumn; });\n }\n else if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns.map(function (column) { return column.referencedColumn; });\n inverseColumns = relation.entityMetadata.primaryColumns;\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation.entityMetadata.primaryColumns;\n inverseColumns = relation.inverseRelation.joinColumns.map(function (column) { return column.referencedColumn; });\n }\n else {\n }\n return [2 /*return*/, entities.map(function (entity) {\n var group = { entity: entity, related: isMany ? [] : undefined };\n relationIds.forEach(function (relationId) {\n var entityMatched = inverseColumns.every(function (column) {\n return column.getEntityValue(entity) === relationId[column.entityMetadata.name + \"_\" + column.propertyPath.replace(\".\", \"_\")];\n });\n if (entityMatched) {\n relatedEntities.forEach(function (relatedEntity) {\n var relatedEntityMatched = columns.every(function (column) {\n return column.getEntityValue(relatedEntity) === relationId[column.entityMetadata.name + \"_\" + relation.propertyPath.replace(\".\", \"_\") + \"_\" + column.propertyPath.replace(\".\", \"_\")];\n });\n if (relatedEntityMatched) {\n if (isMany) {\n group.related.push(relatedEntity);\n }\n else {\n group.related = relatedEntity;\n }\n }\n });\n }\n });\n return group;\n })];\n }\n });\n });\n };\n /**\n * Loads relation ids of the given entities and maps them into the given entity property.\n\n async loadManyToManyRelationIdsAndMap(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral|ObjectLiteral[],\n mapToEntityOrEntities: ObjectLiteral|ObjectLiteral[],\n propertyName: string\n ): Promise {\n\n const relationIds = await this.loadManyToManyRelationIds(relation, entityOrEntities, mapToEntityOrEntities);\n const mapToEntities = mapToEntityOrEntities instanceof Array ? mapToEntityOrEntities : [mapToEntityOrEntities];\n const junctionMetadata = relation.junctionEntityMetadata!;\n const mainAlias = junctionMetadata.name;\n const columns = relation.isOwning ? junctionMetadata.inverseColumns : junctionMetadata.ownerColumns;\n const inverseColumns = relation.isOwning ? junctionMetadata.ownerColumns : junctionMetadata.inverseColumns;\n\n mapToEntities.forEach(mapToEntity => {\n mapToEntity[propertyName] = [];\n relationIds.forEach(relationId => {\n const match = inverseColumns.every(column => {\n return column.referencedColumn!.getEntityValue(mapToEntity) === relationId[mainAlias + \"_\" + column.propertyName];\n });\n if (match) {\n if (columns.length === 1) {\n mapToEntity[propertyName].push(relationId[mainAlias + \"_\" + columns[0].propertyName]);\n\n } else {\n const value = {};\n columns.forEach(column => {\n column.referencedColumn!.setEntityValue(value, relationId[mainAlias + \"_\" + column.propertyName]);\n });\n mapToEntity[propertyName].push(value);\n }\n }\n });\n });\n }*/\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Loads relation ids for the many-to-many relation.\n */\n RelationIdLoader.prototype.loadForManyToMany = function (relation, entities, relatedEntities) {\n var junctionMetadata = relation.junctionEntityMetadata;\n var mainAlias = junctionMetadata.name;\n var columns = relation.isOwning ? junctionMetadata.ownerColumns : junctionMetadata.inverseColumns;\n var inverseColumns = relation.isOwning ? junctionMetadata.inverseColumns : junctionMetadata.ownerColumns;\n var qb = this.connection.createQueryBuilder();\n // select all columns from junction table\n junctionMetadata.ownerColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n junctionMetadata.inverseColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + relation.propertyPath.replace(\".\", \"_\") + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n // add conditions for the given entities\n var condition1 = \"\";\n if (columns.length === 1) {\n qb.setParameter(\"values1\", entities.map(function (entity) { return columns[0].referencedColumn.getEntityValue(entity); }));\n condition1 = mainAlias + \".\" + columns[0].propertyPath + \" IN (:...values1)\"; // todo: use ANY for postgres\n }\n else {\n condition1 = \"(\" + entities.map(function (entity, entityIndex) {\n return columns.map(function (column) {\n var paramName = \"entity1_\" + entityIndex + \"_\" + column.propertyName;\n qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity));\n return mainAlias + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \") + \")\";\n }\n // add conditions for the given inverse entities\n var condition2 = \"\";\n if (relatedEntities) {\n if (inverseColumns.length === 1) {\n qb.setParameter(\"values2\", relatedEntities.map(function (entity) { return inverseColumns[0].referencedColumn.getEntityValue(entity); }));\n condition2 = mainAlias + \".\" + inverseColumns[0].propertyPath + \" IN (:...values2)\"; // todo: use ANY for postgres\n }\n else {\n condition2 = \"(\" + relatedEntities.map(function (entity, entityIndex) {\n return inverseColumns.map(function (column) {\n var paramName = \"entity2_\" + entityIndex + \"_\" + column.propertyName;\n qb.setParameter(paramName, column.referencedColumn.getEntityValue(entity));\n return mainAlias + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \") + \")\";\n }\n }\n // execute query\n return qb\n .from(junctionMetadata.target, mainAlias)\n .where(condition1 + (condition2 ? \" AND \" + condition2 : \"\"))\n .getRawMany();\n };\n /**\n * Loads relation ids for the many-to-one and one-to-one owner relations.\n */\n RelationIdLoader.prototype.loadForManyToOneAndOneToOneOwner = function (relation, entities, relatedEntities) {\n var mainAlias = relation.entityMetadata.targetName;\n // select all columns we need\n var qb = this.connection.createQueryBuilder();\n relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n var columnName = primaryColumn.entityMetadata.name + \"_\" + primaryColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + primaryColumn.propertyPath, columnName);\n });\n relation.joinColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + relation.propertyPath.replace(\".\", \"_\") + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n // add condition for entities\n var condition = \"\";\n if (relation.entityMetadata.primaryColumns.length === 1) {\n qb.setParameter(\"values\", entities.map(function (entity) { return relation.entityMetadata.primaryColumns[0].getEntityValue(entity); }));\n condition = mainAlias + \".\" + relation.entityMetadata.primaryColumns[0].propertyPath + \" IN (:...values)\";\n }\n else {\n condition = entities.map(function (entity, entityIndex) {\n return relation.entityMetadata.primaryColumns.map(function (column, columnIndex) {\n var paramName = \"entity\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return mainAlias + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n }\n // execute query\n return qb.from(relation.entityMetadata.target, mainAlias)\n .where(condition)\n .getRawMany();\n };\n /**\n * Loads relation ids for the one-to-many and one-to-one not owner relations.\n */\n RelationIdLoader.prototype.loadForOneToManyAndOneToOneNotOwner = function (relation, entities, relatedEntities) {\n relation = relation.inverseRelation;\n var mainAlias = relation.entityMetadata.targetName;\n // select all columns we need\n var qb = this.connection.createQueryBuilder();\n relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n var columnName = primaryColumn.entityMetadata.name + \"_\" + relation.inverseRelation.propertyPath.replace(\".\", \"_\") + \"_\" + primaryColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + primaryColumn.propertyPath, columnName);\n });\n relation.joinColumns.forEach(function (column) {\n var columnName = column.referencedColumn.entityMetadata.name + \"_\" + column.referencedColumn.propertyPath.replace(\".\", \"_\");\n qb.addSelect(mainAlias + \".\" + column.propertyPath, columnName);\n });\n // add condition for entities\n var condition = \"\";\n if (relation.joinColumns.length === 1) {\n qb.setParameter(\"values\", entities.map(function (entity) { return relation.joinColumns[0].referencedColumn.getEntityValue(entity); }));\n condition = mainAlias + \".\" + relation.joinColumns[0].propertyPath + \" IN (:...values)\";\n }\n else {\n condition = entities.map(function (entity, entityIndex) {\n return relation.joinColumns.map(function (joinColumn, joinColumnIndex) {\n var paramName = \"entity\" + entityIndex + \"_\" + joinColumnIndex;\n qb.setParameter(paramName, joinColumn.referencedColumn.getEntityValue(entity));\n return mainAlias + \".\" + joinColumn.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(function (condition) { return \"(\" + condition + \")\"; }).join(\" OR \");\n }\n // execute query\n return qb.from(relation.entityMetadata.target, mainAlias)\n .where(condition)\n .getRawMany();\n };\n return RelationIdLoader;\n}());\nexport { RelationIdLoader };\n\n//# sourceMappingURL=RelationIdLoader.js.map\n","import { __awaiter, __generator, __values } from \"tslib\";\nimport { DefaultNamingStrategy } from \"../naming-strategy/DefaultNamingStrategy\";\nimport { CannotExecuteNotConnectedError } from \"../error/CannotExecuteNotConnectedError\";\nimport { CannotConnectAlreadyConnectedError } from \"../error/CannotConnectAlreadyConnectedError\";\nimport { EntityMetadataNotFoundError } from \"../error/EntityMetadataNotFoundError\";\nimport { MigrationExecutor } from \"../migration/MigrationExecutor\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { MongoEntityManager } from \"../entity-manager/MongoEntityManager\";\nimport { EntityMetadataValidator } from \"../metadata-builder/EntityMetadataValidator\";\nimport { QueryRunnerProviderAlreadyReleasedError } from \"../error/QueryRunnerProviderAlreadyReleasedError\";\nimport { EntityManagerFactory } from \"../entity-manager/EntityManagerFactory\";\nimport { DriverFactory } from \"../driver/DriverFactory\";\nimport { ConnectionMetadataBuilder } from \"./ConnectionMetadataBuilder\";\nimport { SelectQueryBuilder } from \"../query-builder/SelectQueryBuilder\";\nimport { LoggerFactory } from \"../logger/LoggerFactory\";\nimport { QueryResultCacheFactory } from \"../cache/QueryResultCacheFactory\";\nimport { SqljsEntityManager } from \"../entity-manager/SqljsEntityManager\";\nimport { RelationLoader } from \"../query-builder/RelationLoader\";\nimport { RelationIdLoader } from \"../query-builder/RelationIdLoader\";\nimport { EntitySchema } from \"../\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { ObjectUtils } from \"../util/ObjectUtils\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { DriverUtils } from \"../driver/DriverUtils\";\n/**\n * Connection is a single database ORM connection to a specific database.\n * Its not required to be a database connection, depend on database type it can create connection pool.\n * You can have multiple connections to multiple databases in your application.\n */\nvar Connection = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Connection(options) {\n /**\n * Migration instances that are registered for this connection.\n */\n this.migrations = [];\n /**\n * Entity subscriber instances that are registered for this connection.\n */\n this.subscribers = [];\n /**\n * All entity metadatas that are registered for this connection.\n */\n this.entityMetadatas = [];\n this.name = options.name || \"default\";\n this.options = options;\n this.logger = new LoggerFactory().create(this.options.logger, this.options.logging);\n this.driver = new DriverFactory().create(this);\n this.manager = this.createEntityManager();\n this.namingStrategy = options.namingStrategy || new DefaultNamingStrategy();\n this.queryResultCache = options.cache ? new QueryResultCacheFactory(this).create() : undefined;\n this.relationLoader = new RelationLoader(this);\n this.relationIdLoader = new RelationIdLoader(this);\n this.isConnected = false;\n }\n Object.defineProperty(Connection.prototype, \"mongoManager\", {\n // -------------------------------------------------------------------------\n // Public Accessors\n // -------------------------------------------------------------------------\n /**\n * Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\n * with any entity in this connection.\n *\n * Available only in mongodb connections.\n */\n get: function () {\n if (!(this.manager instanceof MongoEntityManager))\n throw new Error(\"MongoEntityManager is only available for MongoDB databases.\");\n return this.manager;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"sqljsManager\", {\n /**\n * Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n *\n * Available only in connection with the sqljs driver.\n */\n get: function () {\n if (!(this.manager instanceof SqljsEntityManager))\n throw new Error(\"SqljsEntityManager is only available for Sqljs databases.\");\n return this.manager;\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n */\n Connection.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isConnected)\n throw new CannotConnectAlreadyConnectedError(this.name);\n // connect to the database via its driver\n return [4 /*yield*/, this.driver.connect()];\n case 1:\n // connect to the database via its driver\n _a.sent();\n if (!this.queryResultCache) return [3 /*break*/, 3];\n return [4 /*yield*/, this.queryResultCache.connect()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n // set connected status for the current connection\n ObjectUtils.assign(this, { isConnected: true });\n _a.label = 4;\n case 4:\n _a.trys.push([4, 12, , 14]);\n // build all metadatas registered in the current connection\n this.buildMetadatas();\n return [4 /*yield*/, this.driver.afterConnect()];\n case 5:\n _a.sent();\n if (!this.options.dropSchema) return [3 /*break*/, 7];\n return [4 /*yield*/, this.dropDatabase()];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7:\n if (!this.options.synchronize) return [3 /*break*/, 9];\n return [4 /*yield*/, this.synchronize()];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9:\n if (!this.options.migrationsRun) return [3 /*break*/, 11];\n return [4 /*yield*/, this.runMigrations({ transaction: this.options.migrationsTransactionMode })];\n case 10:\n _a.sent();\n _a.label = 11;\n case 11: return [3 /*break*/, 14];\n case 12:\n error_1 = _a.sent();\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n return [4 /*yield*/, this.close()];\n case 13:\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n _a.sent();\n throw error_1;\n case 14: return [2 /*return*/, this];\n }\n });\n });\n };\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n */\n Connection.prototype.close = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n return [4 /*yield*/, this.driver.disconnect()];\n case 1:\n _a.sent();\n if (!this.queryResultCache) return [3 /*break*/, 3];\n return [4 /*yield*/, this.queryResultCache.disconnect()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n ObjectUtils.assign(this, { isConnected: false });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates database schema for all entities registered in this connection.\n * Can be used only after connection to the database is established.\n *\n * @param dropBeforeSync If set to true then it drops the database with all its tables and data\n */\n Connection.prototype.synchronize = function (dropBeforeSync) {\n if (dropBeforeSync === void 0) { dropBeforeSync = false; }\n return __awaiter(this, void 0, void 0, function () {\n var schemaBuilder;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n if (!dropBeforeSync) return [3 /*break*/, 2];\n return [4 /*yield*/, this.dropDatabase()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n schemaBuilder = this.driver.createSchemaBuilder();\n return [4 /*yield*/, schemaBuilder.build()];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the database and all its data.\n * Be careful with this method on production since this method will erase all your database tables and their data.\n * Can be used only after connection to the database is established.\n */\n // TODO rename\n Connection.prototype.dropDatabase = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, databases_2, databases_1, databases_1_1, database, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.createQueryRunner();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 13, 15]);\n if (!(this.driver instanceof SqlServerDriver || this.driver instanceof MysqlDriver || this.driver instanceof AuroraDataApiDriver)) return [3 /*break*/, 10];\n databases_2 = this.driver.database ? [this.driver.database] : [];\n this.entityMetadatas.forEach(function (metadata) {\n if (metadata.database && databases_2.indexOf(metadata.database) === -1)\n databases_2.push(metadata.database);\n });\n _b.label = 2;\n case 2:\n _b.trys.push([2, 7, 8, 9]);\n databases_1 = __values(databases_2), databases_1_1 = databases_1.next();\n _b.label = 3;\n case 3:\n if (!!databases_1_1.done) return [3 /*break*/, 6];\n database = databases_1_1.value;\n return [4 /*yield*/, queryRunner.clearDatabase(database)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n databases_1_1 = databases_1.next();\n return [3 /*break*/, 3];\n case 6: return [3 /*break*/, 9];\n case 7:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 9];\n case 8:\n try {\n if (databases_1_1 && !databases_1_1.done && (_a = databases_1.return)) _a.call(databases_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 9: return [3 /*break*/, 12];\n case 10: return [4 /*yield*/, queryRunner.clearDatabase()];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [3 /*break*/, 15];\n case 13: return [4 /*yield*/, queryRunner.release()];\n case 14:\n _b.sent();\n return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Runs all pending migrations.\n * Can be used only after connection to the database is established.\n */\n Connection.prototype.runMigrations = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var migrationExecutor, successMigrations;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n migrationExecutor = new MigrationExecutor(this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n return [4 /*yield*/, migrationExecutor.executePendingMigrations()];\n case 1:\n successMigrations = _a.sent();\n return [2 /*return*/, successMigrations];\n }\n });\n });\n };\n /**\n * Reverts last executed migration.\n * Can be used only after connection to the database is established.\n */\n Connection.prototype.undoLastMigration = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var migrationExecutor;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n migrationExecutor = new MigrationExecutor(this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n return [4 /*yield*/, migrationExecutor.undoLastMigration()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Lists all migrations and whether they have been run.\n * Returns true if there are pending migrations\n */\n Connection.prototype.showMigrations = function () {\n return __awaiter(this, void 0, void 0, function () {\n var migrationExecutor;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isConnected) {\n throw new CannotExecuteNotConnectedError(this.name);\n }\n migrationExecutor = new MigrationExecutor(this);\n return [4 /*yield*/, migrationExecutor.showMigrations()];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Checks if entity metadata exist for the given entity class, target name or table name.\n */\n Connection.prototype.hasMetadata = function (target) {\n return !!this.findMetadata(target);\n };\n /**\n * Gets entity metadata for the given entity class or schema name.\n */\n Connection.prototype.getMetadata = function (target) {\n var metadata = this.findMetadata(target);\n if (!metadata)\n throw new EntityMetadataNotFoundError(target);\n return metadata;\n };\n /**\n * Gets repository for the given entity.\n */\n Connection.prototype.getRepository = function (target) {\n return this.manager.getRepository(target);\n };\n /**\n * Gets tree repository for the given entity class or name.\n * Only tree-type entities can have a TreeRepository, like ones decorated with @Tree decorator.\n */\n Connection.prototype.getTreeRepository = function (target) {\n return this.manager.getTreeRepository(target);\n };\n /**\n * Gets mongodb-specific repository for the given entity class or name.\n * Works only if connection is mongodb-specific.\n */\n Connection.prototype.getMongoRepository = function (target) {\n if (!(this.driver instanceof MongoDriver))\n throw new Error(\"You can use getMongoRepository only for MongoDB connections.\");\n return this.manager.getRepository(target);\n };\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n */\n Connection.prototype.getCustomRepository = function (customRepository) {\n return this.manager.getCustomRepository(customRepository);\n };\n Connection.prototype.transaction = function (isolationOrRunInTransaction, runInTransactionParam) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.manager.transaction(isolationOrRunInTransaction, runInTransactionParam)];\n });\n });\n };\n /**\n * Executes raw SQL query and returns raw database results.\n */\n Connection.prototype.query = function (query, parameters, queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var usedQueryRunner;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this instanceof MongoEntityManager)\n throw new Error(\"Queries aren't supported by MongoDB.\");\n if (queryRunner && queryRunner.isReleased)\n throw new QueryRunnerProviderAlreadyReleasedError();\n usedQueryRunner = queryRunner || this.createQueryRunner();\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 6]);\n return [4 /*yield*/, usedQueryRunner.query(query, parameters)];\n case 2: return [2 /*return*/, _a.sent()]; // await is needed here because we are using finally\n case 3:\n if (!!queryRunner) return [3 /*break*/, 5];\n return [4 /*yield*/, usedQueryRunner.release()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n Connection.prototype.createQueryBuilder = function (entityOrRunner, alias, queryRunner) {\n if (this instanceof MongoEntityManager)\n throw new Error(\"Query Builder is not supported by MongoDB.\");\n if (alias) {\n var metadata = this.getMetadata(entityOrRunner);\n return new SelectQueryBuilder(this, queryRunner)\n .select(alias)\n .from(metadata.target, alias);\n }\n else {\n return new SelectQueryBuilder(this, entityOrRunner);\n }\n };\n /**\n * Creates a query runner used for perform queries on a single database connection.\n * Using query runners you can control your queries to execute using single database connection and\n * manually control your database transaction.\n *\n * Mode is used in replication mode and indicates whatever you want to connect\n * to master database or any of slave databases.\n * If you perform writes you must use master database,\n * if you perform reads you can use slave databases.\n */\n Connection.prototype.createQueryRunner = function (mode) {\n if (mode === void 0) { mode = \"master\"; }\n var queryRunner = this.driver.createQueryRunner(mode);\n var manager = this.createEntityManager(queryRunner);\n Object.assign(queryRunner, { manager: manager });\n return queryRunner;\n };\n /**\n * Gets entity metadata of the junction table (many-to-many table).\n */\n Connection.prototype.getManyToManyMetadata = function (entityTarget, relationPropertyPath) {\n var relationMetadata = this.getMetadata(entityTarget).findRelationWithPropertyPath(relationPropertyPath);\n if (!relationMetadata)\n throw new Error(\"Relation \\\"\" + relationPropertyPath + \"\\\" was not found in \" + entityTarget + \" entity.\");\n if (!relationMetadata.isManyToMany)\n throw new Error(\"Relation \\\"\" + entityTarget + \"#\" + relationPropertyPath + \"\\\" does not have a many-to-many relationship.\" +\n \"You can use this method only on many-to-many relations.\");\n return relationMetadata.junctionEntityMetadata;\n };\n /**\n * Creates an Entity Manager for the current connection with the help of the EntityManagerFactory.\n */\n Connection.prototype.createEntityManager = function (queryRunner) {\n return new EntityManagerFactory().create(this, queryRunner);\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Finds exist entity metadata by the given entity class, target name or table name.\n */\n Connection.prototype.findMetadata = function (target) {\n return this.entityMetadatas.find(function (metadata) {\n if (metadata.target === target)\n return true;\n if (target instanceof EntitySchema) {\n return metadata.name === target.options.name;\n }\n if (typeof target === \"string\") {\n if (target.indexOf(\".\") !== -1) {\n return metadata.tablePath === target;\n }\n else {\n return metadata.name === target || metadata.tableName === target;\n }\n }\n return false;\n });\n };\n /**\n * Builds metadatas for all registered classes inside this connection.\n */\n Connection.prototype.buildMetadatas = function () {\n var connectionMetadataBuilder = new ConnectionMetadataBuilder(this);\n var entityMetadataValidator = new EntityMetadataValidator();\n // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process)\n var subscribers = connectionMetadataBuilder.buildSubscribers(this.options.subscribers || []);\n ObjectUtils.assign(this, { subscribers: subscribers });\n // build entity metadatas\n var entityMetadatas = connectionMetadataBuilder.buildEntityMetadatas(this.options.entities || []);\n ObjectUtils.assign(this, { entityMetadatas: entityMetadatas });\n // create migration instances\n var migrations = connectionMetadataBuilder.buildMigrations(this.options.migrations || []);\n ObjectUtils.assign(this, { migrations: migrations });\n this.driver.database = this.getDatabaseName();\n // validate all created entity metadatas to make sure user created entities are valid and correct\n entityMetadataValidator.validateMany(this.entityMetadatas.filter(function (metadata) { return metadata.tableType !== \"view\"; }), this.driver);\n };\n // This database name property is nested for replication configs.\n Connection.prototype.getDatabaseName = function () {\n var options = this.options;\n switch (options.type) {\n case \"mysql\":\n case \"mariadb\":\n case \"postgres\":\n case \"cockroachdb\":\n case \"mssql\":\n case \"oracle\":\n return DriverUtils.buildDriverOptions(options.replication ? options.replication.master : options).database;\n case \"mongodb\":\n return DriverUtils.buildMongoDBDriverOptions(options).database;\n default:\n return DriverUtils.buildDriverOptions(options).database;\n }\n };\n return Connection;\n}());\nexport { Connection };\n\n//# sourceMappingURL=Connection.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to get connection that does not exist.\n */\nvar ConnectionNotFoundError = /** @class */ (function (_super) {\n __extends(ConnectionNotFoundError, _super);\n function ConnectionNotFoundError(name) {\n var _this = _super.call(this) || this;\n _this.name = \"ConnectionNotFoundError\";\n Object.setPrototypeOf(_this, ConnectionNotFoundError.prototype);\n _this.message = \"Connection \\\"\" + name + \"\\\" was not found.\";\n return _this;\n }\n return ConnectionNotFoundError;\n}(Error));\nexport { ConnectionNotFoundError };\n\n//# sourceMappingURL=ConnectionNotFoundError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to recreate connection with the same name, but previous connection was not closed yet.\n */\nvar AlreadyHasActiveConnectionError = /** @class */ (function (_super) {\n __extends(AlreadyHasActiveConnectionError, _super);\n function AlreadyHasActiveConnectionError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"AlreadyHasActiveConnectionError\";\n Object.setPrototypeOf(_this, AlreadyHasActiveConnectionError.prototype);\n _this.message = \"Cannot create a new connection named \\\"\" + connectionName + \"\\\", because connection with such name \" +\n \"already exist and it now has an active connection session.\";\n return _this;\n }\n return AlreadyHasActiveConnectionError;\n}(Error));\nexport { AlreadyHasActiveConnectionError };\n\n//# sourceMappingURL=AlreadyHasActiveConnectionError.js.map\n","import { Connection } from \"./Connection\";\nimport { ConnectionNotFoundError } from \"../error/ConnectionNotFoundError\";\nimport { AlreadyHasActiveConnectionError } from \"../error/AlreadyHasActiveConnectionError\";\n/**\n * ConnectionManager is used to store and manage multiple orm connections.\n * It also provides useful factory methods to simplify connection creation.\n */\nvar ConnectionManager = /** @class */ (function () {\n function ConnectionManager() {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n /**\n * List of connections registered in this connection manager.\n */\n this.connections = [];\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if connection with the given name exist in the manager.\n */\n ConnectionManager.prototype.has = function (name) {\n return !!this.connections.find(function (connection) { return connection.name === name; });\n };\n /**\n * Gets registered connection with the given name.\n * If connection name is not given then it will get a default connection.\n * Throws error if connection with the given name was not found.\n */\n ConnectionManager.prototype.get = function (name) {\n if (name === void 0) { name = \"default\"; }\n var connection = this.connections.find(function (connection) { return connection.name === name; });\n if (!connection)\n throw new ConnectionNotFoundError(name);\n return connection;\n };\n /**\n * Creates a new connection based on the given connection options and registers it in the manager.\n * Connection won't be established, you'll need to manually call connect method to establish connection.\n */\n ConnectionManager.prototype.create = function (options) {\n // check if such connection is already registered\n var existConnection = this.connections.find(function (connection) { return connection.name === (options.name || \"default\"); });\n if (existConnection) {\n // if connection is registered and its not closed then throw an error\n if (existConnection.isConnected)\n throw new AlreadyHasActiveConnectionError(options.name || \"default\");\n // if its registered but closed then simply remove it from the manager\n this.connections.splice(this.connections.indexOf(existConnection), 1);\n }\n // create a new connection\n var connection = new Connection(options);\n this.connections.push(connection);\n return connection;\n };\n return ConnectionManager;\n}());\nexport { ConnectionManager };\n\n//# sourceMappingURL=ConnectionManager.js.map\n","import { __awaiter, __generator } from \"tslib\";\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsEnvReader = /** @class */ (function () {\n function ConnectionOptionsEnvReader() {\n }\n ConnectionOptionsEnvReader.prototype.read = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsEnvReader;\n}());\nexport { ConnectionOptionsEnvReader };\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsXmlReader = /** @class */ (function () {\n function ConnectionOptionsXmlReader() {\n }\n ConnectionOptionsXmlReader.prototype.read = function (path) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsXmlReader;\n}());\nexport { ConnectionOptionsXmlReader };\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsYmlReader = /** @class */ (function () {\n function ConnectionOptionsYmlReader() {\n }\n ConnectionOptionsYmlReader.prototype.read = function (path) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsYmlReader;\n}());\nexport { ConnectionOptionsYmlReader };\n/**\n * Dummy class for replacement via `package.json` in browser builds.\n *\n * If we don't include these functions typeorm will throw an error on runtime\n * as well as during webpack builds.\n */\nvar ConnectionOptionsReader = /** @class */ (function () {\n function ConnectionOptionsReader() {\n }\n ConnectionOptionsReader.prototype.all = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n ConnectionOptionsReader.prototype.get = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n ConnectionOptionsReader.prototype.has = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Cannot read connection options in a browser context.\");\n });\n });\n };\n return ConnectionOptionsReader;\n}());\nexport { ConnectionOptionsReader };\n\n//# sourceMappingURL=BrowserConnectionOptionsReaderDummy.js.map\n","export {};\n\n//# sourceMappingURL=EntityTarget.js.map\n","export {};\n\n//# sourceMappingURL=ObjectType.js.map\n","export {};\n\n//# sourceMappingURL=ObjectLiteral.js.map\n","export {};\n\n//# sourceMappingURL=DeepPartial.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when ORM cannot get method parameter's type.\n * Basically, when reflect-metadata is not available or tsconfig is not properly setup.\n */\nvar CannotReflectMethodParameterTypeError = /** @class */ (function (_super) {\n __extends(CannotReflectMethodParameterTypeError, _super);\n function CannotReflectMethodParameterTypeError(target, methodName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotReflectMethodParameterTypeError\";\n Object.setPrototypeOf(_this, CannotReflectMethodParameterTypeError.prototype);\n _this.message = \"Cannot get reflected type for a \\\"\" + methodName + \"\\\" method's parameter of \\\"\" + target.name + \"\\\" class. \" +\n \"Make sure you have turned on an \\\"emitDecoratorMetadata\\\": true option in tsconfig.json. \" +\n \"Also make sure you have imported \\\"reflect-metadata\\\" on top of the main entry file in your application.\";\n return _this;\n }\n return CannotReflectMethodParameterTypeError;\n}(Error));\nexport { CannotReflectMethodParameterTypeError };\n\n//# sourceMappingURL=CannotReflectMethodParameterTypeError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to execute operation that requires connection to be established.\n */\nvar ConnectionIsNotSetError = /** @class */ (function (_super) {\n __extends(ConnectionIsNotSetError, _super);\n function ConnectionIsNotSetError(dbType) {\n var _this = _super.call(this) || this;\n _this.name = \"ConnectionIsNotSetError\";\n Object.setPrototypeOf(_this, ConnectionIsNotSetError.prototype);\n _this.message = \"Connection with \" + dbType + \" database is not established. Check connection configuration.\";\n return _this;\n }\n return ConnectionIsNotSetError;\n}(Error));\nexport { ConnectionIsNotSetError };\n\n//# sourceMappingURL=ConnectionIsNotSetError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar MetadataAlreadyExistsError = /** @class */ (function (_super) {\n __extends(MetadataAlreadyExistsError, _super);\n function MetadataAlreadyExistsError(metadataType, constructor, propertyName) {\n var _this = _super.call(this) || this;\n _this.name = \"MetadataAlreadyExistsError\";\n Object.setPrototypeOf(_this, MetadataAlreadyExistsError.prototype);\n _this.message = metadataType + \" metadata already exists for the class constructor \" + JSON.stringify(constructor) +\n (propertyName ? \" on property \" + propertyName : \". If you previously renamed or moved entity class, make sure\" +\n \" that compiled version of old entity class source wasn't left in the compiler output directory.\");\n return _this;\n }\n return MetadataAlreadyExistsError;\n}(Error));\nexport { MetadataAlreadyExistsError };\n\n//# sourceMappingURL=MetadataAlreadyExistsError.js.map\n","import { __extends } from \"tslib\";\nvar PrimaryColumnCannotBeNullableError = /** @class */ (function (_super) {\n __extends(PrimaryColumnCannotBeNullableError, _super);\n function PrimaryColumnCannotBeNullableError(object, propertyName) {\n var _this = _super.call(this) || this;\n _this.name = \"PrimaryColumnCannotBeNullableError\";\n Object.setPrototypeOf(_this, PrimaryColumnCannotBeNullableError.prototype);\n _this.message = \"Primary column \" + object.constructor.name + \"#\" + propertyName + \" cannot be nullable. \" +\n \"Its not allowed for primary keys. Try to remove nullable option.\";\n return _this;\n }\n return PrimaryColumnCannotBeNullableError;\n}(Error));\nexport { PrimaryColumnCannotBeNullableError };\n\n//# sourceMappingURL=PrimaryColumnCannotBeNullableError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to access repository before connection is established.\n */\nvar NoConnectionForRepositoryError = /** @class */ (function (_super) {\n __extends(NoConnectionForRepositoryError, _super);\n function NoConnectionForRepositoryError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"NoConnectionForRepositoryError\";\n Object.setPrototypeOf(_this, NoConnectionForRepositoryError.prototype);\n _this.message = \"Cannot get a Repository for \\\"\" + connectionName + \" connection, because connection with the database \" +\n \"is not established yet. Call connection#connect method to establish connection.\";\n return _this;\n }\n return NoConnectionForRepositoryError;\n}(Error));\nexport { NoConnectionForRepositoryError };\n\n//# sourceMappingURL=NoConnectionForRepositoryError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar UsingJoinTableIsNotAllowedError = /** @class */ (function (_super) {\n __extends(UsingJoinTableIsNotAllowedError, _super);\n function UsingJoinTableIsNotAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinTableIsNotAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinTableIsNotAllowedError.prototype);\n _this.message = \"Using JoinTable on \" + entityMetadata.name + \"#\" + relation.propertyName + \" is wrong. \" +\n (entityMetadata.name + \"#\" + relation.propertyName + \" has \" + relation.relationType + \" relation, \") +\n \"however you can use JoinTable only on many-to-many relations.\";\n return _this;\n }\n return UsingJoinTableIsNotAllowedError;\n}(Error));\nexport { UsingJoinTableIsNotAllowedError };\n\n//# sourceMappingURL=UsingJoinTableIsNotAllowedError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar MissingJoinColumnError = /** @class */ (function (_super) {\n __extends(MissingJoinColumnError, _super);\n function MissingJoinColumnError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingJoinColumnError\";\n Object.setPrototypeOf(_this, MissingJoinColumnError.prototype);\n if (relation.inverseRelation) {\n _this.message = \"JoinColumn is missing on both sides of \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" +\n (relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" one-to-one relationship. \") +\n \"You need to put JoinColumn decorator on one of the sides.\";\n }\n else {\n _this.message = \"JoinColumn is missing on \" + entityMetadata.name + \"#\" + relation.propertyName + \" one-to-one relationship. \" +\n \"You need to put JoinColumn decorator on it.\";\n }\n return _this;\n }\n return MissingJoinColumnError;\n}(Error));\nexport { MissingJoinColumnError };\n\n//# sourceMappingURL=MissingJoinColumnError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to access entity manager before connection is established.\n */\nvar CannotGetEntityManagerNotConnectedError = /** @class */ (function (_super) {\n __extends(CannotGetEntityManagerNotConnectedError, _super);\n function CannotGetEntityManagerNotConnectedError(connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotGetEntityManagerNotConnectedError\";\n Object.setPrototypeOf(_this, CannotGetEntityManagerNotConnectedError.prototype);\n _this.message = \"Cannot get entity manager for \\\"\" + connectionName + \"\\\" connection because connection is not yet established.\";\n return _this;\n }\n return CannotGetEntityManagerNotConnectedError;\n}(Error));\nexport { CannotGetEntityManagerNotConnectedError };\n\n//# sourceMappingURL=CannotGetEntityManagerNotConnectedError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar MetadataWithSuchNameAlreadyExistsError = /** @class */ (function (_super) {\n __extends(MetadataWithSuchNameAlreadyExistsError, _super);\n function MetadataWithSuchNameAlreadyExistsError(metadataType, name) {\n var _this = _super.call(this) || this;\n _this.name = \"MetadataWithSuchNameAlreadyExistsError\";\n Object.setPrototypeOf(_this, MetadataWithSuchNameAlreadyExistsError.prototype);\n _this.message = metadataType + \" metadata with such name \" + name + \" already exists. \" +\n \"Do you apply decorator twice? Or maybe try to change a name?\";\n return _this;\n }\n return MetadataWithSuchNameAlreadyExistsError;\n}(Error));\nexport { MetadataWithSuchNameAlreadyExistsError };\n\n//# sourceMappingURL=MetadataWithSuchNameAlreadyExistsError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when consumer tries to use naming strategy that does not exist.\n */\nvar NamingStrategyNotFoundError = /** @class */ (function (_super) {\n __extends(NamingStrategyNotFoundError, _super);\n function NamingStrategyNotFoundError(strategyName, connectionName) {\n var _this = _super.call(this) || this;\n _this.name = \"NamingStrategyNotFoundError\";\n Object.setPrototypeOf(_this, NamingStrategyNotFoundError.prototype);\n var name = strategyName instanceof Function ? strategyName.name : strategyName;\n _this.message = \"Naming strategy \\\"\" + name + \"\\\" was not found. Looks like this naming strategy does not \" +\n (\"exist or it was not registered in current \\\"\" + connectionName + \"\\\" connection?\");\n return _this;\n }\n return NamingStrategyNotFoundError;\n}(Error));\nexport { NamingStrategyNotFoundError };\n\n//# sourceMappingURL=NamingStrategyNotFoundError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar MissingJoinTableError = /** @class */ (function (_super) {\n __extends(MissingJoinTableError, _super);\n function MissingJoinTableError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingJoinTableError\";\n Object.setPrototypeOf(_this, MissingJoinTableError.prototype);\n if (relation.inverseRelation) {\n _this.message = \"JoinTable is missing on both sides of \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" +\n (relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" many-to-many relationship. \") +\n \"You need to put decorator decorator on one of the sides.\";\n }\n else {\n _this.message = \"JoinTable is missing on \" + entityMetadata.name + \"#\" + relation.propertyName + \" many-to-many relationship. \" +\n \"You need to put JoinTable decorator on it.\";\n }\n return _this;\n }\n return MissingJoinTableError;\n}(Error));\nexport { MissingJoinTableError };\n\n//# sourceMappingURL=MissingJoinTableError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar UsingJoinColumnOnlyOnOneSideAllowedError = /** @class */ (function (_super) {\n __extends(UsingJoinColumnOnlyOnOneSideAllowedError, _super);\n function UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinColumnOnlyOnOneSideAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinColumnOnlyOnOneSideAllowedError.prototype);\n _this.message = \"Using JoinColumn is allowed only on one side of the one-to-one relationship. \" +\n (\"Both \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" + relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" \") +\n \"has JoinTable decorators. Choose one of them and left JoinTable decorator only on it.\";\n return _this;\n }\n return UsingJoinColumnOnlyOnOneSideAllowedError;\n}(Error));\nexport { UsingJoinColumnOnlyOnOneSideAllowedError };\n\n//# sourceMappingURL=UsingJoinColumnOnlyOnOneSideAllowedError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar UsingJoinTableOnlyOnOneSideAllowedError = /** @class */ (function (_super) {\n __extends(UsingJoinTableOnlyOnOneSideAllowedError, _super);\n function UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinTableOnlyOnOneSideAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinTableOnlyOnOneSideAllowedError.prototype);\n _this.message = \"Using JoinTable is allowed only on one side of the many-to-many relationship. \" +\n (\"Both \" + entityMetadata.name + \"#\" + relation.propertyName + \" and \" + relation.inverseEntityMetadata.name + \"#\" + relation.inverseRelation.propertyName + \" \") +\n \"has JoinTable decorators. Choose one of them and left JoinColumn decorator only on it.\";\n return _this;\n }\n return UsingJoinTableOnlyOnOneSideAllowedError;\n}(Error));\nexport { UsingJoinTableOnlyOnOneSideAllowedError };\n\n//# sourceMappingURL=UsingJoinTableOnlyOnOneSideAllowedError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown . Theoretically can't be thrown.\n */\nvar PersistedEntityNotFoundError = /** @class */ (function (_super) {\n __extends(PersistedEntityNotFoundError, _super);\n function PersistedEntityNotFoundError() {\n var _this = _super.call(this) || this;\n _this.name = \"PersistedEntityNotFoundError\";\n Object.setPrototypeOf(_this, PersistedEntityNotFoundError.prototype);\n _this.message = \"Internal error. Persisted entity was not found in the list of prepared operated entities.\";\n return _this;\n }\n return PersistedEntityNotFoundError;\n}(Error));\nexport { PersistedEntityNotFoundError };\n\n//# sourceMappingURL=PersistedEntityNotFoundError.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar UsingJoinColumnIsNotAllowedError = /** @class */ (function (_super) {\n __extends(UsingJoinColumnIsNotAllowedError, _super);\n function UsingJoinColumnIsNotAllowedError(entityMetadata, relation) {\n var _this = _super.call(this) || this;\n _this.name = \"UsingJoinColumnIsNotAllowedError\";\n Object.setPrototypeOf(_this, UsingJoinColumnIsNotAllowedError.prototype);\n _this.message = \"Using JoinColumn on \" + entityMetadata.name + \"#\" + relation.propertyName + \" is wrong. \" +\n \"You can use JoinColumn only on one-to-one and many-to-one relations.\";\n return _this;\n }\n return UsingJoinColumnIsNotAllowedError;\n}(Error));\nexport { UsingJoinColumnIsNotAllowedError };\n\n//# sourceMappingURL=UsingJoinColumnIsNotAllowedError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when ORM cannot get column's type automatically.\n * Basically, when reflect-metadata is not available or tsconfig is not properly setup.\n */\nvar ColumnTypeUndefinedError = /** @class */ (function (_super) {\n __extends(ColumnTypeUndefinedError, _super);\n function ColumnTypeUndefinedError(object, propertyName) {\n var _this = _super.call(this) || this;\n _this.name = \"ColumnTypeUndefinedError\";\n Object.setPrototypeOf(_this, ColumnTypeUndefinedError.prototype);\n _this.message = \"Column type for \" + object.constructor.name + \"#\" + propertyName + \" is not defined and cannot be guessed. \" +\n \"Make sure you have turned on an \\\"emitDecoratorMetadata\\\": true option in tsconfig.json. \" +\n \"Also make sure you have imported \\\"reflect-metadata\\\" on top of the main entry file in your application (before any entity imported).\" +\n \"If you are using JavaScript instead of TypeScript you must explicitly provide a column type.\";\n return _this;\n }\n return ColumnTypeUndefinedError;\n}(Error));\nexport { ColumnTypeUndefinedError };\n\n//# sourceMappingURL=ColumnTypeUndefinedError.js.map\n","export * from \"./CannotReflectMethodParameterTypeError\";\nexport * from \"./AlreadyHasActiveConnectionError\";\nexport * from \"./SubjectWithoutIdentifierError\";\nexport * from \"./CannotConnectAlreadyConnectedError\";\nexport * from \"./LockNotSupportedOnGivenDriverError\";\nexport * from \"./ConnectionIsNotSetError\";\nexport * from \"./CannotCreateEntityIdMapError\";\nexport * from \"./MetadataAlreadyExistsError\";\nexport * from \"./CannotDetermineEntityError\";\nexport * from \"./UpdateValuesMissingError\";\nexport * from \"./TreeRepositoryNotSupportedError\";\nexport * from \"./CustomRepositoryNotFoundError\";\nexport * from \"./TransactionNotStartedError\";\nexport * from \"./TransactionAlreadyStartedError\";\nexport * from \"./EntityNotFoundError\";\nexport * from \"./EntityMetadataNotFoundError\";\nexport * from \"./MustBeEntityError\";\nexport * from \"./OptimisticLockVersionMismatchError\";\nexport * from \"./LimitOnUpdateNotSupportedError\";\nexport * from \"./PrimaryColumnCannotBeNullableError\";\nexport * from \"./CustomRepositoryCannotInheritRepositoryError\";\nexport * from \"./QueryRunnerProviderAlreadyReleasedError\";\nexport * from \"./CannotAttachTreeChildrenEntityError\";\nexport * from \"./CustomRepositoryDoesNotHaveEntityError\";\nexport * from \"./MissingDeleteDateColumnError\";\nexport * from \"./NoConnectionForRepositoryError\";\nexport * from \"./CircularRelationsError\";\nexport * from \"./ReturningStatementNotSupportedError\";\nexport * from \"./UsingJoinTableIsNotAllowedError\";\nexport * from \"./MissingJoinColumnError\";\nexport * from \"./MissingPrimaryColumnError\";\nexport * from \"./EntityColumnNotFound\";\nexport * from \"./MissingDriverError\";\nexport * from \"./DriverPackageNotInstalledError\";\nexport * from \"./CannotGetEntityManagerNotConnectedError\";\nexport * from \"./ConnectionNotFoundError\";\nexport * from \"./NoVersionOrUpdateDateColumnError\";\nexport * from \"./InsertValuesMissingError\";\nexport * from \"./OptimisticLockCanNotBeUsedError\";\nexport * from \"./MetadataWithSuchNameAlreadyExistsError\";\nexport * from \"./DriverOptionNotSetError\";\nexport * from \"./FindRelationsNotFoundError\";\nexport * from \"./RepositoryNotFoundError\";\nexport * from \"./NamingStrategyNotFoundError\";\nexport * from \"./PessimisticLockTransactionRequiredError\";\nexport * from \"./RepositoryNotTreeError\";\nexport * from \"./DataTypeNotSupportedError\";\nexport * from \"./InitializedRelationError\";\nexport * from \"./MissingJoinTableError\";\nexport * from \"./QueryFailedError\";\nexport * from \"./NoNeedToReleaseEntityManagerError\";\nexport * from \"./UsingJoinColumnOnlyOnOneSideAllowedError\";\nexport * from \"./UsingJoinTableOnlyOnOneSideAllowedError\";\nexport * from \"./SubjectRemovedAndUpdatedError\";\nexport * from \"./PersistedEntityNotFoundError\";\nexport * from \"./UsingJoinColumnIsNotAllowedError\";\nexport * from \"./ColumnTypeUndefinedError\";\nexport * from \"./QueryRunnerAlreadyReleasedError\";\nexport * from \"./OffsetWithoutLimitNotSupportedError\";\nexport * from \"./CannotExecuteNotConnectedError\";\nexport * from \"./NoConnectionOptionError\";\n\n//# sourceMappingURL=index.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { ColumnTypeUndefinedError } from \"../../error/ColumnTypeUndefinedError\";\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(typeOrOptions, options) {\n return function (object, propertyName) {\n // normalize parameters\n var type;\n if (typeof typeOrOptions === \"string\" || typeOrOptions instanceof Function) {\n type = typeOrOptions;\n }\n else if (typeOrOptions) {\n options = typeOrOptions;\n type = typeOrOptions.type;\n }\n if (!options)\n options = {};\n // if type is not given explicitly then try to guess it\n var reflectMetadataType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n if (!type && reflectMetadataType) // if type is not given explicitly then try to guess it\n type = reflectMetadataType;\n // check if there is no type in column options then set type from first function argument, or guessed one\n if (!options.type && type)\n options.type = type;\n // specify HSTORE type if column is HSTORE\n if (options.type === \"hstore\" && !options.hstoreType)\n options.hstoreType = reflectMetadataType === Object ? \"object\" : \"string\";\n if (typeOrOptions instanceof Function) { // register an embedded\n getMetadataArgsStorage().embeddeds.push({\n target: object.constructor,\n propertyName: propertyName,\n isArray: reflectMetadataType === Array || options.array === true,\n prefix: options.prefix !== undefined ? options.prefix : undefined,\n type: typeOrOptions\n });\n }\n else { // register a regular column\n // if we still don't have a type then we need to give error to user that type is required\n if (!options.type)\n throw new ColumnTypeUndefinedError(object, propertyName);\n // create unique\n if (options.unique === true)\n getMetadataArgsStorage().uniques.push({ target: object.constructor, columns: [propertyName] });\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options\n });\n if (options.generated) {\n getMetadataArgsStorage().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: typeof options.generated === \"string\" ? options.generated : \"increment\"\n });\n }\n }\n };\n}\n\n//# sourceMappingURL=Column.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * This column will store a creation date of the inserted object.\n * Creation date is generated and inserted only once,\n * at the first time when you create an object, the value is inserted into the table, and is never touched again.\n */\nexport function CreateDateColumn(options) {\n return function (object, propertyName) {\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"createDate\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=CreateDateColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * This column will store a delete date of the soft-deleted object.\n * This date is being updated each time you soft-delete the object.\n */\nexport function DeleteDateColumn(options) {\n return function (object, propertyName) {\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"deleteDate\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=DeleteDateColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n * This column creates an integer PRIMARY COLUMN with generated set to true.\n */\nexport function PrimaryGeneratedColumn(strategyOrOptions, maybeOptions) {\n // normalize parameters\n var options = {};\n var strategy;\n if (strategyOrOptions) {\n if (typeof strategyOrOptions === \"string\")\n strategy = strategyOrOptions;\n if (strategyOrOptions instanceof Object) {\n strategy = \"increment\";\n Object.assign(options, strategyOrOptions);\n }\n }\n else {\n strategy = \"increment\";\n }\n if (maybeOptions instanceof Object)\n Object.assign(options, maybeOptions);\n return function (object, propertyName) {\n // if column type is not explicitly set then determine it based on generation strategy\n if (!options.type) {\n if (strategy === \"increment\") {\n options.type = Number;\n }\n else if (strategy === \"uuid\") {\n options.type = \"uuid\";\n }\n else if (strategy === \"rowid\") {\n options.type = \"int\";\n }\n }\n // explicitly set a primary and generated to column options\n options.primary = true;\n // register column metadata args\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options\n });\n // register generated metadata args\n getMetadataArgsStorage().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: strategy\n });\n };\n}\n\n//# sourceMappingURL=PrimaryGeneratedColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { ColumnTypeUndefinedError } from \"../../error/ColumnTypeUndefinedError\";\nimport { PrimaryColumnCannotBeNullableError } from \"../../error/PrimaryColumnCannotBeNullableError\";\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n * Primary columns also creates a PRIMARY KEY for this column in a db.\n */\nexport function PrimaryColumn(typeOrOptions, options) {\n return function (object, propertyName) {\n // normalize parameters\n var type;\n if (typeof typeOrOptions === \"string\") {\n type = typeOrOptions;\n }\n else {\n options = Object.assign({}, typeOrOptions);\n }\n if (!options)\n options = {};\n // if type is not given explicitly then try to guess it\n var reflectMetadataType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n if (!type && reflectMetadataType)\n type = reflectMetadataType;\n // check if there is no type in column options then set type from first function argument, or guessed one\n if (!options.type && type)\n options.type = type;\n // if we still don't have a type then we need to give error to user that type is required\n if (!options.type)\n throw new ColumnTypeUndefinedError(object, propertyName);\n // check if column is not nullable, because we cannot allow a primary key to be nullable\n if (options.nullable)\n throw new PrimaryColumnCannotBeNullableError(object, propertyName);\n // explicitly set a primary to column options\n options.primary = true;\n // create and register a new column metadata\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options\n });\n if (options.generated) {\n getMetadataArgsStorage().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: typeof options.generated === \"string\" ? options.generated : \"increment\"\n });\n }\n };\n}\n\n//# sourceMappingURL=PrimaryColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * This column will store an update date of the updated object.\n * This date is being updated each time you persist the object.\n */\nexport function UpdateDateColumn(options) {\n return function (object, propertyName) {\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"updateDate\",\n options: options ? options : {}\n });\n };\n}\n\n//# sourceMappingURL=UpdateDateColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * This column will store a number - version of the entity.\n * Every time your entity will be persisted, this number will be increased by one -\n * so you can organize visioning and update strategies of your entity.\n */\nexport function VersionColumn(options) {\n return function (object, propertyName) {\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"version\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=VersionColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * ViewColumn decorator is used to mark a specific class property as a view column.\n */\nexport function ViewColumn(options) {\n return function (object, propertyName) {\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options || {}\n });\n };\n}\n\n//# sourceMappingURL=ViewColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Special type of column that is available only for MongoDB database.\n * Marks your entity's column to be an object id.\n */\nexport function ObjectIdColumn(options) {\n return function (object, propertyName) {\n // if column options are not given then create a new empty options\n if (!options)\n options = {};\n options.primary = true;\n if (!options.name)\n options.name = \"_id\";\n // create and register a new column metadata\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"objectId\",\n options: options\n });\n };\n}\n\n//# sourceMappingURL=ObjectIdColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { EventListenerTypes } from \"../../metadata/types/EventListenerTypes\";\n/**\n * Calls a method on which this decorator is applied after this entity insertion.\n */\nexport function AfterInsert() {\n return function (object, propertyName) {\n getMetadataArgsStorage().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: EventListenerTypes.AFTER_INSERT\n });\n };\n}\n\n//# sourceMappingURL=AfterInsert.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { EventListenerTypes } from \"../../metadata/types/EventListenerTypes\";\n/**\n * Calls a method on which this decorator is applied after entity is loaded.\n */\nexport function AfterLoad() {\n return function (object, propertyName) {\n getMetadataArgsStorage().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: EventListenerTypes.AFTER_LOAD\n });\n };\n}\n\n//# sourceMappingURL=AfterLoad.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { EventListenerTypes } from \"../../metadata/types/EventListenerTypes\";\n/**\n * Calls a method on which this decorator is applied after this entity removal.\n */\nexport function AfterRemove() {\n return function (object, propertyName) {\n getMetadataArgsStorage().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: EventListenerTypes.AFTER_REMOVE\n });\n };\n}\n\n//# sourceMappingURL=AfterRemove.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { EventListenerTypes } from \"../../metadata/types/EventListenerTypes\";\n/**\n * Calls a method on which this decorator is applied after this entity update.\n */\nexport function AfterUpdate() {\n return function (object, propertyName) {\n getMetadataArgsStorage().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: EventListenerTypes.AFTER_UPDATE\n });\n };\n}\n\n//# sourceMappingURL=AfterUpdate.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { EventListenerTypes } from \"../../metadata/types/EventListenerTypes\";\n/**\n * Calls a method on which this decorator is applied before this entity insertion.\n */\nexport function BeforeInsert() {\n return function (object, propertyName) {\n getMetadataArgsStorage().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: EventListenerTypes.BEFORE_INSERT\n });\n };\n}\n\n//# sourceMappingURL=BeforeInsert.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { EventListenerTypes } from \"../../metadata/types/EventListenerTypes\";\n/**\n * Calls a method on which this decorator is applied before this entity removal.\n */\nexport function BeforeRemove() {\n return function (object, propertyName) {\n getMetadataArgsStorage().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: EventListenerTypes.BEFORE_REMOVE\n });\n };\n}\n\n//# sourceMappingURL=BeforeRemove.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { EventListenerTypes } from \"../../metadata/types/EventListenerTypes\";\n/**\n * Calls a method on which this decorator is applied before this entity update.\n */\nexport function BeforeUpdate() {\n return function (object, propertyName) {\n getMetadataArgsStorage().entityListeners.push({\n target: object.constructor,\n propertyName: propertyName,\n type: EventListenerTypes.BEFORE_UPDATE\n });\n };\n}\n\n//# sourceMappingURL=BeforeUpdate.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Classes decorated with this decorator will listen to ORM events and their methods will be triggered when event\n * occurs. Those classes must implement EventSubscriberInterface interface.\n */\nexport function EventSubscriber() {\n return function (target) {\n getMetadataArgsStorage().entitySubscribers.push({\n target: target\n });\n };\n}\n\n//# sourceMappingURL=EventSubscriber.js.map\n","export {};\n\n//# sourceMappingURL=ColumnOptions.js.map\n","export {};\n\n//# sourceMappingURL=IndexOptions.js.map\n","export {};\n\n//# sourceMappingURL=JoinColumnOptions.js.map\n","export {};\n\n//# sourceMappingURL=JoinTableOptions.js.map\n","export {};\n\n//# sourceMappingURL=RelationOptions.js.map\n","export {};\n\n//# sourceMappingURL=EntityOptions.js.map\n","export {};\n\n//# sourceMappingURL=ValueTransformer.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * JoinColumn decorator used on one-to-one relations to specify owner side of relationship.\n * It also can be used on both one-to-one and many-to-one relations to specify custom column name\n * or custom referenced column.\n */\nexport function JoinColumn(optionsOrOptionsArray) {\n return function (object, propertyName) {\n var options = Array.isArray(optionsOrOptionsArray) ? optionsOrOptionsArray : [optionsOrOptionsArray || {}];\n options.forEach(function (options) {\n getMetadataArgsStorage().joinColumns.push({\n target: object.constructor,\n propertyName: propertyName,\n name: options.name,\n referencedColumnName: options.referencedColumnName\n });\n });\n };\n}\n\n//# sourceMappingURL=JoinColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * JoinTable decorator is used in many-to-many relationship to specify owner side of relationship.\n * Its also used to set a custom junction table's name, column names and referenced columns.\n */\nexport function JoinTable(options) {\n return function (object, propertyName) {\n options = options || {};\n getMetadataArgsStorage().joinTables.push({\n target: object.constructor,\n propertyName: propertyName,\n name: options.name,\n joinColumns: (options && options.joinColumn ? [options.joinColumn] : options.joinColumns),\n inverseJoinColumns: (options && options.inverseJoinColumn ? [options.inverseJoinColumn] : options.inverseJoinColumns),\n schema: options && options.schema ? options.schema : undefined,\n database: options && options.database ? options.database : undefined,\n });\n };\n}\n\n//# sourceMappingURL=JoinTable.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Many-to-many is a type of relationship when Entity1 can have multiple instances of Entity2, and Entity2 can have\n * multiple instances of Entity1. To achieve it, this type of relation creates a junction table, where it storage\n * entity1 and entity2 ids. This is owner side of the relationship.\n */\nexport function ManyToMany(typeFunctionOrTarget, inverseSideOrOptions, options) {\n // normalize parameters\n var inverseSideProperty;\n if (typeof inverseSideOrOptions === \"object\") {\n options = inverseSideOrOptions;\n }\n else {\n inverseSideProperty = inverseSideOrOptions;\n }\n return function (object, propertyName) {\n if (!options)\n options = {};\n // now try to determine it its lazy relation\n var isLazy = options.lazy === true;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n getMetadataArgsStorage().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n relationType: \"many-to-many\",\n isLazy: isLazy,\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSideProperty,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=ManyToMany.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * A many-to-one relation allows creating the type of relation where Entity1 can have a single instance of Entity2, but\n * Entity2 can have multiple instances of Entity1. Entity1 is the owner of the relationship, and stores the id of\n * Entity2 on its side of the relation.\n */\nexport function ManyToOne(typeFunctionOrTarget, inverseSideOrOptions, options) {\n // Normalize parameters.\n var inverseSideProperty;\n if (typeof inverseSideOrOptions === \"object\") {\n options = inverseSideOrOptions;\n }\n else {\n inverseSideProperty = inverseSideOrOptions;\n }\n return function (object, propertyName) {\n if (!options)\n options = {};\n // Now try to determine if it is a lazy relation.\n var isLazy = options && options.lazy === true ? true : false;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n getMetadataArgsStorage().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n relationType: \"many-to-one\",\n isLazy: isLazy,\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSideProperty,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=ManyToOne.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * A one-to-many relation allows creating the type of relation where Entity1 can have multiple instances of Entity2,\n * but Entity2 has only one Entity1. Entity2 is the owner of the relationship, and stores the id of Entity1 on its\n * side of the relation.\n */\nexport function OneToMany(typeFunctionOrTarget, inverseSide, options) {\n return function (object, propertyName) {\n if (!options)\n options = {};\n // Now try to determine if it is a lazy relation.\n var isLazy = options && options.lazy === true ? true : false;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n getMetadataArgsStorage().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n isLazy: isLazy,\n relationType: \"one-to-many\",\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSide,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=OneToMany.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * One-to-one relation allows to create direct relation between two entities. Entity1 have only one Entity2.\n * Entity1 is an owner of the relationship, and storages Entity1 id on its own side.\n */\nexport function OneToOne(typeFunctionOrTarget, inverseSideOrOptions, options) {\n // normalize parameters\n var inverseSideProperty;\n if (typeof inverseSideOrOptions === \"object\") {\n options = inverseSideOrOptions;\n }\n else {\n inverseSideProperty = inverseSideOrOptions;\n }\n return function (object, propertyName) {\n if (!options)\n options = {};\n // now try to determine it its lazy relation\n var isLazy = options && options.lazy === true ? true : false;\n if (!isLazy && Reflect && Reflect.getMetadata) { // automatic determination\n var reflectedType = Reflect.getMetadata(\"design:type\", object, propertyName);\n if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n isLazy = true;\n }\n getMetadataArgsStorage().relations.push({\n target: object.constructor,\n propertyName: propertyName,\n // propertyType: reflectedType,\n isLazy: isLazy,\n relationType: \"one-to-one\",\n type: typeFunctionOrTarget,\n inverseSideProperty: inverseSideProperty,\n options: options\n });\n };\n}\n\n//# sourceMappingURL=OneToOne.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Holds a number of children in the closure table of the column.\n *\n * @deprecated Do not use this decorator, it may be removed in the future versions\n */\nexport function RelationCount(relation, alias, queryBuilderFactory) {\n return function (object, propertyName) {\n getMetadataArgsStorage().relationCounts.push({\n target: object.constructor,\n propertyName: propertyName,\n relation: relation,\n alias: alias,\n queryBuilderFactory: queryBuilderFactory\n });\n };\n}\n\n//# sourceMappingURL=RelationCount.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Special decorator used to extract relation id into separate entity property.\n *\n * @experimental\n */\nexport function RelationId(relation, alias, queryBuilderFactory) {\n return function (object, propertyName) {\n getMetadataArgsStorage().relationIds.push({\n target: object.constructor,\n propertyName: propertyName,\n relation: relation,\n alias: alias,\n queryBuilderFactory: queryBuilderFactory\n });\n };\n}\n\n//# sourceMappingURL=RelationId.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * This decorator is used to mark classes that will be an entity (table or document depend on database type).\n * Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it.\n */\nexport function Entity(nameOrOptions, maybeOptions) {\n var options = (typeof nameOrOptions === \"object\" ? nameOrOptions : maybeOptions) || {};\n var name = typeof nameOrOptions === \"string\" ? nameOrOptions : options.name;\n return function (target) {\n getMetadataArgsStorage().tables.push({\n target: target,\n name: name,\n type: \"regular\",\n orderBy: options.orderBy ? options.orderBy : undefined,\n engine: options.engine ? options.engine : undefined,\n database: options.database ? options.database : undefined,\n schema: options.schema ? options.schema : undefined,\n synchronize: options.synchronize,\n withoutRowid: options.withoutRowid\n });\n };\n}\n\n//# sourceMappingURL=Entity.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Special type of the table used in the single-table inherited tables.\n */\nexport function ChildEntity(discriminatorValue) {\n return function (target) {\n // register a table metadata\n getMetadataArgsStorage().tables.push({\n target: target,\n type: \"entity-child\",\n });\n // register discriminator value if it was provided\n if (typeof discriminatorValue !== 'undefined') {\n getMetadataArgsStorage().discriminatorValues.push({\n target: target,\n value: discriminatorValue\n });\n }\n };\n}\n\n//# sourceMappingURL=ChildEntity.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Sets for entity to use table inheritance pattern.\n */\nexport function TableInheritance(options) {\n return function (target) {\n getMetadataArgsStorage().inheritances.push({\n target: target,\n pattern: options && options.pattern ? options.pattern : \"STI\",\n column: options && options.column ? typeof options.column === \"string\" ? { name: options.column } : options.column : undefined\n });\n };\n}\n\n//# sourceMappingURL=TableInheritance.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * This decorator is used to mark classes that will be an entity view.\n * Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it.\n */\nexport function ViewEntity(nameOrOptions, maybeOptions) {\n var options = (typeof nameOrOptions === \"object\" ? nameOrOptions : maybeOptions) || {};\n var name = typeof nameOrOptions === \"string\" ? nameOrOptions : options.name;\n return function (target) {\n getMetadataArgsStorage().tables.push({\n target: target,\n name: name,\n expression: options.expression,\n type: \"view\",\n database: options.database ? options.database : undefined,\n schema: options.schema ? options.schema : undefined,\n synchronize: options.synchronize === false ? false : true,\n materialized: !!options.materialized\n });\n };\n}\n\n//# sourceMappingURL=ViewEntity.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { getConnection, getMetadataArgsStorage, MongoRepository, Repository, TreeRepository } from \"../../\";\nexport function Transaction(connectionOrOptions) {\n return function (target, methodName, descriptor) {\n // save original method - we gonna need it\n var originalMethod = descriptor.value;\n // override method descriptor with proxy method\n descriptor.value = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var connectionName = \"default\";\n var isolationLevel = undefined;\n if (connectionOrOptions) {\n if (typeof connectionOrOptions === \"string\") {\n connectionName = connectionOrOptions;\n }\n else {\n if (connectionOrOptions.connectionName) {\n connectionName = connectionOrOptions.connectionName;\n }\n if (connectionOrOptions.isolation) {\n isolationLevel = connectionOrOptions.isolation;\n }\n }\n }\n var transactionCallback = function (entityManager) {\n var argsWithInjectedTransactionManagerAndRepositories;\n // filter all @TransactionManager() and @TransactionRepository() decorator usages for this method\n var transactionEntityManagerMetadatas = getMetadataArgsStorage()\n .filterTransactionEntityManagers(target.constructor, methodName)\n .reverse();\n var transactionRepositoryMetadatas = getMetadataArgsStorage()\n .filterTransactionRepository(target.constructor, methodName)\n .reverse();\n // if there are @TransactionManager() decorator usages the inject them\n if (transactionEntityManagerMetadatas.length > 0) {\n argsWithInjectedTransactionManagerAndRepositories = __spreadArray([], __read(args));\n // replace method params with injection of transactionEntityManager\n transactionEntityManagerMetadatas.forEach(function (metadata) {\n argsWithInjectedTransactionManagerAndRepositories.splice(metadata.index, 0, entityManager);\n });\n }\n else if (transactionRepositoryMetadatas.length === 0) { // otherwise if there's no transaction repositories in use, inject it as a first parameter\n argsWithInjectedTransactionManagerAndRepositories = __spreadArray([entityManager], __read(args));\n }\n else {\n argsWithInjectedTransactionManagerAndRepositories = __spreadArray([], __read(args));\n }\n // for every usage of @TransactionRepository decorator\n transactionRepositoryMetadatas.forEach(function (metadata) {\n var repositoryInstance;\n // detect type of the repository and get instance from transaction entity manager\n switch (metadata.repositoryType) {\n case Repository:\n repositoryInstance = entityManager.getRepository(metadata.entityType);\n break;\n case MongoRepository:\n repositoryInstance = entityManager.getMongoRepository(metadata.entityType);\n break;\n case TreeRepository:\n repositoryInstance = entityManager.getTreeRepository(metadata.entityType);\n break;\n // if not the TypeORM's ones, there must be custom repository classes\n default:\n repositoryInstance = entityManager.getCustomRepository(metadata.repositoryType);\n }\n // replace method param with injection of repository instance\n argsWithInjectedTransactionManagerAndRepositories.splice(metadata.index, 0, repositoryInstance);\n });\n return originalMethod.apply(_this, argsWithInjectedTransactionManagerAndRepositories);\n };\n if (isolationLevel) {\n return getConnection(connectionName).manager.transaction(isolationLevel, transactionCallback);\n }\n else {\n return getConnection(connectionName).manager.transaction(transactionCallback);\n }\n };\n };\n}\n\n//# sourceMappingURL=Transaction.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Injects transaction's entity manager into the method wrapped with @Transaction decorator.\n */\nexport function TransactionManager() {\n return function (object, methodName, index) {\n getMetadataArgsStorage().transactionEntityManagers.push({\n target: object.constructor,\n methodName: methodName,\n index: index,\n });\n };\n}\n\n//# sourceMappingURL=TransactionManager.js.map\n","import { getMetadataArgsStorage } from \"../../\";\nimport { CannotReflectMethodParameterTypeError } from \"../../error/CannotReflectMethodParameterTypeError\";\n/**\n * Injects transaction's repository into the method wrapped with @Transaction decorator.\n */\nexport function TransactionRepository(entityType) {\n return function (object, methodName, index) {\n // get repository type\n var repositoryType;\n try {\n repositoryType = Reflect.getOwnMetadata(\"design:paramtypes\", object, methodName)[index];\n }\n catch (err) {\n throw new CannotReflectMethodParameterTypeError(object.constructor, methodName);\n }\n getMetadataArgsStorage().transactionRepositories.push({\n target: object.constructor,\n methodName: methodName,\n index: index,\n repositoryType: repositoryType,\n entityType: entityType,\n });\n };\n}\n\n//# sourceMappingURL=TransactionRepository.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Creates a \"level\"/\"length\" column to the table that holds a closure table.\n */\nexport function TreeLevelColumn() {\n return function (object, propertyName) {\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"treeLevel\",\n options: {}\n });\n };\n}\n\n//# sourceMappingURL=TreeLevelColumn.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Marks a entity property as a parent of the tree.\n * \"Tree parent\" indicates who owns (is a parent) of this entity in tree structure.\n */\nexport function TreeParent() {\n return function (object, propertyName) {\n // now try to determine it its lazy relation\n var reflectedType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n var isLazy = (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\") || false;\n getMetadataArgsStorage().relations.push({\n isTreeParent: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"many-to-one\",\n type: function () { return object.constructor; },\n options: {}\n });\n };\n}\n\n//# sourceMappingURL=TreeParent.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Marks a entity property as a children of the tree.\n * \"Tree children\" will contain all children (bind) of this entity.\n */\nexport function TreeChildren(options) {\n return function (object, propertyName) {\n if (!options)\n options = {};\n // now try to determine it its lazy relation\n var reflectedType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(\"design:type\", object, propertyName) : undefined;\n var isLazy = (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\") || false;\n // add one-to-many relation for this\n getMetadataArgsStorage().relations.push({\n isTreeChildren: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"one-to-many\",\n type: function () { return object.constructor; },\n options: options\n });\n };\n}\n\n//# sourceMappingURL=TreeChildren.js.map\n","import { getMetadataArgsStorage } from \"../../\";\n/**\n * Marks entity to work like a tree.\n * Tree pattern that will be used for the tree entity should be specified.\n * @TreeParent decorator must be used in tree entities.\n * TreeRepository can be used to manipulate with tree entities.\n */\nexport function Tree(type, options) {\n return function (target) {\n getMetadataArgsStorage().trees.push({\n target: target,\n type: type,\n options: type === \"closure-table\" ? options : undefined\n });\n };\n}\n\n//# sourceMappingURL=Tree.js.map\n","import { getMetadataArgsStorage } from \"../\";\n/**\n * Creates a database index.\n * Can be used on entity property or on entity.\n * Can create indices with composite columns when used on entity.\n */\nexport function Index(nameOrFieldsOrOptions, maybeFieldsOrOptions, maybeOptions) {\n // normalize parameters\n var name = typeof nameOrFieldsOrOptions === \"string\" ? nameOrFieldsOrOptions : undefined;\n var fields = typeof nameOrFieldsOrOptions === \"string\" ? maybeFieldsOrOptions : nameOrFieldsOrOptions;\n var options = (typeof nameOrFieldsOrOptions === \"object\" && !Array.isArray(nameOrFieldsOrOptions)) ? nameOrFieldsOrOptions : maybeOptions;\n if (!options)\n options = (typeof maybeFieldsOrOptions === \"object\" && !Array.isArray(maybeFieldsOrOptions)) ? maybeFieldsOrOptions : maybeOptions;\n return function (clsOrObject, propertyName) {\n getMetadataArgsStorage().indices.push({\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n columns: propertyName ? [propertyName] : fields,\n synchronize: options && options.synchronize === false ? false : true,\n where: options ? options.where : undefined,\n unique: options && options.unique ? true : false,\n spatial: options && options.spatial ? true : false,\n fulltext: options && options.fulltext ? true : false,\n parser: options ? options.parser : undefined,\n sparse: options && options.sparse ? true : false,\n background: options && options.background ? true : false,\n expireAfterSeconds: options ? options.expireAfterSeconds : undefined\n });\n };\n}\n\n//# sourceMappingURL=Index.js.map\n","import { getMetadataArgsStorage } from \"../index\";\n/**\n * Composite unique constraint must be set on entity classes and must specify entity's fields to be unique.\n */\nexport function Unique(nameOrFields, maybeFields) {\n var name = typeof nameOrFields === \"string\" ? nameOrFields : undefined;\n var fields = typeof nameOrFields === \"string\" ? maybeFields : nameOrFields;\n return function (clsOrObject, propertyName) {\n var columns = fields;\n if (propertyName !== undefined) {\n switch (typeof (propertyName)) {\n case \"string\":\n columns = [propertyName];\n break;\n case \"symbol\":\n columns = [propertyName.toString()];\n break;\n }\n }\n var args = {\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n columns: columns,\n };\n getMetadataArgsStorage().uniques.push(args);\n };\n}\n\n//# sourceMappingURL=Unique.js.map\n","import { getMetadataArgsStorage } from \"../\";\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nexport function Check(nameOrExpression, maybeExpression) {\n var name = maybeExpression ? nameOrExpression : undefined;\n var expression = maybeExpression ? maybeExpression : nameOrExpression;\n if (!expression)\n throw new Error(\"Check expression is required\");\n return function (clsOrObject, propertyName) {\n getMetadataArgsStorage().checks.push({\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n expression: expression\n });\n };\n}\n\n//# sourceMappingURL=Check.js.map\n","import { getMetadataArgsStorage } from \"../\";\n/**\n * Creates a database exclusion.\n * Can be used on entity.\n * Can create exclusions with composite columns when used on entity.\n */\nexport function Exclusion(nameOrExpression, maybeExpression) {\n var name = maybeExpression ? nameOrExpression : undefined;\n var expression = maybeExpression ? maybeExpression : nameOrExpression;\n if (!expression)\n throw new Error(\"Exclusion expression is required\");\n return function (clsOrObject, propertyName) {\n getMetadataArgsStorage().exclusions.push({\n target: propertyName ? clsOrObject.constructor : clsOrObject,\n name: name,\n expression: expression\n });\n };\n}\n\n//# sourceMappingURL=Exclusion.js.map\n","import { getMetadataArgsStorage } from \"../\";\n/**\n * Marks a column to generate a value on entity insertion.\n * There are three types of generation strategy - increment, uuid and rowid (cockroachdb only).\n * Increment uses a number which increases by one on each insertion.\n * Uuid generates a special UUID token.\n * Rowid supports only in CockroachDB and uses `unique_rowid()` function\n *\n * Note, some databases do not support non-primary generation columns.\n */\nexport function Generated(strategy) {\n if (strategy === void 0) { strategy = \"increment\"; }\n return function (object, propertyName) {\n getMetadataArgsStorage().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy: strategy\n });\n };\n}\n\n//# sourceMappingURL=Generated.js.map\n","import { getMetadataArgsStorage } from \"../\";\n/**\n * Used to declare a class as a custom repository.\n * Custom repository can manage some specific entity or just be generic.\n * Custom repository optionally can extend AbstractRepository, Repository or TreeRepository.\n */\nexport function EntityRepository(entity) {\n return function (target) {\n getMetadataArgsStorage().entityRepositories.push({\n target: target,\n entity: entity,\n });\n };\n}\n\n//# sourceMappingURL=EntityRepository.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: Any([...]) }\n */\nexport function Any(value) {\n return new FindOperator(\"any\", value);\n}\n\n//# sourceMappingURL=Any.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: Between(x, y) }\n */\nexport function Between(from, to) {\n return new FindOperator(\"between\", [from, to], true, true);\n}\n\n//# sourceMappingURL=Between.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: Equal(\"value\") }\n */\nexport function Equal(value) {\n return new FindOperator(\"equal\", value);\n}\n\n//# sourceMappingURL=Equal.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: IsNull() }\n */\nexport function IsNull() {\n return new FindOperator(\"isNull\", undefined, false);\n}\n\n//# sourceMappingURL=IsNull.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: LessThan(10) }\n */\nexport function LessThan(value) {\n return new FindOperator(\"lessThan\", value);\n}\n\n//# sourceMappingURL=LessThan.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: LessThanOrEqual(10) }\n */\nexport function LessThanOrEqual(value) {\n return new FindOperator(\"lessThanOrEqual\", value);\n}\n\n//# sourceMappingURL=LessThanOrEqual.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: ILike(\"%SOME string%\") }\n */\nexport function ILike(value) {\n return new FindOperator(\"ilike\", value);\n}\n\n//# sourceMappingURL=ILike.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: Like(\"%some sting%\") }\n */\nexport function Like(value) {\n return new FindOperator(\"like\", value);\n}\n\n//# sourceMappingURL=Like.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: MoreThan(10) }\n */\nexport function MoreThan(value) {\n return new FindOperator(\"moreThan\", value);\n}\n\n//# sourceMappingURL=MoreThan.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: MoreThanOrEqual(10) }\n */\nexport function MoreThanOrEqual(value) {\n return new FindOperator(\"moreThanOrEqual\", value);\n}\n\n//# sourceMappingURL=MoreThanOrEqual.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Used to negotiate expression.\n * Example: { title: not(\"hello\") } will return entities where title not equal to \"hello\".\n */\nexport function Not(value) {\n return new FindOperator(\"not\", value);\n}\n\n//# sourceMappingURL=Not.js.map\n","import { FindOperator } from \"../FindOperator\";\nexport function Raw(valueOrSqlGenerator, sqlGeneratorParameters) {\n if (typeof valueOrSqlGenerator !== 'function') {\n return new FindOperator(\"raw\", valueOrSqlGenerator, false);\n }\n return new FindOperator(\"raw\", [], true, true, valueOrSqlGenerator, sqlGeneratorParameters);\n}\n\n//# sourceMappingURL=Raw.js.map\n","export {};\n\n//# sourceMappingURL=FindConditions.js.map\n","export {};\n\n//# sourceMappingURL=FindManyOptions.js.map\n","export {};\n\n//# sourceMappingURL=FindOneOptions.js.map\n","export {};\n\n//# sourceMappingURL=FindOperatorType.js.map\n","export {};\n\n//# sourceMappingURL=JoinOptions.js.map\n","export {};\n\n//# sourceMappingURL=OrderByCondition.js.map\n","export {};\n\n//# sourceMappingURL=Logger.js.map\n","export {};\n\n//# sourceMappingURL=LoggerOptions.js.map\n","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { getConnection } from \"../index\";\nimport { ObjectUtils } from \"../util/ObjectUtils\";\n/**\n * Base abstract entity for all entities, used in ActiveRecord patterns.\n */\nvar BaseEntity = /** @class */ (function () {\n function BaseEntity() {\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n BaseEntity.prototype.hasId = function () {\n return this.constructor.getRepository().hasId(this);\n };\n /**\n * Saves current entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n BaseEntity.prototype.save = function (options) {\n return this.constructor.getRepository().save(this, options);\n };\n /**\n * Removes current entity from the database.\n */\n BaseEntity.prototype.remove = function (options) {\n return this.constructor.getRepository().remove(this, options);\n };\n /**\n * Records the delete date of current entity.\n */\n BaseEntity.prototype.softRemove = function (options) {\n return this.constructor.getRepository().softRemove(this, options);\n };\n /**\n * Recovers a given entity in the database.\n */\n BaseEntity.prototype.recover = function (options) {\n return this.constructor.getRepository().recover(this, options);\n };\n /**\n * Reloads entity data from the database.\n */\n BaseEntity.prototype.reload = function () {\n return __awaiter(this, void 0, void 0, function () {\n var base, newestEntity;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n base = this.constructor;\n return [4 /*yield*/, base.getRepository().findOneOrFail(base.getId(this))];\n case 1:\n newestEntity = _a.sent();\n ObjectUtils.assign(this, newestEntity);\n return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n /**\n * Sets connection to be used by entity.\n */\n BaseEntity.useConnection = function (connection) {\n this.usedConnection = connection;\n };\n /**\n * Gets current entity's Repository.\n */\n BaseEntity.getRepository = function () {\n var connection = this.usedConnection || getConnection();\n return connection.getRepository(this);\n };\n Object.defineProperty(BaseEntity, \"target\", {\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n get: function () {\n return this.getRepository().target;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Checks entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n BaseEntity.hasId = function (entity) {\n return this.getRepository().hasId(entity);\n };\n /**\n * Gets entity mixed id.\n */\n BaseEntity.getId = function (entity) {\n return this.getRepository().getId(entity);\n };\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n BaseEntity.createQueryBuilder = function (alias) {\n return this.getRepository().createQueryBuilder(alias);\n };\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that present in entity schema.\n */\n BaseEntity.create = function (entityOrEntities) {\n return this.getRepository().create(entityOrEntities);\n };\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n BaseEntity.merge = function (mergeIntoEntity) {\n var _a;\n var entityLikes = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n entityLikes[_i - 1] = arguments[_i];\n }\n return (_a = this.getRepository()).merge.apply(_a, __spreadArray([mergeIntoEntity], __read(entityLikes)));\n };\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n BaseEntity.preload = function (entityLike) {\n return this.getRepository().preload(entityLike);\n };\n /**\n * Saves one or many given entities.\n */\n BaseEntity.save = function (entityOrEntities, options) {\n return this.getRepository().save(entityOrEntities, options);\n };\n /**\n * Removes one or many given entities.\n */\n BaseEntity.remove = function (entityOrEntities, options) {\n return this.getRepository().remove(entityOrEntities, options);\n };\n /**\n * Records the delete date of one or many given entities.\n */\n BaseEntity.softRemove = function (entityOrEntities, options) {\n return this.getRepository().softRemove(entityOrEntities, options);\n };\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n BaseEntity.insert = function (entity, options) {\n return this.getRepository().insert(entity, options);\n };\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n BaseEntity.update = function (criteria, partialEntity, options) {\n return this.getRepository().update(criteria, partialEntity, options);\n };\n /**\n * Deletes entities by a given criteria.\n * Unlike remove method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n BaseEntity.delete = function (criteria, options) {\n return this.getRepository().delete(criteria, options);\n };\n /**\n * Counts entities that match given find options or conditions.\n */\n BaseEntity.count = function (optionsOrConditions) {\n return this.getRepository().count(optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n */\n BaseEntity.find = function (optionsOrConditions) {\n return this.getRepository().find(optionsOrConditions);\n };\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n BaseEntity.findAndCount = function (optionsOrConditions) {\n return this.getRepository().findAndCount(optionsOrConditions);\n };\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n BaseEntity.findByIds = function (ids, optionsOrConditions) {\n return this.getRepository().findByIds(ids, optionsOrConditions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n BaseEntity.findOne = function (optionsOrConditions, maybeOptions) {\n return this.getRepository().findOne(optionsOrConditions, maybeOptions);\n };\n /**\n * Finds first entity that matches given conditions.\n */\n BaseEntity.findOneOrFail = function (optionsOrConditions, maybeOptions) {\n return this.getRepository().findOneOrFail(optionsOrConditions, maybeOptions);\n };\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n BaseEntity.query = function (query, parameters) {\n return this.getRepository().query(query, parameters);\n };\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n */\n BaseEntity.clear = function () {\n return this.getRepository().clear();\n };\n return BaseEntity;\n}());\nexport { BaseEntity };\n\n//# sourceMappingURL=BaseEntity.js.map\n","export {};\n\n//# sourceMappingURL=RemoveOptions.js.map\n","export {};\n\n//# sourceMappingURL=SaveOptions.js.map\n","import { EventEmitter, Readable, Writable } from \"../../platform/PlatformTools\";\n\n//# sourceMappingURL=typings.js.map\n","export {};\n\n//# sourceMappingURL=DatabaseType.js.map\n","export {};\n\n//# sourceMappingURL=ReplicationMode.js.map\n","import { __awaiter, __generator } from \"tslib\";\n/*!\n */\nimport \"reflect-metadata\";\nimport { ConnectionManager } from \"./connection/ConnectionManager\";\nimport { MetadataArgsStorage } from \"./metadata-args/MetadataArgsStorage\";\nimport { getFromContainer } from \"./container\";\nimport { PlatformTools } from \"./platform/PlatformTools\";\nimport { ConnectionOptionsReader } from \"./connection/ConnectionOptionsReader\";\n// -------------------------------------------------------------------------\n// Commonly Used exports\n// -------------------------------------------------------------------------\nexport * from \"./container\";\nexport * from \"./common/EntityTarget\";\nexport * from \"./common/ObjectType\";\nexport * from \"./common/ObjectLiteral\";\nexport * from \"./common/DeepPartial\";\nexport * from \"./error\";\nexport * from \"./decorator/columns/Column\";\nexport * from \"./decorator/columns/CreateDateColumn\";\nexport * from \"./decorator/columns/DeleteDateColumn\";\nexport * from \"./decorator/columns/PrimaryGeneratedColumn\";\nexport * from \"./decorator/columns/PrimaryColumn\";\nexport * from \"./decorator/columns/UpdateDateColumn\";\nexport * from \"./decorator/columns/VersionColumn\";\nexport * from \"./decorator/columns/ViewColumn\";\nexport * from \"./decorator/columns/ObjectIdColumn\";\nexport * from \"./decorator/listeners/AfterInsert\";\nexport * from \"./decorator/listeners/AfterLoad\";\nexport * from \"./decorator/listeners/AfterRemove\";\nexport * from \"./decorator/listeners/AfterUpdate\";\nexport * from \"./decorator/listeners/BeforeInsert\";\nexport * from \"./decorator/listeners/BeforeRemove\";\nexport * from \"./decorator/listeners/BeforeUpdate\";\nexport * from \"./decorator/listeners/EventSubscriber\";\nexport * from \"./decorator/options/ColumnOptions\";\nexport * from \"./decorator/options/IndexOptions\";\nexport * from \"./decorator/options/JoinColumnOptions\";\nexport * from \"./decorator/options/JoinTableOptions\";\nexport * from \"./decorator/options/RelationOptions\";\nexport * from \"./decorator/options/EntityOptions\";\nexport * from \"./decorator/options/ValueTransformer\";\nexport * from \"./decorator/relations/JoinColumn\";\nexport * from \"./decorator/relations/JoinTable\";\nexport * from \"./decorator/relations/ManyToMany\";\nexport * from \"./decorator/relations/ManyToOne\";\nexport * from \"./decorator/relations/OneToMany\";\nexport * from \"./decorator/relations/OneToOne\";\nexport * from \"./decorator/relations/RelationCount\";\nexport * from \"./decorator/relations/RelationId\";\nexport * from \"./decorator/entity/Entity\";\nexport * from \"./decorator/entity/ChildEntity\";\nexport * from \"./decorator/entity/TableInheritance\";\nexport * from \"./decorator/entity-view/ViewEntity\";\nexport * from \"./decorator/transaction/Transaction\";\nexport * from \"./decorator/transaction/TransactionManager\";\nexport * from \"./decorator/transaction/TransactionRepository\";\nexport * from \"./decorator/tree/TreeLevelColumn\";\nexport * from \"./decorator/tree/TreeParent\";\nexport * from \"./decorator/tree/TreeChildren\";\nexport * from \"./decorator/tree/Tree\";\nexport * from \"./decorator/Index\";\nexport * from \"./decorator/Unique\";\nexport * from \"./decorator/Check\";\nexport * from \"./decorator/Exclusion\";\nexport * from \"./decorator/Generated\";\nexport * from \"./decorator/EntityRepository\";\nexport * from \"./find-options/operator/Any\";\nexport * from \"./find-options/operator/Between\";\nexport * from \"./find-options/operator/Equal\";\nexport * from \"./find-options/operator/In\";\nexport * from \"./find-options/operator/IsNull\";\nexport * from \"./find-options/operator/LessThan\";\nexport * from \"./find-options/operator/LessThanOrEqual\";\nexport * from \"./find-options/operator/ILike\";\nexport * from \"./find-options/operator/Like\";\nexport * from \"./find-options/operator/MoreThan\";\nexport * from \"./find-options/operator/MoreThanOrEqual\";\nexport * from \"./find-options/operator/Not\";\nexport * from \"./find-options/operator/Raw\";\nexport * from \"./find-options/FindConditions\";\nexport * from \"./find-options/FindManyOptions\";\nexport * from \"./find-options/FindOneOptions\";\nexport * from \"./find-options/FindOperator\";\nexport * from \"./find-options/FindOperatorType\";\nexport * from \"./find-options/JoinOptions\";\nexport * from \"./find-options/OrderByCondition\";\nexport * from \"./find-options/FindOptionsUtils\";\nexport * from \"./logger/Logger\";\nexport * from \"./logger/LoggerOptions\";\nexport * from \"./logger/AdvancedConsoleLogger\";\nexport * from \"./logger/SimpleConsoleLogger\";\nexport * from \"./logger/FileLogger\";\nexport * from \"./metadata/EntityMetadata\";\nexport * from \"./entity-manager/EntityManager\";\nexport * from \"./repository/AbstractRepository\";\nexport * from \"./repository/Repository\";\nexport * from \"./repository/BaseEntity\";\nexport * from \"./repository/TreeRepository\";\nexport * from \"./repository/MongoRepository\";\nexport * from \"./repository/RemoveOptions\";\nexport * from \"./repository/SaveOptions\";\nexport * from \"./schema-builder/table/TableCheck\";\nexport * from \"./schema-builder/table/TableColumn\";\nexport * from \"./schema-builder/table/TableExclusion\";\nexport * from \"./schema-builder/table/TableForeignKey\";\nexport * from \"./schema-builder/table/TableIndex\";\nexport * from \"./schema-builder/table/TableUnique\";\nexport * from \"./schema-builder/table/Table\";\nexport * from \"./driver/mongodb/typings\";\nexport * from \"./driver/types/DatabaseType\";\nexport * from \"./driver/types/ReplicationMode\";\nexport * from \"./driver/sqlserver/MssqlParameter\";\nexport { ConnectionOptionsReader } from \"./connection/ConnectionOptionsReader\";\nexport { Connection } from \"./connection/Connection\";\nexport { ConnectionManager } from \"./connection/ConnectionManager\";\nexport { QueryBuilder } from \"./query-builder/QueryBuilder\";\nexport { SelectQueryBuilder } from \"./query-builder/SelectQueryBuilder\";\nexport { DeleteQueryBuilder } from \"./query-builder/DeleteQueryBuilder\";\nexport { InsertQueryBuilder } from \"./query-builder/InsertQueryBuilder\";\nexport { UpdateQueryBuilder } from \"./query-builder/UpdateQueryBuilder\";\nexport { RelationQueryBuilder } from \"./query-builder/RelationQueryBuilder\";\nexport { Brackets } from \"./query-builder/Brackets\";\nexport { InsertResult } from \"./query-builder/result/InsertResult\";\nexport { UpdateResult } from \"./query-builder/result/UpdateResult\";\nexport { DeleteResult } from \"./query-builder/result/DeleteResult\";\nexport { MongoEntityManager } from \"./entity-manager/MongoEntityManager\";\nexport { Migration } from \"./migration/Migration\";\nexport { MigrationExecutor } from \"./migration/MigrationExecutor\";\nexport { DefaultNamingStrategy } from \"./naming-strategy/DefaultNamingStrategy\";\nexport { EntitySchema } from \"./entity-schema/EntitySchema\";\n// -------------------------------------------------------------------------\n// Deprecated\n// -------------------------------------------------------------------------\n// -------------------------------------------------------------------------\n// Commonly used functionality\n// -------------------------------------------------------------------------\n/**\n * Gets metadata args storage.\n */\nexport function getMetadataArgsStorage() {\n // we should store metadata storage in a global variable otherwise it brings too much problems\n // one of the problem is that if any entity (or any other) will be imported before consumer will call\n // useContainer method with his own container implementation, that entity will be registered in the\n // old old container (default one post probably) and consumer will his entity.\n // calling useContainer before he imports any entity (or any other) is not always convenient.\n // another reason is that when we run migrations typeorm is being called from a global package\n // and it may load entities which register decorators in typeorm of local package\n // this leads to impossibility of usage of entities in migrations and cli related operations\n var globalScope = PlatformTools.getGlobalVariable();\n if (!globalScope.typeormMetadataArgsStorage)\n globalScope.typeormMetadataArgsStorage = new MetadataArgsStorage();\n return globalScope.typeormMetadataArgsStorage;\n}\n/**\n * Reads connection options stored in ormconfig configuration file.\n */\nexport function getConnectionOptions(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new ConnectionOptionsReader().get(connectionName)];\n });\n });\n}\n/**\n * Gets a ConnectionManager which creates connections.\n */\nexport function getConnectionManager() {\n return getFromContainer(ConnectionManager);\n}\n/**\n * Creates a new connection and registers it in the manager.\n *\n * If connection options were not specified, then it will try to create connection automatically,\n * based on content of ormconfig (json/js/yml/xml/env) file or environment variables.\n * Only one connection from ormconfig will be created (name \"default\" or connection without name).\n */\nexport function createConnection(optionsOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var connectionName, options, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n connectionName = typeof optionsOrName === \"string\" ? optionsOrName : \"default\";\n if (!(optionsOrName instanceof Object)) return [3 /*break*/, 1];\n _a = optionsOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, getConnectionOptions(connectionName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n options = _a;\n return [2 /*return*/, getConnectionManager().create(options).connect()];\n }\n });\n });\n}\n/**\n * Creates new connections and registers them in the manager.\n *\n * If connection options were not specified, then it will try to create connection automatically,\n * based on content of ormconfig (json/js/yml/xml/env) file or environment variables.\n * All connections from the ormconfig will be created.\n */\nexport function createConnections(options) {\n return __awaiter(this, void 0, void 0, function () {\n var connections;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!options) return [3 /*break*/, 2];\n return [4 /*yield*/, new ConnectionOptionsReader().all()];\n case 1:\n options = _a.sent();\n _a.label = 2;\n case 2:\n connections = options.map(function (options) { return getConnectionManager().create(options); });\n return [2 /*return*/, Promise.all(connections.map(function (connection) { return connection.connect(); }))];\n }\n });\n });\n}\n/**\n * Gets connection from the connection manager.\n * If connection name wasn't specified, then \"default\" connection will be retrieved.\n */\nexport function getConnection(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName);\n}\n/**\n * Gets entity manager from the connection.\n * If connection name wasn't specified, then \"default\" connection will be retrieved.\n */\nexport function getManager(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).manager;\n}\n/**\n * Gets MongoDB entity manager from the connection.\n * If connection name wasn't specified, then \"default\" connection will be retrieved.\n */\nexport function getMongoManager(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).manager;\n}\n/**\n * Gets Sqljs entity manager from connection name.\n * \"default\" connection is used, when no name is specified.\n * Only works when Sqljs driver is used.\n */\nexport function getSqljsManager(connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).manager;\n}\n/**\n * Gets repository for the given entity class.\n */\nexport function getRepository(entityClass, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getRepository(entityClass);\n}\n/**\n * Gets tree repository for the given entity class.\n */\nexport function getTreeRepository(entityClass, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getTreeRepository(entityClass);\n}\n/**\n * Gets tree repository for the given entity class.\n */\nexport function getCustomRepository(customRepository, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getCustomRepository(customRepository);\n}\n/**\n * Gets mongodb repository for the given entity class or name.\n */\nexport function getMongoRepository(entityClass, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n return getConnectionManager().get(connectionName).getMongoRepository(entityClass);\n}\n/**\n * Creates a new query builder.\n */\nexport function createQueryBuilder(entityClass, alias, connectionName) {\n if (connectionName === void 0) { connectionName = \"default\"; }\n if (entityClass) {\n return getRepository(entityClass, connectionName).createQueryBuilder(alias);\n }\n return getConnection(connectionName).createQueryBuilder();\n}\n\n//# sourceMappingURL=index.js.map\n","import { __read, __spreadArray } from \"tslib\";\n/**\n * Foreign key from the database stored in this class.\n */\nvar TableForeignKey = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableForeignKey(options) {\n /**\n * Column names which included by this foreign key.\n */\n this.columnNames = [];\n /**\n * Column names which included by this foreign key.\n */\n this.referencedColumnNames = [];\n this.name = options.name;\n this.columnNames = options.columnNames;\n this.referencedColumnNames = options.referencedColumnNames;\n this.referencedTableName = options.referencedTableName;\n this.onDelete = options.onDelete;\n this.onUpdate = options.onUpdate;\n this.deferrable = options.deferrable;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this foreign key with exactly same properties.\n */\n TableForeignKey.prototype.clone = function () {\n return new TableForeignKey({\n name: this.name,\n columnNames: __spreadArray([], __read(this.columnNames)),\n referencedColumnNames: __spreadArray([], __read(this.referencedColumnNames)),\n referencedTableName: this.referencedTableName,\n onDelete: this.onDelete,\n onUpdate: this.onUpdate,\n deferrable: this.deferrable,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new table foreign key from the given foreign key metadata.\n */\n TableForeignKey.create = function (metadata) {\n return new TableForeignKey({\n name: metadata.name,\n columnNames: metadata.columnNames,\n referencedColumnNames: metadata.referencedColumnNames,\n referencedTableName: metadata.referencedTablePath,\n onDelete: metadata.onDelete,\n onUpdate: metadata.onUpdate,\n deferrable: metadata.deferrable,\n });\n };\n return TableForeignKey;\n}());\nexport { TableForeignKey };\n\n//# sourceMappingURL=TableForeignKey.js.map\n","import shajs from \"sha.js\";\n/**\n * Converts string into camelCase.\n *\n * @see http://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case\n */\nexport function camelCase(str, firstCapital) {\n if (firstCapital === void 0) { firstCapital = false; }\n return str.replace(/^([A-Z])|[\\s-_](\\w)/g, function (match, p1, p2, offset) {\n if (firstCapital === true && offset === 0)\n return p1;\n if (p2)\n return p2.toUpperCase();\n return p1.toLowerCase();\n });\n}\n/**\n * Converts string into snake_case.\n *\n * @see https://regex101.com/r/QeSm2I/1\n */\nexport function snakeCase(str) {\n return str.replace(/(?:([a-z])([A-Z]))|(?:((?!^)[A-Z])([a-z]))/g, \"$1_$3$2$4\").toLowerCase();\n}\n/**\n * Converts string into Title Case.\n *\n * @see http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript\n */\nexport function titleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });\n}\n/**\n * Builds abbreviated string from given string;\n */\nexport function abbreviate(str, abbrLettersCount) {\n if (abbrLettersCount === void 0) { abbrLettersCount = 1; }\n var words = str.replace(/([a-z\\xE0-\\xFF])([A-Z\\xC0\\xDF])/g, \"$1 $2\").split(\" \");\n return words.reduce(function (res, word) {\n res += word.substr(0, abbrLettersCount);\n return res;\n }, \"\");\n}\n/**\n * Shorten a given `input`. Useful for RDBMS imposing a limit on the\n * maximum length of aliases and column names in SQL queries.\n *\n * @param input String to be shortened.\n * @param options Default to `4` for segments length, `2` for terms length, `'__'` as a separator.\n *\n * @return Shortened `input`.\n *\n * @example\n * // returns: \"UsShCa__orde__mark__dire\"\n * shorten('UserShoppingCart__order__market__director')\n *\n * // returns: \"cat_wit_ver_lon_nam_pos_wit_ver_lon_nam_pos_wit_ver_lon_nam\"\n * shorten(\n * 'category_with_very_long_name_posts_with_very_long_name_post_with_very_long_name',\n * { separator: '_', segmentLength: 3 }\n * )\n *\n * // equals: UsShCa__orde__mark_market_id\n * `${shorten('UserShoppingCart__order__market')}_market_id`\n */\nexport function shorten(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.segmentLength, segmentLength = _a === void 0 ? 4 : _a, _b = options.separator, separator = _b === void 0 ? \"__\" : _b, _c = options.termLength, termLength = _c === void 0 ? 2 : _c;\n var segments = input.split(separator);\n var shortSegments = segments.reduce(function (acc, val) {\n // split the given segment into many terms based on an eventual camel cased name\n var segmentTerms = val.replace(/([a-z\\xE0-\\xFF])([A-Z\\xC0-\\xDF])/g, \"$1 $2\").split(\" \");\n // \"OrderItemList\" becomes \"OrItLi\", while \"company\" becomes \"comp\"\n var length = segmentTerms.length > 1 ? termLength : segmentLength;\n var shortSegment = segmentTerms.map(function (term) { return term.substr(0, length); }).join(\"\");\n acc.push(shortSegment);\n return acc;\n }, []);\n return shortSegments.join(separator);\n}\n/**\n * Returns a hashed input.\n *\n * @param input String to be hashed.\n * @param options.length Optionally, shorten the output to desired length.\n */\nexport function hash(input, options) {\n if (options === void 0) { options = {}; }\n var hashFunction = shajs(\"sha256\");\n hashFunction.update(input, \"utf8\");\n var hashedInput = hashFunction.digest(\"hex\");\n if (options.length) {\n return hashedInput.slice(0, options.length);\n }\n return hashedInput;\n}\n\n//# sourceMappingURL=StringUtils.js.map\n","import { __read } from \"tslib\";\n/**\n * Helper utility functions for QueryBuilder.\n */\nvar QueryBuilderUtils = /** @class */ (function () {\n function QueryBuilderUtils() {\n }\n /**\n * Checks if given value is a string representation of alias property,\n * e.g. \"post.category\" or \"post.id\".\n */\n QueryBuilderUtils.isAliasProperty = function (str) {\n // alias property must be a string and must have a dot separator\n if (typeof str !== \"string\" || str.indexOf(\".\") === -1)\n return false;\n // extra alias and its property relation\n var _a = __read(str.split(\".\"), 2), aliasName = _a[0], propertyName = _a[1]; // todo: what about relations in embedded?\n if (!aliasName || !propertyName)\n return false;\n // alias and property must be represented in a special format\n // const aliasNameRegexp = /^[a-zA-Z0-9_-]+$/;\n // if (!aliasNameRegexp.test(aliasName) || !aliasNameRegexp.test(propertyName))\n // return false;\n // make sure string is not a subquery\n if (str.indexOf(\"(\") !== -1 || str.indexOf(\")\") !== -1)\n return false;\n return true;\n };\n return QueryBuilderUtils;\n}());\nexport { QueryBuilderUtils };\n\n//# sourceMappingURL=QueryBuilderUtils.js.map\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","/**\n * Broadcaster provides a helper methods to broadcast events to the subscribers.\n */\nvar Broadcaster = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function Broadcaster(queryRunner) {\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Broadcasts \"BEFORE_INSERT\" event.\n * Before insert event is executed before entity is being inserted to the database for the first time.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastBeforeInsertEvent = function (result, metadata, entity) {\n var _this = this;\n if (entity && metadata.beforeInsertListeners.length) {\n metadata.beforeInsertListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeInsert) {\n var executionResult = subscriber.beforeInsert({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_UPDATE\" event.\n * Before update event is executed before entity is being updated in the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastBeforeUpdateEvent = function (result, metadata, entity, databaseEntity, updatedColumns, updatedRelations) {\n var _this = this;\n if (entity && metadata.beforeUpdateListeners.length) {\n metadata.beforeUpdateListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeUpdate) {\n var executionResult = subscriber.beforeUpdate({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n updatedColumns: updatedColumns || [],\n updatedRelations: updatedRelations || []\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_REMOVE\" event.\n * Before remove event is executed before entity is being removed from the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastBeforeRemoveEvent = function (result, metadata, entity, databaseEntity) {\n var _this = this;\n if (entity && metadata.beforeRemoveListeners.length) {\n metadata.beforeRemoveListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeRemove) {\n var executionResult = subscriber.beforeRemove({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n entityId: metadata.getEntityIdMixedMap(databaseEntity)\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_INSERT\" event.\n * After insert event is executed after entity is being persisted to the database for the first time.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastAfterInsertEvent = function (result, metadata, entity) {\n var _this = this;\n if (entity && metadata.afterInsertListeners.length) {\n metadata.afterInsertListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterInsert) {\n var executionResult = subscriber.afterInsert({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_TRANSACTION_START\" event.\n */\n Broadcaster.prototype.broadcastBeforeTransactionStartEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.beforeTransactionStart) {\n var executionResult = subscriber.beforeTransactionStart({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_TRANSACTION_START\" event.\n */\n Broadcaster.prototype.broadcastAfterTransactionStartEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.afterTransactionStart) {\n var executionResult = subscriber.afterTransactionStart({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_TRANSACTION_COMMIT\" event.\n */\n Broadcaster.prototype.broadcastBeforeTransactionCommitEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.beforeTransactionCommit) {\n var executionResult = subscriber.beforeTransactionCommit({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_TRANSACTION_COMMIT\" event.\n */\n Broadcaster.prototype.broadcastAfterTransactionCommitEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.afterTransactionCommit) {\n var executionResult = subscriber.afterTransactionCommit({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"BEFORE_TRANSACTION_ROLLBACK\" event.\n */\n Broadcaster.prototype.broadcastBeforeTransactionRollbackEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.beforeTransactionRollback) {\n var executionResult = subscriber.beforeTransactionRollback({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_TRANSACTION_ROLLBACK\" event.\n */\n Broadcaster.prototype.broadcastAfterTransactionRollbackEvent = function (result) {\n var _this = this;\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (subscriber.afterTransactionRollback) {\n var executionResult = subscriber.afterTransactionRollback({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_UPDATE\" event.\n * After update event is executed after entity is being updated in the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastAfterUpdateEvent = function (result, metadata, entity, databaseEntity, updatedColumns, updatedRelations) {\n var _this = this;\n if (entity && metadata.afterUpdateListeners.length) {\n metadata.afterUpdateListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterUpdate) {\n var executionResult = subscriber.afterUpdate({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n updatedColumns: updatedColumns || [],\n updatedRelations: updatedRelations || []\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_REMOVE\" event.\n * After remove event is executed after entity is being removed from the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastAfterRemoveEvent = function (result, metadata, entity, databaseEntity) {\n var _this = this;\n if (entity && metadata.afterRemoveListeners.length) {\n metadata.afterRemoveListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (this.queryRunner.connection.subscribers.length) {\n this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterRemove) {\n var executionResult = subscriber.afterRemove({\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata,\n databaseEntity: databaseEntity,\n entityId: metadata.getEntityIdMixedMap(databaseEntity)\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n };\n /**\n * Broadcasts \"AFTER_LOAD\" event for all given entities, and their sub-entities.\n * After load event is executed after entity has been loaded from the database.\n * All subscribers and entity listeners who listened to this event will be executed at this point.\n * Subscribers and entity listeners can return promises, it will wait until they are resolved.\n *\n * Note: this method has a performance-optimized code organization, do not change code structure.\n */\n Broadcaster.prototype.broadcastLoadEventsForAll = function (result, metadata, entities) {\n var _this = this;\n entities.forEach(function (entity) {\n if (entity instanceof Promise) // todo: check why need this?\n return;\n // collect load events for all children entities that were loaded with the main entity\n if (metadata.relations.length) {\n metadata.relations.forEach(function (relation) {\n // in lazy relations we cannot simply access to entity property because it will cause a getter and a database query\n if (relation.isLazy && !entity.hasOwnProperty(relation.propertyName))\n return;\n var value = relation.getEntityValue(entity);\n if (value instanceof Object)\n _this.broadcastLoadEventsForAll(result, relation.inverseEntityMetadata, Array.isArray(value) ? value : [value]);\n });\n }\n if (metadata.afterLoadListeners.length) {\n metadata.afterLoadListeners.forEach(function (listener) {\n if (listener.isAllowed(entity)) {\n var executionResult = listener.execute(entity);\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n if (_this.queryRunner.connection.subscribers.length) {\n _this.queryRunner.connection.subscribers.forEach(function (subscriber) {\n if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterLoad) {\n var executionResult = subscriber.afterLoad(entity, {\n connection: _this.queryRunner.connection,\n queryRunner: _this.queryRunner,\n manager: _this.queryRunner.manager,\n entity: entity,\n metadata: metadata\n });\n if (executionResult instanceof Promise)\n result.promises.push(executionResult);\n result.count++;\n }\n });\n }\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Checks if subscriber's methods can be executed by checking if its don't listen to the particular entity,\n * or listens our entity.\n */\n Broadcaster.prototype.isAllowedSubscriber = function (subscriber, target) {\n return !subscriber.listenTo ||\n !subscriber.listenTo() ||\n subscriber.listenTo() === Object ||\n subscriber.listenTo() === target ||\n subscriber.listenTo().isPrototypeOf(target);\n };\n return Broadcaster;\n}());\nexport { Broadcaster };\n\n//# sourceMappingURL=Broadcaster.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Matomo = void 0;\nconst js_helper_1 = require(\"js-helper\");\nconst NativeStoragePromise_1 = require(\"../NativeStoragePromise\");\nclass Matomo {\n static init() {\n Matomo.isTrackingPromise = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let shouldTrack = yield NativeStoragePromise_1.NativeStoragePromise.getItem(Matomo.LOCAL_STORAGE_KEY, \"1\");\n if (js_helper_1.Helper.isNull(shouldTrack)) {\n shouldTrack = yield Matomo._askIsTracking();\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(Matomo.LOCAL_STORAGE_KEY, shouldTrack);\n }\n else {\n shouldTrack = (shouldTrack === \"1\");\n yield Matomo.setTrack(shouldTrack);\n }\n resolve(shouldTrack);\n }));\n Matomo.isTrackingPromise.then(() => {\n Matomo.push(['trackPageView'], true);\n Matomo.push(['enableLinkTracking'], true);\n Matomo.push(['setTrackerUrl', Matomo.TRACK_SITE + '/piwik.php'], true);\n Matomo.push(['setSiteId', Matomo.SIDE_ID + \"\"], true);\n let d = document, g = d.createElement('script'), s = d.getElementsByTagName('head')[0];\n g.type = 'text/javascript';\n g.async = true;\n g.defer = true;\n g.src = Matomo.TRACK_SITE + '/piwik.js';\n s.appendChild(g);\n });\n }\n static update(title) {\n if (js_helper_1.Helper.nonNull(Matomo.currentUrl)) {\n Matomo.push(['setReferrerUrl', Matomo.currentUrl]);\n }\n Matomo.currentUrl = window.location.pathname + window.location.search;\n Matomo.push(['setCustomUrl', Matomo.currentUrl]);\n Matomo.push(['setDocumentTitle', title]);\n // remove all previously assigned custom variables, requires Matomo (formerly Piwik) 3.0.2\n Matomo.push(['deleteCustomVariables', 'page']);\n Matomo.push(['setGenerationTimeMs', 0]);\n Matomo.push(['trackPageView']);\n // make Matomo aware of newly added content\n var content = document.getElementById('site-content');\n Matomo.push(['MediaAnalytics::scanForMedia', content]);\n Matomo.push(['FormAnalytics::scanForForms', content]);\n Matomo.push(['trackContentImpressionsWithinNode', content]);\n Matomo.push(['enableLinkTracking']);\n }\n static _askIsTracking() {\n return __awaiter(this, void 0, void 0, function* () {\n Matomo.isTrackingPromise = new Promise(resolve => {\n Matomo.push([function () {\n resolve(!this[\"isUserOptedOut\"]());\n }]);\n });\n return Matomo.isTrackingPromise;\n });\n }\n static query(method) {\n return __awaiter(this, void 0, void 0, function* () {\n return fetch(Matomo.TRACK_SITE + Matomo.BASE_PATH + method, {\n \"mode\": \"cors\",\n \"credentials\": \"include\",\n }).then(res => res.text()).then(text => (new window[\"DOMParser\"]()).parseFromString(text, \"text/xml\"));\n });\n }\n static getTrackingPromise() {\n return Matomo.isTrackingPromise;\n }\n static setTrack(shouldTrack) {\n return __awaiter(this, void 0, void 0, function* () {\n Matomo.isTrackingPromise = Promise.resolve(shouldTrack);\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(Matomo.LOCAL_STORAGE_KEY, (shouldTrack === true) ? \"1\" : \"0\");\n if (shouldTrack) {\n yield Matomo.push([\"forgetUserOptOut\"], true);\n }\n else {\n yield Matomo.push([\"optUserOut\"], true);\n }\n });\n }\n static trackEvent(event, name, label, value) {\n return __awaiter(this, void 0, void 0, function* () {\n let ev = [\"trackEvent\", event, name];\n if (js_helper_1.Helper.isNotNull(label)) {\n ev.push(label);\n }\n if (js_helper_1.Helper.isNotNull(value) && !isNaN(parseFloat(value)) && isFinite(value)) {\n ev.push(value);\n }\n return this.push(ev);\n });\n }\n //TODO Matomo\n static push(arr, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // if (!Array.isArray(arr)) {\n // arr = [arr];\n // }\n // window[\"_paq\"].push(arr);\n });\n }\n}\nexports.Matomo = Matomo;\nMatomo.LOCAL_STORAGE_KEY = \"matomoShouldTrack\";\nMatomo.TRACK_SITE = \"\";\nMatomo.BASE_PATH = \"\";\nMatomo.SIDE_ID = \"1\";\nMatomo.currentUrl = null;\nMatomo.isTrackingPromise = null;\n//# sourceMappingURL=Matomo.js.map","/**\n * View in the database represented in this class.\n */\nvar View = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function View(options) {\n if (options) {\n this.name = options.name;\n this.expression = options.expression;\n this.materialized = !!options.materialized;\n }\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Clones this table to a new table with all properties cloned.\n */\n View.prototype.clone = function () {\n return new View({\n name: this.name,\n expression: this.expression,\n materialized: this.materialized,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates view from a given entity metadata.\n */\n View.create = function (entityMetadata, driver) {\n var options = {\n name: driver.buildTableName(entityMetadata.tableName, entityMetadata.schema, entityMetadata.database),\n expression: entityMetadata.expression,\n materialized: entityMetadata.tableMetadataArgs.materialized\n };\n return new View(options);\n };\n return View;\n}());\nexport { View };\n\n//# sourceMappingURL=View.js.map\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ViewInflater = void 0;\nconst client_1 = require(\"js-helper/dist/client\");\nconst shared_1 = require(\"js-helper/dist/shared\");\nconst DataManager_1 = require(\"./DataManager\");\n/**\n * Singleton-Klasse genutzt zum laden von Views\n */\nclass ViewInflater {\n constructor() {\n this.loadingPromises = {};\n }\n /**\n * Statische Funktion, um die Singleton-Instanz zu holen\n *\n * @returns {ViewInflater}\n */\n static getInstance() {\n if (shared_1.Helper.isNull(ViewInflater.instance)) {\n ViewInflater.instance = new ViewInflater();\n }\n return ViewInflater.instance;\n }\n /**\n * Lädt asynchron eine View anhand einer URL und lädt ebenso alle child-views\n *\n * Extra nicht async, damit Promise sofort in LoadingPromise hinzugefügt werden kann\n *\n * @param viewUrl\n * @param parentUrls\n * @returns {*}\n */\n load(viewUrl, parentUrls) {\n //Kopiere Elemente, damit originale parentURLS nicht verändert werden\n parentUrls = shared_1.JsonHelper.deepCopy(shared_1.Helper.nonNull(parentUrls, []));\n //Detektiert eine Schleife in den Views\n if (parentUrls.indexOf(viewUrl) !== -1) {\n //Return Promise.reject => da View vorher schon einmal geladen, wird das Resultat ebenfalls in loadingPromises gespeichert für diese View\n return Promise.reject(\"views are in a circuit! cannot resolve view for url \" + parentUrls[0] + \"! url \" + viewUrl + \" is in stack before!\");\n }\n parentUrls.push(viewUrl);\n //Shortcut, falls die View schon geladen wurde. Muss nach Schleifenüberprüfung aufgerufen werden\n if (shared_1.Helper.isNotNull(this.loadingPromises[viewUrl])) {\n return this.loadingPromises[viewUrl].then(view => view.cloneNode(true));\n }\n let t;\n let resultPromise = Promise.resolve(t);\n if (viewUrl instanceof Element) {\n resultPromise = Promise.resolve(viewUrl);\n }\n else {\n resultPromise = DataManager_1.DataManager.loadAsset(viewUrl).then(htmlText => {\n let doc = (new DOMParser()).parseFromString(htmlText, \"text/html\");\n //Parsing hat nicht geklappt, also per innerHTML\n if (shared_1.Helper.isNull(doc)) {\n doc = document.implementation.createHTMLDocument('');\n doc.body.innerHTML = htmlText;\n }\n //Wrappe Elemente mit einem Span\n let spanElem = document.createElement(\"span\");\n spanElem.classList.add(\"injected-span\");\n return ViewInflater.moveChildren(doc.body, spanElem);\n });\n }\n this.loadingPromises[viewUrl] = resultPromise.then(parentElement => {\n let promises = [];\n let childViews = parentElement.querySelectorAll(\"[data-view]\");\n //lade Kinder-Views\n childViews.forEach(childView => {\n promises.push(ViewInflater.getInstance().load(childView.dataset[\"view\"], parentUrls).then(element => {\n childView.replaceWith(element);\n ViewInflater.replaceWithChildren(element);\n }));\n });\n return Promise.all(promises).then(function () {\n return parentElement;\n });\n }).catch(e => {\n console.error(e);\n this.loadingPromises[viewUrl] = null;\n throw e;\n });\n return this.loadingPromises[viewUrl].then(view => view.cloneNode(true));\n }\n /**\n * Statische Funktion, um Elemente aus einem String zu kreieren\n *\n * @param string\n * @returns {NodeListOf}\n */\n static inflateElementsFromString(string) {\n let template = document.createElement('template');\n template.innerHTML = string;\n return template.content.childNodes;\n }\n /**\n * Kreiert ein Ladesymbol. Evtl entfernen\n *\n * @returns {HTMLDivElement}\n */\n static createLoadingSymbol(loaderClass) {\n let svgNS = \"http://www.w3.org/2000/svg\";\n let loader = document.createElement(\"div\");\n loader.classList.add('loader');\n //LoaderClass darf nicht leer sein, da sonst HTML einen Felher schmeißt\n if (loaderClass) {\n loader.classList.add(loaderClass);\n }\n let svg = document.createElementNS(svgNS, \"svg\");\n svg.setAttribute('viewBox', \"0 0 32 32\");\n svg.setAttribute(\"width\", \"32\");\n svg.setAttribute(\"height\", \"32\");\n let circle = document.createElementNS(svgNS, \"circle\");\n circle.setAttribute(\"class\", \"spinner\");\n circle.setAttribute(\"cx\", \"16\");\n circle.setAttribute(\"cy\", \"16\");\n circle.setAttribute(\"r\", \"14\");\n circle.setAttribute(\"fill\", \"none\");\n svg.appendChild(circle);\n loader.appendChild(svg);\n // let loader = document.createElement(\"div\");\n // loader.appendChild(document.createTextNode(\"LOADING...\"));\n return loader;\n }\n /**\n * Moves the child-Nodes from one element to another\n * @param from\n * @param to\n * @returns {*}\n */\n static moveChildren(from, to) {\n return client_1.ViewHelper.moveChildren(from, to);\n }\n /**\n * Ersetzt ein Element durch seine Kinder (entfernt das Element ohne die Kinder zu entfernen)\n * @param element\n */\n static replaceWithChildren(element) {\n let children = [];\n //Zwischenspeichern der Children, da removeChild die forEach-Schleife durcheinander bringt\n element.childNodes.forEach(child => {\n children.push(child);\n });\n let parent = element.parentElement;\n children.forEach(child => {\n element.removeChild(child);\n parent.insertBefore(child, element);\n });\n element.remove();\n }\n}\nexports.ViewInflater = ViewInflater;\nViewInflater.instance = null;\n//# sourceMappingURL=ViewInflater.js.map","/**\n * Database's table exclusion constraint stored in this class.\n */\nvar TableExclusion = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TableExclusion(options) {\n this.name = options.name;\n this.expression = options.expression;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n TableExclusion.prototype.clone = function () {\n return new TableExclusion({\n name: this.name,\n expression: this.expression,\n });\n };\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n /**\n * Creates exclusions from the exclusion metadata object.\n */\n TableExclusion.create = function (exclusionMetadata) {\n return new TableExclusion({\n name: exclusionMetadata.name,\n expression: exclusionMetadata.expression\n });\n };\n return TableExclusion;\n}());\nexport { TableExclusion };\n\n//# sourceMappingURL=TableExclusion.js.map\n","var ApplyValueTransformers = /** @class */ (function () {\n function ApplyValueTransformers() {\n }\n ApplyValueTransformers.transformFrom = function (transformer, databaseValue) {\n if (Array.isArray(transformer)) {\n var reverseTransformers = transformer.slice().reverse();\n return reverseTransformers.reduce(function (transformedValue, _transformer) {\n return _transformer.from(transformedValue);\n }, databaseValue);\n }\n return transformer.from(databaseValue);\n };\n ApplyValueTransformers.transformTo = function (transformer, entityValue) {\n if (Array.isArray(transformer)) {\n return transformer.reduce(function (transformedValue, _transformer) {\n return _transformer.to(transformedValue);\n }, entityValue);\n }\n return transformer.to(entityValue);\n };\n return ApplyValueTransformers;\n}());\nexport { ApplyValueTransformers };\n\n//# sourceMappingURL=ApplyValueTransformers.js.map\n","var RandomGenerator = /** @class */ (function () {\n function RandomGenerator() {\n }\n /**\n * discuss at: http://locutus.io/php/sha1/\n * original by: Webtoolkit.info (http://www.webtoolkit.info/)\n * improved by: Michael White (http://getsprink.com)\n * improved by: Kevin van Zonneveld (http://kvz.io)\n * input by: Brett Zamir (http://brett-zamir.me)\n * note 1: Keep in mind that in accordance with PHP, the whole string is buffered and then\n * note 1: hashed. If available, we'd recommend using Node's native crypto modules directly\n * note 1: in a steaming fashion for faster and more efficient hashing\n * example 1: sha1('Kevin van Zonneveld')\n * returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897'\n */\n RandomGenerator.sha1 = function (str) {\n var _rotLeft = function (n, s) {\n var t4 = (n << s) | (n >>> (32 - s));\n return t4;\n };\n var _cvtHex = function (val) {\n var str = \"\";\n var i;\n var v;\n for (i = 7; i >= 0; i--) {\n v = (val >>> (i * 4)) & 0x0f;\n str += v.toString(16);\n }\n return str;\n };\n var blockstart;\n var i, j;\n var W = new Array(80);\n var H0 = 0x67452301;\n var H1 = 0xEFCDAB89;\n var H2 = 0x98BADCFE;\n var H3 = 0x10325476;\n var H4 = 0xC3D2E1F0;\n var A, B, C, D, E;\n var temp;\n // utf8_encode\n str = /*unescape*/ (encodeURIComponent(str));\n var strLen = str.length;\n var wordArray = [];\n for (i = 0; i < strLen - 3; i += 4) {\n j = str.charCodeAt(i) << 24 |\n str.charCodeAt(i + 1) << 16 |\n str.charCodeAt(i + 2) << 8 |\n str.charCodeAt(i + 3);\n wordArray.push(j);\n }\n switch (strLen % 4) {\n case 0:\n i = 0x080000000;\n break;\n case 1:\n i = str.charCodeAt(strLen - 1) << 24 | 0x0800000;\n break;\n case 2:\n i = str.charCodeAt(strLen - 2) << 24 | str.charCodeAt(strLen - 1) << 16 | 0x08000;\n break;\n case 3:\n i = str.charCodeAt(strLen - 3) << 24 |\n str.charCodeAt(strLen - 2) << 16 |\n str.charCodeAt(strLen - 1) <<\n 8 | 0x80;\n break;\n }\n wordArray.push(i);\n while ((wordArray.length % 16) !== 14) {\n wordArray.push(0);\n }\n wordArray.push(strLen >>> 29);\n wordArray.push((strLen << 3) & 0x0ffffffff);\n for (blockstart = 0; blockstart < wordArray.length; blockstart += 16) {\n for (i = 0; i < 16; i++) {\n W[i] = wordArray[blockstart + i];\n }\n for (i = 16; i <= 79; i++) {\n W[i] = _rotLeft(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n }\n A = H0;\n B = H1;\n C = H2;\n D = H3;\n E = H4;\n for (i = 0; i <= 19; i++) {\n temp = (_rotLeft(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n for (i = 20; i <= 39; i++) {\n temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n for (i = 40; i <= 59; i++) {\n temp = (_rotLeft(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n for (i = 60; i <= 79; i++) {\n temp = (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;\n E = D;\n D = C;\n C = _rotLeft(B, 30);\n B = A;\n A = temp;\n }\n H0 = (H0 + A) & 0x0ffffffff;\n H1 = (H1 + B) & 0x0ffffffff;\n H2 = (H2 + C) & 0x0ffffffff;\n H3 = (H3 + D) & 0x0ffffffff;\n H4 = (H4 + E) & 0x0ffffffff;\n }\n temp = _cvtHex(H0) + _cvtHex(H1) + _cvtHex(H2) + _cvtHex(H3) + _cvtHex(H4);\n return temp.toLowerCase();\n };\n /**\n * RFC4122 compliant UUID v4 generator.\n */\n RandomGenerator.uuid4 = function () {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c === \"x\" ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n return RandomGenerator;\n}());\nexport { RandomGenerator };\n\n//# sourceMappingURL=RandomGenerator.js.map\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataManager = void 0;\nconst Helper_1 = require(\"./Legacy/Helper\");\nconst NotOnlineError_1 = require(\"./DataManager/NotOnlineError\");\n/**\n * Ein Manager, welches das Laden von Resourcen übernimmt.\n */\nclass DataManager {\n /**\n * Diese Funktion sollte anstelle von dem nativen \"fetch\" verwendet werden!\n * Das native Fetch kann keine file://, welches von Cordova unter Android (und whs iOS) verwendet wird\n * Daher wird heir auf XMLHttpRequest zurückgegriffen\n *\n * @param url\n * @param useArrayBuffer\n * @returns {Promise<*>}\n */\n static fetch(url, useArrayBuffer) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(function (resolve, reject) {\n let xhr = new XMLHttpRequest();\n useArrayBuffer = Helper_1.Helper.nonNull(useArrayBuffer, false);\n if (useArrayBuffer) {\n xhr.responseType = \"arraybuffer\";\n }\n xhr.onload = function () {\n resolve(new Response(useArrayBuffer ? xhr.response : xhr.responseText, { status: (xhr.status === 0) ? 200 : xhr.status }));\n };\n xhr.onerror = function (e) {\n console.error(e);\n debugger;\n reject(new NotOnlineError_1.NotOnlineError(\"not-online\", url));\n };\n xhr.open('GET', url);\n //set headers\n Object.keys(DataManager._additionalHeaders).forEach(header => {\n xhr.setRequestHeader(header, DataManager._additionalHeaders[header]);\n });\n xhr.send(null);\n }).then(res => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(true);\n }\n return res;\n }).catch(e => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n throw e;\n });\n });\n }\n static fetchBlob(url) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(function (resolve, reject) {\n let xhr = new XMLHttpRequest();\n xhr.onload = function (e) {\n resolve(xhr.response);\n };\n xhr.onerror = function (e) {\n console.error(e);\n debugger;\n reject(new NotOnlineError_1.NotOnlineError(\"not-online\", url));\n };\n xhr.open('GET', url);\n xhr.responseType = \"blob\";\n //set headers\n Object.keys(DataManager._additionalHeaders).forEach(header => {\n xhr.setRequestHeader(header, DataManager._additionalHeaders[header]);\n });\n xhr.send(null);\n }).then(res => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(true);\n }\n return res;\n }).catch(e => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n throw e;\n });\n });\n }\n /**\n * Vereinfachung von Laden von Resourcen.\n * Lädt per GET die angegebene URL und gibt diese als JSON oder Text zurück\n *\n * @param url\n * @param format\n * @param useBasePath\n * @returns {Promise<* | void>}\n */\n static load(url, format, useBasePath) {\n return __awaiter(this, void 0, void 0, function* () {\n format = Helper_1.Helper.nonNull(format, true);\n if (format === true) {\n format = \"json\";\n }\n else if (format === false) {\n format = \"text\";\n }\n else if (format !== \"json\" && format !== \"text\") {\n format = \"raw\";\n }\n useBasePath = Helper_1.Helper.nonNull(useBasePath, true);\n if (useBasePath === true) {\n useBasePath = DataManager._basePath;\n }\n else if (typeof useBasePath !== \"string\") {\n useBasePath = \"\";\n }\n url = DataManager.basePath(url, useBasePath);\n return DataManager.fetch(url, format === \"raw\").catch(e => {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n throw new NotOnlineError_1.NotOnlineError(e, url);\n }).then(function (res) {\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(true);\n }\n if (format === \"json\") {\n return res.json();\n }\n else if (format === \"text\") {\n return res.text();\n }\n else {\n return res;\n }\n });\n });\n }\n /**\n * Vereinfachung von Laden von Resourcen.\n * Lädt per GET das angegebene Asset und gibt diese als JSON oder Text zurück\n *\n * @param url\n * @param format\n * @returns {Promise<* | void>}\n */\n static loadAsset(url, format) {\n return __awaiter(this, void 0, void 0, function* () {\n let assetPath = DataManager._assetBasePath;\n if (!url.startsWith(\"/\") && assetPath.length > 0 && !assetPath.endsWith(\"/\")) {\n assetPath += \"/\";\n }\n return this.load(url, Helper_1.Helper.nonNull(format, \"text\"), assetPath);\n });\n }\n /**\n * Wandelt ein Key-Value-Objekt in einen QueryString um\n *\n * @param values\n * @return {string}\n */\n static buildQuery(values) {\n let queryStrings = [];\n for (let k in values) {\n queryStrings.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(values[k]));\n }\n return \"?\" + queryStrings.join(\"&\");\n }\n /**\n * Wandelt ein Key-Value-Objekt in einen QueryString um\n *\n * @param values\n * @return {string}\n */\n static buildQueryWithoutNullValues(values) {\n let queryValues = {};\n for (let k in values) {\n if (Helper_1.Helper.isNotNull(values[k])) {\n queryValues[k] = values[k];\n }\n }\n return this.buildQuery(queryValues);\n }\n static send(url, params) {\n return __awaiter(this, void 0, void 0, function* () {\n url = DataManager.basePath(url);\n let headers = {};\n if (!(params instanceof FormData) && typeof params === \"object\") {\n params = JSON.stringify(params);\n headers = {\n \"Content-Type\": \"application/json\"\n };\n }\n Object.keys(DataManager._additionalHeaders).forEach(header => {\n headers[header] = DataManager._additionalHeaders[header];\n });\n return fetch(url, {\n \"credentials\": \"same-origin\",\n \"method\": \"POST\",\n \"headers\": headers,\n \"body\": params,\n }).then(function (res) {\n return res.json();\n }).catch(function (e) {\n debugger;\n console.error(\"error\", e);\n if (DataManager.onlineCallback) {\n DataManager.onlineCallback(false);\n }\n return {\n \"success\": false,\n \"errors\": [\n \"not-online\"\n ]\n };\n });\n });\n }\n static basePath(url, basePath) {\n basePath = Helper_1.Helper.nonNull(basePath, DataManager._basePath);\n return basePath + ((url) ? url : \"\");\n }\n static setHeader(header, value) {\n DataManager._additionalHeaders[header] = value;\n }\n}\nexports.DataManager = DataManager;\nDataManager.onlineCallback = null;\nDataManager._additionalHeaders = {};\nDataManager._basePath = \"\";\nDataManager._assetBasePath = \"\";\n//# sourceMappingURL=DataManager.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MenuSite = void 0;\nconst TemplateSite_1 = require(\"./TemplateSite\");\nconst defaultMenuTemplate = require(\"../../html/siteTemplates/menuSite.html\");\nconst NavbarFragment_1 = require(\"./Menu/NavbarFragment\");\nconst Context_1 = require(\"./Context\");\nconst Helper_1 = require(\"../Legacy/Helper\");\n/**\n * Seite benutzt das menuTemplate, welches das ContainerTemplate includiert.\n *\n * Außerdem beinhaltet die MenuSite ein NavbarFragment, wo Menüelemente hinzugefügt werden können\n */\nclass MenuSite extends TemplateSite_1.TemplateSite {\n /**\n * Constructor für eine MenuSite\n *\n * @param siteManager\n * @param view\n * @param menuTemplate\n */\n constructor(siteManager, view, menuTemplate) {\n super(siteManager, view, Helper_1.Helper.nonNull(menuTemplate, defaultMenuTemplate), \"#site-content\");\n this._navbarFragment = new NavbarFragment_1.NavbarFragment(this);\n this.addFragment(\"#navbar-fragment\", this._navbarFragment);\n }\n getNavbarFragment() {\n return this._navbarFragment;\n }\n /**\n * Während des onConstructs werden die Menüelemente hinzugefügt => aufrufen des onCreateMenu\n *\n * @param constructParameters\n * @returns {Promise}\n */\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = yield _super.onConstruct.call(this, constructParameters);\n this.onCreateMenu(this._navbarFragment);\n return res;\n });\n }\n onMenuPressed() {\n this._navbarFragment.openMenu();\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this._navbarFragment.setScrollWidget(this.findBy(\"#main-content-container\"));\n return res;\n });\n }\n /**\n * Überschreibt updateTtle, um Element in der Statusbar zu setzen\n *\n * @protected\n */\n _updateTitle() {\n super._updateTitle();\n if (this._title.element && this._state === Context_1.Context.STATE_RUNNING) {\n this._navbarFragment.setTitleElement(this._title.element);\n }\n }\n /**\n * Überschreiben durch Kinder-Klassen, um ein Menü zu erstellen\n *\n * @param {NavbarFragment} navbar\n */\n onCreateMenu(navbar) { }\n}\nexports.MenuSite = MenuSite;\n//# sourceMappingURL=MenuSite.js.map","import { __extends } from \"tslib\";\n/**\n * Thrown when transaction is already started and user tries to run it again.\n */\nvar TransactionAlreadyStartedError = /** @class */ (function (_super) {\n __extends(TransactionAlreadyStartedError, _super);\n function TransactionAlreadyStartedError() {\n var _this = _super.call(this) || this;\n _this.name = \"TransactionAlreadyStartedError\";\n Object.setPrototypeOf(_this, TransactionAlreadyStartedError.prototype);\n _this.message = \"Transaction already started for the given connection, commit current transaction before starting a new one.\";\n return _this;\n }\n return TransactionAlreadyStartedError;\n}(Error));\nexport { TransactionAlreadyStartedError };\n\n//# sourceMappingURL=TransactionAlreadyStartedError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when required driver's package is not installed.\n */\nvar DriverPackageNotInstalledError = /** @class */ (function (_super) {\n __extends(DriverPackageNotInstalledError, _super);\n function DriverPackageNotInstalledError(driverName, packageName) {\n var _this = _super.call(this) || this;\n _this.name = \"DriverPackageNotInstalledError\";\n Object.setPrototypeOf(_this, DriverPackageNotInstalledError.prototype);\n _this.message = driverName + \" package has not been found installed. Try to install it: npm install \" + packageName + \" --save\";\n return _this;\n }\n return DriverPackageNotInstalledError;\n}(Error));\nexport { DriverPackageNotInstalledError };\n\n//# sourceMappingURL=DriverPackageNotInstalledError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to build a query with RETURNING / OUTPUT statement,\n * but used database does not support it.\n */\nvar ReturningStatementNotSupportedError = /** @class */ (function (_super) {\n __extends(ReturningStatementNotSupportedError, _super);\n function ReturningStatementNotSupportedError() {\n var _this = _super.call(this) || this;\n _this.name = \"ReturningStatementNotSupportedError\";\n Object.setPrototypeOf(_this, ReturningStatementNotSupportedError.prototype);\n _this.message = \"OUTPUT or RETURNING clause only supported by Microsoft SQL Server or PostgreSQL databases.\";\n return _this;\n }\n return ReturningStatementNotSupportedError;\n}(Error));\nexport { ReturningStatementNotSupportedError };\n\n//# sourceMappingURL=ReturningStatementNotSupportedError.js.map\n","import { __awaiter, __extends, __generator, __read } from \"tslib\";\nimport { TransactionAlreadyStartedError } from \"../../error/TransactionAlreadyStartedError\";\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\";\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\";\nimport { ColumnMetadata } from \"../../metadata/ColumnMetadata\";\nimport { Table } from \"../../schema-builder/table/Table\";\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\";\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\";\nimport { View } from \"../../schema-builder/view/View\";\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\";\nimport { Query } from \"../Query\";\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\";\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\";\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar AbstractSqliteQueryRunner = /** @class */ (function (_super) {\n __extends(AbstractSqliteQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function AbstractSqliteQueryRunner() {\n return _super.call(this) || this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n AbstractSqliteQueryRunner.prototype.connect = function () {\n return Promise.resolve(this.driver.databaseConnection);\n };\n /**\n * Releases used database connection.\n * We just clear loaded tables and sql in memory, because sqlite do not support multiple connections thus query runners.\n */\n AbstractSqliteQueryRunner.prototype.release = function () {\n this.loadedTables = [];\n this.clearSqlMemory();\n return Promise.resolve();\n };\n /**\n * Starts transaction.\n */\n AbstractSqliteQueryRunner.prototype.startTransaction = function (isolationLevel) {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isTransactionActive)\n throw new TransactionAlreadyStartedError();\n if (!isolationLevel) return [3 /*break*/, 4];\n if (isolationLevel !== \"READ UNCOMMITTED\" && isolationLevel !== \"SERIALIZABLE\") {\n throw new Error(\"SQLite only supports SERIALIZABLE and READ UNCOMMITTED isolation\");\n }\n if (!(isolationLevel === \"READ UNCOMMITTED\")) return [3 /*break*/, 2];\n return [4 /*yield*/, this.query(\"PRAGMA read_uncommitted = true\")];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.query(\"PRAGMA read_uncommitted = false\")];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 6];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6:\n this.isTransactionActive = true;\n return [4 /*yield*/, this.query(\"BEGIN TRANSACTION\")];\n case 7:\n _a.sent();\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 9];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n AbstractSqliteQueryRunner.prototype.commitTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"COMMIT\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n AbstractSqliteQueryRunner.prototype.rollbackTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var beforeBroadcastResult, afterBroadcastResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n beforeBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);\n if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [4 /*yield*/, this.query(\"ROLLBACK\")];\n case 3:\n _a.sent();\n this.isTransactionActive = false;\n afterBroadcastResult = new BroadcasterResult();\n this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);\n if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Returns raw data stream.\n */\n AbstractSqliteQueryRunner.prototype.stream = function (query, parameters, onEnd, onError) {\n throw new Error(\"Stream is not supported by sqlite driver.\");\n };\n /**\n * Returns all available database names including system databases.\n */\n AbstractSqliteQueryRunner.prototype.getDatabases = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n AbstractSqliteQueryRunner.prototype.getSchemas = function (database) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n /**\n * Checks if database with the given name exist.\n */\n AbstractSqliteQueryRunner.prototype.hasDatabase = function (database) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve(false)];\n });\n });\n };\n /**\n * Checks if schema with the given name exist.\n */\n AbstractSqliteQueryRunner.prototype.hasSchema = function (schema) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"This driver does not support table schemas\");\n });\n });\n };\n /**\n * Checks if table with the given name exist in the database.\n */\n AbstractSqliteQueryRunner.prototype.hasTable = function (tableOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var tableName, sql, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n sql = \"SELECT * FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'table' AND \\\"name\\\" = '\" + tableName + \"'\";\n return [4 /*yield*/, this.query(sql)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result.length ? true : false];\n }\n });\n });\n };\n /**\n * Checks if column with the given name exist in the given table.\n */\n AbstractSqliteQueryRunner.prototype.hasColumn = function (tableOrName, columnName) {\n return __awaiter(this, void 0, void 0, function () {\n var tableName, sql, columns;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n sql = \"PRAGMA table_info(\\\"\" + tableName + \"\\\")\";\n return [4 /*yield*/, this.query(sql)];\n case 1:\n columns = _a.sent();\n return [2 /*return*/, !!columns.find(function (column) { return column[\"name\"] === columnName; })];\n }\n });\n });\n };\n /**\n * Creates a new database.\n */\n AbstractSqliteQueryRunner.prototype.createDatabase = function (database, ifNotExist) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Drops database.\n */\n AbstractSqliteQueryRunner.prototype.dropDatabase = function (database, ifExist) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Creates a new table schema.\n */\n AbstractSqliteQueryRunner.prototype.createSchema = function (schema, ifNotExist) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Drops table schema.\n */\n AbstractSqliteQueryRunner.prototype.dropSchema = function (schemaPath, ifExist) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve()];\n });\n });\n };\n /**\n * Creates a new table.\n */\n AbstractSqliteQueryRunner.prototype.createTable = function (table, ifNotExist, createForeignKeys, createIndices) {\n if (ifNotExist === void 0) { ifNotExist = false; }\n if (createForeignKeys === void 0) { createForeignKeys = true; }\n if (createIndices === void 0) { createIndices = true; }\n return __awaiter(this, void 0, void 0, function () {\n var upQueries, downQueries, isTableExist;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n if (!ifNotExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(table)];\n case 1:\n isTableExist = _a.sent();\n if (isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _a.label = 2;\n case 2:\n upQueries.push(this.createTableSql(table, createForeignKeys));\n downQueries.push(this.dropTableSql(table));\n if (createIndices) {\n table.indices.forEach(function (index) {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = _this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n upQueries.push(_this.createIndexSql(table, index));\n downQueries.push(_this.dropIndexSql(index));\n });\n }\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the table.\n */\n AbstractSqliteQueryRunner.prototype.dropTable = function (tableOrName, ifExist, dropForeignKeys, dropIndices) {\n if (dropForeignKeys === void 0) { dropForeignKeys = true; }\n if (dropIndices === void 0) { dropIndices = true; }\n return __awaiter(this, void 0, void 0, function () {\n var isTableExist, createForeignKeys, table, _a, upQueries, downQueries;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!ifExist) return [3 /*break*/, 2];\n return [4 /*yield*/, this.hasTable(tableOrName)];\n case 1:\n isTableExist = _b.sent();\n if (!isTableExist)\n return [2 /*return*/, Promise.resolve()];\n _b.label = 2;\n case 2:\n createForeignKeys = dropForeignKeys;\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 3];\n _a = tableOrName;\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 4:\n _a = _b.sent();\n _b.label = 5;\n case 5:\n table = _a;\n upQueries = [];\n downQueries = [];\n if (dropIndices) {\n table.indices.forEach(function (index) {\n upQueries.push(_this.dropIndexSql(index));\n downQueries.push(_this.createIndexSql(table, index));\n });\n }\n upQueries.push(this.dropTableSql(table, ifExist));\n downQueries.push(this.createTableSql(table, createForeignKeys));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 6:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new view.\n */\n AbstractSqliteQueryRunner.prototype.createView = function (view) {\n return __awaiter(this, void 0, void 0, function () {\n var upQueries, downQueries;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n upQueries.push(this.createViewSql(view));\n upQueries.push(this.insertViewDefinitionSql(view));\n downQueries.push(this.dropViewSql(view));\n downQueries.push(this.deleteViewDefinitionSql(view));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the view.\n */\n AbstractSqliteQueryRunner.prototype.dropView = function (target) {\n return __awaiter(this, void 0, void 0, function () {\n var viewName, view, upQueries, downQueries;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n viewName = target instanceof View ? target.name : target;\n return [4 /*yield*/, this.getCachedView(viewName)];\n case 1:\n view = _a.sent();\n upQueries = [];\n downQueries = [];\n upQueries.push(this.deleteViewDefinitionSql(view));\n upQueries.push(this.dropViewSql(view));\n downQueries.push(this.insertViewDefinitionSql(view));\n downQueries.push(this.createViewSql(view));\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames the given table.\n */\n AbstractSqliteQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) {\n return __awaiter(this, void 0, void 0, function () {\n var oldTable, _a, newTable, up, down;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(oldTableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = oldTableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(oldTableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n oldTable = _a;\n newTable = oldTable.clone();\n newTable.name = newTableName;\n up = new Query(\"ALTER TABLE \\\"\" + oldTable.name + \"\\\" RENAME TO \\\"\" + newTableName + \"\\\"\");\n down = new Query(\"ALTER TABLE \\\"\" + newTableName + \"\\\" RENAME TO \\\"\" + oldTable.name + \"\\\"\");\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n // rename old table;\n oldTable.name = newTable.name;\n // rename unique constraints\n newTable.uniques.forEach(function (unique) {\n unique.name = _this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);\n });\n // rename foreign key constraints\n newTable.foreignKeys.forEach(function (foreignKey) {\n foreignKey.name = _this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n });\n // rename indices\n newTable.indices.forEach(function (index) {\n index.name = _this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n });\n // recreate table with new constraint names\n return [4 /*yield*/, this.recreateTable(newTable, oldTable)];\n case 5:\n // recreate table with new constraint names\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new column from the column in the table.\n */\n AbstractSqliteQueryRunner.prototype.addColumn = function (tableOrName, column) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n return [2 /*return*/, this.addColumns(table, [column])];\n }\n });\n });\n };\n /**\n * Creates a new columns from the column in the table.\n */\n AbstractSqliteQueryRunner.prototype.addColumns = function (tableOrName, columns) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n columns.forEach(function (column) { return changedTable.addColumn(column); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Renames column in the given table.\n */\n AbstractSqliteQueryRunner.prototype.renameColumn = function (tableOrName, oldTableColumnOrName, newTableColumnOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, oldColumn, newColumn;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n newColumn = undefined;\n if (newTableColumnOrName instanceof TableColumn) {\n newColumn = newTableColumnOrName;\n }\n else {\n newColumn = oldColumn.clone();\n newColumn.name = newTableColumnOrName;\n }\n return [2 /*return*/, this.changeColumn(table, oldColumn, newColumn)];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n */\n AbstractSqliteQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, oldColumn;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(function (c) { return c.name === oldTableColumnOrName; });\n if (!oldColumn)\n throw new Error(\"Column \\\"\" + oldTableColumnOrName + \"\\\" was not found in the \\\"\" + table.name + \"\\\" table.\");\n return [4 /*yield*/, this.changeColumns(table, [{ oldColumn: oldColumn, newColumn: newColumn }])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Changes a column in the table.\n * Changed column looses all its keys in the db.\n */\n AbstractSqliteQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n changedColumns.forEach(function (changedColumnSet) {\n if (changedColumnSet.newColumn.name !== changedColumnSet.oldColumn.name) {\n changedTable.findColumnUniques(changedColumnSet.oldColumn).forEach(function (unique) {\n unique.columnNames.splice(unique.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n unique.columnNames.push(changedColumnSet.newColumn.name);\n unique.name = _this.connection.namingStrategy.uniqueConstraintName(changedTable, unique.columnNames);\n });\n changedTable.findColumnForeignKeys(changedColumnSet.oldColumn).forEach(function (fk) {\n fk.columnNames.splice(fk.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n fk.columnNames.push(changedColumnSet.newColumn.name);\n fk.name = _this.connection.namingStrategy.foreignKeyName(changedTable, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n });\n changedTable.findColumnIndices(changedColumnSet.oldColumn).forEach(function (index) {\n index.columnNames.splice(index.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n index.columnNames.push(changedColumnSet.newColumn.name);\n index.name = _this.connection.namingStrategy.indexName(changedTable, index.columnNames, index.where);\n });\n }\n var originalColumn = changedTable.columns.find(function (column) { return column.name === changedColumnSet.oldColumn.name; });\n if (originalColumn)\n changedTable.columns[changedTable.columns.indexOf(originalColumn)] = changedColumnSet.newColumn;\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops column in the table.\n */\n AbstractSqliteQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, column;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n column = columnOrName instanceof TableColumn ? columnOrName : table.findColumnByName(columnOrName);\n if (!column)\n throw new Error(\"Column \\\"\" + columnOrName + \"\\\" was not found in table \\\"\" + table.name + \"\\\"\");\n return [4 /*yield*/, this.dropColumns(table, [column])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops the columns in the table.\n */\n AbstractSqliteQueryRunner.prototype.dropColumns = function (tableOrName, columns) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n columns.forEach(function (column) {\n changedTable.removeColumn(column);\n changedTable.findColumnUniques(column).forEach(function (unique) { return changedTable.removeUniqueConstraint(unique); });\n changedTable.findColumnIndices(column).forEach(function (index) { return changedTable.removeIndex(index); });\n changedTable.findColumnForeignKeys(column).forEach(function (fk) { return changedTable.removeForeignKey(fk); });\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n // remove column and its constraints from original table.\n columns.forEach(function (column) {\n table.removeColumn(column);\n table.findColumnUniques(column).forEach(function (unique) { return table.removeUniqueConstraint(unique); });\n table.findColumnIndices(column).forEach(function (index) { return table.removeIndex(index); });\n table.findColumnForeignKeys(column).forEach(function (fk) { return table.removeForeignKey(fk); });\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new primary key.\n */\n AbstractSqliteQueryRunner.prototype.createPrimaryKey = function (tableOrName, columnNames) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n changedTable.columns.forEach(function (column) {\n if (columnNames.find(function (columnName) { return columnName === column.name; }))\n column.isPrimary = true;\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n // mark columns as primary in original table\n table.columns.forEach(function (column) {\n if (columnNames.find(function (columnName) { return columnName === column.name; }))\n column.isPrimary = true;\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates composite primary keys.\n */\n AbstractSqliteQueryRunner.prototype.updatePrimaryKeys = function (tableOrName, columns) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a primary key.\n */\n AbstractSqliteQueryRunner.prototype.dropPrimaryKey = function (tableOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n changedTable.primaryColumns.forEach(function (column) {\n column.isPrimary = false;\n });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n // mark primary columns as non-primary in original table\n table.primaryColumns.forEach(function (column) {\n column.isPrimary = false;\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new unique constraint.\n */\n AbstractSqliteQueryRunner.prototype.createUniqueConstraint = function (tableOrName, uniqueConstraint) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createUniqueConstraints(tableOrName, [uniqueConstraint])];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new unique constraints.\n */\n AbstractSqliteQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n uniqueConstraints.forEach(function (uniqueConstraint) { return changedTable.addUniqueConstraint(uniqueConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an unique constraint.\n */\n AbstractSqliteQueryRunner.prototype.dropUniqueConstraint = function (tableOrName, uniqueOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, uniqueConstraint;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n uniqueConstraint = uniqueOrName instanceof TableUnique ? uniqueOrName : table.uniques.find(function (u) { return u.name === uniqueOrName; });\n if (!uniqueConstraint)\n throw new Error(\"Supplied unique constraint was not found in table \" + table.name);\n return [4 /*yield*/, this.dropUniqueConstraints(table, [uniqueConstraint])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates an unique constraints.\n */\n AbstractSqliteQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n uniqueConstraints.forEach(function (uniqueConstraint) { return changedTable.removeUniqueConstraint(uniqueConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraint.\n */\n AbstractSqliteQueryRunner.prototype.createCheckConstraint = function (tableOrName, checkConstraint) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createCheckConstraints(tableOrName, [checkConstraint])];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates new check constraints.\n */\n AbstractSqliteQueryRunner.prototype.createCheckConstraints = function (tableOrName, checkConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n checkConstraints.forEach(function (checkConstraint) { return changedTable.addCheckConstraint(checkConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraint.\n */\n AbstractSqliteQueryRunner.prototype.dropCheckConstraint = function (tableOrName, checkOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, checkConstraint;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n checkConstraint = checkOrName instanceof TableCheck ? checkOrName : table.checks.find(function (c) { return c.name === checkOrName; });\n if (!checkConstraint)\n throw new Error(\"Supplied check constraint was not found in table \" + table.name);\n return [4 /*yield*/, this.dropCheckConstraints(table, [checkConstraint])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops check constraints.\n */\n AbstractSqliteQueryRunner.prototype.dropCheckConstraints = function (tableOrName, checkConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n checkConstraints.forEach(function (checkConstraint) { return changedTable.removeCheckConstraint(checkConstraint); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new exclusion constraint.\n */\n AbstractSqliteQueryRunner.prototype.createExclusionConstraint = function (tableOrName, exclusionConstraint) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Creates a new exclusion constraints.\n */\n AbstractSqliteQueryRunner.prototype.createExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Drops exclusion constraint.\n */\n AbstractSqliteQueryRunner.prototype.dropExclusionConstraint = function (tableOrName, exclusionOrName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Drops exclusion constraints.\n */\n AbstractSqliteQueryRunner.prototype.dropExclusionConstraints = function (tableOrName, exclusionConstraints) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error(\"Sqlite does not support exclusion constraints.\");\n });\n });\n };\n /**\n * Creates a new foreign key.\n */\n AbstractSqliteQueryRunner.prototype.createForeignKey = function (tableOrName, foreignKey) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.createForeignKeys(tableOrName, [foreignKey])];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new foreign keys.\n */\n AbstractSqliteQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n foreignKeys.forEach(function (foreignKey) { return changedTable.addForeignKey(foreignKey); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign key from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropForeignKey = function (tableOrName, foreignKeyOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, foreignKey;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n foreignKey = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName : table.foreignKeys.find(function (fk) { return fk.name === foreignKeyOrName; });\n if (!foreignKey)\n throw new Error(\"Supplied foreign key was not found in table \" + table.name);\n return [4 /*yield*/, this.dropForeignKeys(tableOrName, [foreignKey])];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops a foreign keys from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, changedTable;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n changedTable = table.clone();\n foreignKeys.forEach(function (foreignKey) { return changedTable.removeForeignKey(foreignKey); });\n return [4 /*yield*/, this.recreateTable(changedTable, table)];\n case 4:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new index.\n */\n AbstractSqliteQueryRunner.prototype.createIndex = function (tableOrName, index) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n up = this.createIndexSql(table, index);\n down = this.dropIndexSql(index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.addIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Creates a new indices\n */\n AbstractSqliteQueryRunner.prototype.createIndices = function (tableOrName, indices) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = indices.map(function (index) { return _this.createIndex(tableOrName, index); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an index from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropIndex = function (tableOrName, indexOrName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, _a, index, up, down;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(tableOrName instanceof Table)) return [3 /*break*/, 1];\n _a = tableOrName;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n table = _a;\n index = indexOrName instanceof TableIndex ? indexOrName : table.indices.find(function (i) { return i.name === indexOrName; });\n if (!index)\n throw new Error(\"Supplied index was not found in table \" + table.name);\n up = this.dropIndexSql(index);\n down = this.createIndexSql(table, index);\n return [4 /*yield*/, this.executeQueries(up, down)];\n case 4:\n _b.sent();\n table.removeIndex(index);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Drops an indices from the table.\n */\n AbstractSqliteQueryRunner.prototype.dropIndices = function (tableOrName, indices) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = indices.map(function (index) { return _this.dropIndex(tableOrName, index); });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n AbstractSqliteQueryRunner.prototype.clearTable = function (tableName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"DELETE FROM \\\"\" + tableName + \"\\\"\")];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Removes all tables from the currently connected database.\n */\n AbstractSqliteQueryRunner.prototype.clearDatabase = function () {\n return __awaiter(this, void 0, void 0, function () {\n var selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.query(\"PRAGMA foreign_keys = OFF;\")];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.startTransaction()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n _a.trys.push([3, 9, 14, 16]);\n selectViewDropsQuery = \"SELECT 'DROP VIEW \\\"' || name || '\\\";' as query FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'view'\";\n return [4 /*yield*/, this.query(selectViewDropsQuery)];\n case 4:\n dropViewQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 5:\n _a.sent();\n selectTableDropsQuery = \"SELECT 'DROP TABLE \\\"' || name || '\\\";' as query FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'table' AND \\\"name\\\" != 'sqlite_sequence'\";\n return [4 /*yield*/, this.query(selectTableDropsQuery)];\n case 6:\n dropTableQueries = _a.sent();\n return [4 /*yield*/, Promise.all(dropTableQueries.map(function (q) { return _this.query(q[\"query\"]); }))];\n case 7:\n _a.sent();\n return [4 /*yield*/, this.commitTransaction()];\n case 8:\n _a.sent();\n return [3 /*break*/, 16];\n case 9:\n error_1 = _a.sent();\n _a.label = 10;\n case 10:\n _a.trys.push([10, 12, , 13]);\n return [4 /*yield*/, this.rollbackTransaction()];\n case 11:\n _a.sent();\n return [3 /*break*/, 13];\n case 12:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 13];\n case 13: throw error_1;\n case 14: return [4 /*yield*/, this.query(\"PRAGMA foreign_keys = ON;\")];\n case 15:\n _a.sent();\n return [7 /*endfinally*/];\n case 16: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n AbstractSqliteQueryRunner.prototype.loadViews = function (viewNames) {\n return __awaiter(this, void 0, void 0, function () {\n var hasTable, viewNamesString, query, dbViews;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.hasTable(this.getTypeormMetadataTableName())];\n case 1:\n hasTable = _a.sent();\n if (!hasTable)\n return [2 /*return*/, Promise.resolve([])];\n viewNamesString = viewNames.map(function (name) { return \"'\" + name + \"'\"; }).join(\", \");\n query = \"SELECT \\\"t\\\".* FROM \\\"\" + this.getTypeormMetadataTableName() + \"\\\" \\\"t\\\" INNER JOIN \\\"sqlite_master\\\" s ON \\\"s\\\".\\\"name\\\" = \\\"t\\\".\\\"name\\\" AND \\\"s\\\".\\\"type\\\" = 'view' WHERE \\\"t\\\".\\\"type\\\" = 'VIEW'\";\n if (viewNamesString.length > 0)\n query += \" AND \\\"t\\\".\\\"name\\\" IN (\" + viewNamesString + \")\";\n return [4 /*yield*/, this.query(query)];\n case 2:\n dbViews = _a.sent();\n return [2 /*return*/, dbViews.map(function (dbView) {\n var view = new View();\n view.name = dbView[\"name\"];\n view.expression = dbView[\"value\"];\n return view;\n })];\n }\n });\n });\n };\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n AbstractSqliteQueryRunner.prototype.loadTables = function (tableNames) {\n return __awaiter(this, void 0, void 0, function () {\n var tableNamesString, dbTables, dbIndicesDef;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // if no tables given then no need to proceed\n if (!tableNames || !tableNames.length)\n return [2 /*return*/, []];\n tableNamesString = tableNames.map(function (tableName) { return \"'\" + tableName + \"'\"; }).join(\", \");\n return [4 /*yield*/, this.query(\"SELECT * FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'table' AND \\\"name\\\" IN (\" + tableNamesString + \")\")];\n case 1:\n dbTables = _a.sent();\n return [4 /*yield*/, this.query(\"SELECT * FROM \\\"sqlite_master\\\" WHERE \\\"type\\\" = 'index' AND \\\"tbl_name\\\" IN (\" + tableNamesString + \")\")];\n case 2:\n dbIndicesDef = _a.sent();\n // if tables were not found in the db, no need to proceed\n if (!dbTables || !dbTables.length)\n return [2 /*return*/, []];\n // create table schemas for loaded tables\n return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return __awaiter(_this, void 0, void 0, function () {\n var table, sql, _a, dbColumns, dbIndices, dbForeignKeys, autoIncrementColumnName, tableSql, autoIncrementIndex, comma, bracket, tableForeignKeyConstraints, tableUniquePromises, _b, result, regexp, indicesPromises, indices;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n table = new Table({ name: dbTable[\"name\"] });\n sql = dbTable[\"sql\"];\n return [4 /*yield*/, Promise.all([\n this.query(\"PRAGMA table_info(\\\"\" + dbTable[\"name\"] + \"\\\")\"),\n this.query(\"PRAGMA index_list(\\\"\" + dbTable[\"name\"] + \"\\\")\"),\n this.query(\"PRAGMA foreign_key_list(\\\"\" + dbTable[\"name\"] + \"\\\")\"),\n ])];\n case 1:\n _a = __read.apply(void 0, [_c.sent(), 3]), dbColumns = _a[0], dbIndices = _a[1], dbForeignKeys = _a[2];\n autoIncrementColumnName = undefined;\n tableSql = dbTable[\"sql\"];\n autoIncrementIndex = tableSql.toUpperCase().indexOf(\"AUTOINCREMENT\");\n if (autoIncrementIndex !== -1) {\n autoIncrementColumnName = tableSql.substr(0, autoIncrementIndex);\n comma = autoIncrementColumnName.lastIndexOf(\",\");\n bracket = autoIncrementColumnName.lastIndexOf(\"(\");\n if (comma !== -1) {\n autoIncrementColumnName = autoIncrementColumnName.substr(comma);\n autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf(\"\\\"\"));\n autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf(\"\\\"\") + 1);\n }\n else if (bracket !== -1) {\n autoIncrementColumnName = autoIncrementColumnName.substr(bracket);\n autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf(\"\\\"\"));\n autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf(\"\\\"\") + 1);\n }\n }\n // create columns from the loaded columns\n table.columns = dbColumns.map(function (dbColumn) {\n var tableColumn = new TableColumn();\n tableColumn.name = dbColumn[\"name\"];\n tableColumn.type = dbColumn[\"type\"].toLowerCase();\n tableColumn.default = dbColumn[\"dflt_value\"] !== null && dbColumn[\"dflt_value\"] !== undefined ? dbColumn[\"dflt_value\"] : undefined;\n tableColumn.isNullable = dbColumn[\"notnull\"] === 0;\n // primary keys are numbered starting with 1, columns that aren't primary keys are marked with 0\n tableColumn.isPrimary = dbColumn[\"pk\"] > 0;\n tableColumn.comment = \"\"; // SQLite does not support column comments\n tableColumn.isGenerated = autoIncrementColumnName === dbColumn[\"name\"];\n if (tableColumn.isGenerated) {\n tableColumn.generationStrategy = \"increment\";\n }\n if (tableColumn.type === \"varchar\") {\n // Check if this is an enum\n var enumMatch = sql.match(new RegExp(\"\\\"(\" + tableColumn.name + \")\\\" varchar CHECK\\\\s*\\\\(\\\\s*\\\\1\\\\s+IN\\\\s*\\\\(('[^']+'(?:\\\\s*,\\\\s*'[^']+')+)\\\\s*\\\\)\\\\s*\\\\)\"));\n if (enumMatch) {\n // This is an enum\n tableColumn.enum = enumMatch[2].substr(1, enumMatch[2].length - 2).split(\"','\");\n }\n }\n // parse datatype and attempt to retrieve length, precision and scale\n var pos = tableColumn.type.indexOf(\"(\");\n if (pos !== -1) {\n var fullType = tableColumn.type;\n var dataType_1 = fullType.substr(0, pos);\n if (!!_this.driver.withLengthColumnTypes.find(function (col) { return col === dataType_1; })) {\n var len = parseInt(fullType.substring(pos + 1, fullType.length - 1));\n if (len) {\n tableColumn.length = len.toString();\n tableColumn.type = dataType_1; // remove the length part from the datatype\n }\n }\n if (!!_this.driver.withPrecisionColumnTypes.find(function (col) { return col === dataType_1; })) {\n var re = new RegExp(\"^\" + dataType_1 + \"\\\\((\\\\d+),?\\\\s?(\\\\d+)?\\\\)\");\n var matches = fullType.match(re);\n if (matches && matches[1]) {\n tableColumn.precision = +matches[1];\n }\n if (!!_this.driver.withScaleColumnTypes.find(function (col) { return col === dataType_1; })) {\n if (matches && matches[2]) {\n tableColumn.scale = +matches[2];\n }\n }\n tableColumn.type = dataType_1; // remove the precision/scale part from the datatype\n }\n }\n return tableColumn;\n });\n tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys, function (dbForeignKey) { return dbForeignKey[\"id\"]; });\n table.foreignKeys = tableForeignKeyConstraints.map(function (foreignKey) {\n var ownForeignKeys = dbForeignKeys.filter(function (dbForeignKey) { return dbForeignKey[\"id\"] === foreignKey[\"id\"] && dbForeignKey[\"table\"] === foreignKey[\"table\"]; });\n var columnNames = ownForeignKeys.map(function (dbForeignKey) { return dbForeignKey[\"from\"]; });\n var referencedColumnNames = ownForeignKeys.map(function (dbForeignKey) { return dbForeignKey[\"to\"]; });\n // build foreign key name, because we can not get it directly.\n var fkName = _this.connection.namingStrategy.foreignKeyName(table, columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n return new TableForeignKey({\n name: fkName,\n columnNames: columnNames,\n referencedTableName: foreignKey[\"table\"],\n referencedColumnNames: referencedColumnNames,\n onDelete: foreignKey[\"on_delete\"],\n onUpdate: foreignKey[\"on_update\"]\n });\n });\n tableUniquePromises = dbIndices\n .filter(function (dbIndex) { return dbIndex[\"origin\"] === \"u\"; })\n .map(function (dbIndex) { return dbIndex[\"name\"]; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; })\n .map(function (dbIndexName) { return __awaiter(_this, void 0, void 0, function () {\n var dbIndex, indexInfos, indexColumns, column;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n dbIndex = dbIndices.find(function (dbIndex) { return dbIndex[\"name\"] === dbIndexName; });\n return [4 /*yield*/, this.query(\"PRAGMA index_info(\\\"\" + dbIndex[\"name\"] + \"\\\")\")];\n case 1:\n indexInfos = _a.sent();\n indexColumns = indexInfos\n .sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1[\"seqno\"]) - parseInt(indexInfo2[\"seqno\"]); })\n .map(function (indexInfo) { return indexInfo[\"name\"]; });\n if (indexColumns.length === 1) {\n column = table.columns.find(function (column) {\n return !!indexColumns.find(function (indexColumn) { return indexColumn === column.name; });\n });\n if (column)\n column.isUnique = true;\n }\n // Sqlite does not store unique constraint name, so we generate its name manually.\n return [2 /*return*/, new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(table, indexColumns),\n columnNames: indexColumns\n })];\n }\n });\n }); });\n _b = table;\n return [4 /*yield*/, Promise.all(tableUniquePromises)];\n case 2:\n _b.uniques = (_c.sent());\n regexp = /CONSTRAINT \"([^\"]*)\" CHECK (\\(.*?\\))([,]|[)]$)/g;\n while (((result = regexp.exec(sql)) !== null)) {\n table.checks.push(new TableCheck({ name: result[1], expression: result[2] }));\n }\n indicesPromises = dbIndices\n .filter(function (dbIndex) { return dbIndex[\"origin\"] === \"c\"; })\n .map(function (dbIndex) { return dbIndex[\"name\"]; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; }) // unqiue\n .map(function (dbIndexName) { return __awaiter(_this, void 0, void 0, function () {\n var indexDef, condition, dbIndex, indexInfos, indexColumns, isUnique;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n indexDef = dbIndicesDef.find(function (dbIndexDef) { return dbIndexDef[\"name\"] === dbIndexName; });\n condition = /WHERE (.*)/.exec(indexDef[\"sql\"]);\n dbIndex = dbIndices.find(function (dbIndex) { return dbIndex[\"name\"] === dbIndexName; });\n return [4 /*yield*/, this.query(\"PRAGMA index_info(\\\"\" + dbIndex[\"name\"] + \"\\\")\")];\n case 1:\n indexInfos = _a.sent();\n indexColumns = indexInfos\n .sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1[\"seqno\"]) - parseInt(indexInfo2[\"seqno\"]); })\n .map(function (indexInfo) { return indexInfo[\"name\"]; });\n isUnique = dbIndex[\"unique\"] === \"1\" || dbIndex[\"unique\"] === 1;\n return [2 /*return*/, new TableIndex({\n table: table,\n name: dbIndex[\"name\"],\n columnNames: indexColumns,\n isUnique: isUnique,\n where: condition ? condition[1] : undefined\n })];\n }\n });\n }); });\n return [4 /*yield*/, Promise.all(indicesPromises)];\n case 3:\n indices = _c.sent();\n table.indices = indices.filter(function (index) { return !!index; });\n return [2 /*return*/, table];\n }\n });\n }); }))];\n }\n });\n });\n };\n /**\n * Builds create table sql.\n */\n AbstractSqliteQueryRunner.prototype.createTableSql = function (table, createForeignKeys) {\n var _this = this;\n var primaryColumns = table.columns.filter(function (column) { return column.isPrimary; });\n var hasAutoIncrement = primaryColumns.find(function (column) { return column.isGenerated && column.generationStrategy === \"increment\"; });\n var skipPrimary = primaryColumns.length > 1;\n if (skipPrimary && hasAutoIncrement)\n throw new Error(\"Sqlite does not support AUTOINCREMENT on composite primary key\");\n var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(column, skipPrimary); }).join(\", \");\n var sql = \"CREATE TABLE \\\"\" + table.name + \"\\\" (\" + columnDefinitions;\n // need for `addColumn()` method, because it recreates table.\n table.columns\n .filter(function (column) { return column.isUnique; })\n .forEach(function (column) {\n var isUniqueExist = table.uniques.some(function (unique) { return unique.columnNames.length === 1 && unique.columnNames[0] === column.name; });\n if (!isUniqueExist)\n table.uniques.push(new TableUnique({\n name: _this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n }));\n });\n if (table.uniques.length > 0) {\n var uniquesSql = table.uniques.map(function (unique) {\n var uniqueName = unique.name ? unique.name : _this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames);\n var columnNames = unique.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return \"CONSTRAINT \\\"\" + uniqueName + \"\\\" UNIQUE (\" + columnNames + \")\";\n }).join(\", \");\n sql += \", \" + uniquesSql;\n }\n if (table.checks.length > 0) {\n var checksSql = table.checks.map(function (check) {\n var checkName = check.name ? check.name : _this.connection.namingStrategy.checkConstraintName(table.name, check.expression);\n return \"CONSTRAINT \\\"\" + checkName + \"\\\" CHECK (\" + check.expression + \")\";\n }).join(\", \");\n sql += \", \" + checksSql;\n }\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n var foreignKeysSql = table.foreignKeys.map(function (fk) {\n var columnNames = fk.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n if (!fk.name)\n fk.name = _this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n var constraint = \"CONSTRAINT \\\"\" + fk.name + \"\\\" FOREIGN KEY (\" + columnNames + \") REFERENCES \\\"\" + fk.referencedTableName + \"\\\" (\" + referencedColumnNames + \")\";\n if (fk.onDelete)\n constraint += \" ON DELETE \" + fk.onDelete;\n if (fk.onUpdate)\n constraint += \" ON UPDATE \" + fk.onUpdate;\n return constraint;\n }).join(\", \");\n sql += \", \" + foreignKeysSql;\n }\n if (primaryColumns.length > 1) {\n var columnNames = primaryColumns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n sql += \", PRIMARY KEY (\" + columnNames + \")\";\n }\n sql += \")\";\n var tableMetadata = this.connection.entityMetadatas.find(function (metadata) { return metadata.tableName === table.name; });\n if (tableMetadata && tableMetadata.withoutRowid) {\n sql += \" WITHOUT ROWID\";\n }\n return new Query(sql);\n };\n /**\n * Builds drop table sql.\n */\n AbstractSqliteQueryRunner.prototype.dropTableSql = function (tableOrName, ifExist) {\n var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n var query = ifExist ? \"DROP TABLE IF EXISTS \\\"\" + tableName + \"\\\"\" : \"DROP TABLE \\\"\" + tableName + \"\\\"\";\n return new Query(query);\n };\n AbstractSqliteQueryRunner.prototype.createViewSql = function (view) {\n if (typeof view.expression === \"string\") {\n return new Query(\"CREATE VIEW \\\"\" + view.name + \"\\\" AS \" + view.expression);\n }\n else {\n return new Query(\"CREATE VIEW \\\"\" + view.name + \"\\\" AS \" + view.expression(this.connection).getQuery());\n }\n };\n AbstractSqliteQueryRunner.prototype.insertViewDefinitionSql = function (view) {\n var expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n var _a = __read(this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ type: \"VIEW\", name: view.name, value: expression })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return new Query(query, parameters);\n };\n /**\n * Builds drop view sql.\n */\n AbstractSqliteQueryRunner.prototype.dropViewSql = function (viewOrPath) {\n var viewName = viewOrPath instanceof View ? viewOrPath.name : viewOrPath;\n return new Query(\"DROP VIEW \\\"\" + viewName + \"\\\"\");\n };\n /**\n * Builds remove view sql.\n */\n AbstractSqliteQueryRunner.prototype.deleteViewDefinitionSql = function (viewOrPath) {\n var viewName = viewOrPath instanceof View ? viewOrPath.name : viewOrPath;\n var qb = this.connection.createQueryBuilder();\n var _a = __read(qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(qb.escape(\"type\") + \" = 'VIEW'\")\n .andWhere(qb.escape(\"name\") + \" = :name\", { name: viewName })\n .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];\n return new Query(query, parameters);\n };\n /**\n * Builds create index sql.\n */\n AbstractSqliteQueryRunner.prototype.createIndexSql = function (table, index) {\n var columns = index.columnNames.map(function (columnName) { return \"\\\"\" + columnName + \"\\\"\"; }).join(\", \");\n return new Query(\"CREATE \" + (index.isUnique ? \"UNIQUE \" : \"\") + \"INDEX \\\"\" + index.name + \"\\\" ON \\\"\" + table.name + \"\\\" (\" + columns + \") \" + (index.where ? \"WHERE \" + index.where : \"\"));\n };\n /**\n * Builds drop index sql.\n */\n AbstractSqliteQueryRunner.prototype.dropIndexSql = function (indexOrName) {\n var indexName = indexOrName instanceof TableIndex ? indexOrName.name : indexOrName;\n return new Query(\"DROP INDEX \\\"\" + indexName + \"\\\"\");\n };\n /**\n * Builds a query for create column.\n */\n AbstractSqliteQueryRunner.prototype.buildCreateColumnSql = function (column, skipPrimary) {\n var c = \"\\\"\" + column.name + \"\\\"\";\n if (column instanceof ColumnMetadata) {\n c += \" \" + this.driver.normalizeType(column);\n }\n else {\n c += \" \" + this.connection.driver.createFullType(column);\n }\n if (column.enum)\n c += \" CHECK( \" + column.name + \" IN (\" + column.enum.map(function (val) { return \"'\" + val + \"'\"; }).join(\",\") + \") )\";\n if (column.isPrimary && !skipPrimary)\n c += \" PRIMARY KEY\";\n if (column.isGenerated === true && column.generationStrategy === \"increment\") // don't use skipPrimary here since updates can update already exist primary without auto inc.\n c += \" AUTOINCREMENT\";\n if (column.collation)\n c += \" COLLATE \" + column.collation;\n if (column.isNullable !== true)\n c += \" NOT NULL\";\n if (column.default !== undefined && column.default !== null)\n c += \" DEFAULT (\" + column.default + \")\";\n return c;\n };\n AbstractSqliteQueryRunner.prototype.recreateTable = function (newTable, oldTable, migrateData) {\n if (migrateData === void 0) { migrateData = true; }\n return __awaiter(this, void 0, void 0, function () {\n var upQueries, downQueries, newColumnNames, oldColumnNames;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n upQueries = [];\n downQueries = [];\n // drop old table indices\n oldTable.indices.forEach(function (index) {\n upQueries.push(_this.dropIndexSql(index));\n downQueries.push(_this.createIndexSql(oldTable, index));\n });\n // change table name into 'temporary_table'\n newTable.name = \"temporary_\" + newTable.name;\n // create new table\n upQueries.push(this.createTableSql(newTable, true));\n downQueries.push(this.dropTableSql(newTable));\n // migrate all data from the old table into new table\n if (migrateData) {\n newColumnNames = newTable.columns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n oldColumnNames = oldTable.columns.map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n if (oldTable.columns.length < newTable.columns.length) {\n newColumnNames = newTable.columns.filter(function (column) {\n return oldTable.columns.find(function (c) { return c.name === column.name; });\n }).map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n }\n else if (oldTable.columns.length > newTable.columns.length) {\n oldColumnNames = oldTable.columns.filter(function (column) {\n return newTable.columns.find(function (c) { return c.name === column.name; });\n }).map(function (column) { return \"\\\"\" + column.name + \"\\\"\"; }).join(\", \");\n }\n upQueries.push(new Query(\"INSERT INTO \\\"\" + newTable.name + \"\\\"(\" + newColumnNames + \") SELECT \" + oldColumnNames + \" FROM \\\"\" + oldTable.name + \"\\\"\"));\n downQueries.push(new Query(\"INSERT INTO \\\"\" + oldTable.name + \"\\\"(\" + oldColumnNames + \") SELECT \" + newColumnNames + \" FROM \\\"\" + newTable.name + \"\\\"\"));\n }\n // drop old table\n upQueries.push(this.dropTableSql(oldTable));\n downQueries.push(this.createTableSql(oldTable, true));\n // rename old table\n upQueries.push(new Query(\"ALTER TABLE \\\"\" + newTable.name + \"\\\" RENAME TO \\\"\" + oldTable.name + \"\\\"\"));\n downQueries.push(new Query(\"ALTER TABLE \\\"\" + oldTable.name + \"\\\" RENAME TO \\\"\" + newTable.name + \"\\\"\"));\n newTable.name = oldTable.name;\n // recreate table indices\n newTable.indices.forEach(function (index) {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = _this.connection.namingStrategy.indexName(newTable.name, index.columnNames, index.where);\n upQueries.push(_this.createIndexSql(newTable, index));\n downQueries.push(_this.dropIndexSql(index));\n });\n return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];\n case 1:\n _a.sent();\n this.replaceCachedTable(oldTable, newTable);\n return [2 /*return*/];\n }\n });\n });\n };\n return AbstractSqliteQueryRunner;\n}(BaseQueryRunner));\nexport { AbstractSqliteQueryRunner };\n\n//# sourceMappingURL=AbstractSqliteQueryRunner.js.map\n","/**\n * Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.\n */\nvar EntitySchema = /** @class */ (function () {\n function EntitySchema(options) {\n this.options = options;\n }\n return EntitySchema;\n}());\nexport { EntitySchema };\n\n//# sourceMappingURL=EntitySchema.js.map\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EasySyncBaseModel = void 0;\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nconst shared_1 = require(\"js-helper/dist/shared\");\nclass EasySyncBaseModel extends cordova_sites_database_1.BaseModel {\n constructor() {\n super();\n this._delegate = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n this.version = 1;\n this.deleted = false;\n }\n toJSON(includeFull) {\n let relations = this.constructor.getRelationDefinitions();\n let columns = this.constructor.getColumnDefinitions();\n let obj = {};\n Object.keys(columns).forEach(attribute => {\n obj[attribute] = this[attribute];\n });\n Object.keys(relations).forEach(relationName => {\n if (includeFull === true) {\n obj[relationName] = this[relationName];\n }\n else {\n if (Array.isArray(this[relationName])) {\n let ids = [];\n this[relationName].forEach(child => (child && ids.push(child.id)));\n obj[relationName] = ids;\n }\n else if (this[relationName] instanceof cordova_sites_database_1.BaseModel) {\n obj[relationName] = this[relationName].id;\n }\n else {\n obj[relationName] = null;\n }\n }\n });\n return obj;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"createdAt\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE\n };\n columns[\"updatedAt\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE\n };\n columns[\"version\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n };\n columns[\"deleted\"] = {\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN\n };\n return columns;\n }\n static _fromJson(jsonObjects, entities, includeRelations) {\n return __awaiter(this, void 0, void 0, function* () {\n entities = entities || [];\n let isArray = Array.isArray(jsonObjects);\n if (!isArray) {\n jsonObjects = [jsonObjects];\n }\n if (!Array.isArray(entities)) {\n entities = [entities];\n }\n let loadPromises = [];\n let addLoadPromises = [];\n jsonObjects.forEach((jsonObject, index) => {\n addLoadPromises.push(new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let entity = null;\n if (entities.length > index) {\n entity = entities[index];\n }\n else if (shared_1.Helper.isNotNull(jsonObject.id)) {\n entity = yield this.findById(jsonObject.id, this.getRelations());\n }\n if (entity === null) {\n entity = new this();\n }\n if (!jsonObject.version && jsonObject.version !== 0) {\n jsonObject.version = 1;\n }\n entities[index] = Object.assign(entity, jsonObject);\n this._handleColumns(entities[index]);\n this._handleRelations(entities[index], includeRelations, loadPromises);\n resolve();\n })));\n });\n //addLoadPromises adds other loadPromises. Therefore wait until done, then wait for other\n yield Promise.all(addLoadPromises);\n yield Promise.all(loadPromises);\n if (!isArray) {\n entities = (entities.length > 0) ? entities[0] : null;\n }\n return entities;\n });\n }\n static _handleRelations(entity, includeRelations, loadPromises) {\n let relations = this.getRelationDefinitions();\n Object.keys(relations).forEach(relationName => {\n let values = entity[relationName];\n if (typeof values === \"number\" || (Array.isArray(values) && values.length >= 1 && typeof values[0] === \"number\")) {\n if (includeRelations === true) {\n let loadPromise = null;\n if (Array.isArray(values)) {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findByIds(values);\n }\n else {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findById(values);\n }\n loadPromises.push(loadPromise.then(value => {\n entity[relationName] = value;\n }));\n }\n else if (includeRelations === false) {\n if (relations[relationName].type === \"many-to-many\" || relations[relationName].type === \"one-to-many\") {\n entity[relationName] = [];\n }\n else {\n entity[relationName] = null;\n }\n }\n }\n });\n }\n static _handleColumns(entity) {\n let schemaDefinition = this.getSchemaDefinition();\n let columns = schemaDefinition[\"columns\"];\n Object.keys(columns).forEach(columnName => {\n if (columns[columnName].escapeHTML) {\n entity[columnName] = shared_1.XSSHelper.escapeHTML(entity[columnName]);\n }\n if (columns[columnName].escapeJS) {\n entity[columnName] = shared_1.XSSHelper.escapeJS(entity[columnName]);\n }\n });\n }\n static prepareSync(entities) {\n return entities;\n }\n}\nexports.EasySyncBaseModel = EasySyncBaseModel;\nEasySyncBaseModel.delegateClass = null;\nEasySyncBaseModel.CAN_BE_SYNCED = true;\n//# sourceMappingURL=EasySyncBaseModel.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractFragment = void 0;\nconst Context_1 = require(\"./Context\");\nconst Helper_1 = require(\"../Legacy/Helper\");\n/**\n * Ein Fragment ist ein TeilView einer Ansicht.\n */\nclass AbstractFragment extends Context_1.Context {\n /**\n * Erstellt ein neues Fragment\n *\n * @param site\n * @param view\n */\n constructor(site, view) {\n super(view);\n this._site = site;\n this._viewQuery = null;\n this._active = true;\n }\n /**\n * Gibt die zugehörige Seite zurück\n *\n * @returns\n */\n getSite() {\n if (this._site instanceof AbstractFragment) {\n return this._site.getSite();\n }\n return this._site;\n }\n startSite(site, args) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._site.startSite(site, args);\n });\n }\n /**\n * Gibt zurück, ob das Fragment aktiv ist. Wenn nicht, wird es in der Seite nicht angezeigt\n *\n * @returns {boolean}\n */\n isActive() {\n return this._active;\n }\n setViewQuery(query) {\n this._viewQuery = query;\n }\n getViewQuery() {\n return this._viewQuery;\n }\n setActive(active) {\n this._active = active;\n if (Helper_1.Helper.isNotNull(this._view)) {\n if (active) {\n this._view.classList.remove(\"hidden\");\n }\n else {\n this._view.classList.add(\"hidden\");\n }\n }\n }\n}\nexports.AbstractFragment = AbstractFragment;\n//# sourceMappingURL=AbstractFragment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MenuAction = void 0;\nconst Helper_1 = require(\"../../../Legacy/Helper\");\n/**\n * Container für verschiedene Eigenschaften\n */\nclass MenuAction {\n /**\n * Erstellt eine MenuAction.\n * Außer name und action ist alles mit Default-werten vorbelegt\n *\n * @param name\n * @param action\n * @param showFor\n * @param order\n * @param icon\n */\n constructor(name, action, showFor, order, icon) {\n this._liClass = \"\";\n this._shouldTranslate = true;\n this._visible = true;\n this._activated = true;\n this._copies = [];\n this._menu = null;\n this._name = name;\n this._action = action;\n this._showFor = Helper_1.Helper.nonNull(showFor, MenuAction.SHOW_FOR_MEDIUM);\n this._order = Helper_1.Helper.nonNull(order, 1000);\n this._icon = icon;\n this._id = MenuAction.lastId++;\n this._liClass = \"\";\n this._shouldTranslate = true;\n this._visible = true;\n this._activated = true;\n this._menu = null;\n this._copies = [];\n }\n /**\n * Erstellt eine neue MenuAction auf grundlage dieser MenuAction. Alle Eigenschaften sind identisch, bis auf die ID\n *\n * @param action\n * @return {MenuAction}\n */\n copy(action) {\n let copiedAction = Helper_1.Helper.nonNull(action, new MenuAction());\n copiedAction._name = this._name;\n copiedAction._action = this._action;\n copiedAction._showFor = this._showFor;\n copiedAction._order = this._order;\n copiedAction._liClass = this._liClass;\n copiedAction._shouldTranslate = this._shouldTranslate;\n copiedAction._visible = this._visible;\n copiedAction._activated = this._activated;\n copiedAction._icon = this._icon;\n copiedAction._id = MenuAction.lastId++;\n this._copies.push(copiedAction);\n return copiedAction;\n // return new MenuActionSlave(this);\n }\n // _triggerCopies(fn, args){\n // this._copies.forEach(copy => {\n // copy[fn].apply(copy, args);\n // })\n // }\n /**\n * Sorgt dafür, dass die Action neu gezeichnet wird\n */\n redraw() {\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.redrawAction(this);\n }\n this._copies.forEach(copy => copy.redraw());\n }\n /**\n * Sorgt dafür, dass die ActionElemente geupdatet wird\n */\n update() {\n this._menu.updateAction(this);\n this._copies.forEach(copy => copy.update());\n }\n /**\n * Gibt die Order der MenuAction zurück. Die Order bestimmt die Reihenfolge in der die Elemente angezeigt werden.\n * Je kleiner die Order, desto weiter rechts/oben werden diese angezeigt\n *\n * @returns {*}\n */\n getOrder() {\n return this._order;\n }\n /**\n * Gibt zurück, ob die MenuAction aktiv ist\n *\n * @returns {boolean}\n */\n isActivated() {\n return this._activated;\n }\n /**\n * Gibt an, ob der Name übersetzt werden soll\n *\n * @returns {boolean}\n */\n isShouldTranslate() {\n return this._shouldTranslate;\n }\n setShouldTranslate(shouldTranslate) {\n this._shouldTranslate = (shouldTranslate === true);\n this.redraw();\n }\n setVisibility(visibility) {\n this._visible = visibility;\n this.redraw();\n this._copies.forEach(copy => copy.setVisibility(visibility));\n }\n /**\n * Gibt an, ob die MenuAction sichtbar ist\n *\n * @returns {boolean}\n */\n isVisible() {\n return this._visible;\n }\n /**\n * Gibt den Namen zurück\n *\n * @returns {*}\n */\n getName() {\n return this._name;\n }\n setName(name) {\n this._name = name;\n this.redraw();\n }\n /**\n * Gibt die Action, welche beim Click ausgeführt werden soll zurück\n * @returns {string|function}\n */\n getAction() {\n return this._action;\n }\n /**\n * Gibt die ID der MenuAction zurück\n * @returns {number}\n */\n getId() {\n return this._id;\n }\n /**\n * Gibt das Icon der MenuAction zurück\n * @returns {string|null}\n */\n getIcon() {\n return this._icon;\n }\n setIcon(icon) {\n this._icon = icon;\n this.redraw();\n }\n /**\n * Gibt die View-Klasse der Action zurück\n * @returns {string}\n */\n getShowFor() {\n return this._showFor;\n }\n /**\n * Gibt eine odder mehrere extra Klasse zurück, die dem li-Element der Action hinzugefügt werden kann\n * @returns {string}\n */\n getLiClass() {\n return this._liClass;\n }\n setLiClass(cssClass) {\n this._liClass = cssClass;\n this._copies.forEach(c => c.setLiClass(cssClass));\n this.redraw();\n }\n /**\n * Gibt das zugehörige Menu zurück\n *\n * @returns {null}\n */\n getMenu() {\n return this._menu;\n }\n /**\n * Setzt das zugehörige Menu\n *\n * @param menu\n */\n setMenu(menu) {\n this._menu = menu;\n }\n}\nexports.MenuAction = MenuAction;\n/**\n * Letzte ID, die vergeben wurde. Wird beim Erstellen einer Acton um eins erhöht\n * @type {number}\n */\nMenuAction.lastId = 0;\n/**\n * Die SHOW_ALWAYS-Visibility-Klasse\n * Das Element wird bei jeder Größe in der NavBar angezeigt\n *\n * @type {string}\n */\nMenuAction.SHOW_ALWAYS = \"always\";\n/**\n * Die SHOW_FOR_SMEDIUM-Visibility-Klasse\n * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe \"SMedium\" (zwischen Small und Medium) hat\n *\n * @type {string}\n */\nMenuAction.SHOW_FOR_SMEDIUM = \"smedium\";\n/**\n * Die SHOW_FOR_MEDIUM-Visibility-Klasse\n * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe \"Medium\" hat\n *\n * @type {string}\n */\nMenuAction.SHOW_FOR_MEDIUM = \"medium\";\n/**\n * Die SHOW_FOR_LARGE-Visibility-Klasse\n * Das Element wird in der NavBar angezeigt, wenn der Bildschirm mindestens die Größe \"Large\" hat\n *\n * @type {string}\n */\nMenuAction.SHOW_FOR_LARGE = \"large\";\n/**\n * Die SHOW_FOR_MEDIUM-Visibility-Klasse\n * Das Element wird nie in der NavBar angezeigt, sondern immer nur im aufklapbaren Menu\n *\n * @type {string}\n */\nMenuAction.SHOW_NEVER = \"never\";\n//# sourceMappingURL=MenuAction.js.map","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Dialog = void 0;\nconst Helper_1 = require(\"../Legacy/Helper\");\nconst Translator_1 = require(\"../Translator\");\nconst ViewInflater_1 = require(\"../ViewInflater\");\nclass Dialog {\n constructor(content, title) {\n this._resolver = null;\n this._content = null;\n this._backgroundElement = null;\n this._cancelable = true;\n this._title = Helper_1.Helper.nonNull(title, \"\");\n this._translatable = true;\n this._additionalClasses = \"\";\n this._buttons = [];\n this._result = null;\n this._contentPromise = null;\n this._addedToDomePromise = new Promise(r => {\n this._addedToDomePromiseResolver = r;\n });\n if (Helper_1.Helper.isNotNull(content)) {\n this.setContent(content);\n }\n }\n setTitle(title) {\n this._title = title;\n return this;\n }\n setTranslatable(translatable) {\n this._translatable = translatable;\n }\n setAdditionalClasses(classes) {\n this._additionalClasses = classes;\n }\n getTitle() {\n return this._title;\n }\n setCancelable(cancelable) {\n this._cancelable = (cancelable === true);\n return this;\n }\n setContent(content) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof content === \"string\" && content.endsWith(\".html\")) {\n content = ViewInflater_1.ViewInflater.getInstance().load(content);\n }\n this._contentPromise = Promise.resolve(content);\n this._content = yield this._contentPromise;\n return this;\n });\n }\n addButton(elementOrText, listenerOrResult, shouldClose) {\n shouldClose = Helper_1.Helper.nonNull(shouldClose, true);\n let button = null;\n if (typeof elementOrText === \"string\") {\n button = document.createElement(\"button\");\n button.classList.add(\"button\");\n button.classList.add(\"right\");\n button.appendChild(Translator_1.Translator.makePersistentTranslation(elementOrText));\n }\n else {\n button = elementOrText;\n }\n let self = this;\n if (typeof listenerOrResult !== \"function\") {\n let result = listenerOrResult;\n listenerOrResult = function () {\n self._result = result;\n };\n }\n let callback = null;\n if (shouldClose) {\n callback = function (e) {\n if (Helper_1.Helper.isNotNull(listenerOrResult)) {\n listenerOrResult(e);\n }\n self.close();\n };\n }\n else {\n callback = listenerOrResult;\n }\n if (Helper_1.Helper.isNotNull(callback)) {\n button.addEventListener(\"click\", callback);\n }\n this._buttons.push(button);\n }\n show() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._contentPromise;\n this._backgroundElement = this.createModalDialogElement();\n this._backgroundElement.addEventListener(\"keyup\", e => {\n if (e.key === \"Escape\" && this._cancelable) {\n this.close();\n }\n });\n document.body.appendChild(this._backgroundElement);\n yield Translator_1.Translator.getInstance().updateTranslations();\n this._addedToDomePromiseResolver();\n return new Promise((resolve) => {\n this._resolver = resolve;\n });\n });\n }\n createModalDialogElement() {\n let titleElement = document.createElement(\"span\");\n titleElement.classList.add(\"title\");\n if (this._translatable && this._title !== \"\") {\n titleElement.appendChild(Translator_1.Translator.makePersistentTranslation(this._title));\n }\n else {\n titleElement.innerHTML = this._title;\n }\n let titleBar = document.createElement(\"div\");\n titleBar.appendChild(titleElement);\n let contentContainer = document.createElement(\"div\");\n contentContainer.classList.add(\"content-container\");\n let modalDialog = document.createElement(\"div\");\n modalDialog.className = this._additionalClasses;\n modalDialog.classList.add(\"modal\");\n modalDialog.appendChild(titleBar);\n modalDialog.appendChild(contentContainer);\n let buttonBar = document.createElement(\"div\");\n buttonBar.classList.add(\"modal-button-container\");\n for (let i = 0, n = this._buttons.length; i < n; i++) {\n buttonBar.appendChild(this._buttons[i]);\n }\n if (!(this._content instanceof Node)) {\n this._content = (this._translatable) ? Translator_1.Translator.makePersistentTranslation(this._content) : document.createTextNode(this._content);\n }\n contentContainer.appendChild(this._content);\n this._backgroundElement = document.createElement(\"div\");\n this._backgroundElement.classList.add(\"background\");\n this._backgroundElement.style.display = \"block\";\n this._backgroundElement.appendChild(modalDialog);\n this._backgroundElement.querySelector(\".modal\").appendChild(buttonBar);\n if (this._cancelable) {\n let closeButton = document.createElement(\"span\");\n closeButton.classList.add(\"close\");\n closeButton.innerHTML = \"×\";\n titleBar.appendChild(closeButton);\n closeButton.addEventListener(\"click\", () => {\n this.close();\n });\n window.addEventListener(\"click\", (e) => {\n if (e.target === this._backgroundElement) {\n this.close();\n }\n });\n }\n return this._backgroundElement;\n }\n waitForAddedToDom() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._addedToDomePromise;\n });\n }\n close() {\n this.waitForAddedToDom().then(() => {\n if (Helper_1.Helper.isNotNull(this._backgroundElement)) {\n this._backgroundElement.style.display = \"none\";\n this._backgroundElement.remove();\n this._backgroundElement = null;\n }\n });\n if (Helper_1.Helper.isNotNull(this._resolver)) {\n this._resolver(this._result);\n }\n }\n}\nexports.Dialog = Dialog;\n//# sourceMappingURL=Dialog.js.map","import { __extends } from \"tslib\";\n/**\n * Thrown when selected sql driver does not supports locking.\n */\nvar LockNotSupportedOnGivenDriverError = /** @class */ (function (_super) {\n __extends(LockNotSupportedOnGivenDriverError, _super);\n function LockNotSupportedOnGivenDriverError() {\n var _this = _super.call(this) || this;\n _this.name = \"LockNotSupportedOnGivenDriverError\";\n Object.setPrototypeOf(_this, LockNotSupportedOnGivenDriverError.prototype);\n _this.message = \"Locking not supported on given driver.\";\n return _this;\n }\n return LockNotSupportedOnGivenDriverError;\n}(Error));\nexport { LockNotSupportedOnGivenDriverError };\n\n//# sourceMappingURL=LockNotSupportedOnGivenDriverError.js.map\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = false;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpenSubmenuAction = void 0;\nconst MenuAction_1 = require(\"./MenuAction\");\nconst Helper_1 = require(\"../../../Legacy/Helper\");\n/**\n * Action, welche ein Untermenü öffnet\n */\nclass OpenSubmenuAction extends MenuAction_1.MenuAction {\n /**\n * Bekommt ein submenu anstelle einer Action übergeben.\n * Erstellt automatisch die action zum öffnen/schließen des Menüs\n *\n * @param title\n * @param menu\n * @param showFor\n * @param order\n * @param icon\n */\n constructor(title, menu, showFor, order, icon) {\n //Erstellt die action zum schließen/öffnen des Submenüs\n super(title, action => {\n action.getSubmenu().toggle();\n action.update();\n }, showFor, order, icon);\n this._submenu = menu;\n menu.setParentAction(this);\n }\n /**\n * Erstellt eine neue MenuAction auf grundlage dieser MenuAction. Alle Eigenschaften sind identisch, bis auf die ID\n * und das Submenu, welches ebenfalls kopiert wird\n *\n * @param action\n * @return {MenuAction}\n */\n copy(action) {\n action = Helper_1.Helper.nonNull(action, new OpenSubmenuAction(null, this._submenu.copy()));\n action = super.copy(action);\n action._submenu.setParentAction(action);\n return action;\n }\n /**\n * Gibt das Submenu zurück\n *\n * @returns {*}\n */\n getSubmenu() {\n return this._submenu;\n }\n}\nexports.OpenSubmenuAction = OpenSubmenuAction;\n//# sourceMappingURL=OpenSubmenuAction.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserManager = void 0;\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst User_1 = require(\"../../shared/v1/model/User\");\nclass UserManager {\n constructor() {\n this._defaultUserData = {\n id: null,\n loggedIn: false,\n online: false,\n username: null,\n email: null,\n accesses: UserManager.OFFLINE_ACCESSES,\n };\n this._userData = this._defaultUserData;\n this._lastLoginChangeCallbackId = -1;\n this._loginChangeCallbacks = {};\n this._getMePromise = null;\n }\n addLoginChangeCallback(callback, callImmediately) {\n this._lastLoginChangeCallbackId++;\n this._loginChangeCallbacks[this._lastLoginChangeCallbackId] = callback;\n if (client_1.Helper.nonNull(callImmediately, false)) {\n callback(this._userData.loggedIn, this);\n }\n return this._lastLoginChangeCallbackId;\n }\n hasAccess(access) {\n return (this._userData.accesses.indexOf(access) !== -1);\n }\n _checkChangedLogin(before) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._userData.loggedIn !== before.loggedIn || (this._userData.loggedIn === true && this._userData.id !== before.id)) {\n yield this._callLoginChangeCallbacks();\n }\n });\n }\n _callLoginChangeCallbacks() {\n return __awaiter(this, void 0, void 0, function* () {\n yield client_1.Helper.asyncForEach(Object.keys(this._loginChangeCallbacks), callbackId => {\n this._loginChangeCallbacks[callbackId](this._userData.loggedIn, this);\n }, true);\n });\n }\n getUserData() {\n return this._userData;\n }\n getMe() {\n return __awaiter(this, void 0, void 0, function* () {\n this._getMePromise = new Promise((r) => __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doGetMe();\n yield this._checkChangedLogin(before);\n r(res);\n }));\n return this._getMePromise;\n });\n }\n waitForGetMe() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._getMePromise === null) {\n this.getMe();\n }\n yield this._getMePromise;\n });\n }\n login(email, password, saveLogin) {\n return __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doLogin(email, password, saveLogin);\n //do it after the result is returned\n setTimeout(() => {\n this._checkChangedLogin(before);\n }, 1);\n return res;\n });\n }\n logout() {\n return __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doLogout();\n yield this._checkChangedLogin(before);\n if (!this._userData.loggedIn) {\n yield new client_1.Toast(\"goodbye\").show();\n }\n return res;\n });\n }\n register(email, username, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let before = this._userData;\n let res = yield this._doRegister(email, username, password);\n yield this._checkChangedLogin(before);\n return res;\n });\n }\n _doGetMe() {\n return __awaiter(this, void 0, void 0, function* () {\n yield UserManager.updateHeaders();\n let data = yield client_1.DataManager.load(\"user\");\n if (client_1.Helper.isSet(data, \"userData\")) {\n yield client_1.NativeStoragePromise.setItem(\"user-data\", data.userData);\n this._userData = data.userData;\n }\n else {\n this._userData = this._defaultUserData;\n }\n this._updateAccessClasses();\n if (client_1.Helper.isSet(data, \"token\")) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + data.token);\n sessionStorage.setItem(\"auth-token\", data.token);\n if (client_1.Helper.isNotNull(yield client_1.NativeStoragePromise.getItem(\"auth-token\"))) {\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", data.token);\n }\n }\n });\n }\n _doLogin(email, password, saveLogin) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/login\", {\n \"email\": email,\n \"password\": password\n });\n if (data.success) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + data.token);\n sessionStorage.setItem(\"auth-token\", data.token);\n yield this._doGetMe();\n if (saveLogin) {\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", data.token);\n }\n return true;\n }\n else {\n client_1.DataManager.setHeader(\"Authorization\", \"\");\n sessionStorage.setItem(\"auth-token\", \"\");\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", \"\");\n yield new client_1.Toast(data.message).show();\n return false;\n }\n });\n }\n _doLogout() {\n return __awaiter(this, void 0, void 0, function* () {\n client_1.DataManager.setHeader(\"Authorization\", \"\");\n sessionStorage.setItem(\"auth-token\", \"\");\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", \"\");\n yield this._doGetMe();\n return true;\n });\n }\n _doRegister(email, username, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/register\", {\n \"email\": email,\n \"username\": username,\n \"password\": password\n });\n if (data.success) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + data.token);\n sessionStorage.setItem(\"auth-token\", data.token);\n yield this._doGetMe();\n return true;\n }\n else {\n client_1.DataManager.setHeader(\"Authorization\", \"\");\n sessionStorage.setItem(\"auth-token\", \"\");\n yield client_1.NativeStoragePromise.setItem(\"auth-token\", \"\");\n yield new client_1.Toast(data.message).show();\n return false;\n }\n });\n }\n /**\n * @returns {UserManager}\n */\n static getInstance() {\n if (!UserManager._instance) {\n UserManager._instance = new UserManager();\n }\n return UserManager._instance;\n }\n static updateHeaders() {\n return __awaiter(this, void 0, void 0, function* () {\n let token = client_1.Helper.nonNull(sessionStorage.getItem(\"auth-token\"), yield client_1.NativeStoragePromise.getItem(\"auth-token\"));\n if (token) {\n client_1.DataManager.setHeader(\"Authorization\", \"Bearer \" + token);\n }\n });\n }\n _updateAccessClasses() {\n document.body.classList.forEach(cl => {\n if (cl.startsWith(UserManager.ACCESS_CLASS_PREFIX)) {\n document.body.classList.remove(cl);\n }\n });\n this._userData.accesses.forEach(access => {\n document.body.classList.add(UserManager.ACCESS_CLASS_PREFIX + access);\n });\n }\n hasOfflineAccess(access) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.isOnline()) {\n return false;\n }\n let offlineData = client_1.Helper.nonNull(yield client_1.NativeStoragePromise.getItem(\"user-data\"), { accesses: UserManager.OFFLINE_ACCESSES });\n return (offlineData.accesses.indexOf(access) !== -1);\n });\n }\n sendForgotPasswordEmail(email) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/forgotPW\", { email: email });\n return data.success;\n });\n }\n resetPassword(token, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let data = yield client_1.DataManager.send(\"user/forgotPW/2\", { token: token, password: password });\n return data.success;\n });\n }\n isOnline() {\n return this._userData.online;\n }\n isLoggedIn() {\n return this._userData.loggedIn;\n }\n static syncParamFor(model) {\n return {\n model: model,\n where: {\n user: { id: this.getInstance().getUserData().id }\n }\n };\n }\n static userSyncParam() {\n return {\n model: User_1.User,\n where: {\n id: this.getInstance().getUserData().id\n }\n };\n }\n}\nexports.UserManager = UserManager;\nUserManager.ACCESS_CLASS_PREFIX = \"access-\";\nUserManager.OFFLINE_ACCESSES = [\n \"offline\"\n];\n//# sourceMappingURL=UserManager.js.map","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to update using QueryBuilder but do not specify what to update.\n */\nvar UpdateValuesMissingError = /** @class */ (function (_super) {\n __extends(UpdateValuesMissingError, _super);\n function UpdateValuesMissingError() {\n var _this = _super.call(this) || this;\n _this.name = \"UpdateValuesMissingError\";\n Object.setPrototypeOf(_this, UpdateValuesMissingError.prototype);\n _this.message = \"Cannot perform update query because update values are not defined. Call \\\"qb.set(...)\\\" method to specify updated values.\";\n return _this;\n }\n return UpdateValuesMissingError;\n}(Error));\nexport { UpdateValuesMissingError };\n\n//# sourceMappingURL=UpdateValuesMissingError.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Toast = void 0;\nconst Helper_1 = require(\"../Legacy/Helper\");\nconst ToastManager_1 = require(\"./ToastManager\");\nclass Toast {\n constructor(message, duration, shouldTranslateOrTranslationArgs) {\n this._message = message;\n this._duration = Helper_1.Helper.nonNull(duration, Toast.DEFAULT_DURATION);\n this._shouldTranslate = shouldTranslateOrTranslationArgs !== false;\n this._translationArgs = Helper_1.Helper.nonNull(shouldTranslateOrTranslationArgs, []);\n this._id = Toast.LAST_ID++;\n this._toastElement = null;\n }\n getId() {\n return this._id;\n }\n getMessage() {\n return this._message;\n }\n getDuration() {\n return this._duration;\n }\n isShouldTranslate() {\n return this._shouldTranslate;\n }\n getTranslationArgs() {\n return this._translationArgs;\n }\n setToastElement(element) {\n this._toastElement = element;\n }\n getToastElement() {\n return this._toastElement;\n }\n show() {\n return __awaiter(this, void 0, void 0, function* () {\n return ToastManager_1.ToastManager.getInstance().showToast(this);\n });\n }\n hide() {\n return __awaiter(this, void 0, void 0, function* () {\n return ToastManager_1.ToastManager.getInstance().hideToast(this);\n });\n }\n}\nexports.Toast = Toast;\nToast.LAST_ID = 0;\nToast.DEFAULT_DURATION = 2500;\n//# sourceMappingURL=Toast.js.map","import { __extends } from \"tslib\";\n/**\n * Thrown when an optimistic lock cannot be used in query builder.\n */\nvar OptimisticLockCanNotBeUsedError = /** @class */ (function (_super) {\n __extends(OptimisticLockCanNotBeUsedError, _super);\n function OptimisticLockCanNotBeUsedError() {\n var _this = _super.call(this) || this;\n _this.name = \"OptimisticLockCanNotBeUsedError\";\n Object.setPrototypeOf(_this, OptimisticLockCanNotBeUsedError.prototype);\n _this.message = \"The optimistic lock can be used only with getOne() method.\";\n return _this;\n }\n return OptimisticLockCanNotBeUsedError;\n}(Error));\nexport { OptimisticLockCanNotBeUsedError };\n\n//# sourceMappingURL=OptimisticLockCanNotBeUsedError.js.map\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst Helper_1 = require(\"../Legacy/Helper\");\nconst ViewInflater_1 = require(\"../ViewInflater\");\n/**\n * Basis-Klasse für Seiten und Fragmente\n */\nclass Context {\n /**\n * Erstellt einen neuen Context. Erwartet den Link zu einem HTML-File, welches vom ViewInflater geladen werden kann.\n * Im Constructor sollten fragmente hinzugefügt werden (nachdem super.constructor(<>) aufgerufen wurde)\n *\n * @param view\n */\n constructor(view) {\n this.onViewLoadedCalled = false;\n this._pauseParameters = [];\n this._view = null;\n this._fragments = [];\n this._state = Context.STATE_CREATED;\n this._viewLoadedPromise = Helper_1.Helper.newPromiseWithResolve();\n this._viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then((siteContent) => {\n this._view = siteContent;\n return siteContent;\n }).catch(e => {\n // @ts-ignore\n this._viewLoadedPromise.reject(e);\n });\n }\n getState() {\n return this._state;\n }\n /**\n * Wird von SiteManager aufgerufen, wenn Klasse erstellt wird. Das ViewPromise ist noch nicht zwangsweise geladen!\n * Gibt ein Promise zurück. onViewLoaded wird erst aufgerufen, wenn onConstruct-Promise und view-Promise fullfilled sind.\n *\n * @param constructParameters, Object|Null\n * @returns {Promise}\n */\n onConstruct(constructParameters) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_CONSTRUCTED;\n this.constructParameters = constructParameters;\n let onConstructPromises = [];\n for (let k in this._fragments) {\n onConstructPromises.push(this._fragments[k].onConstruct.apply(this._fragments[k], [constructParameters]));\n onConstructPromises.push(this._fragments[k]._viewPromise);\n }\n return Promise.all(onConstructPromises);\n });\n }\n callOnViewLoaded() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.onViewLoadedCalled) {\n this.onViewLoadedCalled = true;\n const res = yield this.onViewLoaded();\n // @ts-ignore\n this._viewLoadedPromise.resolve(res);\n }\n return this._viewLoadedPromise;\n });\n }\n /**\n * Methode wird aufgerufen, sobald onConstruct-Promise und view-Promise fullfilled sind.\n * View ist hier noch nicht im Dokument hinzugefügt.\n *\n * Benutze diese Methode, um die View beim starten zu manipulieren.\n */\n onViewLoaded() {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_VIEW_LOADED;\n let onViewLoadedPromises = [];\n for (let k in this._fragments) {\n onViewLoadedPromises.push(this._fragments[k]._viewPromise.then(() => this._fragments[k].callOnViewLoaded()).then(() => this._fragments[k]._viewLoadedPromise.resolve()));\n }\n return Promise.all(onViewLoadedPromises);\n });\n }\n /**\n * onViewLoaded-Promise ist erfüllt => View wird dem Document hinzugefügt => onStart wird aufgerufen\n *\n * Seite wird pausiert => onPause wird aufgerufen => View wird aus dem Document entfernt => - etwas passiert -\n * => Seite wird fortgesetzt => View wird dem Document hinzugefügt => onStart wird mit dem Rückgabewert von onPause ausgeführt\n *\n * Zurückgegebenes Promise wird ignoriert!\n * @param pauseArguments, Object|NULL\n */\n onStart(pauseArguments) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_RUNNING;\n for (let k in this._fragments) {\n let fragment = this._fragments[k];\n fragment.onStart.apply(this._fragments[k], [yield this._fragments[k]._pauseParameters]);\n this._fragments[k]._viewPromise.then(function (fragmentView) {\n if (fragment.isActive()) {\n fragmentView.classList.remove(\"hidden\");\n }\n else {\n fragmentView.classList.add(\"hidden\");\n }\n });\n }\n });\n }\n /**\n * Seite wird pausiet => onPause wird ausgeführt => View wird aus dem Document entfernt\n * Seite wird beendet => onPause wird ausgeführt (falls State === running) => View wird aus dem Document entfernt\n * => onDestroy wird ausgeführt\n *\n * Rückgabe-Promise wird als Pause-Parameter gespeichert und wird beim Fortsetzen der Seite ausgeführt\n * @returns {Promise}\n */\n onPause(...args) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_PAUSED;\n for (let k in this._fragments) {\n let pauseParameters = this._fragments[k].onPause.apply(this._fragments[k], args);\n this._fragments[k].setPauseParameters(pauseParameters);\n }\n });\n }\n /**\n * Seite wird beendet => onPause wird ausgeführt (falls State === running) => View wird aus dem Document entfernt\n * => onDestroy wird ausgeführt\n *\n * Rückgabe-Promise wird ignoriert\n */\n onDestroy(...args) {\n return __awaiter(this, void 0, void 0, function* () {\n this._state = Context.STATE_DESTROYED;\n for (let k in this._fragments) {\n this._fragments[k].onDestroy.apply(this._fragments[k], args);\n }\n });\n }\n isShowing() {\n return this._state === Context.STATE_RUNNING;\n }\n /**\n * Fügt ein neues Fragment hinzu.\n *\n * @param viewQuery\n * @param fragment\n */\n addFragment(viewQuery, fragment) {\n this._fragments.push(fragment);\n fragment.setViewQuery(viewQuery);\n this._viewPromise = Promise.all([this._viewPromise, fragment._viewPromise]).then(res => {\n res[0].querySelector(viewQuery).appendChild(res[1]);\n return res[0];\n }).catch(e => console.error(e));\n if (this._state >= Context.STATE_CONSTRUCTED) {\n fragment.onConstruct(this.constructParameters);\n }\n if (this._state >= Context.STATE_VIEW_LOADED) {\n Promise.all([this._viewLoadedPromise, fragment.getViewPromise()]).then(() => fragment.callOnViewLoaded());\n }\n if (this._state >= Context.STATE_RUNNING) {\n fragment._viewLoadedPromise.then(() => {\n if (this._state >= Context.STATE_RUNNING) {\n fragment.onStart();\n }\n });\n }\n }\n /**\n * Entfernt ein Fragment.\n *\n * @param fragment\n */\n removeFragment(fragment) {\n const index = this._fragments.indexOf(fragment);\n if (index !== -1) {\n this._fragments.splice(index, 1);\n }\n fragment._viewPromise.then(res => res.remove());\n this._fragments.push(fragment);\n if (this._state < Context.STATE_PAUSED) {\n fragment.onPause();\n }\n if (this._state < Context.STATE_DESTROYING) {\n fragment.onDestroy();\n }\n }\n /**\n * Findet ein Element anhand eines Selectors\n *\n * Wenn all = true, werden alle gefundenen Elemente zurückgegeben\n *\n * Wenn asPromise = true, wird das Ergebnis als Promise zurückgegeben. Hier wird gewartet, bis das _viewPromise fullfilled ist\n * Nutze das, um die View in onConstruct zu manipulieren. Evtl entfernen\n *\n * @param query\n * @param all\n * @param asPromise\n * @returns {*}\n */\n findBy(query, all, asPromise) {\n all = Helper_1.Helper.nonNull(all, false);\n asPromise = Helper_1.Helper.nonNull(asPromise, false);\n let getVal = function (root) {\n let res = null;\n if (all) {\n res = root.querySelectorAll(query);\n if (root.matches(query)) {\n res.push(root);\n }\n }\n else {\n if (root.matches(query)) {\n res = root;\n }\n else {\n res = root.querySelector(query);\n }\n }\n return res;\n };\n if (asPromise) {\n return this._viewPromise.then(function (rootView) {\n return getVal(rootView);\n });\n }\n return getVal(this._view);\n }\n find(selector) {\n if (this._view.matches(selector)) {\n return this._view;\n }\n else {\n return this._view.querySelector(selector);\n }\n }\n findAll(selector) {\n const res = this._view.querySelectorAll(selector);\n if (this._view.matches(selector)) {\n res.push(this._view);\n }\n return res;\n }\n /**\n * Setzt die PauseParameters\n * @param pauseParameters\n */\n setPauseParameters(pauseParameters) {\n this._pauseParameters = pauseParameters;\n }\n /**\n * Gibt das ViewPromise zurück\n * @returns {*}\n */\n getViewPromise() {\n return this._viewPromise;\n }\n}\nexports.Context = Context;\nContext.STATE_CREATED = 0;\nContext.STATE_CONSTRUCTED = 1;\nContext.STATE_VIEW_LOADED = 2;\nContext.STATE_RUNNING = 3;\nContext.STATE_PAUSED = 4;\nContext.STATE_DESTROYING = 5;\nContext.STATE_DESTROYED = 6;\n//# sourceMappingURL=Context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.User = void 0;\nconst shared_1 = require(\"cordova-sites-easy-sync/dist/shared\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nconst Role_1 = require(\"./Role\");\nclass User extends shared_1.EasySyncBaseModel {\n constructor() {\n super();\n this.username = null;\n this.email = null;\n this.password = null;\n this.roles = null;\n this.activated = false;\n this.blocked = false;\n this.salt = null;\n }\n toJSON() {\n return {\n id: this.id,\n username: this.username,\n };\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"username\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, unique: true };\n columns[\"email\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, unique: true };\n columns[\"password\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n columns[\"activated\"] = cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN;\n columns[\"blocked\"] = cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN;\n columns[\"salt\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n return columns;\n }\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"roles\"] = {\n target: Role_1.Role.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"userRole\"\n },\n cascade: false\n };\n return relations;\n }\n static prepareSync(entities) {\n let jsonEntities = [];\n entities.forEach(entity => {\n let jsonEntity = {};\n jsonEntity.id = entity.id;\n jsonEntity.createdAt = new Date();\n jsonEntity.updatedAt = new Date();\n jsonEntity.username = \"\";\n jsonEntity.email = \"\";\n jsonEntity.password = \"\";\n jsonEntity.salt = \"\";\n jsonEntity.activated = 1;\n jsonEntity.blocked = 1;\n jsonEntity.version = 1;\n jsonEntity.deleted = 0;\n jsonEntities.push(jsonEntity);\n });\n return jsonEntities;\n }\n}\nexports.User = User;\ncordova_sites_database_1.BaseDatabase.addModel(User);\n//# sourceMappingURL=User.js.map","import { __extends } from \"tslib\";\nimport { EntitySchema } from \"../index\";\n/**\n * Thrown when no result could be found in methods which are not allowed to return undefined or an empty set.\n */\nvar EntityNotFoundError = /** @class */ (function (_super) {\n __extends(EntityNotFoundError, _super);\n function EntityNotFoundError(entityClass, criteria) {\n var _this = _super.call(this) || this;\n _this.name = \"EntityNotFound\";\n Object.setPrototypeOf(_this, EntityNotFoundError.prototype);\n var targetName;\n if (entityClass instanceof EntitySchema) {\n targetName = entityClass.options.name;\n }\n else if (typeof entityClass === \"function\") {\n targetName = entityClass.name;\n }\n else if (typeof entityClass === \"object\" && \"name\" in entityClass) {\n targetName = entityClass.name;\n }\n else {\n targetName = entityClass;\n }\n var criteriaString = _this.stringifyCriteria(criteria);\n _this.message = \"Could not find any entity of type \\\"\" + targetName + \"\\\" matching: \" + criteriaString;\n return _this;\n }\n EntityNotFoundError.prototype.stringifyCriteria = function (criteria) {\n try {\n return JSON.stringify(criteria, null, 4);\n }\n catch (e) { }\n return \"\" + criteria;\n };\n return EntityNotFoundError;\n}(Error));\nexport { EntityNotFoundError };\n\n//# sourceMappingURL=EntityNotFoundError.js.map\n","import { __extends } from \"tslib\";\n/**\n *\n */\nvar EntityColumnNotFound = /** @class */ (function (_super) {\n __extends(EntityColumnNotFound, _super);\n function EntityColumnNotFound(propertyPath) {\n var _this = _super.call(this) || this;\n _this.name = \"EntityColumnNotFound\";\n Object.setPrototypeOf(_this, EntityColumnNotFound.prototype);\n _this.message = \"No entity column \\\"\" + propertyPath + \"\\\" was found.\";\n return _this;\n }\n return EntityColumnNotFound;\n}(Error));\nexport { EntityColumnNotFound };\n\n//# sourceMappingURL=EntityColumnNotFound.js.map\n","/**\n * Result object returned by UpdateQueryBuilder execution.\n */\nvar UpdateResult = /** @class */ (function () {\n function UpdateResult() {\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n // identifier: ObjectLiteral[] = [];\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n this.generatedMaps = [];\n }\n return UpdateResult;\n}());\nexport { UpdateResult };\n\n//# sourceMappingURL=UpdateResult.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to build an UPDATE query with LIMIT but the database does not support it.\n*/\nvar LimitOnUpdateNotSupportedError = /** @class */ (function (_super) {\n __extends(LimitOnUpdateNotSupportedError, _super);\n function LimitOnUpdateNotSupportedError() {\n var _this = _super.call(this) || this;\n _this.name = \"LimitOnUpdateNotSupportedError\";\n Object.setPrototypeOf(_this, LimitOnUpdateNotSupportedError.prototype);\n _this.message = \"Your database does not support LIMIT on UPDATE statements.\";\n return _this;\n }\n return LimitOnUpdateNotSupportedError;\n}(Error));\nexport { LimitOnUpdateNotSupportedError };\n\n//# sourceMappingURL=LimitOnUpdateNotSupportedError.js.map\n","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { DriverUtils } from \"../../driver/DriverUtils\";\nvar RelationIdLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdLoader(connection, queryRunner, relationIdAttributes) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n this.relationIdAttributes = relationIdAttributes;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationIdLoader.prototype.load = function (rawEntities) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n var _this = this;\n return __generator(this, function (_a) {\n promises = this.relationIdAttributes.map(function (relationIdAttr) { return __awaiter(_this, void 0, void 0, function () {\n var duplicates_1, results, relation_1, joinColumns_1, table, tableName, tableAlias_1, duplicates_2, parameters_1, condition, qb_1, results, relation, joinColumns_2, inverseJoinColumns_1, junctionAlias_1, inverseSideTableName, inverseSideTableAlias_1, junctionTableName, mappedColumns, parameters_2, duplicates_3, joinColumnConditions, inverseJoinColumnCondition_1, condition, qb_2, results;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner)) return [3 /*break*/, 1];\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n if (relationIdAttr.queryBuilderFactory)\n throw new Error(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n duplicates_1 = [];\n results = rawEntities.map(function (rawEntity) {\n var result = {};\n var duplicateParts = [];\n relationIdAttr.relation.joinColumns.forEach(function (joinColumn) {\n result[joinColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn);\n var duplicatePart = joinColumn.databaseName + \":\" + result[joinColumn.databaseName];\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n result[primaryColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n var duplicatePart = primaryColumn.databaseName + \":\" + result[primaryColumn.databaseName];\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n duplicateParts.sort();\n var duplicate = duplicateParts.join(\"::\");\n if (duplicates_1.indexOf(duplicate) !== -1) {\n return null;\n }\n duplicates_1.push(duplicate);\n return result;\n }).filter(function (v) { return v; });\n return [2 /*return*/, {\n relationIdAttribute: relationIdAttr,\n results: results\n }];\n case 1:\n if (!(relationIdAttr.relation.isOneToMany || relationIdAttr.relation.isOneToOneNotOwner)) return [3 /*break*/, 3];\n relation_1 = relationIdAttr.relation;\n joinColumns_1 = relation_1.isOwning ? relation_1.joinColumns : relation_1.inverseRelation.joinColumns;\n table = relation_1.inverseEntityMetadata.target;\n tableName = relation_1.inverseEntityMetadata.tableName;\n tableAlias_1 = relationIdAttr.alias || tableName;\n duplicates_2 = [];\n parameters_1 = {};\n condition = rawEntities.map(function (rawEntity, index) {\n var duplicateParts = [];\n var parameterParts = {};\n var queryPart = joinColumns_1.map(function (joinColumn) {\n var parameterName = joinColumn.databaseName + index;\n var parameterValue = rawEntity[DriverUtils.buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn.databaseName)];\n var duplicatePart = tableAlias_1 + \":\" + joinColumn.propertyPath + \":\" + parameterValue;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return tableAlias_1 + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).filter(function (v) { return v; }).join(\" AND \");\n duplicateParts.sort();\n var duplicate = duplicateParts.join(\"::\");\n if (duplicates_2.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates_2.push(duplicate);\n Object.assign(parameters_1, parameterParts);\n return queryPart;\n }).filter(function (v) { return v; }).map(function (condition) { return \"(\" + condition + \")\"; })\n .join(\" OR \");\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return [2 /*return*/, { relationIdAttribute: relationIdAttr, results: [] }];\n qb_1 = this.connection.createQueryBuilder(this.queryRunner);\n joinColumns_1.forEach(function (joinColumn) {\n qb_1.addSelect(tableAlias_1 + \".\" + joinColumn.propertyPath, joinColumn.databaseName);\n });\n relation_1.inverseRelation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {\n qb_1.addSelect(tableAlias_1 + \".\" + primaryColumn.propertyPath, primaryColumn.databaseName);\n });\n qb_1.from(table, tableAlias_1)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters_1);\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb_1);\n return [4 /*yield*/, qb_1.getRawMany()];\n case 2:\n results = _a.sent();\n results.forEach(function (result) {\n joinColumns_1.forEach(function (column) {\n result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn);\n });\n relation_1.inverseRelation.entityMetadata.primaryColumns.forEach(function (column) {\n result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column);\n });\n });\n return [2 /*return*/, {\n relationIdAttribute: relationIdAttr,\n results: results\n }];\n case 3:\n relation = relationIdAttr.relation;\n joinColumns_2 = relation.isOwning ? relation.joinColumns : relation.inverseRelation.inverseJoinColumns;\n inverseJoinColumns_1 = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation.joinColumns;\n junctionAlias_1 = relationIdAttr.junctionAlias;\n inverseSideTableName = relationIdAttr.joinInverseSideMetadata.tableName;\n inverseSideTableAlias_1 = relationIdAttr.alias || inverseSideTableName;\n junctionTableName = relation.isOwning ? relation.junctionEntityMetadata.tableName : relation.inverseRelation.junctionEntityMetadata.tableName;\n mappedColumns = rawEntities.map(function (rawEntity) {\n return joinColumns_2.reduce(function (map, joinColumn) {\n map[joinColumn.propertyPath] = rawEntity[DriverUtils.buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn.databaseName)];\n return map;\n }, {});\n });\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return [2 /*return*/, { relationIdAttribute: relationIdAttr, results: [] }];\n parameters_2 = {};\n duplicates_3 = [];\n joinColumnConditions = mappedColumns.map(function (mappedColumn, index) {\n var duplicateParts = [];\n var parameterParts = {};\n var queryPart = Object.keys(mappedColumn).map(function (key) {\n var parameterName = key + index;\n var parameterValue = mappedColumn[key];\n var duplicatePart = junctionAlias_1 + \":\" + key + \":\" + parameterValue;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return junctionAlias_1 + \".\" + key + \" = :\" + parameterName;\n }).filter(function (s) { return s; }).join(\" AND \");\n duplicateParts.sort();\n var duplicate = duplicateParts.join(\"::\");\n if (duplicates_3.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates_3.push(duplicate);\n Object.assign(parameters_2, parameterParts);\n return queryPart;\n }).filter(function (s) { return s; });\n inverseJoinColumnCondition_1 = inverseJoinColumns_1.map(function (joinColumn) {\n return junctionAlias_1 + \".\" + joinColumn.propertyPath + \" = \" + inverseSideTableAlias_1 + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n condition = joinColumnConditions.map(function (condition) {\n return \"(\" + condition + \" AND \" + inverseJoinColumnCondition_1 + \")\";\n }).join(\" OR \");\n qb_2 = this.connection.createQueryBuilder(this.queryRunner);\n inverseJoinColumns_1.forEach(function (joinColumn) {\n qb_2.addSelect(junctionAlias_1 + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias_1 + \".\" + joinColumn.propertyPath);\n });\n joinColumns_2.forEach(function (joinColumn) {\n qb_2.addSelect(junctionAlias_1 + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias_1 + \".\" + joinColumn.propertyPath);\n });\n qb_2.from(inverseSideTableName, inverseSideTableAlias_1)\n .innerJoin(junctionTableName, junctionAlias_1, condition)\n .setParameters(parameters_2);\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb_2);\n return [4 /*yield*/, qb_2.getRawMany()];\n case 4:\n results = _a.sent();\n results.forEach(function (result) {\n __spreadArray(__spreadArray([], __read(joinColumns_2)), __read(inverseJoinColumns_1)).forEach(function (column) {\n result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn);\n });\n });\n return [2 /*return*/, {\n relationIdAttribute: relationIdAttr,\n results: results\n }];\n }\n });\n }); });\n return [2 /*return*/, Promise.all(promises)];\n });\n });\n };\n return RelationIdLoader;\n}());\nexport { RelationIdLoader };\n\n//# sourceMappingURL=RelationIdLoader.js.map\n","import { RelationIdAttribute } from \"./RelationIdAttribute\";\nvar RelationIdMetadataToAttributeTransformer = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdMetadataToAttributeTransformer(expressionMap) {\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationIdMetadataToAttributeTransformer.prototype.transform = function () {\n // by example:\n // post has relation id:\n // @RelationId(post => post.categories) categoryIds\n // category has relation id\n // @RelationId(category => category.images) imageIds\n // we load post and join category\n // we expect post.categoryIds and post.category.imageIds to have relation ids\n var _this = this;\n // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationIds.forEach(function (relationId) {\n var attribute = _this.metadataToAttribute(_this.expressionMap.mainAlias.name, relationId);\n _this.expressionMap.relationIdAttributes.push(attribute);\n });\n }\n // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(function (join) {\n // ensure this join has a metadata, because relation id can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n join.metadata.relationIds.forEach(function (relationId) {\n var attribute = _this.metadataToAttribute(join.alias.name, relationId);\n _this.expressionMap.relationIdAttributes.push(attribute);\n });\n });\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n RelationIdMetadataToAttributeTransformer.prototype.metadataToAttribute = function (parentAliasName, relationId) {\n return new RelationIdAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationId.relation.propertyName,\n mapToProperty: parentAliasName + \".\" + relationId.propertyName,\n alias: relationId.alias,\n queryBuilderFactory: relationId.queryBuilderFactory\n });\n };\n return RelationIdMetadataToAttributeTransformer;\n}());\nexport { RelationIdMetadataToAttributeTransformer };\n\n//# sourceMappingURL=RelationIdMetadataToAttributeTransformer.js.map\n","import { __awaiter, __generator } from \"tslib\";\nvar RelationCountLoader = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationCountLoader(connection, queryRunner, relationCountAttributes) {\n this.connection = connection;\n this.queryRunner = queryRunner;\n this.relationCountAttributes = relationCountAttributes;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationCountLoader.prototype.load = function (rawEntities) {\n return __awaiter(this, void 0, void 0, function () {\n var onlyUnique, promises;\n var _this = this;\n return __generator(this, function (_a) {\n onlyUnique = function (value, index, self) {\n return self.indexOf(value) === index;\n };\n promises = this.relationCountAttributes.map(function (relationCountAttr) { return __awaiter(_this, void 0, void 0, function () {\n var relation, inverseRelation, referenceColumnName_1, inverseSideTable, inverseSideTableName, inverseSideTableAlias, inverseSidePropertyName, referenceColumnValues, qb, joinTableColumnName_1, inverseJoinColumnName, firstJunctionColumn, secondJunctionColumn, referenceColumnValues, junctionAlias, inverseSideTableName, inverseSideTableAlias, junctionTableName, condition, qb;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!relationCountAttr.relation.isOneToMany) return [3 /*break*/, 2];\n relation = relationCountAttr.relation;\n inverseRelation = relation.inverseRelation;\n referenceColumnName_1 = inverseRelation.joinColumns[0].referencedColumn.propertyName;\n inverseSideTable = relation.inverseEntityMetadata.target;\n inverseSideTableName = relation.inverseEntityMetadata.tableName;\n inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n inverseSidePropertyName = inverseRelation.propertyName;\n referenceColumnValues = rawEntities\n .map(function (rawEntity) { return rawEntity[relationCountAttr.parentAlias + \"_\" + referenceColumnName_1]; })\n .filter(function (value) { return !!value; });\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return [2 /*return*/, { relationCountAttribute: relationCountAttr, results: [] }];\n qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(inverseSideTableAlias + \".\" + inverseSidePropertyName, \"parentId\")\n .addSelect(\"COUNT(*)\", \"cnt\")\n .from(inverseSideTable, inverseSideTableAlias)\n .where(inverseSideTableAlias + \".\" + inverseSidePropertyName + \" IN (:...ids)\")\n .addGroupBy(inverseSideTableAlias + \".\" + inverseSidePropertyName)\n .setParameter(\"ids\", referenceColumnValues);\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n _a = {\n relationCountAttribute: relationCountAttr\n };\n return [4 /*yield*/, qb.getRawMany()];\n case 1: return [2 /*return*/, (_a.results = _c.sent(),\n _a)];\n case 2:\n inverseJoinColumnName = void 0;\n firstJunctionColumn = void 0;\n secondJunctionColumn = void 0;\n if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0].\n joinTableColumnName_1 = relationCountAttr.relation.joinColumns[0].referencedColumn.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[0];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[1];\n }\n else {\n joinTableColumnName_1 = relationCountAttr.relation.inverseRelation.inverseJoinColumns[0].referencedColumn.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseRelation.joinColumns[0].referencedColumn.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[1];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata.columns[0];\n }\n referenceColumnValues = rawEntities\n .map(function (rawEntity) { return rawEntity[relationCountAttr.parentAlias + \"_\" + joinTableColumnName_1]; })\n .filter(function (value) { return !!value; });\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return [2 /*return*/, { relationCountAttribute: relationCountAttr, results: [] }];\n junctionAlias = relationCountAttr.junctionAlias;\n inverseSideTableName = relationCountAttr.joinInverseSideMetadata.tableName;\n inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n junctionTableName = relationCountAttr.relation.junctionEntityMetadata.tableName;\n condition = junctionAlias + \".\" + firstJunctionColumn.propertyName + \" IN (\" + referenceColumnValues.map(function (vals) { return isNaN(vals) ? \"'\" + vals + \"'\" : vals; }) + \")\" +\n \" AND \" + junctionAlias + \".\" + secondJunctionColumn.propertyName + \" = \" + inverseSideTableAlias + \".\" + inverseJoinColumnName;\n qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(junctionAlias + \".\" + firstJunctionColumn.propertyName, \"parentId\")\n .addSelect(\"COUNT(\" + qb.escape(inverseSideTableAlias) + \".\" + qb.escape(inverseJoinColumnName) + \")\", \"cnt\")\n .from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .addGroupBy(junctionAlias + \".\" + firstJunctionColumn.propertyName);\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n _b = {\n relationCountAttribute: relationCountAttr\n };\n return [4 /*yield*/, qb.getRawMany()];\n case 3: return [2 /*return*/, (_b.results = _c.sent(),\n _b)];\n }\n });\n }); });\n return [2 /*return*/, Promise.all(promises)];\n });\n });\n };\n return RelationCountLoader;\n}());\nexport { RelationCountLoader };\n\n//# sourceMappingURL=RelationCountLoader.js.map\n","import { RelationCountAttribute } from \"./RelationCountAttribute\";\nvar RelationCountMetadataToAttributeTransformer = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationCountMetadataToAttributeTransformer(expressionMap) {\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n RelationCountMetadataToAttributeTransformer.prototype.transform = function () {\n // by example:\n // post has relation count:\n // @RelationCount(post => post.categories) categoryCount\n // category has relation count\n // @RelationCount(category => category.images) imageCount\n // we load post and join category\n // we expect post.categoryCount and post.category.imageCount to have relation counts\n var _this = this;\n // first create relation count attributes for all relation count metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationCounts.forEach(function (relationCount) {\n var attribute = _this.metadataToAttribute(_this.expressionMap.mainAlias.name, relationCount);\n _this.expressionMap.relationCountAttributes.push(attribute);\n });\n }\n // second create relation count attributes for all relation count metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(function (join) {\n // ensure this join has a metadata, because relation count can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n join.metadata.relationCounts.forEach(function (relationCount) {\n var attribute = _this.metadataToAttribute(join.alias.name, relationCount);\n _this.expressionMap.relationCountAttributes.push(attribute);\n });\n });\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n RelationCountMetadataToAttributeTransformer.prototype.metadataToAttribute = function (parentAliasName, relationCount) {\n return new RelationCountAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationCount.relation.propertyName,\n mapToProperty: parentAliasName + \".\" + relationCount.propertyName,\n alias: relationCount.alias,\n queryBuilderFactory: relationCount.queryBuilderFactory\n });\n };\n return RelationCountMetadataToAttributeTransformer;\n}());\nexport { RelationCountMetadataToAttributeTransformer };\n\n//# sourceMappingURL=RelationCountMetadataToAttributeTransformer.js.map\n","import { __awaiter, __extends, __generator, __read, __spreadArray } from \"tslib\";\nimport { SapDriver } from \"../driver/sap/SapDriver\";\nimport { RawSqlResultsToEntityTransformer } from \"./transformer/RawSqlResultsToEntityTransformer\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { PessimisticLockTransactionRequiredError } from \"../error/PessimisticLockTransactionRequiredError\";\nimport { NoVersionOrUpdateDateColumnError } from \"../error/NoVersionOrUpdateDateColumnError\";\nimport { OptimisticLockVersionMismatchError } from \"../error/OptimisticLockVersionMismatchError\";\nimport { OptimisticLockCanNotBeUsedError } from \"../error/OptimisticLockCanNotBeUsedError\";\nimport { JoinAttribute } from \"./JoinAttribute\";\nimport { RelationIdAttribute } from \"./relation-id/RelationIdAttribute\";\nimport { RelationCountAttribute } from \"./relation-count/RelationCountAttribute\";\nimport { RelationIdLoader } from \"./relation-id/RelationIdLoader\";\nimport { RelationIdMetadataToAttributeTransformer } from \"./relation-id/RelationIdMetadataToAttributeTransformer\";\nimport { RelationCountLoader } from \"./relation-count/RelationCountLoader\";\nimport { RelationCountMetadataToAttributeTransformer } from \"./relation-count/RelationCountMetadataToAttributeTransformer\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { LockNotSupportedOnGivenDriverError } from \"../error/LockNotSupportedOnGivenDriverError\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { AbstractSqliteDriver } from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport { OffsetWithoutLimitNotSupportedError } from \"../error/OffsetWithoutLimitNotSupportedError\";\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\";\nimport { ObjectUtils } from \"../util/ObjectUtils\";\nimport { DriverUtils } from \"../driver/DriverUtils\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { EntityNotFoundError } from \"../error/EntityNotFoundError\";\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar SelectQueryBuilder = /** @class */ (function (_super) {\n __extends(SelectQueryBuilder, _super);\n function SelectQueryBuilder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n SelectQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createSelectExpression();\n sql += this.createJoinExpression();\n sql += this.createWhereExpression();\n sql += this.createGroupByExpression();\n sql += this.createHavingExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitOffsetExpression();\n sql += this.createLockExpression();\n sql = sql.trim();\n if (this.expressionMap.subQuery)\n sql = \"(\" + sql + \")\";\n return sql;\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Creates a subquery - query that can be used inside other queries.\n */\n SelectQueryBuilder.prototype.subQuery = function () {\n var qb = this.createQueryBuilder();\n qb.expressionMap.subQuery = true;\n qb.expressionMap.parentQueryBuilder = this;\n return qb;\n };\n /**\n * Creates SELECT query and selects given data.\n * Replaces all previous selections if they exist.\n */\n SelectQueryBuilder.prototype.select = function (selection, selectionAliasName) {\n this.expressionMap.queryType = \"select\";\n if (Array.isArray(selection)) {\n this.expressionMap.selects = selection.map(function (selection) { return ({ selection: selection }); });\n }\n else if (selection instanceof Function) {\n var subQueryBuilder = selection(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n this.expressionMap.selects.push({ selection: subQueryBuilder.getQuery(), aliasName: selectionAliasName });\n }\n else if (selection) {\n this.expressionMap.selects = [{ selection: selection, aliasName: selectionAliasName }];\n }\n return this;\n };\n /**\n * Adds new selection to the SELECT query.\n */\n SelectQueryBuilder.prototype.addSelect = function (selection, selectionAliasName) {\n if (!selection)\n return this;\n if (Array.isArray(selection)) {\n this.expressionMap.selects = this.expressionMap.selects.concat(selection.map(function (selection) { return ({ selection: selection }); }));\n }\n else if (selection instanceof Function) {\n var subQueryBuilder = selection(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n this.expressionMap.selects.push({ selection: subQueryBuilder.getQuery(), aliasName: selectionAliasName });\n }\n else if (selection) {\n this.expressionMap.selects.push({ selection: selection, aliasName: selectionAliasName });\n }\n return this;\n };\n /**\n * Sets whether the selection is DISTINCT.\n */\n SelectQueryBuilder.prototype.distinct = function (distinct) {\n if (distinct === void 0) { distinct = true; }\n this.expressionMap.selectDistinct = distinct;\n return this;\n };\n /**\n * Sets the distinct on clause for Postgres.\n */\n SelectQueryBuilder.prototype.distinctOn = function (distinctOn) {\n this.expressionMap.selectDistinctOn = distinctOn;\n return this;\n };\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n * Removes all previously set from-s.\n */\n SelectQueryBuilder.prototype.from = function (entityTarget, aliasName) {\n var mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return this;\n };\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n SelectQueryBuilder.prototype.addFrom = function (entityTarget, aliasName) {\n var alias = this.createFromAlias(entityTarget, aliasName);\n if (!this.expressionMap.mainAlias)\n this.expressionMap.setMainAlias(alias);\n return this;\n };\n /**\n * INNER JOINs (without selection).\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoin = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.join(\"INNER\", entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * LEFT JOINs (without selection).\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoin = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.join(\"LEFT\", entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * INNER JOINs and adds all selection properties to SELECT.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoinAndSelect = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.innerJoin(entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * LEFT JOINs and adds all selection properties to SELECT.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoinAndSelect = function (entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.leftJoin(entityOrProperty, alias, condition, parameters);\n return this;\n };\n /**\n * INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there are multiple rows of selecting data, and mapped result will be an array.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoinAndMapMany = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"INNER\", entityOrProperty, alias, condition, parameters, mapToProperty, true);\n return this;\n };\n /**\n * INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there is a single row of selecting data, and mapped result will be a single selected value.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.innerJoinAndMapOne = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"INNER\", entityOrProperty, alias, condition, parameters, mapToProperty, false);\n return this;\n };\n /**\n * LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there are multiple rows of selecting data, and mapped result will be an array.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoinAndMapMany = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"LEFT\", entityOrProperty, alias, condition, parameters, mapToProperty, true);\n return this;\n };\n /**\n * LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.\n * This is extremely useful when you want to select some data and map it to some virtual property.\n * It will assume that there is a single row of selecting data, and mapped result will be a single selected value.\n * You also need to specify an alias of the joined data.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.leftJoinAndMapOne = function (mapToProperty, entityOrProperty, alias, condition, parameters) {\n if (condition === void 0) { condition = \"\"; }\n this.addSelect(alias);\n this.join(\"LEFT\", entityOrProperty, alias, condition, parameters, mapToProperty, false);\n return this;\n };\n /**\n * LEFT JOINs relation id and maps it into some entity's property.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.loadRelationIdAndMap = function (mapToProperty, relationName, aliasNameOrOptions, queryBuilderFactory) {\n var relationIdAttribute = new RelationIdAttribute(this.expressionMap);\n relationIdAttribute.mapToProperty = mapToProperty;\n relationIdAttribute.relationName = relationName;\n if (typeof aliasNameOrOptions === \"string\")\n relationIdAttribute.alias = aliasNameOrOptions;\n if (aliasNameOrOptions instanceof Object && aliasNameOrOptions.disableMixedMap)\n relationIdAttribute.disableMixedMap = true;\n relationIdAttribute.queryBuilderFactory = queryBuilderFactory;\n this.expressionMap.relationIdAttributes.push(relationIdAttribute);\n if (relationIdAttribute.relation.junctionEntityMetadata) {\n this.expressionMap.createAlias({\n type: \"other\",\n name: relationIdAttribute.junctionAlias,\n metadata: relationIdAttribute.relation.junctionEntityMetadata\n });\n }\n return this;\n };\n /**\n * Counts number of entities of entity's relation and maps the value into some entity's property.\n * Optionally, you can add condition and parameters used in condition.\n */\n SelectQueryBuilder.prototype.loadRelationCountAndMap = function (mapToProperty, relationName, aliasName, queryBuilderFactory) {\n var relationCountAttribute = new RelationCountAttribute(this.expressionMap);\n relationCountAttribute.mapToProperty = mapToProperty;\n relationCountAttribute.relationName = relationName;\n relationCountAttribute.alias = aliasName;\n relationCountAttribute.queryBuilderFactory = queryBuilderFactory;\n this.expressionMap.relationCountAttributes.push(relationCountAttribute);\n this.expressionMap.createAlias({\n type: \"other\",\n name: relationCountAttribute.junctionAlias\n });\n if (relationCountAttribute.relation.junctionEntityMetadata) {\n this.expressionMap.createAlias({\n type: \"other\",\n name: relationCountAttribute.junctionAlias,\n metadata: relationCountAttribute.relation.junctionEntityMetadata\n });\n }\n return this;\n };\n /**\n * Loads all relation ids for all relations of the selected entity.\n * All relation ids will be mapped to relation property themself.\n * If array of strings is given then loads only relation ids of the given properties.\n */\n SelectQueryBuilder.prototype.loadAllRelationIds = function (options) {\n var _this = this;\n this.expressionMap.mainAlias.metadata.relations.forEach(function (relation) {\n if (options !== undefined && options.relations !== undefined && options.relations.indexOf(relation.propertyPath) === -1)\n return;\n _this.loadRelationIdAndMap(_this.expressionMap.mainAlias.name + \".\" + relation.propertyPath, _this.expressionMap.mainAlias.name + \".\" + relation.propertyPath, options);\n });\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n *\n * Ids are mixed.\n * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3].\n * If you have multiple primary keys you need to pass object with property names and values specified,\n * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]\n */\n SelectQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n *\n * Ids are mixed.\n * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3].\n * If you have multiple primary keys you need to pass object with property names and values specified,\n * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]\n */\n SelectQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n *\n * Ids are mixed.\n * It means if you have single primary key you can pass a simple id values, for example [1, 2, 3].\n * If you have multiple primary keys you need to pass object with property names and values specified,\n * for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]\n */\n SelectQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Sets HAVING condition in the query builder.\n * If you had previously HAVING expression defined,\n * calling this function will override previously set HAVING conditions.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.having = function (having, parameters) {\n this.expressionMap.havings.push({ type: \"simple\", condition: having });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND HAVING condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.andHaving = function (having, parameters) {\n this.expressionMap.havings.push({ type: \"and\", condition: having });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR HAVING condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SelectQueryBuilder.prototype.orHaving = function (having, parameters) {\n this.expressionMap.havings.push({ type: \"or\", condition: having });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Sets GROUP BY condition in the query builder.\n * If you had previously GROUP BY expression defined,\n * calling this function will override previously set GROUP BY conditions.\n */\n SelectQueryBuilder.prototype.groupBy = function (groupBy) {\n if (groupBy) {\n this.expressionMap.groupBys = [groupBy];\n }\n else {\n this.expressionMap.groupBys = [];\n }\n return this;\n };\n /**\n * Adds GROUP BY condition in the query builder.\n */\n SelectQueryBuilder.prototype.addGroupBy = function (groupBy) {\n this.expressionMap.groupBys.push(groupBy);\n return this;\n };\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n SelectQueryBuilder.prototype.orderBy = function (sort, order, nulls) {\n var _a, _b;\n if (order === void 0) { order = \"ASC\"; }\n if (order !== undefined && order !== \"ASC\" && order !== \"DESC\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"order\\\" can accept only \\\"ASC\\\" and \\\"DESC\\\" values.\");\n if (nulls !== undefined && nulls !== \"NULLS FIRST\" && nulls !== \"NULLS LAST\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"nulls\\\" can accept only \\\"NULLS FIRST\\\" and \\\"NULLS LAST\\\" values.\");\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort;\n }\n else {\n if (nulls) {\n this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a);\n }\n else {\n this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b);\n }\n }\n }\n else {\n this.expressionMap.orderBys = {};\n }\n return this;\n };\n /**\n * Adds ORDER BY condition in the query builder.\n */\n SelectQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) {\n if (order === void 0) { order = \"ASC\"; }\n if (order !== undefined && order !== \"ASC\" && order !== \"DESC\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"order\\\" can accept only \\\"ASC\\\" and \\\"DESC\\\" values.\");\n if (nulls !== undefined && nulls !== \"NULLS FIRST\" && nulls !== \"NULLS LAST\")\n throw new Error(\"SelectQueryBuilder.addOrderBy \\\"nulls\\\" can accept only \\\"NULLS FIRST\\\" and \\\"NULLS LAST\\\" values.\");\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order: order, nulls: nulls };\n }\n else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n };\n /**\n * Set's LIMIT - maximum number of rows to be selected.\n * NOTE that it may not work as you expect if you are using joins.\n * If you want to implement pagination, and you are having join in your query,\n * then use instead take method instead.\n */\n SelectQueryBuilder.prototype.limit = function (limit) {\n this.expressionMap.limit = this.normalizeNumber(limit);\n if (this.expressionMap.limit !== undefined && isNaN(this.expressionMap.limit))\n throw new Error(\"Provided \\\"limit\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Set's OFFSET - selection offset.\n * NOTE that it may not work as you expect if you are using joins.\n * If you want to implement pagination, and you are having join in your query,\n * then use instead skip method instead.\n */\n SelectQueryBuilder.prototype.offset = function (offset) {\n this.expressionMap.offset = this.normalizeNumber(offset);\n if (this.expressionMap.offset !== undefined && isNaN(this.expressionMap.offset))\n throw new Error(\"Provided \\\"offset\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Sets maximal number of entities to take.\n */\n SelectQueryBuilder.prototype.take = function (take) {\n this.expressionMap.take = this.normalizeNumber(take);\n if (this.expressionMap.take !== undefined && isNaN(this.expressionMap.take))\n throw new Error(\"Provided \\\"take\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Sets number of entities to skip.\n */\n SelectQueryBuilder.prototype.skip = function (skip) {\n this.expressionMap.skip = this.normalizeNumber(skip);\n if (this.expressionMap.skip !== undefined && isNaN(this.expressionMap.skip))\n throw new Error(\"Provided \\\"skip\\\" value is not a number. Please provide a numeric value.\");\n return this;\n };\n /**\n * Sets locking mode.\n */\n SelectQueryBuilder.prototype.setLock = function (lockMode, lockVersion, lockTables) {\n this.expressionMap.lockMode = lockMode;\n this.expressionMap.lockVersion = lockVersion;\n this.expressionMap.lockTables = lockTables;\n return this;\n };\n /**\n * Disables the global condition of \"non-deleted\" for the entity with delete date columns.\n */\n SelectQueryBuilder.prototype.withDeleted = function () {\n this.expressionMap.withDeleted = true;\n return this;\n };\n /**\n * Gets first raw result returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getRawOne = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRawMany()];\n case 1: return [2 /*return*/, (_a.sent())[0]];\n }\n });\n });\n };\n /**\n * Gets all raw results returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getRawMany = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, results, error_1, rollbackError_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new OptimisticLockCanNotBeUsedError();\n this.expressionMap.queryEntity = false;\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, 12, 15]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3: return [4 /*yield*/, this.loadRawResults(queryRunner)];\n case 4:\n results = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 6];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/, results];\n case 7:\n error_1 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 11];\n _a.label = 8;\n case 8:\n _a.trys.push([8, 10, , 11]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 9:\n _a.sent();\n return [3 /*break*/, 11];\n case 10:\n rollbackError_1 = _a.sent();\n return [3 /*break*/, 11];\n case 11: throw error_1;\n case 12:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14];\n return [4 /*yield*/, queryRunner.release()];\n case 13:\n _a.sent();\n _a.label = 14;\n case 14: return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes sql generated by query builder and returns object with raw results and entities created from them.\n */\n SelectQueryBuilder.prototype.getRawAndEntities = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, results, error_2, rollbackError_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, 12, 15]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3:\n this.expressionMap.queryEntity = true;\n return [4 /*yield*/, this.executeEntitiesAndRawResults(queryRunner)];\n case 4:\n results = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 6];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/, results];\n case 7:\n error_2 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 11];\n _a.label = 8;\n case 8:\n _a.trys.push([8, 10, , 11]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 9:\n _a.sent();\n return [3 /*break*/, 11];\n case 10:\n rollbackError_2 = _a.sent();\n return [3 /*break*/, 11];\n case 11: throw error_2;\n case 12:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14];\n return [4 /*yield*/, queryRunner.release()];\n case 13:\n _a.sent();\n _a.label = 14;\n case 14: return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets single entity returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getOne = function () {\n return __awaiter(this, void 0, void 0, function () {\n var results, result, metadata, actualVersion, actualVersion;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRawAndEntities()];\n case 1:\n results = _a.sent();\n result = results.entities[0];\n if (result && this.expressionMap.lockMode === \"optimistic\" && this.expressionMap.lockVersion) {\n metadata = this.expressionMap.mainAlias.metadata;\n if (this.expressionMap.lockVersion instanceof Date) {\n actualVersion = metadata.updateDateColumn.getEntityValue(result);\n if (actualVersion.getTime() !== this.expressionMap.lockVersion.getTime())\n throw new OptimisticLockVersionMismatchError(metadata.name, this.expressionMap.lockVersion, actualVersion);\n }\n else {\n actualVersion = metadata.versionColumn.getEntityValue(result);\n if (actualVersion !== this.expressionMap.lockVersion)\n throw new OptimisticLockVersionMismatchError(metadata.name, this.expressionMap.lockVersion, actualVersion);\n }\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n /**\n * Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error.\n */\n SelectQueryBuilder.prototype.getOneOrFail = function () {\n return __awaiter(this, void 0, void 0, function () {\n var entity;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getOne()];\n case 1:\n entity = _a.sent();\n if (!entity) {\n throw new EntityNotFoundError(this.expressionMap.mainAlias.target, this);\n }\n return [2 /*return*/, entity];\n }\n });\n });\n };\n /**\n * Gets entities returned by execution of generated query builder sql.\n */\n SelectQueryBuilder.prototype.getMany = function () {\n return __awaiter(this, void 0, void 0, function () {\n var results;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new OptimisticLockCanNotBeUsedError();\n return [4 /*yield*/, this.getRawAndEntities()];\n case 1:\n results = _a.sent();\n return [2 /*return*/, results.entities];\n }\n });\n });\n };\n /**\n * Gets count - number of entities selected by sql generated by this query builder.\n * Count excludes all limitations set by setFirstResult and setMaxResults methods call.\n */\n SelectQueryBuilder.prototype.getCount = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, results, error_3, rollbackError_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new OptimisticLockCanNotBeUsedError();\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, 12, 15]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3:\n this.expressionMap.queryEntity = false;\n return [4 /*yield*/, this.executeCountQuery(queryRunner)];\n case 4:\n results = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 6];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/, results];\n case 7:\n error_3 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 11];\n _a.label = 8;\n case 8:\n _a.trys.push([8, 10, , 11]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 9:\n _a.sent();\n return [3 /*break*/, 11];\n case 10:\n rollbackError_3 = _a.sent();\n return [3 /*break*/, 11];\n case 11: throw error_3;\n case 12:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14];\n return [4 /*yield*/, queryRunner.release()];\n case 13:\n _a.sent();\n _a.label = 14;\n case 14: return [7 /*endfinally*/];\n case 15: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes built SQL query and returns entities and overall entities count (without limitation).\n * This method is useful to build pagination.\n */\n SelectQueryBuilder.prototype.getManyAndCount = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, entitiesAndRaw, count, results, error_4, rollbackError_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.expressionMap.lockMode === \"optimistic\")\n throw new OptimisticLockCanNotBeUsedError();\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 8, 13, 16]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _a.sent();\n transactionStartedByUs = true;\n _a.label = 3;\n case 3:\n this.expressionMap.queryEntity = true;\n return [4 /*yield*/, this.executeEntitiesAndRawResults(queryRunner)];\n case 4:\n entitiesAndRaw = _a.sent();\n this.expressionMap.queryEntity = false;\n return [4 /*yield*/, this.executeCountQuery(queryRunner)];\n case 5:\n count = _a.sent();\n results = [entitiesAndRaw.entities, count];\n if (!transactionStartedByUs) return [3 /*break*/, 7];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [2 /*return*/, results];\n case 8:\n error_4 = _a.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n _a.label = 9;\n case 9:\n _a.trys.push([9, 11, , 12]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 10:\n _a.sent();\n return [3 /*break*/, 12];\n case 11:\n rollbackError_4 = _a.sent();\n return [3 /*break*/, 12];\n case 12: throw error_4;\n case 13:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 15];\n return [4 /*yield*/, queryRunner.release()];\n case 14:\n _a.sent();\n _a.label = 15;\n case 15: return [7 /*endfinally*/];\n case 16: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes built SQL query and returns raw data stream.\n */\n SelectQueryBuilder.prototype.stream = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, sql, parameters, queryRunner, transactionStartedByUs, releaseFn, results, error_5, rollbackError_5;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.expressionMap.queryEntity = false;\n _a = __read(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, , 11]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n releaseFn = function () {\n if (queryRunner !== _this.queryRunner) // means we created our own query runner\n return queryRunner.release();\n return;\n };\n results = queryRunner.stream(sql, parameters, releaseFn, releaseFn);\n if (!transactionStartedByUs) return [3 /*break*/, 5];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/, results];\n case 6:\n error_5 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 10];\n _b.label = 7;\n case 7:\n _b.trys.push([7, 9, , 10]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 8:\n _b.sent();\n return [3 /*break*/, 10];\n case 9:\n rollbackError_5 = _b.sent();\n return [3 /*break*/, 10];\n case 10: throw error_5;\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Enables or disables query result caching.\n */\n SelectQueryBuilder.prototype.cache = function (enabledOrMillisecondsOrId, maybeMilliseconds) {\n if (typeof enabledOrMillisecondsOrId === \"boolean\") {\n this.expressionMap.cache = enabledOrMillisecondsOrId;\n }\n else if (typeof enabledOrMillisecondsOrId === \"number\") {\n this.expressionMap.cache = true;\n this.expressionMap.cacheDuration = enabledOrMillisecondsOrId;\n }\n else if (typeof enabledOrMillisecondsOrId === \"string\" || typeof enabledOrMillisecondsOrId === \"number\") {\n this.expressionMap.cache = true;\n this.expressionMap.cacheId = enabledOrMillisecondsOrId;\n }\n if (maybeMilliseconds) {\n this.expressionMap.cacheDuration = maybeMilliseconds;\n }\n return this;\n };\n /**\n * Sets extra options that can be used to configure how query builder works.\n */\n SelectQueryBuilder.prototype.setOption = function (option) {\n this.expressionMap.options.push(option);\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n SelectQueryBuilder.prototype.join = function (direction, entityOrProperty, aliasName, condition, parameters, mapToProperty, isMappingMany) {\n this.setParameters(parameters || {});\n var joinAttribute = new JoinAttribute(this.connection, this.expressionMap);\n joinAttribute.direction = direction;\n joinAttribute.mapToProperty = mapToProperty;\n joinAttribute.isMappingMany = isMappingMany;\n joinAttribute.entityOrProperty = entityOrProperty; // relationName\n joinAttribute.condition = condition; // joinInverseSideCondition\n // joinAttribute.junctionAlias = joinAttribute.relation.isOwning ? parentAlias + \"_\" + destinationTableAlias : destinationTableAlias + \"_\" + parentAlias;\n this.expressionMap.joinAttributes.push(joinAttribute);\n if (joinAttribute.metadata) {\n if (joinAttribute.metadata.deleteDateColumn && !this.expressionMap.withDeleted) {\n var conditionDeleteColumn = aliasName + \".\" + joinAttribute.metadata.deleteDateColumn.propertyName + \" IS NULL\";\n joinAttribute.condition += joinAttribute.condition ? \" AND \" + conditionDeleteColumn : \"\" + conditionDeleteColumn;\n }\n // todo: find and set metadata right there?\n joinAttribute.alias = this.expressionMap.createAlias({\n type: \"join\",\n name: aliasName,\n metadata: joinAttribute.metadata\n });\n if (joinAttribute.relation && joinAttribute.relation.junctionEntityMetadata) {\n this.expressionMap.createAlias({\n type: \"join\",\n name: joinAttribute.junctionAlias,\n metadata: joinAttribute.relation.junctionEntityMetadata\n });\n }\n }\n else {\n var subQuery = \"\";\n if (entityOrProperty instanceof Function) {\n var subQueryBuilder = entityOrProperty(this.subQuery());\n this.setParameters(subQueryBuilder.getParameters());\n subQuery = subQueryBuilder.getQuery();\n }\n else {\n subQuery = entityOrProperty;\n }\n var isSubQuery = entityOrProperty instanceof Function || entityOrProperty.substr(0, 1) === \"(\" && entityOrProperty.substr(-1) === \")\";\n joinAttribute.alias = this.expressionMap.createAlias({\n type: \"join\",\n name: aliasName,\n tablePath: isSubQuery === false ? entityOrProperty : undefined,\n subQuery: isSubQuery === true ? subQuery : undefined,\n });\n }\n };\n /**\n * Creates \"SELECT FROM\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createSelectExpression = function () {\n var _this = this;\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Cannot build query because main alias is not set (call qb#from method)\");\n // todo throw exception if selects or from is missing\n var allSelects = [];\n var excludedSelects = [];\n if (this.expressionMap.mainAlias.hasMetadata) {\n var metadata = this.expressionMap.mainAlias.metadata;\n allSelects.push.apply(allSelects, __spreadArray([], __read(this.buildEscapedEntityColumnSelects(this.expressionMap.mainAlias.name, metadata))));\n excludedSelects.push.apply(excludedSelects, __spreadArray([], __read(this.findEntityColumnSelects(this.expressionMap.mainAlias.name, metadata))));\n }\n // add selects from joins\n this.expressionMap.joinAttributes\n .forEach(function (join) {\n if (join.metadata) {\n allSelects.push.apply(allSelects, __spreadArray([], __read(_this.buildEscapedEntityColumnSelects(join.alias.name, join.metadata))));\n excludedSelects.push.apply(excludedSelects, __spreadArray([], __read(_this.findEntityColumnSelects(join.alias.name, join.metadata))));\n }\n else {\n var hasMainAlias = _this.expressionMap.selects.some(function (select) { return select.selection === join.alias.name; });\n if (hasMainAlias) {\n allSelects.push({ selection: _this.escape(join.alias.name) + \".*\" });\n var excludedSelect = _this.expressionMap.selects.find(function (select) { return select.selection === join.alias.name; });\n excludedSelects.push(excludedSelect);\n }\n }\n });\n // add all other selects\n this.expressionMap.selects\n .filter(function (select) { return excludedSelects.indexOf(select) === -1; })\n .forEach(function (select) { return allSelects.push({ selection: _this.replacePropertyNames(select.selection), aliasName: select.aliasName }); });\n // if still selection is empty, then simply set it to all (*)\n if (allSelects.length === 0)\n allSelects.push({ selection: \"*\" });\n var lock = \"\";\n if (this.connection.driver instanceof SqlServerDriver) {\n switch (this.expressionMap.lockMode) {\n case \"pessimistic_read\":\n lock = \" WITH (HOLDLOCK, ROWLOCK)\";\n break;\n case \"pessimistic_write\":\n lock = \" WITH (UPDLOCK, ROWLOCK)\";\n break;\n case \"dirty_read\":\n lock = \" WITH (NOLOCK)\";\n break;\n }\n }\n // create a selection query\n var froms = this.expressionMap.aliases\n .filter(function (alias) { return alias.type === \"from\" && (alias.tablePath || alias.subQuery); })\n .map(function (alias) {\n if (alias.subQuery)\n return alias.subQuery + \" \" + _this.escape(alias.name);\n return _this.getTableName(alias.tablePath) + \" \" + _this.escape(alias.name);\n });\n var select = this.createSelectDistinctExpression();\n var selection = allSelects.map(function (select) { return select.selection + (select.aliasName ? \" AS \" + _this.escape(select.aliasName) : \"\"); }).join(\", \");\n return select + selection + \" FROM \" + froms.join(\", \") + lock;\n };\n /**\n * Creates select | select distinct part of SQL query.\n */\n SelectQueryBuilder.prototype.createSelectDistinctExpression = function () {\n var _this = this;\n var _a = this.expressionMap, selectDistinct = _a.selectDistinct, selectDistinctOn = _a.selectDistinctOn;\n var driver = this.connection.driver;\n var select = \"SELECT \";\n if (driver instanceof PostgresDriver && selectDistinctOn.length > 0) {\n var selectDistinctOnMap = selectDistinctOn.map(function (on) { return _this.replacePropertyNames(on); }).join(\", \");\n select = \"SELECT DISTINCT ON (\" + selectDistinctOnMap + \") \";\n }\n else if (selectDistinct) {\n select = \"SELECT DISTINCT \";\n }\n return select;\n };\n /**\n * Creates \"JOIN\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createJoinExpression = function () {\n // examples:\n // select from owning side\n // qb.select(\"post\")\n // .leftJoinAndSelect(\"post.category\", \"category\");\n // select from non-owning side\n // qb.select(\"category\")\n // .leftJoinAndSelect(\"category.post\", \"post\");\n var _this = this;\n var joins = this.expressionMap.joinAttributes.map(function (joinAttr) {\n var relation = joinAttr.relation;\n var destinationTableName = joinAttr.tablePath;\n var destinationTableAlias = joinAttr.alias.name;\n var appendedCondition = joinAttr.condition ? \" AND (\" + joinAttr.condition + \")\" : \"\";\n var parentAlias = joinAttr.parentAlias;\n // if join was build without relation (e.g. without \"post.category\") then it means that we have direct\n // table to join, without junction table involved. This means we simply join direct table.\n if (!parentAlias || !relation) {\n var destinationJoin = joinAttr.alias.subQuery ? joinAttr.alias.subQuery : _this.getTableName(destinationTableName);\n return \" \" + joinAttr.direction + \" JOIN \" + destinationJoin + \" \" + _this.escape(destinationTableAlias) +\n (joinAttr.condition ? \" ON \" + _this.replacePropertyNames(joinAttr.condition) : \"\");\n }\n // if real entity relation is involved\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n // JOIN `category` `category` ON `category`.`id` = `post`.`categoryId`\n var condition = relation.joinColumns.map(function (joinColumn) {\n return destinationTableAlias + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" +\n parentAlias + \".\" + relation.propertyPath + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n return \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(destinationTableName) + \" \" + _this.escape(destinationTableAlias) + \" ON \" + _this.replacePropertyNames(condition + appendedCondition);\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n // JOIN `post` `post` ON `post`.`categoryId` = `category`.`id`\n var condition = relation.inverseRelation.joinColumns.map(function (joinColumn) {\n if (relation.inverseEntityMetadata.tableType === \"entity-child\" && relation.inverseEntityMetadata.discriminatorColumn) {\n appendedCondition += \" AND \" + destinationTableAlias + \".\" + relation.inverseEntityMetadata.discriminatorColumn.databaseName + \"='\" + relation.inverseEntityMetadata.discriminatorValue + \"'\";\n }\n return destinationTableAlias + \".\" + relation.inverseRelation.propertyPath + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" +\n parentAlias + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n return \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(destinationTableName) + \" \" + _this.escape(destinationTableAlias) + \" ON \" + _this.replacePropertyNames(condition + appendedCondition);\n }\n else { // means many-to-many\n var junctionTableName = relation.junctionEntityMetadata.tablePath;\n var junctionAlias_1 = joinAttr.junctionAlias;\n var junctionCondition = \"\", destinationCondition = \"\";\n if (relation.isOwning) {\n junctionCondition = relation.joinColumns.map(function (joinColumn) {\n // `post_category`.`postId` = `post`.`id`\n return junctionAlias_1 + \".\" + joinColumn.propertyPath + \"=\" + parentAlias + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n destinationCondition = relation.inverseJoinColumns.map(function (joinColumn) {\n // `category`.`id` = `post_category`.`categoryId`\n return destinationTableAlias + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" + junctionAlias_1 + \".\" + joinColumn.propertyPath;\n }).join(\" AND \");\n }\n else {\n junctionCondition = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) {\n // `post_category`.`categoryId` = `category`.`id`\n return junctionAlias_1 + \".\" + joinColumn.propertyPath + \"=\" + parentAlias + \".\" + joinColumn.referencedColumn.propertyPath;\n }).join(\" AND \");\n destinationCondition = relation.inverseRelation.joinColumns.map(function (joinColumn) {\n // `post`.`id` = `post_category`.`postId`\n return destinationTableAlias + \".\" + joinColumn.referencedColumn.propertyPath + \"=\" + junctionAlias_1 + \".\" + joinColumn.propertyPath;\n }).join(\" AND \");\n }\n return \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(junctionTableName) + \" \" + _this.escape(junctionAlias_1) + \" ON \" + _this.replacePropertyNames(junctionCondition) +\n \" \" + joinAttr.direction + \" JOIN \" + _this.getTableName(destinationTableName) + \" \" + _this.escape(destinationTableAlias) + \" ON \" + _this.replacePropertyNames(destinationCondition + appendedCondition);\n }\n });\n return joins.join(\" \");\n };\n /**\n * Creates \"GROUP BY\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createGroupByExpression = function () {\n if (!this.expressionMap.groupBys || !this.expressionMap.groupBys.length)\n return \"\";\n return \" GROUP BY \" + this.replacePropertyNames(this.expressionMap.groupBys.join(\", \"));\n };\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createOrderByExpression = function () {\n var _this = this;\n var orderBys = this.expressionMap.allOrderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(function (columnName) {\n if (typeof orderBys[columnName] === \"string\") {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n }\n else {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName].order + \" \" + orderBys[columnName].nulls;\n }\n })\n .join(\", \");\n return \"\";\n };\n /**\n * Creates \"LIMIT\" and \"OFFSET\" parts of SQL query.\n */\n SelectQueryBuilder.prototype.createLimitOffsetExpression = function () {\n // in the case if nothing is joined in the query builder we don't need to make two requests to get paginated results\n // we can use regular limit / offset, that's why we add offset and limit construction here based on skip and take values\n var offset = this.expressionMap.offset, limit = this.expressionMap.limit;\n if (!offset && !limit && this.expressionMap.joinAttributes.length === 0) {\n offset = this.expressionMap.skip;\n limit = this.expressionMap.take;\n }\n if (this.connection.driver instanceof SqlServerDriver) {\n // Due to a limitation in SQL Server's parser implementation it does not support using\n // OFFSET or FETCH NEXT without an ORDER BY clause being provided. In cases where the\n // user does not request one we insert a dummy ORDER BY that does nothing and should\n // have no effect on the query planner or on the order of the results returned.\n // https://dba.stackexchange.com/a/193799\n var prefix = \"\";\n if ((limit || offset) && Object.keys(this.expressionMap.allOrderBys).length <= 0) {\n prefix = \" ORDER BY (SELECT NULL)\";\n }\n if (limit && offset)\n return prefix + \" OFFSET \" + offset + \" ROWS FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (limit)\n return prefix + \" OFFSET 0 ROWS FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (offset)\n return prefix + \" OFFSET \" + offset + \" ROWS\";\n }\n else if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver || this.connection.driver instanceof SapDriver) {\n if (limit && offset)\n return \" LIMIT \" + limit + \" OFFSET \" + offset;\n if (limit)\n return \" LIMIT \" + limit;\n if (offset)\n throw new OffsetWithoutLimitNotSupportedError();\n }\n else if (this.connection.driver instanceof AbstractSqliteDriver) {\n if (limit && offset)\n return \" LIMIT \" + limit + \" OFFSET \" + offset;\n if (limit)\n return \" LIMIT \" + limit;\n if (offset)\n return \" LIMIT -1 OFFSET \" + offset;\n }\n else if (this.connection.driver instanceof OracleDriver) {\n if (limit && offset)\n return \" OFFSET \" + offset + \" ROWS FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (limit)\n return \" FETCH NEXT \" + limit + \" ROWS ONLY\";\n if (offset)\n return \" OFFSET \" + offset + \" ROWS\";\n }\n else {\n if (limit && offset)\n return \" LIMIT \" + limit + \" OFFSET \" + offset;\n if (limit)\n return \" LIMIT \" + limit;\n if (offset)\n return \" OFFSET \" + offset;\n }\n return \"\";\n };\n /**\n * Creates \"LOCK\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createLockExpression = function () {\n var driver = this.connection.driver;\n var lockTablesClause = \"\";\n if (this.expressionMap.lockTables) {\n if (!(driver instanceof PostgresDriver)) {\n throw new Error(\"Lock tables not supported in selected driver\");\n }\n if (this.expressionMap.lockTables.length < 1) {\n throw new Error(\"lockTables cannot be an empty array\");\n }\n lockTablesClause = \" OF \" + this.expressionMap.lockTables.join(\", \");\n }\n switch (this.expressionMap.lockMode) {\n case \"pessimistic_read\":\n if (driver instanceof MysqlDriver || driver instanceof AuroraDataApiDriver) {\n return \" LOCK IN SHARE MODE\";\n }\n else if (driver instanceof PostgresDriver) {\n return \" FOR SHARE\" + lockTablesClause;\n }\n else if (driver instanceof OracleDriver) {\n return \" FOR UPDATE\";\n }\n else if (driver instanceof SqlServerDriver) {\n return \"\";\n }\n else {\n throw new LockNotSupportedOnGivenDriverError();\n }\n case \"pessimistic_write\":\n if (driver instanceof MysqlDriver || driver instanceof AuroraDataApiDriver || driver instanceof OracleDriver) {\n return \" FOR UPDATE\";\n }\n else if (driver instanceof PostgresDriver) {\n return \" FOR UPDATE\" + lockTablesClause;\n }\n else if (driver instanceof SqlServerDriver) {\n return \"\";\n }\n else {\n throw new LockNotSupportedOnGivenDriverError();\n }\n case \"pessimistic_partial_write\":\n if (driver instanceof PostgresDriver) {\n return \" FOR UPDATE\" + lockTablesClause + \" SKIP LOCKED\";\n }\n else if (driver instanceof MysqlDriver) {\n return \" FOR UPDATE SKIP LOCKED\";\n }\n else {\n throw new LockNotSupportedOnGivenDriverError();\n }\n case \"pessimistic_write_or_fail\":\n if (driver instanceof PostgresDriver) {\n return \" FOR UPDATE\" + lockTablesClause + \" NOWAIT\";\n }\n else if (driver instanceof MysqlDriver) {\n return \" FOR UPDATE NOWAIT\";\n }\n else {\n throw new LockNotSupportedOnGivenDriverError();\n }\n case \"for_no_key_update\":\n if (driver instanceof PostgresDriver) {\n return \" FOR NO KEY UPDATE\" + lockTablesClause;\n }\n else {\n throw new LockNotSupportedOnGivenDriverError();\n }\n default:\n return \"\";\n }\n };\n /**\n * Creates \"HAVING\" part of SQL query.\n */\n SelectQueryBuilder.prototype.createHavingExpression = function () {\n var _this = this;\n if (!this.expressionMap.havings || !this.expressionMap.havings.length)\n return \"\";\n var conditions = this.expressionMap.havings.map(function (having, index) {\n switch (having.type) {\n case \"and\":\n return (index > 0 ? \"AND \" : \"\") + _this.replacePropertyNames(having.condition);\n case \"or\":\n return (index > 0 ? \"OR \" : \"\") + _this.replacePropertyNames(having.condition);\n default:\n return _this.replacePropertyNames(having.condition);\n }\n }).join(\" \");\n if (!conditions.length)\n return \"\";\n return \" HAVING \" + conditions;\n };\n SelectQueryBuilder.prototype.buildEscapedEntityColumnSelects = function (aliasName, metadata) {\n var _this = this;\n var hasMainAlias = this.expressionMap.selects.some(function (select) { return select.selection === aliasName; });\n var columns = [];\n if (hasMainAlias) {\n columns.push.apply(columns, __spreadArray([], __read(metadata.columns.filter(function (column) { return column.isSelect === true; }))));\n }\n columns.push.apply(columns, __spreadArray([], __read(metadata.columns.filter(function (column) {\n return _this.expressionMap.selects.some(function (select) { return select.selection === aliasName + \".\" + column.propertyPath; });\n }))));\n // if user used partial selection and did not select some primary columns which are required to be selected\n // we select those primary columns and mark them as \"virtual\". Later virtual column values will be removed from final entity\n // to make entity contain exactly what user selected\n if (columns.length === 0) // however not in the case when nothing (even partial) was selected from this target (for example joins without selection)\n return [];\n var nonSelectedPrimaryColumns = this.expressionMap.queryEntity ? metadata.primaryColumns.filter(function (primaryColumn) { return columns.indexOf(primaryColumn) === -1; }) : [];\n var allColumns = __spreadArray(__spreadArray([], __read(columns)), __read(nonSelectedPrimaryColumns));\n return allColumns.map(function (column) {\n var selection = _this.expressionMap.selects.find(function (select) { return select.selection === aliasName + \".\" + column.propertyPath; });\n var selectionPath = _this.escape(aliasName) + \".\" + _this.escape(column.databaseName);\n if (_this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (_this.connection.driver instanceof MysqlDriver || _this.connection.driver instanceof AuroraDataApiDriver) {\n var useLegacy = _this.connection.driver.options.legacySpatialSupport;\n var asText = useLegacy ? \"AsText\" : \"ST_AsText\";\n selectionPath = asText + \"(\" + selectionPath + \")\";\n }\n if (_this.connection.driver instanceof PostgresDriver)\n // cast to JSON to trigger parsing in the driver\n if (column.precision) {\n selectionPath = \"ST_AsGeoJSON(\" + selectionPath + \", \" + column.precision + \")::json\";\n }\n else {\n selectionPath = \"ST_AsGeoJSON(\" + selectionPath + \")::json\";\n }\n if (_this.connection.driver instanceof SqlServerDriver)\n selectionPath = selectionPath + \".ToString()\";\n }\n return {\n selection: selectionPath,\n aliasName: selection && selection.aliasName ? selection.aliasName : DriverUtils.buildColumnAlias(_this.connection.driver, aliasName, column.databaseName),\n // todo: need to keep in mind that custom selection.aliasName breaks hydrator. fix it later!\n virtual: selection ? selection.virtual === true : (hasMainAlias ? false : true),\n };\n });\n };\n SelectQueryBuilder.prototype.findEntityColumnSelects = function (aliasName, metadata) {\n var mainSelect = this.expressionMap.selects.find(function (select) { return select.selection === aliasName; });\n if (mainSelect)\n return [mainSelect];\n return this.expressionMap.selects.filter(function (select) {\n return metadata.columns.some(function (column) { return select.selection === aliasName + \".\" + column.propertyPath; });\n });\n };\n SelectQueryBuilder.prototype.computeCountExpression = function () {\n var _this = this;\n var mainAlias = this.expressionMap.mainAlias.name; // todo: will this work with \"fromTableName\"?\n var metadata = this.expressionMap.mainAlias.metadata;\n var primaryColumns = metadata.primaryColumns;\n var distinctAlias = this.escape(mainAlias);\n // If we aren't doing anything that will create a join, we can use a simpler `COUNT` instead\n // so we prevent poor query patterns in the most likely cases\n if (this.expressionMap.joinAttributes.length === 0 &&\n this.expressionMap.relationIdAttributes.length === 0 &&\n this.expressionMap.relationCountAttributes.length === 0) {\n return \"COUNT(1)\";\n }\n // For everything else, we'll need to do some hackery to get the correct count values.\n if (this.connection.driver instanceof CockroachDriver || this.connection.driver instanceof PostgresDriver) {\n // Postgres and CockroachDB can pass multiple parameters to the `DISTINCT` function\n // https://www.postgresql.org/docs/9.5/sql-select.html#SQL-DISTINCT\n return \"COUNT(DISTINCT(\" +\n primaryColumns.map(function (c) { return distinctAlias + \".\" + _this.escape(c.databaseName); }).join(\", \") +\n \"))\";\n }\n if (this.connection.driver instanceof MysqlDriver) {\n // MySQL & MariaDB can pass multiple parameters to the `DISTINCT` language construct\n // https://mariadb.com/kb/en/count-distinct/\n return \"COUNT(DISTINCT \" +\n primaryColumns.map(function (c) { return distinctAlias + \".\" + _this.escape(c.databaseName); }).join(\", \") +\n \")\";\n }\n if (this.connection.driver instanceof SqlServerDriver) {\n // SQL Server has gotta be different from everyone else. They don't support\n // distinct counting multiple columns & they don't have the same operator\n // characteristic for concatenating, so we gotta use the `CONCAT` function.\n // However, If it's exactly 1 column we can omit the `CONCAT` for better performance.\n var columnsExpression = primaryColumns.map(function (primaryColumn) { return distinctAlias + \".\" + _this.escape(primaryColumn.databaseName); }).join(\", '|;|', \");\n if (primaryColumns.length === 1) {\n return \"COUNT(DISTINCT(\" + columnsExpression + \"))\";\n }\n return \"COUNT(DISTINCT(CONCAT(\" + columnsExpression + \")))\";\n }\n // If all else fails, fall back to a `COUNT` and `DISTINCT` across all the primary columns concatenated.\n // Per the SQL spec, this is the canonical string concatenation mechanism which is most\n // likely to work across servers implementing the SQL standard.\n // Please note, if there is only one primary column that the concatenation does not occur in this\n // query and the query is a standard `COUNT DISTINCT` in that case.\n return \"COUNT(DISTINCT(\" +\n primaryColumns.map(function (c) { return distinctAlias + \".\" + _this.escape(c.databaseName); }).join(\" || '|;|' || \") +\n \"))\";\n };\n SelectQueryBuilder.prototype.executeCountQuery = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var countSql, results;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n countSql = this.computeCountExpression();\n return [4 /*yield*/, this.clone()\n .orderBy()\n .groupBy()\n .offset(undefined)\n .limit(undefined)\n .skip(undefined)\n .take(undefined)\n .select(countSql, \"cnt\")\n .setOption(\"disable-global-order\")\n .loadRawResults(queryRunner)];\n case 1:\n results = _a.sent();\n if (!results || !results[0] || !results[0][\"cnt\"])\n return [2 /*return*/, 0];\n return [2 /*return*/, parseInt(results[0][\"cnt\"])];\n }\n });\n });\n };\n /**\n * Executes sql generated by query builder and returns object with raw results and entities created from them.\n */\n SelectQueryBuilder.prototype.executeEntitiesAndRawResults = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, relationIdLoader, relationCountLoader, relationIdMetadataTransformer, relationCountMetadataTransformer, rawResults, entities, _a, selects, orderBys_1, metadata_1, mainAliasName_1, querySelects, condition, parameters_1, alias_1, ids, areAllNumbers, rawRelationIdResults, rawRelationCountResults, transformer, broadcastResult;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.expressionMap.mainAlias)\n throw new Error(\"Alias is not set. Use \\\"from\\\" method to set an alias.\");\n if ((this.expressionMap.lockMode === \"pessimistic_read\" || this.expressionMap.lockMode === \"pessimistic_write\" || this.expressionMap.lockMode === \"pessimistic_partial_write\" || this.expressionMap.lockMode === \"pessimistic_write_or_fail\" || this.expressionMap.lockMode === \"for_no_key_update\") && !queryRunner.isTransactionActive)\n throw new PessimisticLockTransactionRequiredError();\n if (this.expressionMap.lockMode === \"optimistic\") {\n metadata = this.expressionMap.mainAlias.metadata;\n if (!metadata.versionColumn && !metadata.updateDateColumn)\n throw new NoVersionOrUpdateDateColumnError(metadata.name);\n }\n relationIdLoader = new RelationIdLoader(this.connection, queryRunner, this.expressionMap.relationIdAttributes);\n relationCountLoader = new RelationCountLoader(this.connection, queryRunner, this.expressionMap.relationCountAttributes);\n relationIdMetadataTransformer = new RelationIdMetadataToAttributeTransformer(this.expressionMap);\n relationIdMetadataTransformer.transform();\n relationCountMetadataTransformer = new RelationCountMetadataToAttributeTransformer(this.expressionMap);\n relationCountMetadataTransformer.transform();\n rawResults = [], entities = [];\n if (!((this.expressionMap.skip || this.expressionMap.take) && this.expressionMap.joinAttributes.length > 0)) return [3 /*break*/, 4];\n _a = __read(this.createOrderByCombinedWithSelectExpression(\"distinctAlias\"), 2), selects = _a[0], orderBys_1 = _a[1];\n metadata_1 = this.expressionMap.mainAlias.metadata;\n mainAliasName_1 = this.expressionMap.mainAlias.name;\n querySelects = metadata_1.primaryColumns.map(function (primaryColumn) {\n var distinctAlias = _this.escape(\"distinctAlias\");\n var columnAlias = _this.escape(DriverUtils.buildColumnAlias(_this.connection.driver, mainAliasName_1, primaryColumn.databaseName));\n if (!orderBys_1[columnAlias]) // make sure we aren't overriding user-defined order in inverse direction\n orderBys_1[columnAlias] = \"ASC\";\n var alias = DriverUtils.buildColumnAlias(_this.connection.driver, \"ids_\" + mainAliasName_1, primaryColumn.databaseName);\n return distinctAlias + \".\" + columnAlias + \" as \\\"\" + alias + \"\\\"\";\n });\n return [4 /*yield*/, new SelectQueryBuilder(this.connection, queryRunner)\n .select(\"DISTINCT \" + querySelects.join(\", \"))\n .addSelect(selects)\n .from(\"(\" + this.clone().orderBy().getQuery() + \")\", \"distinctAlias\")\n .offset(this.expressionMap.skip)\n .limit(this.expressionMap.take)\n .orderBy(orderBys_1)\n .cache(this.expressionMap.cache ? this.expressionMap.cache : this.expressionMap.cacheId, this.expressionMap.cacheDuration)\n .setParameters(this.getParameters())\n .setNativeParameters(this.expressionMap.nativeParameters)\n .getRawMany()];\n case 1:\n rawResults = _b.sent();\n if (!(rawResults.length > 0)) return [3 /*break*/, 3];\n condition = \"\";\n parameters_1 = {};\n if (metadata_1.hasMultiplePrimaryKeys) {\n condition = rawResults.map(function (result, index) {\n return metadata_1.primaryColumns.map(function (primaryColumn) {\n var paramKey = \"orm_distinct_ids_\" + index + \"_\" + primaryColumn.databaseName;\n parameters_1[paramKey] = result[\"ids_\" + mainAliasName_1 + \"_\" + primaryColumn.databaseName];\n return mainAliasName_1 + \".\" + primaryColumn.propertyPath + \"=:\" + paramKey;\n }).join(\" AND \");\n }).join(\" OR \");\n }\n else {\n alias_1 = DriverUtils.buildColumnAlias(this.connection.driver, \"ids_\" + mainAliasName_1, metadata_1.primaryColumns[0].databaseName);\n ids = rawResults.map(function (result) { return result[alias_1]; });\n areAllNumbers = ids.every(function (id) { return typeof id === \"number\"; });\n if (areAllNumbers) {\n // fixes #190. if all numbers then its safe to perform query without parameter\n condition = mainAliasName_1 + \".\" + metadata_1.primaryColumns[0].propertyPath + \" IN (\" + ids.join(\", \") + \")\";\n }\n else {\n parameters_1[\"orm_distinct_ids\"] = ids;\n condition = mainAliasName_1 + \".\" + metadata_1.primaryColumns[0].propertyPath + \" IN (:...orm_distinct_ids)\";\n }\n }\n return [4 /*yield*/, this.clone()\n .mergeExpressionMap({ extraAppendedAndWhereCondition: condition })\n .setParameters(parameters_1)\n .loadRawResults(queryRunner)];\n case 2:\n rawResults = _b.sent();\n _b.label = 3;\n case 3: return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, this.loadRawResults(queryRunner)];\n case 5:\n rawResults = _b.sent();\n _b.label = 6;\n case 6:\n if (!(rawResults.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, relationIdLoader.load(rawResults)];\n case 7:\n rawRelationIdResults = _b.sent();\n return [4 /*yield*/, relationCountLoader.load(rawResults)];\n case 8:\n rawRelationCountResults = _b.sent();\n transformer = new RawSqlResultsToEntityTransformer(this.expressionMap, this.connection.driver, rawRelationIdResults, rawRelationCountResults, this.queryRunner);\n entities = transformer.transform(rawResults, this.expressionMap.mainAlias);\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastLoadEventsForAll(broadcastResult, this.expressionMap.mainAlias.metadata, entities);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10: return [2 /*return*/, {\n raw: rawResults,\n entities: entities,\n }];\n }\n });\n });\n };\n SelectQueryBuilder.prototype.createOrderByCombinedWithSelectExpression = function (parentAlias) {\n var _this = this;\n // if table has a default order then apply it\n var orderBys = this.expressionMap.allOrderBys;\n var selectString = Object.keys(orderBys)\n .map(function (orderCriteria) {\n if (orderCriteria.indexOf(\".\") !== -1) {\n var criteriaParts = orderCriteria.split(\".\");\n var aliasName = criteriaParts[0];\n var propertyPath = criteriaParts.slice(1).join(\".\");\n var alias = _this.expressionMap.findAliasByName(aliasName);\n var column = alias.metadata.findColumnWithPropertyPath(propertyPath);\n return _this.escape(parentAlias) + \".\" + _this.escape(DriverUtils.buildColumnAlias(_this.connection.driver, aliasName, column.databaseName));\n }\n else {\n if (_this.expressionMap.selects.find(function (select) { return select.selection === orderCriteria || select.aliasName === orderCriteria; }))\n return _this.escape(parentAlias) + \".\" + orderCriteria;\n return \"\";\n }\n })\n .join(\", \");\n var orderByObject = {};\n Object.keys(orderBys).forEach(function (orderCriteria) {\n if (orderCriteria.indexOf(\".\") !== -1) {\n var criteriaParts = orderCriteria.split(\".\");\n var aliasName = criteriaParts[0];\n var propertyPath = criteriaParts.slice(1).join(\".\");\n var alias = _this.expressionMap.findAliasByName(aliasName);\n var column = alias.metadata.findColumnWithPropertyPath(propertyPath);\n orderByObject[_this.escape(parentAlias) + \".\" + _this.escape(DriverUtils.buildColumnAlias(_this.connection.driver, aliasName, column.databaseName))] = orderBys[orderCriteria];\n }\n else {\n if (_this.expressionMap.selects.find(function (select) { return select.selection === orderCriteria || select.aliasName === orderCriteria; })) {\n orderByObject[_this.escape(parentAlias) + \".\" + orderCriteria] = orderBys[orderCriteria];\n }\n else {\n orderByObject[orderCriteria] = orderBys[orderCriteria];\n }\n }\n });\n return [selectString, orderByObject];\n };\n /**\n * Loads raw results from the database.\n */\n SelectQueryBuilder.prototype.loadRawResults = function (queryRunner) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, sql, parameters, queryId, cacheOptions, savedQueryResultCacheOptions, results;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = __read(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryId = sql + \" -- PARAMETERS: \" + JSON.stringify(parameters);\n cacheOptions = typeof this.connection.options.cache === \"object\" ? this.connection.options.cache : {};\n savedQueryResultCacheOptions = undefined;\n if (!(this.connection.queryResultCache && (this.expressionMap.cache || cacheOptions.alwaysEnabled))) return [3 /*break*/, 2];\n return [4 /*yield*/, this.connection.queryResultCache.getFromCache({\n identifier: this.expressionMap.cacheId,\n query: queryId,\n duration: this.expressionMap.cacheDuration || cacheOptions.duration || 1000\n }, queryRunner)];\n case 1:\n savedQueryResultCacheOptions = _b.sent();\n if (savedQueryResultCacheOptions && !this.connection.queryResultCache.isExpired(savedQueryResultCacheOptions))\n return [2 /*return*/, JSON.parse(savedQueryResultCacheOptions.result)];\n _b.label = 2;\n case 2: return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 3:\n results = _b.sent();\n if (!(this.connection.queryResultCache && (this.expressionMap.cache || cacheOptions.alwaysEnabled))) return [3 /*break*/, 5];\n return [4 /*yield*/, this.connection.queryResultCache.storeInCache({\n identifier: this.expressionMap.cacheId,\n query: queryId,\n time: new Date().getTime(),\n duration: this.expressionMap.cacheDuration || cacheOptions.duration || 1000,\n result: JSON.stringify(results)\n }, savedQueryResultCacheOptions, queryRunner)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/, results];\n }\n });\n });\n };\n /**\n * Merges into expression map given expression map properties.\n */\n SelectQueryBuilder.prototype.mergeExpressionMap = function (expressionMap) {\n ObjectUtils.assign(this.expressionMap, expressionMap);\n return this;\n };\n /**\n * Normalizes a give number - converts to int if possible.\n */\n SelectQueryBuilder.prototype.normalizeNumber = function (num) {\n if (typeof num === \"number\" || num === undefined || num === null)\n return num;\n return Number(num);\n };\n /**\n * Creates a query builder used to execute sql queries inside this query builder.\n */\n SelectQueryBuilder.prototype.obtainQueryRunner = function () {\n return this.queryRunner || this.connection.createQueryRunner(\"slave\");\n };\n return SelectQueryBuilder;\n}(QueryBuilder));\nexport { SelectQueryBuilder };\n\n//# sourceMappingURL=SelectQueryBuilder.js.map\n","import { __read } from \"tslib\";\nimport { QueryBuilderUtils } from \"../QueryBuilderUtils\";\nimport { ObjectUtils } from \"../../util/ObjectUtils\";\n/**\n * Stores all join relation id attributes which will be used to build a JOIN query.\n */\nvar RelationIdAttribute = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationIdAttribute(queryExpressionMap, relationIdAttribute) {\n this.queryExpressionMap = queryExpressionMap;\n /**\n * Indicates if relation id should NOT be loaded as id map.\n */\n this.disableMixedMap = false;\n ObjectUtils.assign(this, relationIdAttribute || {});\n }\n Object.defineProperty(RelationIdAttribute.prototype, \"joinInverseSideMetadata\", {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n get: function () {\n return this.relation.inverseEntityMetadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"parentAlias\", {\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n return this.relationName.substr(0, this.relationName.indexOf(\".\"));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"relationPropertyPath\", {\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n return this.relationName.substr(this.relationName.indexOf(\".\") + 1);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"relation\", {\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n var relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias);\n var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath);\n if (!relation)\n throw new Error(\"Relation with property path \" + this.relationPropertyPath + \" in entity was not found.\");\n return relation;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"junctionAlias\", {\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get: function () {\n var _a = __read(this.relationName.split(\".\"), 2), parentAlias = _a[0], relationProperty = _a[1];\n return parentAlias + \"_\" + relationProperty + \"_rid\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"junctionMetadata\", {\n /**\n * Metadata of the joined entity.\n * If extra condition without entity was joined, then it will return undefined.\n */\n get: function () {\n return this.relation.junctionEntityMetadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"mapToPropertyParentAlias\", {\n get: function () {\n return this.mapToProperty.substr(0, this.mapToProperty.indexOf(\".\"));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationIdAttribute.prototype, \"mapToPropertyPropertyPath\", {\n get: function () {\n return this.mapToProperty.substr(this.mapToProperty.indexOf(\".\") + 1);\n },\n enumerable: false,\n configurable: true\n });\n return RelationIdAttribute;\n}());\nexport { RelationIdAttribute };\n\n//# sourceMappingURL=RelationIdAttribute.js.map\n","import { __read } from \"tslib\";\nimport { QueryBuilderUtils } from \"../QueryBuilderUtils\";\nimport { ObjectUtils } from \"../../util/ObjectUtils\";\nvar RelationCountAttribute = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationCountAttribute(expressionMap, relationCountAttribute) {\n this.expressionMap = expressionMap;\n ObjectUtils.assign(this, relationCountAttribute || {});\n }\n Object.defineProperty(RelationCountAttribute.prototype, \"joinInverseSideMetadata\", {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n get: function () {\n return this.relation.inverseEntityMetadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"parentAlias\", {\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(\"Given value must be a string representation of alias property\");\n return this.relationName.split(\".\")[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"relationProperty\", {\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(\"Given value is a string representation of alias property\");\n return this.relationName.split(\".\")[1];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"junctionAlias\", {\n get: function () {\n var _a = __read(this.relationName.split(\".\"), 2), parentAlias = _a[0], relationProperty = _a[1];\n return parentAlias + \"_\" + relationProperty + \"_rc\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"relation\", {\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(\"Given value is a string representation of alias property\");\n var _a = __read(this.relationName.split(\".\"), 2), parentAlias = _a[0], propertyPath = _a[1];\n var relationOwnerSelection = this.expressionMap.findAliasByName(parentAlias);\n var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(\"Relation with property path \" + propertyPath + \" in entity was not found.\");\n return relation;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"metadata\", {\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(\"Given value is a string representation of alias property\");\n var parentAlias = this.relationName.split(\".\")[0];\n var selection = this.expressionMap.findAliasByName(parentAlias);\n return selection.metadata;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RelationCountAttribute.prototype, \"mapToPropertyPropertyName\", {\n get: function () {\n return this.mapToProperty.split(\".\")[1];\n },\n enumerable: false,\n configurable: true\n });\n return RelationCountAttribute;\n}());\nexport { RelationCountAttribute };\n\n//# sourceMappingURL=RelationCountAttribute.js.map\n","import { __awaiter, __generator } from \"tslib\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\n/**\n * Updates entity with returning results in the entity insert and update operations.\n */\nvar ReturningResultsEntityUpdator = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ReturningResultsEntityUpdator(queryRunner, expressionMap) {\n this.queryRunner = queryRunner;\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Updates entities with a special columns after updation query execution.\n */\n ReturningResultsEntityUpdator.prototype.update = function (updateResult, entities) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.expressionMap.mainAlias.metadata;\n return [4 /*yield*/, Promise.all(entities.map(function (entity, entityIndex) { return __awaiter(_this, void 0, void 0, function () {\n var result, returningColumns, updationColumns, entityId, loadedReturningColumns;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.queryRunner.connection.driver.isReturningSqlSupported()) return [3 /*break*/, 1];\n if (this.queryRunner.connection.driver instanceof OracleDriver && Array.isArray(updateResult.raw) && this.expressionMap.extraReturningColumns.length > 0) {\n updateResult.raw = updateResult.raw.reduce(function (newRaw, rawItem, rawItemIndex) {\n newRaw[_this.expressionMap.extraReturningColumns[rawItemIndex].databaseName] = rawItem[0];\n return newRaw;\n }, {});\n }\n result = Array.isArray(updateResult.raw) ? updateResult.raw[entityIndex] : updateResult.raw;\n returningColumns = this.queryRunner.connection.driver.createGeneratedMap(metadata, result);\n if (returningColumns) {\n this.queryRunner.manager.merge(metadata.target, entity, returningColumns);\n updateResult.generatedMaps.push(returningColumns);\n }\n return [3 /*break*/, 3];\n case 1:\n updationColumns = this.getUpdationReturningColumns();\n if (!(updationColumns.length > 0)) return [3 /*break*/, 3];\n entityId = this.expressionMap.mainAlias.metadata.getEntityIdMap(entity);\n if (!entityId)\n throw new Error(\"Cannot update entity because entity id is not set in the entity.\");\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(metadata.primaryColumns.map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .addSelect(this.getUpdationReturningColumns().map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .from(metadata.target, metadata.targetName)\n .where(entityId)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties maight be overridden by merge process\n .getOne()];\n case 2:\n loadedReturningColumns = _a.sent();\n if (loadedReturningColumns) {\n this.queryRunner.manager.merge(metadata.target, entity, loadedReturningColumns);\n updateResult.generatedMaps.push(loadedReturningColumns);\n }\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Updates entities with a special columns after insertion query execution.\n */\n ReturningResultsEntityUpdator.prototype.insert = function (insertResult, entities) {\n return __awaiter(this, void 0, void 0, function () {\n var metadata, insertionColumns, generatedMaps, entityIds, returningResult_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n metadata = this.expressionMap.mainAlias.metadata;\n insertionColumns = this.getInsertionReturningColumns();\n generatedMaps = entities.map(function (entity, entityIndex) {\n if (_this.queryRunner.connection.driver instanceof OracleDriver && Array.isArray(insertResult.raw) && _this.expressionMap.extraReturningColumns.length > 0) {\n insertResult.raw = insertResult.raw.reduce(function (newRaw, rawItem, rawItemIndex) {\n newRaw[_this.expressionMap.extraReturningColumns[rawItemIndex].databaseName] = rawItem[0];\n return newRaw;\n }, {});\n }\n // get all values generated by a database for us\n var result = Array.isArray(insertResult.raw) ? insertResult.raw[entityIndex] : insertResult.raw;\n var generatedMap = _this.queryRunner.connection.driver.createGeneratedMap(metadata, result, entityIndex, entities.length) || {};\n // if database does not support uuid generation we need to get uuid values\n // generated by orm and set them to the generatedMap\n if (_this.queryRunner.connection.driver.isUUIDGenerationSupported() === false) {\n metadata.generatedColumns.forEach(function (generatedColumn) {\n if (generatedColumn.generationStrategy === \"uuid\") {\n // uuid can be defined by user in a model, that's why first we get it\n var uuid = generatedColumn.getEntityValue(entity);\n if (!uuid) // if it was not defined by a user then InsertQueryBuilder generates it by its own, get this generated uuid value\n uuid = _this.expressionMap.nativeParameters[\"uuid_\" + generatedColumn.databaseName + entityIndex];\n OrmUtils.mergeDeep(generatedMap, generatedColumn.createValueMap(uuid));\n }\n });\n }\n _this.queryRunner.manager.merge(metadata.target, entity, generatedMap); // todo: this should not be here, but problem with below line\n return generatedMap;\n });\n if (!(this.queryRunner.connection.driver.isReturningSqlSupported() === false && insertionColumns.length > 0)) return [3 /*break*/, 2];\n entityIds = entities.map(function (entity) {\n var entityId = metadata.getEntityIdMap(entity);\n // We have to check for an empty `entityId` - if we don't, the query against the database\n // effectively drops the `where` clause entirely and the first record will be returned -\n // not what we want at all.\n if (!entityId)\n throw new Error(\"Cannot update entity because entity id is not set in the entity.\");\n return entityId;\n });\n return [4 /*yield*/, this.queryRunner.manager\n .createQueryBuilder()\n .select(metadata.primaryColumns.map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .addSelect(insertionColumns.map(function (column) { return metadata.targetName + \".\" + column.propertyPath; }))\n .from(metadata.target, metadata.targetName)\n .where(entityIds)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties maight be overridden by merge process\n .getMany()];\n case 1:\n returningResult_1 = _a.sent();\n entities.forEach(function (entity, entityIndex) {\n _this.queryRunner.manager.merge(metadata.target, generatedMaps[entityIndex], returningResult_1[entityIndex]);\n });\n _a.label = 2;\n case 2:\n entities.forEach(function (entity, entityIndex) {\n var entityId = metadata.getEntityIdMap(entity);\n insertResult.identifiers.push(entityId);\n insertResult.generatedMaps.push(generatedMaps[entityIndex]);\n _this.queryRunner.manager.merge(_this.expressionMap.mainAlias.metadata.target, entity, generatedMaps[entityIndex], generatedMaps[entityIndex]); // todo: why twice?!\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Columns we need to be returned from the database when we insert entity.\n */\n ReturningResultsEntityUpdator.prototype.getInsertionReturningColumns = function () {\n // for databases which support returning statement we need to return extra columns like id\n // for other databases we don't need to return id column since its returned by a driver already\n var needToCheckGenerated = this.queryRunner.connection.driver.isReturningSqlSupported();\n // filter out the columns of which we need database inserted values to update our entity\n return this.expressionMap.mainAlias.metadata.columns.filter(function (column) {\n return column.default !== undefined ||\n (needToCheckGenerated && column.isGenerated) ||\n column.isCreateDate ||\n column.isUpdateDate ||\n column.isDeleteDate ||\n column.isVersion;\n });\n };\n /**\n * Columns we need to be returned from the database when we update entity.\n */\n ReturningResultsEntityUpdator.prototype.getUpdationReturningColumns = function () {\n return this.expressionMap.mainAlias.metadata.columns.filter(function (column) {\n return column.isUpdateDate || column.isVersion;\n });\n };\n return ReturningResultsEntityUpdator;\n}());\nexport { ReturningResultsEntityUpdator };\n\n//# sourceMappingURL=ReturningResultsEntityUpdator.js.map\n","var TableUtils = /** @class */ (function () {\n function TableUtils() {\n }\n TableUtils.createTableColumnOptions = function (columnMetadata, driver) {\n return {\n name: columnMetadata.databaseName,\n length: columnMetadata.length,\n width: columnMetadata.width,\n charset: columnMetadata.charset,\n collation: columnMetadata.collation,\n precision: columnMetadata.precision,\n scale: columnMetadata.scale,\n zerofill: columnMetadata.zerofill,\n unsigned: columnMetadata.unsigned,\n asExpression: columnMetadata.asExpression,\n generatedType: columnMetadata.generatedType,\n default: driver.normalizeDefault(columnMetadata),\n onUpdate: columnMetadata.onUpdate,\n comment: columnMetadata.comment,\n isGenerated: columnMetadata.isGenerated,\n generationStrategy: columnMetadata.generationStrategy,\n isNullable: columnMetadata.isNullable,\n type: driver.normalizeType(columnMetadata),\n isPrimary: columnMetadata.isPrimary,\n isUnique: driver.normalizeIsUnique(columnMetadata),\n isArray: columnMetadata.isArray || false,\n enum: columnMetadata.enum ? columnMetadata.enum.map(function (val) { return val + \"\"; }) : columnMetadata.enum,\n enumName: columnMetadata.enumName,\n spatialFeatureType: columnMetadata.spatialFeatureType,\n srid: columnMetadata.srid\n };\n };\n return TableUtils;\n}());\nexport { TableUtils };\n\n//# sourceMappingURL=TableUtils.js.map\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserSite = void 0;\nconst shared_1 = require(\"js-helper/dist/shared\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst UserManager_1 = require(\"../UserManager\");\nconst LoginSite_1 = require(\"../Site/LoginSite\");\nconst NotAllowedSite_1 = require(\"../Site/NotAllowedSite\");\nclass UserSite extends client_1.DelegateSite {\n constructor(site, access, allowOfflineAccess) {\n super(site);\n this._access = access;\n this._allowOfflineAccess = shared_1.Helper.nonNull(allowOfflineAccess, false);\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield UserManager_1.UserManager.getInstance().waitForGetMe();\n if (yield this._checkRights()) {\n let res = yield _super.onConstruct.call(this, constructParameters);\n UserManager_1.UserManager.getInstance().addLoginChangeCallback(() => __awaiter(this, void 0, void 0, function* () {\n yield this._checkRights();\n }), false);\n return res;\n }\n });\n }\n _checkRights() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!(UserManager_1.UserManager.getInstance().hasAccess(this._access) || (this._allowOfflineAccess && (yield UserManager_1.UserManager.getInstance().hasOfflineAccess(this._access))))) {\n // if (this.isShowing() && !this.isDestroying()) {\n // await this.startSite(NotAllowedSite);\n // }\n if (UserManager_1.UserManager.getInstance().isOnline() && !UserManager_1.UserManager.getInstance().isLoggedIn() && !(this._site instanceof LoginSite_1.LoginSite)) {\n this.startSite(LoginSite_1.LoginSite, {\n deepLink: this._site._siteManager.getDeepLinkFor(this._site),\n args: this._site.getParameters()\n });\n }\n else if (this._site._siteManager.getCurrentSite() === this._site && !this.isDestroying()) {\n new client_1.Toast(\"wrong rights\").show();\n yield this.startSite(NotAllowedSite_1.NotAllowedSite);\n }\n if (!this.isDestroying()) {\n yield this.finish();\n }\n return false;\n }\n return true;\n });\n }\n onStart(args) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (yield this._checkRights()) {\n yield _super.onStart.call(this, args);\n }\n });\n }\n}\nexports.UserSite = UserSite;\n//# sourceMappingURL=UserSite.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./shared/Translator\"), exports);\n//# sourceMappingURL=shared.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EasySyncClientDb = void 0;\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nconst ClientModel_1 = require(\"./ClientModel\");\nconst EasySyncBaseModel_1 = require(\"../shared/EasySyncBaseModel\");\nconst EasySyncPartialModel_1 = require(\"../shared/EasySyncPartialModel\");\nconst ClientPartialModel_1 = require(\"./ClientPartialModel\");\nconst FileMedium_1 = require(\"../shared/FileMedium\");\nconst ClientFileMedium_1 = require(\"./ClientFileMedium\");\nclass EasySyncClientDb extends cordova_sites_database_1.BaseDatabase {\n constructor(dbName) {\n super(dbName || \"EasySync\");\n }\n _createConnectionOptions(database) {\n JSObject.setPrototypeOf(EasySyncBaseModel_1.EasySyncBaseModel, ClientModel_1.ClientModel);\n JSObject.setPrototypeOf(EasySyncPartialModel_1.EasySyncPartialModel, ClientPartialModel_1.ClientPartialModel);\n JSObject.setPrototypeOf(EasySyncBaseModel_1.EasySyncBaseModel.prototype, ClientModel_1.ClientModel.prototype);\n JSObject.setPrototypeOf(EasySyncPartialModel_1.EasySyncPartialModel.prototype, ClientPartialModel_1.ClientPartialModel.prototype);\n JSObject.setPrototypeOf(FileMedium_1.FileMedium, ClientFileMedium_1.ClientFileMedium);\n JSObject.setPrototypeOf(FileMedium_1.FileMedium.prototype, ClientFileMedium_1.ClientFileMedium.prototype);\n let options = super._createConnectionOptions(database);\n options[\"migrationsTableName\"] = \"migrations\";\n return options;\n }\n}\nexports.EasySyncClientDb = EasySyncClientDb;\nEasySyncClientDb.BASE_MODEL = null;\nclient_1.App.addInitialization(() => __awaiter(void 0, void 0, void 0, function* () {\n yield EasySyncClientDb.getInstance()._connectionPromise.catch(function (e) {\n if (typeof EasySyncClientDb.errorListener === \"function\") {\n return EasySyncClientDb.errorListener(...arguments);\n }\n else {\n throw (e);\n }\n });\n}));\n//# sourceMappingURL=EasySyncClientDb.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LastSyncDates = void 0;\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nclass LastSyncDates extends cordova_sites_database_1.BaseModel {\n constructor() {\n super();\n this.model = \"\";\n this.lastSynced = 0;\n this.where = {};\n }\n getModel() {\n return this.model;\n }\n setModel(model) {\n this.model = model;\n }\n getLastSynced() {\n return this.lastSynced;\n }\n setLastSynced(lastSynced) {\n this.lastSynced = lastSynced;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"model\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, nullable: true };\n columns[\"lastSynced\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER, nullable: true };\n columns[\"where\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.SIMPLE_JSON };\n return columns;\n }\n}\nexports.LastSyncDates = LastSyncDates;\nLastSyncDates.SCHEMA_NAME = \"easy-sync-last-sync-dates\";\ncordova_sites_database_1.BaseDatabase.addModel(LastSyncDates);\n//# sourceMappingURL=LastSyncDates.js.map","import { __extends } from \"tslib\";\n/**\n * Thrown when a version check on an object that uses optimistic locking through a version field fails.\n */\nvar OptimisticLockVersionMismatchError = /** @class */ (function (_super) {\n __extends(OptimisticLockVersionMismatchError, _super);\n function OptimisticLockVersionMismatchError(entity, expectedVersion, actualVersion) {\n var _this = _super.call(this) || this;\n _this.name = \"OptimisticLockVersionMismatchError\";\n Object.setPrototypeOf(_this, OptimisticLockVersionMismatchError.prototype);\n _this.message = \"The optimistic lock on entity \" + entity + \" failed, version \" + expectedVersion + \" was expected, but is actually \" + actualVersion + \".\";\n return _this;\n }\n return OptimisticLockVersionMismatchError;\n}(Error));\nexport { OptimisticLockVersionMismatchError };\n\n//# sourceMappingURL=OptimisticLockVersionMismatchError.js.map\n","/**\n * Result object returned by InsertQueryBuilder execution.\n */\nvar InsertResult = /** @class */ (function () {\n function InsertResult() {\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n this.identifiers = [];\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n this.generatedMaps = [];\n }\n return InsertResult;\n}());\nexport { InsertResult };\n\n//# sourceMappingURL=InsertResult.js.map\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$
') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractSite = void 0;\nconst Context_1 = require(\"./Context\");\nconst Helper_1 = require(\"../Legacy/Helper\");\nconst Translator_1 = require(\"../Translator\");\nconst ViewInflater_1 = require(\"../ViewInflater\");\nconst EventManager_1 = require(\"../Legacy/EventManager/EventManager\");\n/**\n * Basisklasse für eine Seite\n */\nclass AbstractSite extends Context_1.Context {\n /**\n * Construktor für eine Seite, sollte überladen werden und view sollte definiert werden. Seitenkonstruktoren bekommen NUR den siteManager übergebn\n * @param siteManager\n * @param view\n */\n constructor(siteManager, view) {\n super(view);\n this._isDestroying = false;\n this._isDestroying = false;\n //Promise und Resolver, welches erfüllt wird, wenn Seite beendet wird\n this._finishPromiseResolver = {\n resolve: null,\n reject: null\n };\n this._finishPromise = new Promise((resolve, reject) => {\n this._finishPromiseResolver = { resolve: resolve, reject: reject };\n });\n //Promise, welches erfüllt wird, wenn onConstruct-Promsise erfüllt wurde. Wird für onDestroy gebraucht\n this._onConstructPromise = null;\n this._parameters = {};\n this._result = null;\n this._siteManager = siteManager;\n this._title = {\n element: null,\n text: null\n };\n this._loadingSymbol = null;\n //Wird zum speichern der zugehörigen HistoryID genutzt\n this._historyId = null;\n }\n getTitle() {\n return this._title;\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n this.setParameters(Helper_1.Helper.nonNull(constructParameters, {}));\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_CONSTRUCT, {\n site: this, params: constructParameters\n });\n return res;\n });\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onStart.call(this, pauseArguments);\n this._updateTitle();\n this.updateUrl(this._parameters);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_START, {\n site: this, params: pauseArguments\n });\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_VIEW_LOADED, {\n site: this\n });\n return res;\n });\n }\n onPause() {\n const _super = Object.create(null, {\n onPause: { get: () => super.onPause }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onPause.call(this);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_PAUSE, {\n site: this\n });\n return res;\n });\n }\n onDestroy() {\n const _super = Object.create(null, {\n onDestroy: { get: () => super.onDestroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onDestroy.call(this);\n EventManager_1.EventManager.trigger(AbstractSite.EVENT.ON_DESTROY, {\n site: this\n });\n return res;\n });\n }\n /**\n * Setzt den Titel der Website\n *\n * @param titleElement\n * @param title\n */\n setTitle(titleElement, title) {\n if (typeof titleElement === \"string\") {\n let args = title;\n title = titleElement;\n titleElement = Translator_1.Translator.makePersistentTranslation(title, args);\n }\n title = Helper_1.Helper.nonNull(title, titleElement.textContent);\n this._title = {\n element: titleElement,\n text: title\n };\n this._updateTitle();\n }\n setParameter(name, value) {\n this._parameters[name] = value;\n this.updateUrl(this._parameters);\n }\n setParameters(parameters) {\n this._parameters = parameters;\n this.updateUrl(this._parameters);\n }\n getParameters() {\n return this._parameters;\n }\n showLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNull(this._loadingSymbol)) {\n this._loadingSymbol = ViewInflater_1.ViewInflater.createLoadingSymbol(\"overlay\");\n let view = yield this.getViewPromise();\n if (Helper_1.Helper.isNotNull(this._loadingSymbol)) {\n view.appendChild(this._loadingSymbol);\n }\n }\n });\n }\n removeLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNotNull(this._loadingSymbol)) {\n this._loadingSymbol.remove();\n this._loadingSymbol = null;\n }\n });\n }\n onBeforeUnload(e) {\n return null;\n }\n /**\n * Updatet den Title der Webseite\n * @protected\n */\n _updateTitle() {\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this._siteManager.updateTitle(this._title.text);\n }\n }\n updateUrl(args) {\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this._siteManager.updateUrl(this, args);\n }\n }\n /**\n * Startet eine andere Seite mit den angegebenen Parametern\n *\n * @param site\n * @param args\n * @returns {*|Promise<*>}\n */\n startSite(site, args) {\n return this._siteManager.startSite(site, args);\n }\n /**\n * Alias für\n * this.startSite(...);\n * this.finish(...);\n *\n * @param site\n * @param args\n * @param result\n * @returns {*|Promise<*>}\n */\n finishAndStartSite(site, args, result) {\n let res = this.startSite(site, args);\n this.finish(result);\n return res;\n }\n /**\n * Beendet die aktuelle Seite. Kann ein Ergebnis setzen\n *\n * @param result\n */\n finish(result) {\n if (!(this._isDestroying || this._state === Context_1.Context.STATE_DESTROYED)) {\n this._isDestroying = true;\n if (Helper_1.Helper.isNotNull(result)) {\n this.setResult(result);\n }\n return this._siteManager.endSite(this);\n }\n }\n goBack() {\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this._siteManager.goBack();\n }\n }\n /**\n * Wird aufgerufen, falls zurück gedrückt wird. Gib false zurück, um das beenden der Seite zu verhindern\n */\n onBackPressed() {\n }\n /**\n * TODO Einbauen\n */\n onMenuPressed() {\n }\n /**\n * TODO Einbauen\n */\n onSearchPressed() {\n }\n /**\n * Gibt das FinishPromise zurück\n * @returns {Promise}\n */\n getFinishPromise() {\n return this._finishPromise;\n }\n /**\n * Setzt das Resultat. Letztes Setzen gilt\n * @param result\n */\n setResult(result) {\n this._result = result;\n }\n /**\n * Gibt den FinishResolver zurück. Genutzt, um FinishPromise zu resolven order rejecten\n * @returns {*}\n */\n getFinishResolver() {\n return this._finishPromiseResolver;\n }\n addEventListener(siteEvent, listener) {\n return EventManager_1.EventManager.getInstance().addListener(siteEvent, data => {\n if (data.site && data.site instanceof this.constructor) {\n listener(data);\n }\n });\n }\n isDestroying() {\n return this._isDestroying;\n }\n}\nexports.AbstractSite = AbstractSite;\nAbstractSite.EVENT = {\n ON_CONSTRUCT: \"abstract-site-on-construct\",\n ON_VIEW_LOADED: \"abstract-site-on-view-loaded\",\n ON_START: \"abstract-site-on-start\",\n ON_PAUSE: \"abstract-site-on-pause\",\n ON_DESTROY: \"abstract-site-on-destroy\"\n};\n//# sourceMappingURL=AbstractSite.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _typeorm = require(\"typeorm\");\nlet typeorm = _typeorm;\nclass BaseDatabase {\n constructor(database) {\n let options = this._createConnectionOptions(database);\n this._connectionPromise = this._createConnection(options);\n }\n _createConnection(options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (options.type === \"sqljs\") {\n //wait for SQL to be initialized\n window[\"SQL\"] = yield window[\"initSqlJs\"]();\n }\n return typeorm.createConnection(options).catch(e => {\n console.error(e);\n return Promise.reject(e);\n });\n });\n }\n _createConnectionOptions(database) {\n let options = BaseDatabase.CONNECTION_OPTIONS;\n if (typeof device === \"undefined\" || device.platform !== \"browser\") {\n options.type = \"cordova\";\n options.database = database;\n }\n else {\n let saveTimeout = null;\n options.type = \"sqljs\";\n options.location = database;\n options.autoSave = true;\n options.useLocalForage = true;\n //Deactivated delay of saving since PRAGMA foreign_keys = ON is not saved with delay (why ever!)\n // options.autoSaveCallback = function () {\n // clearTimeout(saveTimeout);\n // saveTimeout = setTimeout(() => {\n // typeorm.getSqljsManager().saveDatabase();\n // }, 150);\n // }\n }\n options.entities = this.getEntityDefinitions();\n // options.migrations = this.constructor._migrations;\n return options;\n }\n getEntityDefinitions() {\n let entities = [];\n Object.keys(BaseDatabase._models).forEach(modelName => {\n BaseDatabase._models[modelName]._database = this;\n entities.push(new typeorm.EntitySchema(BaseDatabase._models[modelName].getSchemaDefinition()));\n });\n // console.log(\"entities\", entities);\n return entities;\n }\n saveEntity(entity) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = null;\n if (Array.isArray(entity)) {\n if (entity.length === 0) {\n return entity;\n }\n repository = yield this._getRepository(entity[0].constructor);\n }\n else {\n repository = yield this._getRepository(entity.constructor);\n }\n return repository.save(entity);\n });\n }\n static _buildQuery(where, order, limit, offset, relations) {\n let query = {};\n if (where) {\n query[\"where\"] = where;\n }\n if (order) {\n query[\"order\"] = order;\n }\n if (limit) {\n query[\"take\"] = limit;\n }\n if (offset) {\n query[\"skip\"] = offset;\n }\n if (relations) {\n query[\"relations\"] = relations;\n }\n return query;\n }\n static _setLoaded(models) {\n return __awaiter(this, void 0, void 0, function* () {\n models = yield models;\n if (models === null || models === undefined) {\n return null;\n }\n let isArray = Array.isArray(models);\n if (!isArray) {\n models = [models];\n }\n models.forEach(models => models.setLoaded(true));\n return (isArray) ? models : models[0];\n });\n }\n findEntities(model, where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.find(BaseDatabase._buildQuery(where, order, limit, offset, relations)));\n });\n }\n findAndCountEntities(model, where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findAndCount(BaseDatabase._buildQuery(where, order, limit, offset, relations)));\n });\n }\n findOneEntity(model, where, order, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findOne(BaseDatabase._buildQuery(where, order, undefined, offset, relations)));\n });\n }\n findById(model, id, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findOne(id, BaseDatabase._buildQuery(undefined, undefined, undefined, undefined, relations)));\n });\n }\n findByIds(model, ids, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return BaseDatabase._setLoaded(repository.findByIds(ids, BaseDatabase._buildQuery(undefined, undefined, undefined, undefined, relations)));\n });\n }\n clearModel(model) {\n return __awaiter(this, void 0, void 0, function* () {\n let repository = yield this._getRepository(model);\n return repository.clear();\n });\n }\n _getRepository(model) {\n return __awaiter(this, void 0, void 0, function* () {\n let connection = yield this._connectionPromise;\n return connection.getRepository(model);\n });\n }\n createQueryBuilder(model) {\n return __awaiter(this, void 0, void 0, function* () {\n if (model) {\n let repo = yield this._getRepository(model);\n return repo.createQueryBuilder(model.getSchemaName());\n }\n else {\n let connection = yield this._connectionPromise;\n return connection.createQueryBuilder();\n }\n });\n }\n createQueryRunner() {\n return __awaiter(this, void 0, void 0, function* () {\n let connection = yield this._connectionPromise;\n return connection.createQueryRunner();\n });\n }\n deleteEntity(entity, model) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Array.isArray(entity)) {\n if (entity.length === 0) {\n return entity;\n }\n if (!model) {\n model = entity[0].constructor;\n }\n if (typeof entity[0] !== \"number\") {\n let ids = [];\n entity.forEach(ent => ids.push(ent.id));\n entity = ids;\n }\n }\n else {\n if (!model) {\n model = entity.constructor;\n }\n if (typeof entity !== \"number\") {\n entity = entity.id;\n }\n }\n let repository = yield this._getRepository(model);\n return repository.delete(entity);\n });\n }\n rawQuery(sql, params) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this._connectionPromise).query(sql, params);\n });\n }\n waitForConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._connectionPromise;\n });\n }\n /**\n * @return {BaseDatabase}\n */\n static getInstance() {\n if (!this.instance) {\n this.instance = new this();\n }\n return this.instance;\n }\n static addModel(model) {\n BaseDatabase._models[model.getSchemaName()] = model;\n }\n static getModel(modelName) {\n if (modelName) {\n return this._models[modelName];\n }\n else {\n return this._models;\n }\n }\n}\nexports.BaseDatabase = BaseDatabase;\nBaseDatabase._models = {};\nBaseDatabase.CONNECTION_OPTIONS = {\n location: \"default\",\n // autoSave: true,\n logging: [\"error\", \"warn\"],\n synchronize: true,\n};\nBaseDatabase.TYPES = {\n INTEGER: \"int\",\n FLOAT: \"float\",\n DATE: \"datetime\",\n STRING: \"varchar\",\n TEXT: \"text\",\n MEDIUMTEXT: \"mediumtext\",\n BOOLEAN: \"boolean\",\n JSON: \"json\",\n SIMPLE_JSON: \"simple-json\",\n MY_JSON: \"my-json\",\n};\n//# sourceMappingURL=BaseDatabase.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoginSite = void 0;\nconst UserSite_1 = require(\"../Context/UserSite\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst view = require(\"./../../html/sites/loginSite.html\");\nconst StartUserSiteMenuAction_1 = require(\"../MenuAction/StartUserSiteMenuAction\");\nconst UserManager_1 = require(\"../UserManager\");\nconst UserMenuAction_1 = require(\"../MenuAction/UserMenuAction\");\nconst ForgotPasswordSite_1 = require(\"./ForgotPasswordSite\");\nclass LoginSite extends client_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, LoginSite.ACCESS));\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n let form = new client_1.Form(this.findBy(\"#login-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n // await this.showLoadingSymbol();\n if (yield UserManager_1.UserManager.getInstance().login(data[\"email\"], data[\"password\"], client_1.Helper.isNotNull(data[\"saveLogin\"]))) {\n new client_1.Toast(\"welcome back\").show();\n yield this.finish();\n }\n else {\n form.setErrors({\n \"email\": \"email or password is wrong\"\n });\n // await this.removeLoadingSymbol();\n }\n }));\n let listener = () => form.clearErrors();\n this.findBy(\"#login-form [name=email]\").addEventListener(\"keydown\", listener);\n this.findBy(\"#login-form [name=password]\").addEventListener(\"keydown\", listener);\n this.findBy(\"#forgot-pw\").addEventListener(\"click\", () => __awaiter(this, void 0, void 0, function* () {\n this.startSite(ForgotPasswordSite_1.ForgotPasswordSite);\n }));\n return res;\n });\n }\n}\nexports.LoginSite = LoginSite;\nLoginSite.ACCESS = \"loggedOut\";\nLoginSite.LOGOUT_ACCESS = \"loggedIn\";\nLoginSite.ADD_LOGIN_ACTION = true;\nLoginSite.ADD_LOGOUT_ACTION = true;\nclient_1.App.addInitialization(app => {\n if (LoginSite.ADD_LOGIN_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new StartUserSiteMenuAction_1.StartUserSiteMenuAction(\"login\", LoginSite.ACCESS, LoginSite));\n }\n if (LoginSite.ADD_LOGOUT_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new UserMenuAction_1.UserMenuAction(\"logout\", LoginSite.LOGOUT_ACCESS, () => __awaiter(void 0, void 0, void 0, function* () {\n yield UserManager_1.UserManager.getInstance().logout();\n })));\n }\n app.addDeepLink(\"login\", LoginSite);\n});\n//# sourceMappingURL=LoginSite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserMenuAction = void 0;\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst UserManager_1 = require(\"../UserManager\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nclass UserMenuAction extends client_1.MenuAction {\n constructor(name, access, action, showFor, order, icon) {\n super(name, action, showFor, order, icon);\n this._access = access;\n this._loginChangedCallbackId = UserManager_1.UserManager.getInstance().addLoginChangeCallback(() => {\n this.redraw();\n });\n }\n isVisible() {\n return (super.isVisible() && UserManager_1.UserManager.getInstance().hasAccess(this._access));\n }\n isActivated() {\n return (super.isActivated() && UserManager_1.UserManager.getInstance().hasAccess(this._access));\n }\n copy(action) {\n let copiedAction = Helper_1.Helper.nonNull(action, new UserMenuAction());\n copiedAction._access = this._access;\n return super.copy(copiedAction);\n }\n}\nexports.UserMenuAction = UserMenuAction;\n//# sourceMappingURL=UserMenuAction.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientFileMedium = void 0;\nconst EasySyncBaseModel_1 = require(\"../shared/EasySyncBaseModel\");\nconst FileTransferPromise_1 = require(\"./FileWriter/FileTransferPromise\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst FilePromise_1 = require(\"./FileWriter/FilePromise\");\nclass ClientFileMedium extends EasySyncBaseModel_1.EasySyncBaseModel {\n constructor() {\n super(...arguments);\n this.saveOffline = true;\n this._isDownloaded = true;\n }\n setLoaded(isLoaded) {\n // @ts-ignore\n super.setLoaded(isLoaded);\n this._isDownloaded = true;\n FilePromise_1.FilePromise.open(this.src, { create: false }).then(() => this._isDownloaded = true).catch(e => {\n console.log(\"not downloaded, yet!\");\n this._isDownloaded = false;\n ClientFileMedium._handleImages(this);\n });\n }\n save() {\n const _super = Object.create(null, {\n save: { get: () => super.save }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield ClientFileMedium._handleImages(this);\n return _super.save.call(this);\n });\n }\n static saveMany(entities) {\n const _super = Object.create(null, {\n saveMany: { get: () => super.saveMany }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield ClientFileMedium._handleImages(entities);\n return _super.saveMany.call(this, entities);\n });\n }\n static _handleImages(entities) {\n return __awaiter(this, void 0, void 0, function* () {\n let isArray = Array.isArray(entities);\n if (!isArray) {\n entities = [entities];\n }\n yield Helper_1.Helper.asyncForEach(entities, (entity) => __awaiter(this, void 0, void 0, function* () {\n if (entity.saveOffline && device.platform !== \"browser\" && !entity.src.startsWith(\"data\") && !entity.src.startsWith(\"http\") && !entity.src.startsWith(\"//\")) {\n yield new FileTransferPromise_1.FileTransferPromise(entity.getServerUrl(false), entity.src).download().catch(e => console.log(e));\n entity._isDownloaded = true;\n }\n }), true);\n });\n }\n}\nexports.ClientFileMedium = ClientFileMedium;\n//# sourceMappingURL=ClientFileMedium.js.map","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to create entity id map from the mixed id value,\n * but id value is a single value when entity requires multiple values.\n */\nvar CannotCreateEntityIdMapError = /** @class */ (function (_super) {\n __extends(CannotCreateEntityIdMapError, _super);\n function CannotCreateEntityIdMapError(metadata, id) {\n var _this = _super.call(this) || this;\n _this.name = \"CannotCreateEntityIdMapError\";\n Object.setPrototypeOf(_this, CannotCreateEntityIdMapError.prototype);\n var objectExample = metadata.primaryColumns.reduce(function (object, column, index) {\n column.setEntityValue(object, index + 1);\n return object;\n }, {});\n _this.message = \"Cannot use given entity id \\\"\" + id + \"\\\" because \\\"\" + metadata.targetName + \"\\\" contains multiple primary columns, you must provide object in following form: \" + JSON.stringify(objectExample) + \" as an id.\";\n return _this;\n }\n return CannotCreateEntityIdMapError;\n}(Error));\nexport { CannotCreateEntityIdMapError };\n\n//# sourceMappingURL=CannotCreateEntityIdMapError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when a transaction is required for the current operation, but there is none open.\n */\nvar PessimisticLockTransactionRequiredError = /** @class */ (function (_super) {\n __extends(PessimisticLockTransactionRequiredError, _super);\n function PessimisticLockTransactionRequiredError() {\n var _this = _super.call(this) || this;\n _this.name = \"PessimisticLockTransactionRequiredError\";\n Object.setPrototypeOf(_this, PessimisticLockTransactionRequiredError.prototype);\n _this.message = \"An open transaction is required for pessimistic lock.\";\n return _this;\n }\n return PessimisticLockTransactionRequiredError;\n}(Error));\nexport { PessimisticLockTransactionRequiredError };\n\n//# sourceMappingURL=PessimisticLockTransactionRequiredError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when an entity does not have no version and no update date column.\n */\nvar NoVersionOrUpdateDateColumnError = /** @class */ (function (_super) {\n __extends(NoVersionOrUpdateDateColumnError, _super);\n function NoVersionOrUpdateDateColumnError(entity) {\n var _this = _super.call(this) || this;\n _this.name = \"NoVersionOrUpdateDateColumnError\";\n Object.setPrototypeOf(_this, NoVersionOrUpdateDateColumnError.prototype);\n _this.message = \"Entity \" + entity + \" does not have version or update date columns.\";\n return _this;\n }\n return NoVersionOrUpdateDateColumnError;\n}(Error));\nexport { NoVersionOrUpdateDateColumnError };\n\n//# sourceMappingURL=NoVersionOrUpdateDateColumnError.js.map\n","/**\n * Syntax sugar.\n * Allows to use brackets in WHERE expressions for better syntax.\n */\nvar Brackets = /** @class */ (function () {\n /**\n * Given WHERE query builder that will build a WHERE expression that will be taken into brackets.\n */\n function Brackets(whereFactory) {\n this.whereFactory = whereFactory;\n }\n return Brackets;\n}());\nexport { Brackets };\n\n//# sourceMappingURL=Brackets.js.map\n","import { FindOperator } from \"../FindOperator\";\n/**\n * Find Options Operator.\n * Example: { someField: In([...]) }\n */\nexport function In(value) {\n return new FindOperator(\"in\", value, true, true);\n}\n\n//# sourceMappingURL=In.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to insert using QueryBuilder but do not specify what to insert.\n */\nvar InsertValuesMissingError = /** @class */ (function (_super) {\n __extends(InsertValuesMissingError, _super);\n function InsertValuesMissingError() {\n var _this = _super.call(this) || this;\n _this.name = \"InsertValuesMissingError\";\n Object.setPrototypeOf(_this, InsertValuesMissingError.prototype);\n _this.message = \"Cannot perform insert query because values are not defined. Call \\\"qb.values(...)\\\" method to specify inserted values.\";\n return _this;\n }\n return InsertValuesMissingError;\n}(Error));\nexport { InsertValuesMissingError };\n\n//# sourceMappingURL=InsertValuesMissingError.js.map\n","/**\n * Result object returned by DeleteQueryBuilder execution.\n */\nvar DeleteResult = /** @class */ (function () {\n function DeleteResult() {\n }\n return DeleteResult;\n}());\nexport { DeleteResult };\n\n//# sourceMappingURL=DeleteResult.js.map\n","import { __extends } from \"tslib\";\n/**\n */\nvar MissingDeleteDateColumnError = /** @class */ (function (_super) {\n __extends(MissingDeleteDateColumnError, _super);\n function MissingDeleteDateColumnError(entityMetadata) {\n var _this = _super.call(this) || this;\n _this.name = \"MissingDeleteDateColumnError\";\n Object.setPrototypeOf(_this, MissingDeleteDateColumnError.prototype);\n _this.message = \"Entity \\\"\" + entityMetadata.name + \"\\\" does not have delete date columns.\";\n return _this;\n }\n return MissingDeleteDateColumnError;\n}(Error));\nexport { MissingDeleteDateColumnError };\n\n//# sourceMappingURL=MissingDeleteDateColumnError.js.map\n","import { __extends } from \"tslib\";\n/**\n * Thrown when user tries to build SELECT query using OFFSET without LIMIT applied but database does not support it.\n*/\nvar OffsetWithoutLimitNotSupportedError = /** @class */ (function (_super) {\n __extends(OffsetWithoutLimitNotSupportedError, _super);\n function OffsetWithoutLimitNotSupportedError() {\n var _this = _super.call(this) || this;\n _this.name = \"OffsetWithoutLimitNotSupportedError\";\n Object.setPrototypeOf(_this, OffsetWithoutLimitNotSupportedError.prototype);\n _this.message = \"RDBMS does not support OFFSET without LIMIT in SELECT statements. You must use limit in conjunction with offset function (or take in conjunction with skip function if you are using pagination).\";\n return _this;\n }\n return OffsetWithoutLimitNotSupportedError;\n}(Error));\nexport { OffsetWithoutLimitNotSupportedError };\n\n//# sourceMappingURL=OffsetWithoutLimitNotSupportedError.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NavbarFragment = void 0;\nconst AbstractFragment_1 = require(\"../AbstractFragment\");\nconst defaultViewNavbar = require(\"../../../html/siteTemplates/navbar.html\");\nconst MenuAction_1 = require(\"./MenuAction/MenuAction\");\nconst Helper_1 = require(\"../../Legacy/Helper\");\nconst Context_1 = require(\"../Context\");\nconst Menu_1 = require(\"./Menu\");\nconst OpenSubmenuAction_1 = require(\"./MenuAction/OpenSubmenuAction\");\nconst DropdownRenderer_1 = require(\"./Renderer/DropdownRenderer\");\nconst AccordionRenderer_1 = require(\"./Renderer/AccordionRenderer\");\nconst ColorIndicator_1 = require(\"../../ColorIndicator/ColorIndicator\");\nconst App_1 = require(\"../../App\");\n/**\n * Fragment, welches ein Menü in der Navbar anzeigt und hinzufügt.\n *\n * Technisch gesehen wird das gleiche Menü zwei mal gerendert und hinzugefügt. Einmal das Menü in der Navbar, welches\n * immer sichtbar ist und einmal das versteckte Menü, welches durch einen Toggle-Button angezeigt werden kann.\n * Dabei hat jede MenuAction eine Sichtbarkeitsklasse. Anhand der Sichtbarkeitsklasse und der Bildschirmgröße wird\n * entweder das eine oder das andere Element sichtbar, jedoch niemals beide.\n */\nclass NavbarFragment extends AbstractFragment_1.AbstractFragment {\n /**\n * Erstellt das Fragment\n * @param site\n * @param {string|Node|null} viewNavbar\n */\n constructor(site, viewNavbar) {\n super(site, Helper_1.Helper.nonNull(viewNavbar, defaultViewNavbar));\n this._menu = null;\n this._responsiveMenu = null;\n this._backgroundImage = \"\";\n this._menuActions = [];\n NavbarFragment.defaultActions.forEach(action => {\n this._menuActions.push(action.copy());\n });\n this._scrollWidget = null;\n this._canGoBack = true;\n this._logo = App_1.App.getLogo();\n }\n setLogo(logo) {\n this._logo = logo;\n if (this._view) {\n if (Helper_1.Helper.isNotNull(this._logo)) {\n this.findBy(\".logo\").classList.remove(\"hidden\");\n this.findBy(\".logo-img\").src = this._logo;\n }\n else {\n this.findBy(\".logo\").classList.add(\"hidden\");\n }\n }\n }\n setCanGoBack(canGoBack) {\n this._canGoBack = canGoBack;\n if (this._view) {\n if (this._canGoBack) {\n this.findBy(\".back-button\").classList.remove(\"hidden\");\n }\n else {\n this.findBy(\".back-button\").classList.add(\"hidden\");\n }\n }\n }\n setScrollWidget(scrollWidget) {\n this._scrollWidget = scrollWidget;\n if (this._view && this._scrollWidget) {\n let nav = this.findBy(\".top-bar > span\");\n let background = this.findBy(\".background-img\");\n let listener = () => {\n let navbarElem = this.findBy(\"nav.top-bar\");\n if (nav.getBoundingClientRect().bottom >= background.getBoundingClientRect().bottom) {\n navbarElem.classList.add(\"solid\");\n }\n else {\n navbarElem.classList.remove(\"solid\");\n }\n };\n background.addEventListener(\"load\", listener);\n scrollWidget.addEventListener(\"scroll\", listener);\n requestAnimationFrame(listener);\n }\n }\n setBackgroundImage(backgroundImage) {\n this._backgroundImage = backgroundImage;\n if (this._view) {\n let navbarElem = this.findBy(\"nav.top-bar\");\n if (Helper_1.Helper.isNotNull(this._backgroundImage)) {\n let imgElem = this.findBy(\".background-img\");\n let colorIndicator = ColorIndicator_1.ColorIndicator.getInstance();\n // navbarElem.classList.add(\"color-black\");\n imgElem.addEventListener(\"load\", () => {\n if (this._backgroundImage !== \"\") {\n let color = (colorIndicator.getAverageImgColor(imgElem, undefined, 150));\n let textColor = colorIndicator.invertColorBW(color);\n if (textColor.r === 0 && textColor.g === 0 && textColor.b === 0) {\n navbarElem.classList.remove(\"color-white\");\n navbarElem.classList.add(\"color-black\");\n }\n else {\n navbarElem.classList.remove(\"color-black\");\n navbarElem.classList.add(\"color-white\");\n }\n }\n else {\n navbarElem.classList.remove(\"color-black\");\n navbarElem.classList.remove(\"color-white\");\n }\n });\n requestAnimationFrame(() => {\n let heightElement = navbarElem.querySelector(\".grid-container\");\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n if (\"ResizeObserver\" in window) {\n // @ts-ignore\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => {\n if (entry.borderBoxSize) {\n navbarElem.style = \"min-height:\" + entry.borderBoxSize[0].blockSize + \"px\";\n }\n else if (entry.contentRect) {\n navbarElem.style = \"min-height:\" + entry.contentRect.height + \"px\";\n }\n else {\n console.log(\"entry\", entry);\n }\n });\n });\n resizeObserver.observe(heightElement);\n }\n setTimeout(() => {\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n }, 500);\n setTimeout(() => {\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n }, 1000);\n setTimeout(() => {\n navbarElem.style = \"min-height:\" + heightElement.getBoundingClientRect().height + \"px\";\n }, 1500);\n });\n imgElem.src = this._backgroundImage;\n navbarElem.classList.add(\"with-image\");\n }\n else {\n navbarElem.classList.remove(\"with-image\");\n }\n }\n }\n /**\n * Wird aufgerufen, sobald die View geladen ist\n * @returns {Promise<*>}\n */\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this.setTitleElement(document.createTextNode(NavbarFragment.title));\n //Erstelle die Renderers und das Menü\n let renderers = [];\n renderers.push(new DropdownRenderer_1.DropdownRenderer(this.findBy(\"#navbar-menu-visible\")));\n renderers.push(new AccordionRenderer_1.AccordionRenderer(this.findBy(\"#navbar-menu-hidden\")));\n this._menu = new Menu_1.Menu(renderers, this._menuActions);\n this._closeListenerContainer = this.findBy(\"#navbar-close-listener-container\");\n //Falls im visible-submenu eine Submenu-Action zu sehen ist\n this._menu.setOpenSubmenuListener(() => {\n this._showCloseListener();\n });\n //Falls ein Element im Menü angeklickt wird, sollte das Menü geschlossen werden,\n //außer dadurch wird ein Untermenü geöffnet/geschlossen\n let oldListener = this._menu.getOnClickListener();\n this._menu.setOnClickListener(e => {\n if (!(oldListener(e) instanceof OpenSubmenuAction_1.OpenSubmenuAction)) {\n this.closeMenu();\n }\n });\n //Fügt close/open-Listener für den Toggle-Button hinzu\n this._responsiveMenu = this.findBy(\"#responsive-menu\");\n this.findBy(\"#responsive-menu-toggle\").onclick = () => {\n if (this._responsiveMenu.classList.contains(\"visible\")) {\n this.closeMenu();\n }\n else {\n this.openMenu();\n }\n };\n //Wenn das \"versteckte\" Menü geöffnet ist, sollte jeder Click nicht auf das Menü dieses wieder schließen\n //Dazu gibt es den navbar-close-listener der sich vor allen (außer dem Menü) befindet. Er wird nur angezeigt,\n //wenn das Menü offen ist\n let navbarFragment = this;\n this.findBy(\"#navbar-close-listener\").addEventListener(\"click\", function (e) {\n if (e.target === this) {\n navbarFragment.closeMenu();\n }\n });\n //Wenn die größe des Fenster geändert wird, muss nachgeschaut werden, ob der Menü-Button für das hidden-Menü noch angezeigt werden muss\n window.addEventListener('resize', () => {\n //Reicht aus, wenn Seite im Vordergrund, da bei jedem Start (durch onStart) der toggleButton geupdatet wird\n if (this._state === Context_1.Context.STATE_RUNNING) {\n this.updateToggleButton();\n }\n });\n //Rendere das Menü\n this.drawMenu();\n this.findBy(\".back-button\").addEventListener(\"click\", () => {\n this.goBack();\n });\n this.findBy(\".logo\").addEventListener(\"click\", () => {\n if (NavbarFragment.onLogoClickListener) {\n NavbarFragment.onLogoClickListener(this.getSite());\n }\n });\n this.setCanGoBack(this._canGoBack);\n this.setBackgroundImage(this._backgroundImage);\n this.setScrollWidget(this._scrollWidget);\n this.setLogo(this._logo);\n return res;\n });\n }\n goBack() {\n if (this._canGoBack) {\n this.getSite().goBack();\n }\n }\n /**\n * Jedes mal, wenn die Seite startet, update den toggleButton\n *\n * @param pauseArguments\n * @returns {Promise}\n */\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n _super.onStart.call(this, pauseArguments);\n this.updateToggleButton();\n });\n }\n _showCloseListener() {\n if (this._closeListenerContainer) {\n this._closeListenerContainer.style.display = 'block';\n }\n }\n /**\n * Schließe das Menü\n */\n closeMenu() {\n if (Helper_1.Helper.isNotNull(this._responsiveMenu)) {\n this._responsiveMenu.classList.remove(\"visible\");\n this._view.classList.remove(\"navbar-is-open\");\n }\n if (this._closeListenerContainer) {\n this._closeListenerContainer.style.display = 'none';\n }\n if (this._menu) {\n this._menu.close();\n }\n }\n /**\n * Öffne das Menü\n */\n openMenu() {\n if (Helper_1.Helper.isNotNull(this._responsiveMenu)) {\n // this._responsiveMenu.style.display = 'block';\n this._responsiveMenu.classList.add(\"visible\");\n this._view.classList.add(\"navbar-is-open\");\n }\n this._showCloseListener();\n }\n /**\n * rendere das Menü\n */\n drawMenu() {\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.draw();\n }\n }\n /**\n * Update die Sichtbarkeit des MenüButtons für das \"versteckte\" Menü\n */\n updateToggleButton() {\n //Bekomme die aktuelle Bildschirm-größe als Foundation-Klasse\n let size = NavbarFragment._getCurrentSize();\n //schaue hier nach den enthaltenen Elementen. Evtl sollte das direkt an den MenüActions gemacht werden\n let firstParentElement = this.findBy(\"#navbar-menu-visible\");\n if (\n //Es existieren Elemente für large und Bildschirmgröße ist kleiner large => ToggleButton muss angezeigt werden\n (size === \"medium\" || size === \"smedium\" || size === \"small\") &&\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_FOR_LARGE + \":not(.hidden)\").length > 0 ||\n //Es existieren Elemente für medium und Bildschirmgröße ist kleiner medium=> ToggleButton muss angezeigt werden\n (size === \"smedium\" || size === \"small\") &&\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_FOR_MEDIUM + \":not(.hidden)\").length > 0 ||\n //Es existieren Elemente für smedium und Bildschirmgröße ist kleiner medium=> ToggleButton muss angezeigt werden\n (size === \"small\") &&\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_FOR_SMEDIUM + \":not(.hidden)\").length > 0 ||\n //Es existieren Elemente, welche nie angezeigt werden sollen => ToggleButton muss angezeigt werden\n firstParentElement.querySelectorAll(\".\" + MenuAction_1.MenuAction.SHOW_NEVER + \":not(.hidden)\").length > 0) {\n document.getElementById(\"responsive-menu-toggle\").style.display = 'block';\n }\n else {\n document.getElementById(\"responsive-menu-toggle\").style.display = 'none';\n //schließe Menü, falls es offen war\n this.closeMenu();\n }\n }\n /**\n * Funktion zum hinzufügen von Actions\n * @param action\n */\n addAction(action) {\n this._menuActions.push(action);\n //Falls Menü schon existiert, füge Elemente hinzu\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.addAction(action);\n }\n }\n /**\n * Funktion zum hinzufügen von Actions\n * @param redraw\n */\n removeAllActions(redraw) {\n this._menuActions = [];\n //Falls Menü schon existiert, füge Elemente hinzu\n if (Helper_1.Helper.isNotNull(this._menu)) {\n this._menu.removeAllActions(redraw);\n }\n }\n /**\n * Updatet das Title-Element\n * @param titleElement\n */\n setTitleElement(titleElement) {\n Helper_1.Helper.removeAllChildren(this.findBy(\"#title-element-container\")).appendChild(titleElement);\n }\n /**\n * Gibt die aktuelle Size zurück\n *\n * @returns {*}\n * @private\n */\n static _getCurrentSize() {\n let matched;\n //Queries sind paare von css-selektoren auf die Mindest-Breite und Namen\n //Queries sind so geordnet, dass größter zum schluss kommt\n let queries = NavbarFragment._getViewQueries();\n for (let i = 0; i < queries.length; i++) {\n let query = queries[i];\n //Letzter sollte matchen, daher noch nicht breaken\n if (matchMedia(query._value).matches) {\n matched = query;\n }\n }\n if (typeof matched === 'object') {\n return matched._name;\n }\n else {\n return matched;\n }\n }\n /**\n * Gibt die ViewQueries zurück, triggert die Berechnung der ViewQueries, falls das noch nicht geschehen ist\n *\n * @returns {Array}\n * @private\n */\n static _getViewQueries() {\n if (NavbarFragment.queries.length === 0) {\n NavbarFragment.queries = NavbarFragment._calculateViewQueries();\n }\n return NavbarFragment.queries;\n }\n /**\n * Berechnet die ViewQueries, bzw liest diese aus Foundation/CSS ein\n * Eine Veränderung der Werte in SASS, verändert daher auch hier die Werte\n *\n * @returns {*}\n * @private\n */\n static _calculateViewQueries() {\n //Hilfs-Funktion zum Parsen der Bildschirmgröße\n function parseStyleToObject(str) {\n let styleObject = {};\n if (typeof str !== 'string') {\n return styleObject;\n }\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n if (!str) {\n return styleObject;\n }\n styleObject = str.split('&').reduce(function (ret, param) {\n const parts = param.replace(/\\+/g, ' ').split('=');\n let key = parts[0];\n let val = parts[1];\n key = decodeURIComponent(key);\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = val === undefined ? null : decodeURIComponent(val);\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n }\n else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n }\n else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n return styleObject;\n }\n //die Font-Family ist reiner Text. Daher übergibt Foundation die Bildchirmgröße mit den dazugehörigen Namen als\n // Font-Family in einem Element im Head\n let cssStyle = document.getElementsByClassName('foundation-mq');\n if (cssStyle.length === 0) {\n return;\n }\n let queries = [];\n //Lade Bildschirmgrößen und speichere diese als Query in einem Array\n let cssStyleElements = parseStyleToObject(window.getComputedStyle(cssStyle[0]).getPropertyValue('font-family'));\n for (let key in cssStyleElements) {\n if (cssStyleElements.hasOwnProperty(key)) {\n //Erstelle aus der Bildschirmgröße die Queries\n queries.push({\n _name: key,\n _value: 'only screen and (min-width: ' + cssStyleElements[key] + ')'\n });\n }\n }\n return queries;\n }\n /**\n * Setzt den Listener, welcher ausgeführt wird, wenn auf das Logo geklickt wird\n *\n * @param listener\n */\n static setOnLogoClickListener(listener) {\n this.onLogoClickListener = listener;\n }\n}\nexports.NavbarFragment = NavbarFragment;\nNavbarFragment.queries = [];\nNavbarFragment.onLogoClickListener = () => App_1.App.addInitialization(app => app.startStartingSite());\nNavbarFragment.title = \"MeinBerufBau\";\nNavbarFragment.defaultActions = [];\n//# sourceMappingURL=NavbarFragment.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Form = void 0;\nconst DataManager_1 = require(\"./DataManager\");\nconst Helper_1 = require(\"./Legacy/Helper\");\nconst Translator_1 = require(\"./Translator\");\nconst Toast_1 = require(\"./Toast/Toast\");\nclass Form {\n constructor(formElem, urlOrCallback, method) {\n this._formElem = formElem;\n this._method = Helper_1.Helper.nonNull(method, formElem[\"method\"], \"POST\");\n this._elementChangeListener = null;\n this._validators = [];\n this._isBusy = false;\n if (typeof urlOrCallback === \"string\") {\n this._submitHandler = (values) => {\n if (this._method.toLowerCase() === \"get\") {\n return (DataManager_1.DataManager.load(urlOrCallback + DataManager_1.DataManager.buildQuery(values)));\n }\n else {\n //TODO, wenn Serververbindung kommt\n // return (DataManager.send(urlOrCallback, values));\n }\n };\n }\n else {\n this._submitHandler = urlOrCallback;\n }\n this._editors = [];\n this._submitCallback = null;\n this.errorCallback = (errors) => __awaiter(this, void 0, void 0, function* () {\n yield this.setErrors(errors);\n });\n formElem.addEventListener(\"submit\", function (e) {\n return __awaiter(this, void 0, void 0, function* () {\n e.preventDefault();\n yield self.doSubmit(e);\n });\n });\n let self = this;\n [...formElem.elements].forEach(element => {\n element.addEventListener(\"change\", function () {\n if (this.value.trim() !== \"\") {\n this.classList.add(\"notEmpty\");\n }\n else {\n this.classList.remove(\"notEmpty\");\n }\n this.setCustomValidity(\"\");\n if (Helper_1.Helper.isNotNull(self._elementChangeListener)) {\n self._elementChangeListener(element, this);\n }\n this.setCustomValidity(\"\");\n if (element.accept && element.accept.indexOf(\"image\") !== -1) {\n if (element.files && element.files[0]) {\n let reader = new FileReader();\n reader.onload = e => {\n const previewElem = formElem.querySelector(\".\" + element.name + \"-preview\");\n if (previewElem) {\n previewElem.src = e.target[\"result\"];\n }\n };\n reader.readAsDataURL(element.files[0]);\n }\n else {\n formElem.querySelector(\".\" + element.name + \"-preview\").src = \"\";\n }\n }\n });\n element.addEventListener(\"keydown\", function () {\n this.setCustomValidity(\"\");\n });\n });\n }\n addValidator(validatorCallback) {\n this._validators.push(validatorCallback);\n }\n onError(errorHandler) {\n this.errorCallback = errorHandler;\n }\n addEditor(e) {\n this._editors.push(e);\n }\n doSubmit(e) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._isBusy) {\n let res = yield this.submit();\n //TODO einbauen, wenn server dazu kommt\n // if (res[\"success\"]) {\n // if (self._submitCallback !== null) {\n // return self._submitCallback(res[\"result\"]);\n // }\n // } else if (Helper.isNotNull(self.errorCallback)) {\n // return self.errorCallback(res[\"errors\"]);\n // }\n return res;\n }\n return false;\n });\n }\n setValues(valuePromise) {\n return __awaiter(this, void 0, void 0, function* () {\n this.setIsBusy(true);\n let values = yield Promise.resolve(valuePromise);\n this.setIsBusy(false);\n for (let k in values) {\n if (Helper_1.Helper.isNotNull(this._formElem.elements[k])) {\n if (Helper_1.Helper.isNotNull(this._formElem.elements[k].options) && Helper_1.Helper.isNotNull(values[k + \"Options\"])) {\n let options = this._formElem.elements[k].options;\n for (let val in values[k + \"Options\"]) {\n let option = document.createElement(\"option\");\n option.value = val;\n option.innerText = values[k + \"Options\"][val];\n options.add(option);\n }\n }\n if (this._formElem.elements[k].type && (this._formElem.elements[k].type === \"checkbox\" || this._formElem.elements[k].type === \"radio\")) {\n this._formElem.elements[k].checked = this._formElem.elements[k].value == values[k];\n }\n else if (this._formElem.elements[k].type && this._formElem.elements[k].type === \"file\") {\n if (this._formElem.elements[k + \"-hidden\"]) {\n this._formElem.elements[k + \"-hidden\"].value = values[k];\n }\n if (this._formElem.elements[k].accept && this._formElem.elements[k].accept.indexOf(\"image\") !== -1) {\n let previewImage = this._formElem.querySelector(\".\" + k + \"-preview\");\n if (previewImage) {\n previewImage.src = values[k];\n }\n }\n }\n else {\n this._formElem.elements[k].value = Helper_1.Helper.htmlspecialcharsDecode(values[k]);\n if (this._formElem.elements[k].classList) {\n if (Helper_1.Helper.isNotNull(values[k]) && (\"\" + values[k]).trim() !== \"\") {\n this._formElem.elements[k].classList.add(\"notEmpty\");\n }\n else {\n this._formElem.elements[k].classList.remove(\"notEmpty\");\n }\n }\n }\n }\n }\n return this;\n });\n }\n getValues(filesToBase64) {\n return __awaiter(this, void 0, void 0, function* () {\n let valuesFormData = new FormData(this._formElem);\n let values = Array.from(valuesFormData[\"entries\"]()).reduce((memo, pair) => (Object.assign(Object.assign({}, memo), { [pair[0]]: pair[1] })), {});\n if (Helper_1.Helper.nonNull(filesToBase64, true)) {\n values = yield Form.filesToBase64(values);\n }\n return values;\n });\n }\n static filesToBase64(values) {\n return __awaiter(this, void 0, void 0, function* () {\n let filePromises = [];\n Object.keys(values).forEach(key => {\n if (values[key] instanceof Blob) {\n filePromises.push(new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n reader.readAsDataURL(values[key]);\n }).then(base64 => values[key] = base64));\n }\n });\n yield Promise.all(filePromises);\n return values;\n });\n }\n setElementChangeListener(listener) {\n this._elementChangeListener = listener;\n }\n clearErrors() {\n Object.keys(this._formElem.elements).forEach(elemKey => {\n this._formElem.elements[elemKey].setCustomValidity(\"\");\n });\n }\n setErrors(errors) {\n let hasElem = false;\n let firstError = null;\n // let notCatchedErrors = [];\n for (let k in errors) {\n if (Helper_1.Helper.isNotNull(this._formElem.elements[k]) && this._formElem.elements[k].type !== \"hidden\"\n && Helper_1.Helper.isNull(this._formElem.elements[k].readonly) && (Helper_1.Helper.isNull(this._formElem.elements[k].disabled) || !this._formElem.elements[k].disabled)) {\n this._formElem.elements[k].setCustomValidity(Translator_1.Translator.translate(Helper_1.Helper.nonNull(errors[k], \"form-default-error\")));\n hasElem = true;\n }\n else {\n new Toast_1.Toast(Helper_1.Helper.nonNull(errors[k], \"form-default-error\")).show();\n }\n // if (Helper.isNull(firstError)) {\n // firstError = ;\n // }\n }\n // if (!hasElem && Helper.isNotNull(firstError)) {\n // for (let k in this._formElem.elements) {\n // if (this._formElem.elements[k].type !== \"hidden\") {\n // this._formElem.elements[k].setCustomValidity(Translator.translate(firstError));\n // hasElem = true;\n // break;\n // }\n // }\n // }\n if (hasElem) {\n \"reportValidity\" in this._formElem && this._formElem.reportValidity();\n }\n }\n setIsBusy(isBusy) {\n this._isBusy = isBusy;\n if (this._isBusy) {\n this._formElem.classList.add(\"sending\");\n }\n else {\n this._formElem.classList.remove(\"sending\");\n }\n }\n submit() {\n return __awaiter(this, void 0, void 0, function* () {\n this._editors.forEach(e => e.updateSourceElement());\n this.setIsBusy(true);\n if (yield this.validate()) {\n let res = false;\n try {\n res = yield (this._submitHandler(yield this.getValues(), this));\n }\n catch (e) {\n console.error(e);\n }\n finally {\n this.setIsBusy(false);\n }\n return res;\n }\n this.setIsBusy(false);\n return false;\n });\n }\n validate() {\n return __awaiter(this, void 0, void 0, function* () {\n if (\"reportValidity\" in this._formElem && !this._formElem.reportValidity()) {\n return false;\n }\n let values = yield this.getValues();\n let res = yield Helper_1.Helper.asyncForEach(this._validators, (validator) => __awaiter(this, void 0, void 0, function* () {\n return validator(values, this);\n }), true);\n let hasErrors = false;\n let errors = {};\n res.forEach(value => {\n if (value !== true) {\n hasErrors = true;\n if (typeof value === \"object\") {\n for (let k in value) {\n errors[k] = value[k];\n }\n }\n }\n });\n if (hasErrors) {\n yield this.setErrors(errors);\n return false;\n }\n return true;\n });\n }\n onSubmit(callback) {\n this._submitCallback = callback;\n }\n getFormElement() {\n return this._formElem;\n }\n}\nexports.Form = Form;\n//# sourceMappingURL=Form.js.map","import { __values } from \"tslib\";\nimport { QueryBuilderUtils } from \"./QueryBuilderUtils\";\nimport { ObjectUtils } from \"../util/ObjectUtils\";\n/**\n * Stores all join attributes which will be used to build a JOIN query.\n */\nvar JoinAttribute = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function JoinAttribute(connection, queryExpressionMap, joinAttribute) {\n this.connection = connection;\n this.queryExpressionMap = queryExpressionMap;\n this.isSelectedEvaluated = false;\n this.relationEvaluated = false;\n ObjectUtils.assign(this, joinAttribute || {});\n }\n Object.defineProperty(JoinAttribute.prototype, \"isMany\", {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n get: function () {\n if (this.isMappingMany !== undefined)\n return this.isMappingMany;\n if (this.relation)\n return this.relation.isManyToMany || this.relation.isOneToMany;\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"isSelected\", {\n /**\n * Indicates if this join is selected.\n */\n get: function () {\n var _this = this;\n if (!this.isSelectedEvaluated) {\n var getValue = function () {\n var e_1, _a;\n var _loop_1 = function (select) {\n if (select.selection === _this.alias.name)\n return { value: true };\n if (_this.metadata && !!_this.metadata.columns.find(function (column) { return select.selection === _this.alias.name + \".\" + column.propertyPath; }))\n return { value: true };\n };\n try {\n for (var _b = __values(_this.queryExpressionMap.selects), _c = _b.next(); !_c.done; _c = _b.next()) {\n var select = _c.value;\n var state_1 = _loop_1(select);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n };\n this.isSelectedCache = getValue();\n this.isSelectedEvaluated = true;\n }\n return this.isSelectedCache;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"tablePath\", {\n /**\n * Name of the table which we should join.\n */\n get: function () {\n return this.metadata ? this.metadata.tablePath : this.entityOrProperty;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"parentAlias\", {\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n return this.entityOrProperty.substr(0, this.entityOrProperty.indexOf(\".\"));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"relationPropertyPath\", {\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get: function () {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n return this.entityOrProperty.substr(this.entityOrProperty.indexOf(\".\") + 1);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"relation\", {\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n * Relation can be undefined if entityOrProperty is regular entity or custom table.\n */\n get: function () {\n var _this = this;\n if (!this.relationEvaluated) {\n var getValue = function () {\n if (!QueryBuilderUtils.isAliasProperty(_this.entityOrProperty))\n return undefined;\n var relationOwnerSelection = _this.queryExpressionMap.findAliasByName(_this.parentAlias);\n var relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(_this.relationPropertyPath);\n if (relation) {\n return relation;\n }\n if (relationOwnerSelection.metadata.parentEntityMetadata) {\n relation = relationOwnerSelection.metadata.parentEntityMetadata.findRelationWithPropertyPath(_this.relationPropertyPath);\n if (relation) {\n return relation;\n }\n }\n throw new Error(\"Relation with property path \" + _this.relationPropertyPath + \" in entity was not found.\");\n };\n this.relationCache = getValue.bind(this)();\n this.relationEvaluated = true;\n }\n return this.relationCache;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"metadata\", {\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get: function () {\n // entityOrProperty is relation, e.g. \"post.category\"\n if (this.relation)\n return this.relation.inverseEntityMetadata;\n // entityOrProperty is Entity class\n if (this.connection.hasMetadata(this.entityOrProperty))\n return this.connection.getMetadata(this.entityOrProperty);\n return undefined;\n /*if (typeof this.entityOrProperty === \"string\") { // entityOrProperty is a custom table\n \n // first try to find entity with such name, this is needed when entity does not have a target class,\n // and its target is a string name (scenario when plain old javascript is used or entity schema is loaded from files)\n const metadata = this.connection.entityMetadatas.find(metadata => metadata.name === this.entityOrProperty);\n if (metadata)\n return metadata;\n \n // check if we have entity with such table name, and use its metadata if found\n return this.connection.entityMetadatas.find(metadata => metadata.tableName === this.entityOrProperty);\n }*/\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"junctionAlias\", {\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get: function () {\n if (!this.relation)\n throw new Error(\"Cannot get junction table for join without relation.\");\n return this.relation.isOwning ? this.parentAlias + \"_\" + this.alias.name : this.alias.name + \"_\" + this.parentAlias;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"mapToPropertyParentAlias\", {\n get: function () {\n if (!this.mapToProperty)\n return undefined;\n return this.mapToProperty.split(\".\")[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(JoinAttribute.prototype, \"mapToPropertyPropertyName\", {\n get: function () {\n if (!this.mapToProperty)\n return undefined;\n return this.mapToProperty.split(\".\")[1];\n },\n enumerable: false,\n configurable: true\n });\n return JoinAttribute;\n}());\nexport { JoinAttribute };\n\n//# sourceMappingURL=JoinAttribute.js.map\n","/**\n * This class stores up and down queries needed for migrations functionality.\n */\nvar SqlInMemory = /** @class */ (function () {\n function SqlInMemory() {\n this.upQueries = [];\n this.downQueries = [];\n }\n return SqlInMemory;\n}());\nexport { SqlInMemory };\n\n//# sourceMappingURL=SqlInMemory.js.map\n","import { __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\nimport { Query } from \"../driver/Query\";\nimport { SqlInMemory } from \"../driver/SqlInMemory\";\nvar BaseQueryRunner = /** @class */ (function () {\n function BaseQueryRunner() {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n this.isReleased = false;\n /**\n * Indicates if transaction is in progress.\n */\n this.isTransactionActive = false;\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n this.data = {};\n /**\n * All synchronized tables in the database.\n */\n this.loadedTables = [];\n /**\n * All synchronized views in the database.\n */\n this.loadedViews = [];\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n this.sqlMemoryMode = false;\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n this.sqlInMemory = new SqlInMemory();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Loads given table's data from the database.\n */\n BaseQueryRunner.prototype.getTable = function (tablePath) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadTables([tablePath])];\n case 1:\n _a.loadedTables = _b.sent();\n return [2 /*return*/, this.loadedTables.length > 0 ? this.loadedTables[0] : undefined];\n }\n });\n });\n };\n /**\n * Loads all tables (with given names) from the database.\n */\n BaseQueryRunner.prototype.getTables = function (tableNames) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadTables(tableNames)];\n case 1:\n _a.loadedTables = _b.sent();\n return [2 /*return*/, this.loadedTables];\n }\n });\n });\n };\n /**\n * Loads given view's data from the database.\n */\n BaseQueryRunner.prototype.getView = function (viewPath) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadViews([viewPath])];\n case 1:\n _a.loadedViews = _b.sent();\n return [2 /*return*/, this.loadedViews.length > 0 ? this.loadedViews[0] : undefined];\n }\n });\n });\n };\n /**\n * Loads given view's data from the database.\n */\n BaseQueryRunner.prototype.getViews = function (viewPaths) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.loadViews(viewPaths)];\n case 1:\n _a.loadedViews = _b.sent();\n return [2 /*return*/, this.loadedViews];\n }\n });\n });\n };\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n BaseQueryRunner.prototype.enableSqlMemory = function () {\n this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = true;\n };\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n BaseQueryRunner.prototype.disableSqlMemory = function () {\n this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = false;\n };\n /**\n * Flushes all memorized sqls.\n */\n BaseQueryRunner.prototype.clearSqlMemory = function () {\n this.sqlInMemory = new SqlInMemory();\n };\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n BaseQueryRunner.prototype.getMemorySql = function () {\n return this.sqlInMemory;\n };\n /**\n * Executes up sql queries.\n */\n BaseQueryRunner.prototype.executeMemoryUpSql = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, _c, query, parameters, e_1_1;\n var e_1, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _e.trys.push([0, 5, 6, 7]);\n _a = __values(this.sqlInMemory.upQueries), _b = _a.next();\n _e.label = 1;\n case 1:\n if (!!_b.done) return [3 /*break*/, 4];\n _c = _b.value, query = _c.query, parameters = _c.parameters;\n return [4 /*yield*/, this.query(query, parameters)];\n case 2:\n _e.sent();\n _e.label = 3;\n case 3:\n _b = _a.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes down sql queries.\n */\n BaseQueryRunner.prototype.executeMemoryDownSql = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, _c, query, parameters, e_2_1;\n var e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _e.trys.push([0, 5, 6, 7]);\n _a = __values(this.sqlInMemory.downQueries.reverse()), _b = _a.next();\n _e.label = 1;\n case 1:\n if (!!_b.done) return [3 /*break*/, 4];\n _c = _b.value, query = _c.query, parameters = _c.parameters;\n return [4 /*yield*/, this.query(query, parameters)];\n case 2:\n _e.sent();\n _e.label = 3;\n case 3:\n _b = _a.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n */\n BaseQueryRunner.prototype.getCachedView = function (viewName) {\n return __awaiter(this, void 0, void 0, function () {\n var view, foundViews;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n view = this.loadedViews.find(function (view) { return view.name === viewName; });\n if (view)\n return [2 /*return*/, view];\n return [4 /*yield*/, this.loadViews([viewName])];\n case 1:\n foundViews = _a.sent();\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0]);\n return [2 /*return*/, foundViews[0]];\n }\n else {\n throw new Error(\"View \\\"\" + viewName + \"\\\" does not exist.\");\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n */\n BaseQueryRunner.prototype.getCachedTable = function (tableName) {\n return __awaiter(this, void 0, void 0, function () {\n var table, foundTables;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n table = this.loadedTables.find(function (table) { return table.name === tableName; });\n if (table)\n return [2 /*return*/, table];\n return [4 /*yield*/, this.loadTables([tableName])];\n case 1:\n foundTables = _a.sent();\n if (foundTables.length > 0) {\n this.loadedTables.push(foundTables[0]);\n return [2 /*return*/, foundTables[0]];\n }\n else {\n throw new Error(\"Table \\\"\" + tableName + \"\\\" does not exist.\");\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Replaces loaded table with given changed table.\n */\n BaseQueryRunner.prototype.replaceCachedTable = function (table, changedTable) {\n var foundTable = this.loadedTables.find(function (loadedTable) { return loadedTable.name === table.name; });\n if (foundTable) {\n foundTable.name = changedTable.name;\n foundTable.columns = changedTable.columns;\n foundTable.indices = changedTable.indices;\n foundTable.foreignKeys = changedTable.foreignKeys;\n foundTable.uniques = changedTable.uniques;\n foundTable.checks = changedTable.checks;\n foundTable.justCreated = changedTable.justCreated;\n foundTable.engine = changedTable.engine;\n }\n };\n BaseQueryRunner.prototype.getTypeormMetadataTableName = function () {\n var options = this.connection.driver.options;\n return this.connection.driver.buildTableName(\"typeorm_metadata\", options.schema, options.database);\n };\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n */\n BaseQueryRunner.prototype.isColumnChanged = function (oldColumn, newColumn, checkDefault, checkComment) {\n // this logs need to debug issues in column change detection. Do not delete it!\n // console.log(\"charset ---------------\");\n // console.log(oldColumn.charset !== newColumn.charset);\n // console.log(oldColumn.charset, newColumn.charset);\n // console.log(\"collation ---------------\");\n // console.log(oldColumn.collation !== newColumn.collation);\n // console.log(oldColumn.collation, newColumn.collation);\n // console.log(\"precision ---------------\");\n // console.log(oldColumn.precision !== newColumn.precision);\n // console.log(oldColumn.precision, newColumn.precision);\n // console.log(\"scale ---------------\");\n // console.log(oldColumn.scale !== newColumn.scale);\n // console.log(oldColumn.scale, newColumn.scale);\n // console.log(\"default ---------------\");\n // console.log((checkDefault && oldColumn.default !== newColumn.default));\n // console.log(oldColumn.default, newColumn.default);\n // console.log(\"isNullable ---------------\");\n // console.log(oldColumn.isNullable !== newColumn.isNullable);\n // console.log(oldColumn.isNullable, newColumn.isNullable);\n // console.log(\"comment ---------------\");\n // console.log((checkComment && oldColumn.comment !== newColumn.comment));\n // console.log(oldColumn.comment, newColumn.comment);\n // console.log(\"enum ---------------\");\n // console.log(oldColumn.enum !== newColumn.enum);\n // console.log(oldColumn.enum, newColumn.enum);\n return oldColumn.charset !== newColumn.charset\n || oldColumn.collation !== newColumn.collation\n || oldColumn.precision !== newColumn.precision\n || oldColumn.scale !== newColumn.scale\n || oldColumn.width !== newColumn.width // MySQL only\n || oldColumn.zerofill !== newColumn.zerofill // MySQL only\n || oldColumn.unsigned !== newColumn.unsigned // MySQL only\n || oldColumn.asExpression !== newColumn.asExpression // MySQL only\n || (checkDefault && oldColumn.default !== newColumn.default)\n || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only\n || oldColumn.isNullable !== newColumn.isNullable\n || (checkComment && oldColumn.comment !== newColumn.comment)\n || oldColumn.enum !== newColumn.enum;\n };\n /**\n * Checks if column length is by default.\n */\n BaseQueryRunner.prototype.isDefaultColumnLength = function (table, column, length) {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n var metadata = this.connection.getMetadata(table.name);\n var columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.length)\n return false;\n }\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].length) {\n return this.connection.driver.dataTypeDefaults[column.type].length.toString() === length.toString();\n }\n return false;\n };\n /**\n * Checks if column precision is by default.\n */\n BaseQueryRunner.prototype.isDefaultColumnPrecision = function (table, column, precision) {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n var metadata = this.connection.getMetadata(table.name);\n var columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.precision !== null && columnMetadata.precision !== undefined)\n return false;\n }\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].precision !== null\n && this.connection.driver.dataTypeDefaults[column.type].precision !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].precision === precision;\n return false;\n };\n /**\n * Checks if column scale is by default.\n */\n BaseQueryRunner.prototype.isDefaultColumnScale = function (table, column, scale) {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n var metadata = this.connection.getMetadata(table.name);\n var columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.scale !== null && columnMetadata.scale !== undefined)\n return false;\n }\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].scale !== null\n && this.connection.driver.dataTypeDefaults[column.type].scale !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].scale === scale;\n return false;\n };\n /**\n * Executes sql used special for schema build.\n */\n BaseQueryRunner.prototype.executeQueries = function (upQueries, downQueries) {\n return __awaiter(this, void 0, void 0, function () {\n var upQueries_1, upQueries_1_1, _a, query, parameters, e_3_1;\n var _b, _c, e_3, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (upQueries instanceof Query)\n upQueries = [upQueries];\n if (downQueries instanceof Query)\n downQueries = [downQueries];\n (_b = this.sqlInMemory.upQueries).push.apply(_b, __spreadArray([], __read(upQueries)));\n (_c = this.sqlInMemory.downQueries).push.apply(_c, __spreadArray([], __read(downQueries)));\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return [2 /*return*/, Promise.resolve()];\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n upQueries_1 = __values(upQueries), upQueries_1_1 = upQueries_1.next();\n _e.label = 2;\n case 2:\n if (!!upQueries_1_1.done) return [3 /*break*/, 5];\n _a = upQueries_1_1.value, query = _a.query, parameters = _a.parameters;\n return [4 /*yield*/, this.query(query, parameters)];\n case 3:\n _e.sent();\n _e.label = 4;\n case 4:\n upQueries_1_1 = upQueries_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_3_1 = _e.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (upQueries_1_1 && !upQueries_1_1.done && (_d = upQueries_1.return)) _d.call(upQueries_1);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n return BaseQueryRunner;\n}());\nexport { BaseQueryRunner };\n\n//# sourceMappingURL=BaseQueryRunner.js.map\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","exports.f = require('./_wks');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonHelper = void 0;\nconst Helper_1 = require(\"./Helper\");\nclass JsonHelper {\n static deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n // array deepEqual\n if (a instanceof Array && b instanceof Array && a.length === b.length) {\n return a[\"every\"]((obj, i) => {\n return JsonHelper.deepEqual(obj, b[i]);\n });\n }\n //date deepEqual\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n // object deep copy\n if (typeof a === \"object\" && typeof b === \"object\") {\n let aKeys = Object.keys(a);\n let bKeys = Object.keys(b);\n return aKeys.length === bKeys.length && aKeys[\"every\"]((key) => {\n return Helper_1.Helper.isNotNull(b[key]) && JsonHelper.deepEqual(a[key], b[key]);\n });\n }\n //else is false (or not handled)\n return false;\n }\n /**\n * Deepcopies JSON\n *\n * @param obj\n * @returns {*}\n */\n static deepCopy(obj) {\n // https://stackoverflow.com/questions/4120475/how-to-create-and-clone-a-json-object/17502990#17502990\n let i;\n // basic type deep copy\n if (Helper_1.Helper.isNull(obj) || typeof obj !== 'object') {\n return obj;\n }\n // array deep copy\n if (obj instanceof Array) {\n let cloneA = [];\n for (i = 0; i < obj.length; ++i) {\n cloneA[i] = JsonHelper.deepCopy(obj[i]);\n }\n return cloneA;\n }\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n // object deep copy\n let cloneO = {};\n for (i in obj) {\n cloneO[i] = JsonHelper.deepCopy(obj[i]);\n }\n return cloneO;\n }\n static deepAssign(...objects) {\n if (objects.length > 0 && Array.isArray(objects)) {\n const result = [];\n objects.forEach(arr => result.push(...arr));\n return result;\n }\n const resultObj = {};\n objects.forEach(obj => {\n for (let i in obj) {\n if (resultObj[i] && typeof obj[i] === \"object\" && typeof resultObj[i] === \"object\") {\n resultObj[i] = JsonHelper.deepAssign(resultObj[i], obj[i]);\n }\n else {\n resultObj[i] = obj[i];\n }\n }\n });\n return resultObj;\n }\n static getDiff(a, b) {\n const result = {\n changed: {},\n added: {},\n removed: [],\n };\n // if (Array.isArray(a) && Array.isArray(b)){\n // const lengthA = a.length;\n // const lengthB = b.length;\n //\n // const minLength = Math.min(lengthA, lengthB);\n // for (let i = 0; i < minLength; i++){\n // const\n // }\n // }\n if ((typeof a !== \"object\" || typeof b !== \"object\")\n && (!Array.isArray(a) && !Array.isArray(b))) {\n if (a === b) {\n return null;\n }\n else {\n return { value: b };\n }\n }\n let hasChanged = false;\n let hasRemoved = false;\n let hasAdded = false;\n for (let i in a) {\n if (i in b) {\n const newVal = JsonHelper.getDiff(a[i], b[i]);\n if (newVal !== null) {\n result.changed[i] = newVal;\n hasChanged = true;\n }\n }\n else {\n result.removed.push(i);\n hasRemoved = true;\n }\n }\n for (let i in b) {\n if (!(i in a)) {\n result.added[i] = b[i];\n hasAdded = true;\n }\n }\n if (hasRemoved || hasAdded || hasChanged) {\n return result;\n }\n else {\n return null;\n }\n }\n static applyDiff(obj, diff) {\n if (!Array.isArray(diff.removed)) {\n debugger;\n }\n Object.keys(diff.changed).forEach(key => {\n if (\"value\" in diff.changed[key]) {\n obj[key] = diff.changed[key].value;\n }\n else {\n obj[key] = JsonHelper.applyDiff(obj[key], diff.changed[key]);\n }\n });\n Object.keys(diff.added).forEach(key => obj[key] = diff.added[key]);\n if (Array.isArray(obj)) {\n diff.removed.sort((a, b) => (parseInt(b) - parseInt(a))).forEach(index => {\n obj.splice(parseInt(index), 1);\n });\n }\n else {\n diff.removed.forEach(rem => delete obj[rem]);\n }\n return obj;\n }\n}\nexports.JsonHelper = JsonHelper;\n//# sourceMappingURL=JsonHelper.js.map","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","import { __awaiter, __extends, __generator, __read } from \"tslib\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { SapDriver } from \"../driver/sap/SapDriver\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { RandomGenerator } from \"../util/RandomGenerator\";\nimport { InsertResult } from \"./result/InsertResult\";\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\";\nimport { InsertValuesMissingError } from \"../error/InsertValuesMissingError\";\nimport { ReturningResultsEntityUpdator } from \"./ReturningResultsEntityUpdator\";\nimport { AbstractSqliteDriver } from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport { SqljsDriver } from \"../driver/sqljs/SqljsDriver\";\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\";\nimport { EntitySchema } from \"../entity-schema/EntitySchema\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar InsertQueryBuilder = /** @class */ (function (_super) {\n __extends(InsertQueryBuilder, _super);\n function InsertQueryBuilder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n InsertQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createInsertExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n InsertQueryBuilder.prototype.execute = function () {\n return __awaiter(this, void 0, void 0, function () {\n var valueSets, queryRunner, transactionStartedByUs, broadcastResult_1, declareSql, selectOutputSql, returningResultsEntityUpdator, _a, insertSql, parameters, insertResult, statements, _b, broadcastResult_2, error_1, rollbackError_1;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n valueSets = this.getValueSets();\n // console.timeEnd(\".value sets\");\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0)\n return [2 /*return*/, new InsertResult()];\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 13, 18, 23]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _c.sent();\n transactionStartedByUs = true;\n _c.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult_1 = new BroadcasterResult();\n valueSets.forEach(function (valueSet) {\n queryRunner.broadcaster.broadcastBeforeInsertEvent(broadcastResult_1, _this.expressionMap.mainAlias.metadata, valueSet);\n });\n if (!(broadcastResult_1.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult_1.promises)];\n case 4:\n _c.sent();\n _c.label = 5;\n case 5:\n declareSql = null;\n selectOutputSql = null;\n returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias.hasMetadata) {\n if (!(valueSets.length > 1 && this.connection.driver instanceof OracleDriver)) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns();\n }\n if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", this.expressionMap.extraReturningColumns);\n selectOutputSql = \"SELECT * FROM @OutputTable\";\n }\n }\n _a = __read(this.getQueryAndParameters(), 2), insertSql = _a[0], parameters = _a[1];\n insertResult = new InsertResult();\n statements = [declareSql, insertSql, selectOutputSql];\n _b = insertResult;\n return [4 /*yield*/, queryRunner.query(statements.filter(function (sql) { return sql != null; }).join(\";\\n\\n\"), parameters)];\n case 6:\n _b.raw = _c.sent();\n if (!(this.expressionMap.updateEntity === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 8];\n // console.time(\".updating entity\");\n return [4 /*yield*/, returningResultsEntityUpdator.insert(insertResult, valueSets)];\n case 7:\n // console.time(\".updating entity\");\n _c.sent();\n _c.label = 8;\n case 8:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult_2 = new BroadcasterResult();\n valueSets.forEach(function (valueSet) {\n queryRunner.broadcaster.broadcastAfterInsertEvent(broadcastResult_2, _this.expressionMap.mainAlias.metadata, valueSet);\n });\n if (!(broadcastResult_2.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult_2.promises)];\n case 9:\n _c.sent();\n _c.label = 10;\n case 10:\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 11:\n _c.sent();\n _c.label = 12;\n case 12: \n // console.timeEnd(\".commit\");\n return [2 /*return*/, insertResult];\n case 13:\n error_1 = _c.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 17];\n _c.label = 14;\n case 14:\n _c.trys.push([14, 16, , 17]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 15:\n _c.sent();\n return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _c.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20];\n return [4 /*yield*/, queryRunner.release()];\n case 19:\n _c.sent();\n _c.label = 20;\n case 20:\n if (!(this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive)) return [3 /*break*/, 22];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 21:\n _c.sent();\n _c.label = 22;\n case 22: return [7 /*endfinally*/];\n case 23: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Specifies INTO which entity's table insertion will be executed.\n */\n InsertQueryBuilder.prototype.into = function (entityTarget, columns) {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n var mainAlias = this.createFromAlias(entityTarget);\n this.expressionMap.setMainAlias(mainAlias);\n this.expressionMap.insertColumns = columns || [];\n return this;\n };\n /**\n * Values needs to be inserted into table.\n */\n InsertQueryBuilder.prototype.values = function (values) {\n this.expressionMap.valuesSet = values;\n return this;\n };\n /**\n * Optional returning/output clause.\n */\n InsertQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n InsertQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n this.expressionMap.returning = returning;\n return this;\n };\n /**\n * Indicates if entity must be updated after insertion operations.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n InsertQueryBuilder.prototype.updateEntity = function (enabled) {\n this.expressionMap.updateEntity = enabled;\n return this;\n };\n /**\n * Adds additional ON CONFLICT statement supported in postgres and cockroach.\n */\n InsertQueryBuilder.prototype.onConflict = function (statement) {\n this.expressionMap.onConflict = statement;\n return this;\n };\n /**\n * Adds additional ignore statement supported in databases.\n */\n InsertQueryBuilder.prototype.orIgnore = function (statement) {\n if (statement === void 0) { statement = true; }\n this.expressionMap.onIgnore = statement;\n return this;\n };\n /**\n * Adds additional update statement supported in databases.\n */\n InsertQueryBuilder.prototype.orUpdate = function (statement) {\n var _this = this;\n this.expressionMap.onUpdate = {};\n if (statement && Array.isArray(statement.conflict_target))\n this.expressionMap.onUpdate.conflict = \" ( \" + statement.conflict_target.map(function (columnName) { return _this.escape(columnName); }).join(\", \") + \" ) \";\n if (statement && typeof statement.conflict_target === \"string\")\n this.expressionMap.onUpdate.conflict = \" ON CONSTRAINT \" + this.escape(statement.conflict_target) + \" \";\n if (statement && Array.isArray(statement.columns))\n this.expressionMap.onUpdate.columns = statement.columns.map(function (column) { return _this.escape(column) + \" = :\" + column; }).join(\", \");\n if (statement && Array.isArray(statement.overwrite)) {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n this.expressionMap.onUpdate.overwrite = statement.overwrite.map(function (column) { return column + \" = VALUES(\" + column + \")\"; }).join(\", \");\n }\n else if (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof CockroachDriver) {\n this.expressionMap.onUpdate.overwrite = statement.overwrite.map(function (column) { return _this.escape(column) + \" = EXCLUDED.\" + _this.escape(column); }).join(\", \");\n }\n }\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates INSERT express used to perform insert query.\n */\n InsertQueryBuilder.prototype.createInsertExpression = function () {\n var _this = this;\n var tableName = this.getTableName(this.getMainTableName());\n var valuesExpression = this.createValuesExpression(); // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important\n var returningExpression = (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) ? null : this.createReturningExpression(); // oracle doesnt support returning with multi-row insert\n var columnsExpression = this.createColumnNamesExpression();\n var query = \"INSERT \";\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n query += \"\" + (this.expressionMap.onIgnore ? \" IGNORE \" : \"\");\n }\n query += \"INTO \" + tableName;\n // add columns expression\n if (columnsExpression) {\n query += \"(\" + columnsExpression + \")\";\n }\n else {\n if (!valuesExpression && (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)) // special syntax for mysql DEFAULT VALUES insertion\n query += \"()\";\n }\n // add OUTPUT expression\n if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n query += \" OUTPUT \" + returningExpression;\n }\n // add VALUES expression\n if (valuesExpression) {\n if (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) {\n query += \" \" + valuesExpression;\n }\n else {\n query += \" VALUES \" + valuesExpression;\n }\n }\n else {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) { // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\";\n }\n else {\n query += \" DEFAULT VALUES\";\n }\n }\n if (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof CockroachDriver) {\n query += \"\" + (this.expressionMap.onIgnore ? \" ON CONFLICT DO NOTHING \" : \"\");\n query += \"\" + (this.expressionMap.onConflict ? \" ON CONFLICT \" + this.expressionMap.onConflict : \"\");\n if (this.expressionMap.onUpdate) {\n var _a = this.expressionMap.onUpdate, overwrite = _a.overwrite, columns = _a.columns, conflict = _a.conflict;\n query += \"\" + (columns ? \" ON CONFLICT \" + conflict + \" DO UPDATE SET \" + columns : \"\");\n query += \"\" + (overwrite ? \" ON CONFLICT \" + conflict + \" DO UPDATE SET \" + overwrite : \"\");\n }\n }\n else if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n if (this.expressionMap.onUpdate) {\n var _b = this.expressionMap.onUpdate, overwrite = _b.overwrite, columns = _b.columns;\n query += \"\" + (columns ? \" ON DUPLICATE KEY UPDATE \" + columns : \"\");\n query += \"\" + (overwrite ? \" ON DUPLICATE KEY UPDATE \" + overwrite : \"\");\n }\n }\n // add RETURNING expression\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n query += \" RETURNING \" + returningExpression;\n }\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (this.connection.driver instanceof SqlServerDriver\n && this.expressionMap.mainAlias.hasMetadata\n && this.expressionMap.mainAlias.metadata.columns\n .filter(function (column) { return _this.expressionMap.insertColumns.length > 0 ? _this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert; })\n .some(function (column) { return _this.isOverridingAutoIncrementBehavior(column); })) {\n query = \"SET IDENTITY_INSERT \" + tableName + \" ON; \" + query + \"; SET IDENTITY_INSERT \" + tableName + \" OFF\";\n }\n return query;\n };\n /**\n * Gets list of columns where values must be inserted to.\n */\n InsertQueryBuilder.prototype.getInsertedColumns = function () {\n var _this = this;\n if (!this.expressionMap.mainAlias.hasMetadata)\n return [];\n return this.expressionMap.mainAlias.metadata.columns.filter(function (column) {\n // if user specified list of columns he wants to insert to, then we filter only them\n if (_this.expressionMap.insertColumns.length)\n return _this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1;\n // skip columns the user doesn't want included by default\n if (!column.isInsert) {\n return false;\n }\n // if user did not specified such list then return all columns except auto-increment one\n // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression\n if (column.isGenerated && column.generationStrategy === \"increment\"\n && !(_this.connection.driver instanceof OracleDriver)\n && !(_this.connection.driver instanceof AbstractSqliteDriver)\n && !(_this.connection.driver instanceof MysqlDriver)\n && !(_this.connection.driver instanceof AuroraDataApiDriver)\n && !(_this.connection.driver instanceof SqlServerDriver && _this.isOverridingAutoIncrementBehavior(column)))\n return false;\n return true;\n });\n };\n /**\n * Creates a columns string where values must be inserted to for INSERT INTO expression.\n */\n InsertQueryBuilder.prototype.createColumnNamesExpression = function () {\n var _this = this;\n var columns = this.getInsertedColumns();\n if (columns.length > 0)\n return columns.map(function (column) { return _this.escape(column.databaseName); }).join(\", \");\n // in the case if there are no insert columns specified and table without metadata used\n // we get columns from the inserted value map, in the case if only one inserted map is specified\n if (!this.expressionMap.mainAlias.hasMetadata && !this.expressionMap.insertColumns.length) {\n var valueSets = this.getValueSets();\n if (valueSets.length === 1)\n return Object.keys(valueSets[0]).map(function (columnName) { return _this.escape(columnName); }).join(\", \");\n }\n // get a table name and all column database names\n return this.expressionMap.insertColumns.map(function (columnName) { return _this.escape(columnName); }).join(\", \");\n };\n /**\n * Creates list of values needs to be inserted in the VALUES expression.\n */\n InsertQueryBuilder.prototype.createValuesExpression = function () {\n var _this = this;\n var valueSets = this.getValueSets();\n var columns = this.getInsertedColumns();\n // if column metadatas are given then apply all necessary operations with values\n if (columns.length > 0) {\n var expression_1 = \"\";\n var parametersCount_1 = Object.keys(this.expressionMap.nativeParameters).length;\n valueSets.forEach(function (valueSet, valueSetIndex) {\n columns.forEach(function (column, columnIndex) {\n if (columnIndex === 0) {\n if (_this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression_1 += \" SELECT \";\n }\n else {\n expression_1 += \"(\";\n }\n }\n var paramName = \"i\" + valueSetIndex + \"_\" + column.databaseName;\n // extract real value from the entity\n var value = column.getEntityValue(valueSet);\n // if column is relational and value is an object then get real referenced column value from this object\n // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 }\n // and we extract \"1\" from this object\n /*if (column.referencedColumn && value instanceof Object && !(value instanceof Function)) { // todo: check if we still need it since getEntityValue already has similar code\n value = column.referencedColumn.getEntityValue(value);\n }*/\n if (!(value instanceof Function)) {\n // make sure our value is normalized by a driver\n value = _this.connection.driver.preparePersistentValue(value, column);\n }\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\n expression_1 += \"1\";\n // } else if (column.isNestedSetLeft) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n //\n // } else if (column.isNestedSetRight) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n }\n else if (column.isDiscriminator) {\n _this.expressionMap.nativeParameters[\"discriminator_value_\" + parametersCount_1] = _this.expressionMap.mainAlias.metadata.discriminatorValue;\n expression_1 += _this.connection.driver.createParameter(\"discriminator_value_\" + parametersCount_1, parametersCount_1);\n parametersCount_1++;\n // return \"1\";\n // for create and update dates we insert current date\n // no, we don't do it because this constant is already in \"default\" value of the column\n // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example\n // } else if (column.isCreateDate || column.isUpdateDate) {\n // return \"CURRENT_TIMESTAMP\";\n // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion\n }\n else if (column.isGenerated && column.generationStrategy === \"uuid\" && !_this.connection.driver.isUUIDGenerationSupported() && value === undefined) {\n var paramName_1 = \"uuid_\" + column.databaseName + valueSetIndex;\n value = RandomGenerator.uuid4();\n _this.expressionMap.nativeParameters[paramName_1] = value;\n expression_1 += _this.connection.driver.createParameter(paramName_1, parametersCount_1);\n parametersCount_1++;\n // if value for this column was not provided then insert default value\n }\n else if (value === undefined) {\n if ((_this.connection.driver instanceof OracleDriver && valueSets.length > 1) || _this.connection.driver instanceof AbstractSqliteDriver || _this.connection.driver instanceof SapDriver) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (column.default !== undefined && column.default !== null) { // try to use default defined in the column\n expression_1 += _this.connection.driver.normalizeDefault(column);\n }\n else {\n expression_1 += \"NULL\"; // otherwise simply use NULL and pray if column is nullable\n }\n }\n else {\n expression_1 += \"DEFAULT\";\n }\n // support for SQL expressions in queries\n }\n else if (value instanceof Function) {\n expression_1 += value();\n // just any other regular value\n }\n else {\n if (_this.connection.driver instanceof SqlServerDriver)\n value = _this.connection.driver.parametrizeValue(column, value);\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n _this.expressionMap.nativeParameters[paramName] = value;\n if ((_this.connection.driver instanceof MysqlDriver || _this.connection.driver instanceof AuroraDataApiDriver) && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n var useLegacy = _this.connection.driver.options.legacySpatialSupport;\n var geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression_1 += geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \", \" + column.srid + \")\";\n }\n else {\n expression_1 += geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \")\";\n }\n }\n else if (_this.connection.driver instanceof PostgresDriver && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression_1 += \"ST_SetSRID(ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \"), \" + column.srid + \")::\" + column.type;\n }\n else {\n expression_1 += \"ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \")::\" + column.type;\n }\n }\n else if (_this.connection.driver instanceof SqlServerDriver && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression_1 += column.type + \"::STGeomFromText(\" + _this.connection.driver.createParameter(paramName, parametersCount_1) + \", \" + (column.srid || \"0\") + \")\";\n }\n else {\n expression_1 += _this.connection.driver.createParameter(paramName, parametersCount_1);\n }\n parametersCount_1++;\n }\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (_this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression_1 += \" FROM DUAL \";\n }\n else {\n expression_1 += \")\";\n }\n }\n else {\n if (_this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression_1 += \" FROM DUAL UNION ALL \";\n }\n else {\n expression_1 += \"), \";\n }\n }\n }\n else {\n expression_1 += \", \";\n }\n });\n });\n if (expression_1 === \"()\")\n return \"\";\n return expression_1;\n }\n else { // for tables without metadata\n // get values needs to be inserted\n var expression_2 = \"\";\n var parametersCount_2 = Object.keys(this.expressionMap.nativeParameters).length;\n valueSets.forEach(function (valueSet, insertionIndex) {\n var columns = Object.keys(valueSet);\n columns.forEach(function (columnName, columnIndex) {\n if (columnIndex === 0) {\n expression_2 += \"(\";\n }\n var paramName = \"i\" + insertionIndex + \"_\" + columnName;\n var value = valueSet[columnName];\n // support for SQL expressions in queries\n if (value instanceof Function) {\n expression_2 += value();\n // if value for this column was not provided then insert default value\n }\n else if (value === undefined) {\n if (_this.connection.driver instanceof AbstractSqliteDriver || _this.connection.driver instanceof SapDriver) {\n expression_2 += \"NULL\";\n }\n else {\n expression_2 += \"DEFAULT\";\n }\n // just any other regular value\n }\n else {\n _this.expressionMap.nativeParameters[paramName] = value;\n expression_2 += _this.connection.driver.createParameter(paramName, parametersCount_2);\n parametersCount_2++;\n }\n if (columnIndex === Object.keys(valueSet).length - 1) {\n if (insertionIndex === valueSets.length - 1) {\n expression_2 += \")\";\n }\n else {\n expression_2 += \"), \";\n }\n }\n else {\n expression_2 += \", \";\n }\n });\n });\n if (expression_2 === \"()\")\n return \"\";\n return expression_2;\n }\n };\n /**\n * Gets array of values need to be inserted into the target table.\n */\n InsertQueryBuilder.prototype.getValueSets = function () {\n if (Array.isArray(this.expressionMap.valuesSet))\n return this.expressionMap.valuesSet;\n if (this.expressionMap.valuesSet instanceof Object)\n return [this.expressionMap.valuesSet];\n throw new InsertValuesMissingError();\n };\n /**\n * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n InsertQueryBuilder.prototype.isOverridingAutoIncrementBehavior = function (column) {\n return column.isPrimary\n && column.isGenerated\n && column.generationStrategy === \"increment\"\n && this.getValueSets().some(function (valueSet) {\n return column.getEntityValue(valueSet) !== undefined\n && column.getEntityValue(valueSet) !== null;\n });\n };\n return InsertQueryBuilder;\n}(QueryBuilder));\nexport { InsertQueryBuilder };\n\n//# sourceMappingURL=InsertQueryBuilder.js.map\n","import { __awaiter, __extends, __generator, __read } from \"tslib\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { SapDriver } from \"../driver/sap/SapDriver\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { UpdateResult } from \"./result/UpdateResult\";\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\";\nimport { ReturningResultsEntityUpdator } from \"./ReturningResultsEntityUpdator\";\nimport { SqljsDriver } from \"../driver/sqljs/SqljsDriver\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\";\nimport { AbstractSqliteDriver } from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport { LimitOnUpdateNotSupportedError } from \"../error/LimitOnUpdateNotSupportedError\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { UpdateValuesMissingError } from \"../error/UpdateValuesMissingError\";\nimport { EntityColumnNotFound } from \"../error/EntityColumnNotFound\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { BetterSqlite3Driver } from \"../driver/better-sqlite3/BetterSqlite3Driver\";\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar UpdateQueryBuilder = /** @class */ (function (_super) {\n __extends(UpdateQueryBuilder, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function UpdateQueryBuilder(connectionOrQueryBuilder, queryRunner) {\n var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this;\n _this.expressionMap.aliasNamePrefixingEnabled = false;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n UpdateQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n UpdateQueryBuilder.prototype.execute = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, broadcastResult, declareSql, selectOutputSql, returningResultsEntityUpdator, _a, updateSql, parameters, updateResult, statements, result, broadcastResult, error_1, rollbackError_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 13, 18, 23]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata, this.expressionMap.valuesSet);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n declareSql = null;\n selectOutputSql = null;\n returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", this.expressionMap.extraReturningColumns);\n selectOutputSql = \"SELECT * FROM @OutputTable\";\n }\n }\n _a = __read(this.getQueryAndParameters(), 2), updateSql = _a[0], parameters = _a[1];\n updateResult = new UpdateResult();\n statements = [declareSql, updateSql, selectOutputSql];\n return [4 /*yield*/, queryRunner.query(statements.filter(function (sql) { return sql != null; }).join(\";\\n\\n\"), parameters)];\n case 6:\n result = _b.sent();\n if (this.connection.driver instanceof PostgresDriver) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else if (this.connection.driver instanceof MysqlDriver) {\n updateResult.raw = result;\n updateResult.affected = result.affectedRows;\n }\n else if (this.connection.driver instanceof AuroraDataApiDriver) {\n updateResult.raw = result;\n updateResult.affected = result.numberOfRecordsUpdated;\n }\n else if (this.connection.driver instanceof BetterSqlite3Driver) { // only works for better-sqlite3\n updateResult.raw = result;\n updateResult.affected = result.changes;\n }\n else {\n updateResult.raw = result;\n }\n if (!(this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0)) return [3 /*break*/, 8];\n return [4 /*yield*/, returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10:\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [2 /*return*/, updateResult];\n case 13:\n error_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 17];\n _b.label = 14;\n case 14:\n _b.trys.push([14, 16, , 17]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 15:\n _b.sent();\n return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20];\n return [4 /*yield*/, queryRunner.release()];\n case 19:\n _b.sent();\n _b.label = 20;\n case 20:\n if (!(this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive)) return [3 /*break*/, 22];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 21:\n _b.sent();\n _b.label = 22;\n case 22: return [7 /*endfinally*/];\n case 23: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Values needs to be updated.\n */\n UpdateQueryBuilder.prototype.set = function (values) {\n this.expressionMap.valuesSet = values;\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n UpdateQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n UpdateQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n UpdateQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n UpdateQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n UpdateQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n UpdateQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Optional returning/output clause.\n */\n UpdateQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n UpdateQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n this.expressionMap.returning = returning;\n return this;\n };\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n UpdateQueryBuilder.prototype.orderBy = function (sort, order, nulls) {\n var _a, _b;\n if (order === void 0) { order = \"ASC\"; }\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort;\n }\n else {\n if (nulls) {\n this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a);\n }\n else {\n this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b);\n }\n }\n }\n else {\n this.expressionMap.orderBys = {};\n }\n return this;\n };\n /**\n * Adds ORDER BY condition in the query builder.\n */\n UpdateQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) {\n if (order === void 0) { order = \"ASC\"; }\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order: order, nulls: nulls };\n }\n else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n };\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n UpdateQueryBuilder.prototype.limit = function (limit) {\n this.expressionMap.limit = limit;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n UpdateQueryBuilder.prototype.whereEntity = function (entity) {\n var _this = this;\n if (!this.expressionMap.mainAlias.hasMetadata)\n throw new Error(\".whereEntity method can only be used on queries which update real entity table.\");\n this.expressionMap.wheres = [];\n var entities = Array.isArray(entity) ? entity : [entity];\n entities.forEach(function (entity) {\n var entityIdMap = _this.expressionMap.mainAlias.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(\"Provided entity does not have ids set, cannot perform operation.\");\n _this.orWhereInIds(entityIdMap);\n });\n this.expressionMap.whereEntities = entities;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n UpdateQueryBuilder.prototype.updateEntity = function (enabled) {\n this.expressionMap.updateEntity = enabled;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates UPDATE express used to perform insert query.\n */\n UpdateQueryBuilder.prototype.createUpdateExpression = function () {\n var _this = this;\n var valuesSet = this.getValueSet();\n var metadata = this.expressionMap.mainAlias.hasMetadata ? this.expressionMap.mainAlias.metadata : undefined;\n // prepare columns and values to be updated\n var updateColumnAndValues = [];\n var updatedColumns = [];\n var newParameters = {};\n var parametersCount = this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver\n ? 0 : Object.keys(this.expressionMap.nativeParameters).length;\n if (metadata) {\n EntityMetadata.createPropertyPath(metadata, valuesSet).forEach(function (propertyPath) {\n // todo: make this and other query builder to work with properly with tables without metadata\n var columns = metadata.findColumnsWithPropertyPath(propertyPath);\n if (columns.length <= 0) {\n throw new EntityColumnNotFound(propertyPath);\n }\n columns.forEach(function (column) {\n if (!column.isUpdate) {\n return;\n }\n updatedColumns.push(column);\n var paramName = \"upd_\" + column.databaseName;\n //\n var value = column.getEntityValue(valuesSet);\n if (column.referencedColumn && value instanceof Object) {\n value = column.referencedColumn.getEntityValue(value);\n }\n else if (!(value instanceof Function)) {\n value = _this.connection.driver.preparePersistentValue(value, column);\n }\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(_this.escape(column.databaseName) + \" = \" + value());\n }\n else if (_this.connection.driver instanceof SapDriver && value === null) {\n updateColumnAndValues.push(_this.escape(column.databaseName) + \" = NULL\");\n }\n else {\n if (_this.connection.driver instanceof SqlServerDriver) {\n value = _this.connection.driver.parametrizeValue(column, value);\n // } else if (value instanceof Array) {\n // value = new ArrayParameter(value);\n }\n if (_this.connection.driver instanceof MysqlDriver ||\n _this.connection.driver instanceof AuroraDataApiDriver ||\n _this.connection.driver instanceof OracleDriver ||\n _this.connection.driver instanceof AbstractSqliteDriver ||\n _this.connection.driver instanceof SapDriver) {\n newParameters[paramName] = value;\n }\n else {\n _this.expressionMap.nativeParameters[paramName] = value;\n }\n var expression = null;\n if ((_this.connection.driver instanceof MysqlDriver || _this.connection.driver instanceof AuroraDataApiDriver) && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n var useLegacy = _this.connection.driver.options.legacySpatialSupport;\n var geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression = geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \", \" + column.srid + \")\";\n }\n else {\n expression = geomFromText + \"(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \")\";\n }\n }\n else if (_this.connection.driver instanceof PostgresDriver && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression = \"ST_SetSRID(ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \"), \" + column.srid + \")::\" + column.type;\n }\n else {\n expression = \"ST_GeomFromGeoJSON(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \")::\" + column.type;\n }\n }\n else if (_this.connection.driver instanceof SqlServerDriver && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression = column.type + \"::STGeomFromText(\" + _this.connection.driver.createParameter(paramName, parametersCount) + \", \" + (column.srid || \"0\") + \")\";\n }\n else {\n expression = _this.connection.driver.createParameter(paramName, parametersCount);\n }\n updateColumnAndValues.push(_this.escape(column.databaseName) + \" = \" + expression);\n parametersCount++;\n }\n });\n });\n if (metadata.versionColumn && updatedColumns.indexOf(metadata.versionColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn && updatedColumns.indexOf(metadata.updateDateColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n }\n else {\n Object.keys(valuesSet).map(function (key) {\n var value = valuesSet[key];\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(_this.escape(key) + \" = \" + value());\n }\n else if (_this.connection.driver instanceof SapDriver && value === null) {\n updateColumnAndValues.push(_this.escape(key) + \" = NULL\");\n }\n else {\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n if (_this.connection.driver instanceof MysqlDriver ||\n _this.connection.driver instanceof AuroraDataApiDriver ||\n _this.connection.driver instanceof OracleDriver ||\n _this.connection.driver instanceof AbstractSqliteDriver ||\n _this.connection.driver instanceof SapDriver) {\n newParameters[key] = value;\n }\n else {\n _this.expressionMap.nativeParameters[key] = value;\n }\n updateColumnAndValues.push(_this.escape(key) + \" = \" + _this.connection.driver.createParameter(key, parametersCount));\n parametersCount++;\n }\n });\n }\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n // get a table name and all column database names\n var whereExpression = this.createWhereExpression();\n var returningExpression = this.createReturningExpression();\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression + \" RETURNING \" + returningExpression;\n }\n else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + \" OUTPUT \" + returningExpression + whereExpression;\n }\n else {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression; // todo: how do we replace aliases in where to nothing?\n }\n };\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n UpdateQueryBuilder.prototype.createOrderByExpression = function () {\n var _this = this;\n var orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(function (columnName) {\n if (typeof orderBys[columnName] === \"string\") {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n }\n else {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName].order + \" \" + orderBys[columnName].nulls;\n }\n })\n .join(\", \");\n return \"\";\n };\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n UpdateQueryBuilder.prototype.createLimitExpression = function () {\n var limit = this.expressionMap.limit;\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n return \" LIMIT \" + limit;\n }\n else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n return \"\";\n };\n /**\n * Gets array of values need to be inserted into the target table.\n */\n UpdateQueryBuilder.prototype.getValueSet = function () {\n if (this.expressionMap.valuesSet instanceof Object)\n return this.expressionMap.valuesSet;\n throw new UpdateValuesMissingError();\n };\n return UpdateQueryBuilder;\n}(QueryBuilder));\nexport { UpdateQueryBuilder };\n\n//# sourceMappingURL=UpdateQueryBuilder.js.map\n","import { __awaiter, __extends, __generator, __read } from \"tslib\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { DeleteResult } from \"./result/DeleteResult\";\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\";\nimport { SqljsDriver } from \"../driver/sqljs/SqljsDriver\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\";\nimport { EntitySchema } from \"../index\";\nimport { AuroraDataApiDriver } from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { BetterSqlite3Driver } from \"../driver/better-sqlite3/BetterSqlite3Driver\";\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar DeleteQueryBuilder = /** @class */ (function (_super) {\n __extends(DeleteQueryBuilder, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function DeleteQueryBuilder(connectionOrQueryBuilder, queryRunner) {\n var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this;\n _this.expressionMap.aliasNamePrefixingEnabled = false;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n DeleteQueryBuilder.prototype.getQuery = function () {\n var sql = this.createComment();\n sql += this.createDeleteExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n DeleteQueryBuilder.prototype.execute = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, sql, parameters, queryRunner, transactionStartedByUs, broadcastResult, deleteResult, result, driver, broadcastResult, error_1, rollbackError_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = __read(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 11, 16, 21]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeRemoveEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n deleteResult = new DeleteResult();\n return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 6:\n result = _b.sent();\n driver = queryRunner.connection.driver;\n if (driver instanceof MysqlDriver) {\n deleteResult.raw = result;\n deleteResult.affected = result.affectedRows;\n }\n else if (driver instanceof AuroraDataApiDriver) {\n deleteResult.raw = result;\n deleteResult.affected = result.numberOfRecordsUpdated;\n }\n else if (driver instanceof SqlServerDriver || driver instanceof PostgresDriver || driver instanceof CockroachDriver) {\n deleteResult.raw = result[0] ? result[0] : null;\n // don't return 0 because it could confuse. null means that we did not receive this value\n deleteResult.affected = typeof result[1] === \"number\" ? result[1] : null;\n }\n else if (driver instanceof OracleDriver) {\n deleteResult.affected = result;\n }\n else if (driver instanceof BetterSqlite3Driver) { // only works for better-sqlite3\n deleteResult.raw = result;\n deleteResult.affected = result.changes;\n }\n else {\n deleteResult.raw = result;\n }\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 8];\n broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterRemoveEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 8];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8:\n if (!transactionStartedByUs) return [3 /*break*/, 10];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10: return [2 /*return*/, deleteResult];\n case 11:\n error_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 15];\n _b.label = 12;\n case 12:\n _b.trys.push([12, 14, , 15]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 13:\n _b.sent();\n return [3 /*break*/, 15];\n case 14:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 15];\n case 15: throw error_1;\n case 16:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 18];\n return [4 /*yield*/, queryRunner.release()];\n case 17:\n _b.sent();\n _b.label = 18;\n case 18:\n if (!(this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive)) return [3 /*break*/, 20];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 19:\n _b.sent();\n _b.label = 20;\n case 20: return [7 /*endfinally*/];\n case 21: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n DeleteQueryBuilder.prototype.from = function (entityTarget, aliasName) {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n var mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n DeleteQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n DeleteQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n DeleteQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n DeleteQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n DeleteQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n DeleteQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Optional returning/output clause.\n */\n DeleteQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n DeleteQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n this.expressionMap.returning = returning;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates DELETE express used to perform query.\n */\n DeleteQueryBuilder.prototype.createDeleteExpression = function () {\n var tableName = this.getTableName(this.getMainTableName());\n var whereExpression = this.createWhereExpression();\n var returningExpression = this.createReturningExpression();\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof CockroachDriver)) {\n return \"DELETE FROM \" + tableName + whereExpression + \" RETURNING \" + returningExpression;\n }\n else if (returningExpression !== \"\" && this.connection.driver instanceof SqlServerDriver) {\n return \"DELETE FROM \" + tableName + \" OUTPUT \" + returningExpression + whereExpression;\n }\n else {\n return \"DELETE FROM \" + tableName + whereExpression;\n }\n };\n return DeleteQueryBuilder;\n}(QueryBuilder));\nexport { DeleteQueryBuilder };\n\n//# sourceMappingURL=DeleteQueryBuilder.js.map\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./client/Dragger/DragHelper\"), exports);\n__exportStar(require(\"./client/Dragger/DraggedElement\"), exports);\n__exportStar(require(\"./client/HotkeyManager\"), exports);\n__exportStar(require(\"./client/InputSelect\"), exports);\n__exportStar(require(\"./client/ViewHelper\"), exports);\n//# sourceMappingURL=client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventManager = void 0;\nconst cs_event_manager_1 = require(\"cs-event-manager\");\nclass EventManager extends cs_event_manager_1.EventManager {\n}\nexports.EventManager = EventManager;\n//# sourceMappingURL=EventManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateSite = void 0;\nconst ViewInflater_1 = require(\"../ViewInflater\");\nconst MasterSite_1 = require(\"./Delegate/MasterSite\");\n/**\n * Die Seite bekommt ein Template übergeben und ersetzt in diesem Template das mit dem Selector gefundene\n * Element mit der angebenen View\n */\nclass TemplateSite extends MasterSite_1.MasterSite {\n /**\n * Constructor für eine TemplateSite\n *\n * @param siteManager\n * @param view\n * @param template\n * @param selectorToReplace\n */\n constructor(siteManager, view, template, selectorToReplace) {\n super(siteManager, template);\n this._viewPromise = Promise.all([this._viewPromise, ViewInflater_1.ViewInflater.getInstance().load(view)]).then(res => {\n res[0].querySelector(selectorToReplace).replaceWith(res[1]);\n ViewInflater_1.ViewInflater.replaceWithChildren(res[1]);\n this._view = res[0];\n return res[0];\n }).catch(e => console.error(e));\n }\n}\nexports.TemplateSite = TemplateSite;\n//# sourceMappingURL=TemplateSite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Menu = void 0;\nconst Helper_1 = require(\"../../Legacy/Helper\");\nconst MenuAction_1 = require(\"./MenuAction/MenuAction\");\nconst OpenSubmenuAction_1 = require(\"./MenuAction/OpenSubmenuAction\");\n/**\n * Klasse für ein Menü, was im Prinzip nichts anderes als eine Collection für MenuActions ist\n * Ein Menü hat einen oder mehrere Renderer, die für die Anzeige zuständig sind\n */\nclass Menu {\n /**\n * Setzt die Renderer und die initialen Actions\n *\n * @param renderer\n * @param actions\n */\n constructor(renderer, actions) {\n this._actions = [];\n this._renderers = [];\n this._submenus = [];\n if (Array.isArray(renderer)) {\n this._renderers = renderer;\n }\n else {\n this._renderers = [renderer];\n }\n //Initialisiert onClickListener\n this._onClickListener = this._generateOnClickListener();\n //Setze die Actions so, um einzelne Actions noch zu überprüfen\n Helper_1.Helper.nonNull(actions, []).forEach(action => {\n this.addAction(action, false);\n });\n this._openSubmenuListener = null;\n }\n /**\n * Erstellt ein neues Menu auf grundlage dieses Menüs. Alle Actions & Submenüs werden ebenfalls kopiert\n * @param menu\n * @return {Menu}\n */\n copy(menu) {\n menu = Helper_1.Helper.nonNull(menu, new Menu());\n menu._actions = [];\n this._actions.forEach(action => {\n menu.addAction(action.copy());\n });\n menu._renderers = this._renderers;\n menu._onClickListener = this._onClickListener;\n return menu;\n }\n /**\n * Schließt das Menü, hauptsächlich hier zum Schließen der Submenüs.\n * Zum öffnen wird nicht so eine Funktion gebraucht, da beim öffnen nicht die untermenüs geöffnet werden sollen\n */\n close() {\n this._submenus.forEach(submenu => {\n submenu.close();\n });\n }\n /**\n * Fügt eine Action dem Menü hinzu\n *\n * @param action\n * @param redraw\n */\n addAction(action, redraw) {\n //Überprüfung, ob es die richtige Klasse ist und ob die Action nicht schon hinzugefügt wurde\n if (action instanceof MenuAction_1.MenuAction && this._actions.indexOf(action) === -1) {\n //Falls es sich um ein Submenu handelt, füge dieses hinzu\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n this._submenus.push(action.getSubmenu());\n }\n this._actions.push(action);\n action.setMenu(this);\n //Falls redraw true (oder nicht angegeben, redraw)\n if (Helper_1.Helper.nonNull(redraw, true)) {\n this.redraw();\n }\n }\n }\n removeAllActions(redraw) {\n this._actions.forEach(action => action.setMenu(null));\n this._actions = [];\n this._submenus = [];\n //Falls redraw true (oder nicht angegeben, redraw)\n if (Helper_1.Helper.nonNull(redraw, true)) {\n this.redraw();\n }\n }\n /**\n * Sortiert die Actions und sagt danach den Renderern, dass diese das Menü zeuchnen sollen\n */\n draw() {\n try {\n this.sortActions();\n this._renderers.forEach(renderer => {\n renderer.render(this);\n });\n }\n catch (e) {\n console.error(e);\n }\n }\n /**\n * Sortiert die Actions der Order nach\n */\n sortActions() {\n this._actions = this._actions.sort(function (first, second) {\n return first.getOrder() - second.getOrder();\n });\n }\n openSubmenu(submenu) {\n if (this._openSubmenuListener) {\n this._openSubmenuListener(submenu);\n }\n }\n setOpenSubmenuListener(listener) {\n this._openSubmenuListener = listener;\n }\n /**\n * Generiert den defaultmäßigen onclick-listener.\n * @returns {Function}\n * @private\n */\n _generateOnClickListener() {\n return (event) => {\n let _element = event.target;\n //Falls es eine Action oder ein Unterlement einer Action war...\n if (_element.matches('li') || _element.matches('li *')) {\n //...finde das zugehörige Element und lese ID aus\n _element = _element.closest(\"li\");\n let actionId = parseInt(_element.dataset[\"id\"]);\n //Schaue nach, welche Action angeklickt wurde\n for (let i = 0, n = this._actions.length; i < n; i++) {\n if (this._actions[i].getId() === actionId) {\n //Falls action eine Funktion (und kein Link), sowie aktiv ist, führe action aus\n if (typeof this._actions[i].getAction() === 'function' && this._actions[i].isActivated()) {\n this._actions[i].getAction()(this._actions[i], event);\n event.preventDefault();\n }\n //Gebe gefundene Action zurück\n return this._actions[i];\n }\n }\n //Falls action nicht gefunden (da noch nicht beendet), suche in den submenüs nach der Action\n for (let i = 0, n = this._submenus.length; i < n; i++) {\n let action = this._submenus[i].click(actionId, event);\n if (action) {\n return action;\n }\n }\n }\n return null;\n };\n }\n /**\n * Setzt den OnClickListener\n *\n * @param listener\n */\n setOnClickListener(listener) {\n this._onClickListener = listener;\n }\n /**\n * Gibt den OnClickListener zurück\n *\n * @returns {*}\n */\n getOnClickListener() {\n return this._onClickListener;\n }\n /**\n * Gibt die Actions zurück\n * @returns {Array}\n */\n getActions() {\n return this._actions;\n }\n /**\n * Triggert ein neues Rendern für eine Action. Das entsprechende ActionElement wird ausgetauscht\n * @param action\n */\n redrawAction(action) {\n this._renderers.forEach(renderer => {\n renderer._triggerRenderAction(action);\n });\n }\n /**\n * Updated das entsprechende ActionElement abhängig vom Renderer. Das Element wird nicht ausgetauscht\n * @param action\n */\n updateAction(action) {\n this._renderers.forEach(renderer => {\n renderer.updateAction(action);\n });\n }\n /**\n * alias für draw\n */\n redraw() {\n this.draw();\n }\n}\nexports.Menu = Menu;\n//# sourceMappingURL=Menu.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AccordionRenderer = void 0;\nconst OpenSubmenuAction_1 = require(\"../MenuAction/OpenSubmenuAction\");\nconst MenuRenderer_1 = require(\"./MenuRenderer\");\nconst Helper_1 = require(\"../../../Legacy/Helper\");\nconst Translator_1 = require(\"../../../Translator\");\n/**\n * Leitet von DropdownRenderer ab, da Funktionalität fast gleich ist\n */\nclass AccordionRenderer extends MenuRenderer_1.MenuRenderer {\n /**\n * Rendert eine Action\n *\n * @param action\n * @returns {HTMLLIElement}\n */\n renderAction(action) {\n let linkElement = this.renderLinkElement(action);\n let liElement = this.renderLiElement(action);\n liElement.insertBefore(linkElement, liElement.firstChild);\n return liElement;\n }\n /**\n * Rendert das AnchorElement für eine Action\n * @param action\n * @returns {HTMLAnchorElement}\n */\n renderLinkElement(action) {\n let aElement = document.createElement(\"a\");\n if (typeof action.getAction() === 'string') {\n aElement.href = action.getAction();\n }\n if (Helper_1.Helper.isNotNull(action.getIcon())) {\n let iconElement = document.createElement(\"img\");\n iconElement.src = action.getIcon();\n iconElement.classList.add('action-image');\n if (action.isShouldTranslate()) {\n iconElement.dataset[\"translationTitle\"] = action.getName();\n iconElement.classList.add(Translator_1.Translator.getInstance().getTranslationClass());\n }\n else {\n iconElement.title = action.getName();\n }\n aElement.appendChild(iconElement);\n }\n let name = action.getName();\n // debugger;\n if (action.isShouldTranslate()) {\n name = Translator_1.Translator.makePersistentTranslation(name);\n }\n else {\n name = document.createTextNode(name);\n }\n aElement.appendChild(name);\n return aElement;\n }\n /**\n * Render das LI-Element für eine Action\n *\n * @param action\n * @returns {HTMLLIElement}\n */\n renderLiElement(action) {\n let liElement = document.createElement(\"li\");\n if (action.getLiClass().trim() !== \"\") {\n liElement.classList.add(...action.getLiClass().split(\" \"));\n }\n // liElement.appendChild(aElement);\n liElement.dataset[\"id\"] = action.getId();\n if (Helper_1.Helper.isNotNull(action.getIcon())) {\n liElement.classList.add(\"img\");\n }\n if (!action.isVisible()) {\n liElement.classList.add(\"hidden\");\n }\n liElement.classList.add(action.getShowFor());\n return liElement;\n }\n /**\n * Da abgeleitet von DropdownRenderer, muss eine Klasse wieder entfernt werden\n *\n * @param action\n * @returns {*}\n */\n renderSubmenuAction(action) {\n let submenuActionElement = super.renderSubmenuAction(action);\n submenuActionElement.classList.remove('is-dropdown-submenu-parent');\n submenuActionElement.classList.add('is-accordion-submenu-parent');\n return submenuActionElement;\n }\n /**\n * erstellt ein SubmenuParent für Accordion\n * @param action\n * @returns {HTMLUListElement}\n */\n createSubmenuParentElement(action) {\n let menuElement = document.createElement(\"ul\");\n menuElement.classList.add(\"menu\");\n menuElement.classList.add(\"vertical\");\n menuElement.classList.add(\"submenu\");\n menuElement.classList.add(\"accordion-menu\");\n menuElement.classList.add(\"is-accordion-submenu\");\n menuElement.classList.add(\"first-sub\");\n return menuElement;\n }\n /**\n * Updatet ein ActionElement\n * @param action\n */\n updateAction(action) {\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n let submenuElement = this.getElementForAction(action).querySelector(\".submenu\");\n if (action.getSubmenu().isOpen()) {\n this.getElementForAction(action).setAttribute(\"aria-expanded\", true);\n submenuElement.classList.add(\"js-active\");\n submenuElement.style = \"\";\n }\n else {\n this.getElementForAction(action).removeAttribute(\"aria-expanded\");\n submenuElement.classList.remove(\"js-activ\");\n submenuElement.style = \"display:none;\";\n }\n }\n }\n}\nexports.AccordionRenderer = AccordionRenderer;\n//# sourceMappingURL=AccordionRenderer.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EasySyncPartialModel = void 0;\nconst EasySyncBaseModel_1 = require(\"./EasySyncBaseModel\");\nconst _typeorm = require(\"typeorm\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst XSSHelper_1 = require(\"js-helper/dist/shared/XSSHelper\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nlet typeorm = _typeorm;\n// if (typeorm.default) {\n// typeorm = typeorm.default;\n// }\nclass EasySyncPartialModel extends EasySyncBaseModel_1.EasySyncBaseModel {\n static findByIds(ids, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.find({\n \"id\": typeorm.In(ids)\n }, null, null, null, relations);\n });\n }\n static findById(id, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.findOne({\n \"id\": id\n }, null, null, relations);\n });\n }\n static findByClientId(id, relations) {\n const _super = Object.create(null, {\n findById: { get: () => super.findById }\n });\n return __awaiter(this, void 0, void 0, function* () {\n return _super.findById.call(this, id, relations);\n });\n }\n static findByClientIds(ids, relations) {\n const _super = Object.create(null, {\n findById: { get: () => super.findById }\n });\n return __awaiter(this, void 0, void 0, function* () {\n return _super.findById.call(this, ids, relations);\n });\n }\n toJSON(includeFull) {\n let relations = this.constructor.getRelationDefinitions();\n let columns = this.constructor.getColumnDefinitions();\n let obj = {};\n Object.keys(columns).forEach(attribute => {\n if (attribute !== \"clientId\") {\n obj[attribute] = this[attribute];\n }\n });\n Object.keys(relations).forEach(relationName => {\n if (includeFull === true) {\n obj[relationName] = this[relationName];\n }\n else {\n if (Array.isArray(this[relationName])) {\n let ids = [];\n this[relationName].forEach(child => (child && ids.push(child.id)));\n obj[relationName] = ids;\n }\n else if (this[relationName] instanceof cordova_sites_database_1.BaseModel) {\n obj[relationName] = this[relationName].id;\n }\n else {\n obj[relationName] = null;\n }\n }\n });\n return obj;\n }\n static _fromJson(jsonObjects, entities, includeRelations) {\n return __awaiter(this, void 0, void 0, function* () {\n entities = entities || [];\n let isArray = Array.isArray(jsonObjects);\n if (!isArray) {\n jsonObjects = [jsonObjects];\n }\n if (!Array.isArray(entities)) {\n entities = [entities];\n }\n let loadPromises = [];\n let addLoadPromises = [];\n jsonObjects.forEach((jsonObject, index) => {\n addLoadPromises.push(new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let entity = null;\n if (entities.length > index) {\n entity = entities[index];\n }\n else if (Helper_1.Helper.isNotNull(jsonObject.id)) {\n entity = yield this.findById(jsonObject.id, this.getRelations());\n }\n if (entity === null) {\n entity = new this();\n }\n if (!jsonObject.version) {\n jsonObject.version = 1;\n }\n entities[index] = Object.assign(entity, jsonObject);\n this._handleColumns_(entities[index]);\n this._handleRelations_(entities[index], includeRelations, loadPromises);\n resolve();\n })));\n });\n //addLoadPromises adds other loadPromises. Therefore wait until done, then wait for other\n yield Promise.all(addLoadPromises);\n yield Promise.all(loadPromises);\n if (!isArray) {\n entities = (entities.length > 0) ? entities[0] : null;\n }\n return entities;\n });\n }\n static _handleRelations_(entity, includeRelations, loadPromises) {\n let relations = this.getRelationDefinitions();\n Object.keys(relations).forEach(relationName => {\n let values = entity[relationName];\n if (typeof values === \"number\" || (Array.isArray(values) && values.length >= 1 && typeof values[0] === \"number\")) {\n if (includeRelations === true) {\n let loadPromise = null;\n if (Array.isArray(values)) {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findByIds(values);\n }\n else {\n loadPromise = cordova_sites_database_1.BaseDatabase.getModel(relations[relationName].target).findById(values);\n }\n loadPromises.push(loadPromise.then(value => {\n entity[relationName] = value;\n }));\n }\n else if (includeRelations === false) {\n if (relations[relationName].type === \"many-to-many\" || relations[relationName].type === \"one-to-many\") {\n entity[relationName] = [];\n }\n else {\n entity[relationName] = null;\n }\n }\n }\n });\n }\n static _handleColumns_(entity) {\n let schemaDefinition = this.getSchemaDefinition();\n let columns = schemaDefinition[\"columns\"];\n Object.keys(columns).forEach(columnName => {\n if (columns[columnName].escapeHTML) {\n entity[columnName] = XSSHelper_1.XSSHelper.escapeHTML(entity[columnName]);\n }\n if (columns[columnName].escapeJS) {\n entity[columnName] = XSSHelper_1.XSSHelper.escapeJS(entity[columnName]);\n }\n });\n }\n}\nexports.EasySyncPartialModel = EasySyncPartialModel;\nEasySyncPartialModel.CAN_BE_SYNCED = true;\n//# sourceMappingURL=EasySyncPartialModel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileMedium = void 0;\nconst EasySyncBaseModel_1 = require(\"./EasySyncBaseModel\");\nconst BaseDatabase_1 = require(\"cordova-sites-database/dist/BaseDatabase\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nclass FileMedium extends EasySyncBaseModel_1.EasySyncBaseModel {\n constructor() {\n super(...arguments);\n this.saveOffline = true;\n this._isDownloaded = true;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"src\"] = BaseDatabase_1.BaseDatabase.TYPES.MEDIUMTEXT;\n columns[\"saveOffline\"] = { type: BaseDatabase_1.BaseDatabase.TYPES.BOOLEAN, default: 1 };\n return columns;\n }\n getServerUrl(appendDate) {\n appendDate = Helper_1.Helper.nonNull(appendDate, true);\n if (!this.src.startsWith(\"http\") && !this.src.startsWith(\"//\") && !this.src.startsWith(\"data\")) {\n let path = FileMedium.PUBLIC_PATH + this.src;\n if (appendDate) {\n path += \"?t=\" + new Date(this.updatedAt).getTime();\n }\n return path;\n }\n return this.src;\n }\n getUrl() {\n if (device.platform !== \"browser\" && this.saveOffline && this._isDownloaded && Helper_1.Helper.isNotNull(this.id) && !this.src.startsWith(\"data\") && !this.src.startsWith(\"http\")) {\n return \"cdvfile://localhost/persistent/\" + this.src;\n }\n else {\n return this.getServerUrl();\n }\n }\n toString() {\n console.warn(\"to string called on FileMedium. Only for dependency. Please look inside your sourcecode\");\n return this.getUrl();\n }\n}\nexports.FileMedium = FileMedium;\nFileMedium.PUBLIC_PATH = \"./\";\nFileMedium.SCHEMA_NAME = \"FileMedium\";\nBaseDatabase_1.BaseDatabase.addModel(FileMedium);\n//# sourceMappingURL=FileMedium.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Role = void 0;\nconst shared_1 = require(\"cordova-sites-easy-sync/dist/shared\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nconst Access_1 = require(\"./Access\");\nclass Role extends shared_1.EasySyncBaseModel {\n constructor() {\n super();\n this.name = null;\n this.description = null;\n this.accesses = null;\n this.parents = null;\n this.children = null;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"name\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n columns[\"description\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n return columns;\n }\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"accesses\"] = {\n target: Access_1.Access.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"roleAccess\"\n },\n cascade: false\n };\n relations[\"parents\"] = {\n target: Role.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"roleChildren\",\n joinColumn: {\n name: \"childId\",\n referencedColumnName: \"id\"\n },\n inverseJoinColumn: {\n name: \"parentId\",\n referencedColumnName: \"id\"\n }\n },\n cascade: false\n };\n relations[\"children\"] = {\n target: Role.getSchemaName(),\n type: \"many-to-many\",\n joinTable: {\n name: \"roleChildren\",\n joinColumn: {\n name: \"parentId\",\n referencedColumnName: \"id\"\n },\n inverseJoinColumn: {\n name: \"childId\",\n referencedColumnName: \"id\"\n }\n },\n cascade: false\n };\n return relations;\n }\n}\nexports.Role = Role;\nRole.CAN_BE_SYNCED = false;\ncordova_sites_database_1.BaseDatabase.addModel(Role);\n//# sourceMappingURL=Role.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StartUserSiteMenuAction = void 0;\nconst UserMenuAction_1 = require(\"./UserMenuAction\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nclass StartUserSiteMenuAction extends UserMenuAction_1.UserMenuAction {\n constructor(name, access, site, showFor, order, icon) {\n super(name, access, () => {\n if (client_1.StartSiteMenuAction._app) {\n if (Array.isArray(site) && site.length >= 2) {\n client_1.StartSiteMenuAction._app.startSite(site[0], site[1]);\n }\n else {\n client_1.StartSiteMenuAction._app.startSite(site);\n }\n }\n }, showFor, order, icon);\n }\n}\nexports.StartUserSiteMenuAction = StartUserSiteMenuAction;\n//# sourceMappingURL=StartUserSiteMenuAction.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilePromise = void 0;\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst FileWriterPromise_1 = require(\"./FileWriterPromise\");\nclass FilePromise {\n constructor(fileEntry) {\n this.fileEntry = fileEntry;\n }\n createWriter() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((res) => {\n this.fileEntry.createWriter(writer => {\n res(new FileWriterPromise_1.FileWriterPromise(writer));\n });\n });\n });\n }\n static open(file, options) {\n return __awaiter(this, void 0, void 0, function* () {\n options = Helper_1.Helper.nonNull(options, { create: true, exclusive: false });\n return new Promise((r, rej) => {\n window[\"resolveLocalFileSystemURL\"](\"cdvfile://localhost/persistent/\", dirEntry => {\n dirEntry.getFile(file, options, fileEntry => {\n r(new FilePromise(fileEntry));\n }, rej);\n }, rej);\n });\n });\n }\n}\nexports.FilePromise = FilePromise;\n//# sourceMappingURL=FilePromise.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { SapDriver } from \"../driver/sap/SapDriver\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nvar RelationUpdater = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationUpdater(queryBuilder, expressionMap) {\n this.queryBuilder = queryBuilder;\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs set or add operation on a relation.\n */\n RelationUpdater.prototype.update = function (value) {\n return __awaiter(this, void 0, void 0, function () {\n var relation, updateSet, updateSet_1, ofs, parameters_1, conditions_1, condition, of_1, updateSet, junctionMetadata_1, ofs, values, firstColumnValues, secondColumnValues_1, bulkInserted_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n relation = this.expressionMap.relationMetadata;\n if (!(relation.isManyToOne || relation.isOneToOneOwner)) return [3 /*break*/, 2];\n updateSet = relation.joinColumns.reduce(function (updateSet, joinColumn) {\n var relationValue = value instanceof Object ? joinColumn.referencedColumn.getEntityValue(value) : value;\n joinColumn.setEntityValue(updateSet, relationValue);\n return updateSet;\n }, {});\n if (!this.expressionMap.of || (Array.isArray(this.expressionMap.of) && !this.expressionMap.of.length))\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.entityMetadata.target)\n .set(updateSet)\n .whereInIds(this.expressionMap.of)\n .execute()];\n case 1:\n _a.sent();\n return [3 /*break*/, 10];\n case 2:\n if (!((relation.isOneToOneNotOwner || relation.isOneToMany) && value === null)) return [3 /*break*/, 4];\n updateSet_1 = {};\n relation.inverseRelation.joinColumns.forEach(function (column) {\n updateSet_1[column.propertyName] = null;\n });\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n parameters_1 = {};\n conditions_1 = [];\n ofs.forEach(function (of, ofIndex) {\n relation.inverseRelation.joinColumns.map(function (column, columnIndex) {\n var parameterName = \"joinColumn_\" + ofIndex + \"_\" + columnIndex;\n parameters_1[parameterName] = of instanceof Object ? column.referencedColumn.getEntityValue(of) : of;\n conditions_1.push(column.propertyPath + \" = :\" + parameterName);\n });\n });\n condition = conditions_1.map(function (str) { return \"(\" + str + \")\"; }).join(\" OR \");\n if (!condition)\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet_1)\n .where(condition)\n .setParameters(parameters_1)\n .execute()];\n case 3:\n _a.sent();\n return [3 /*break*/, 10];\n case 4:\n if (!(relation.isOneToOneNotOwner || relation.isOneToMany)) return [3 /*break*/, 6];\n if (Array.isArray(this.expressionMap.of))\n throw new Error(\"You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.\");\n of_1 = this.expressionMap.of;\n updateSet = relation.inverseRelation.joinColumns.reduce(function (updateSet, joinColumn) {\n var relationValue = of_1 instanceof Object ? joinColumn.referencedColumn.getEntityValue(of_1) : of_1;\n joinColumn.setEntityValue(updateSet, relationValue);\n return updateSet;\n }, {});\n if (!value || (Array.isArray(value) && !value.length))\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .whereInIds(value)\n .execute()];\n case 5:\n _a.sent();\n return [3 /*break*/, 10];\n case 6:\n junctionMetadata_1 = relation.junctionEntityMetadata;\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n values = Array.isArray(value) ? value : [value];\n firstColumnValues = relation.isManyToManyOwner ? ofs : values;\n secondColumnValues_1 = relation.isManyToManyOwner ? values : ofs;\n bulkInserted_1 = [];\n firstColumnValues.forEach(function (firstColumnVal) {\n secondColumnValues_1.forEach(function (secondColumnVal) {\n var inserted = {};\n junctionMetadata_1.ownerColumns.forEach(function (column) {\n inserted[column.databaseName] = firstColumnVal instanceof Object ? column.referencedColumn.getEntityValue(firstColumnVal) : firstColumnVal;\n });\n junctionMetadata_1.inverseColumns.forEach(function (column) {\n inserted[column.databaseName] = secondColumnVal instanceof Object ? column.referencedColumn.getEntityValue(secondColumnVal) : secondColumnVal;\n });\n bulkInserted_1.push(inserted);\n });\n });\n if (!bulkInserted_1.length)\n return [2 /*return*/];\n if (!(this.queryBuilder.connection.driver instanceof OracleDriver || this.queryBuilder.connection.driver instanceof SapDriver)) return [3 /*break*/, 8];\n return [4 /*yield*/, Promise.all(bulkInserted_1.map(function (value) {\n return _this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata_1.tableName)\n .values(value)\n .execute();\n }))];\n case 7:\n _a.sent();\n return [3 /*break*/, 10];\n case 8: return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata_1.tableName)\n .values(bulkInserted_1)\n .execute()];\n case 9:\n _a.sent();\n _a.label = 10;\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n return RelationUpdater;\n}());\nexport { RelationUpdater };\n\n//# sourceMappingURL=RelationUpdater.js.map\n","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nvar RelationRemover = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RelationRemover(queryBuilder, expressionMap) {\n this.queryBuilder = queryBuilder;\n this.expressionMap = expressionMap;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Performs remove operation on a relation.\n */\n RelationRemover.prototype.remove = function (value) {\n return __awaiter(this, void 0, void 0, function () {\n var relation, ofs, values_1, updateSet_1, parameters_1, conditions_1, condition, junctionMetadata_1, ofs, values, firstColumnValues, secondColumnValues_1, parameters_2, conditions_2, condition;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n relation = this.expressionMap.relationMetadata;\n if (!relation.isOneToMany) return [3 /*break*/, 2];\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n values_1 = Array.isArray(value) ? value : [value];\n updateSet_1 = {};\n relation.inverseRelation.joinColumns.forEach(function (column) {\n updateSet_1[column.propertyName] = null;\n });\n parameters_1 = {};\n conditions_1 = [];\n ofs.forEach(function (of, ofIndex) {\n conditions_1.push.apply(conditions_1, __spreadArray([], __read(values_1.map(function (value, valueIndex) {\n return __spreadArray(__spreadArray([], __read(relation.inverseRelation.joinColumns.map(function (column, columnIndex) {\n var parameterName = \"joinColumn_\" + ofIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters_1[parameterName] = of instanceof Object ? column.referencedColumn.getEntityValue(of) : of;\n return column.propertyPath + \" = :\" + parameterName;\n }))), __read(relation.inverseRelation.entityMetadata.primaryColumns.map(function (column, columnIndex) {\n var parameterName = \"primaryColumn_\" + valueIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters_1[parameterName] = value instanceof Object ? column.getEntityValue(value) : value;\n return column.propertyPath + \" = :\" + parameterName;\n }))).join(\" AND \");\n }))));\n });\n condition = conditions_1.map(function (str) { return \"(\" + str + \")\"; }).join(\" OR \");\n if (!condition)\n return [2 /*return*/];\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet_1)\n .where(condition)\n .setParameters(parameters_1)\n .execute()];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n junctionMetadata_1 = relation.junctionEntityMetadata;\n ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n values = Array.isArray(value) ? value : [value];\n firstColumnValues = relation.isManyToManyOwner ? ofs : values;\n secondColumnValues_1 = relation.isManyToManyOwner ? values : ofs;\n parameters_2 = {};\n conditions_2 = [];\n firstColumnValues.forEach(function (firstColumnVal, firstColumnValIndex) {\n conditions_2.push.apply(conditions_2, __spreadArray([], __read(secondColumnValues_1.map(function (secondColumnVal, secondColumnValIndex) {\n return __spreadArray(__spreadArray([], __read(junctionMetadata_1.ownerColumns.map(function (column, columnIndex) {\n var parameterName = \"firstValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters_2[parameterName] = firstColumnVal instanceof Object ? column.referencedColumn.getEntityValue(firstColumnVal) : firstColumnVal;\n return column.databaseName + \" = :\" + parameterName;\n }))), __read(junctionMetadata_1.inverseColumns.map(function (column, columnIndex) {\n var parameterName = \"secondValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters_2[parameterName] = secondColumnVal instanceof Object ? column.referencedColumn.getEntityValue(secondColumnVal) : secondColumnVal;\n return column.databaseName + \" = :\" + parameterName;\n }))).join(\" AND \");\n }))));\n });\n condition = conditions_2.map(function (str) { return \"(\" + str + \")\"; }).join(\" OR \");\n return [4 /*yield*/, this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata_1.tableName)\n .where(condition)\n .setParameters(parameters_2)\n .execute()];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return RelationRemover;\n}());\nexport { RelationRemover };\n\n//# sourceMappingURL=RelationRemover.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { RelationUpdater } from \"./RelationUpdater\";\nimport { RelationRemover } from \"./RelationRemover\";\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nvar RelationQueryBuilder = /** @class */ (function (_super) {\n __extends(RelationQueryBuilder, _super);\n function RelationQueryBuilder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n RelationQueryBuilder.prototype.getQuery = function () {\n return \"\";\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Sets entity (target) which relations will be updated.\n */\n RelationQueryBuilder.prototype.of = function (entity) {\n this.expressionMap.of = entity;\n return this;\n };\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n */\n RelationQueryBuilder.prototype.set = function (value) {\n return __awaiter(this, void 0, void 0, function () {\n var relation, updater;\n return __generator(this, function (_a) {\n relation = this.expressionMap.relationMetadata;\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(\"Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.\");\n if (relation.isManyToMany || relation.isOneToMany)\n throw new Error(\"Set operation is only supported for many-to-one and one-to-one relations. \" +\n (\"However given \\\"\" + relation.propertyPath + \"\\\" has \" + relation.relationType + \" relation. \") +\n \"Use .add() method instead.\");\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(\"Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \\\"...\\\", lastName: \\\"...\\\" })\");\n updater = new RelationUpdater(this, this.expressionMap);\n return [2 /*return*/, updater.update(value)];\n });\n });\n };\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n RelationQueryBuilder.prototype.add = function (value) {\n return __awaiter(this, void 0, void 0, function () {\n var relation, updater;\n return __generator(this, function (_a) {\n if (Array.isArray(value) && value.length === 0)\n return [2 /*return*/];\n relation = this.expressionMap.relationMetadata;\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(\"Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.\");\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(\"Add operation is only supported for many-to-many and one-to-many relations. \" +\n (\"However given \\\"\" + relation.propertyPath + \"\\\" has \" + relation.relationType + \" relation. \") +\n \"Use .set() method instead.\");\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(\"Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \\\"...\\\", lastName: \\\"...\\\" })\");\n updater = new RelationUpdater(this, this.expressionMap);\n return [2 /*return*/, updater.update(value)];\n });\n });\n };\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n RelationQueryBuilder.prototype.remove = function (value) {\n return __awaiter(this, void 0, void 0, function () {\n var relation, remover;\n return __generator(this, function (_a) {\n if (Array.isArray(value) && value.length === 0)\n return [2 /*return*/];\n relation = this.expressionMap.relationMetadata;\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(\"Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.\");\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(\"Add operation is only supported for many-to-many and one-to-many relations. \" +\n (\"However given \\\"\" + relation.propertyPath + \"\\\" has \" + relation.relationType + \" relation. \") +\n \"Use .set(null) method instead.\");\n remover = new RelationRemover(this, this.expressionMap);\n return [2 /*return*/, remover.remove(value)];\n });\n });\n };\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n RelationQueryBuilder.prototype.addAndRemove = function (added, removed) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.remove(removed)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.add(added)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Gets entity's relation id.\n async getId(): Promise {\n\n }*/\n /**\n * Gets entity's relation ids.\n async getIds(): Promise {\n return [];\n }*/\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n RelationQueryBuilder.prototype.loadOne = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.loadMany().then(function (results) { return results[0]; })];\n });\n });\n };\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n RelationQueryBuilder.prototype.loadMany = function () {\n return __awaiter(this, void 0, void 0, function () {\n var of, metadata;\n return __generator(this, function (_a) {\n of = this.expressionMap.of;\n if (!(of instanceof Object)) {\n metadata = this.expressionMap.mainAlias.metadata;\n if (metadata.hasMultiplePrimaryKeys)\n throw new Error(\"Cannot load entity because only one primary key was specified, however entity contains multiple primary keys\");\n of = metadata.primaryColumns[0].createValueMap(of);\n }\n return [2 /*return*/, this.connection.relationLoader.load(this.expressionMap.relationMetadata, of, this.queryRunner)];\n });\n });\n };\n return RelationQueryBuilder;\n}(QueryBuilder));\nexport { RelationQueryBuilder };\n\n//# sourceMappingURL=RelationQueryBuilder.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShareManager = void 0;\nconst ShareDialog_1 = require(\"./ShareDialog\");\nclass ShareManager {\n share(text) {\n if (device.platform === \"browser\") {\n this._shareBrowser(text);\n }\n else {\n this._shareMobile(text);\n }\n }\n _shareMobile(text) {\n navigator[\"share\"](text);\n }\n _shareBrowser(text) {\n new ShareDialog_1.ShareDialog(text).show();\n }\n}\nexports.ShareManager = ShareManager;\n//# sourceMappingURL=ShareManager.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst BaseDatabase_1 = require(\"./BaseDatabase\");\nclass BaseModel {\n constructor() {\n this.id = null;\n this._isLoaded = false;\n }\n getId() {\n return this.id;\n }\n setId(id) {\n this.id = id;\n }\n static getColumnDefinitions() {\n return {\n id: {\n primary: true,\n type: BaseDatabase_1.BaseDatabase.TYPES.INTEGER,\n generated: true\n },\n };\n }\n static getRelationDefinitions() {\n return {};\n }\n static getRelations() {\n return Object.keys(this.getRelationDefinitions());\n }\n static getSchemaDefinition() {\n let columns = this.getColumnDefinitions();\n Object.keys(columns).forEach(column => {\n if (typeof columns[column] === \"string\") {\n columns[column] = { type: columns[column] };\n }\n if (columns[column].type === BaseDatabase_1.BaseDatabase.TYPES.MY_JSON && !columns[column].transformer) {\n columns[column].type = BaseDatabase_1.BaseDatabase.TYPES.MEDIUMTEXT;\n columns[column].transformer = {\n from: text => {\n return (text ? JSON.parse(text) : null);\n },\n to: json => {\n return (json ? JSON.stringify(json) : \"\");\n }\n };\n }\n });\n return {\n name: this.getSchemaName(),\n target: this,\n columns: columns,\n relations: this.getRelationDefinitions()\n };\n }\n static getSchemaName() {\n if (!this.SCHEMA_NAME) {\n this.SCHEMA_NAME = this.name;\n }\n return this.SCHEMA_NAME;\n }\n setLoaded(isLoaded) {\n this._isLoaded = isLoaded;\n }\n save() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.constructor._database.saveEntity(this);\n });\n }\n delete() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.constructor._database.deleteEntity(this);\n });\n }\n static deleteMany(entities) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.deleteEntity(entities);\n });\n }\n static saveMany(entities) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.saveEntity(entities);\n });\n }\n static find(where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findEntities(this, where, order, limit, offset, relations);\n });\n }\n static findAndCount(where, order, limit, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findAndCountEntities(this, where, order, limit, offset, relations);\n });\n }\n static findOne(where, order, offset, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findOneEntity(this, where, order, offset, relations);\n });\n }\n static findById(id, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findById(this, id, relations);\n });\n }\n static findByIds(ids, relations) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.findByIds(this, ids, relations);\n });\n }\n static clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._database.clearModel(this);\n });\n }\n static equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {\n return a.every((subA, index) => {\n this.equals(subA, b[index]);\n });\n }\n else if (a instanceof this && b instanceof this) {\n return a.constructor === b.constructor && a.getId() === b.getId();\n }\n }\n}\nexports.BaseModel = BaseModel;\n/**\n * @type {null | BaseDatabase}\n * @private\n */\nBaseModel._database = null;\nBaseModel.RELATION = {\n MANY_TO_MANY: \"many-to-many\",\n MANY_TO_ONE: \"many-to-one\",\n ONE_TO_MANY: \"one-to-many\",\n ONE_TO_ONE: \"one-to-one\"\n};\n//# sourceMappingURL=BaseModel.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncJob = void 0;\nconst LastSyncDates_1 = require(\"./LastSyncDates\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst shared_1 = require(\"js-helper/dist/shared\");\nconst EasySyncClientDb_1 = require(\"./EasySyncClientDb\");\nconst typeorm = require(\"typeorm\");\nconst EasySyncBaseModel_1 = require(\"../shared/EasySyncBaseModel\");\nconst ClientFileMedium_1 = require(\"./ClientFileMedium\");\nconst FileMedium_1 = require(\"../shared/FileMedium\");\nconst BaseDatabase_1 = require(\"cordova-sites-database/dist/BaseDatabase\");\nclass SyncJob {\n constructor() {\n this._syncedModels = {};\n this._modelNames = [];\n this._relationshipModels = {};\n this._lastSyncDates = {};\n this._keyedModelClasses = {};\n this._savePromise = Promise.resolve();\n this._queryRunner = null;\n this._finalRes = {};\n this._manyToManyRelations = {};\n }\n syncInBackgroundIfDataExists(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let copiedQuery = shared_1.JsonHelper.deepCopy(queries);\n let requestQueries = this._buildRequestQuery(copiedQuery);\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n this._syncPromise = this.sync(queries);\n if (Object[\"values\"](this._lastSyncDates).some(lastSync => {\n return lastSync[\"getLastSynced\"]() === 0;\n })) {\n yield this._syncPromise;\n }\n });\n }\n getSyncPromise() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._syncPromise;\n });\n }\n sync(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let requestQueries = this._buildRequestQuery(queries);\n if (Object.keys(this._lastSyncDates).length === 0) {\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n }\n yield this._doRuns(requestQueries);\n //Save new lastSync models\n let lastSyncPromises = [];\n Object.keys(this._lastSyncDates).forEach(model => {\n lastSyncPromises.push(this._lastSyncDates[model].save());\n });\n yield Promise.all(lastSyncPromises);\n //disabled in doRuns. Cannot be reenabled sooner, but since lastSyncDates should not have any relations, it should be okay\n yield EasySyncClientDb_1.EasySyncClientDb.getInstance().rawQuery(\"PRAGMA foreign_keys = ON;\");\n if (this._finalRes[\"FileMedium\"] && this._finalRes[\"FileMedium\"][\"changed\"]) {\n yield ClientFileMedium_1.ClientFileMedium._handleImages(yield FileMedium_1.FileMedium.findByIds(this._finalRes[\"FileMedium\"][\"changed\"]));\n }\n return this._finalRes;\n });\n }\n _doRuns(requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Initialize some variables\n let newLastSynced = null;\n let response = null;\n let offset = 0;\n //startTransaction maybe allow read, but not write?\n this._queryRunner = yield EasySyncClientDb_1.EasySyncClientDb.getInstance().createQueryRunner();\n this._savePromise = this._queryRunner.query(\"PRAGMA foreign_keys = OFF;\").then(() => {\n return this._queryRunner.startTransaction();\n });\n //Ask for next run until no more runs needed\n let shouldAskAgain;\n do {\n shouldAskAgain = false;\n response = yield SyncJob._fetchModel(requestQueries, offset);\n offset = response[\"nextOffset\"];\n //Update newLastSynced\n if (shared_1.Helper.isNull(newLastSynced)) {\n newLastSynced = parseInt(response[\"newLastSynced\"]);\n Object.keys(this._lastSyncDates).forEach(key => {\n this._lastSyncDates[key].setLastSynced(newLastSynced);\n });\n }\n //create new request query and save changes\n let newRequestQueries = [];\n response.results.forEach((res, i) => {\n if (res && res.shouldAskAgain) {\n shouldAskAgain = true;\n newRequestQueries.push(requestQueries[i]);\n }\n //Extract entities\n this._extractEntities(res);\n });\n requestQueries = newRequestQueries;\n } while (shouldAskAgain);\n yield this._handleManyToManyRelations();\n //wait for savePromises, stop transaction\n return this._savePromise.then(() => __awaiter(this, void 0, void 0, function* () {\n yield this._queryRunner.commitTransaction();\n })).catch((e) => __awaiter(this, void 0, void 0, function* () {\n console.error(e);\n yield this._queryRunner.rollbackTransaction();\n })).finally(() => __awaiter(this, void 0, void 0, function* () {\n yield this._queryRunner.release();\n }));\n });\n }\n /**\n * Extract the Entities and saves them(?) for one model\n *\n * @param modelRes\n * @private\n */\n _extractEntities(modelRes) {\n if (!modelRes) {\n return;\n }\n let modelClass = this._keyedModelClasses[modelRes[\"model\"]];\n let modelName = modelClass.getSchemaName();\n let deletedModelsIds = [];\n let changedEntities = [];\n //split result into deleted and changed/new entities\n modelRes[\"entities\"].forEach(entity => {\n if (entity.deleted) {\n deletedModelsIds.push(entity.id);\n }\n else {\n changedEntities.push(entity);\n }\n });\n this._syncedModels[modelName] = shared_1.Helper.nonNull(this._syncedModels[modelName], {});\n //convert json to entity and save it\n let schemaDefinition = modelClass.getSchemaDefinition();\n let relations = schemaDefinition[\"relations\"];\n let columns = schemaDefinition[\"columns\"];\n let changedEntityIds = [];\n changedEntities.forEach(entity => {\n Object.keys(relations).forEach(relation => {\n if (relations[relation].type === \"many-to-many\" && Array.isArray(entity[relation])) {\n let table = relations[relation].joinTable;\n let ownName;\n if (table.joinColumn && table.joinColumn.name) {\n ownName = table.joinColumn.name;\n }\n else {\n ownName = modelClass.getSchemaName();\n ownName = ownName.substr(0, 1).toLowerCase() + ownName.substr(1) + \"Id\";\n }\n let otherName;\n if (table.inverseJoinColumn && table.inverseJoinColumn.name) {\n otherName = table.inverseJoinColumn.name;\n }\n else {\n otherName = relations[relation].target;\n otherName = otherName.substr(0, 1).toLowerCase() + otherName.substr(1) + \"Id\";\n }\n this._manyToManyRelations[table.name] = shared_1.Helper.nonNull(this._manyToManyRelations[table.name], {});\n this._manyToManyRelations[table.name][\"values\"] = shared_1.Helper.nonNull(this._manyToManyRelations[table.name][\"values\"], []);\n this._manyToManyRelations[table.name][\"delete_\" + ownName] = shared_1.Helper.nonNull(this._manyToManyRelations[table.name][\"delete_\" + ownName], []);\n this._manyToManyRelations[table.name][\"delete_\" + ownName].push(entity.id);\n let otherIdsAlreadyInserted = [];\n let insertedRelations = this._manyToManyRelations[table.name][\"values\"].filter(relValue => relValue[ownName] === entity.id);\n insertedRelations.forEach(relValue => otherIdsAlreadyInserted.push(relValue[otherName]));\n entity[relation].forEach(otherId => {\n let index = otherIdsAlreadyInserted.indexOf(otherId);\n if (index === -1) {\n let value = {};\n value[ownName] = entity.id;\n value[otherName] = otherId;\n this._manyToManyRelations[table.name][\"values\"].push(value);\n }\n });\n }\n else if ((relations[relation].type === \"many-to-one\"\n || (relations[relation].type === \"one-to-one\" && relations[relation].joinColumn))\n //DO not check for a value of the relation here. Else If the first entity has no value set, the field\n // will not be set and therefore ignored for all other entites too\n ) {\n let fieldName;\n if (relations[relation].joinColumn && relations[relation].joinColumn.name) {\n fieldName = relations[relation].joinColumn.name;\n }\n else {\n fieldName = relation + \"Id\";\n }\n entity[fieldName] = entity[relation];\n }\n delete entity[relation];\n });\n Object.keys(columns).forEach(columnName => {\n if (columns[columnName].escapeHTML) {\n entity[columnName] = shared_1.XSSHelper.escapeHTML(entity[columnName]);\n }\n if (columns[columnName].escapeJS) {\n entity[columnName] = shared_1.XSSHelper.escapeJS(entity[columnName]);\n }\n });\n changedEntityIds.push(entity.id);\n });\n this._savePromise = this._savePromise.then(() => __awaiter(this, void 0, void 0, function* () { return yield this._insertOrReplace(modelClass, changedEntities); }));\n this._savePromise = this._savePromise.then(() => __awaiter(this, void 0, void 0, function* () { return yield this._deleteModels(modelClass, deletedModelsIds); }));\n this._finalRes[modelName] = shared_1.Helper.nonNull(this._finalRes[modelName], { \"deleted\": [], \"changed\": [] });\n this._finalRes[modelName][\"deleted\"].push(...deletedModelsIds);\n this._finalRes[modelName][\"changed\"].push(...changedEntityIds);\n }\n _buildRequestQuery(queries) {\n let requestQueries = [];\n //initializing query\n queries.forEach(query => {\n if (query.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel) {\n query = {\n model: query,\n where: {}\n };\n }\n query.model = query.model.getSchemaName();\n this._modelNames.push(query.model);\n requestQueries.push(query);\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNotNull(this._lastSyncDates[key])) {\n query[\"lastSynced\"] = this._lastSyncDates[key].getLastSynced();\n }\n });\n return requestQueries;\n }\n _getLastSyncModels(modelNames, requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Load syncModels\n let lastSyncModelsArray = yield LastSyncDates_1.LastSyncDates.find({\n \"model\": typeorm.In(modelNames)\n });\n let lastSyncDates = shared_1.Helper.arrayToObject(lastSyncModelsArray, model => \"\" + model.getModel() + JSON.stringify(model.where));\n requestQueries.forEach(query => {\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNull(lastSyncDates[key])) {\n let lastSyncDate = new LastSyncDates_1.LastSyncDates();\n lastSyncDate.setModel(query.model);\n lastSyncDate.where = query.where;\n lastSyncDate.setLastSynced(0);\n lastSyncDates[key] = lastSyncDate;\n }\n query[\"lastSynced\"] = lastSyncDates[key].getLastSynced();\n });\n return lastSyncDates;\n });\n }\n static _fetchModel(query, offset) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield client_1.DataManager.load(SyncJob.SYNC_PATH_PREFIX +\n client_1.DataManager.buildQuery({\n \"queries\": JSON.stringify(query),\n \"offset\": offset\n }));\n });\n }\n _insertOrReplace(modelClass, changedEntities) {\n return __awaiter(this, void 0, void 0, function* () {\n const MAX_INSERT_IN_ONE_GO = 300;\n if (changedEntities.length === 0) {\n return;\n }\n let schemaDefinition = modelClass.getSchemaDefinition();\n let tableName = schemaDefinition.name;\n tableName = shared_1.Helper.toSnakeCase(tableName);\n let columns = schemaDefinition.columns;\n //Get fields from entity for including relation fields\n const fields = Object.keys(changedEntities[0]);\n let values = [];\n let valueStrings = [];\n yield shared_1.Helper.asyncForEach(changedEntities, (entity) => __awaiter(this, void 0, void 0, function* () {\n let valueString = [];\n //Stellt die reihenfolge sicher\n fields.forEach(field => {\n let val = entity[field];\n if (columns[field] && columns[field].transformer) {\n val = columns[field].transformer.to(val);\n }\n if (columns[field] && columns[field].type === BaseDatabase_1.BaseDatabase.TYPES.SIMPLE_JSON) {\n val = JSON.stringify(val);\n }\n values.push(val);\n valueString.push(\"?\");\n });\n valueStrings.push(\"(\" + valueString.join(\",\") + \")\");\n if (valueStrings.length >= MAX_INSERT_IN_ONE_GO) {\n let sql = \"INSERT OR REPLACE INTO \" + tableName + \" (\" + fields.join(\",\") + \") VALUES \" + valueStrings.join(\",\");\n yield this._queryRunner.query(sql, values);\n valueStrings = [];\n values = [];\n }\n }));\n if (valueStrings.length > 0) {\n let sql = \"INSERT OR REPLACE INTO \" + tableName + \" (\" + fields.join(\",\") + \") VALUES \" + valueStrings.join(\",\");\n yield this._queryRunner.query(sql, values);\n }\n });\n }\n _deleteModels(modelClass, deletedModelsIds) {\n return __awaiter(this, void 0, void 0, function* () {\n const MAX_DELETES_IN_ONE_GO = 300;\n if (deletedModelsIds.length === 0) {\n return;\n }\n let tableName = modelClass.getSchemaName();\n tableName = shared_1.Helper.toSnakeCase(tableName);\n let ids = [];\n let valueStrings = [];\n yield shared_1.Helper.asyncForEach(deletedModelsIds, (entityId) => __awaiter(this, void 0, void 0, function* () {\n ids.push(entityId);\n valueStrings.push(\"?\");\n if (valueStrings.length >= MAX_DELETES_IN_ONE_GO) {\n let sql = \"DELETE FROM \" + tableName + \" WHERE id IN (\" + ids.join(\",\") + \")\";\n yield this._queryRunner.query(sql);\n valueStrings = [];\n ids = [];\n }\n }));\n if (valueStrings.length > 0) {\n let sql = \"DELETE FROM \" + tableName + \" WHERE id IN (\" + ids.join(\",\") + \")\";\n yield this._queryRunner.query(sql);\n }\n });\n }\n _handleManyToManyRelations() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._savePromise;\n let promises = [];\n Object.keys(this._manyToManyRelations).forEach(table => {\n let sql = \"DELETE FROM \" + table + \" WHERE \";\n let deleteSqls = [];\n Object.keys(this._manyToManyRelations[table]).forEach(field => {\n if (field.startsWith(\"delete_\")) {\n deleteSqls.push(field.substr(7) + \" IN (\" + this._manyToManyRelations[table][field].join(\",\") + \")\");\n }\n });\n sql += deleteSqls.join(\" OR \") + \";\";\n promises.push(this._queryRunner.query(sql).then(() => {\n if (this._manyToManyRelations[table].values.length > 0) {\n let fields = Object.keys(this._manyToManyRelations[table].values[0]);\n let valueStrings = [];\n this._manyToManyRelations[table].values.forEach(valuePair => {\n let values = [];\n fields.forEach(field => {\n values.push(valuePair[field]);\n });\n valueStrings.push(\"(\" + values.join(\",\") + \")\");\n });\n let sql = \"INSERT OR REPLACE INTO \" + table + \"(\" + fields.join(\",\") + \") VALUES \" + valueStrings.join(\",\") + \";\";\n return this._queryRunner.query(sql);\n }\n }));\n });\n yield Promise.all(promises);\n });\n }\n}\nexports.SyncJob = SyncJob;\nSyncJob.SYNC_PATH_PREFIX = \"sync\";\n//# sourceMappingURL=SyncJob.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteUserManagement1000000000000 = void 0;\nclass DeleteUserManagement1000000000000 {\n _isServer() {\n return (typeof document !== \"object\");\n }\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield queryRunner.dropTable(\"roleAccess\", true);\n yield queryRunner.dropTable(\"roleChildren\", true);\n yield queryRunner.dropTable(\"userRole\", true);\n if (this._isServer()) {\n yield queryRunner.dropTable(\"user_access\", true);\n }\n yield queryRunner.dropTable(\"access\", true);\n yield queryRunner.dropTable(\"role\", true);\n yield queryRunner.dropTable(\"user\", true);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\nexports.DeleteUserManagement1000000000000 = DeleteUserManagement1000000000000;\n//# sourceMappingURL=DeleteUserManagement.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetupUserManagement1000000001000 = void 0;\nconst typeorm_1 = require(\"typeorm\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nclass SetupUserManagement1000000001000 {\n _isServer() {\n return (typeof document !== \"object\");\n }\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._addAccess(queryRunner);\n yield this._addRole(queryRunner);\n yield this._addUser(queryRunner);\n yield this._addRoleAccess(queryRunner);\n yield this._addRoleChildren(queryRunner);\n yield this._addUserRole(queryRunner);\n if (this._isServer()) {\n yield this._addUserAccess(queryRunner);\n }\n });\n }\n _addAccess(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let accessTable = new typeorm_1.Table({\n name: \"access\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\"\n },\n {\n name: \"createdAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"updatedAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"version\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n },\n {\n name: \"deleted\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"name\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isUnique: true\n },\n {\n name: \"description\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING\n }\n ]\n });\n return yield queryRunner.createTable(accessTable, true);\n });\n }\n _addRole(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let roleTable = new typeorm_1.Table({\n name: \"role\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\"\n },\n {\n name: \"createdAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"updatedAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"version\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n },\n {\n name: \"deleted\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"name\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n },\n {\n name: \"description\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING\n }\n ]\n });\n return yield queryRunner.createTable(roleTable, true);\n });\n }\n _addUser(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let userTable = new typeorm_1.Table({\n name: \"user\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\"\n },\n {\n name: \"createdAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"updatedAt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n },\n {\n name: \"version\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n },\n {\n name: \"deleted\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"username\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isUnique: true\n },\n {\n name: \"email\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isUnique: true\n },\n {\n name: \"password\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n },\n {\n name: \"activated\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"blocked\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.BOOLEAN,\n },\n {\n name: \"salt\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n },\n ]\n });\n return yield queryRunner.createTable(userTable, true);\n });\n }\n _addRoleAccess(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let roleAccessTable = new typeorm_1.Table({\n name: \"roleAccess\",\n columns: [\n {\n name: \"roleId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"accessId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n }\n ],\n indices: [\n {\n name: \"IDX_38300dd4683a436f8db90b42bd\",\n columnNames: [\"roleId\"]\n },\n {\n name: \"IDX_bd55fc382ad2480f75a17e33cb\",\n columnNames: [\"accessId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_38300dd4683a436f8db90b42bd9\",\n columnNames: [\"roleId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_bd55fc382ad2480f75a17e33cb5\",\n columnNames: [\"accessId\"],\n referencedTableName: \"access\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(roleAccessTable, true);\n });\n }\n _addRoleChildren(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let roleChildrenTable = new typeorm_1.Table({\n name: \"roleChildren\",\n columns: [\n {\n name: \"childId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"parentId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n }\n ],\n indices: [\n {\n name: \"IDX_030234c342756c67cefa480687\",\n columnNames: [\"childId\"]\n },\n {\n name: \"IDX_35741f2d68a65c2765047705f8\",\n columnNames: [\"parentId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_roleChildren_childId\",\n columnNames: [\"childId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_roleChildren_parentId\",\n columnNames: [\"parentId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(roleChildrenTable, true);\n });\n }\n _addUserRole(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let userRoleTable = new typeorm_1.Table({\n name: \"userRole\",\n columns: [\n {\n name: \"userId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"roleId\",\n isPrimary: true,\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n }\n ],\n indices: [\n {\n name: \"IDX_userRole_userId\",\n columnNames: [\"userId\"]\n },\n {\n name: \"IDX_userRole_roleId\",\n columnNames: [\"roleId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_userRole_userId\",\n columnNames: [\"userId\"],\n referencedTableName: \"user\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_userRole_roleId\",\n columnNames: [\"roleId\"],\n referencedTableName: \"role\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(userRoleTable, true);\n });\n }\n _addUserAccess(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let userRoleTable = new typeorm_1.Table({\n name: \"user_access\",\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isGenerated: this._isServer(),\n generationStrategy: \"increment\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER\n },\n {\n name: \"userId\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isNullable: true\n },\n {\n name: \"accessId\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.INTEGER,\n isNullable: true\n }\n ],\n indices: [\n {\n name: \"IDX_userAccess_userId\",\n columnNames: [\"userId\"]\n },\n {\n name: \"IDX_userAccess_accessId\",\n columnNames: [\"accessId\"]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_userAccess_userId\",\n columnNames: [\"userId\"],\n referencedTableName: \"user\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_userAccess_accessId\",\n columnNames: [\"accessId\"],\n referencedTableName: \"access\",\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return yield queryRunner.createTable(userRoleTable, true);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\nexports.SetupUserManagement1000000001000 = SetupUserManagement1000000001000;\n//# sourceMappingURL=SetupUserManagement.js.map","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Translator = void 0;\nconst shared_1 = require(\"js-helper/dist/shared\");\n/**\n * Singleton-Klasse zum Übersetzen von Text-Inhalten\n */\nclass Translator {\n /**\n * Erstellt einen neuen Translator\n * @param config\n */\n constructor(config = {\n translations: {},\n fallbackLanguage: \"en\",\n markUntranslatedTranslations: true,\n markTranslations: false,\n logMissingTranslations: true\n }) {\n this._dynamicKey = 0;\n this._translations = {};\n this.addDynamicTranslations(Translator._translations);\n this.addDynamicTranslations(config.translations);\n this._fallbackLanguage = config.fallbackLanguage;\n this._markUntranslatedTranslations = config.markUntranslatedTranslations;\n this._markTranslations = config.markTranslations;\n if (config.logMissingTranslations === true) {\n this._logMissingTranslationsFunction = (missingTranslation, language) => {\n if (language === this._fallbackLanguage) {\n console.error(\"missing base translation for key \" + missingTranslation);\n }\n else {\n console.warn(\"missing translation for language >\" + language + \"< and key >\" + missingTranslation + \"<\");\n }\n };\n }\n else if (typeof config.logMissingTranslations === \"function\") {\n this._logMissingTranslationsFunction = config.logMissingTranslations;\n }\n else {\n this._logMissingTranslationsFunction = null;\n }\n this._translationCallbacks = new Map();\n this._lastTranslationCallbackId = 0;\n }\n createDynamicKey() {\n this._dynamicKey++;\n return \"translator-dynamic-\" + new Date().getTime() + \"-\" + this._dynamicKey;\n }\n /**\n * Übersetzt sofort einen Key in die aktuelle Sprache\n * @param key\n * @param args\n * @param language\n * @returns {*}\n */\n translate(key, args, language) {\n if (shared_1.Helper.isNull(key)) {\n return \"\";\n }\n language = shared_1.Helper.nonNull(language, args, this._fallbackLanguage);\n let translation = null;\n key = key.toLowerCase();\n if (shared_1.Helper.isNotNull(this._translations[language]) && shared_1.Helper.isNotNull(this._translations[language][key])) {\n translation = this._translations[language][key];\n }\n if (!Translator._isValid(translation)) {\n if (this._logMissingTranslationsFunction !== null) {\n this._logMissingTranslationsFunction(key, language);\n }\n if (this._translations[this._fallbackLanguage]) {\n translation = this._translations[this._fallbackLanguage][key];\n }\n if (!Translator._isValid(translation)) {\n if (this._logMissingTranslationsFunction !== null) {\n this._logMissingTranslationsFunction(key, language);\n }\n translation = key;\n }\n if (this._markUntranslatedTranslations) {\n translation = \">>\" + translation + \"<<\";\n }\n }\n if (this._markTranslations) {\n translation = \"$\" + translation + \"$\";\n }\n if (args !== undefined) {\n translation = Translator._format(translation, args);\n }\n return translation;\n }\n /**\n * Fügt neue Übersetzungen hinzu\n * @param trans\n */\n addDynamicTranslations(trans) {\n for (let lang in trans) {\n if (!this._translations[lang]) {\n this._translations[lang] = {};\n }\n for (let key in trans[lang]) {\n this._translations[lang][key.toLowerCase()] = trans[lang][key];\n }\n }\n }\n getLanguages() {\n return Object.keys(this._translations);\n }\n getFallbackLanguage() {\n return this._fallbackLanguage;\n }\n static translate(key, args, language) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.translate(key, args, language);\n }\n return \"\";\n }\n static addDynamicTranslations(trans) {\n let instance = Translator.getInstance();\n if (instance) {\n return instance.addDynamicTranslations(trans);\n }\n else {\n Object.keys(trans).forEach(lang => {\n if (shared_1.Helper.isNull(Translator._translations[lang])) {\n Translator._translations[lang] = {};\n }\n Object.assign(Translator._translations[lang], trans[lang]);\n });\n }\n }\n static init(config) {\n Translator.instance = new Translator(config);\n }\n /**\n * @returns {Translator|null}\n */\n static getInstance() {\n return Translator.instance;\n }\n static _isValid(translation) {\n return (typeof translation === \"string\");\n }\n static _format(translation, args) {\n return translation.replace(/{(\\d+)}/g, function (match, number) {\n return args[number] !== undefined ? args[number] : match;\n });\n }\n}\nexports.Translator = Translator;\nTranslator._translations = {};\nTranslator.instance = null;\n//# sourceMappingURL=Translator.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","import { __awaiter, __extends, __generator, __read } from \"tslib\";\nimport { CockroachDriver } from \"../driver/cockroachdb/CockroachDriver\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\";\nimport { PostgresDriver } from \"../driver/postgres/PostgresDriver\";\nimport { UpdateResult } from \"./result/UpdateResult\";\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\";\nimport { ReturningResultsEntityUpdator } from \"./ReturningResultsEntityUpdator\";\nimport { SqljsDriver } from \"../driver/sqljs/SqljsDriver\";\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\";\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\";\nimport { AbstractSqliteDriver } from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport { LimitOnUpdateNotSupportedError } from \"../error/LimitOnUpdateNotSupportedError\";\nimport { MissingDeleteDateColumnError } from \"../error/MissingDeleteDateColumnError\";\nimport { OracleDriver } from \"../driver/oracle/OracleDriver\";\nimport { UpdateValuesMissingError } from \"../error/UpdateValuesMissingError\";\nimport { EntitySchema } from \"../entity-schema/EntitySchema\";\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nvar SoftDeleteQueryBuilder = /** @class */ (function (_super) {\n __extends(SoftDeleteQueryBuilder, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SoftDeleteQueryBuilder(connectionOrQueryBuilder, queryRunner) {\n var _this = _super.call(this, connectionOrQueryBuilder, queryRunner) || this;\n _this.expressionMap.aliasNamePrefixingEnabled = false;\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n /**\n * Gets generated sql query without parameters being replaced.\n */\n SoftDeleteQueryBuilder.prototype.getQuery = function () {\n var sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n };\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n SoftDeleteQueryBuilder.prototype.execute = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queryRunner, transactionStartedByUs, broadcastResult, returningResultsEntityUpdator, _a, sql, parameters, updateResult, result, driver, broadcastResult, error_1, rollbackError_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queryRunner = this.obtainQueryRunner();\n transactionStartedByUs = false;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 13, 18, 23]);\n if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];\n return [4 /*yield*/, queryRunner.startTransaction()];\n case 2:\n _b.sent();\n transactionStartedByUs = true;\n _b.label = 3;\n case 3:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 5];\n broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 5];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n }\n _a = __read(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];\n updateResult = new UpdateResult();\n return [4 /*yield*/, queryRunner.query(sql, parameters)];\n case 6:\n result = _b.sent();\n driver = queryRunner.connection.driver;\n if (driver instanceof PostgresDriver) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else {\n updateResult.raw = result;\n }\n if (!(this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias.hasMetadata &&\n this.expressionMap.whereEntities.length > 0)) return [3 /*break*/, 8];\n return [4 /*yield*/, returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8:\n if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];\n broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias.metadata);\n if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10];\n return [4 /*yield*/, Promise.all(broadcastResult.promises)];\n case 9:\n _b.sent();\n _b.label = 10;\n case 10:\n if (!transactionStartedByUs) return [3 /*break*/, 12];\n return [4 /*yield*/, queryRunner.commitTransaction()];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [2 /*return*/, updateResult];\n case 13:\n error_1 = _b.sent();\n if (!transactionStartedByUs) return [3 /*break*/, 17];\n _b.label = 14;\n case 14:\n _b.trys.push([14, 16, , 17]);\n return [4 /*yield*/, queryRunner.rollbackTransaction()];\n case 15:\n _b.sent();\n return [3 /*break*/, 17];\n case 16:\n rollbackError_1 = _b.sent();\n return [3 /*break*/, 17];\n case 17: throw error_1;\n case 18:\n if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 20];\n return [4 /*yield*/, queryRunner.release()];\n case 19:\n _b.sent();\n _b.label = 20;\n case 20:\n if (!(this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive)) return [3 /*break*/, 22];\n return [4 /*yield*/, this.connection.driver.autoSave()];\n case 21:\n _b.sent();\n _b.label = 22;\n case 22: return [7 /*endfinally*/];\n case 23: return [2 /*return*/];\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Specifies FROM which entity's table select/update/delete/soft-delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n SoftDeleteQueryBuilder.prototype.from = function (entityTarget, aliasName) {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n var mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return this;\n };\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n SoftDeleteQueryBuilder.prototype.where = function (where, parameters) {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n var condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SoftDeleteQueryBuilder.prototype.andWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n SoftDeleteQueryBuilder.prototype.orWhere = function (where, parameters) {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters)\n this.setParameters(parameters);\n return this;\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n SoftDeleteQueryBuilder.prototype.whereInIds = function (ids) {\n return this.where(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n SoftDeleteQueryBuilder.prototype.andWhereInIds = function (ids) {\n return this.andWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n SoftDeleteQueryBuilder.prototype.orWhereInIds = function (ids) {\n return this.orWhere(this.createWhereIdsExpression(ids));\n };\n /**\n * Optional returning/output clause.\n */\n SoftDeleteQueryBuilder.prototype.output = function (output) {\n return this.returning(output);\n };\n /**\n * Optional returning/output clause.\n */\n SoftDeleteQueryBuilder.prototype.returning = function (returning) {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n this.expressionMap.returning = returning;\n return this;\n };\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n SoftDeleteQueryBuilder.prototype.orderBy = function (sort, order, nulls) {\n var _a, _b;\n if (order === void 0) { order = \"ASC\"; }\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort;\n }\n else {\n if (nulls) {\n this.expressionMap.orderBys = (_a = {}, _a[sort] = { order: order, nulls: nulls }, _a);\n }\n else {\n this.expressionMap.orderBys = (_b = {}, _b[sort] = order, _b);\n }\n }\n }\n else {\n this.expressionMap.orderBys = {};\n }\n return this;\n };\n /**\n * Adds ORDER BY condition in the query builder.\n */\n SoftDeleteQueryBuilder.prototype.addOrderBy = function (sort, order, nulls) {\n if (order === void 0) { order = \"ASC\"; }\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order: order, nulls: nulls };\n }\n else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n };\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n SoftDeleteQueryBuilder.prototype.limit = function (limit) {\n this.expressionMap.limit = limit;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n SoftDeleteQueryBuilder.prototype.whereEntity = function (entity) {\n var _this = this;\n if (!this.expressionMap.mainAlias.hasMetadata)\n throw new Error(\".whereEntity method can only be used on queries which update real entity table.\");\n this.expressionMap.wheres = [];\n var entities = Array.isArray(entity) ? entity : [entity];\n entities.forEach(function (entity) {\n var entityIdMap = _this.expressionMap.mainAlias.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(\"Provided entity does not have ids set, cannot perform operation.\");\n _this.orWhereInIds(entityIdMap);\n });\n this.expressionMap.whereEntities = entities;\n return this;\n };\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n SoftDeleteQueryBuilder.prototype.updateEntity = function (enabled) {\n this.expressionMap.updateEntity = enabled;\n return this;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates UPDATE express used to perform insert query.\n */\n SoftDeleteQueryBuilder.prototype.createUpdateExpression = function () {\n var metadata = this.expressionMap.mainAlias.hasMetadata ? this.expressionMap.mainAlias.metadata : undefined;\n if (!metadata)\n throw new Error(\"Cannot get entity metadata for the given alias \\\"\" + this.expressionMap.mainAlias + \"\\\"\");\n if (!metadata.deleteDateColumn) {\n throw new MissingDeleteDateColumnError(metadata);\n }\n // prepare columns and values to be updated\n var updateColumnAndValues = [];\n var newParameters = {};\n switch (this.expressionMap.queryType) {\n case \"soft-delete\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\");\n break;\n case \"restore\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = NULL\");\n break;\n default:\n throw new Error(\"The queryType must be \\\"soft-delete\\\" or \\\"restore\\\"\");\n }\n if (metadata.versionColumn)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n // get a table name and all column database names\n var whereExpression = this.createWhereExpression();\n var returningExpression = this.createReturningExpression();\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression + \" RETURNING \" + returningExpression;\n }\n else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + \" OUTPUT \" + returningExpression + whereExpression;\n }\n else {\n return \"UPDATE \" + this.getTableName(this.getMainTableName()) + \" SET \" + updateColumnAndValues.join(\", \") + whereExpression; // todo: how do we replace aliases in where to nothing?\n }\n };\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n SoftDeleteQueryBuilder.prototype.createOrderByExpression = function () {\n var _this = this;\n var orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(function (columnName) {\n if (typeof orderBys[columnName] === \"string\") {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n }\n else {\n return _this.replacePropertyNames(columnName) + \" \" + orderBys[columnName].order + \" \" + orderBys[columnName].nulls;\n }\n })\n .join(\", \");\n return \"\";\n };\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n SoftDeleteQueryBuilder.prototype.createLimitExpression = function () {\n var limit = this.expressionMap.limit;\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver) {\n return \" LIMIT \" + limit;\n }\n else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n return \"\";\n };\n return SoftDeleteQueryBuilder;\n}(QueryBuilder));\nexport { SoftDeleteQueryBuilder };\n\n//# sourceMappingURL=SoftDeleteQueryBuilder.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.XSSHelper = void 0;\nclass XSSHelper {\n static escapeHTML(text) {\n if (typeof text !== \"string\") {\n return text;\n }\n const MAP = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n return text.replace(/[&<>\"']/g, function (m) {\n return MAP[m];\n });\n }\n static escapeJS(text) {\n if (typeof text !== \"string\") {\n return text;\n }\n return text.replace(/[<]([\\\\s]*\\\\\\/?[\\\\s]*)script([^<]*)[>]/g, function (match, p1, p2) {\n return \"<\" + p1 + \"sc‌ript\" + p2 + \">\";\n });\n }\n}\nexports.XSSHelper = XSSHelper;\n//# sourceMappingURL=XSSHelper.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SiteManager = void 0;\nconst Helper_1 = require(\"../Legacy/Helper\");\nconst AbstractSite_1 = require(\"./AbstractSite\");\nconst ViewInflater_1 = require(\"../ViewInflater\");\nconst Context_1 = require(\"./Context\");\nconst Translator_1 = require(\"../Translator\");\nconst DataManager_1 = require(\"../DataManager\");\nconst HistoryManager_1 = require(\"../HistoryManager\");\nconst EventManager_1 = require(\"../Legacy/EventManager/EventManager\");\n/**\n * Manager-Klasse für die Seiten\n */\nclass SiteManager {\n /**\n * Constructor für Manager. Fügt Listener für zurück (onpopstate) hinzu\n */\n constructor() {\n this._isInit = false;\n }\n /**\n *\n * @return {SiteManager}\n */\n static getInstance() {\n if (!this._instance) {\n this._instance = new SiteManager();\n }\n return this._instance;\n }\n /**\n * @param siteDivId\n * @param deepLinks\n */\n init(siteDivId, deepLinks) {\n this._siteDiv = null;\n this._siteStack = [];\n this._siteDiv = document.getElementById(siteDivId);\n this._titleTranslationCallbackId = null;\n this._appEndedListener = null;\n this._inversedDeepLinks = Helper_1.Helper.invertKeyValues(deepLinks);\n //Listener, welcher beim klicken auf Zurück oder Forward ausgeführt wird\n HistoryManager_1.HistoryManager.getInstance().setOnPopStateListener((state, direction) => {\n //Falls zurück\n if (direction === HistoryManager_1.HistoryManager.BACK) {\n this.goBack();\n }\n //Falls vorwärts\n else if (HistoryManager_1.HistoryManager.FORWARD === direction) {\n if (this._siteStack.indexOf(state.state.site) !== -1) {\n this.toForeground(state.state.site);\n }\n else {\n this.startSite(state.state.site.constructor, state.state.parameters);\n }\n }\n });\n //Cordova-Callbacks\n document.addEventListener(\"pause\", () => this._pauseSite(), false);\n document.addEventListener(\"resume\", () => __awaiter(this, void 0, void 0, function* () { return yield this._resumeSite(); }), false);\n document.addEventListener(\"menubutton\", () => {\n let site = this.getCurrentSite();\n if (Helper_1.Helper.isNotNull(site)) {\n site.onMenuPressed();\n }\n }, false);\n document.addEventListener(\"searchbutton\", () => {\n let site = this.getCurrentSite();\n if (Helper_1.Helper.isNotNull(site)) {\n site.onSearchPressed();\n }\n }, false);\n window.addEventListener(\"beforeunload\", e => {\n const returnMessage = this.beforeUnload(e);\n if (returnMessage !== null) {\n e.preventDefault();\n e.returnValue = returnMessage;\n return returnMessage;\n }\n });\n this._isInit = true;\n }\n setAppEndedListener(listener) {\n this._appEndedListener = listener;\n }\n goBack() {\n if (this._siteStack.length >= 1) {\n let site = this.getCurrentSite();\n if (site && site.onBackPressed() !== false) {\n this.endSite(site);\n }\n }\n }\n /**\n * gibt die aktuelle Seite zurück\n * @returns AbstractSite\n */\n getCurrentSite() {\n if (this._siteStack.length >= 1) {\n return this._siteStack[this._siteStack.length - 1];\n }\n return null;\n }\n /**\n * Erstellt eine neue Seite und zeigt diese an. ParamsPromise kann entweder ein Promise oder ein Objekt oder null sein.\n *\n * @param siteConstructor\n * @param paramsPromise\n * @returns {Promise}\n */\n startSite(siteConstructor, paramsPromise) {\n return __awaiter(this, void 0, void 0, function* () {\n //Testen, ob der Constructor vom richtigen Typen ist\n if (!(siteConstructor.prototype instanceof AbstractSite_1.AbstractSite)) {\n throw {\n \"error\": \"wrong class given! Expected AbstractSite, given \" + siteConstructor.name\n };\n }\n EventManager_1.EventManager.trigger(\"site-manager-start-site\", {\n site: siteConstructor, paramPromise: paramsPromise\n });\n //Loading-Symbol, falls ViewParameters noch länger brauchen\n let loadingSymbol = ViewInflater_1.ViewInflater.createLoadingSymbol(\"overlay\");\n this._siteDiv.appendChild(loadingSymbol);\n //create Site\n let site = new siteConstructor(this);\n this._siteStack.unshift(site);\n //Wartet auf onConstruct, viewPromise, onViewLoaded und zeigt dann Seite\n Promise.resolve(paramsPromise).then((params) => __awaiter(this, void 0, void 0, function* () {\n site._onConstructPromise = site.onConstruct(Helper_1.Helper.nonNull(params, {}));\n yield Promise.all([site._onConstructPromise, site.getViewPromise()]);\n //If site is ended inside onConstruct, don't do anything\n if (site._state !== Context_1.Context.STATE_DESTROYED && site._state !== Context_1.Context.STATE_DESTROYING) {\n yield site.callOnViewLoaded();\n site._viewLoadedPromise.resolve();\n return this._show(site);\n }\n loadingSymbol.remove();\n })).catch((e) => {\n console.error(\"site start error for site \", siteConstructor.name, e);\n site.getFinishResolver().reject(e);\n loadingSymbol.remove();\n //Zeige alte Seite im Fehlerfall wieder an\n for (let i = this._siteStack.length - 1; i >= 0; i--) {\n if (this._siteStack[i] !== site) {\n return this._show(this._siteStack[i]);\n }\n }\n site._viewLoadedPromise.reject();\n });\n //Gebe Site-Promise zurück\n return site.getFinishPromise();\n });\n }\n updateUrl(site, args) {\n let url = this._generateUrl(site, args);\n HistoryManager_1.HistoryManager.getInstance().replaceState({\n 'site': site,\n 'parameters': args\n }, site.constructor.name, url);\n }\n _generateUrl(site, args) {\n let deepLink = this.getDeepLinkFor(site);\n let url = [location.protocol, '//', location.host, location.pathname].join('');\n if (Helper_1.Helper.isNotNull(deepLink)) {\n args[\"s\"] = deepLink;\n url = [url, DataManager_1.DataManager.buildQuery(args)].join('');\n }\n return url;\n }\n /**\n * Gibt einen DeepLink zurück\n *\n * @param site\n * @return string\n */\n getDeepLinkFor(site) {\n return this._inversedDeepLinks[site.constructor];\n }\n /**\n * Pausiert eine Seite\n *\n * @param site\n * @private\n */\n _pauseSite(site) {\n site = Helper_1.Helper.nonNull(site, this.getCurrentSite());\n if (Helper_1.Helper.isNotNull(site) && site._state === Context_1.Context.STATE_RUNNING) {\n site._pauseParameters = site.onPause();\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol());\n }\n }\n /**\n * Lässt eine Seite weiterlaufen\n *\n * @param site\n * @private\n */\n _resumeSite(site) {\n return __awaiter(this, void 0, void 0, function* () {\n site = Helper_1.Helper.nonNull(site, this.getCurrentSite());\n if (Helper_1.Helper.isNotNull(site) && (site._state === Context_1.Context.STATE_PAUSED || site._state === Context_1.Context.STATE_VIEW_LOADED)) {\n yield site.getViewPromise();\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(site._view);\n yield Translator_1.Translator.getInstance().updateTranslations();\n if (Helper_1.Helper.isNull(site._historyId)) {\n site._historyId = HistoryManager_1.HistoryManager.getInstance().pushState({\n 'site': site,\n 'parameters': site.getParameters()\n }, site.constructor.name, this._generateUrl(site, site.getParameters()));\n }\n else {\n HistoryManager_1.HistoryManager.getInstance().stateToCurrentPosition(site._historyId);\n }\n yield site.onStart(site._pauseParameters);\n }\n });\n }\n /**\n * Zeigt eine Seite an\n *\n * @param site\n * @returns {Promise<*>}\n * @private\n */\n _show(site) {\n return __awaiter(this, void 0, void 0, function* () {\n //check if site is ended\n if (site._state === Context_1.Context.STATE_DESTROYING || site._state === Context_1.Context.STATE_DESTROYED) {\n return;\n }\n //Mache nichts, wenn Seite bereits angezeigt wird\n if (site._state === Context_1.Context.STATE_RUNNING && this.getCurrentSite() === site) {\n return;\n }\n //Speichere alte Seite\n this._pauseSite();\n //Zeige Ladesymbol\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol());\n //Hinzufügen/Updaten zum SiteStack\n let currentSiteIndex = this._siteStack.indexOf(site);\n if (-1 !== currentSiteIndex) {\n this._siteStack.splice(currentSiteIndex, 1);\n }\n this._siteStack.push(site);\n //Anzeigen der Seite. Stelle sicher, dass die View wirklich geladen ist!\n return site.getViewPromise().then(() => __awaiter(this, void 0, void 0, function* () {\n //Stelle sicher, dass in der Zwischenzeit keine andere Seite gestartet wurde\n if (this.getCurrentSite() === site) {\n yield this._resumeSite(site);\n }\n }));\n });\n }\n /**\n * Beendet eine Seite. Muss nicht die aktive Seite sein\n *\n * @param site\n */\n endSite(site) {\n return __awaiter(this, void 0, void 0, function* () {\n // return site._onConstructPromise.then(async () => {\n //Aus Index entfernen\n let index = this._siteStack.indexOf(site);\n this._siteStack.splice(index, 1);\n //Seite war/ist die aktive Seite\n if (index === this._siteStack.length) {\n this._pauseSite(site);\n //Seite ist aktiv, zeige Ladesymbol\n this._siteDiv.appendChild(ViewInflater_1.ViewInflater.createLoadingSymbol('overlay'));\n site.getFinishPromise().then(() => {\n let newSiteToShow = this.getCurrentSite();\n if (Helper_1.Helper.isNotNull(newSiteToShow)) {\n this.toForeground(newSiteToShow);\n }\n });\n }\n if (this._siteStack.length <= 0) {\n console.log(\"stack is empty, starting normal site!\");\n HistoryManager_1.HistoryManager.getInstance().cutStack(0);\n HistoryManager_1.HistoryManager.getInstance().go(-1 * history.length, true);\n Helper_1.Helper.removeAllChildren(this._siteDiv).appendChild(document.createTextNode(\"App ist beendet\"));\n if (typeof this._appEndedListener === \"function\") {\n this._appEndedListener(this);\n }\n }\n site._context = Context_1.Context.STATE_DESTROYING;\n yield site.onDestroy();\n site._context = Context_1.Context.STATE_DESTROYED;\n site.getFinishResolver().resolve(site._result);\n });\n }\n /**\n * Stellt eine aktive Seite in den Vordergrund;\n * @param site\n * @returns {Promise<*>}\n */\n toForeground(site) {\n return this._show(site);\n }\n /**\n * Updated den Seitentitel. Dafür gibt es im translation-file den Key document-title (document-title-empty, falls title null),\n * der als Parameter in der Übersetzung den übergebenen Title übergeben bekommt.\n *\n * Der übergebene title wird mit den angebenenen argumenten zuerst übersetz, bevor der gesamte document-Title überstzt wird\n *\n * Wenn args === false, dann wird title nicht übersetzt\n *\n * Durch das argument titleTemplate kann der key im translation-file von document-title individuell abweichen\n *\n * @param title\n * @param args\n * @param titleTemplate\n */\n updateTitle(title, args, titleTemplate) {\n titleTemplate = Helper_1.Helper.nonNull(titleTemplate, Helper_1.Helper.isNull(title) ? \"document-title-empty\" : \"document-title\");\n if (Helper_1.Helper.isNotNull(this._titleTranslationCallbackId)) {\n Translator_1.Translator.removeTranslationCallback(this._titleTranslationCallbackId);\n }\n this._titleTranslationCallbackId = Translator_1.Translator.addTranslationCallback(() => {\n if (args !== false) {\n title = Translator_1.Translator.translate(title, args);\n }\n document.title = Translator_1.Translator.translate(titleTemplate, [title]);\n });\n }\n beforeUnload(e) {\n return this.getCurrentSite().onBeforeUnload(e);\n }\n}\nexports.SiteManager = SiteManager;\nSiteManager._instance = null;\n//# sourceMappingURL=SiteManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DraggedElement = void 0;\nclass DraggedElement {\n constructor(element) {\n this.isDragging = false;\n this.element = element;\n }\n onStart(listener) {\n this.startListener = listener;\n return this;\n }\n onStop(listener) {\n this.stopListener = listener;\n return this;\n }\n onMove(listener) {\n this.moveListener = listener;\n return this;\n }\n start() {\n this.isDragging = true;\n if (!this.previewElement) {\n this.previewElement = this.element.cloneNode(true);\n const styles = getComputedStyle(this.element);\n for (let i = 0; i < styles.length; i++) {\n this.previewElement.style[styles[i]] = styles.getPropertyValue(styles[i]);\n }\n this.previewElement.style.opacity = \"0.6\";\n this.previewElement.style.position = \"fixed\";\n }\n const boundingRect = this.element.getBoundingClientRect();\n this.startPosition = { x: boundingRect.left, y: boundingRect.top };\n this.previewElement.style.top = boundingRect.top + \"px\";\n this.previewElement.style.left = boundingRect.left + \"px\";\n this.previewElement.style.width = (boundingRect.right - boundingRect.left) + \"px\";\n this.previewElement.style.height = (boundingRect.bottom - boundingRect.top) + \"px\";\n document.body.appendChild(this.previewElement);\n if (this.startListener) {\n this.startListener(this.element);\n }\n }\n stop(mousePosition) {\n this.isDragging = false;\n if (this.previewElement) {\n this.previewElement.remove();\n }\n const droppedAt = document.elementFromPoint(mousePosition.x, mousePosition.y);\n if (this.stopListener) {\n this.stopListener(this.element, droppedAt);\n }\n }\n moved() {\n if (this.isDragging && this.moveListener) {\n this.moveListener(this.element);\n }\n }\n moveRelativeTo(relativePos) {\n if (this.startPosition && this.previewElement) {\n const newPosition = { x: this.startPosition.x + relativePos.x, y: this.startPosition.y + relativePos.y };\n this.previewElement.style.left = newPosition.x + \"px\";\n this.previewElement.style.top = newPosition.y + \"px\";\n this.moved();\n }\n }\n}\nexports.DraggedElement = DraggedElement;\n//# sourceMappingURL=DraggedElement.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotOnlineError = void 0;\nclass NotOnlineError extends Error {\n constructor(message, url) {\n super(message + \" for url \" + url);\n this._url = url;\n }\n}\nexports.NotOnlineError = NotOnlineError;\n//# sourceMappingURL=NotOnlineError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HistoryManager = void 0;\nconst Helper_1 = require(\"./Legacy/Helper\");\n/**\n * Manager, welcher sich um die Manipulation von der Historie kümmert\n */\nclass HistoryManager {\n /**\n * Constructor für den Manager. Fügt den onPopstateListener hinzu\n */\n constructor() {\n this._lastStateId = -1;\n this._states = {};\n this._stack = [];\n this._ignoreOnPopState = false;\n this._isUpdateNativeStack = false;\n this._onPopStateListener = null;\n this._currentStackIndex = -1;\n window.onpopstate = (e) => {\n //Wenn nativeStack geupdated wird, mache nichts\n if (this._isUpdateNativeStack) {\n this._isUpdateNativeStack = false;\n return;\n }\n let direction = e.state[\"type\"];\n this._currentStackIndex += direction;\n this._updateNativeHistoryStack();\n //Wenn popState ignoriert werden soll, mache ebenfalls nichts außer Stack updaten\n if (this._ignoreOnPopState) {\n this._ignoreOnPopState = false;\n return;\n }\n //Wenn Listener gesetzt, hole daten und führe Listener aus\n if (typeof this._onPopStateListener === 'function') {\n let data = {};\n if (this._stack.length > this._currentStackIndex && this._currentStackIndex >= 0) {\n data = this._states[this._stack[this._currentStackIndex]];\n }\n this._onPopStateListener(data, direction, e);\n }\n };\n this._updateNativeHistoryStack();\n }\n /**\n * Updated den History-Stack innerhalb des Browsers\n *\n * @param url\n * @private\n */\n _updateNativeHistoryStack(url) {\n url = Helper_1.Helper.nonNull(url, window.location.href);\n //setze das weitere zurückgehen\n if (this._currentStackIndex >= 0) {\n history.pushState({\n \"type\": HistoryManager.BACK,\n }, \"back\", url);\n }\n history.pushState({\n \"type\": HistoryManager.CURRENT,\n }, \"current\", url);\n if (this._currentStackIndex < this._stack.length - 1) {\n history.pushState({\n \"type\": HistoryManager.FORWARD,\n }, \"forward\", url);\n this._isUpdateNativeStack = true;\n history.go(-1);\n }\n }\n /**\n * Generiert einen neuen History-Eintrag. Gibt die ID des Eintrages zurück\n *\n * @param value\n * @param name\n * @param url\n *\n * @return {number}\n */\n pushState(value, name, url) {\n let newState = {\n state: value,\n title: name,\n url: url\n };\n this._lastStateId++;\n this._states[this._lastStateId] = newState;\n this._currentStackIndex++;\n this._stack.splice(this._currentStackIndex, this._stack.length, this._lastStateId);\n this._updateNativeHistoryStack(url);\n return this._lastStateId;\n }\n /**\n * Ersetzt den Eintrag mit der gegebenen ID. Ist die ID nicht gegeben, wird der aktuelle Eintrag ersetzt\n *\n * @param value\n * @param name\n * @param url\n * @param id\n */\n replaceState(value, name, url, id) {\n id = Helper_1.Helper.nonNull(id, this._stack[this._currentStackIndex]);\n if (this._stack.length > this._currentStackIndex && this._currentStackIndex >= 0) {\n this._states[id] = {\n state: value,\n title: name,\n url: url\n };\n this._updateNativeHistoryStack(url);\n }\n }\n /**\n * Verschiebt den Eintrag mit der entsprechenden ID an die aktuell aktive Stelle\n * @param id\n */\n stateToCurrentPosition(id) {\n if (Helper_1.Helper.isNotNull(this._states[id])) {\n let oldStackPosition = this._stack.indexOf(id);\n if (oldStackPosition !== -1) {\n this._stack.splice(oldStackPosition, 1);\n this._stack.splice(this._currentStackIndex + ((oldStackPosition <= this._currentStackIndex) ? -1 : 0), 0, id);\n }\n }\n }\n /**\n * Gehe um to in der Historie\n *\n * @param to\n * @param ignoreOnPopState\n */\n go(to, ignoreOnPopState) {\n this._ignoreOnPopState = (Helper_1.Helper.nonNull(ignoreOnPopState, false) === true);\n history.go(to);\n }\n /**\n * Entferne alle Einträge ab at (inklusive). Wenn at nicht gesetzt ist, wird alles über der aktuellen position abgeschnitten\n * @param at\n */\n cutStack(at) {\n at = Helper_1.Helper.nonNull(at, this._currentStackIndex + 1);\n this._stack.splice(at);\n this._currentStackIndex = Math.min(this._currentStackIndex, this._stack.length - 1);\n this._updateNativeHistoryStack();\n }\n /**\n * Alias für this.go(-1)\n */\n back() {\n this.go(-1);\n }\n /**\n * Alias für this.go(1)\n */\n forward() {\n this.go(+1);\n }\n /**\n * Setzt den onPopStateListener\n *\n * @param listener\n */\n setOnPopStateListener(listener) {\n this._onPopStateListener = listener;\n }\n /**\n * Singelton-Getter\n * @return {HistoryManager}\n */\n static getInstance() {\n if (Helper_1.Helper.isNull(HistoryManager._instance)) {\n HistoryManager._instance = new HistoryManager();\n }\n return HistoryManager._instance;\n }\n}\nexports.HistoryManager = HistoryManager;\nHistoryManager.BACK = -1;\nHistoryManager.FORWARD = 1;\nHistoryManager.CURRENT = 0;\n//# sourceMappingURL=HistoryManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ColorIndicator = void 0;\nconst Singleton_1 = require(\"../Singleton\");\nconst Helper_1 = require(\"../Legacy/Helper\");\nclass ColorIndicator extends Singleton_1.Singleton {\n getAverageImgColor(imgEl, areaWidth, areaHeight) {\n //https://stackoverflow.com/questions/2541481/get-average-color-of-image-via-javascript\n let blockSize = 5, // only visit every 5 pixels\n defaultRGB = { r: 255, g: 255, b: 255 }, // for non-supporting envs\n canvas = document.createElement('canvas'), context = canvas.getContext && canvas.getContext('2d'), data, width, height, i = -4 * blockSize, //start with first pixel\n length, rgb = { r: 0, g: 0, b: 0 }, count = 0;\n if (!context) {\n return defaultRGB;\n }\n height = canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height;\n width = canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width;\n areaWidth = Helper_1.Helper.nonNull(areaWidth, width);\n areaHeight = Helper_1.Helper.nonNull(areaWidth, height);\n context.drawImage(imgEl, 0, 0);\n try {\n data = context.getImageData(0, 0, Math.min(width, areaWidth), Math.min(height, areaHeight));\n }\n catch (e) {\n /* security error, img on diff domain */\n console.error(e);\n return defaultRGB;\n }\n length = data.data.length;\n while ((i += blockSize * 4) < length) {\n ++count;\n rgb.r += data.data[i];\n rgb.g += data.data[i + 1];\n rgb.b += data.data[i + 2];\n }\n // ~~ used to floor values\n rgb.r = ~~(rgb.r / count);\n rgb.g = ~~(rgb.g / count);\n rgb.b = ~~(rgb.b / count);\n return rgb;\n }\n invertColorBW(r, g, b) {\n return this.invertColor(r, g, b, true);\n }\n invertColor(r, g, b, bw) {\n if (typeof r === \"object\") {\n bw = g || bw;\n g = r.g;\n b = r.b;\n r = r.r;\n }\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\n ? { r: 0, g: 0, b: 0 }\n : { r: 255, g: 255, b: 255 };\n }\n // invert color components\n r = (255 - r);\n g = (255 - g);\n b = (255 - b);\n // pad each with zeros and return\n return {\n r: r,\n g: g,\n b: b,\n };\n }\n toHEX(r, g, b) {\n if (typeof r === \"object\") {\n g = r.g;\n b = r.b;\n r = r.r;\n }\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n return \"#\" + Helper_1.Helper.padZero(r) + Helper_1.Helper.padZero(g) + Helper_1.Helper.padZero(b);\n }\n}\nexports.ColorIndicator = ColorIndicator;\n//# sourceMappingURL=ColorIndicator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Singleton = void 0;\nclass Singleton {\n /**\n *\n * @returns {Singleton|this}\n */\n static getInstance() {\n if (!this._instance) {\n this._instance = new this();\n }\n return this._instance;\n }\n}\nexports.Singleton = Singleton;\n//# sourceMappingURL=Singleton.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MasterSite = void 0;\nconst AbstractSite_1 = require(\"../AbstractSite\");\nconst Helper_1 = require(\"../../Legacy/Helper\");\nclass MasterSite extends AbstractSite_1.AbstractSite {\n constructor(siteManager, view) {\n super(siteManager, view);\n this._delegates = [];\n }\n addDelegate(delegateSite) {\n this._delegates.push(delegateSite);\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onConstruct(constructParameters);\n }));\n return res;\n });\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onStart.call(this, pauseArguments);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onStart(pauseArguments);\n }));\n });\n }\n onBackPressed() {\n super.onBackPressed();\n this._delegates.forEach(delegate => {\n delegate.onBackPressed();\n });\n }\n onMenuPressed() {\n super.onMenuPressed();\n this._delegates.forEach(delegate => {\n delegate.onMenuPressed();\n });\n }\n onSearchPressed() {\n super.onSearchPressed();\n this._delegates.forEach(delegate => {\n delegate.onSearchPressed();\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onViewLoaded();\n }));\n return res;\n });\n }\n onPause() {\n const _super = Object.create(null, {\n onPause: { get: () => super.onPause }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onPause.call(this);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onPause();\n }));\n });\n }\n onDestroy() {\n const _super = Object.create(null, {\n onDestroy: { get: () => super.onDestroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.onDestroy.call(this);\n yield Helper_1.Helper.asyncForEach(this._delegates, (delegate) => __awaiter(this, void 0, void 0, function* () {\n yield delegate.onDestroy();\n }));\n });\n }\n}\nexports.MasterSite = MasterSite;\n//# sourceMappingURL=MasterSite.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToastManager = void 0;\nconst Helper_1 = require(\"../Legacy/Helper\");\nconst Translator_1 = require(\"../Translator\");\nclass ToastManager {\n constructor() {\n this._toastContainer = document.querySelector(ToastManager._toastContainerSelector);\n this._toastTemplate = this._toastContainer.querySelector(\".toast-template\");\n this._toastTemplate.classList.remove(\"toast-template\");\n this._toastTemplate.remove();\n }\n showToast(toast) {\n return __awaiter(this, void 0, void 0, function* () {\n let message = toast.getMessage();\n if (toast.isShouldTranslate()) {\n message = Translator_1.Translator.makePersistentTranslation(message, toast.getTranslationArgs());\n }\n else {\n message = document.createTextNode(message);\n }\n let toastElement = this._toastTemplate.cloneNode(true);\n toastElement.querySelector(\".message\").appendChild(message);\n toast.setToastElement(toastElement);\n this._toastContainer.appendChild(toastElement);\n toastElement.style.opacity = 1;\n return new Promise(resolve => {\n toastElement.querySelector(\".message\").onclick = () => {\n this.hideToast(toast);\n resolve(true);\n };\n setTimeout(() => {\n this.hideToast(toast);\n resolve(false);\n }, toast.getDuration());\n });\n });\n }\n hideToast(toast) {\n return __awaiter(this, void 0, void 0, function* () {\n //TODO Animation hinzufügen\n let element = toast.getToastElement();\n if (Helper_1.Helper.isNotNull(element)) {\n element.style.opacity = 0;\n return new Promise(res => {\n setTimeout(() => {\n element.remove();\n res();\n }, 250);\n });\n }\n return Promise.reject(\"toast is not showing\");\n });\n }\n static setToastContainerSelector(selector) {\n ToastManager._toastContainerSelector = selector;\n }\n static getInstance() {\n if (!ToastManager._instance) {\n ToastManager._instance = new ToastManager();\n }\n return ToastManager._instance;\n }\n}\nexports.ToastManager = ToastManager;\nToastManager._instance = null;\nToastManager._toastContainerSelector = \"#toast-container\";\n//# sourceMappingURL=ToastManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DropdownRenderer = void 0;\nconst OpenSubmenuAction_1 = require(\"../MenuAction/OpenSubmenuAction\");\nconst AccordionRenderer_1 = require(\"./AccordionRenderer\");\nconst Submenu_1 = require(\"../Submenu\");\n/**\n * Erstellt ein Dropdown-Menu\n */\nclass DropdownRenderer extends AccordionRenderer_1.AccordionRenderer {\n constructor(parentElement) {\n super(parentElement);\n this._accordionMenuRenderer = new AccordionRenderer_1.AccordionRenderer();\n }\n /**\n * Rendert die SubmenuAction\n *\n * @param action\n * @returns {*}\n */\n renderSubmenuAction(action) {\n if (action.getMenu() instanceof Submenu_1.Submenu) {\n return super.renderSubmenuAction(action);\n }\n let submenuActionElement = super.renderSubmenuAction(action);\n submenuActionElement.classList.add('is-dropdown-submenu-parent');\n submenuActionElement.classList.add('opens-right');\n return submenuActionElement;\n }\n /**\n * Erstellt ein SubmenuParent\n *\n * @param action\n * @returns {HTMLUListElement}\n */\n createSubmenuParentElement(action) {\n if (action.getMenu() instanceof Submenu_1.Submenu) {\n return super.createSubmenuParentElement(action);\n }\n let menuElement = document.createElement(\"ul\");\n menuElement.classList.add(\"menu\");\n menuElement.classList.add(\"vertical\");\n menuElement.classList.add(\"submenu\");\n menuElement.classList.add(\"accordion-menu\");\n menuElement.classList.add(\"is-dropdown-submenu\");\n menuElement.classList.add(\"first-sub\");\n return menuElement;\n }\n /**\n * Updatet das Element für eine Action\n * @param action\n */\n updateAction(action) {\n if (action.getMenu() instanceof Submenu_1.Submenu) {\n return super.updateAction(action);\n }\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n let submenuElement = this.getElementForAction(action).querySelector(\".submenu\");\n if (action.getSubmenu().isOpen()) {\n submenuElement.classList.add(\"js-dropdown-active\");\n }\n else {\n submenuElement.classList.remove(\"js-dropdown-active\");\n }\n }\n }\n}\nexports.DropdownRenderer = DropdownRenderer;\n//# sourceMappingURL=DropdownRenderer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MenuRenderer = void 0;\nconst Helper_1 = require(\"../../../Legacy/Helper\");\nconst OpenSubmenuAction_1 = require(\"../MenuAction/OpenSubmenuAction\");\n/**\n * Rendert ein Menü\n */\nclass MenuRenderer {\n /**\n * Jeder Renderer hat ein Element, wo er die gerenderten Elemente hinzufügt\n *\n * @param parentElement\n */\n constructor(parentElement) {\n this._parentElement = parentElement;\n this._renderedElements = {};\n }\n /**\n * Stößt das Rendern an\n * @param menu\n * @param parentElement\n */\n render(menu, parentElement) {\n let actions = menu.getActions();\n //Funktion wird auch für Submenüs genutzt. Daher muss hier ein anderes parentElement übergeben werden\n parentElement = Helper_1.Helper.nonNull(parentElement, this._parentElement);\n if (Helper_1.Helper.isNotNull(parentElement)) {\n Helper_1.Helper.removeAllChildren(parentElement);\n //Füge Elemente hinzu\n actions.forEach(action => {\n parentElement.appendChild(this.getElementForAction(action));\n });\n //Setze den onclick-Listener\n parentElement.onclick = (e) => {\n if (typeof menu.getOnClickListener() === 'function') {\n menu.getOnClickListener()(e);\n }\n };\n }\n }\n /**\n * Führt das Rendern der Elemente aus und ersetzt evtl schon alte Elemente\n * Auslagern von renderAction und renderSubmenuAction zum besseren überschreiben der Funktionen.\n *\n * renderSubmenuAction und renderAction sollten nur von dieser Funktion aufgerufen werden, damit die\n * _rendererElements aktuell bleiben!\n *\n * @param action\n * @returns {HTMLElement}\n * @private\n */\n _triggerRenderAction(action) {\n let oldElement = this._renderedElements[action.getId()];\n if (action instanceof OpenSubmenuAction_1.OpenSubmenuAction) {\n this._renderedElements[action.getId()] = this.renderSubmenuAction(action);\n }\n else {\n this._renderedElements[action.getId()] = this.renderAction(action);\n }\n this.updateAction(action);\n if (Helper_1.Helper.isNotNull(oldElement)) {\n oldElement.replaceWith(this._renderedElements[action.getId()]);\n }\n return this._renderedElements[action.getId()];\n }\n /**\n * Gibt das Element zur Action. Falls es noch nicht existiert, wird dieses gerendert\n * @param action\n * @returns {*}\n */\n getElementForAction(action) {\n if (Helper_1.Helper.isNull(this._renderedElements[action.getId()])) {\n this._triggerRenderAction(action);\n }\n return this._renderedElements[action.getId()];\n }\n /**\n * Funktion zum überladen\n * @param action\n */\n renderAction(action) {\n return null;\n }\n /**\n * Funktion zum überladen\n * @param action\n */\n updateAction(action) {\n }\n /**\n * Rendert eine SubmenuAction, kann/sollte überladen werden\n * @param action\n * @returns {*}\n */\n renderSubmenuAction(action) {\n let actionElement = this.renderAction(action);\n action.getSubmenu().sortActions();\n let submenuParentElement = this.createSubmenuParentElement(action);\n this.render(action.getSubmenu(), submenuParentElement);\n actionElement.appendChild(submenuParentElement);\n return actionElement;\n }\n ;\n /**\n * Erstellt ein Element für ein Submenu. Sollte überladen werden\n * @param action\n * @returns {HTMLUListElement}\n */\n createSubmenuParentElement(action) {\n return document.createElement(\"ul\");\n }\n}\nexports.MenuRenderer = MenuRenderer;\n//# sourceMappingURL=MenuRenderer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Submenu = void 0;\nconst Menu_1 = require(\"./Menu\");\nconst Helper_1 = require(\"../../Legacy/Helper\");\nconst OpenSubmenuAction_1 = require(\"./MenuAction/OpenSubmenuAction\");\n/**\n * Submenü, ein untermenü\n */\nclass Submenu extends Menu_1.Menu {\n /**\n * Constructor für ein Submenu\n *\n * Bekommt parameter für die OpenSubmenuAction übergeben und reicht diese weiter.\n * Renderer besitzt das Menü keine, da die Renderer des ParentMenus genutzt werden\n * Actions können nicht bei der Erstellung hinzugefügt werden\n *\n * @param title\n * @param showFor\n * @param order\n * @param icon\n * @param renderers\n */\n constructor(title, showFor, order, icon, renderers) {\n super(Helper_1.Helper.nonNull(renderers, []));\n this._parentAction = new OpenSubmenuAction_1.OpenSubmenuAction(title, this, showFor, order, icon);\n this._isOpen = false;\n }\n /**\n * Erstellt ein neues Menu auf grundlage dieses Menüs. Alle Actions & Submenüs werden ebenfalls kopiert\n *\n * @param menu\n * @return {Submenu}\n */\n copy(menu) {\n menu = Helper_1.Helper.nonNull(menu, new Submenu());\n menu = super.copy(menu);\n menu._isOpen = this._isOpen;\n return menu;\n }\n /**\n * Setzt die ParentAction\n *\n * @param action\n */\n setParentAction(action) {\n this._parentAction = action;\n }\n /**\n * Gibt das ParentMenu zurück\n */\n getParentMenu() {\n return this._parentAction.getMenu();\n }\n /**\n * Erstelle keinen onClickListener, damit der Listener aus dem Obermenü aufgerufen wird\n *\n * @returns {null}\n * @private\n */\n _generateOnClickListener() {\n return null;\n }\n /**\n * Wird vom Obermenü aufgerufen, um die ensprechende Action zu finden\n *\n * @param actionId\n * @param event\n * @returns {boolean}\n */\n click(actionId, event) {\n for (let i = 0, n = this._actions.length; i < n; i++) {\n if (this._actions[i].getId() === actionId) {\n if (typeof this._actions[i].getAction() === 'function' && this._actions[i].isActivated()) {\n this._actions[i].getAction()(this._actions[i], event);\n event.preventDefault();\n }\n if (!(this._actions[i] instanceof OpenSubmenuAction_1.OpenSubmenuAction)) {\n this.close();\n }\n return this._actions[i];\n }\n }\n //Falls action nicht gefunden (da noch nicht beendet), suche in den submenüs nach der Action\n for (let i = 0, n = this._submenus.length; i < n; i++) {\n let action = this._submenus[i].click(actionId, event);\n if (action) {\n return action;\n }\n }\n return null;\n }\n /**\n * Öffnet oder schließt das Menü\n */\n toggle() {\n if (this._isOpen) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * öffnet das Menü und updatet die Elemente\n */\n open() {\n this._isOpen = true;\n this.openSubmenu(this);\n if (Helper_1.Helper.isNotNull(this._parentAction)) {\n this._parentAction.update();\n }\n }\n openSubmenu(submenu) {\n this.getParentMenu().openSubmenu(submenu);\n }\n /**\n * schließt das Menü und updatet die Elemente\n */\n close() {\n this._isOpen = false;\n super.close();\n if (Helper_1.Helper.isNotNull(this._parentAction)) {\n this._parentAction.update();\n }\n }\n /**\n * Gibt die ParentAction zurück\n *\n * @returns {OpenSubmenuAction}\n */\n getParentAction() {\n return this._parentAction;\n }\n /**\n * Updated eine Action. Da ein Submenu keine Renderer hat, muss es ans parentMenu weitergegeben werden\n * @param action\n */\n updateAction(action) {\n const parentMenu = this.getParentMenu();\n if (parentMenu) {\n parentMenu.updateAction(action);\n }\n }\n redrawAction(action) {\n const parentMenu = this.getParentMenu();\n if (parentMenu) {\n parentMenu.redrawAction(action);\n }\n }\n /**\n * Gibt an, ob das Submenu offen ist oder nicht\n *\n * @returns {boolean}\n */\n isOpen() {\n return this._isOpen;\n }\n}\nexports.Submenu = Submenu;\n//# sourceMappingURL=Submenu.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SwipeChildFragment = void 0;\nconst AbstractFragment_1 = require(\"../AbstractFragment\");\nconst Helper_1 = require(\"../../Legacy/Helper\");\nclass SwipeChildFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view) {\n super(site, view);\n this._parent = null;\n }\n onSwipeRight() {\n return __awaiter(this, void 0, void 0, function* () {\n this.previousFragment();\n });\n }\n onSwipeLeft() {\n return __awaiter(this, void 0, void 0, function* () {\n this.nextFragment();\n });\n }\n setParent(parent) {\n this._parent = parent;\n }\n nextFragment() {\n if (Helper_1.Helper.isNotNull(this._parent)) {\n this._parent.nextFragment();\n }\n }\n previousFragment() {\n if (Helper_1.Helper.isNotNull(this._parent)) {\n this._parent.previousFragment();\n }\n }\n}\nexports.SwipeChildFragment = SwipeChildFragment;\n//# sourceMappingURL=SwipeChildFragment.js.map","module.exports = __webpack_public_path__ + \"html/chooseDialog.html\";","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElemChooseDialog = void 0;\nconst Dialog_1 = require(\"./Dialog\");\nconst ViewInflater_1 = require(\"../ViewInflater\");\nconst view = require(\"../../html/Framework/Dialog/chooseDialog.html\");\nclass ElemChooseDialog extends Dialog_1.Dialog {\n constructor(valueNames, title) {\n let viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then(view => {\n let template = view.querySelector(\"#choose-value-template\");\n template.remove();\n template.removeAttribute(\"id\");\n let templateContainer = view.querySelector(\"#choose-container\");\n for (let k in valueNames) {\n let valueElem = template.cloneNode(true);\n valueElem.querySelector(\".choose-dialog-value\").appendChild(valueNames[k]);\n valueElem[\"dataset\"][\"value\"] = k;\n valueElem.addEventListener(\"click\", () => {\n this._result = k;\n this.close();\n });\n templateContainer.appendChild(valueElem);\n }\n return view;\n });\n super(viewPromise, title);\n }\n}\nexports.ElemChooseDialog = ElemChooseDialog;\n//# sourceMappingURL=ElemChooseDialog.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShareDialog = void 0;\nconst Dialog_1 = require(\"../Dialog/Dialog\");\nconst ViewInflater_1 = require(\"../ViewInflater\");\nconst view = require(\"../../html/Dialog/shareDialog.html\");\nclass ShareDialog extends Dialog_1.Dialog {\n constructor(textToShare) {\n super(ViewInflater_1.ViewInflater.getInstance().load(view).then(view => {\n view.querySelector(\"#whatsapp-share\").addEventListener(\"click\", () => {\n let linkToOpen = \"\";\n linkToOpen = \"https://web.whatsapp.com/send?text=\" + encodeURIComponent(textToShare);\n window.open(linkToOpen, '_blank', \"noopener\");\n this.close();\n });\n view.querySelector(\"#telegram-share\").addEventListener(\"click\", () => {\n let linkToOpen = \"https://t.me/share/url?url=\" + encodeURIComponent(textToShare);\n window.open(linkToOpen, '_blank', \"noopener\");\n this.close();\n });\n return view;\n }), \"Share\");\n }\n}\nexports.ShareDialog = ShareDialog;\n//# sourceMappingURL=ShareDialog.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AudioChain = void 0;\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nclass AudioChain {\n constructor(context, sourceBuffer, chainFunction) {\n this._buffer = sourceBuffer;\n this._shouldLoop = false;\n this._loopStart = null;\n this._loopEnd = null;\n this._chainFunction = chainFunction;\n this._context = context;\n this._startTime = null;\n this._pauseTime = null;\n this._source = null;\n this._running = false;\n }\n setBuffer(buffer) {\n this._buffer = buffer;\n }\n setLooping(shouldLoop, loopStart, loopEnd) {\n this._shouldLoop = shouldLoop;\n if (Helper_1.Helper.isNotNull(loopStart)) {\n this._loopStart = loopStart;\n }\n if (Helper_1.Helper.isNotNull(loopEnd)) {\n this._loopEnd = loopEnd;\n }\n }\n start(delay, offset, duration) {\n return __awaiter(this, void 0, void 0, function* () {\n //sind sonst null, schmeißt in Android 5 einen fehler\n delay = Helper_1.Helper.nonNull(delay, 0);\n offset = Helper_1.Helper.nonNull(offset, 0);\n //Duration darf nicht gesetzt werden\n // duration = Helper.nonNull(duration, -1);\n let source = this._context.createBufferSource();\n source.loop = this._shouldLoop;\n if (Helper_1.Helper.isNotNull(this._loopStart)) {\n source.loopStart = this._loopStart;\n }\n if (Helper_1.Helper.isNotNull(this._loopEnd)) {\n source.loopEnd = this._loopEnd;\n }\n source.buffer = this._buffer;\n yield this._chainFunction(source);\n if (Helper_1.Helper.isNull(duration)) {\n source.start(delay, offset);\n }\n else {\n source.start(delay, offset, duration);\n }\n this._startTime = (new Date()).getTime() - (Helper_1.Helper.nonNull(offset, 0) * 1000);\n this._source = source;\n this._running = true;\n });\n }\n stop(delay) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNotNull(this._source)) {\n delay = Helper_1.Helper.nonNull(delay, 0);\n this._pauseTime = ((new Date()).getTime()) - this._startTime;\n this._running = false;\n return this._source.stop(delay);\n }\n return null;\n });\n }\n resume() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._running) {\n return this.start(null, Helper_1.Helper.nonNull(this._pauseTime, 0) / 1000.0);\n }\n });\n }\n}\nexports.AudioChain = AudioChain;\n//# sourceMappingURL=AudioChain.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst shared_1 = require(\"cordova-sites/dist/shared\");\nconst deTranslations = require(\"../translations/de\");\nconst enTranslations = require(\"../translations/en\");\nclient_1.App.addInitialization(() => {\n shared_1.Translator.addDynamicTranslations({\n \"de\": deTranslations,\n \"en\": enTranslations\n });\n});\n//# sourceMappingURL=translationInit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Access = void 0;\nconst shared_1 = require(\"cordova-sites-easy-sync/dist/shared\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nclass Access extends shared_1.EasySyncBaseModel {\n constructor() {\n super();\n this.name = null;\n this.description = null;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"name\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING, unique: true };\n columns[\"description\"] = { type: cordova_sites_database_1.BaseDatabase.TYPES.STRING };\n return columns;\n }\n}\nexports.Access = Access;\nAccess.CAN_BE_SYNCED = false;\ncordova_sites_database_1.BaseDatabase.addModel(Access);\n//# sourceMappingURL=Access.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForgotPasswordSite = void 0;\nconst UserSite_1 = require(\"../Context/UserSite\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst view = require(\"./../../html/sites/forgotPasswordSite.html\");\nconst UserManager_1 = require(\"../UserManager\");\nconst LoginSite_1 = require(\"./LoginSite\");\nclass ForgotPasswordSite extends client_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, LoginSite_1.LoginSite.ACCESS));\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n if (client_1.Helper.isSet(constructParameters[\"t\"])) {\n this._token = constructParameters[\"t\"];\n }\n return res;\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n let form = new client_1.Form(this.findBy(\"#forgot-password-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n if (yield UserManager_1.UserManager.getInstance().sendForgotPasswordEmail(data[\"email\"])) {\n new client_1.Toast(\"forgot-password-mail sent\").show();\n yield this.finish();\n }\n else {\n form.setErrors({\n \"email\": \"email is not in our database\"\n });\n }\n }));\n let resetForm = new client_1.Form(this.findBy(\"#reset-password-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n if (yield UserManager_1.UserManager.getInstance().resetPassword(this._token, data[\"password1\"])) {\n new client_1.Toast(\"password resetted\").show();\n yield this.finish();\n }\n else {\n yield new client_1.Toast(\"token is not valid!\").show();\n }\n }));\n resetForm.addValidator(data => {\n let errors = {};\n let hasErrors = false;\n if (data[\"password1\"].trim() === \"\") {\n hasErrors = true;\n errors[\"password1\"] = \"no password set\";\n }\n if (data[\"password1\"] !== data[\"password2\"]) {\n hasErrors = true;\n errors[\"password2\"] = \"not equal to password1\";\n }\n if (hasErrors) {\n return errors;\n }\n else {\n return true;\n }\n });\n if (this._token) {\n this.findBy(\"#reset-password\").classList.remove(\"hidden\");\n this.findBy(\"#forgot-password\").classList.add(\"hidden\");\n }\n return res;\n });\n }\n}\nexports.ForgotPasswordSite = ForgotPasswordSite;\nclient_1.App.addInitialization(app => {\n app.addDeepLink(\"forgotPW\", ForgotPasswordSite);\n});\n//# sourceMappingURL=ForgotPasswordSite.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotAllowedSite = void 0;\nconst MenuSite_1 = require(\"cordova-sites/dist/client/js/Context/MenuSite\");\nconst view = require(\"./../../html/sites/notAllowedSite.html\");\nclass NotAllowedSite extends MenuSite_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n }\n onConstruct(constructParameters) {\n return super.onConstruct(constructParameters);\n }\n onCreateMenu(navbar) {\n return super.onCreateMenu(navbar);\n }\n onPause() {\n const _super = Object.create(null, {\n onPause: { get: () => super.onPause }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onPause.call(this);\n yield this.finish();\n return res;\n });\n }\n}\nexports.NotAllowedSite = NotAllowedSite;\n//# sourceMappingURL=NotAllowedSite.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelectUserDialog = void 0;\nconst Dialog_1 = require(\"cordova-sites/dist/client/js/Dialog/Dialog\");\nconst ViewInflater_1 = require(\"cordova-sites/dist/client/js/ViewInflater\");\nconst DataManager_1 = require(\"cordova-sites/dist/client/js/DataManager\");\nconst ViewHelper_1 = require(\"js-helper/dist/client/ViewHelper\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst view = require(\"../../html/dialog/selectUserDialog.html\");\nclass SelectUserDialog extends Dialog_1.Dialog {\n constructor() {\n super(ViewInflater_1.ViewInflater.getInstance().load(view).then((view) => __awaiter(this, void 0, void 0, function* () {\n this._loadUserTimeout = null;\n this._usernameInput =\n view.querySelector(\"#username-input\");\n this._usernameInput.addEventListener(\"keydown\", () => {\n clearTimeout(this._loadUserTimeout);\n this._loadUserTimeout = setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n yield this._loadUsers(this._usernameInput.value);\n }), 500);\n });\n this._userContainer = view.querySelector(\"#user-container\");\n this._userTemplate = view.querySelector(\"#user-template\");\n this._userTemplate.remove();\n this._userTemplate.removeAttribute(\"id\");\n this._loadUsers();\n return view;\n })), \"select user\");\n }\n _loadUsers(username) {\n return __awaiter(this, void 0, void 0, function* () {\n debugger;\n let res = yield DataManager_1.DataManager.load(\"user/listUsers\" + DataManager_1.DataManager.buildQuery({ username: Helper_1.Helper.nonNull(username, \"\") }));\n if (res[\"success\"]) {\n ViewHelper_1.ViewHelper.removeAllChildren(this._userContainer);\n let users = res[\"data\"];\n users.forEach(user => {\n let userElement = this._userTemplate.cloneNode(true);\n userElement.querySelector(\".name\").innerText = user.username;\n userElement.addEventListener(\"click\", () => {\n this._result = user;\n this.close();\n });\n this._userContainer.appendChild(userElement);\n });\n }\n });\n }\n}\nexports.SelectUserDialog = SelectUserDialog;\n//# sourceMappingURL=SelectUserDialog.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileTransferPromise = void 0;\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst FilePromise_1 = require(\"./FilePromise\");\nconst DataManager_1 = require(\"cordova-sites/dist/client/js/DataManager\");\nclass FileTransferPromise {\n constructor(downloadUrl, storagePath) {\n this.downloadUrl = downloadUrl;\n if (Helper_1.Helper.isNull(storagePath)) {\n let parts = this.downloadUrl.split(\"/\");\n if (parts.length > 0) {\n storagePath = parts[parts.length - 1];\n }\n }\n this.storagePath = storagePath;\n }\n download() {\n return __awaiter(this, void 0, void 0, function* () {\n debugger;\n let blob = DataManager_1.DataManager.fetchBlob(this.downloadUrl);\n let filePromise = yield FilePromise_1.FilePromise.open(this.storagePath);\n let fileWriter = yield filePromise.createWriter();\n // blob = await blob;\n yield fileWriter.write(yield blob);\n });\n }\n}\nexports.FileTransferPromise = FileTransferPromise;\n//# sourceMappingURL=FileTransferPromise.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileWriterPromise = void 0;\nclass FileWriterPromise {\n constructor(fileWriter) {\n this.fileWriter = fileWriter;\n this._isWritingPromise = Promise.resolve();\n }\n write(data) {\n return __awaiter(this, void 0, void 0, function* () {\n let promise = this._isWritingPromise.then(() => new Promise((res, rej) => {\n this.fileWriter.onwriteend = res;\n this.fileWriter.onerror = rej;\n this.fileWriter.write(data);\n }));\n this._isWritingPromise = promise.catch(console.error);\n return promise;\n });\n }\n}\nexports.FileWriterPromise = FileWriterPromise;\n//# sourceMappingURL=FileWriterPromise.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientModel = void 0;\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst shared_1 = require(\"js-helper/dist/shared\");\nclass ClientModel extends cordova_sites_database_1.BaseModel {\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n if (columns[\"id\"] && columns[\"id\"][\"generated\"]) {\n columns[\"id\"][\"generated\"] = false;\n }\n return columns;\n }\n static _fromJson(jsonObjects, models, includeRelations) {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n toJSON(includeFull) {\n }\n ;\n save(local) {\n const _super = Object.create(null, {\n save: { get: () => super.save }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let values = this.toJSON();\n let data = yield client_1.DataManager.send(this.constructor.SAVE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"values\": values\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n yield this.constructor._fromJson(data, this, true);\n }\n return _super.save.call(this);\n });\n }\n delete(local) {\n const _super = Object.create(null, {\n delete: { get: () => super.delete }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let data = yield client_1.DataManager.send(this.constructor.DELETE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"id\": this.id\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n }\n return _super.delete.call(this);\n });\n }\n static saveMany(entities, local) {\n const _super = Object.create(null, {\n saveMany: { get: () => super.saveMany }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let values = [];\n entities.forEach(entity => {\n values.push(entity.toJSON());\n });\n let data = yield client_1.DataManager.send(this.SAVE_PATH, {\n \"model\": this.getSchemaName(),\n \"values\": values\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n entities = yield this._fromJson(data, undefined, true);\n }\n return _super.saveMany.call(this, entities);\n });\n }\n static getSchemaDefinition() {\n const TYPES_FOR_DEFAULT_ESCAPING = [\n cordova_sites_database_1.BaseDatabase.TYPES.MEDIUMTEXT,\n cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n cordova_sites_database_1.BaseDatabase.TYPES.TEXT,\n ];\n let definitions = super.getSchemaDefinition();\n let columns = definitions[\"columns\"];\n Object.keys(columns).forEach(column => {\n if (columns[column].type === cordova_sites_database_1.BaseDatabase.TYPES.MEDIUMTEXT) {\n columns[column].type = cordova_sites_database_1.BaseDatabase.TYPES.TEXT;\n }\n if (columns[column].type === cordova_sites_database_1.BaseDatabase.TYPES.JSON) {\n columns[column].type = cordova_sites_database_1.BaseDatabase.TYPES.SIMPLE_JSON;\n }\n if (TYPES_FOR_DEFAULT_ESCAPING.indexOf(columns[column].type) !== -1) {\n columns[column].escapeJS = shared_1.Helper.nonNull(columns[column].escapeJS, true);\n columns[column].escapeHTML = shared_1.Helper.nonNull(columns[column].escapeHTML, true);\n }\n });\n return definitions;\n }\n}\nexports.ClientModel = ClientModel;\nClientModel.SAVE_PATH = \"/sync\";\nClientModel.DELETE_PATH = \"/sync/delete\";\n//# sourceMappingURL=ClientModel.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientPartialModel = void 0;\nconst EasySyncBaseModel_1 = require(\"../shared/EasySyncBaseModel\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nclass ClientPartialModel extends EasySyncBaseModel_1.EasySyncBaseModel {\n constructor() {\n super();\n this.clientId = null;\n }\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n if (columns[\"id\"]) {\n columns[\"id\"][\"primary\"] = false;\n columns[\"id\"][\"generated\"] = false;\n columns[\"id\"][\"nullable\"] = true;\n columns[\"id\"][\"unique\"] = true;\n }\n columns[\"clientId\"] = {\n type: \"integer\",\n primary: true,\n generated: true,\n };\n return columns;\n }\n toJSON(includeFull) {\n let relations = this.constructor.getRelationDefinitions();\n let columns = this.constructor.getColumnDefinitions();\n let obj = {};\n Object.keys(columns).forEach(attribute => {\n if (attribute !== \"clientId\") {\n obj[attribute] = this[attribute];\n }\n });\n Object.keys(relations).forEach(relationName => {\n if (includeFull === true) {\n obj[relationName] = this[relationName];\n }\n else {\n if (Array.isArray(this[relationName])) {\n let ids = [];\n this[relationName].forEach(child => (child && ids.push(child.id)));\n obj[relationName] = ids;\n }\n else if (this[relationName] instanceof cordova_sites_database_1.BaseModel) {\n obj[relationName] = this[relationName].id;\n }\n else {\n obj[relationName] = null;\n }\n }\n });\n return obj;\n }\n save(local) {\n const _super = Object.create(null, {\n save: { get: () => super.save }\n });\n return __awaiter(this, void 0, void 0, function* () {\n local = Helper_1.Helper.nonNull(local, true);\n if (typeof this.clientId !== \"number\") {\n this.clientId = undefined;\n }\n if (!local) {\n let values = this.toJSON();\n let data = yield client_1.DataManager.send(this.constructor.SAVE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"values\": values\n });\n if (data.success !== false) {\n yield this.constructor._fromJson(data, this, true);\n }\n }\n return _super.save.call(this, true);\n });\n }\n delete(local) {\n const _super = Object.create(null, {\n delete: { get: () => super.delete }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!local) {\n let data = yield client_1.DataManager.send(this.constructor.DELETE_PATH, {\n \"model\": this.constructor.getSchemaName(),\n \"id\": this.id\n });\n if (data.success === false) {\n throw new Error(data.errors);\n }\n }\n return _super.delete.call(this, true);\n });\n }\n static saveMany(entities, local) {\n const _super = Object.create(null, {\n saveMany: { get: () => super.saveMany }\n });\n return __awaiter(this, void 0, void 0, function* () {\n local = Helper_1.Helper.nonNull(local, true);\n entities.forEach(entity => {\n if (typeof entity.clientId !== \"number\") {\n entity.clientId = undefined;\n }\n });\n if (!local) {\n let values = [];\n entities.forEach(entity => {\n values.push(entity.toJSON());\n });\n let data = yield client_1.DataManager.send(this.SAVE_PATH, {\n \"model\": this.getSchemaName(),\n \"values\": values\n });\n if (data.success !== false) {\n entities = yield this._fromJson(data, entities, true);\n }\n }\n return _super.saveMany.call(this, entities, true);\n });\n }\n}\nexports.ClientPartialModel = ClientPartialModel;\n//# sourceMappingURL=ClientPartialModel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AccessEasySyncModel = void 0;\nconst shared_1 = require(\"cordova-sites-easy-sync/dist/shared\");\nclass AccessEasySyncModel extends shared_1.EasySyncBaseModel {\n}\nexports.AccessEasySyncModel = AccessEasySyncModel;\nAccessEasySyncModel.ACCESS_READ = true;\nAccessEasySyncModel.ACCESS_MODIFY = false;\nAccessEasySyncModel.CAN_BE_SYNCED = false;\n//# sourceMappingURL=AccessEasySyncModel.js.map","export default \"img/help.png\";","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport { Broadcaster } from \"../../subscriber/Broadcaster\";\nimport { QueryFailedError } from \"../../error/QueryFailedError\";\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar SqljsQueryRunner = /** @class */ (function (_super) {\n __extends(SqljsQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function SqljsQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new Broadcaster(_this);\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n SqljsQueryRunner.prototype.commitTransaction = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.commitTransaction.call(this)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.driver.autoSave()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes a given SQL query.\n */\n SqljsQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (parameters === void 0) { parameters = []; }\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n return new Promise(function (ok, fail) { return __awaiter(_this, void 0, void 0, function () {\n var databaseConnection, queryStartTime, statement, maxQueryExecutionTime, queryEndTime, queryExecutionTime, result;\n return __generator(this, function (_a) {\n databaseConnection = this.driver.databaseConnection;\n this.driver.connection.logger.logQuery(query, parameters, this);\n queryStartTime = +new Date();\n try {\n statement = databaseConnection.prepare(query);\n if (parameters) {\n parameters = parameters.map(function (p) { return typeof p !== 'undefined' ? p : null; });\n statement.bind(parameters);\n }\n maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;\n queryEndTime = +new Date();\n queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n result = [];\n while (statement.step()) {\n result.push(statement.getAsObject());\n }\n statement.free();\n ok(result);\n }\n catch (e) {\n if (statement) {\n statement.free();\n }\n this.driver.connection.logger.logQueryError(e, query, parameters, this);\n fail(new QueryFailedError(query, parameters, e));\n }\n return [2 /*return*/];\n });\n }); });\n };\n return SqljsQueryRunner;\n}(AbstractSqliteQueryRunner));\nexport { SqljsQueryRunner };\n\n//# sourceMappingURL=SqljsQueryRunner.js.map\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport { NativescriptQueryRunner } from \"./NativescriptQueryRunner\";\nimport { DriverOptionNotSetError } from \"../../error/DriverOptionNotSetError\";\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\";\n/**\n * Organizes communication with sqlite DBMS within Nativescript.\n */\nvar NativescriptDriver = /** @class */ (function (_super) {\n __extends(NativescriptDriver, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function NativescriptDriver(connection) {\n var _this = _super.call(this, connection) || this;\n _this.connection = connection;\n _this.options = connection.options;\n _this.database = _this.options.database;\n _this.driver = _this.options.driver;\n // validate options to make sure everything is set\n if (!_this.options.database) {\n throw new DriverOptionNotSetError(\"database\");\n }\n // load sqlite package\n _this.loadDependencies();\n return _this;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Closes connection with database.\n */\n NativescriptDriver.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (ok, fail) {\n _this.queryRunner = undefined;\n _this.databaseConnection.close().then(ok).catch(fail);\n })];\n });\n });\n };\n /**\n * Creates a query runner used to execute database queries.\n */\n NativescriptDriver.prototype.createQueryRunner = function (mode) {\n if (!this.queryRunner) {\n this.queryRunner = new NativescriptQueryRunner(this);\n }\n return this.queryRunner;\n };\n NativescriptDriver.prototype.normalizeType = function (column) {\n if (column.type === Buffer) {\n return \"blob\";\n }\n return _super.prototype.normalizeType.call(this, column);\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Creates connection with the database.\n */\n NativescriptDriver.prototype.createDatabaseConnection = function () {\n var _this = this;\n return new Promise(function (ok, fail) {\n var options = Object.assign({}, {\n readOnly: _this.options.readOnly,\n key: _this.options.key,\n multithreading: _this.options.multithreading,\n migrate: _this.options.migrate,\n iosFlags: _this.options.iosFlags,\n androidFlags: _this.options.androidFlags,\n }, _this.options.extra || {});\n new _this.sqlite(_this.options.database, options, function (err, db) {\n if (err)\n return fail(err);\n // use object mode to work with TypeORM\n db.resultType(_this.sqlite.RESULTSASOBJECT);\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete work with sqlite.\n db.execSQL(\"PRAGMA foreign_keys = ON;\", [], function (err, result) {\n if (err)\n return fail(err);\n // We are all set\n ok(db);\n });\n });\n });\n };\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n NativescriptDriver.prototype.loadDependencies = function () {\n this.sqlite = this.driver;\n if (!this.driver) {\n throw new DriverPackageNotInstalledError(\"Nativescript\", \"nativescript-sqlite\");\n }\n };\n return NativescriptDriver;\n}(AbstractSqliteDriver));\nexport { NativescriptDriver };\n\n//# sourceMappingURL=NativescriptDriver.js.map\n","import { __extends } from \"tslib\";\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport { QueryFailedError } from \"../../error/QueryFailedError\";\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport { Broadcaster } from \"../../subscriber/Broadcaster\";\n/**\n * Runs queries on a single sqlite database connection.\n */\nvar NativescriptQueryRunner = /** @class */ (function (_super) {\n __extends(NativescriptQueryRunner, _super);\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function NativescriptQueryRunner(driver) {\n var _this = _super.call(this) || this;\n _this.driver = driver;\n _this.connection = driver.connection;\n _this.broadcaster = new Broadcaster(_this);\n return _this;\n }\n /**\n * Executes a given SQL query.\n */\n NativescriptQueryRunner.prototype.query = function (query, parameters) {\n var _this = this;\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n var connection = this.driver.connection;\n return new Promise(function (ok, fail) {\n var isInsertQuery = query.substr(0, 11) === \"INSERT INTO\";\n var handler = function (err, result) {\n // log slow queries if maxQueryExecution time is set\n var maxQueryExecutionTime = connection.options.maxQueryExecutionTime;\n var queryEndTime = +new Date();\n var queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n if (err) {\n connection.logger.logQueryError(err, query, parameters, this);\n fail(new QueryFailedError(query, parameters, err));\n }\n else {\n // when isInsertQuery == true, result is the id\n ok(result);\n }\n };\n _this.driver.connection.logger.logQuery(query, parameters, _this);\n var queryStartTime = +new Date();\n _this.connect().then(function (databaseConnection) {\n if (isInsertQuery) {\n databaseConnection.execSQL(query, parameters, handler);\n }\n else {\n databaseConnection.all(query, parameters, handler);\n }\n });\n });\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n NativescriptQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n return Object.keys(objectLiteral).map(function (key, index) { return \"\\\"\" + key + \"\\\"\" + \"=?\"; });\n };\n return NativescriptQueryRunner;\n}(AbstractSqliteQueryRunner));\nexport { NativescriptQueryRunner };\n\n//# sourceMappingURL=NativescriptQueryRunner.js.map\n","import { __read, __spreadArray } from \"tslib\";\nimport { OrmUtils } from \"../../util/OrmUtils\";\nimport { DriverUtils } from \"../../driver/DriverUtils\";\n/**\n * Transforms raw sql results returned from the database into entity object.\n * Entity is constructed based on its entity metadata.\n */\nvar RawSqlResultsToEntityTransformer = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function RawSqlResultsToEntityTransformer(expressionMap, driver, rawRelationIdResults, rawRelationCountResults, queryRunner) {\n this.expressionMap = expressionMap;\n this.driver = driver;\n this.rawRelationIdResults = rawRelationIdResults;\n this.rawRelationCountResults = rawRelationCountResults;\n this.queryRunner = queryRunner;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n RawSqlResultsToEntityTransformer.prototype.transform = function (rawResults, alias) {\n var _this = this;\n var group = this.group(rawResults, alias);\n var entities = [];\n group.forEach(function (results) {\n var entity = _this.transformRawResultsGroup(results, alias);\n if (entity !== undefined && !Object.values(entity).every(function (value) { return value === null; }))\n entities.push(entity);\n });\n return entities;\n };\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n /**\n * Groups given raw results by ids of given alias.\n */\n RawSqlResultsToEntityTransformer.prototype.group = function (rawResults, alias) {\n var _this = this;\n var map = new Map();\n var keys = [];\n if (alias.metadata.tableType === \"view\") {\n keys.push.apply(keys, __spreadArray([], __read(alias.metadata.columns.map(function (column) { return DriverUtils.buildColumnAlias(_this.driver, alias.name, column.databaseName); }))));\n }\n else {\n keys.push.apply(keys, __spreadArray([], __read(alias.metadata.primaryColumns.map(function (column) { return DriverUtils.buildColumnAlias(_this.driver, alias.name, column.databaseName); }))));\n }\n rawResults.forEach(function (rawResult) {\n var id = keys.map(function (key) {\n var keyValue = rawResult[key];\n if (Buffer.isBuffer(keyValue)) {\n return keyValue.toString(\"hex\");\n }\n if (typeof keyValue === \"object\") {\n return JSON.stringify(keyValue);\n }\n return keyValue;\n }).join(\"_\"); // todo: check partial\n var items = map.get(id);\n if (!items) {\n map.set(id, [rawResult]);\n }\n else {\n items.push(rawResult);\n }\n });\n return map;\n };\n /**\n * Transforms set of data results into single entity.\n */\n RawSqlResultsToEntityTransformer.prototype.transformRawResultsGroup = function (rawResults, alias) {\n var _this = this;\n // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false;\n var metadata = alias.metadata;\n if (metadata.discriminatorColumn) {\n var discriminatorValues_1 = rawResults.map(function (result) { return result[DriverUtils.buildColumnAlias(_this.driver, alias.name, alias.metadata.discriminatorColumn.databaseName)]; });\n var discriminatorMetadata = metadata.childEntityMetadatas.find(function (childEntityMetadata) {\n return typeof discriminatorValues_1.find(function (value) { return value === childEntityMetadata.discriminatorValue; }) !== 'undefined';\n });\n if (discriminatorMetadata)\n metadata = discriminatorMetadata;\n }\n var entity = this.expressionMap.options.indexOf(\"create-pojo\") !== -1 ? {} : metadata.create(this.queryRunner);\n // get value from columns selections and put them into newly created entity\n var hasColumns = this.transformColumns(rawResults, alias, entity, metadata);\n var hasRelations = this.transformJoins(rawResults, entity, alias, metadata);\n var hasRelationIds = this.transformRelationIds(rawResults, alias, entity, metadata);\n var hasRelationCounts = this.transformRelationCounts(rawResults, alias, entity);\n // if we have at least one selected column then return this entity\n // since entity must have at least primary columns to be really selected and transformed into entity\n if (hasColumns)\n return entity;\n // if we don't have any selected column we should not return entity,\n // except for the case when entity only contain a primary column as a relation to another entity\n // in this case its absolutely possible our entity to not have any columns except a single relation\n var hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.filter(function (column) { return column.isVirtual === false; }).length === 0; // todo: create metadata.hasOnlyVirtualPrimaryColumns\n if (hasOnlyVirtualPrimaryColumns && (hasRelations || hasRelationIds || hasRelationCounts))\n return entity;\n return undefined;\n };\n // get value from columns selections and put them into object\n RawSqlResultsToEntityTransformer.prototype.transformColumns = function (rawResults, alias, entity, metadata) {\n var _this = this;\n var hasData = false;\n metadata.columns.forEach(function (column) {\n // if table inheritance is used make sure this column is not child's column\n if (metadata.childEntityMetadatas.length > 0 && metadata.childEntityMetadatas.map(function (metadata) { return metadata.target; }).indexOf(column.target) !== -1)\n return;\n var value = rawResults[0][DriverUtils.buildColumnAlias(_this.driver, alias.name, column.databaseName)];\n if (value === undefined || column.isVirtual)\n return;\n // if user does not selected the whole entity or he used partial selection and does not select this particular column\n // then we don't add this column and its value into the entity\n if (!_this.expressionMap.selects.find(function (select) { return select.selection === alias.name || select.selection === alias.name + \".\" + column.propertyPath; }))\n return;\n column.setEntityValue(entity, _this.driver.prepareHydratedValue(value, column));\n if (value !== null) // we don't mark it as has data because if we will have all nulls in our object - we don't need such object\n hasData = true;\n });\n return hasData;\n };\n /**\n * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity\n */\n RawSqlResultsToEntityTransformer.prototype.transformJoins = function (rawResults, entity, alias, metadata) {\n var _this = this;\n var hasData = false;\n // let discriminatorValue: string = \"\";\n // if (metadata.discriminatorColumn)\n // discriminatorValue = rawResults[0][DriverUtils.buildColumnAlias(this.connection.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)];\n this.expressionMap.joinAttributes.forEach(function (join) {\n // skip joins without metadata\n if (!join.metadata)\n return;\n // if simple left or inner join was performed without selection then we don't need to do anything\n if (!join.isSelected)\n return;\n // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)\n // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);\n if (join.relation && !metadata.relations.find(function (relation) { return relation === join.relation; }))\n return;\n // some checks to make sure this join is for current alias\n if (join.mapToProperty) {\n if (join.mapToPropertyParentAlias !== alias.name)\n return;\n }\n else {\n if (!join.relation || join.parentAlias !== alias.name || join.relationPropertyPath !== join.relation.propertyPath)\n return;\n }\n // transform joined data into entities\n var result = _this.transform(rawResults, join.alias);\n result = !join.isMany ? result[0] : result;\n result = !join.isMany && result === undefined ? null : result; // this is needed to make relations to return null when its joined but nothing was found in the database\n if (result === undefined) // if nothing was joined then simply return\n return;\n // if join was mapped to some property then save result to that property\n if (join.mapToPropertyPropertyName) {\n entity[join.mapToPropertyPropertyName] = result; // todo: fix embeds\n }\n else { // otherwise set to relation\n join.relation.setEntityValue(entity, result);\n }\n hasData = true;\n });\n return hasData;\n };\n RawSqlResultsToEntityTransformer.prototype.transformRelationIds = function (rawSqlResults, alias, entity, metadata) {\n var _this = this;\n var hasData = false;\n this.rawRelationIdResults.forEach(function (rawRelationIdResult) {\n if (rawRelationIdResult.relationIdAttribute.parentAlias !== alias.name)\n return;\n var relation = rawRelationIdResult.relationIdAttribute.relation;\n var valueMap = _this.createValueMapFromJoinColumns(relation, rawRelationIdResult.relationIdAttribute.parentAlias, rawSqlResults);\n if (valueMap === undefined || valueMap === null)\n return;\n var idMaps = rawRelationIdResult.results.map(function (result) {\n var entityPrimaryIds = _this.extractEntityPrimaryIds(relation, result);\n if (OrmUtils.compareIds(entityPrimaryIds, valueMap) === false)\n return;\n var columns;\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseEntityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; });\n // columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn.referencedColumn!); //.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n }\n else { // ManyToMany\n if (relation.isOwning) {\n columns = relation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n }\n var idMap = columns.reduce(function (idMap, column) {\n var value = result[column.databaseName];\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n if (column.isVirtual && column.referencedColumn && column.referencedColumn.propertyName !== column.propertyName) // if column is a relation\n value = column.referencedColumn.createValueMap(value);\n return OrmUtils.mergeDeep(idMap, column.createValueMap(value));\n }\n else {\n if (column.referencedColumn.referencedColumn) // if column is a relation\n value = column.referencedColumn.referencedColumn.createValueMap(value);\n return OrmUtils.mergeDeep(idMap, column.referencedColumn.createValueMap(value));\n }\n }, {});\n if (columns.length === 1 && rawRelationIdResult.relationIdAttribute.disableMixedMap === false) {\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return columns[0].getEntityValue(idMap);\n }\n else {\n return columns[0].referencedColumn.getEntityValue(idMap);\n }\n }\n return idMap;\n }).filter(function (result) { return result !== undefined; });\n var properties = rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split(\".\");\n var mapToProperty = function (properties, map, value) {\n var property = properties.shift();\n if (property && properties.length === 0) {\n map[property] = value;\n return map;\n }\n else if (property && properties.length > 0) {\n mapToProperty(properties, map[property], value);\n }\n else {\n return map;\n }\n };\n if (relation.isOneToOne || relation.isManyToOne) {\n if (idMaps[0] !== undefined) {\n mapToProperty(properties, entity, idMaps[0]);\n hasData = true;\n }\n }\n else {\n mapToProperty(properties, entity, idMaps);\n if (idMaps.length > 0) {\n hasData = true;\n }\n }\n });\n return hasData;\n };\n RawSqlResultsToEntityTransformer.prototype.transformRelationCounts = function (rawSqlResults, alias, entity) {\n var _this = this;\n var hasData = false;\n this.rawRelationCountResults\n .filter(function (rawRelationCountResult) { return rawRelationCountResult.relationCountAttribute.parentAlias === alias.name; })\n .forEach(function (rawRelationCountResult) {\n var relation = rawRelationCountResult.relationCountAttribute.relation;\n var referenceColumnName;\n if (relation.isOneToMany) {\n referenceColumnName = relation.inverseRelation.joinColumns[0].referencedColumn.databaseName; // todo: fix joinColumns[0]\n }\n else {\n referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn.databaseName : relation.inverseRelation.joinColumns[0].referencedColumn.databaseName;\n }\n var referenceColumnValue = rawSqlResults[0][DriverUtils.buildColumnAlias(_this.driver, alias.name, referenceColumnName)]; // we use zero index since its grouped data // todo: selection with alias for entity columns wont work\n if (referenceColumnValue !== undefined && referenceColumnValue !== null) {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = 0;\n rawRelationCountResult.results\n .filter(function (result) { return result[\"parentId\"] === referenceColumnValue; })\n .forEach(function (result) {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = parseInt(result[\"cnt\"]);\n hasData = true;\n });\n }\n });\n return hasData;\n };\n RawSqlResultsToEntityTransformer.prototype.createValueMapFromJoinColumns = function (relation, parentAlias, rawSqlResults) {\n var _this = this;\n var columns;\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; });\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n columns = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; });\n }\n }\n return columns.reduce(function (valueMap, column) {\n rawSqlResults.forEach(function (rawSqlResult) {\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n valueMap[column.databaseName] = _this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildColumnAlias(_this.driver, parentAlias, column.databaseName)], column);\n }\n else {\n valueMap[column.databaseName] = _this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildColumnAlias(_this.driver, parentAlias, column.referencedColumn.databaseName)], column);\n }\n });\n return valueMap;\n }, {});\n };\n RawSqlResultsToEntityTransformer.prototype.extractEntityPrimaryIds = function (relation, relationIdRawResult) {\n var columns;\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(function (joinColumn) { return joinColumn; });\n }\n else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(function (joinColumn) { return joinColumn; });\n }\n else {\n columns = relation.inverseRelation.inverseJoinColumns.map(function (joinColumn) { return joinColumn; });\n }\n }\n return columns.reduce(function (data, column) {\n data[column.databaseName] = relationIdRawResult[column.databaseName];\n return data;\n }, {});\n };\n return RawSqlResultsToEntityTransformer;\n}());\nexport { RawSqlResultsToEntityTransformer };\n\n//# sourceMappingURL=RawSqlResultsToEntityTransformer.js.map\n","\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nif (_global[\"default\"]._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global[\"default\"]._babelPolyfill = true;","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/array/flat-map\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/string/trim-start\");\n\nrequire(\"core-js/fn/string/trim-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Counter = void 0;\nconst Helper_1 = require(\"./Helper\");\nclass Counter {\n constructor(value) {\n this._value = 0;\n if (value instanceof Counter) {\n value = value.current;\n }\n this._value = Helper_1.Helper.nonNull(value, 0);\n }\n next() {\n this._value++;\n return this._value;\n }\n current() {\n return this._value;\n }\n}\nexports.Counter = Counter;\n//# sourceMappingURL=Counter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DateHelper = void 0;\nconst Helper_1 = require(\"./Helper\");\nlet DateHelper = /** @class */ (() => {\n class DateHelper {\n /**\n * Formatiert ein Date-Object nach der Vorlage von der C-Funktion strftime\n *\n * @param sFormat\n * @param date\n * @param useUTC\n * @returns {*|void|string}\n */\n static strftime(sFormat, date, useUTC) {\n useUTC = Helper_1.Helper.nonNull(useUTC, false);\n date = Helper_1.Helper.nonNull(date, new Date());\n if (!(date instanceof Date))\n date = new Date(date);\n let nDay = (useUTC) ? date.getUTCDay() : date.getDay(), nDate = (useUTC) ? date.getUTCDate() : date.getDate(), nMonth = (useUTC) ? date.getUTCMonth() : date.getMonth(), nYear = (useUTC) ? date.getUTCFullYear() : date.getFullYear(), nHour = (useUTC) ? date.getUTCHours() : date.getHours(), aDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], aDaysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], aMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], isLeapYear = function () {\n if ((nYear & 3) !== 0)\n return false;\n return nYear % 100 !== 0 || nYear % 400 === 0;\n }, getThursday = function () {\n let target = new Date(date);\n target.setDate(nDate - ((nDay + 6) % 7) + 3);\n return target;\n }, zeroPad = function (nNum, nPad) {\n return ('' + (Math.pow(10, nPad) + nNum)).slice(1);\n };\n return sFormat.replace(/%[a-z]/gi, (sMatch) => {\n return {\n '%a': this.translate(aDaysShort[nDay]),\n '%A': this.translate(aDays[nDay]),\n '%b': this.translate(aMonths[nMonth].slice(0, 3)),\n '%B': this.translate(aMonths[nMonth]),\n '%c': date.toUTCString(),\n '%C': Math.floor(nYear / 100),\n '%d': zeroPad(nDate, 2),\n '%e': nDate,\n '%f': zeroPad(date.getTime() % 1000, 4),\n '%F': date.toISOString().slice(0, 10),\n '%G': getThursday().getFullYear(),\n '%g': ('' + getThursday().getFullYear()).slice(2),\n '%H': zeroPad(nHour, 2),\n '%I': zeroPad((nHour + 11) % 12 + 1, 2),\n '%j': zeroPad(aDayCount[nMonth] + nDate + ((nMonth > 1 && isLeapYear()) ? 1 : 0), 3),\n '%k': '' + nHour,\n '%l': (nHour + 11) % 12 + 1,\n '%m': zeroPad(nMonth + 1, 2),\n '%M': zeroPad(date.getMinutes(), 2),\n '%p': (nHour < 12) ? 'AM' : 'PM',\n '%P': (nHour < 12) ? 'am' : 'pm',\n '%s': Math.round(date.getTime() / 1000),\n '%S': zeroPad(date.getSeconds(), 2),\n '%u': nDay || 7,\n '%w': '' + nDay,\n '%x': date.toLocaleDateString(),\n '%X': date.toLocaleTimeString(),\n '%y': ('' + nYear).slice(2),\n '%Y': nYear,\n '%z': date.toTimeString().replace(/.+GMT([+-]\\d+).+/, '$1'),\n '%Z': date.toTimeString().replace(/.+\\((.+?)\\)$/, '$1')\n }[sMatch] || sMatch;\n });\n }\n static translate(key) {\n if (this.translationCallback) {\n return this.translationCallback(key);\n }\n return key;\n }\n static setTranslationCallback(callback) {\n this.translationCallback = callback;\n }\n }\n DateHelper.FORMAT = {\n ISO_TIME: \"%Y-%m-%dT%H:%M%S\"\n };\n return DateHelper;\n})();\nexports.DateHelper = DateHelper;\n//# sourceMappingURL=DateHelper.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MigrationHelper = void 0;\nconst typeorm_1 = require(\"typeorm\");\nconst Helper_1 = require(\"./Helper\");\nclass MigrationHelper {\n static isServer() {\n return (typeof document !== \"object\");\n }\n static addTableFromModelClass(modelClass, queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield queryRunner.createTable(this.createTableFromModelClass(modelClass));\n });\n }\n static addManyToManyTable(tableOne, tableTwo, queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield queryRunner.createTable(this.createManyToManyTable(tableOne, tableTwo));\n });\n }\n static createManyToManyTable(tableOne, tableTwo) {\n let fieldOne = tableOne + \"Id\";\n let fieldTwo = tableTwo + \"Id\";\n let name = tableOne + tableTwo.substr(0, 1).toUpperCase() + tableTwo.substr(1);\n let manyToManyTable = new typeorm_1.Table({\n name: name,\n columns: [\n {\n name: fieldOne,\n isPrimary: true,\n type: \"integer\"\n },\n {\n name: fieldTwo,\n isPrimary: true,\n type: \"integer\"\n }\n ],\n indices: [\n {\n name: \"IDX_\" + name + \"_\" + fieldOne,\n columnNames: [fieldOne]\n },\n {\n name: \"IDX_\" + name + \"_\" + fieldTwo,\n columnNames: [fieldTwo]\n }\n ],\n foreignKeys: [\n {\n name: \"FK_\" + name + \"_\" + fieldOne,\n columnNames: [fieldOne],\n referencedTableName: tableOne.replace(/([A-Z])/, (match, p1) => \"_\" + p1.toLowerCase()),\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n {\n name: \"FK_\" + name + \"_\" + fieldTwo,\n columnNames: [fieldTwo],\n referencedTableName: tableTwo.replace(/([A-Z])/, (match, p1) => \"_\" + p1.toLowerCase()),\n referencedColumnNames: [\"id\"],\n onDelete: \"cascade\",\n },\n ]\n });\n return manyToManyTable;\n }\n static createTableFromModelClass(modelClass, prefix) {\n prefix = Helper_1.Helper.nonNull(prefix, \"\");\n let columns = [];\n let indices = [];\n let foreignKeys = [];\n let schemaDefinition = modelClass.getSchemaDefinition();\n let tableName = prefix + Helper_1.Helper.toSnakeCase(schemaDefinition.name);\n Object.keys(schemaDefinition.columns).forEach(column => {\n let columnConfig = {};\n Object.keys(schemaDefinition.columns[column]).forEach(key => {\n columnConfig[key] = schemaDefinition.columns[column][key];\n });\n columnConfig[\"name\"] = column;\n if (schemaDefinition.columns[column].primary) {\n columnConfig[\"isPrimary\"] = true;\n }\n if (schemaDefinition.columns[column].nullable) {\n columnConfig[\"isNullable\"] = true;\n }\n if (schemaDefinition.columns[column].generated) {\n //If it is not EasySyncBaseModel or server\n if (Helper_1.Helper.isNull(modelClass.CAN_BE_SYNCED) || this.isServer() || column === \"clientId\") {\n columnConfig[\"isGenerated\"] = true;\n columnConfig[\"generationStrategy\"] = \"increment\";\n if (!this.isServer()) {\n columnConfig[\"type\"] = \"INTEGER\";\n }\n }\n }\n if (typeof columnConfig[\"default\"] === \"string\") {\n columnConfig[\"default\"] = \"'\" + columnConfig[\"default\"] + \"'\";\n }\n else if (columnConfig[\"default\"] === true) {\n columnConfig[\"default\"] = 1;\n }\n else if (columnConfig[\"default\"] === false) {\n columnConfig[\"default\"] = 0;\n }\n if (columnConfig[\"type\"] === MigrationHelper.TYPES.SIMPLE_JSON) {\n columnConfig[\"type\"] = MigrationHelper.TYPES.TEXT;\n }\n if (columnConfig[\"type\"] === MigrationHelper.TYPES.MEDIUMTEXT && !this.isServer()) {\n columnConfig[\"type\"] = MigrationHelper.TYPES.TEXT;\n }\n if (columnConfig[\"type\"] === MigrationHelper.TYPES.SIMPLE_JSON && !this.isServer()) {\n columnConfig[\"type\"] = MigrationHelper.TYPES.TEXT;\n }\n columns.push(columnConfig);\n });\n Object.keys(schemaDefinition.relations).forEach(relation => {\n if (schemaDefinition.relations[relation].type === \"many-to-one\" || schemaDefinition.relations[relation].joinColumn) {\n // let columnName = Helper.toSnakeCase(relation) + \"Id\";\n let columnName = relation.substr(0, 1).toLowerCase() + relation.substr(1) + \"Id\";\n let columnConfig = {\n name: columnName,\n type: MigrationHelper.TYPES.INTEGER,\n isNullable: true\n };\n columns.push(columnConfig);\n let indexConfig = {\n name: \"IDX_\" + tableName + \"_\" + columnName,\n columnNames: [columnName]\n };\n indices.push(indexConfig);\n let foreignKeyConfig = {\n name: \"FK_\" + tableName + \"_\" + columnName,\n columnNames: [columnName],\n referencedTableName: Helper_1.Helper.toSnakeCase(schemaDefinition.relations[relation].target),\n referencedColumnNames: [\"id\"]\n };\n foreignKeys.push(foreignKeyConfig);\n }\n });\n return new typeorm_1.Table({\n name: tableName,\n columns: columns,\n indices: indices,\n foreignKeys: foreignKeys\n });\n }\n static updateModel(queryRunner, newModel) {\n return __awaiter(this, void 0, void 0, function* () {\n let schemaDefinition = newModel.getSchemaDefinition();\n let tableName = Helper_1.Helper.toSnakeCase(schemaDefinition.name);\n let newTable = this.createTableFromModelClass(newModel);\n let table = yield queryRunner.getTable(tableName);\n table.name = \"__temp__\" + table.name;\n table.indices.forEach(index => {\n index.name = \"__temp__\" + index.name;\n });\n table.foreignKeys.forEach(key => {\n key.name = \"__temp__\" + key.name;\n key.columnNames = [key.columnNames[0]];\n key.referencedColumnNames = [key.referencedColumnNames[0]];\n });\n if (MigrationHelper.isServer()) {\n table.columns.forEach(column => {\n if (column.default !== null && typeof column.default === \"string\" && column.default.startsWith(\"'\") && column.default.endsWith(\"'\") && (column.type !== \"varchar\" || column.default.startsWith(\"''\"))) {\n column.default = column.default.substring(1, column.default.length - 1);\n }\n });\n }\n yield queryRunner.createTable(table);\n let names = [];\n table.columns.forEach(column => {\n names.push(column.name);\n });\n yield queryRunner.query(\"INSERT INTO \" + table.name + \"(`\" + names.join(\"`,`\") + \"`) SELECT `\" + names.join(\"`,`\") + \"` FROM \" + tableName + \";\");\n yield queryRunner.query(\"DROP TABLE \" + tableName + \";\");\n yield queryRunner.createTable(newTable);\n let newColumnNames = [];\n newTable.columns.forEach(column => newColumnNames.push(column.name));\n names = [];\n table.columns.forEach(column => {\n if (newColumnNames.indexOf(column.name) !== -1) {\n names.push(column.name);\n }\n });\n yield queryRunner.query(\"INSERT INTO \" + tableName + \"(`\" + names.join(\"`,`\") + \"`) SELECT `\" + names.join(\"`,`\") + \"` FROM \" + table.name + \";\");\n yield queryRunner.query(\"DROP TABLE \" + table.name + \";\");\n });\n }\n}\nexports.MigrationHelper = MigrationHelper;\nMigrationHelper.TYPES = {\n INTEGER: \"int\",\n FLOAT: \"float\",\n DATE: \"datetime\",\n STRING: \"varchar\",\n TEXT: \"text\",\n MEDIUMTEXT: \"mediumtext\",\n BOOLEAN: \"boolean\",\n JSON: \"json\",\n SIMPLE_JSON: \"simple-json\",\n MY_JSON: \"my-json\"\n};\n//# sourceMappingURL=MigrationHelper.js.map","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Prioritized = void 0;\nconst Helper_1 = require(\"./Helper\");\nclass Prioritized {\n constructor(promises) {\n this._lastPriority = 0;\n this._status = 0;\n this._lastResult = null;\n this._success = {};\n this._highestPromise = null;\n promises = Helper_1.Helper.nonNull(promises, {});\n this._callbacks = [];\n if (Array.isArray(promises)) {\n let tmpPromises = {};\n promises.forEach((promise, i) => {\n tmpPromises[(i + 1) * 10] = promise;\n });\n promises = tmpPromises;\n }\n let highestPromiseResolver = null;\n this._highestPromise = new Promise(resolve => {\n highestPromiseResolver = resolve;\n });\n Object.keys(promises).forEach(priority => {\n this._success[priority] = null;\n promises[priority].then(res => {\n this._success[priority] = true;\n if (parseInt(priority) > this._lastPriority) {\n this._lastResult = res;\n this._lastPriority = parseInt(priority);\n this._callCallbacks();\n if (this._checkHighest()) {\n this._status = 2;\n highestPromiseResolver();\n }\n else {\n this._status = 1;\n }\n }\n }).catch(e => {\n this._success[priority] = e;\n if (this._checkHighest()) {\n this._status = 2;\n highestPromiseResolver();\n }\n });\n });\n this._promises = promises;\n }\n _callCallbacks() {\n this._callbacks.forEach(callback => {\n callback(this._lastResult, this._lastPriority);\n });\n }\n _checkHighest() {\n let isHighestResult = false;\n Object.keys(this._success).reverse().some(priority => {\n if (Helper_1.Helper.isNull(this._success[priority])) {\n //return true beendet some-schleife\n return true;\n }\n else if (this._success[priority] === true) {\n isHighestResult = true;\n return true;\n }\n });\n return isHighestResult;\n }\n do(callback) {\n if (this._status < 2) {\n this._callbacks.push(callback);\n }\n if (this._status > 0) {\n callback(this._lastResult, this._lastPriority);\n }\n }\n highest(funcOrPromise) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._highestPromise;\n if (Helper_1.Helper.isNotNull(funcOrPromise)) {\n return Promise.resolve(this._lastResult).then(funcOrPromise);\n }\n else {\n return Promise.resolve(this._lastResult);\n }\n });\n }\n first(funcOrPromise) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._status === 0) {\n if (Helper_1.Helper.isNotNull(funcOrPromise)) {\n return Promise.race(Object[\"values\"](this._promises)).then(funcOrPromise);\n }\n else {\n return Promise.race(Object[\"values\"](this._promises));\n }\n }\n else {\n return Promise.resolve(this._lastResult);\n }\n });\n }\n}\nexports.Prioritized = Prioritized;\n//# sourceMappingURL=Prioritized.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromiseWithHandlers = void 0;\nclass PromiseWithHandlers extends Promise {\n constructor(executor) {\n let resolver = null;\n let rejecter = null;\n super((res, rej) => {\n resolver = res;\n rejecter = rej;\n if (executor) {\n executor(resolver, rejecter);\n }\n });\n this.resolver = resolver;\n this.rejecter = rejecter;\n }\n resolve(value) {\n if (this.resolver) {\n this.resolver(value);\n }\n }\n reject(value) {\n if (this.rejecter) {\n this.rejecter(value);\n }\n }\n}\nexports.PromiseWithHandlers = PromiseWithHandlers;\n//# sourceMappingURL=PromiseWithHandlers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Random = void 0;\nconst Helper_1 = require(\"./Helper\");\nlet Random = /** @class */ (() => {\n class Random {\n static seedRandom(seed) {\n this._seed = seed;\n }\n static getRandom() {\n let t = this._seed += 0x6D2B79F5;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n }\n static getIntRandom(maxValue) {\n return Math.floor(Random.getRandom() * (maxValue + 1));\n }\n static getStringRandom(numSigns, alphabet) {\n alphabet = Helper_1.Helper.nonNull(alphabet, \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\");\n let random = \"\";\n const numAlphabet = alphabet.length - 1;\n for (let i = 0; i < numSigns; i++) {\n random += alphabet[Random.getIntRandom(numAlphabet)];\n }\n return random;\n }\n }\n Random._seed = new Date().getTime();\n return Random;\n})();\nexports.Random = Random;\n//# sourceMappingURL=Random.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DragHelper = void 0;\nconst DraggedElement_1 = require(\"./DraggedElement\");\nclass DragHelper {\n constructor() {\n this.startPosition = null;\n this.currentDraggedElement = null;\n window.addEventListener(\"mousemove\", e => {\n if (this.currentDraggedElement) {\n this.dragMove({ x: e.clientX, y: e.clientY });\n }\n });\n window.addEventListener(\"touchmove\", e => {\n if (this.currentDraggedElement) {\n this.dragMove({ x: e.touches[0].clientX, y: e.touches[0].clientY });\n }\n });\n window.addEventListener(\"mouseup\", e => {\n if (e.button === 0) {\n this.dragStop({ x: e.clientX, y: e.clientY });\n }\n });\n window.addEventListener(\"touchend\", e => {\n if (e.touches.length === 0) {\n this.dragStop({ x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY });\n }\n });\n }\n static getInstance() {\n if (!this.instance) {\n this.instance = new DragHelper();\n }\n return this.instance;\n }\n draggable(element) {\n const dragElement = new DraggedElement_1.DraggedElement(element);\n element.addEventListener(\"mousedown\", e => {\n e.preventDefault();\n console.log(\"mousedown\", e.button);\n if (e.button === 0) {\n this.dragStart({ x: e.clientX, y: e.clientY }, dragElement);\n }\n });\n element.addEventListener(\"touchstart\", e => {\n e.preventDefault();\n if (e.touches.length === 1) {\n this.dragStart({ x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY }, dragElement);\n }\n });\n return dragElement;\n }\n dragStart(position, draggedElement) {\n this.currentDraggedElement = draggedElement;\n this.startPosition = position;\n this.currentDraggedElement.start();\n }\n dragMove(toPosition) {\n if (this.currentDraggedElement) {\n const diff = { x: toPosition.x - this.startPosition.x, y: toPosition.y - this.startPosition.y };\n this.currentDraggedElement.moveRelativeTo(diff);\n }\n }\n dragStop(mousePos) {\n if (this.currentDraggedElement) {\n this.currentDraggedElement.stop(mousePos);\n this.currentDraggedElement = null;\n this.startPosition = null;\n }\n }\n}\nexports.DragHelper = DragHelper;\n//# sourceMappingURL=DragHelper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HotkeyManager = void 0;\nclass HotkeyManager {\n constructor() {\n this._keys = {};\n this._callbacks = {};\n this._lastCallbackId = 0;\n this._active = false;\n this.mousePosition = null;\n this._addListeners();\n this.ignoreFormElements = false;\n }\n static isFormElement(element) {\n return element instanceof HTMLInputElement\n || element instanceof HTMLSelectElement\n || element instanceof HTMLTextAreaElement;\n }\n getMousePosition() {\n return this.mousePosition;\n }\n _addListeners() {\n window.addEventListener(\"keydown\", e => {\n if (this.ignoreFormElements || !HotkeyManager.isFormElement(e.target)) {\n this._keys[e.key.toLowerCase()] = true;\n if (this._active) {\n this._checkCallbacks(e);\n }\n }\n });\n window.addEventListener(\"keyup\", e => {\n if (e.key) {\n this._keys[e.key.toLowerCase()] = false;\n }\n });\n document.addEventListener(\"mousemove\", e => {\n this.mousePosition = { x: e.clientX, y: e.clientY };\n });\n }\n activate() {\n this._active = true;\n }\n deactivate() {\n this._active = false;\n }\n addCallback(keys, callback) {\n this._lastCallbackId++;\n this._callbacks[this._lastCallbackId] = {\n keys: keys,\n callback: callback\n };\n }\n isKeyPressed(key) {\n return this._active && this._keys[key] && this._keys[key] === true;\n }\n _checkCallbacks(e) {\n //TODO async forEach?\n Object.values(this._callbacks).forEach(callback => {\n // @ts-ignore\n if (callback.keys.every(key => this._keys[key] === true)) {\n // @ts-ignore\n callback.callback(e);\n }\n });\n }\n removeCallback(callbackId) {\n delete this._callbacks[callbackId];\n }\n}\nexports.HotkeyManager = HotkeyManager;\n//# sourceMappingURL=HotkeyManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InputSelect = void 0;\nconst Helper_1 = require(\"../shared/Helper\");\nconst ViewHelper_1 = require(\"./ViewHelper\");\nclass InputSelect {\n constructor(element, options) {\n this.onChangeListeners = [];\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n this.options = new Map();\n this.inputElement = element;\n options.forEach(o => {\n if (typeof o === \"string\") {\n o = { value: o, label: o };\n }\n o.selected = Helper_1.Helper.nonNull(o.selected, false);\n this.options.set(o.value, o);\n return o;\n });\n this.buildElement();\n }\n onChange(listener) {\n this.onChangeListeners.push(listener);\n }\n buildElement() {\n const parent = this.inputElement.parentElement;\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"input-select-container\");\n const flexContainer = document.createElement(\"div\");\n flexContainer.classList.add(\"input-select-flex\");\n this.selectedOptionsContainer = document.createElement(\"span\");\n this.selectedOptionsContainer.classList.add(\"input-select-selected-options\");\n const classes = [];\n this.inputElement.classList.forEach(c => {\n this.container.classList.add(c);\n classes.push(c);\n });\n this.inputElement.classList.remove(...classes);\n this.inputElement.classList.add(\"input-select-input\");\n this.optionsContainer = document.createElement(\"div\");\n this.optionsContainer.classList.add(\"input-select-options\");\n parent.insertBefore(this.container, this.inputElement);\n this.inputElement.remove();\n this.container.appendChild(flexContainer);\n this.container.appendChild(this.optionsContainer);\n flexContainer.appendChild(this.selectedOptionsContainer);\n flexContainer.appendChild(this.inputElement);\n this.inputElement.addEventListener(\"input\", () => this.updateOptions());\n if (\"ResizeObserver\" in window) {\n // @ts-ignore\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => {\n this.optionsContainer.style.width = entry.borderBoxSize[0].inlineSize + \"px\";\n });\n });\n resizeObserver.observe(this.container);\n }\n // if (\"IntersectionObserver\" in window) {\n // const intersectionOptions = {\n // root: this.optionsContainer,\n // rootMargin: \"20px\",\n // threshold: 0.01\n // }\n // const intersectionObserver = new IntersectionObserver((entries) => {\n // entries.forEach(entry => console.log(\"is intersecting\", entry.isIntersecting));\n // // console.log(\"entries\", entries);\n // }, intersectionOptions);\n // intersectionObserver.observe(flexContainer);\n // }\n window.addEventListener(\"scroll\", () => console.log(\"scrolling\"));\n this.container.addEventListener(\"click\", () => {\n const rect = this.container.getBoundingClientRect();\n this.optionsContainer.style.top = (rect.top + rect.height) + \"px\";\n });\n this.updateOptions();\n }\n updateOptions() {\n ViewHelper_1.ViewHelper.removeAllChildren(this.selectedOptionsContainer);\n ViewHelper_1.ViewHelper.removeAllChildren(this.optionsContainer);\n const inputValue = this.inputElement.value;\n this.options.forEach(o => {\n const optionElement = document.createElement(\"span\");\n optionElement.classList.add(\"input-select-option\");\n optionElement.dataset[\"value\"] = o.value;\n optionElement.innerText = o.label;\n if (o.selected) {\n this.selectedOptionsContainer.appendChild(optionElement);\n }\n else if (o.label.indexOf(inputValue) !== -1) {\n this.optionsContainer.appendChild(optionElement);\n }\n optionElement.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n e.cancelBubble = true;\n this.toggle(o.value);\n this.inputElement.focus();\n });\n });\n }\n toggle(value) {\n const option = this.options.get(value);\n if (option) {\n option.selected = !option.selected;\n this.updateOptions();\n this.onChangeListeners.forEach(listener => {\n listener(option, this);\n });\n }\n }\n getOptions() {\n return Array.from(this.options.values());\n }\n getSelectedOptions() {\n return this.getOptions().filter(o => o.selected);\n }\n getSelectedValues() {\n return this.getSelectedOptions().map(o => o.value);\n }\n updateSelection(selection) {\n Object.keys(selection).forEach(value => {\n const option = this.options.get(value);\n if (option) {\n option.selected = selection[value];\n }\n });\n this.updateOptions();\n }\n}\nexports.InputSelect = InputSelect;\n//# sourceMappingURL=InputSelect.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./shared/EventManager\"));\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_helper_1 = require(\"js-helper\");\nclass EventManager {\n constructor() {\n this._listeners = {};\n this._lastListenerId = 0;\n }\n /**\n * @return {EventManager}\n */\n static getInstance() {\n if (!this._instance) {\n this._instance = new EventManager();\n }\n return this._instance;\n }\n addListener(event, listener) {\n if (typeof listener !== \"function\") {\n throw new Error(\"can only add functions as listeners!\");\n }\n this._lastListenerId++;\n if (!this._listeners[event]) {\n this._listeners[event] = {};\n this._listeners[event][this._lastListenerId] = listener;\n }\n return this._lastListenerId;\n }\n removeListener(event, listenerId) {\n if (this._listeners[event] && this._listeners[event][listenerId]) {\n delete this._listeners[event][listenerId];\n }\n }\n trigger(event, data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._listeners[event]) {\n yield js_helper_1.Helper.asyncForEach(Object.keys(this._listeners[event]), (listenerId) => __awaiter(this, void 0, void 0, function* () {\n yield this._listeners[event][listenerId](data);\n }), true);\n }\n });\n }\n static trigger(event, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.getInstance().trigger(event, data);\n });\n }\n}\nexports.EventManager = EventManager;\nEventManager._instance = null;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerSite = void 0;\nconst TemplateSite_1 = require(\"./TemplateSite\");\nconst containerTemplate = require(\"../../html/siteTemplates/container.html\");\n/**\n * Seite, welche das Container-Template benutzt\n */\nclass ContainerSite extends TemplateSite_1.TemplateSite {\n /**\n * Constructor für die ContainerSite\n *\n * @param siteManager\n * @param view\n */\n constructor(siteManager, view) {\n super(siteManager, view, containerTemplate, \"#site-content\");\n }\n}\nexports.ContainerSite = ContainerSite;\n//# sourceMappingURL=ContainerSite.js.map","module.exports = __webpack_public_path__ + \"html/container.html\";","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DelegateSite = void 0;\nconst AbstractSite_1 = require(\"../AbstractSite\");\nclass DelegateSite extends AbstractSite_1.AbstractSite {\n constructor(site) {\n super(undefined, document.createElement(\"span\"));\n /** @var {AbstractSite} */\n this._site = site;\n }\n setTitle(titleElement, title) {\n return this._site.setTitle(titleElement, title);\n }\n setParameter(name, value) {\n //Todo changing\n // return this._site.setParameter(name, value);\n }\n setParameters(parameters) {\n //TODO changing\n // return this._site.setParameters(parameters)\n }\n getParameters() {\n return this._site.getParameters();\n }\n showLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._site.showLoadingSymbol();\n });\n }\n removeLoadingSymbol() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._site.removeLoadingSymbol();\n });\n }\n _updateTitle() {\n return this._site._updateTitle();\n }\n updateUrl(args) {\n //todo\n // return this._site.updateUrl(args);\n }\n startSite(site, args) {\n return this._site.startSite(site, args);\n }\n finishAndStartSite(site, args, result) {\n return this._site.finishAndStartSite(site, args, result);\n }\n finish(result) {\n return this._site.finish(result);\n }\n goBack() {\n return this._site.goBack();\n }\n getFinishPromise() {\n return this._site.getFinishPromise();\n }\n setResult(result) {\n return this._site.setResult(result);\n }\n getFinishResolver() {\n return this._site.getFinishResolver();\n }\n addFragment(viewQuery, fragment) {\n return this._site.addFragment(viewQuery, fragment);\n }\n findBy(query, all, asPromise) {\n return this._site.findBy(query, all, asPromise);\n }\n setPauseParameters(pauseParameters) {\n return this._site.setPauseParameters(pauseParameters);\n }\n getViewPromise() {\n return this._site.getViewPromise();\n }\n getState() {\n return this._site.getState();\n }\n getTitle() {\n return this._site.getTitle();\n }\n isShowing() {\n return this._site.isShowing();\n }\n isDestroying() {\n return this._site.isDestroying();\n }\n}\nexports.DelegateSite = DelegateSite;\n//# sourceMappingURL=DelegateSite.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractWindowFragment = void 0;\nconst AbstractFragment_1 = require(\"../AbstractFragment\");\nconst ViewInflater_1 = require(\"../../ViewInflater\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst ViewHelper_1 = require(\"js-helper/dist/client/ViewHelper\");\nconst Translator_1 = require(\"../../Translator\");\nconst NativeStoragePromise_1 = require(\"../../NativeStoragePromise\");\nconst Toast_1 = require(\"../../Toast/Toast\");\nconst template = require(\"../../../html/Framework/Fragment/abstractWindowTemplate.html\");\nclass AbstractWindowFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view, position, title, id) {\n super(site, template);\n this.position = {\n x: 0,\n y: 0,\n anchorY: \"top\",\n anchorX: \"left\"\n };\n this.title = \"\";\n this._margin = { x: 0, y: 0 };\n this.saveData = {};\n this.state = \"normal\";\n this.popupWindow = null;\n this.translateTitle = true;\n this.position = Object.assign({ anchorY: \"top\", anchorX: \"left\" }, position);\n this.title = Helper_1.Helper.nonNull(title, \" \");\n if (id) {\n this.id = \"window-\" + id;\n }\n this._viewPromise = Promise.all([this._viewPromise, ViewInflater_1.ViewInflater.getInstance().load(view)]).then(res => {\n res[0].querySelector(\"#child-view\").replaceWith(res[1]);\n ViewInflater_1.ViewInflater.replaceWithChildren(res[1]);\n this._view = res[0];\n return res[0];\n }).catch(e => console.error(e));\n }\n setTitle(title) {\n if (this._titleElement) {\n ViewHelper_1.ViewHelper.removeAllChildren(this._titleElement);\n this._titleElement.appendChild(this.translateTitle ? Translator_1.Translator.makePersistentTranslation(title) : document.createTextNode(title));\n }\n this.title = title;\n }\n getDimension() {\n let computedStyle = window.getComputedStyle(this._container);\n let width = parseFloat(computedStyle.getPropertyValue(\"width\"));\n let height = parseFloat(computedStyle.getPropertyValue(\"height\"));\n if (isNaN(width)) {\n width = parseFloat(this._container.style.width);\n }\n if (isNaN(height)) {\n height = parseFloat(this._container.style.height);\n }\n return { x: Math.ceil(width) - this._margin.x, y: Math.ceil(height) - this._margin.y };\n }\n setDimension(x, y) {\n x += this._margin.x;\n y += this._margin.y;\n this._container.style.width = x + \"px\";\n this._container.style.height = y + \"px\";\n this.saveData.dimension = {\n x: x,\n y: y,\n };\n this.save();\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this._container = this.findBy(\".window-container\");\n if (this.position.width || this.position.height) {\n this._container.style.width = this.position.width + \"px\";\n this._container.style.height = this.position.height + \"px\";\n }\n this._window = this.findBy(\".window\");\n this._titleElement = this.findBy(\"#title\");\n this._resizeElements = {\n x: [\n this._window,\n this.findBy(\".window-resize.left\"),\n this.findBy(\".window-resize.right\")\n ],\n y: [\n this._window,\n this._titleElement,\n this.findBy(\".window-resize.top\"),\n this.findBy(\".window-resize.bottom\")\n ],\n };\n yield this.load();\n this._checkPositionAndDimension();\n // this.moveTo(this.position.x, this.position.y);\n this.setTitle(this.title);\n this.addListeners();\n const buttonContainer = this.findBy(\"#title-buttons\");\n if (buttonContainer) {\n buttonContainer.remove();\n this._titleElement.parentNode.appendChild(buttonContainer);\n buttonContainer.querySelectorAll(\".title-button\").forEach(button => {\n button.addEventListener(\"click\", e => {\n this.onButtonClick(button.id, button, e);\n });\n });\n }\n return res;\n });\n }\n addListeners() {\n return __awaiter(this, void 0, void 0, function* () {\n let resizeStart = null;\n let multiplier;\n let dimension;\n let resizeStartListener = (x, y, e) => {\n if (e.target.classList.contains(\"window-resize\")) {\n e.stopPropagation();\n resizeStart = { x: x, y: y };\n let direction = e.target.dataset[\"direction\"].split(\",\");\n multiplier = { x: parseInt(direction[0]), y: parseInt(direction[1]) };\n dimension = this.getDimension();\n }\n };\n this.findBy(\".window-resize\", true).forEach(element => {\n element.addEventListener(\"mousedown\", (e) => {\n resizeStartListener(e.clientX, e.clientY, e);\n });\n });\n let mouseDownPos = null;\n let pos = null;\n let moveStartListener = (x, y, e) => {\n if (e.target === this._container || e.target.closest(\"#title\") === this._titleElement) {\n mouseDownPos = { x: x, y: y };\n pos = Object.assign({}, this.getPosition()); //Make copy\n this._container.classList.add(\"moving\");\n }\n this.makeActiveWindow();\n };\n this._container.addEventListener(\"mousedown\", (e) => {\n moveStartListener(e.clientX, e.clientY, e);\n });\n this._container.addEventListener(\"touchstart\", (e) => {\n if (e.touches.length === 1) {\n moveStartListener(e.touches[0].clientX, e.touches[0].clientY, e);\n }\n });\n let moveListener = (x, y) => {\n if (resizeStart !== null) {\n let localMultiplier = {\n x: multiplier.x,\n y: multiplier.y,\n };\n let diff = {\n x: (x - resizeStart.x) * (localMultiplier.x),\n y: (y - resizeStart.y) * (localMultiplier.y)\n };\n dimension = { x: dimension.x + diff.x, y: dimension.y + diff.y };\n this.setDimension(dimension.x, dimension.y);\n const realDimension = this.getDimension();\n if (dimension.x !== realDimension.x) {\n localMultiplier.x = 0;\n }\n if (dimension.y !== realDimension.y) {\n localMultiplier.y = 0;\n }\n this._checkPositionAndDimension();\n //TODO diff für Center berechnen...\n let moveDiff = { x: 0, y: 0 };\n if (localMultiplier.x !== 0) {\n if (this.position.anchorX === \"center\") {\n moveDiff.x = diff.x * localMultiplier.x / 2;\n }\n else if (localMultiplier.x * (this.position.anchorX === \"left\" ? 1 : -1) < 0) {\n moveDiff.x = diff.x * localMultiplier.x;\n }\n }\n if (localMultiplier.y !== 0) {\n if (this.position.anchorY === \"center\") {\n moveDiff.y = diff.y * localMultiplier.y / 2;\n }\n else if (localMultiplier.y * (this.position.anchorY === \"top\" ? 1 : -1) < 0) {\n moveDiff.y = diff.y * localMultiplier.y;\n }\n }\n this.moveAt(moveDiff.x, moveDiff.y);\n resizeStart = { x: x, y: y };\n }\n else if (mouseDownPos !== null) {\n let diff = {\n x: x - mouseDownPos.x,\n y: y - mouseDownPos.y,\n };\n mouseDownPos = { x, y };\n // const newPos = {x: pos.x + diff.x, y: pos.y + diff.y};\n this.moveAt(diff.x, diff.y);\n }\n };\n window.addEventListener(\"mousemove\", (e) => {\n moveListener(e.clientX, e.clientY);\n });\n window.addEventListener(\"touchmove\", (e) => {\n if (e.touches.length === 1) {\n moveListener(e.touches[0].clientX, e.touches[0].clientY);\n }\n });\n let endListener = (x, y, e) => {\n mouseDownPos = null;\n resizeStart = null;\n this._container.classList.remove(\"moving\");\n };\n window.addEventListener(\"mouseup\", (e) => {\n endListener(e.clientX, e.clientY, e);\n });\n window.addEventListener(\"touchend\", (e) => {\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n endListener(e.changedTouches[0].clientX, e.changedTouches[0].clientY, e);\n }\n });\n this._container.addEventListener(\"dblclick\", (e) => {\n if (e.target === this._container || e.target.closest(\"#title\") === this._titleElement) {\n this.toggleMinimize();\n }\n });\n window.addEventListener(\"resize\", () => {\n this._checkPositionAndDimension();\n });\n window.addEventListener(\"beforeunload\", () => {\n if (this.popupWindow) {\n this.id = null; //disable saving, since it should\n this.popupWindow.close();\n }\n });\n });\n }\n makeActiveWindow() {\n let activeWindow = document.querySelector(\".window-container.active-window\");\n if (activeWindow && activeWindow !== this._container) {\n activeWindow.classList.remove(\"active-window\");\n }\n this._container.classList.add(\"active-window\");\n }\n load() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.id) {\n const saveData = yield NativeStoragePromise_1.NativeStoragePromise.getItem(this.id);\n if (saveData) {\n if (saveData.dimension) {\n this.setDimension(saveData.dimension.x, saveData.dimension.y);\n }\n if (saveData.position) {\n this.position = saveData.position;\n this._checkPositionAndDimension();\n }\n if (saveData.state) {\n switch (saveData.state) {\n case \"minimized\": {\n this.toggleMinimize();\n break;\n }\n case \"maximized\": {\n this.toggleMaximize();\n break;\n }\n case \"popup\": {\n this._viewLoadedPromise.then(() => {\n this.openInNewWindow();\n });\n break;\n }\n }\n }\n this.saveData = saveData;\n this.save();\n }\n }\n });\n }\n save() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.id) {\n // console.log(\"save\", this.id, this.saveData);\n yield NativeStoragePromise_1.NativeStoragePromise.setItem(this.id, this.saveData);\n }\n });\n }\n toggleMinimize() {\n if (this.state !== \"popup\") {\n this._container.classList.toggle(\"minimized\");\n this._container.classList.remove(\"maximized\");\n if (!this._container.classList.contains(\"minimized\")) {\n this.resizeToContent();\n this.state = \"normal\";\n }\n else {\n this.state = \"minimized\";\n }\n this.saveData.state = this.state;\n this.save();\n }\n }\n toggleMaximize() {\n if (this.state !== \"popup\") {\n this._container.classList.toggle(\"maximized\");\n this._container.classList.remove(\"minimized\");\n if (!this._container.classList.contains(\"maximized\")) {\n this.resizeToContent();\n this.state = \"normal\";\n }\n else {\n this.state = \"maximized\";\n }\n this.saveData.state = this.state;\n this.save();\n }\n }\n resizeToContent() {\n if (this._window) {\n let diff = {\n x: this._window.scrollWidth - this._window.clientWidth,\n y: this._window.scrollHeight - this._window.clientHeight,\n };\n let dimension = this.getDimension();\n if (diff.x === 0) {\n let sum = 0;\n this._resizeElements.x.forEach(e => sum += parseFloat(window.getComputedStyle(e).getPropertyValue(\"width\")));\n diff.x = Math.ceil(sum) - dimension.x;\n }\n if (diff.y === 0) {\n let sum = 0;\n this._resizeElements.y.forEach(e => sum += parseFloat(window.getComputedStyle(e).getPropertyValue(\"height\")));\n diff.y = Math.ceil(sum) - dimension.y;\n }\n dimension.x += diff.x;\n dimension.y += diff.y;\n if (this.state === \"normal\") {\n this.setDimension(dimension.x, dimension.y);\n }\n this._checkPositionAndDimension();\n }\n }\n getTopLeftCornerPosition() {\n const dimension = this.getDimension();\n let x = this.position.x;\n if (this.position.anchorX === \"center\") {\n x += window.innerWidth / 2 - dimension.x / 2;\n }\n else if (this.position.anchorX === \"right\") {\n x += window.innerWidth - dimension.x;\n }\n let y = this.position.y;\n if (this.position.anchorY === \"center\") {\n y += window.innerHeight / 2 - dimension.y / 2;\n }\n else if (this.position.anchorY === \"bottom\") {\n y += window.innerHeight - dimension.y;\n }\n if (x < 0) {\n x = 0;\n }\n if (y < 0) {\n y = 0;\n }\n return { x, y };\n }\n getCenterCenterPosition() {\n const dimension = this.getDimension();\n const topLeft = this.getTopLeftCornerPosition();\n return {\n x: (topLeft.x + dimension.x / 2) - window.innerWidth / 2,\n y: (topLeft.y + dimension.y / 2) - window.innerHeight / 2\n };\n }\n getBottomRightPosition() {\n const dimension = this.getDimension();\n const topLeft = this.getTopLeftCornerPosition();\n return {\n x: Math.min((topLeft.x + dimension.x) - window.innerWidth, 0),\n y: Math.min((topLeft.y + dimension.y) - window.innerHeight, 0),\n };\n }\n _checkPositionAndDimension() {\n let dimension = this.getDimension();\n let setDimension = true;\n let dimensionChanged = false;\n if (isNaN(dimension.x)) {\n dimension.x = 0;\n setDimension = false;\n }\n if (isNaN(dimension.y)) {\n dimension.y = 0;\n setDimension = false;\n }\n let posTopLeft = this.getTopLeftCornerPosition();\n let posCenterCenter = this.getCenterCenterPosition();\n let posBottomRight = this.getBottomRightPosition();\n if (dimension.x > window.innerWidth) {\n dimensionChanged = true;\n dimension.x = window.innerWidth;\n this.position.x = 0;\n this.position.anchorX = \"left\";\n }\n else {\n if (posTopLeft.x <= Math.abs(posCenterCenter.x) && posTopLeft.x <= -1 * posBottomRight.x) {\n this.position.x = posTopLeft.x;\n this.position.anchorX = \"left\";\n }\n else if (-1 * posBottomRight.x <= Math.abs(posCenterCenter.x)) {\n this.position.x = posBottomRight.x;\n this.position.anchorX = \"right\";\n }\n else {\n this.position.x = posCenterCenter.x;\n this.position.anchorX = \"center\";\n }\n }\n if (dimension.y > window.innerHeight) {\n dimensionChanged = true;\n dimension.y = window.innerHeight;\n this.position.y = 0;\n this.position.anchorY = \"top\";\n }\n else {\n if (posTopLeft.y <= Math.abs(posCenterCenter.y) && posTopLeft.y <= -1 * posBottomRight.y) {\n this.position.y = posTopLeft.y;\n this.position.anchorY = \"top\";\n }\n else if (-1 * posBottomRight.y <= Math.abs(posCenterCenter.y)) {\n this.position.y = posBottomRight.y;\n this.position.anchorY = \"bottom\";\n }\n else {\n this.position.y = posCenterCenter.y;\n this.position.anchorY = \"center\";\n }\n }\n if (this.position.anchorY === \"top\") {\n this._container.style.top = this.position.y + \"px\";\n this._container.style.removeProperty(\"bottom\");\n }\n else if (this.position.anchorY === \"bottom\") {\n this._container.style.bottom = (-1 * this.position.y) + \"px\";\n this._container.style.removeProperty(\"top\");\n }\n else {\n this._container.style.top = \"calc(50% + \" + this.position.y.toString() + \"px - \" + (dimension.y / 2).toString() + \"px)\";\n this._container.style.removeProperty(\"bottom\");\n }\n if (this.position.anchorX === \"left\") {\n this._container.style.left = this.position.x + \"px\";\n this._container.style.removeProperty(\"right\");\n }\n else if (this.position.anchorX === \"right\") {\n this._container.style.right = (-1 * this.position.x) + \"px\";\n this._container.style.removeProperty(\"left\");\n }\n else {\n this._container.style.left = \"calc(50% + \" + this.position.x.toString() + \"px - \" + (dimension.x / 2).toString() + \"px)\";\n this._container.style.removeProperty(\"right\");\n }\n this.saveData.position = this.position;\n if (!this._container.classList.contains(\"minimized\") && setDimension && dimensionChanged) {\n this.setDimension(dimension.x, dimension.y);\n }\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onStart.call(this, pauseArguments);\n this._checkPositionAndDimension();\n return res;\n });\n }\n moveAt(x, y) {\n const posTopLeft = this.getTopLeftCornerPosition();\n return this.moveTo(x + posTopLeft.x, y + posTopLeft.y);\n }\n moveTo(x, y) {\n this.position = { x: x, y: y, anchorX: \"left\", anchorY: \"top\" };\n this._checkPositionAndDimension();\n this.save();\n }\n onButtonClick(id, button, e) {\n switch (id) {\n case \"minimize-button\": {\n this.toggleMinimize();\n break;\n }\n case \"maximize-button\": {\n this.toggleMaximize();\n break;\n }\n case \"new-window-button\": {\n this.openInNewWindow();\n break;\n }\n }\n }\n openInNewWindow() {\n if (this.state === \"popup\") {\n return;\n }\n const windowProxy = window.open(\"\", \"\", \"modal=yes\");\n if (windowProxy === null) {\n new Toast_1.Toast(\"cannot open popups\").show();\n return;\n }\n this.state = \"popup\";\n this.saveData.state = this.state;\n this.save();\n const baseElement = document.createElement(\"base\");\n baseElement.href = window.location.href;\n windowProxy.document.head.appendChild(baseElement);\n const titleElement = document.createElement(\"title\");\n titleElement.innerText = this.title;\n windowProxy.document.head.appendChild(titleElement);\n document.querySelectorAll(\"link[rel='stylesheet']\").forEach(styleElem => {\n windowProxy.document.head.appendChild(styleElem.cloneNode());\n });\n const parent = this._view.parentNode;\n this._view.remove();\n this._container.classList.add(\"popup\");\n this._container.classList.remove(\"minimized\");\n this._container.classList.remove(\"maximized\");\n const translationCallback = Translator_1.Translator.getInstance().addTranslationCallback((baseElement) => {\n if (baseElement !== this._container) {\n Translator_1.Translator.getInstance().updateTranslations(this._container);\n }\n }, false);\n windowProxy.document.body.appendChild(this._view);\n windowProxy.addEventListener(\"beforeunload\", () => {\n this.state = \"normal\";\n this.saveData.state = this.state;\n this.save();\n this._view.remove();\n this._container.classList.remove(\"popup\");\n this._container.classList.remove(\"minimized\");\n this._container.classList.remove(\"maximized\");\n parent.appendChild(this._view);\n this.popupWindow = null;\n Translator_1.Translator.getInstance().removeTranslationCallback(translationCallback);\n });\n this.popupWindow = windowProxy;\n document.body.classList.forEach(className => {\n console.log(\"adding class\", className);\n windowProxy.document.body.classList.add(className);\n });\n }\n getPosition() {\n return this.position;\n }\n}\nexports.AbstractWindowFragment = AbstractWindowFragment;\n//# sourceMappingURL=AbstractWindowFragment.js.map","module.exports = __webpack_public_path__ + \"html/abstractWindowTemplate.html\";","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlphabeticListFragment = void 0;\nconst AbstractFragment_1 = require(\"../AbstractFragment\");\nconst client_1 = require(\"js-helper/dist/client\");\nconst shared_1 = require(\"js-helper/dist/shared\");\nconst defaultView = require(\"../../../html/Framework/Fragment/alphabeticListFragment.html\");\nclass AlphabeticListFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view) {\n super(site, shared_1.Helper.nonNull(view, defaultView));\n this.elements = {};\n this.sideScrolling = false;\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n //TODO font-size changing\n let sideAlphabet = this.findBy(\".alphabetic-list-sidealphabet\");\n sideAlphabet.addEventListener(\"mousedown\", () => {\n this.sideScrolling = true;\n });\n window.addEventListener(\"touchstart\", (e) => {\n this.sideScrolling = true;\n });\n window.addEventListener(\"mouseup\", () => {\n this.sideScrolling = false;\n });\n window.addEventListener(\"touchend\", () => {\n this.sideScrolling = false;\n });\n this.findBy(\".alphabet-scroll-to\", true).forEach(elem => {\n let listener = (e) => {\n if (this.sideScrolling) {\n this.findBy(\".alphabet-section.\" + elem.dataset.letter).scrollIntoView({\n behavior: \"smooth\",\n block: \"start\"\n });\n }\n };\n elem.addEventListener(\"mousedown\", (e) => {\n this.sideScrolling = true;\n listener(e);\n });\n elem.addEventListener(\"mousemove\", listener);\n elem.addEventListener(\"touchstart\", (e) => {\n this.sideScrolling = true;\n listener(e);\n });\n elem.addEventListener(\"touchmove\", listener);\n });\n this.headingElement = this.findBy(\"#alphabetic-list-heading\");\n this.renderList();\n return res;\n });\n }\n setElements(elements) {\n this.elements = {};\n Object.keys(elements).sort(function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n }).forEach(key => {\n this.elements[key] = elements[key];\n });\n }\n setHeading(headingElement) {\n this.heading = headingElement;\n if (this.headingElement && this.heading) {\n client_1.ViewHelper.removeAllChildren(this.headingElement);\n this.headingElement.appendChild(this.heading);\n }\n }\n renderElement(element) {\n console.warn(\"should be overloaded?\");\n let elem = document.createElement(\"div\");\n elem.innerText = element;\n return elem;\n }\n renderList() {\n client_1.ViewHelper.removeAllChildren(this.headingElement);\n if (this.heading) {\n this.headingElement.appendChild(this.heading);\n }\n this.findBy(\".alphabet-section\", true).forEach(section => {\n client_1.ViewHelper.removeAllChildren(section);\n });\n let currentLetter = 'A';\n let currentSegment = this.findBy(\".alphabet-section.A\");\n Object.keys(this.elements).forEach(key => {\n let newLetter = key.trim().substring(0, 1).toUpperCase();\n if (newLetter !== currentLetter) {\n currentLetter = newLetter;\n let newSegment = this.findBy(\".alphabet-section.\" + newLetter);\n if (newSegment !== null) {\n currentSegment = newSegment;\n }\n }\n let element = this.renderElement(this.elements[key]);\n currentSegment.appendChild(element);\n });\n }\n}\nexports.AlphabeticListFragment = AlphabeticListFragment;\n//# sourceMappingURL=AlphabeticListFragment.js.map","module.exports = __webpack_public_path__ + \"html/alphabeticListFragment.html\";","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TabFragment = void 0;\nconst AbstractFragment_1 = require(\"../AbstractFragment\");\nconst defaultTabView = require(\"../../../html/Framework/Fragment/tabFragment.html\");\nconst Helper_1 = require(\"../../Legacy/Helper\");\nconst Translator_1 = require(\"../../Translator\");\nconst client_1 = require(\"js-helper/dist/client\");\nclass TabFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site, view) {\n super(site, Helper_1.Helper.nonNull(view, defaultTabView));\n this.lastTabId = 0;\n this.activeTab = null;\n this.onTabChangeListener = null;\n this.tabs = new Map();\n this.tabViewPromise = this._viewLoadedPromise;\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this.nameContainer = this.findBy(\".tab-names\");\n this.nameButton = this.findBy(\".tab-button-template\");\n this.nameButton.classList.remove(\"tab-button-template\");\n this.nameButton.remove();\n this.tabContent = this.findBy(\".tab-content\");\n this.tabSite = this.findBy(\".tab-site-template\");\n this.tabSite.classList.remove(\"tab-site-template\");\n this.tabSite.remove();\n return res;\n });\n }\n addFragment(name, fragment, nameIsTranslatable) {\n super.addFragment(\".tab-content\", fragment);\n fragment._viewLoadedPromise.then(() => {\n const view = this.tabSite.cloneNode(true);\n view.appendChild(fragment._view);\n this.lastTabId++;\n const tab = {\n name: name,\n fragment: fragment,\n view: view,\n nameIsTranslatable: Helper_1.Helper.nonNull(nameIsTranslatable, true),\n button: null,\n id: this.lastTabId,\n };\n this.tabs.set(this.lastTabId, tab);\n this._viewLoadedPromise.then(() => {\n const nameElement = this.nameButton.cloneNode(true);\n nameElement.appendChild(tab.nameIsTranslatable ? Translator_1.Translator.makePersistentTranslation(name) : document.createTextNode(name));\n this.nameContainer.appendChild(nameElement);\n nameElement.addEventListener(\"click\", () => {\n this.showTab(tab.id);\n });\n tab.button = nameElement;\n if (Helper_1.Helper.isNull(this.activeTab)) {\n this.showTab(tab.id);\n }\n });\n });\n }\n showTab(tabId) {\n const tab = this.tabs.get(tabId);\n if (tab && tabId !== this.activeTab) {\n let previousActiveButton = this.findBy(\".tab-button.active\");\n if (Helper_1.Helper.isNotNull(previousActiveButton)) {\n previousActiveButton.classList.remove(\"active\");\n }\n tab.button.classList.add(\"active\");\n client_1.ViewHelper.removeAllChildren(this.tabContent);\n this.tabContent.appendChild(tab.view);\n this.activeTab = tabId;\n if (this.onTabChangeListener) {\n this.onTabChangeListener(tab);\n }\n }\n }\n setOnTabChangeListener(listener) {\n this.onTabChangeListener = listener;\n }\n}\nexports.TabFragment = TabFragment;\n//# sourceMappingURL=TabFragment.js.map","module.exports = __webpack_public_path__ + \"html/tabFragment.html\";","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorAction = void 0;\nconst MenuAction_1 = require(\"./MenuAction\");\nconst Dialog_1 = require(\"../../../Dialog/Dialog\");\nconst Translator_1 = require(\"../../../Translator\");\nconst errorIcon = require(\"../../../../img/errorIcon.png\");\nclass ErrorAction extends MenuAction_1.MenuAction {\n constructor() {\n super(\"\", () => {\n let d = new Dialog_1.Dialog(ErrorAction._errors.join(\"
\"), Translator_1.Translator.translate(\"error\"));\n d.setTranslatable(false);\n d.show();\n }, MenuAction_1.MenuAction.SHOW_ALWAYS, -1000, ErrorAction.ERROR_ICON);\n this._visible = (ErrorAction._errors.length > 0);\n this._shouldTranslate = false;\n console.log(\"icon: \", ErrorAction.ERROR_ICON);\n }\n static addError(errorMessage) {\n if (this._errors.indexOf(errorMessage) === -1) {\n this._errors.push(errorMessage);\n this.getInstance().setVisibility((this._errors.length > 0));\n }\n }\n static removeError(errorMessage) {\n let index = this._errors.indexOf(errorMessage);\n if (index >= 0) {\n this._errors.splice(index, 1);\n this.getInstance().setVisibility((this._errors.length > 0));\n }\n }\n /**\n * @return ErrorAction;\n */\n static getInstance() {\n if (this._instance === null) {\n this._instance = new ErrorAction();\n }\n return this._instance;\n }\n}\nexports.ErrorAction = ErrorAction;\nErrorAction.ERROR_ICON = errorIcon;\nErrorAction._instance = null;\nErrorAction._errors = [];\n//# sourceMappingURL=ErrorAction.js.map","export default \"img/errorIcon.png\";","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StartSiteMenuAction = void 0;\nconst MenuAction_1 = require(\"./MenuAction\");\nconst App_1 = require(\"../../../App\");\nclass StartSiteMenuAction extends MenuAction_1.MenuAction {\n constructor(name, site, showFor, order, icon) {\n super(name, () => {\n if (StartSiteMenuAction._app) {\n if (Array.isArray(site) && site.length >= 2) {\n StartSiteMenuAction._app.startSite(site[0], site[1]);\n }\n else {\n StartSiteMenuAction._app.startSite(site);\n }\n }\n }, showFor, order, icon);\n }\n}\nexports.StartSiteMenuAction = StartSiteMenuAction;\nStartSiteMenuAction._app = null;\nApp_1.App.addInitialization(app => {\n StartSiteMenuAction._app = app;\n});\n//# sourceMappingURL=StartSiteMenuAction.js.map","module.exports = __webpack_public_path__ + \"html/navbar.html\";","module.exports = __webpack_public_path__ + \"html/menuSite.html\";","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SwipeFragment = void 0;\nconst AbstractFragment_1 = require(\"../AbstractFragment\");\nconst SwipeChildFragment_1 = require(\"./SwipeChildFragment\");\nconst Helper_1 = require(\"../../Legacy/Helper\");\nconst view = require(\"../../../html/Framework/Fragment/swipeFragment.html\");\nclass SwipeFragment extends AbstractFragment_1.AbstractFragment {\n constructor(site) {\n super(site, view);\n this._activeIndex = 0;\n this._touchStart = null;\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this._view.addEventListener(\"touchstart\", e => {\n this._touchStart = e.touches[0];\n }, false);\n this._view.addEventListener(\"touchend\", e => {\n this._handleSwipe(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n this._touchStart = null;\n });\n this._view.addEventListener(\"mousedown\", e => {\n this._touchStart = e;\n }, false);\n this._view.addEventListener(\"mouseup\", e => {\n this._handleSwipe(e.clientX, e.clientY);\n this._touchStart = null;\n });\n return _super.onViewLoaded.call(this);\n });\n }\n _handleSwipe(endX, endY) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNull(this._touchStart)) {\n return;\n }\n let touchStart = this._touchStart;\n this._touchStart = null;\n let diffX = touchStart.clientX - endX;\n if (Math.abs(touchStart.clientY - endY) <= SwipeFragment.MAX_Y\n && Math.abs(diffX) >= SwipeFragment.MIN_X) {\n if (diffX > 0) {\n yield this._fragments[this._activeIndex].onSwipeLeft();\n }\n else {\n yield this._fragments[this._activeIndex].onSwipeRight();\n }\n }\n });\n }\n onStart(pauseArguments) {\n const _super = Object.create(null, {\n onStart: { get: () => super.onStart }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._activeIndex >= 0 && this._activeIndex < this._fragments.length) {\n this.setActiveFragment(this._activeIndex);\n }\n return _super.onStart.call(this, pauseArguments);\n });\n }\n setActiveFragment(index) {\n if (index instanceof SwipeChildFragment_1.SwipeChildFragment) {\n index = this._fragments.indexOf(index);\n }\n if (index >= 0 && index < this._fragments.length) {\n this._activeIndex = index;\n this._fragments.forEach((frag, i) => {\n frag.setActive(i === this._activeIndex);\n });\n }\n }\n nextFragment() {\n this.setActiveFragment((this._activeIndex + 1) % this._fragments.length);\n }\n previousFragment() {\n this.setActiveFragment((this._activeIndex + this._fragments.length - 1) % this._fragments.length);\n }\n addFragment(fragment) {\n if (fragment instanceof SwipeChildFragment_1.SwipeChildFragment) {\n fragment.setParent(this);\n return super.addFragment(\".swipe-container\", fragment);\n }\n }\n}\nexports.SwipeFragment = SwipeFragment;\nSwipeFragment.MAX_Y = 80;\nSwipeFragment.MIN_X = 150;\n//# sourceMappingURL=SwipeFragment.js.map","module.exports = __webpack_public_path__ + \"html/swipeFragment.html\";","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ButtonChooseDialog = void 0;\nconst Dialog_1 = require(\"./Dialog\");\nclass ButtonChooseDialog extends Dialog_1.Dialog {\n constructor(content, title, values) {\n super(content, title);\n Object.keys(values).forEach(key => {\n this.addButton(values[key], key);\n });\n }\n}\nexports.ButtonChooseDialog = ButtonChooseDialog;\n//# sourceMappingURL=ButtonChooseDialog.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChooseDialog = void 0;\nconst Dialog_1 = require(\"./Dialog\");\nconst ViewInflater_1 = require(\"../ViewInflater\");\nconst view = require(\"../../html/Framework/Dialog/chooseDialog.html\");\nconst Translator_1 = require(\"../Translator\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nclass ChooseDialog extends Dialog_1.Dialog {\n constructor(valueNames, title, translateable) {\n let viewPromise = ViewInflater_1.ViewInflater.getInstance().load(view).then(view => {\n translateable = Helper_1.Helper.nonNull(translateable, true);\n let template = view.querySelector(\"#choose-value-template\");\n template.remove();\n template.removeAttribute(\"id\");\n let templateContainer = view.querySelector(\"#choose-container\");\n for (let k in valueNames) {\n let valueElem = template.cloneNode(true);\n let textElem = null;\n if (translateable) {\n textElem = Translator_1.Translator.makePersistentTranslation(valueNames[k]);\n }\n else {\n textElem = document.createElement(\"span\");\n textElem.innerText = valueNames[k];\n }\n valueElem.querySelector(\".choose-dialog-value\").appendChild(textElem);\n valueElem[\"dataset\"][\"value\"] = k;\n valueElem.addEventListener(\"click\", () => {\n this._result = k;\n this.close();\n });\n templateContainer.appendChild(valueElem);\n }\n return view;\n });\n super(viewPromise, title);\n }\n}\nexports.ChooseDialog = ChooseDialog;\n//# sourceMappingURL=ChooseDialog.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfirmDialog = void 0;\nconst Dialog_1 = require(\"./Dialog\");\nconst Helper_1 = require(\"../Legacy/Helper\");\nclass ConfirmDialog extends Dialog_1.Dialog {\n constructor(content, title, confirmButtonText, cancelButtonText) {\n super(content, title);\n this.confirmButtonText = Helper_1.Helper.nonNull(confirmButtonText, \"confirm-button\");\n this.cancelButtonText = Helper_1.Helper.nonNull(cancelButtonText, \"cancel-button\");\n }\n show() {\n const _super = Object.create(null, {\n show: { get: () => super.show }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.addButton(this.confirmButtonText, true);\n this.addButton(this.cancelButtonText, false);\n return _super.show.call(this);\n });\n }\n close() {\n if (Helper_1.Helper.isNull(this._result)) {\n this._result = false;\n }\n return super.close();\n }\n}\nexports.ConfirmDialog = ConfirmDialog;\n//# sourceMappingURL=ConfirmDialog.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImgChooseDialog = void 0;\nconst ElemChooseDialog_1 = require(\"./ElemChooseDialog\");\nclass ImgChooseDialog extends ElemChooseDialog_1.ElemChooseDialog {\n constructor(valueNames, title) {\n let newValueNames = {};\n Object.keys(valueNames).forEach(k => {\n let elem = document.createElement(\"img\");\n elem.src = valueNames[k];\n newValueNames[k] = elem;\n });\n super(newValueNames, title);\n }\n}\nexports.ImgChooseDialog = ImgChooseDialog;\n//# sourceMappingURL=ImgChooseDialog.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScaleHelper = void 0;\nconst js_helper_1 = require(\"js-helper\");\nclass ScaleHelper {\n scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, addListener) {\n return __awaiter(this, void 0, void 0, function* () {\n addListener = js_helper_1.Helper.nonNull(addListener, true);\n animationDelay = js_helper_1.Helper.nonNull(animationDelay, 0);\n let newFontSize = yield this._getNewFontSize(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay === 0);\n if (animationDelay > 0) {\n yield new Promise(r => {\n setTimeout(r, animationDelay);\n fontElement.style.fontSize = newFontSize + \"px\";\n });\n }\n let self = this;\n let listener = function () {\n return new Promise(resolve => {\n let timeout = (typeof addListener === 'number') ? addListener : 255;\n setTimeout(() => {\n resolve(self.scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, false));\n }, timeout);\n });\n };\n if (addListener !== false) {\n window.addEventListener(\"resize\", listener);\n }\n return listener;\n });\n }\n scaleToFull(fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animDelay, addListener) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.scaleTo(1, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animDelay, addListener);\n });\n }\n _getNewFontSize(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, setFontSize) {\n return __awaiter(this, void 0, void 0, function* () {\n margin = js_helper_1.Helper.nonNull(margin, 10);\n ignoreHeight = js_helper_1.Helper.nonNull(ignoreHeight, false);\n ignoreWidth = js_helper_1.Helper.nonNull(ignoreWidth, false);\n fontWeight = js_helper_1.Helper.nonNull(fontWeight, fontElement.innerHTML.length);\n setFontSize = js_helper_1.Helper.nonNull(setFontSize, true);\n let hasNoTransitionClass = container.classList.contains(\"no-transition\");\n if (!hasNoTransitionClass) {\n container.classList.add(\"no-transition\");\n }\n const numChanged = 5;\n let oldDiffIndex = 0;\n let oldDiff = [];\n for (let i = 0; i < numChanged; i++) {\n oldDiff.push(0);\n }\n let beforeFontSize = fontElement.style.fontSize;\n let currentFontSize = 1;\n let widthDiff = 0;\n let heightDiff = 0;\n let containerWidth = 0;\n let containerHeight = 0;\n do {\n currentFontSize += oldDiff[oldDiffIndex] / (fontWeight + 1);\n fontElement.style.fontSize = currentFontSize + 'px';\n let containerStyle = window.getComputedStyle(container);\n containerWidth = parseFloat(containerStyle.getPropertyValue(\"width\").replace('px', ''));\n containerHeight = parseFloat(containerStyle.getPropertyValue(\"height\").replace('px', ''));\n widthDiff = containerWidth - fontElement.offsetWidth;\n heightDiff = containerHeight - fontElement.offsetHeight;\n oldDiffIndex = (oldDiffIndex + 1) % numChanged;\n let newDiff = (ignoreWidth ? heightDiff : (ignoreHeight ? widthDiff : Math.min(widthDiff, heightDiff)));\n if (newDiff === oldDiff[(oldDiffIndex + 1) % numChanged]) {\n break;\n }\n oldDiff[oldDiffIndex] = newDiff;\n } while ((widthDiff > (1 - scale) * containerWidth || ignoreWidth) && (heightDiff > (1 - scale) * containerHeight || ignoreHeight));\n currentFontSize -= margin;\n fontElement.style.fontSize = ((setFontSize) ? currentFontSize + \"px\" : beforeFontSize);\n if (!hasNoTransitionClass) {\n yield new Promise((r) => {\n setTimeout(r, 50);\n });\n container.classList.remove(\"no-transition\");\n }\n return currentFontSize;\n });\n }\n}\nexports.ScaleHelper = ScaleHelper;\n//# sourceMappingURL=ScaleHelper.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromiseHelper = void 0;\nconst Helper_1 = require(\"./Legacy/Helper\");\nclass PromiseHelper {\n static delay(milliseconds) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(r => {\n setTimeout(r, milliseconds);\n });\n });\n }\n static tryMultipleTimes(func, times, delay) {\n return __awaiter(this, void 0, void 0, function* () {\n times = Helper_1.Helper.nonNull(times, 5);\n delay = Helper_1.Helper.nonNull(delay, 50);\n for (let i = 0; i < times; i++) {\n let res = yield func();\n if (res !== undefined) {\n return res;\n }\n else {\n yield PromiseHelper.delay(delay);\n }\n }\n return undefined;\n });\n }\n static tryUntilTimeout(func, timeout, delay) {\n return __awaiter(this, void 0, void 0, function* () {\n timeout = Helper_1.Helper.nonNull(timeout, 500);\n delay = Helper_1.Helper.nonNull(delay, 50);\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n let shouldRun = true;\n PromiseHelper.delay(timeout).then(() => {\n reject(new Error(\"timeout\"));\n shouldRun = false;\n });\n while (shouldRun) {\n let res = yield func();\n if (res !== undefined) {\n resolve(res);\n break;\n }\n yield PromiseHelper.delay(delay);\n }\n }));\n });\n }\n}\nexports.PromiseHelper = PromiseHelper;\n//# sourceMappingURL=PromiseHelper.js.map","module.exports = __webpack_public_path__ + \"html/shareDialog.html\";","module.exports = __webpack_public_path__ + \"html/loginSite.html\";","module.exports = __webpack_public_path__ + \"html/forgotPasswordSite.html\";","module.exports = __webpack_public_path__ + \"html/notAllowedSite.html\";","module.exports = __webpack_public_path__ + \"html/selectUserDialog.html\";","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OfflineUserManager = void 0;\nconst client_1 = require(\"cordova-sites-easy-sync/dist/client\");\nconst client_2 = require(\"cordova-sites/dist/client\");\nconst UserManager_1 = require(\"./UserManager\");\nconst Role_1 = require(\"../../shared/v1/model/Role\");\nconst User_1 = require(\"../../shared/v1/model/User\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nclass OfflineUserManager extends UserManager_1.UserManager {\n constructor() {\n super();\n this._userData = {\n id: null,\n loggedIn: false,\n online: true,\n username: null,\n email: null,\n accesses: OfflineUserManager.LOGGED_OUT_ACCESSES,\n };\n }\n _doGetMe() {\n return __awaiter(this, void 0, void 0, function* () {\n let userId = yield client_2.NativeStoragePromise.getItem(\"user-manager-user-id\");\n if (Helper_1.Helper.isNotNull(userId)) {\n let user = yield User_1.User.findById(userId, User_1.User.getRelations());\n if (Helper_1.Helper.isNotNull(user) && user.activated && !user.blocked) {\n yield this._handleLoginFromUser(user);\n }\n }\n return this._userData;\n });\n }\n _handleLoginFromUser(user) {\n return __awaiter(this, void 0, void 0, function* () {\n let accesses = [];\n let roles = user.roles;\n let roleIds = [];\n roles.forEach(role => {\n roleIds.push(role.id);\n });\n roles = yield Role_1.Role.findByIds(roleIds, [\"accesses\"]);\n yield Helper_1.Helper.asyncForEach(roles, (role) => __awaiter(this, void 0, void 0, function* () {\n accesses.push(...yield this._getAccessesFromRole(role));\n }));\n let accessNames = [];\n accesses.forEach(access => {\n accessNames.push(access.name);\n });\n this._userData = {\n id: user.id,\n loggedIn: true,\n online: true,\n username: user.username,\n email: user.email,\n accesses: accessNames,\n };\n });\n }\n _doLogin(email, password, saveLogin) {\n return __awaiter(this, void 0, void 0, function* () {\n let user = yield User_1.User.findOne({\n \"email\": email,\n \"password\": this._hashPassword(password),\n \"activated\": true,\n \"blocked\": false,\n }, undefined, undefined, User_1.User.getRelations());\n if (user) {\n yield this._handleLoginFromUser(user);\n if (saveLogin) {\n yield client_2.NativeStoragePromise.setItem(\"user-manager-user-id\", user.id);\n }\n return true;\n }\n return false;\n });\n }\n _doLogout() {\n return __awaiter(this, void 0, void 0, function* () {\n this._userData = {\n id: null,\n loggedIn: false,\n online: true,\n username: null,\n email: null,\n accesses: OfflineUserManager.LOGGED_OUT_ACCESSES,\n };\n yield client_2.NativeStoragePromise.remove(\"user-manager-user-id\");\n return false;\n });\n }\n _getAccessesFromRole(role) {\n return __awaiter(this, void 0, void 0, function* () {\n let accesses = role.accesses;\n let repo = yield client_1.EasySyncClientDb.getInstance()._getRepository(Role_1.Role.getSchemaName());\n let parents = yield repo.createQueryBuilder(Role_1.Role.getSchemaName())\n .leftJoinAndSelect(Role_1.Role.getSchemaName() + '.accesses', \"access\")\n .leftJoinAndSelect(Role_1.Role.getSchemaName() + '.children', \"child\")\n .where('child.id = :id', { id: role.id })\n .getMany();\n yield Helper_1.Helper.asyncForEach(parents, (role) => __awaiter(this, void 0, void 0, function* () {\n let otherAccesses = yield this._getAccessesFromRole(role);\n accesses.push(...otherAccesses);\n }));\n return accesses;\n });\n }\n _doRegister(email, username, password) {\n return __awaiter(this, void 0, void 0, function* () {\n let errors = {};\n let users = yield Promise.all([\n User_1.User.findOne({ \"email\": email }),\n User_1.User.findOne({ \"username\": username }),\n ]);\n if (Helper_1.Helper.isNotNull(users[0])) {\n errors[\"email\"] = \"email is already in use.\";\n }\n if (Helper_1.Helper.isNotNull(users[1])) {\n errors[\"username\"] = \"username is already in use.\";\n }\n if (Object.keys(errors).length > 0) {\n return errors;\n }\n let user = new User_1.User();\n user.id = yield OfflineUserManager._getNewId();\n user.email = email;\n user.password = this._hashPassword(password);\n user.username = username;\n user.roles = OfflineUserManager.DEFAULT_ROLES;\n user.activated = true;\n yield user.save();\n // user.roles\n yield this.login(email, password);\n return user;\n });\n }\n static _getNewId() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Helper_1.Helper.isNull(OfflineUserManager._lastId)) {\n let user = yield User_1.User.findOne(undefined, { \"id\": \"DESC\" });\n OfflineUserManager._lastId = user.id;\n }\n OfflineUserManager._lastId++;\n return OfflineUserManager._lastId;\n });\n }\n _hashPassword(pw) {\n return pw;\n }\n}\nexports.OfflineUserManager = OfflineUserManager;\nOfflineUserManager.LOGGED_OUT_ACCESSES = UserManager_1.UserManager.OFFLINE_ACCESSES;\nOfflineUserManager.DEFAULT_ROLES = [];\nOfflineUserManager._lastId = null;\n//# sourceMappingURL=OfflineUserManager.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncJob_old = void 0;\nconst LastSyncDates_1 = require(\"./LastSyncDates\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst shared_1 = require(\"js-helper/dist/shared\");\nconst EasySyncClientDb_1 = require(\"./EasySyncClientDb\");\nconst typeorm = require(\"typeorm\");\nconst EasySyncPartialModel_1 = require(\"../shared/EasySyncPartialModel\");\nconst EasySyncBaseModel_1 = require(\"../shared/EasySyncBaseModel\");\nconst ClientFileMedium_1 = require(\"./ClientFileMedium\");\nclass SyncJob_old {\n constructor() {\n this._syncedModels = {};\n this._modelNames = [];\n this._relationshipModels = {};\n this._lastSyncDates = {};\n this._keyedModelClasses = {};\n this._savePromises = [];\n }\n syncInBackgroundIfDataExists(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let copiedQuery = shared_1.JsonHelper.deepCopy(queries);\n let requestQueries = this._buildRequestQuery(copiedQuery);\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n this._syncPromise = this.sync(queries);\n if (Object[\"values\"](this._lastSyncDates).some(lastSync => {\n return lastSync[\"getLastSynced\"]() === 0;\n })) {\n yield this._syncPromise;\n }\n });\n }\n getSyncPromise() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._syncPromise;\n });\n }\n sync(queries) {\n return __awaiter(this, void 0, void 0, function* () {\n this._keyedModelClasses = EasySyncClientDb_1.EasySyncClientDb.getModel();\n let requestQueries = this._buildRequestQuery(queries);\n if (shared_1.Helper.isNull(this._lastSyncDates)) {\n this._lastSyncDates = yield this._getLastSyncModels(this._modelNames, requestQueries);\n }\n let saveResults = yield this._doRuns(requestQueries);\n yield this._handleRelations();\n //Save new lastSync models\n let lastSyncPromises = [];\n Object.keys(this._lastSyncDates).forEach(model => {\n lastSyncPromises.push(this._lastSyncDates[model].save());\n });\n yield Promise.all(lastSyncPromises);\n //Calculate final result and give it back\n let finalRes = {};\n saveResults.forEach(res => {\n if (res) {\n if (!finalRes[res.model]) {\n finalRes[res.model] = {\n \"deleted\": [],\n \"changed\": []\n };\n }\n if (res.deleted) {\n finalRes[res.model][\"deleted\"] = finalRes[res.model][\"deleted\"].concat(res.entities);\n }\n else {\n finalRes[res.model][\"changed\"] = finalRes[res.model][\"changed\"].concat(res.entities);\n }\n }\n });\n if (finalRes[\"FileMedium\"] && finalRes[\"FileMedium\"][\"changed\"]) {\n yield ClientFileMedium_1.ClientFileMedium._handleImages(finalRes[\"FileMedium\"][\"changed\"]);\n }\n return finalRes;\n });\n }\n _doRuns(requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Initialize some variables\n let newLastSynced = null;\n let response = null;\n let offset = 0;\n let shouldAskAgain = false;\n //Ask for next run until no more runs needed\n do {\n shouldAskAgain = false;\n response = yield SyncJob_old._fetchModel(requestQueries, offset);\n offset = response[\"nextOffset\"];\n //Update newLastSynced\n if (shared_1.Helper.isNull(newLastSynced)) {\n newLastSynced = parseInt(response[\"newLastSynced\"]);\n Object.keys(this._lastSyncDates).forEach(key => {\n this._lastSyncDates[key].setLastSynced(newLastSynced);\n });\n }\n //create new request query\n let newRequestQueries = [];\n response.results.forEach((res, i) => {\n if (this._extractEntities(res)) {\n shouldAskAgain = true;\n newRequestQueries.push(requestQueries[i]);\n }\n });\n requestQueries = newRequestQueries;\n } while (shouldAskAgain);\n return Promise.all(this._savePromises);\n });\n }\n _handleRelations() {\n return __awaiter(this, void 0, void 0, function* () {\n let mergedRelations = {};\n let relationPromises = [];\n Object.keys(this._relationshipModels).forEach(modelClassName => {\n let relationDefinitions = this._keyedModelClasses[modelClassName].getRelationDefinitions();\n Object.keys(this._relationshipModels[modelClassName]).forEach(id => {\n let entity = this._relationshipModels[modelClassName][id][\"entity\"];\n let relations = this._relationshipModels[modelClassName][id][\"relations\"];\n let entityRelationPromises = [];\n Object.keys(relations).forEach(relation => {\n //foreach relation load other models and save them here\n let valuePromise = this._handleSingleRelation(relationDefinitions, relation, relations, mergedRelations, entity);\n entityRelationPromises.push(valuePromise.then(value => {\n entity[relation] = value;\n }));\n });\n //Save after all relationships has been set\n relationPromises.push(Promise.all(entityRelationPromises).then(() => {\n return entity.save(true);\n }));\n });\n });\n //Wait for relation-promises\n yield Promise.all(relationPromises);\n yield shared_1.Helper.asyncForEach(Object.keys(mergedRelations), (model) => __awaiter(this, void 0, void 0, function* () {\n let entities = shared_1.Helper.arrayToObject(yield this._keyedModelClasses[model].findByIds(Object.keys(mergedRelations[model]), this._keyedModelClasses[model].getRelations()), e => e.id);\n Object.keys(mergedRelations[model]).forEach(id => {\n if (entities[id]) {\n Object.keys(mergedRelations[model][id]).forEach(relation => {\n if (Array.isArray(mergedRelations[model][id][relation])) {\n entities[id][relation] = shared_1.Helper.nonNull(entities[id][relation], []);\n entities[id][relation].push.apply(entities[id][relation], mergedRelations[model][id][relation]);\n }\n else {\n entities[id][relation] = mergedRelations[model][id][relation];\n }\n });\n }\n });\n yield EasySyncClientDb_1.EasySyncClientDb.getInstance().saveEntity(Object.values(entities));\n }), true);\n });\n }\n _handleSingleRelation(relationDefinitions, relationName, relations, mergedRelations, entity) {\n let valuePromise = Promise.resolve(undefined);\n let target = relationDefinitions[relationName][\"target\"];\n let shouldSync = (relationDefinitions[relationName].sync !== false);\n //is relation a *-to-many relation?\n if (Array.isArray(relations[relationName])) {\n if (shouldSync || relations[relationName].every(id => !shared_1.Helper.isSet(this._syncedModels, target, id))) {\n valuePromise = this._keyedModelClasses[target].findByIds(relations[relationName]);\n }\n else {\n let targetRelationDefinition = this._keyedModelClasses[target].getRelationDefinitions()[relationDefinitions[relationName][\"inverseSide\"]];\n relations[relationName].filter(id => !shared_1.Helper.isSet(this._relationshipModels, target, id)).forEach(id => {\n mergedRelations[target] = shared_1.Helper.nonNull(mergedRelations[target], {});\n mergedRelations[target][id] = shared_1.Helper.nonNull(mergedRelations[target][id], {});\n let otherRelationValue = null;\n if (targetRelationDefinition.type === \"many-to-many\" || targetRelationDefinition.type === \"one-to-many\") {\n otherRelationValue = shared_1.Helper.nonNull(mergedRelations[target][id][relationDefinitions[relationName][\"inverseSide\"]], []);\n otherRelationValue.push(entity);\n }\n else {\n otherRelationValue = entity;\n }\n mergedRelations[target][id][relationDefinitions[relationName][\"inverseSide\"]] = otherRelationValue;\n });\n }\n }\n else if (shouldSync || !shared_1.Helper.isSet(this._syncedModels, target, relations[relationName])) {\n valuePromise = this._keyedModelClasses[target].findById(relations[relationName]);\n }\n return valuePromise;\n }\n /**\n * Extract the Entities and saves them(?) for one model\n *\n * @param modelRes\n * @private\n */\n _extractEntities(modelRes) {\n if (!modelRes) {\n return false;\n }\n let shouldAskAgain = false;\n let modelClass = this._keyedModelClasses[modelRes[\"model\"]];\n let modelName = modelClass.getSchemaName();\n let deletedModelsIds = [];\n let changedModels = [];\n //split result into deleted and changed/new entities\n modelRes[\"entities\"].forEach(entity => {\n if (entity.deleted) {\n deletedModelsIds.push(entity.id);\n }\n else {\n changedModels.push(entity);\n }\n });\n this._syncedModels[modelName] = shared_1.Helper.nonNull(this._syncedModels[modelName], {});\n //convert json to entity and save it\n this._savePromises.push(modelClass._fromJson(changedModels).then((changedEntities) => __awaiter(this, void 0, void 0, function* () {\n let relations = modelClass.getRelationDefinitions();\n let newIds = [];\n changedEntities.forEach(entity => {\n this._syncedModels[modelName][entity.id] = entity;\n newIds.push(entity.id);\n Object.keys(relations).forEach(relation => {\n if (entity[relation]) {\n this._addRelation(modelName, entity, relation);\n //clear relation\n entity[relation] = null;\n }\n });\n });\n //Handle partial Models (different ids on client than server)\n if (modelClass.prototype instanceof EasySyncPartialModel_1.EasySyncPartialModel) {\n let oldObjects = yield modelClass.findByIds(newIds);\n let keyedEntities = shared_1.Helper.arrayToObject(changedEntities, changedEntities => changedEntities.id);\n oldObjects.forEach(old => {\n keyedEntities[old.id].clientId = old.clientId;\n });\n }\n return EasySyncClientDb_1.EasySyncClientDb.getInstance().saveEntity(changedEntities).then(res => {\n return {\n \"model\": modelName,\n \"entities\": res,\n \"deleted\": false\n };\n }).catch(e => {\n console.error(e);\n return Promise.reject(e);\n });\n })));\n //Deletion of the entities\n this._savePromises.push(EasySyncClientDb_1.EasySyncClientDb.getInstance().deleteEntity(deletedModelsIds, modelClass).then(res => {\n return {\n \"model\": modelName,\n \"entities\": res,\n \"deleted\": true\n };\n }).catch(e => {\n console.error(e);\n return Promise.reject(e);\n }));\n if (modelRes.shouldAskAgain) {\n shouldAskAgain = true;\n }\n return shouldAskAgain;\n }\n _buildRequestQuery(queries) {\n let requestQueries = [];\n //initializing query\n queries.forEach(query => {\n if (query.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel) {\n query = {\n model: query,\n where: {}\n };\n }\n query.model = query.model.getSchemaName();\n this._modelNames.push(query.model);\n requestQueries.push(query);\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNotNull(this._lastSyncDates[key])) {\n query[\"lastSynced\"] = this._lastSyncDates[key].getLastSynced();\n }\n });\n return requestQueries;\n }\n _getLastSyncModels(modelNames, requestQueries) {\n return __awaiter(this, void 0, void 0, function* () {\n //Load syncModels\n let lastSyncModelsArray = yield LastSyncDates_1.LastSyncDates.find({\n \"model\": typeorm.In(modelNames)\n });\n let lastSyncDates = shared_1.Helper.arrayToObject(lastSyncModelsArray, model => \"\" + model.getModel() + JSON.stringify(model.where));\n requestQueries.forEach(query => {\n let key = \"\" + query.model + JSON.stringify(query.where);\n if (shared_1.Helper.isNull(lastSyncDates[key])) {\n let lastSyncDate = new LastSyncDates_1.LastSyncDates();\n lastSyncDate.setModel(query.model);\n lastSyncDate.where = query.where;\n lastSyncDate.setLastSynced(0);\n lastSyncDates[key] = lastSyncDate;\n }\n query[\"lastSynced\"] = lastSyncDates[key].getLastSynced();\n });\n return lastSyncDates;\n });\n }\n _addRelation(modelName, entity, relation) {\n this._relationshipModels[modelName] = shared_1.Helper.nonNull(this._relationshipModels[modelName], {});\n this._relationshipModels[modelName][entity.id] = shared_1.Helper.nonNull(this._relationshipModels[modelName][entity.id], {});\n this._relationshipModels[modelName][entity.id][\"entity\"] = entity;\n this._relationshipModels[modelName][entity.id][\"relations\"] = shared_1.Helper.nonNull(this._relationshipModels[modelName][entity.id][\"relations\"], {});\n this._relationshipModels[modelName][entity.id][\"relations\"][relation] = entity[relation];\n return this._relationshipModels;\n }\n static _fetchModel(query, offset) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield client_1.DataManager.load(SyncJob_old.SYNC_PATH_PREFIX +\n client_1.DataManager.buildQuery({\n \"queries\": JSON.stringify(query),\n \"offset\": offset\n }));\n });\n }\n}\nexports.SyncJob_old = SyncJob_old;\nSyncJob_old.SYNC_PATH_PREFIX = \"sync\";\n//# sourceMappingURL=SyncJob_old.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModifyEntitySite = void 0;\nconst MenuSite_1 = require(\"cordova-sites/dist/client/js/Context/MenuSite\");\nconst Form_1 = require(\"cordova-sites/dist/client/js/Form\");\nconst js_helper_1 = require(\"js-helper\");\nconst EasySyncBaseModel_1 = require(\"../../shared/EasySyncBaseModel\");\nclass ModifyEntitySite extends MenuSite_1.MenuSite {\n constructor(siteManager, view, model, menuTemplate) {\n super(siteManager, view, menuTemplate);\n this._formSelector = \".entity-form\";\n this._ckEditorConfig = {\n \".editor\": {\n toolbar: ['bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote'],\n removePlugins: [\"Heading\", \"Image\", \"ImageCaption\", \"ImageStyle\", \"ImageToolbar\", \"ImageUpload\", \"Table\", \"TableToolbar\", \"MediaEmbed\", \"CKFinderUploadAdapter\"],\n language: \"de\"\n }\n };\n this._entity = null;\n this._model = model;\n }\n getEntityFromParameters(constructParameters) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!(this._model.prototype instanceof EasySyncBaseModel_1.EasySyncBaseModel)) {\n throw {\n \"error\": \"wrong class given! Expected EasySyncBaseModel, given \" + this._model.name\n };\n }\n let entity = null;\n if (js_helper_1.Helper.isSet(constructParameters, \"id\")) {\n entity = this._model.findById(constructParameters[\"id\"], this._model.getRelations());\n }\n if (js_helper_1.Helper.isNull(entity)) {\n entity = new this._model();\n }\n return entity;\n });\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n let entity = yield this.getEntityFromParameters(constructParameters);\n if (entity !== null) {\n this.setEntity(entity);\n }\n return res;\n });\n }\n setEntity(entity) {\n return __awaiter(this, void 0, void 0, function* () {\n this._entity = entity;\n yield this._viewLoadedPromise;\n let values = yield this.dehydrate(this._entity);\n if (js_helper_1.Helper.isNotNull(values)) {\n yield this._form.setValues(values);\n }\n });\n }\n hydrate(values, entity) {\n return __awaiter(this, void 0, void 0, function* () {\n let schemaDefinition = entity.constructor.getSchemaDefinition();\n Object.keys(schemaDefinition.columns).forEach(column => {\n if (js_helper_1.Helper.isSet(values, column)) {\n entity[column] = values[column];\n }\n });\n return entity;\n });\n }\n dehydrate(entity) {\n return __awaiter(this, void 0, void 0, function* () {\n let values = {};\n let schemaDefinition = entity.constructor.getSchemaDefinition();\n Object.keys(schemaDefinition.columns).forEach(column => {\n if (js_helper_1.Helper.isSet(entity, column)) {\n values[column] = entity[column];\n }\n });\n return values;\n });\n }\n validate(values, form) {\n return __awaiter(this, void 0, void 0, function* () {\n return true;\n });\n }\n saveListener() {\n this.finish();\n }\n save(values) {\n return __awaiter(this, void 0, void 0, function* () {\n let entity = yield this.hydrate(values, this._entity);\n yield entity.save();\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this._form = new Form_1.Form(this.findBy(this._formSelector), (values) => __awaiter(this, void 0, void 0, function* () {\n this.showLoadingSymbol();\n try {\n yield this.save(values);\n this.saveListener();\n }\n catch (e) {\n console.error(e);\n this._form.setErrors({ \"error\": e.message });\n }\n finally {\n this.removeLoadingSymbol();\n }\n }));\n if (js_helper_1.Helper.isNotNull(window[\"CKEditor\"])) {\n Object.keys(this._ckEditorConfig).forEach(selector => {\n this.findBy(selector, true).forEach((e) => __awaiter(this, void 0, void 0, function* () {\n this._form.addEditor(yield CKEditor.create(e, this._ckEditorConfig[selector]));\n }));\n });\n }\n this._form.addValidator((values) => __awaiter(this, void 0, void 0, function* () {\n return yield this.validate(values, this._form);\n }));\n return res;\n });\n }\n}\nexports.ModifyEntitySite = ModifyEntitySite;\n//# sourceMappingURL=ModifyEntitySite.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetupEasySync1000000000500 = void 0;\nconst typeorm_1 = require(\"typeorm\");\nconst cordova_sites_database_1 = require(\"cordova-sites-database/dist/cordova-sites-database\");\nclass SetupEasySync1000000000500 {\n up(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n yield queryRunner.dropTable(\"last_sync_dates\", true);\n yield this._addLastSyncDates(queryRunner);\n });\n }\n _addLastSyncDates(queryRunner) {\n return __awaiter(this, void 0, void 0, function* () {\n let lastSyncDatesTable = new typeorm_1.Table({\n name: \"last_sync_dates\",\n columns: [\n {\n name: \"id\",\n type: \"Integer\",\n isPrimary: true,\n isGenerated: true,\n generationStrategy: \"increment\",\n },\n {\n name: \"model\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.STRING,\n isNullable: true\n },\n {\n name: \"lastSynced\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.DATE,\n isNullable: true\n },\n {\n name: \"where\",\n type: cordova_sites_database_1.BaseDatabase.TYPES.TEXT,\n }\n ]\n });\n return yield queryRunner.createTable(lastSyncDatesTable, true);\n });\n }\n down(queryRunner) {\n return undefined;\n }\n}\nexports.SetupEasySync1000000000500 = SetupEasySync1000000000500;\n//# sourceMappingURL=SetupEasySync.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChangeUserSite = void 0;\nconst MenuSite_1 = require(\"cordova-sites/dist/client/js/Context/MenuSite\");\nconst UserSite_1 = require(\"../Context/UserSite\");\nconst Helper_1 = require(\"js-helper/dist/shared/Helper\");\nconst DataManager_1 = require(\"cordova-sites/dist/client/js/DataManager\");\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst ViewHelper_1 = require(\"js-helper/dist/client/ViewHelper\");\nconst UserMenuAction_1 = require(\"../MenuAction/UserMenuAction\");\nconst LoginSite_1 = require(\"./LoginSite\");\nconst SelectUserDialog_1 = require(\"../Dialog/SelectUserDialog\");\nconst view = require(\"./../../html/sites/changeUserSite.html\");\nclass ChangeUserSite extends MenuSite_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, ChangeUserSite.ACCESS));\n }\n onConstruct(constructParameters) {\n const _super = Object.create(null, {\n onConstruct: { get: () => super.onConstruct }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onConstruct.call(this, constructParameters);\n let data;\n if (Helper_1.Helper.isSet(constructParameters, \"id\")) {\n data = yield DataManager_1.DataManager.load(ChangeUserSite.LOAD_USER_INFOS_URL + DataManager_1.DataManager.buildQuery({ id: constructParameters[\"id\"] }));\n }\n if (!data || data.success !== true) {\n new client_1.Toast(data.message).show();\n this.finish();\n }\n this._roles = data.roles;\n this._userData = data.userData;\n return res;\n });\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n this.findBy(\"#username\").innerText = this._userData.username;\n this._hasRoleContainer = this.findBy(\"#has-role-container\");\n this._availableRoleContainer = this.findBy(\"#available-role-container\");\n this._hasRoleTemplate = this.findBy(\"#has-role-template\");\n this._availableRoleTemplate = this.findBy(\"#available-role-template\");\n this._hasRoleTemplate.removeAttribute(\"id\");\n this._availableRoleTemplate.removeAttribute(\"id\");\n this._hasRoleTemplate.remove();\n this._availableRoleTemplate.remove();\n this.updateRoles();\n return res;\n });\n }\n updateRoles() {\n let userRoles = [];\n let availableRoles = [];\n this._roles.forEach(role => {\n if (this._userData.roleIds.indexOf(role.id) !== -1) {\n userRoles.push(role);\n }\n else {\n availableRoles.push(role);\n }\n });\n ViewHelper_1.ViewHelper.removeAllChildren(this._hasRoleContainer);\n userRoles.forEach((role, i) => {\n let elem = this._hasRoleTemplate.cloneNode(true);\n elem.querySelector(\".role-name\").innerText = role.name;\n elem.querySelector(\".remove-role\").addEventListener(\"click\", () => __awaiter(this, void 0, void 0, function* () {\n this.showLoadingSymbol();\n let res = yield DataManager_1.DataManager.send(ChangeUserSite.CHANGE_USER_ROLE_URL, {\n id: this._userData.id,\n roleId: role.id,\n addRole: false\n });\n if (res.success) {\n this._userData.roleIds.splice(this._userData.roleIds.indexOf(role.id), 1);\n this.updateRoles();\n }\n this.removeLoadingSymbol();\n }));\n this._hasRoleContainer.appendChild(elem);\n });\n ViewHelper_1.ViewHelper.removeAllChildren(this._availableRoleContainer);\n availableRoles.forEach(role => {\n let elem = this._availableRoleTemplate.cloneNode(true);\n elem.querySelector(\".role-name\").innerText = role.name;\n elem.querySelector(\".add-role\").addEventListener(\"click\", () => __awaiter(this, void 0, void 0, function* () {\n this.showLoadingSymbol();\n let res = yield DataManager_1.DataManager.send(ChangeUserSite.CHANGE_USER_ROLE_URL, {\n id: this._userData.id,\n roleId: role.id,\n addRole: true\n });\n if (res.success) {\n this._userData.roleIds.push(role.id);\n this.updateRoles();\n }\n this.removeLoadingSymbol();\n }));\n this._availableRoleContainer.appendChild(elem);\n });\n }\n}\nexports.ChangeUserSite = ChangeUserSite;\nChangeUserSite.ACCESS = \"admin\";\nChangeUserSite.LOAD_USER_INFOS_URL = \"/user/userRoles\";\nChangeUserSite.CHANGE_USER_ROLE_URL = \"/user/changeUserRole\";\nChangeUserSite.ADD_CHANGE_USER_ACTION = true;\nclient_1.App.addInitialization(app => {\n if (ChangeUserSite.ADD_CHANGE_USER_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new UserMenuAction_1.UserMenuAction(\"change user\", ChangeUserSite.ACCESS, () => __awaiter(void 0, void 0, void 0, function* () {\n let user = yield new SelectUserDialog_1.SelectUserDialog().show();\n yield app.startSite(ChangeUserSite, { \"id\": user[\"id\"] });\n })));\n }\n app.addDeepLink(\"login\", LoginSite_1.LoginSite);\n});\n//# sourceMappingURL=ChangeUserSite.js.map","module.exports = __webpack_public_path__ + \"html/changeUserSite.html\";","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegistrationSite = void 0;\nconst client_1 = require(\"cordova-sites/dist/client\");\nconst view = require(\"./../../html/sites/registrationSite.html\");\nconst UserSite_1 = require(\"../Context/UserSite\");\nconst StartUserSiteMenuAction_1 = require(\"../MenuAction/StartUserSiteMenuAction\");\nconst UserManager_1 = require(\"../UserManager\");\nconst User_1 = require(\"../../../shared/v1/model/User\");\nclass RegistrationSite extends client_1.MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n this.addDelegate(new UserSite_1.UserSite(this, RegistrationSite.ACCESS));\n }\n onViewLoaded() {\n const _super = Object.create(null, {\n onViewLoaded: { get: () => super.onViewLoaded }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let res = _super.onViewLoaded.call(this);\n let form = new client_1.Form(this.findBy(\"#registration-form\"), (data) => __awaiter(this, void 0, void 0, function* () {\n let result = yield UserManager_1.UserManager.getInstance().register(data[\"email\"], data[\"username\"], data[\"password\"]);\n if ((result instanceof User_1.User) || result === true) {\n yield new client_1.Toast(\"registration successful\").show();\n yield this.finish();\n }\n else {\n yield form.setErrors(result);\n }\n }));\n form.addValidator(data => {\n if (data[\"password\"] !== data[\"password2\"]) {\n return {\n \"password2\": \"the passwords do not match.\"\n };\n }\n return true;\n });\n // let listener = () => form.clearErrors();\n // this.findBy(\"#login-form [name=email]\").addEventListener(\"keydown\", listener);\n // this.findBy(\"#login-form [name=password]\").addEventListener(\"keydown\", listener);\n return res;\n });\n }\n}\nexports.RegistrationSite = RegistrationSite;\nRegistrationSite.ACCESS = \"loggedOut\";\nRegistrationSite.ADD_REGISTRATION_ACTION = true;\nclient_1.App.addInitialization(app => {\n if (RegistrationSite.ADD_REGISTRATION_ACTION) {\n client_1.NavbarFragment.defaultActions.push(new StartUserSiteMenuAction_1.StartUserSiteMenuAction(\"registration\", RegistrationSite.ACCESS, RegistrationSite));\n }\n app.addDeepLink(\"registration\", RegistrationSite);\n});\n//# sourceMappingURL=RegistrationSite.js.map","module.exports = __webpack_public_path__ + \"html/registrationSite.html\";","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserSyncModel = void 0;\nconst AccessEasySyncModel_1 = require(\"./AccessEasySyncModel\");\nconst User_1 = require(\"./User\");\nclass UserSyncModel extends AccessEasySyncModel_1.AccessEasySyncModel {\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"user\"] = {\n target: User_1.User.getSchemaName(),\n type: \"many-to-one\",\n // joinColumn: {\n // name: \"userId\"\n // },\n cascade: false,\n nullable: !this.NEED_USER\n };\n return relations;\n }\n}\nexports.UserSyncModel = UserSyncModel;\nUserSyncModel.NEED_USER = false;\n//# sourceMappingURL=UserSyncModel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserSyncPartialModel = void 0;\nconst shared_1 = require(\"cordova-sites-easy-sync/dist/shared\");\nconst User_1 = require(\"./User\");\nclass UserSyncPartialModel extends shared_1.EasySyncPartialModel {\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"user\"] = {\n target: User_1.User.getSchemaName(),\n type: \"many-to-one\",\n // joinColumn: {\n // name: \"userId\"\n // },\n cascade: false,\n nullable: !this.NEED_USER\n };\n return relations;\n }\n}\nexports.UserSyncPartialModel = UserSyncPartialModel;\nUserSyncPartialModel.NEED_USER = false;\n//# sourceMappingURL=UserSyncPartialModel.js.map","export default \"img/settings.png\";","module.exports = __webpack_public_path__ + \"html/menu.html\";","module.exports = __webpack_public_path__ + \"html/level.html\";","export default \"img/single_coin_fall_on_concrete_.mp3\";","module.exports = __webpack_public_path__ + \"html/end.html\";","module.exports = __webpack_public_path__ + \"html/settingsSite.html\";","module.exports = __webpack_public_path__ + \"html/tutorialSite.html\";","module.exports = __webpack_public_path__ + \"html/settings.html\";","module.exports = __webpack_public_path__ + \"html/credits.html\";","module.exports = __webpack_public_path__ + \"html/privacyPolicy.html\";","module.exports = __webpack_public_path__ + \"html/impressum.html\";","module.exports = __webpack_public_path__ + \"html/contactSite.html\";","export default __webpack_public_path__ + \"index.css\";","import {AccessEasySyncModel} from \"cordova-sites-user-management/dist/shared\";\nimport {BaseDatabase} from \"cordova-sites-database/dist/cordova-sites-database\";\n\nexport class LevelData extends AccessEasySyncModel{\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"words\"] = BaseDatabase.TYPES.STRING;\n columns[\"positions\"] = BaseDatabase.TYPES.STRING;\n columns[\"renderer\"] = BaseDatabase.TYPES.INTEGER;\n columns[\"lang\"] = BaseDatabase.TYPES.INTEGER;\n columns[\"difficulty\"] = BaseDatabase.TYPES.INTEGER;\n return columns;\n }\n\n static async getNextLevelData(renderer){\n debugger;\n }\n}\nBaseDatabase.addModel(LevelData);","import {MigrationInterface, QueryRunner, Table} from \"typeorm\";\nimport {MigrationHelper} from \"js-helper/dist/shared\";\nimport {LevelData} from \"../../LevelData\";\n\nexport class Setup1000000002000 implements MigrationInterface {\n\n async up(queryRunner: QueryRunner): Promise {\n await MigrationHelper.addTableFromModelClass(LevelData, queryRunner);\n }\n\n down(queryRunner: QueryRunner): Promise {\n return undefined;\n }\n}","import {Helper} from \"js-helper/dist/shared/Helper\";\n\nexport class TemplateContainer{\n constructor(leafTemplate, parentTemplate, rowTemplate, triangleTemplate, columnTemplate){\n this.leafTemplate = leafTemplate;\n this.parentTemplate = parentTemplate;\n this.rowTemplate = rowTemplate;\n this.triangleTemplate = triangleTemplate;\n this.columnTemplate = columnTemplate;\n }\n\n copyLeafTemplate()\n {\n return this.leafTemplate.cloneNode(true);\n }\n\n copyParentTemplate()\n {\n return this.parentTemplate.cloneNode(true);\n }\n\n copyRowTemplate()\n {\n return this.rowTemplate.cloneNode(true);\n }\n\n copyTriangleTemplate()\n {\n return this.triangleTemplate.cloneNode(true);\n }\n\n copyColumnTemplate(){\n return this.columnTemplate.cloneNode(true);\n }\n}","\nexport class Segment{\n constructor(element){\n this.rotation = 0;\n this.element = element;\n this.parent = null;\n }\n\n getCurrentRotations(rotations){\n return rotations;\n }\n\n sameAs(otherSegment){\n return false;\n }\n\n setParent(parent)\n {\n this.parent = parent;\n }\n \n getLevel()\n {\n if (this.parent!==null)\n {\n return this.parent.getLevel();\n }\n }\n\n canRotate(){\n return false;\n }\n\n isSolved(){\n return (this.rotation === 0);\n }\n \n async rotate(){\n return Promise.resolve();\n };\n\n _updateElement(){};\n\n applyRotations(rotations){\n return rotations;\n }\n\n applyLocks(locks)\n {\n return locks;\n }\n\n getCurrentLocked(lockedArray){\n return lockedArray;\n }\n\n getElement()\n {\n return this.element;\n }\n}\n","import {Segment} from \"./Segment\";\nimport {Helper} from \"js-helper/dist/shared/Helper\";\nimport {ViewHelper} from \"js-helper/dist/client/ViewHelper\";\n\nexport class LeafSegment extends Segment {\n\n constructor(element, leaf) {\n super(element);\n this.leaf = 'A';\n if (Helper.isNotNull(leaf)) {\n this.setLeaf(leaf);\n }\n }\n\n sameAs(otherSegment) {\n // debugger;\n return (otherSegment instanceof LeafSegment && otherSegment.leaf === this.leaf);\n }\n\n setLeaf(leaf) {\n this.leaf = leaf;\n }\n\n _updateElement() {\n ViewHelper.removeAllChildren(this.element.querySelector(\".leaf-element\")).appendChild(document.createTextNode(this.leaf));\n }\n}","import {Segment} from \"./Segment\";\nimport {Helper} from \"js-helper/dist/shared/Helper\";\nimport {ViewHelper} from \"js-helper/dist/client/ViewHelper\";\n\nexport class ParentSegment extends Segment {\n static initListener() {\n window.addEventListener(\"mousedown\", (e) => {\n // console.log(\"mousedown\");\n ParentSegment.mouseDownTarget = e.target;\n ParentSegment.clickPosition = {x: e.pageX, y: e.pageY};\n });\n window.addEventListener(\"mouseup\", (e) => {\n ParentSegment.mouseDownTarget = null;\n ParentSegment.clickPosition = {};\n });\n\n window.addEventListener(\"touchstart\", (e) => {\n if (e.targetTouches.length === 1) {\n ParentSegment.mouseDownTarget = e.targetTouches[0].target;\n ParentSegment.clickPosition = {x: e.targetTouches[0].pageX, y: e.targetTouches[0].pageY};\n }\n });\n window.addEventListener(\"touchend\", (e) => {\n ParentSegment.mouseDownTarget = null;\n ParentSegment.clickPosition = {};\n });\n }\n\n setIsRotatable(rotatable) {\n this.rotatable = rotatable;\n this._updateElement();\n }\n\n constructor(element) {\n super(element);\n this.children = [];\n this.class = \"rotate-0\";\n this.rotatable = true;\n\n this.userRotationDelta = 100;\n this.lastUserRotation = 0;\n\n this.touchendListener = (e) => {\n let now = new Date().getTime();\n\n let target = null;\n let position = null;\n\n if (e.changedTouches.length >= 1) {\n target = document.elementFromPoint(e.changedTouches[0].pageX, e.changedTouches[0].pageY);\n position = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY};\n }\n if (target != null && e.targetTouches.length === 0 && this.element.contains(ParentSegment.mouseDownTarget) && this.element.contains(target)) {\n e.stopPropagation();\n e.preventDefault();\n if (this.lastUserRotation + this.userRotationDelta > now) {\n return;\n }\n this.getLevel().segmentClicked(this);\n this.rotate(ParentSegment.mouseDownTarget, target, ParentSegment.clickPosition, position);\n // console.log(\"touchendListener stopped event\", e);\n\n this.lastUserRotation = new Date().getTime();\n }\n };\n this.mouseupListener = (e) => {\n let now = new Date().getTime();\n\n // console.log(\"mouseup\", ParentSegment.mouseDownTarget);\n if (ParentSegment.mouseDownTarget !== null && this.element.contains(ParentSegment.mouseDownTarget) && this.element.contains(e.target)) {\n let position = {x: e.pageX, y: e.pageY};\n e.stopPropagation();\n e.preventDefault();\n if (this.lastUserRotation + this.userRotationDelta > now) {\n return;\n }\n this.getLevel().segmentClicked(this);\n this.rotate(ParentSegment.mouseDownTarget, e.target, ParentSegment.clickPosition, position);\n // console.log(\"mouseupListener stopped event\", e);\n this.lastUserRotation = new Date().getTime();\n }\n };\n }\n\n canRotate() {\n return (this.rotatable && !this.getLevel().getHasWon());\n }\n\n async rotate(firstElem, secondElem, firstPosition, secondPosition) {\n const timeout = 250;\n const clickTolerance = 5;\n\n let rotationDirection = 1;\n if (Helper.isNotNull(secondElem) && Helper.isNotNull(firstElem) &&\n (Helper.isNull(firstPosition) || Helper.isNull(secondPosition) ||\n Math.abs(firstPosition.x - secondPosition.x) > clickTolerance ||\n Math.abs(firstPosition.y - secondPosition.y) > clickTolerance)) {\n\n let firstIndex = -1;\n let secondIndex = -1;\n let rotationIndexes = [0, 1, 3, 2];\n for (let i = 0; i < this.children.length; i++) {\n if (this.children[rotationIndexes[i]].element === firstElem || this.children[rotationIndexes[i]].element.contains(firstElem)) {\n firstIndex = (i + this.rotation / 90) % 4;\n }\n if (this.children[rotationIndexes[i]].element === secondElem || this.children[rotationIndexes[i]].element.contains(secondElem)) {\n secondIndex = (i + this.rotation / 90) % 4;\n }\n }\n\n if (firstIndex >= 0 && secondIndex >= 0) {\n if (firstIndex === 2 && (secondIndex === 0 || secondIndex === 1)\n || firstIndex === 1 && (secondIndex === 0 || secondIndex === 3)\n || (firstIndex === 0 && secondIndex === 3)\n || (firstIndex === 3 && secondIndex === 2)) {\n rotationDirection = -1;\n }\n }\n }\n\n if (this.canRotate()) {\n this.rotation += 360 + 90 * rotationDirection;\n this.rotation %= 360;\n\n let currentRotation = this.rotation;\n\n this._updateRotationClass();\n this.element.classList.add(\"rotating\");\n if (rotationDirection === -1) {\n this.element.classList.add(\"reverse\");\n }\n\n let delayPromise = new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n }).then(() => {\n if (this.rotation === currentRotation) {\n this.element.classList.remove(\"rotating\");\n this.element.classList.remove(\"reverse\");\n }\n });\n this.getLevel().checkHasWon(delayPromise);\n return delayPromise;\n }\n }\n\n sameAs(otherSegment) {\n if (!(otherSegment instanceof ParentSegment) || otherSegment.children.length !== this.children.length) {\n return false;\n }\n for (let i = 0; i < this.children.length; i++) {\n if (!this.children[i].sameAs(otherSegment.children[i])) {\n return false;\n }\n }\n return true;\n }\n\n applyRotations(rotations) {\n this.rotation = rotations[0];\n\n if (isNaN(this.rotation)) {\n this.rotation = 0;\n }\n\n rotations.splice(0, 1);\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].applyRotations(rotations);\n }\n return rotations;\n }\n\n applyLocks(locks) {\n this.rotatable = (locks[0] !== false);\n locks.splice(0, 1);\n for (let i = 0, n = this.children.length; i < n; i++) {\n locks = this.children[i].applyLocks(locks);\n }\n return locks;\n }\n\n getCurrentRotations(rotations) {\n rotations.push(this.rotation);\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].getCurrentRotations(rotations);\n }\n return rotations;\n }\n\n getCurrentLocked(locked) {\n locked.push(this.rotatable);\n for (let i = 0, n = this.children.length; i < n; i++) {\n locked = this.children[i].getCurrentLocked(locked);\n }\n return locked;\n }\n\n isSolved(checkChildren) {\n checkChildren = Helper.nonNull(checkChildren, true);\n if (checkChildren) {\n for (let i = 0, n = this.children.length; i < n; i++) {\n if (!this.children[i].isSolved()) {\n return false;\n }\n }\n }\n return (this.rotation === 0 || (\n this.children[0].sameAs(this.children[3]) && this.children[1].sameAs(this.children[2]) && (\n this.rotation === 180 || this.children[0].sameAs(this.children[1]))))\n }\n\n setChildren(children) {\n this.children = [];\n for (let i = 0, n = children.length; i < n; i++) {\n this.addChild(children[i]);\n }\n }\n\n addChild(child) {\n this.children.push(child);\n child.setParent(this);\n this._updateElement();\n }\n\n _updateRotationClass() {\n // this.style.transform = \"rotate(\"+this.rotation+\"deg)\";\n this.element.classList.remove(this.class);\n this.class = \"rotate-\" + this.rotation;\n if (this.class === \"rotate-0\") {\n this.class = \"rotate-360\";\n }\n this.element.classList.add(this.class);\n }\n\n _updateElement() {\n let layer = this._getLayer();\n if (layer >= 2) {\n this.element.classList.add(\"layer-\" + layer);\n }\n\n if (!this.rotatable) {\n this.element.classList.add(\"locked\");\n }\n\n const childContainer = this.element.querySelector(\".child-container\");\n ViewHelper.removeAllChildren(childContainer);\n\n this._updateRotationClass();\n\n this.element.removeEventListener(\"mouseup\", this.mouseupListener);\n this.element.removeEventListener(\"touchend\", this.touchendListener);\n\n this.element.addEventListener(\"mouseup\", this.mouseupListener);\n this.element.addEventListener(\"touchend\", this.touchendListener);\n\n for (let i = 0, n = this.children.length; i < n; i++) {\n this.children[i]._updateElement();\n childContainer.appendChild(this.children[i].getElement());\n if (i % 2 === 1 && this.children.length - 1 !== i) {\n childContainer.appendChild(document.createElement(\"br\"));\n }\n }\n }\n\n _getLayer() {\n if (this.children.length >= 1 && this.children[0] && this.children[0] instanceof ParentSegment) {\n return this.children[0]._getLayer() + 1;\n }\n return 1;\n }\n}\n\nParentSegment.initListener();\n","import {LeafSegment} from \"../Segment/LeafSegment\";\nimport {ParentSegment} from \"../Segment/ParentSegment\";\nimport {Helper} from \"js-helper/dist/shared/Helper\";\nimport {NativeStoragePromise} from \"cordova-sites/dist/client\";\nimport {Random} from \"js-helper\";\n\nexport class Level {\n constructor(templateContainer) {\n this.rootSegment = null;\n this.words = [];\n this.startRotations = [];\n this.templateContainer = templateContainer;\n\n this.levelData = null;\n\n this.hasWon = false;\n this.id = null;\n\n this.saveAsCurrentAfterCheckWon = true;\n\n this.wonResolver = null;\n this.giveUpResolver = null;\n\n this._shakeLeafs = true;\n this._shakeLeafsTimeout = null;\n this._lastRotation = 0;\n\n this.wonPromise = new Promise((resolve, reject) => {\n this.wonResolver = resolve;\n this.giveUpResolver = reject;\n });\n\n this.segmentClickedListener = () => {\n // console.log(\"clicked\")\n };\n }\n\n getLevelData() {\n return this.levelData;\n }\n\n setLevelData(levelData) {\n this.levelData = levelData;\n }\n\n async saveAsCurrentLevel() {\n let rotations = this.getCurrentRotations();\n let locked = this.getCurrentLocked();\n await NativeStoragePromise.setItem(\"currentLevel\", JSON.stringify({\n \"id\": this.id,\n \"rotations\": rotations,\n \"locks\": locked\n }));\n }\n\n getCurrentLocked() {\n if (this.rootSegment !== null) {\n return this.rootSegment.getCurrentLocked([]);\n }\n return [];\n }\n\n getCurrentRotations() {\n if (this.rootSegment !== null) {\n return this.rootSegment.getCurrentRotations([]);\n }\n return [];\n }\n\n setLocks(locks) {\n if (this.rootSegment !== null) {\n this.rootSegment.applyLocks(locks);\n }\n }\n\n setId(id) {\n this.id = id;\n }\n\n getId() {\n return this.id;\n }\n\n getLevel() {\n return this;\n }\n\n setRootSegment(rootSegment) {\n this.rootSegment = rootSegment;\n this.rootSegment.setParent(this);\n if (this.startRotations) {\n this.applyRotations();\n }\n }\n\n setWords(words) {\n this.words = [];\n for (let i = 0, n = words.length; i < n; i++) {\n this.words.push(words[i].replace(/ß/g, \"ẞ\").toUpperCase());\n }\n }\n\n setStartRotations(rotations) {\n this.startRotations = rotations;\n }\n\n applyRotations(rotations) {\n if (this.rootSegment) {\n rotations = Helper.nonNull(rotations, this.startRotations);\n this.rootSegment.applyRotations(rotations);\n }\n }\n\n getHasWon() {\n return this.hasWon;\n }\n\n checkHasWon(delayPromise) {\n if (this.rootSegment.isSolved()) {\n this.hasWon = true;\n const self = this;\n Promise.resolve(delayPromise).then(() => {\n self.wonResolver(true);\n });\n return true;\n }\n if (this.saveAsCurrentAfterCheckWon) {\n this.saveAsCurrentLevel();\n }\n return false;\n }\n\n setSaveAsCurrentAfterCheckWon(shouldSave){\n this.saveAsCurrentAfterCheckWon = (shouldSave === true);\n }\n\n getWonPromise() {\n return this.wonPromise;\n }\n\n getRootSegment() {\n return this.rootSegment;\n }\n\n createSegments() {\n };\n\n getRotatableSegments() {\n return Level._getRotatableSegmentsFrom(this.rootSegment);\n }\n\n segmentClicked(segment) {\n if (this.segmentClickedListener) {\n this.segmentClickedListener(segment);\n }\n\n this._lastRotation = new Date().getTime();\n clearTimeout(this._shakeLeafsTimeout);\n if (this._shakeLeafs) {\n this._shakeLeafsTimeout = setTimeout(() => {\n this.shakeLeafs();\n }, Random.getIntRandom(5000) + 25000);\n }\n }\n\n setSegmentClickedListener(listener) {\n this.segmentClickedListener = listener;\n }\n\n getLeafSegments() {\n return Level._getLeafSegmentsFrom(this.rootSegment);\n }\n\n static _getRotatableSegmentsFrom(segment) {\n let rotatable = [];\n if (segment.canRotate()) {\n rotatable.push(segment);\n }\n if (segment instanceof ParentSegment) {\n for (let i = 0; i < segment.children.length; i++) {\n rotatable.push.apply(rotatable, Level._getRotatableSegmentsFrom(segment.children[i]));\n }\n }\n return rotatable;\n }\n\n shakeLeafs() {\n clearTimeout(this._shakeLeafsTimeout);\n if (this._shakeLeafs && !this.hasWon) {\n\n const leafs = this.getLeafSegments();\n if (leafs.length > 0) {\n const index = Random.getIntRandom(leafs.length - 1);\n const leaf = leafs[index];\n\n leaf.getElement().classList.add(\"shake\");\n setTimeout(() => {\n leaf.getElement().classList.remove(\"shake\");\n }, Random.getIntRandom(350) + 650);\n }\n this._shakeLeafsTimeout = setTimeout(() => {\n this.shakeLeafs();\n }, Random.getIntRandom(2000) + 5000);\n }\n }\n\n static _createLeafsForWord(word, leafSegmentTemplate) {\n let leafSegments = [];\n for (let i = 0, n = word.length; i < n; i++) {\n leafSegments.push(new LeafSegment(leafSegmentTemplate.cloneNode(true), word.charAt(i)));\n }\n return leafSegments;\n }\n\n static _getLeafSegmentsFrom(segment) {\n let leafs = [];\n if (segment instanceof LeafSegment) {\n leafs.push(segment);\n } else if (segment instanceof ParentSegment) {\n for (let i = 0; i < segment.children.length; i++) {\n leafs.push(...Level._getLeafSegmentsFrom(segment.children[i]));\n }\n }\n return leafs;\n }\n}\n","import {ParentSegment} from \"./ParentSegment\";\nimport {ViewHelper} from \"js-helper/dist/client/ViewHelper\";\n\nexport class RowSegment extends ParentSegment{\n constructor(element) {\n super(element);\n this.rotatable = false;\n }\n\n applyRotations(rotations)\n {\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].applyRotations(rotations);\n }\n return rotations;\n }\n\n getCurrentRotations(rotations){\n for (let i = 0, n = this.children.length; i < n; i++) {\n rotations = this.children[i].getCurrentRotations(rotations);\n }\n return rotations;\n }\n\n getCurrentLocked(locked) {\n for (let i = 0, n = this.children.length; i < n; i++) {\n locked = this.children[i].getCurrentLocked(locked);\n }\n return locked;\n }\n\n applyLocks(locks) {\n for (let i = 0, n = this.children.length; i < n; i++) {\n locks = this.children[i].applyLocks(locks);\n }\n return locks;\n }\n\n _updateElement() {\n const childContainer = this.element.querySelector(\".child-container\");\n ViewHelper.removeAllChildren(childContainer);\n\n this._updateRotationClass();\n\n const self = this;\n this.element.onclick = function (e) {\n self.rotate();\n e.stopPropagation();\n };\n\n for (let i = 0, n = this.children.length; i < n; i++) {\n this.children[i]._updateElement();\n childContainer.appendChild(this.children[i].getElement());\n }\n }\n}","import {Level} from \"./Level\";\nimport {RowSegment} from \"../Segment/RowSegment\";\nimport {ParentSegment} from \"../Segment/ParentSegment\";\n\nexport class RowLevel extends Level {\n constructor(container, wordLength) {\n super(container);\n this.wordLength = wordLength;\n }\n\n createSegments() {\n if (this.words.length >= 2 && this.words[0].length >= this.wordLength && this.words[1].length >= this.wordLength) {\n let leafsWordOne = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n let leafsWordTwo = Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new RowSegment(this.templateContainer.copyRowTemplate());\n for (let i = 0, n = this.wordLength / 2; i < n; i++) {\n let parent = new ParentSegment(this.templateContainer.copyParentTemplate());\n parent.addChild(leafsWordOne[2 * i]);\n parent.addChild(leafsWordOne[2 * i + 1]);\n parent.addChild(leafsWordTwo[2 * i]);\n parent.addChild(leafsWordTwo[2 * i + 1]);\n rootSegment.addChild(parent);\n }\n // rootSegment.applyRotations(this.startRotations);\n this.setRootSegment(rootSegment)\n }\n }\n}","import {RowLevel} from \"./RowLevel\";\n\nexport class SimpleLevel extends RowLevel{\n constructor(container) {\n super(container, 6);\n }\n}","import {RowLevel} from \"./RowLevel\";\n\nexport class RowLevel8 extends RowLevel{\n constructor(container) {\n super(container, 8);\n }\n}\n","import {RowLevel} from \"./RowLevel\";\n\nexport class RowLevel10 extends RowLevel{\n constructor(container) {\n super(container, 10);\n }\n}\n","import {RowSegment} from \"./RowSegment\";\n\nexport class TriangleSegment extends RowSegment{\n\n}","import {RowSegment} from \"../Segment/RowSegment\";\nimport {Level} from \"./Level\";\nimport {ParentSegment} from \"../Segment/ParentSegment\";\nimport {TriangleSegment} from \"../Segment/TriangleSegment\";\n\nexport class SixWordsRowLevel extends Level {\n\n constructor(templateContainer, wordLength) {\n super(templateContainer);\n this.wordLength = wordLength;\n }\n\n createSegments() {\n if (this.words.length >= 6 &&\n this.words[0].length >= this.wordLength &&\n this.words[1].length >= this.wordLength &&\n this.words[2].length >= this.wordLength &&\n this.words[3].length >= this.wordLength &&\n this.words[4].length >= this.wordLength &&\n this.words[5].length >= this.wordLength\n ) {\n let leafsWords = [];\n leafsWords[0] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n leafsWords[1] = Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n leafsWords[2] = Level._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate());\n leafsWords[3] = Level._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate());\n leafsWords[4] = Level._createLeafsForWord(this.words[4], this.templateContainer.copyLeafTemplate());\n leafsWords[5] = Level._createLeafsForWord(this.words[5], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new RowSegment(this.templateContainer.copyRowTemplate());\n for (let i = 0; i < this.wordLength / 4; i++) {\n\n let parents = [];\n parents[0] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[1] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[2] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[3] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[4] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[5] = new ParentSegment(this.templateContainer.copyParentTemplate());\n\n parents[0].addChild(leafsWords[0][4*i]);\n parents[0].addChild(leafsWords[0][4*i+1]);\n parents[0].addChild(leafsWords[1][4*i]);\n parents[0].addChild(leafsWords[1][4*i+1]);\n\n parents[1].addChild(leafsWords[0][4*i+2]);\n parents[1].addChild(leafsWords[0][4*i+3]);\n parents[1].addChild(leafsWords[1][4*i+2]);\n parents[1].addChild(leafsWords[1][4*i+3]);\n\n parents[2].addChild(leafsWords[2][4*i]);\n parents[2].addChild(leafsWords[2][4*i+1]);\n parents[2].addChild(leafsWords[3][4*i]);\n parents[2].addChild(leafsWords[3][4*i+1]);\n\n parents[3].addChild(leafsWords[2][4*i+2]);\n parents[3].addChild(leafsWords[2][4*i+3]);\n parents[3].addChild(leafsWords[3][4*i+2]);\n parents[3].addChild(leafsWords[3][4*i+3]);\n\n parents[4].addChild(leafsWords[4][4*i]);\n parents[4].addChild(leafsWords[4][4*i+1]);\n parents[4].addChild(leafsWords[5][4*i]);\n parents[4].addChild(leafsWords[5][4*i+1]);\n\n parents[5].addChild(leafsWords[4][4*i+2]);\n parents[5].addChild(leafsWords[4][4*i+3]);\n parents[5].addChild(leafsWords[5][4*i+2]);\n parents[5].addChild(leafsWords[5][4*i+3]);\n\n let parent = new ParentSegment(this.templateContainer.copyParentTemplate());\n let triangle = new TriangleSegment(this.templateContainer.copyTriangleTemplate());\n if (i % 2 === 0) {\n parent.addChild(parents[0]);\n parent.addChild(parents[1]);\n parent.addChild(parents[2]);\n parent.addChild(parents[3]);\n\n let rowSegment = new RowSegment(this.templateContainer.copyRowTemplate());\n\n rowSegment.addChild(parents[4]);\n rowSegment.addChild(parents[5]);\n\n triangle.addChild(parent);\n triangle.addChild(rowSegment);\n\n triangle.getElement().classList.add(\"type-1\");\n }\n else {\n\n let rowSegment = new RowSegment(this.templateContainer.copyRowTemplate());\n\n rowSegment.addChild(parents[0]);\n rowSegment.addChild(parents[1]);\n\n triangle.addChild(rowSegment);\n triangle.addChild(parent);\n\n parent.addChild(parents[2]);\n parent.addChild(parents[3]);\n parent.addChild(parents[4]);\n parent.addChild(parents[5]);\n\n triangle.getElement().classList.add(\"type-2\");\n }\n rootSegment.addChild(triangle);\n }\n this.setRootSegment(rootSegment)\n }\n }\n}","import {SixWordsRowLevel} from \"./SixWordsRowLevel\";\n\nexport class SixWordsRowLevel8 extends SixWordsRowLevel {\n constructor(templateContainer) {\n super(templateContainer, 8);\n }\n}","import {SixWordsRowLevel} from \"./SixWordsRowLevel\";\n\nexport class SixWordsRowLevel12 extends SixWordsRowLevel {\n constructor(templateContainer) {\n super(templateContainer, 12);\n }\n}","import {Level} from \"./Level\";\nimport {RowSegment} from \"../Segment/RowSegment\";\nimport {ParentSegment} from \"../Segment/ParentSegment\";\n\nexport class FourWordsLevel extends Level {\n\n constructor(templateContainer, wordLength) {\n super(templateContainer);\n this.wordLength = wordLength;\n }\n\n createSegments() {\n if (this.words.length >= 4 &&\n this.words[0].length >= this.wordLength &&\n this.words[1].length >= this.wordLength &&\n this.words[2].length >= this.wordLength &&\n this.words[3].length >= this.wordLength\n ) {\n let leafsWords = [];\n leafsWords[0] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n leafsWords[1] = Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n leafsWords[2] = Level._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate());\n leafsWords[3] = Level._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new RowSegment(this.templateContainer.copyRowTemplate());\n for (let i = 0; i < this.wordLength / 4; i++) {\n\n let parents = [];\n parents[0] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[1] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[2] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[3] = new ParentSegment(this.templateContainer.copyParentTemplate());\n\n parents[0].addChild(leafsWords[0][4 * i]);\n parents[0].addChild(leafsWords[0][4 * i + 1]);\n parents[0].addChild(leafsWords[1][4 * i]);\n parents[0].addChild(leafsWords[1][4 * i + 1]);\n\n parents[1].addChild(leafsWords[0][4 * i + 2]);\n parents[1].addChild(leafsWords[0][4 * i + 3]);\n parents[1].addChild(leafsWords[1][4 * i + 2]);\n parents[1].addChild(leafsWords[1][4 * i + 3]);\n\n parents[2].addChild(leafsWords[2][4 * i]);\n parents[2].addChild(leafsWords[2][4 * i + 1]);\n parents[2].addChild(leafsWords[3][4 * i]);\n parents[2].addChild(leafsWords[3][4 * i + 1]);\n\n parents[3].addChild(leafsWords[2][4 * i + 2]);\n parents[3].addChild(leafsWords[2][4 * i + 3]);\n parents[3].addChild(leafsWords[3][4 * i + 2]);\n parents[3].addChild(leafsWords[3][4 * i + 3]);\n\n let parent = new ParentSegment(this.templateContainer.copyParentTemplate());\n parent.addChild(parents[0]);\n parent.addChild(parents[1]);\n parent.addChild(parents[2]);\n parent.addChild(parents[3]);\n\n rootSegment.addChild(parent);\n }\n this.setRootSegment(rootSegment)\n }\n }\n}","import {FourWordsLevel} from \"./FourWordsLevel\";\n\nexport class FourWordsLevel8 extends FourWordsLevel{\n constructor(templateContainer) {\n super(templateContainer, 8);\n }\n}","import {FourWordsLevel} from \"./FourWordsLevel\";\n\nexport class FourWordsLevel12 extends FourWordsLevel{\n constructor(templateContainer) {\n super(templateContainer, 12);\n }\n}","import {RowSegment} from \"./RowSegment\";\nimport {ViewHelper} from \"js-helper/dist/client/ViewHelper\";\n\nexport class ColumnSegment extends RowSegment{\n\n _updateElement() {\n const childContainer = this.element.querySelector(\".child-container\");\n ViewHelper.removeAllChildren(childContainer);\n\n this._updateRotationClass();\n\n const self = this;\n this.element.onclick = function (e) {\n self.rotate();\n e.stopPropagation();\n };\n\n for (let i = 0, n = this.children.length; i < n; i++) {\n this.children[i]._updateElement();\n childContainer.appendChild(this.children[i].getElement());\n }\n }\n\n // constructor(element) {\n // super(element);\n // this.rotatable = false;\n // }\n //\n // applyRotations(rotations)\n // {\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // rotations = this.children[i].applyRotations(rotations);\n // }\n // return rotations;\n // }\n //\n // getCurrentRotations(rotations){\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // rotations = this.children[i].getCurrentRotations(rotations);\n // }\n // return rotations;\n // }\n //\n // getCurrentLocked(locked) {\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // locked = this.children[i].getCurrentLocked(locked);\n // }\n // return locked;\n // }\n //\n // applyLocks(locks) {\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // locks = this.children[i].applyLocks(locks);\n // }\n // return locks;\n // }\n //\n // _updateElement() {\n // const childContainer = this.element.querySelector(\".child-container\");\n // ViewHelper.removeAllChildren(childContainer);\n //\n // this._updateRotationClass();\n //\n // const self = this;\n // this.element.onclick = function (e) {\n // self.rotate();\n // e.stopPropagation();\n // };\n //\n // for (let i = 0, n = this.children.length; i < n; i++) {\n // this.children[i]._updateElement();\n // childContainer.appendChild(this.children[i].getElement());\n // }\n // }\n}","import {Level} from \"./Level\";\nimport {RowSegment} from \"../Segment/RowSegment\";\nimport {ParentSegment} from \"../Segment/ParentSegment\";\nimport {ColumnSegment} from \"../Segment/ColumnSegment\";\n\nexport class BigSegmentsLevels extends Level{\n constructor(templateContainer, wordLength, bigSegmentPositions) {\n super(templateContainer);\n this.wordLength = wordLength;\n this.bigSegmentPositions = bigSegmentPositions;\n }\n\n createSegments() {\n if (this.words.length >= 4 &&\n this.words[0].length >= this.wordLength &&\n this.words[1].length >= this.wordLength &&\n this.words[2].length >= this.wordLength &&\n this.words[3].length >= this.wordLength &&\n this.wordLength >= 4\n ) {\n let leafsWords = [];\n leafsWords[0] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate());\n leafsWords[1] = Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate());\n leafsWords[2] = Level._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate());\n leafsWords[3] = Level._createLeafsForWord(this.words[3], this.templateContainer.copyLeafTemplate());\n\n let rootSegment = new RowSegment(this.templateContainer.copyRowTemplate());\n for (let i = 0; i < this.wordLength / 2; i++) {\n let parents = [];\n parents[0] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[1] = new ParentSegment(this.templateContainer.copyParentTemplate());\n\n parents[0].addChild(leafsWords[0][2 * i]);\n parents[0].addChild(leafsWords[0][2 * i + 1]);\n parents[0].addChild(leafsWords[1][2 * i]);\n parents[0].addChild(leafsWords[1][2 * i + 1]);\n\n parents[1].addChild(leafsWords[2][2 * i]);\n parents[1].addChild(leafsWords[2][2 * i + 1]);\n parents[1].addChild(leafsWords[3][2 * i]);\n parents[1].addChild(leafsWords[3][2 * i + 1]);\n\n let parentSegment =null;\n if (this.bigSegmentPositions.indexOf(i) !== -1){\n parents[2] = new ParentSegment(this.templateContainer.copyParentTemplate());\n parents[3] = new ParentSegment(this.templateContainer.copyParentTemplate());\n\n parents[2].addChild(leafsWords[0][2 * i + 2]);\n parents[2].addChild(leafsWords[0][2 * i + 3]);\n parents[2].addChild(leafsWords[1][2 * i + 2]);\n parents[2].addChild(leafsWords[1][2 * i + 3]);\n\n parents[3].addChild(leafsWords[2][2 * i + 2]);\n parents[3].addChild(leafsWords[2][2 * i + 3]);\n parents[3].addChild(leafsWords[3][2 * i + 2]);\n parents[3].addChild(leafsWords[3][2 * i + 3]);\n\n parentSegment = new ParentSegment(this.templateContainer.copyParentTemplate());\n parentSegment.addChild(parents[0]);\n parentSegment.addChild(parents[2]);\n parentSegment.addChild(parents[1]);\n parentSegment.addChild(parents[3]);\n i++;\n }\n else{\n parentSegment = new ColumnSegment(this.templateContainer.copyColumnTemplate());\n parentSegment.addChild(parents[0]);\n parentSegment.addChild(parents[1]);\n }\n\n rootSegment.addChild(parentSegment);\n }\n this.setRootSegment(rootSegment)\n }\n }\n}","import {BigSegmentsLevels} from \"./BigSegmentsLevels\";\n\nexport class SimpleFourWordsLevel extends BigSegmentsLevels{\n constructor(templateContainer, wordLength, bigSegmentPosition) {\n super(templateContainer, wordLength, [bigSegmentPosition]);\n }\n}","import {SimpleFourWordsLevel} from \"./SimpleFourWordsLevel\";\n\nexport class SimpleFourWordsLevel10_0 extends SimpleFourWordsLevel{\n constructor(templateContainer) {\n super(templateContainer, 10, 0);\n }\n}","import {SimpleFourWordsLevel} from \"./SimpleFourWordsLevel\";\n\nexport class SimpleFourWordsLevel10_1 extends SimpleFourWordsLevel{\n constructor(templateContainer) {\n super(templateContainer, 10, 1);\n }\n}","import {SimpleFourWordsLevel} from \"./SimpleFourWordsLevel\";\n\nexport class SimpleFourWordsLevel10_2 extends SimpleFourWordsLevel{\n constructor(templateContainer) {\n super(templateContainer, 10, 2);\n }\n}","import {SimpleFourWordsLevel} from \"./SimpleFourWordsLevel\";\n\nexport class SimpleFourWordsLevel10_3 extends SimpleFourWordsLevel{\n constructor(templateContainer) {\n super(templateContainer, 10, 3);\n }\n}","import {BigSegmentsLevels} from \"./BigSegmentsLevels\";\n\nexport class TwoSegmentFourWordsLevel10_0_3 extends BigSegmentsLevels{\n constructor(templateContainer) {\n super(templateContainer, 10, [0,3]);\n }\n}\n\n","import {BigSegmentsLevels} from \"./BigSegmentsLevels\";\n\nexport class TwoSegmentFourWordsLevel10_1_3 extends BigSegmentsLevels{\n constructor(templateContainer) {\n super(templateContainer, 10, [1,3]);\n }\n}\n\n","import {BigSegmentsLevels} from \"./BigSegmentsLevels\";\n\nexport class TwoSegmentFourWordsLevel10_0_2 extends BigSegmentsLevels{\n constructor(templateContainer) {\n super(templateContainer, 10, [0,2]);\n }\n}\n\n","import {SimpleLevel} from \"./SimpleLevel\";\nimport {RowLevel8} from \"./RowLevel8\";\nimport {RowLevel10} from \"./RowLevel10\";\nimport {SixWordsRowLevel8} from \"./SixWordsRowLevel8\";\nimport {SixWordsRowLevel12} from \"./SixWordsRowLevel12\";\nimport {FourWordsLevel8} from \"./FourWordsLevel8\";\nimport {FourWordsLevel12} from \"./FourWordsLevel12\";\nimport {SimpleFourWordsLevel10_0} from \"./SimpleFourWordsLevel10_0\";\nimport {SimpleFourWordsLevel10_1} from \"./SimpleFourWordsLevel10_1\";\nimport {SimpleFourWordsLevel10_2} from \"./SimpleFourWordsLevel10_2\";\nimport {SimpleFourWordsLevel10_3} from \"./SimpleFourWordsLevel10_3\";\nimport {TwoSegmentFourWordsLevel10_0_3} from \"./TwoSegmentFourWordsLevel10_0_3\";\nimport {TwoSegmentFourWordsLevel10_1_3} from \"./TwoSegmentFourWordsLevel10_1_3\";\nimport {TwoSegmentFourWordsLevel10_0_2} from \"./TwoSegmentFourWordsLevel10_0_2\";\nimport {Level} from \"./Level\";\n\nexport class LevelHelper {\n public static readonly types = {\n 20: SimpleLevel,\n 40: RowLevel8,\n 60: RowLevel10,\n 80: SimpleFourWordsLevel10_0,\n 81: SimpleFourWordsLevel10_1,\n 82: SimpleFourWordsLevel10_2,\n 83: SimpleFourWordsLevel10_3,\n 100: SixWordsRowLevel8,\n 110: TwoSegmentFourWordsLevel10_0_3,\n 111: TwoSegmentFourWordsLevel10_1_3,\n 112: TwoSegmentFourWordsLevel10_0_2,\n 120: FourWordsLevel8,\n 140: SixWordsRowLevel12,\n 160: FourWordsLevel12,\n };\n static setLevelType(typeId, level) {\n LevelHelper.types[typeId] = level;\n }\n\n static getLevelClass(type) {\n return LevelHelper.types[type];\n }\n\n static inflateLevel(levelData, templateContainer): Level {\n let level = new (LevelHelper.types[levelData[\"renderer\"]])(templateContainer);\n level.setWords(JSON.parse(levelData[\"words\"].replace(/"/g, '\"')));\n level.setId(levelData[\"id\"]);\n level.setLevelData(levelData);\n\n levelData[\"positions\"] = JSON.parse(levelData[\"positions\"]);\n for (let i = 0, n = levelData[\"positions\"].length; i < n; i++) {\n if (levelData[\"positions\"][i] <= 4) {\n levelData[\"positions\"][i] = 90 * levelData[\"positions\"][i];\n }\n }\n\n level.setStartRotations(levelData[\"positions\"]);\n return level;\n }\n}\n","const view = require(\"../../html/sites/end.html\");\nimport {MenuSite} from \"cordova-sites/dist/client\";\n\nexport class EndSite extends MenuSite{\n constructor(siteManager) {\n super(siteManager, view);\n }\n}\n","import {BaseModel} from \"cordova-sites-database/dist/BaseModel\";\nimport {BaseDatabase} from \"cordova-sites-database/dist/cordova-sites-database\";\nimport {LevelData} from \"../../../shared/model/LevelData\";\nimport {Helper} from \"js-helper/dist/shared/Helper\";\nimport {SelectQueryBuilder} from \"typeorm\";\n\nexport class LevelPlayed extends BaseModel {\n\n levelData: LevelData;\n played: boolean;\n\n static getColumnDefinitions() {\n let columns = super.getColumnDefinitions();\n columns[\"played\"] = {type: BaseDatabase.TYPES.BOOLEAN, default: true};\n return columns;\n }\n\n static getRelationDefinitions() {\n let relations = super.getRelationDefinitions();\n relations[\"levelData\"] = {\n target: LevelData.getSchemaName(),\n type: \"one-to-one\",\n joinColumn: true,\n // cascade: true,\n };\n return relations;\n }\n\n static async setPlayed(levelData, played?){\n played = Helper.nonNull(played, true);\n let levelPlayed = new LevelPlayed();\n levelPlayed.levelData = levelData;\n levelPlayed.played = played;\n\n return await levelPlayed.save();\n }\n\n static async getNextLevelData(renderer){\n let qb = >await this._database.createQueryBuilder(LevelData);\n\n qb = qb.select(\"COUNT(*) as count, difficulty\")\n .leftJoin(LevelPlayed, \"levelPlayed\", \"levelPlayed.levelData = LevelData.id\")\n .where(\"(deleted = 0 OR deleted = 'false')\")\n .andWhere(\"renderer IN (\"+renderer.join(\",\")+\")\")\n .andWhere(\"(levelPlayed.id IS NULL OR levelPlayed.played = 0)\")\n .groupBy(\"difficulty\")\n .orderBy(\"difficulty, LevelData.id\");\n\n let countRes = await qb.getRawMany();\n\n let difficulty = null;\n let offset = null;\n\n if (!countRes.some(res => {\n if (res[\"count\"] > 0){\n difficulty = res[\"difficulty\"];\n offset = Math.floor(Math.random() * Math.floor(res[\"count\"]));\n return true;\n }\n return false;\n })){\n return null;\n }\n\n qb = >await this._database.createQueryBuilder(LevelData);\n qb = qb\n .leftJoin(LevelPlayed, \"levelPlayed\", \"levelPlayed.levelData = LevelData.id\")\n .where(\"(deleted = 0 OR deleted = 'false')\")\n .andWhere(\"difficulty = \"+difficulty)\n .andWhere(\"renderer IN (\"+renderer.join(\",\")+\")\")\n .andWhere(\"(levelPlayed.id IS NULL OR levelPlayed.played = 0)\")\n .orderBy(\"LevelData.id\")\n .limit(1)\n .offset(offset);\n\n return await qb.getOne();\n }\n}\nBaseDatabase.addModel(LevelPlayed);\n","import {Level} from \"../wordrotator/Level/Level\";\n\nconst helpIcon = require(\"../../img/help.png\").default;\nconst view = require(\"../../html/sites/level.html\");\nconst coinSound = require(\"../../sound/single_coin_fall_on_concrete_.mp3\").default;\n\nimport {TemplateContainer} from \"../wordrotator/Segment/TemplateContainer\";\nimport {LevelHelper} from \"../wordrotator/Level/LevelHelper\";\nimport {EndSite} from \"./EndSite\";\n\nimport {\n MenuAction,\n Toast,\n ScaleHelper,\n Matomo,\n NativeStoragePromise,\n} from \"cordova-sites/dist/client\";\n\nimport {Helper} from \"js-helper/dist/shared/Helper\";\nimport {LevelData} from \"../../../shared/model/LevelData\";\nimport {LevelPlayed} from \"../model/LevelPlayed\";\nimport {ViewHelper} from \"js-helper/dist/client/ViewHelper\";\n\nimport {SoundManager} from \"cordova-sites/dist/client/js/Sound/SoundManager\";\nimport {MenuSite} from \"cordova-sites/dist/client/js/Context/MenuSite\";\n\nexport class LevelSite extends MenuSite {\n\n public static readonly RENDERER_TYPES = [20, 40, 60, 80, 81, 82, 83, 100, 110, 111, 112, 120, 140, 160];\n public static readonly TUTORIAL = {\n FIRST_LEVEL: 67,\n SECOND_LEVEL: 15,\n BIG_SEGMENT_LEVEL: 1921\n };\n\n private coinAction: MenuAction;\n private levelCounterAction: MenuAction;\n private levelCounter: number;\n private levelScaler: () => void;\n private wonParams: { aborted: boolean; coinCounterTimer: any };\n private coinPromise: Promise;\n private continueButtonScaler: () => Promise;\n private wonTextScaler: () => Promise;\n private wonText: HTMLElement;\n private templateContainer: TemplateContainer;\n private coinTemplate: HTMLElement;\n private coinContainer: HTMLElement;\n private level: Level;\n\n constructor(siteManager) {\n super(siteManager, view);\n // this.getNavbarFragment().setBackgroundImage(null);\n }\n\n async onCreateMenu(navbar) {\n super.onCreateMenu(navbar);\n\n let coinAction = new MenuAction(Helper.nonNull(await NativeStoragePromise.getItem(\"coins\"), \"0\"), () => {\n }, MenuAction.SHOW_ALWAYS, 900);\n coinAction._shouldTranslate = false;\n coinAction.setLiClass(\"coin-counter img\");\n navbar.addAction(coinAction);\n this.coinAction = coinAction;\n\n let levelCounterAction = new MenuAction(Helper.nonNull(this.levelCounter, \"1\"), () => {\n }, MenuAction.SHOW_ALWAYS, 900);\n levelCounterAction._shouldTranslate = false;\n levelCounterAction.setLiClass(\"level-counter\");\n navbar.addAction(levelCounterAction);\n this.levelCounterAction = levelCounterAction;\n\n let helpAction = new MenuAction(\"\", () => {\n this.help();\n }, MenuAction.SHOW_ALWAYS, 900);\n helpAction._shouldTranslate = false;\n helpAction._icon = helpIcon;\n helpAction.setLiClass(\"help-action show-while-playing\");\n navbar.addAction(helpAction);\n\n return navbar;\n }\n\n async onConstruct(args) {\n this.levelCounter = Helper.nonNull(await NativeStoragePromise.getItem(\"levelCounter\"), 1);\n // this.levelCounter = 9999;\n this.levelScaler = () => {\n };\n this.wonParams = {\n aborted: false,\n coinCounterTimer: null,\n };\n this.coinPromise = Promise.resolve();\n\n let soundManager = SoundManager.getInstance();\n soundManager.set({\n audio: coinSound,\n muted: ((await NativeStoragePromise.getItem(\"play-sound\", \"1\")) !== \"1\"),\n volume: 0.7\n }, SoundManager.CHANNELS.SOUND);\n\n soundManager.resume(SoundManager.CHANNELS.MUSIC);\n\n return super.onConstruct(args);\n }\n\n async onViewLoaded() {\n let res = super.onViewLoaded();\n let leafSegmentTemplate = this.findBy(\"#segment-leaf-template\");\n let parentSegmentTemplate = this.findBy(\"#segment-parent-template\");\n let rowSegmentTemplate = this.findBy(\"#segment-row-template\");\n let triangleTemplate = this.findBy(\"#segment-triangle-template\");\n let columnTemplate = this.findBy(\"#segment-column-template\");\n\n leafSegmentTemplate.removeAttribute(\"id\");\n parentSegmentTemplate.removeAttribute(\"id\");\n rowSegmentTemplate.removeAttribute(\"id\");\n triangleTemplate.removeAttribute(\"id\");\n columnTemplate.removeAttribute(\"id\");\n\n leafSegmentTemplate.remove();\n parentSegmentTemplate.remove();\n rowSegmentTemplate.remove();\n triangleTemplate.remove();\n columnTemplate.remove();\n\n let continueButton = this.findBy(\"#continue-button\");\n continueButton.addEventListener(\"click\", () => {\n continueButton.style.opacity = 0;\n this.nextLevel();\n });\n\n let wonText = this.findBy(\"#won-text\");\n\n let scaleHelper = new ScaleHelper();\n this.continueButtonScaler = await scaleHelper.scaleToFull(continueButton, continueButton.parentElement, false, true, 2);\n this.wonTextScaler = await scaleHelper.scaleToFull(wonText, wonText.parentElement, false, false, 2, null, 5);\n this.wonText = wonText;\n this.wonText.style.fontSize = \"0\";\n\n this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate);\n\n this.coinTemplate = this.findBy(\"#coin-template\");\n this.coinContainer = this.findBy(\"#coin-container\");\n\n this.coinTemplate.id = null;\n ViewHelper.removeAllChildren(this.coinContainer);\n\n // this.findBy(\"#help-button\").addEventListener(\"click\", () => {\n // this.help();\n // });\n await this.loadLastLevel();\n\n return res;\n }\n\n async loadLastLevel() {\n try {\n let currentLevelInfo = await NativeStoragePromise.getItem(\"currentLevel\");\n if (Helper.isNotNull(currentLevelInfo)) {\n currentLevelInfo = JSON.parse(currentLevelInfo);\n\n let levelData = await LevelData.findById(currentLevelInfo[\"id\"]);\n\n if (Helper.isNull(levelData)) {\n return this.nextLevel();\n }\n\n let level = LevelHelper.inflateLevel(levelData, this.templateContainer);\n level.setStartRotations(currentLevelInfo[\"rotations\"]);\n\n level.getWonPromise().then(() => {\n this.levelWon(level);\n });\n\n level.createSegments();\n level.setLocks(currentLevelInfo[\"locks\"]);\n level.getRootSegment()._updateElement();\n\n level.saveAsCurrentLevel();\n\n let levelSegment = this.findBy(\"#level\");\n ViewHelper.removeAllChildren(levelSegment).appendChild(level.getRootSegment().getElement());\n let scaleHelper = new ScaleHelper();\n this.levelScaler = await scaleHelper.scaleTo(1, levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0);\n\n this.level = level;\n Matomo.push([\"trackEvent\", \"LevelSite\", \"LoadLastLevel\"]);\n this.level.checkHasWon();\n return;\n }\n } catch (e) {\n console.error(e);\n }\n return this.nextLevel();\n }\n\n startEndSite() {\n this.startSite(EndSite);\n this.finish();\n }\n\n updateLevelCounter() {\n this.levelCounterAction.setName(this.levelCounter);\n if (this.levelCounter >= 10 && this.levelCounter <= 99) {\n this.levelCounterAction.setLiClass(\"num-10 level-counter\");\n } else if (this.levelCounter >= 100 && this.levelCounter <= 999) {\n this.levelCounterAction.setLiClass(\"num-100 level-counter\");\n } else if (this.levelCounter >= 1000) {\n this.levelCounterAction.setLiClass(\"num-1000 level-counter\");\n } else {\n this.levelCounterAction.setLiClass(\"level-counter\");\n }\n }\n\n async nextLevel() {\n this.showLoadingSymbol();\n try {\n let levelData = await LevelPlayed.getNextLevelData(LevelSite.RENDERER_TYPES);\n\n if (Helper.isNull(levelData)) {\n this.startEndSite();\n return;\n }\n\n const level = LevelHelper.inflateLevel(levelData, this.templateContainer);\n\n //Waiting for Level to be done\n if (this.level && level.id === this.level.id) {\n console.log(\"Level is the same as before! reload!\");\n await new Promise((resolve) => setTimeout(resolve, 50));\n // return;\n debugger;\n return this.nextLevel();\n }\n\n level.getWonPromise().then(async () => {\n await this.levelWon(level);\n });\n\n level.createSegments();\n level.getRootSegment()._updateElement();\n\n level.saveAsCurrentLevel();\n\n let levelSegment = this.findBy(\"#level\");\n ViewHelper.removeAllChildren(levelSegment).appendChild(level.getRootSegment().getElement());\n\n this._view.classList.remove('won');\n this.wonText.style.fontSize = \"0\";\n this.removeLoadingSymbol();\n\n let scaleHelper = new ScaleHelper();\n this.levelScaler = await scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0);\n\n this.level = level;\n this.updateLevelCounter();\n\n this.coinAction.setName(Helper.nonNull(await NativeStoragePromise.getItem(\"coins\"), \"0\"));\n // this.coinAction.redraw();\n\n this.wonParams.aborted = true;\n clearTimeout(this.wonParams.coinCounterTimer);\n\n Matomo.push([\"trackEvent\", \"LevelSite\", \"NextLevel\", \"Level Number Normal\", this.levelCounter]);\n\n this.level.checkHasWon();\n\n return this.tutorial();\n } catch (e) {\n console.log(\"Fehler!\");\n console.error(e);\n this.startEndSite();\n }\n }\n\n async onStart(args) {\n this.setTitle(\"WR\");\n\n Matomo.update(\"Level Sites\");\n let res = super.onStart(args);\n\n if (this.levelCounterAction) {\n this.updateLevelCounter();\n }\n this.levelScaler();\n\n //TODO Sound\n let soundManager = SoundManager.getInstance();\n soundManager.set({\n audio: coinSound,\n muted: (await NativeStoragePromise.getItem(\"play-sound\", \"1\") !== \"1\"),\n volume: 0.7\n }, SoundManager.CHANNELS.SOUND);\n\n await this.tutorial();\n\n return res;\n }\n\n async levelWon(level) {\n try {\n const savePromise = LevelPlayed.setPlayed(level.getLevelData());\n\n // savePromise.then((r) => console.log(\"levelSaved!\", r));\n\n this.levelCounter++;\n await NativeStoragePromise.setItem(\"levelCounter\", this.levelCounter);\n await NativeStoragePromise.remove(\"currentLevel\");\n\n let continueButton = this.findBy(\"#continue-button\");\n continueButton.style.transition = \"none\";\n continueButton.style.opacity = 0;\n\n //Todo richtiges Element aufrufen?\n this._view.classList.add('won');\n ViewHelper.removeAllChildren(this.coinContainer);\n let coinsPerLevel = await NativeStoragePromise.getItem(\"coinsPerLevel\", 5);\n\n let coinsBefore = 0;\n\n let soundManager = SoundManager.getInstance();\n let audioOptions = soundManager.get(SoundManager.CHANNELS.SOUND);\n\n this.coinPromise = this.coinPromise.then(async () => {\n coinsBefore = parseInt(Helper.nonNull(await NativeStoragePromise.getItem(\"coins\"), \"0\"));\n await NativeStoragePromise.setItem(\"coins\", coinsBefore + parseInt(coinsPerLevel));\n }).then(async () => {\n return Promise.all([new Promise((r) => {\n setTimeout(() => {\n //TODO animationen einbauen\n continueButton.style.opacity = 1;\n r();\n }, 500)\n }),\n audioOptions.loadedPromise.catch(e => {\n console.error(e)\n })\n ]);\n });\n\n this.wonParams.aborted = false;\n\n for (let i = 0; i < coinsPerLevel; i++) {\n let coinElem = this.coinTemplate.cloneNode(true);\n this.coinContainer.appendChild(coinElem);\n this.coinPromise = this.coinPromise.then(() => {\n return new Promise(r => {\n let timeout = 350;\n if (!this.wonParams.aborted) {\n //TODO animationen einbauen\n\n coinElem.style.opacity = \"1\";\n soundManager.play(SoundManager.CHANNELS.SOUND);\n\n this.wonParams.coinCounterTimer = setTimeout(() => {\n if (!this.wonParams.aborted) {\n this.coinAction.setName(++coinsBefore);\n }\n }, timeout / 2);\n } else {\n r();\n }\n\n //Always do the next promise for garbage collection\n setTimeout(r, timeout);\n })\n });\n }\n\n this.coinPromise = this.coinPromise.catch((e) => {\n console.error(e)\n });\n\n this.wonTextScaler();\n this.continueButtonScaler();\n this.levelScaler();\n\n Matomo.push([\"trackEvent\", \"LevelSite\", \"LevelWon\", \"Coins\", parseInt(Helper.nonNull(await NativeStoragePromise.getItem(\"coins\"), \"0\"))]);\n\n let leafs = level.getLeafSegments();\n leafs.forEach((leaf, i) => {\n let elem = leaf.getElement();\n elem.style.animationDelay = i * 50 + \"ms\";\n elem.classList.add(\"jump-animation\");\n })\n\n await savePromise;\n } catch (e) {\n console.error(e);\n }\n }\n\n async help() {\n let cost = await NativeStoragePromise.getItem(\"costForHelp\", 25);\n let currentCoins = parseInt(Helper.nonNull(await NativeStoragePromise.getItem(\"coins\"), 0));\n\n if (currentCoins >= cost) {\n currentCoins -= cost;\n await NativeStoragePromise.setItem(\"coins\", currentCoins);\n this.coinAction.setName(currentCoins);\n\n let rotatables = this.level.getRotatableSegments();\n rotatables = rotatables.filter((segment) => {\n return (!segment.isSolved(false));\n });\n\n let index = Math.floor(Math.random() * rotatables.length);\n\n let segmentToHelp = rotatables[index];\n while (segmentToHelp.rotation !== 0) {\n segmentToHelp.rotate();\n }\n segmentToHelp.setIsRotatable(false);\n this.level.saveAsCurrentLevel();\n\n // Matomo.push([\"trackEvent\", \"LevelSite\", \"Help\", \"Coins\", parseInt(Helper.nonNull(localStorage.getItem(\"coins\"), \"0\"))]);\n } else {\n new Toast(\"not-enough-coins\").show();\n // Matomo.push([\"trackEvent\", \"LevelSite\", \"Help\", \"Not enough Coins\", parseInt(Helper.nonNull(localStorage.getItem(\"coins\"), \"0\"))]);\n }\n }\n\n async tutorial() {\n const tutorialScale = 0.01;\n\n if (this.level.id === LevelSite.TUTORIAL.FIRST_LEVEL) {\n let currentStep = Helper.nonNull(await NativeStoragePromise.getItem(\"tutorial-step\"), \"1\");\n\n let scaleHelper = new ScaleHelper();\n this._view.classList.add(\"tutorial\");\n this._view.classList.add(\"step-\" + currentStep);\n\n switch (currentStep) {\n case \"1\": {\n this.level.setSegmentClickedListener(async () => {\n this._view.classList.remove(\"step-1\");\n await NativeStoragePromise.setItem(\"tutorial-step\", \"2\");\n this.tutorial();\n });\n\n // let textElem = this.findBy(\".tutorial-text .step-1\");\n\n await this.levelScaler();\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 2, 2);\n\n break;\n }\n case \"2\": {\n this.level.setSegmentClickedListener(() => {\n });\n this.level.getWonPromise().then(async () => {\n this._view.classList.remove(\"tutorial\");\n this._view.classList.remove(\"step-2\");\n await NativeStoragePromise.remove(\"tutorial-step\");\n this.coinPromise = this.coinPromise.then(async () => {\n new Toast(\"extra-coins-after-first-level\").show();\n await NativeStoragePromise.setItem(\"coins\", parseInt(Helper.nonNull(await NativeStoragePromise.getItem(\"coins\"), \"0\")) + 50);\n this.coinAction.setName(Helper.nonNull(await NativeStoragePromise.getItem(\"coins\"), \"0\"));\n // this.coinAction.redraw();\n });\n });\n\n // let textElem = this.findBy(\".tutorial-text .step-2\");\n\n await this.levelScaler();\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 1, 2);\n\n break;\n }\n default: {\n this._view.classList.remove(\"tutorial\");\n }\n }\n } else if (this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL) {\n let currentStep = Helper.nonNull(await NativeStoragePromise.getItem(\"tutorial-step\"), \"3\");\n\n switch (currentStep) {\n case \"3\": {\n let scaleHelper = new ScaleHelper();\n\n this._view.classList.add(\"tutorial\");\n this._view.classList.add(\"step-\" + currentStep);\n\n let eventListener = async () => {\n this._view.classList.remove(\"tutorial\");\n this._view.classList.remove(\"step-3\");\n await NativeStoragePromise.setItem(\"tutorial-step\", \"4\");\n // this.findBy(\"#help-button\").removeEventListener(\"click\", eventListener);\n this.levelScaler();\n };\n this.findBy(\".help-action\").addEventListener(\"click\", eventListener);\n\n // let textElem = this.findBy(\".tutorial-text .step-3\");\n\n await this.levelScaler();\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 1, 2);\n break;\n }\n default: {\n this._view.classList.remove(\"tutorial\");\n }\n }\n } else if (this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL) {\n let currentStep = Helper.nonNull(await NativeStoragePromise.getItem(\"tutorial-step\"), \"4\");\n\n switch (currentStep) {\n case \"4\": {\n\n let scaleHelper = new ScaleHelper();\n this._view.classList.add(\"tutorial\");\n this._view.classList.add(\"step-\" + currentStep);\n\n let rotatableSegments = this.level.getRotatableSegments();\n let firstSegment = rotatableSegments[2];\n\n let pointer = this.findBy(\"#tutorial-pointer\");\n pointer.remove();\n firstSegment.element.appendChild(pointer);\n\n this.level.setSegmentClickedListener(async (segment) => {\n if (firstSegment === segment) {\n this._view.classList.remove(\"tutorial\");\n this._view.classList.remove(\"step-4\");\n await NativeStoragePromise.setItem(\"tutorial-step\", \"5\");\n this.levelScaler();\n }\n });\n\n // let textElem = this.findBy(\".tutorial-text .step-4\");\n\n await this.levelScaler();\n // debugger;\n // scaleHelper.scaleTo(tutorialScale, textElem, textElem.parentElement, null, true, 1, 2);\n\n break;\n }\n default: {\n this._view.classList.remove(\"tutorial\");\n }\n }\n }\n }\n}\n","import {FourWordsLevel} from \"./FourWordsLevel\";\n\nexport class MainMenuLevel extends FourWordsLevel{\n\n constructor(templateContainer) {\n super(templateContainer, 4);\n }\n\n saveAsCurrentLevel() {\n }\n\n // checkHasWon(delayPromise) {\n // }\n}","import {Matomo, MenuSite, NativeStoragePromise, ScaleHelper, Toast} from \"cordova-sites/dist/client\";\nimport {App} from \"cordova-sites/dist/client/js/App\";\nimport {LevelPlayed} from \"../model/LevelPlayed\";\nimport {Helper} from \"js-helper/dist/shared/Helper\";\nimport {LevelHelper} from \"../wordrotator/Level/LevelHelper\";\nimport {ViewHelper} from \"js-helper/dist/client/ViewHelper\";\nimport {LevelData} from \"../../../shared/model/LevelData\";\nimport {TemplateContainer} from \"../wordrotator/Segment/TemplateContainer\";\nimport {LevelSite} from \"./LevelSite\";\nimport {SyncJob} from \"cordova-sites-easy-sync/dist/client\";\nimport {Level} from \"../wordrotator/Level/Level\";\n\nconst view = require(\"../../html/sites/tutorialSite.html\");\n\nexport class TutorialSite extends MenuSite {\n private templateContainer: TemplateContainer;\n\n constructor(siteManager: any) {\n super(siteManager, view);\n }\n\n async onConstruct(constructParameters: any): Promise {\n const res = super.onConstruct(constructParameters);\n await Promise.race([new SyncJob().sync([LevelData]).catch(e => console.error(e)), new Promise(async resolve => {\n let levelData = await LevelData.findById(LevelSite.TUTORIAL.FIRST_LEVEL);\n if (levelData !== null) {\n resolve();\n }\n })]);\n return res;\n }\n\n async onViewLoaded(): Promise {\n const res = super.onViewLoaded();\n\n let leafSegmentTemplate = this.findBy(\"#segment-leaf-template\");\n let parentSegmentTemplate = this.findBy(\"#segment-parent-template\");\n let rowSegmentTemplate = this.findBy(\"#segment-row-template\");\n let triangleTemplate = this.findBy(\"#segment-triangle-template\");\n let columnTemplate = this.findBy(\"#segment-column-template\");\n\n leafSegmentTemplate.removeAttribute(\"id\");\n parentSegmentTemplate.removeAttribute(\"id\");\n rowSegmentTemplate.removeAttribute(\"id\");\n triangleTemplate.removeAttribute(\"id\");\n columnTemplate.removeAttribute(\"id\");\n\n leafSegmentTemplate.remove();\n parentSegmentTemplate.remove();\n rowSegmentTemplate.remove();\n triangleTemplate.remove();\n columnTemplate.remove();\n\n this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate, columnTemplate);\n\n const tutorial1Container = this.findBy(\"#tutorial-1 .level-container\");\n const tutorial2Container = this.findBy(\"#tutorial-2 .level-container\");\n const tutorial3Container = this.findBy(\"#tutorial-3 .level-container\");\n\n const level1 = await this.loadLevel(LevelSite.TUTORIAL.FIRST_LEVEL);\n const level2 = await this.loadLevel(LevelSite.TUTORIAL.SECOND_LEVEL);\n const level3 = await this.loadLevel(LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL);\n\n level1.setSaveAsCurrentAfterCheckWon(false);\n level2.setSaveAsCurrentAfterCheckWon(false);\n level3.setSaveAsCurrentAfterCheckWon(false);\n\n tutorial1Container.appendChild(level1.getRootSegment().getElement());\n tutorial2Container.appendChild(level2.getRootSegment().getElement());\n tutorial3Container.appendChild(level3.getRootSegment().getElement());\n\n let pointer = this.findBy(\"#tutorial-pointer\");\n pointer.remove();\n\n let rotatableSegments = level3.getRotatableSegments();\n let pointerSegment = rotatableSegments[2];\n pointerSegment.element.appendChild(pointer);\n\n this.find(\".help-action\").addEventListener(\"click\", () => {\n TutorialSite.help(level2);\n })\n\n return res;\n }\n\n static async help(level: Level) {\n let rotatables = level.getRotatableSegments();\n rotatables = rotatables.filter((segment) => {\n return (!segment.isSolved(false));\n });\n\n if (rotatables.length === 0){\n return;\n }\n\n let index = Math.floor(Math.random() * rotatables.length);\n\n let segmentToHelp = rotatables[index];\n while (segmentToHelp.rotation !== 0) {\n segmentToHelp.rotate();\n }\n segmentToHelp.setIsRotatable(false);\n }\n\n async loadLevel(id) {\n try {\n let levelData = await LevelData.findById(id);\n const level = LevelHelper.inflateLevel(levelData, this.templateContainer);\n\n level.getWonPromise().then(() => {\n console.log(\"level won!\");\n new Toast(\"you solved the tutorial level!\").show();\n //TODO\n // this.levelWon(level);\n });\n\n level.createSegments();\n level.getRootSegment()._updateElement();\n\n return level;\n } catch (e) {\n console.log(\"Fehler!\");\n console.error(e);\n // this.startEndSite();\n return null;\n }\n }\n}\n\nApp.addInitialization(app => {\n app.addDeepLink(\"tutorial\", TutorialSite);\n})\n","const view = require(\"../../html/sites/credits.html\");\nimport {App} from \"cordova-sites/dist/client/js/App\";\nimport {MenuSite} from \"cordova-sites/dist/client\";\n\nexport class CreditsSite extends MenuSite{\n constructor(siteManager) {\n super(siteManager, view);\n }\n}\n\nApp.addInitialization(app => {\n app.addDeepLink(\"credits\", CreditsSite);\n});\n","const view = require(\"../../html/sites/privacyPolicy.html\");\nimport {App} from \"cordova-sites/dist/client/js/App\";\nimport {Matomo} from \"cordova-sites/dist/client/js/Legacy/Matomo\";\nimport {MenuSite} from \"cordova-sites/dist/client\";\n\nexport class PrivacyPolicySite extends MenuSite {\n constructor(siteManager) {\n super(siteManager,view);\n }\n\n async onViewLoaded() {\n let trackSwitch =this.findBy(\"#track-switch\");\n\n trackSwitch.addEventListener(\"change\", function (e) {\n Matomo.setTrack(this.checked === true);\n e.stopPropagation();\n e.preventDefault();\n });\n return super.onViewLoaded();\n }\n\n async onStart(args) {\n let trackSwitch =this.findBy(\"#track-switch\");\n trackSwitch.checked = ((await Matomo.getTrackingPromise()) === \"1\");\n\n // Matomo.update(\"Privacy Policy Sites\");\n return super.onStart(args);\n }\n}\n\nApp.addInitialization(app => {\n app.addDeepLink(\"privacyPolicy\", PrivacyPolicySite);\n});\n","const view = require(\"../../html/sites/impressum.html\");\nimport {App} from \"cordova-sites/dist/client/js/App\";\nimport {MenuSite} from \"cordova-sites/dist/client\";\n\nexport class ImpressumSite extends MenuSite{\n constructor(siteManager) {\n super(siteManager, view);\n }\n}\n\nApp.addInitialization(app => {\n app.addDeepLink(\"impressum\", ImpressumSite);\n});\n","const view = require(\"../../html/sites/contactSite.html\");\n\nimport {App} from \"cordova-sites/dist/client/js/App\";\nimport {Form} from \"cordova-sites/dist/client/js/Form\";\nimport {DataManager} from \"cordova-sites/dist/client/js/DataManager\";\nimport {Toast} from \"cordova-sites/dist/client/js/Toast/Toast\";\nimport {Translator} from \"cordova-sites/dist/client/js/Translator\";\nimport {MenuSite} from \"cordova-sites/dist/client/js/Context/MenuSite\";\n\nexport class ContactSite extends MenuSite {\n constructor(siteManager) {\n super(siteManager, view);\n }\n\n onViewLoaded() {\n let res = super.onViewLoaded();\n\n // @ts-ignore\n this.findBy(\"#contactText\").appendChild(Translator.makePersistentTranslation(\"contact text\", [__CONTACT_EMAIL__]))\n\n new Form(this.findBy(\"#contact-form\"), async values => {\n\n let result = await DataManager.send(\"contact\", values);\n if (result.success) {\n new Toast(\"the message was sent\").show();\n this.finish();\n } else {\n if (result) {\n new Toast(result.message).show();\n } else {\n new Toast(\"Es ist ein Fehler aufgetreten...\").show();\n }\n }\n });\n\n return res;\n }\n}\n\nApp.addInitialization((app) => {\n app.addDeepLink(\"contact\", ContactSite);\n});\n","import {TutorialSite} from \"../Sites/TutorialSite\";\n\nconst view = require(\"../../html/fragment/settings.html\");\n\nimport {CreditsSite} from \"../Sites/CreditsSite\";\nimport {PrivacyPolicySite} from \"../Sites/PrivacyPolicySite\";\nimport {ImpressumSite} from \"../Sites/ImpressumSite\";\nimport {NativeStoragePromise} from \"cordova-sites/dist/client/js/NativeStoragePromise\";\nimport {AbstractFragment} from \"cordova-sites/dist/client/js/Context/AbstractFragment\";\nimport {LevelData} from \"../../../shared/model/LevelData\";\nimport {LastSyncDates} from \"cordova-sites-easy-sync/dist/client/LastSyncDates\";\nimport {SoundManager} from \"cordova-sites/dist/client/js/Sound/SoundManager\";\nimport {Matomo} from \"cordova-sites/dist/client/js/Legacy/Matomo\";\nimport {LevelPlayed} from \"../model/LevelPlayed\";\nimport {ContactSite} from \"../Sites/ContactSite\";\n\nexport class WordRotatorSettingFragment extends AbstractFragment {\n constructor(site) {\n super(site, view);\n }\n\n async onViewLoaded() {\n let res = super.onViewLoaded();\n\n this.findBy(\"#reset-levels\").addEventListener(\"click\", async () => {\n await NativeStoragePromise.remove(\"currentLevel\");\n await NativeStoragePromise.remove(\"levelCounter\");\n await NativeStoragePromise.remove(\"tutorial-step\");\n\n await LevelPlayed.clear();\n await LevelData.clear();\n await LastSyncDates.clear();\n });\n\n if (location.hostname.includes(\"beta\") || location.hostname.includes(\"127.0.0.1\") || location.hostname.includes(\"localhost\")) {\n // this.findBy(\"#reset-levels\").classList.remove(\"hidden\");\n }\n\n let playMusicButton = this.findBy(\"#play-music\");\n playMusicButton.checked = (await NativeStoragePromise.getItem(\"play-music\", \"1\") === \"1\")\n playMusicButton.addEventListener(\"change\", async () => {\n await NativeStoragePromise.setItem(\"play-music\", (playMusicButton.checked) ? \"1\" : \"0\");\n let soundManager = SoundManager.getInstance();\n soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC);\n if (playMusicButton.checked) {\n await soundManager.play(SoundManager.CHANNELS.MUSIC);\n }\n\n //TODO [MIG] Matomo\n Matomo.push([\"trackEvent\", \"MainMenu\", \"PlayMusic\", \"Play Music\", (playMusicButton.checked) ? 1 : 0]);\n });\n\n let playSoundButton = this.findBy(\"#play-sound\");\n playSoundButton.checked = (await NativeStoragePromise.getItem(\"play-sound\", \"1\") === \"1\");\n playSoundButton.addEventListener(\"change\", async () => {\n await NativeStoragePromise.setItem(\"play-sound\", (playSoundButton.checked) ? \"1\" : \"0\");\n let soundManager = SoundManager.getInstance();\n soundManager.set({muted: !playSoundButton.checked}, SoundManager.CHANNELS.SOUND);\n\n //TODO [MIG] Matomo\n Matomo.push([\"trackEvent\", \"MainMenu\", \"PlaySound\", \"Play Sound\", (playSoundButton.checked) ? 1 : 0]);\n });\n\n this.findBy(\"#track-switch\").addEventListener(\"change\", function (e) {\n Matomo.setTrack(this.checked === true);\n e.stopPropagation();\n e.preventDefault();\n });\n\n this.findBy(\"#tutorial-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(TutorialSite);\n });\n this.findBy(\"#credits-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(CreditsSite);\n });\n this.findBy(\"#privacy-policy-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(PrivacyPolicySite);\n });\n this.findBy(\"#contact-button\").addEventListener(\"click\", () => {\n // new Toast(\"contact site\").show();\n this.getSite().startSite(ContactSite);\n });\n this.findBy(\"#impressum-button\").addEventListener(\"click\", () => {\n this.getSite().startSite(ImpressumSite);\n });\n // @ts-ignore\n this.findBy(\"#version-info\").innerText = __VERSION__;\n\n return res;\n }\n\n onStart(args) {\n Matomo.update(\"Settings Sites\");\n return super.onStart(args);\n }\n}\n","const view = require(\"../../html/sites/settingsSite.html\");\nimport {MenuSite} from \"cordova-sites/dist/client/js/Context/MenuSite\";\nimport {WordRotatorSettingFragment} from \"../Fragment/WordRotatorSettingFragment\";\nimport {App} from \"cordova-sites/dist/client/js/App\";\n\nexport class SettingsSite extends MenuSite {\n\n constructor(siteManager) {\n super(siteManager, view);\n this.addFragment(\"#wordRotatorSettings\", new WordRotatorSettingFragment(this));\n }\n}\n\nApp.addInitialization((app) => {\n app.addDeepLink(\"settings\", SettingsSite);\n});\n","const settingsIcon = require(\"../../img/settings.png\").default;\nconst view = require(\"../../html/sites/menu.html\");\n\nimport {App, Toast, DataManager, ScaleHelper, MenuSite} from \"cordova-sites/dist/client\";\nimport {Helper} from \"js-helper/dist/shared\";\nimport {LevelSite} from \"./LevelSite\";\nimport {TemplateContainer} from \"../wordrotator/Segment/TemplateContainer\";\nimport {MainMenuLevel} from \"../wordrotator/Level/MainMenuLevel\";\nimport {NativeStoragePromise} from \"cordova-sites/dist/client\";\nimport {ViewHelper} from \"js-helper/dist/client/ViewHelper\";\nimport {LevelPlayed} from \"../model/LevelPlayed\";\nimport {SyncJob} from \"cordova-sites-easy-sync/dist/client/SyncJob\";\nimport {LevelData} from \"../../../shared/model/LevelData\";\nimport {ShareManager} from \"cordova-sites/dist/client/js/ShareManager/ShareManager\";\nimport {Translator} from \"cordova-sites/dist/client/js/Translator\";\nimport {SoundManager} from \"cordova-sites/dist/client/js/Sound/SoundManager\";\nimport {Matomo} from \"cordova-sites/dist/client/js/Legacy/Matomo\";\nimport {MenuAction} from \"cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction\";\nimport {SettingsSite} from \"./SettingsSite\";\n\nexport class MainMenuSite extends MenuSite {\n static app: App;\n\n private loadLevelPromise: Promise;\n private listener: () => void;\n private templateContainer: TemplateContainer;\n private randomRotateTimeout;\n\n constructor(siteManager) {\n super(siteManager, view);\n this.loadLevelPromise = new SyncJob().sync([LevelData]).catch(e => console.error(e));\n this.listener = null;\n this.getNavbarFragment().setCanGoBack(false);\n }\n\n onCreateMenu(navbar) {\n super.onCreateMenu(navbar);\n let settingsAction = new MenuAction(\"\", () => {\n this.startSite(SettingsSite);\n }, MenuAction.SHOW_ALWAYS, null, settingsIcon);\n navbar.addAction(settingsAction);\n return navbar;\n }\n\n async onViewLoaded() {\n const res = super.onViewLoaded();\n\n let playButton = this.findBy(\"#play-button\");\n playButton.addEventListener(\"click\", () => {\n // Matomo.push([\"trackEvent\", \"MainMenu\", \"startButton\"]);\n this.startLevelSite();\n });\n\n let leafSegmentTemplate = this.findBy(\"#segment-leaf-template\");\n let parentSegmentTemplate = this.findBy(\"#segment-parent-template\");\n let rowSegmentTemplate = this.findBy(\"#segment-row-template\");\n let triangleTemplate = this.findBy(\"#segment-triangle-template\");\n\n leafSegmentTemplate.id = null;\n parentSegmentTemplate.id = null;\n rowSegmentTemplate.id = null;\n triangleTemplate.id = null;\n\n leafSegmentTemplate.remove();\n parentSegmentTemplate.remove();\n rowSegmentTemplate.remove();\n triangleTemplate.remove();\n\n this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate);\n\n //TODO?\n // if (Helper.nonNull(MainMenuSite.app._cookieClosePromise)) {\n // MainMenuSite.app._cookieClosePromise.then(() => {\n // if (this.listener) {\n // this.listener();\n // }\n // });\n // }\n\n let soundManager = SoundManager.getInstance();\n\n let playMusicButton = this.findBy(\"#play-music\");\n playMusicButton.checked = (await NativeStoragePromise.getItem(\"play-music\", \"1\") === \"1\");\n playMusicButton.addEventListener(\"change\", async () => {\n await NativeStoragePromise.setItem(\"play-music\", (playMusicButton.checked) ? \"1\" : \"0\");\n soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC);\n if (playMusicButton.checked) {\n await soundManager.play(SoundManager.CHANNELS.MUSIC);\n }\n\n //TODO [MIG] Matomo\n Matomo.push([\"trackEvent\", \"MainMenu\", \"PlayMusic\", \"Play Music\", (playMusicButton.checked) ? 1 : 0]);\n });\n\n let playSoundButton = this.findBy(\"#play-sound\");\n playSoundButton.checked = (await NativeStoragePromise.getItem(\"play-sound\", \"1\") === \"1\");\n playSoundButton.addEventListener(\"change\", async () => {\n await NativeStoragePromise.setItem(\"play-sound\", (playSoundButton.checked) ? \"1\" : \"0\");\n soundManager.set({muted: !playSoundButton.checked}, SoundManager.CHANNELS.SOUND);\n\n //TODO [MIG] Matomo\n Matomo.push([\"trackEvent\", \"MainMenu\", \"PlaySound\", \"Play Sound\", (playSoundButton.checked) ? 1 : 0]);\n });\n\n this.findBy(\"#share-button\").addEventListener(\"click\", () => {\n new ShareManager().share(Translator.getInstance().translate(\"share-text\", [window.location]));\n });\n return res;\n // this.findBy(\"#share-buttons\").appendChild(ShareManager.generateDefaultShareElement(\"https://wordrotator.silas.link\"));\n }\n\n async onStart(args) {\n // Matomo.update(\"Menu Sites\");\n let res = super.onStart(args);\n\n let level = new MainMenuLevel(this.templateContainer);\n level.setWords([\"WORD\", \"ROTA\", \"TORW\", \"ORDR\"]);\n level.createSegments();\n\n level.getWonPromise().then(() => {\n // Matomo.push([\"trackEvent\", \"MainMenu\", \"levelSolved\"]);\n this.startLevelSite();\n });\n\n let segment = level.getRootSegment();\n segment._updateElement();\n\n let levelSegment = this.findBy(\"#level\");\n ViewHelper.removeAllChildren(levelSegment).appendChild(segment.getElement());\n\n let rotationsSegments = level.getRotatableSegments();\n\n let randomRotationFunction = () => {\n let timeout = Math.random() * 4500 + 1500;\n this.randomRotateTimeout = setTimeout(() => {\n let indexBlocked = -1;\n let indexesNotRight = [];\n for (let i = 0; i < rotationsSegments.length; i++) {\n if (rotationsSegments[i].rotation !== 0) {\n indexesNotRight.push(i);\n if (indexesNotRight.length >= 2) {\n break;\n }\n }\n }\n if (indexesNotRight.length === 1) {\n indexBlocked = indexesNotRight[0];\n }\n\n let index = Math.floor(Math.random() * rotationsSegments.length);\n if (index === indexBlocked) {\n index = (index + 1) % rotationsSegments.length;\n }\n\n rotationsSegments[index].rotate();\n randomRotationFunction();\n }, timeout);\n };\n randomRotationFunction();\n\n this.listener = async () => {\n let playButton = this.findBy(\"#play-button\");\n let levelNumber = this.findBy(\"#level-number\");\n levelNumber.innerText = Helper.nonNull(await NativeStoragePromise.getItem(\"levelCounter\"), 1);\n\n let levelSegment = this.findBy(\"#level\");\n\n let scaleHelper = new ScaleHelper();\n await scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, 8, null, false);\n\n let levelStyle = getComputedStyle(levelSegment);\n playButton.style.width = levelStyle.getPropertyValue(\"width\");\n scaleHelper.scaleTo(0.65, playButton.children[0], playButton, null, null, null, 4, null, false);\n\n await scaleHelper.scaleTo(0.1, levelNumber.parentElement, levelNumber.parentElement.parentElement, null, null, null, 10, null, false);\n scaleHelper.scaleTo(1, levelNumber, levelNumber.parentElement, false, false, 5, null, null, false);\n };\n\n // this.listener();\n window.addEventListener(\"resize\", this.listener);\n setTimeout(this.listener, 50);\n\n //Musikbuttons update, falls in den Einstellungen umgestellt\n // let settingsManager = SettingsManager.getInstance();\n let playSoundButton = this.findBy(\"#play-sound\");\n playSoundButton.checked = (await NativeStoragePromise.getItem(\"play-sound\", \"1\") === \"1\");\n let playMusicButton = this.findBy(\"#play-music\");\n playMusicButton.checked = (await NativeStoragePromise.getItem(\"play-music\", \"1\") === \"1\");\n\n return res;\n }\n\n async startLevelSite() {\n SoundManager.getInstance().resumeContext();\n\n this.startSite(LevelSite, Promise.race([this.loadLevelPromise, new Promise(async resolve => {\n let levelData = await LevelPlayed.getNextLevelData(LevelSite.RENDERER_TYPES);\n if (levelData !== null) {\n resolve();\n }\n })]));\n }\n\n onPause() {\n clearTimeout(this.randomRotateTimeout);\n window.removeEventListener(\"resize\", this.listener);\n return super.onPause();\n }\n\n // async loadLevels() {\n // try {\n // const db = await WordRotatorDb.getInstance();\n // const dateLastSync = Helper.nonNull(await db.loadDateLastSync(), 0);\n // // const dateLastSync = Helper.nonNull(localStorage.getItem(\"date-last-sync\"), 0);\n //\n // // let numberLevels = db.countLevels();\n // let newLastSync = null;\n // let maxRuns = 1;\n // let levelPromises = [];\n // for (let run = 0; run < maxRuns; run++) {\n // let res = await DataManager.load(\"wordRotator/levels\" + DataManager.buildQuery({\n // \"currentRun\": run,\n // \"dateLastSync\": dateLastSync\n // }));\n // if (!res[\"success\"]) {\n // if (await db.loadNextLevel(LevelSite.RENDERER_TYPES) === null) {\n // new Toast(\"sync-error\", 6000).show();\n // }\n // newLastSync = null;\n // break;\n // }\n // res = res[\"result\"];\n // newLastSync = Helper.nonNull(newLastSync, res[\"currentSyncDate\"]);\n // maxRuns = res[\"maxRuns\"];\n //\n // let levels = res[\"levels\"];\n // for (let i = 0; i < levels.length; i++) {\n // let currentLevel = levels[i];\n // levelPromises.push(db.loadLevel(levels[i][\"id\"]).then(level => {\n // currentLevel[\"played\"] = (Helper.nonNull(Helper.nonNull(level, {}).played, false));\n // return currentLevel;\n // }));\n // }\n // }\n // let levels = await Promise.all(levelPromises);\n // await db.saveManyLevels(levels);\n //\n // if (newLastSync != null && newLastSync !== \"null\") {\n // await NativeStoragePromise.setItem(\"date-last-sync\", newLastSync);\n // db.saveDateLastSync(newLastSync);\n // }\n // }\n // catch(e){\n // // if (await db.loadNextLevel(LevelSite.RENDERER_TYPES) === null) {\n // new Toast(\"sync-error\", 6000);\n // // }\n // console.error(e);\n // }\n // }\n}\n\nApp.addInitialization(app => {\n MainMenuSite.app = app;\n});\n","import {MigrationInterface, QueryRunner, Table} from \"typeorm\";\nimport {MigrationHelper} from \"js-helper/dist/shared\";\nimport {LevelPlayed} from \"../LevelPlayed\";\n\nexport class ClientSetup1000000002001 implements MigrationInterface {\n\n async up(queryRunner: QueryRunner): Promise {\n await MigrationHelper.addTableFromModelClass(LevelPlayed, queryRunner);\n }\n\n down(queryRunner: QueryRunner): Promise {\n return undefined;\n }\n}","export default \"img/brightAndBeautifull__.mp3\";","import translationGerman from '../translations/de.json';\nimport translationEn from '../translations/en.json';\nimport {App, Translator, DataManager, Toast} from \"cordova-sites/dist/client\";\n\nimport \"cordova-sites-user-management/dist/client/js/translationInit\"\nimport \"cordova-sites/dist/client/js/translationInit\"\n\nimport {LoginSite, RegistrationSite, UserManager} from \"cordova-sites-user-management/dist/client\";\n\nimport {BaseDatabase} from \"cordova-sites-database/dist/cordova-sites-database\";\nimport {DeleteUserManagement1000000000000} from \"cordova-sites-user-management/dist/shared//migrations/DeleteUserManagement\";\nimport {SetupUserManagement1000000001000} from \"cordova-sites-user-management/dist/shared/migrations/SetupUserManagement\";\nimport {Setup1000000002000} from \"../../shared/model/migration/shared/Setup\";\nimport {SetupEasySync1000000000500} from \"cordova-sites-easy-sync/dist/client\";\nimport {MainMenuSite} from \"./Sites/MainMenuSite\";\nimport {ClientSetup1000000002001} from \"./model/migration/ClientSetup\";\nimport {EasySyncClientDb} from \"cordova-sites-easy-sync/dist/client/EasySyncClientDb\";\nimport {NavbarFragment} from \"cordova-sites/dist/client/js/Context/Menu/NavbarFragment\";\nimport {NativeStoragePromise} from \"cordova-sites/dist/client/js/NativeStoragePromise\";\n\nimport music from \"../sound/brightAndBeautifull__.mp3\";\nimport {SoundManager} from \"cordova-sites/dist/client/js/Sound/SoundManager\";\n\nwindow[\"JSObject\"] = Object;\n\n//Disable Google Analytics for VideoJS\nwindow[\"HELP_IMPROVE_VIDEOJS\"] = false;\n\nLoginSite.ADD_LOGIN_ACTION = false;\nRegistrationSite.ADD_REGISTRATION_ACTION = false;\n\nApp.addInitialization(async () => {\n Translator.init({\n translations: {\n \"de\": translationGerman,\n \"en\": translationEn\n },\n fallbackLanguage: \"de\",\n // markTranslations: true,\n markUntranslatedTranslations: true,\n });\n\n //Setting Title\n NavbarFragment.title = \"WordRotator\";\n\n let soundManager = SoundManager.getInstance();\n soundManager.play(SoundManager.CHANNELS.MUSIC, {\n audio: music,\n loop: true,\n volume: 0.6,\n muted: (await NativeStoragePromise.getItem(\"play-music\", \"1\") !== \"1\")\n }).catch(e => console.error(e));\n\n await UserManager.getInstance().getMe().catch(e => console.error(e));\n\n UserManager.getInstance().addLoginChangeCallback(async (isLoggedIn) => {\n if (isLoggedIn) {\n // await new SyncJob().sync([UserManager.syncParamFor(Definition), UserManager.syncParamFor(ExerciseProgress), UserManager.syncParamFor(WrongAnswer)]).catch(e => console.error(e));\n }\n });\n});\n\nDataManager._basePath = __HOST_ADDRESS__;\nDataManager.onlineCallback = isOnline => {\n if (!isOnline){\n new Toast(\"not online!\").show();\n }\n};\n\nObject.assign(BaseDatabase.CONNECTION_OPTIONS, {\n logging: [\"error\",],\n synchronize: false,\n migrationsRun: true,\n migrations: [\n DeleteUserManagement1000000000000,\n SetupEasySync1000000000500,\n SetupUserManagement1000000001000,\n Setup1000000002000,\n ClientSetup1000000002001,\n ]\n});\n\nlet app = new App();\napp.start(MainMenuSite).catch(e => console.error(e)).then(async () => {\n window[\"queryDb\"] = async (sql) => {\n // SELECT name FROM my_db.sqlite_master WHERE type='table';\n\n\n // console.log(\"DB\", EasySyncClientDb.getInstance());\n let res = await EasySyncClientDb.getInstance().rawQuery(sql);\n console.log(res);\n return res;\n }\n});\napp.ready(() => {\n console.log(\"initialisation over\", new Date());\n\n if (device.platform === \"browser\"){\n // Check that service workers are supported\n if ('serviceWorker' in navigator) {\n // Use the window load event to keep the page load performant\n window.addEventListener('load', () => {\n navigator.serviceWorker.register('service-worker.js');\n });\n }\n }\n\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/server/public/config.xml b/src/server/public/config.xml index 0b0dab0..2d0962b 100644 --- a/src/server/public/config.xml +++ b/src/server/public/config.xml @@ -1,5 +1,5 @@ - + WordRotator A word-game @@ -10,6 +10,7 @@ + diff --git a/src/server/public/cordova_plugins.js b/src/server/public/cordova_plugins.js index 884c418..66b5b30 100644 --- a/src/server/public/cordova_plugins.js +++ b/src/server/public/cordova_plugins.js @@ -18,14 +18,6 @@ module.exports = [ "id": "cordova-plugin-nativestorage.NativeStorageError", "pluginId": "cordova-plugin-nativestorage" }, - { - "file": "plugins/cordova-plugin-keyboard/www/keyboard.js", - "id": "cordova-plugin-keyboard.keyboard", - "pluginId": "cordova-plugin-keyboard", - "clobbers": [ - "window.Keyboard" - ] - }, { "file": "plugins/cordova-plugin-tts/www/tts.js", "id": "cordova-plugin-tts.tts", @@ -34,6 +26,14 @@ module.exports = [ "TTS" ] }, + { + "file": "plugins/nl.madebymark.share/www/share.js", + "id": "nl.madebymark.share.Share", + "pluginId": "nl.madebymark.share", + "clobbers": [ + "window.navigator.share" + ] + }, { "file": "plugins/cordova-plugin-device/www/device.js", "id": "cordova-plugin-device.device", @@ -246,102 +246,19 @@ module.exports = [ "id": "cordova-sqlite-storage.SQLiteProxy", "pluginId": "cordova-sqlite-storage", "runs": true - }, - { - "file": "plugins/cordova-plugin-statusbar/www/statusbar.js", - "id": "cordova-plugin-statusbar.statusbar", - "pluginId": "cordova-plugin-statusbar", - "clobbers": [ - "window.StatusBar" - ] - }, - { - "file": "plugins/cordova-plugin-statusbar/src/browser/StatusBarProxy.js", - "id": "cordova-plugin-statusbar.StatusBarProxy", - "pluginId": "cordova-plugin-statusbar", - "runs": true - }, - { - "file": "plugins/cordova-plugin-calendar/www/Calendar.js", - "id": "cordova-plugin-calendar.Calendar", - "pluginId": "cordova-plugin-calendar", - "clobbers": [ - "Calendar" - ] - }, - { - "file": "plugins/cordova-plugin-badge/www/badge.js", - "id": "cordova-plugin-badge.Badge", - "pluginId": "cordova-plugin-badge", - "clobbers": [ - "cordova.plugins.notification.badge" - ] - }, - { - "file": "plugins/cordova-plugin-badge/src/browser/favico.min.js", - "id": "cordova-plugin-badge.Badge.Favico", - "pluginId": "cordova-plugin-badge", - "clobbers": [ - "cordova.plugins.notification.badge.Favico" - ] - }, - { - "file": "plugins/cordova-plugin-badge/src/browser/BadgeProxy.js", - "id": "cordova-plugin-badge.Badge.Proxy", - "pluginId": "cordova-plugin-badge", - "runs": true - }, - { - "file": "plugins/cordova-plugin-local-notification/www/local-notification.js", - "id": "cordova-plugin-local-notification.LocalNotification", - "pluginId": "cordova-plugin-local-notification", - "clobbers": [ - "cordova.plugins.notification.local" - ] - }, - { - "file": "plugins/cordova-plugin-local-notification/www/local-notification-core.js", - "id": "cordova-plugin-local-notification.LocalNotification.Core", - "pluginId": "cordova-plugin-local-notification", - "clobbers": [ - "cordova.plugins.notification.local.core", - "plugin.notification.local.core" - ] - }, - { - "file": "plugins/cordova-plugin-local-notification/www/local-notification-util.js", - "id": "cordova-plugin-local-notification.LocalNotification.Util", - "pluginId": "cordova-plugin-local-notification", - "merges": [ - "cordova.plugins.notification.local.core", - "plugin.notification.local.core" - ] - }, - { - "file": "plugins/cordova-plugin-background-fetch/www/BackgroundFetch.js", - "id": "cordova-plugin-background-fetch.BackgroundFetch", - "pluginId": "cordova-plugin-background-fetch", - "clobbers": [ - "window.BackgroundFetch" - ] } ]; module.exports.metadata = // TOP OF METADATA { - "cordova-plugin-whitelist": "1.3.4", + "cordova-plugin-webpack": "1.0.5", "cordova-plugin-nativestorage": "2.3.2", - "cordova-plugin-keyboard": "1.2.0", "cordova-plugin-tts": "0.2.3", + "nl.madebymark.share": "0.1.1", "cordova-plugin-device": "2.0.3", "cordova-plugin-file": "6.0.2", - "cordova-sqlite-storage": "5.1.0", - "cordova-plugin-statusbar": "2.4.3", - "cordova-plugin-calendar": "5.1.5", - "cordova-plugin-badge": "0.8.8", - "cordova-plugin-local-notification": "0.9.0-beta.2", - "cordova-plugin-background-fetch": "6.1.1", - "cordova-plugin-wkwebview-file-xhr": "3.0.0" + "cordova-sqlite-storage": "6.0.0", + "cordova-plugin-whitelist": "1.3.4" } // BOTTOM OF METADATA }); \ No newline at end of file diff --git a/src/server/public/html/abstractWindowTemplate.html b/src/server/public/html/abstractWindowTemplate.html index 4ec2b0f..ac633f8 100644 --- a/src/server/public/html/abstractWindowTemplate.html +++ b/src/server/public/html/abstractWindowTemplate.html @@ -1,24 +1 @@ -
-
-   -   -   -
- -
-
 
-
-

 

-
- -
-
-
 
-
- -
-
 
-
 
-
 
-
-
\ No newline at end of file +
     
 

 

 
 
 
 
\ No newline at end of file diff --git a/src/server/public/html/alphabeticListFragment.html b/src/server/public/html/alphabeticListFragment.html index c3e369e..6c2b4d7 100644 --- a/src/server/public/html/alphabeticListFragment.html +++ b/src/server/public/html/alphabeticListFragment.html @@ -1,59 +1 @@ -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - -
+
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
\ No newline at end of file diff --git a/src/server/public/html/changeUserSite.html b/src/server/public/html/changeUserSite.html index 12e734d..67c8ad4 100644 --- a/src/server/public/html/changeUserSite.html +++ b/src/server/public/html/changeUserSite.html @@ -1,17 +1 @@ -
-

-
-
-
- - -
-
-
-
- - -
-
-
-
\ No newline at end of file +

\ No newline at end of file diff --git a/src/server/public/html/chooseDialog.html b/src/server/public/html/chooseDialog.html index eb35c57..6aac77b 100644 --- a/src/server/public/html/chooseDialog.html +++ b/src/server/public/html/chooseDialog.html @@ -1,7 +1 @@ -
-
-
-
-
-
-
\ No newline at end of file +
\ No newline at end of file diff --git a/src/server/public/html/contactSite.html b/src/server/public/html/contactSite.html index bff7a6e..3ef130c 100644 --- a/src/server/public/html/contactSite.html +++ b/src/server/public/html/contactSite.html @@ -1,21 +1 @@ -

contact

-

-

-
- privacy-policy - privacy policy accepted - - - - - -
\ No newline at end of file +

contact

\ No newline at end of file diff --git a/src/server/public/html/container.html b/src/server/public/html/container.html index 7ab127b..690a275 100644 --- a/src/server/public/html/container.html +++ b/src/server/public/html/container.html @@ -1,7 +1 @@ -
-
- - - -
-
\ No newline at end of file +
\ No newline at end of file diff --git a/src/server/public/html/credits.html b/src/server/public/html/credits.html index 55fe2ab..1e8ee48 100644 --- a/src/server/public/html/credits.html +++ b/src/server/public/html/credits.html @@ -1,5 +1 @@ -
-

-

-

-
+

\ No newline at end of file diff --git a/src/server/public/html/end.html b/src/server/public/html/end.html index 75e1b38..8e3b4a5 100644 --- a/src/server/public/html/end.html +++ b/src/server/public/html/end.html @@ -1,3 +1 @@ -
-
-
\ No newline at end of file +
\ No newline at end of file diff --git a/src/server/public/html/forgotPasswordSite.html b/src/server/public/html/forgotPasswordSite.html index 72b6c37..6161311 100644 --- a/src/server/public/html/forgotPasswordSite.html +++ b/src/server/public/html/forgotPasswordSite.html @@ -1,26 +1 @@ -
-
-

password forgotten

-
- - -
-
- -
\ No newline at end of file +

password forgotten

\ No newline at end of file diff --git a/src/server/public/html/impressum.html b/src/server/public/html/impressum.html index 8741fb0..a1ba594 100644 --- a/src/server/public/html/impressum.html +++ b/src/server/public/html/impressum.html @@ -1,11 +1 @@ -
-

Impressum

-

Silas Günther
- Mariabrunnstraße 48
- 52064 Aachen
- Deutschland -

-

E-Mail: wordRotator@silas.link
- Kontaktformular -

-
+

Impressum

Silas Günther
Mariabrunnstraße 48
52064 Aachen
Deutschland

E-Mail: wordRotator@silas.link
Kontaktformular

\ No newline at end of file diff --git a/src/server/public/html/level.html b/src/server/public/html/level.html index 9a9fb59..470bac9 100644 --- a/src/server/public/html/level.html +++ b/src/server/public/html/level.html @@ -1,54 +1 @@ -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
- -
- - - - - - -
-
- -
-
-
- -
-
-
-
-
-
-
-
- -
-
- -
- -
\ No newline at end of file +
\ No newline at end of file diff --git a/src/server/public/html/loginSite.html b/src/server/public/html/loginSite.html index 64c49a7..c00c76c 100644 --- a/src/server/public/html/loginSite.html +++ b/src/server/public/html/loginSite.html @@ -1,21 +1 @@ -
-
-

Login

-
- - - - -
- -
-
\ No newline at end of file +

Login

\ No newline at end of file diff --git a/src/server/public/html/menu.html b/src/server/public/html/menu.html index 48be5eb..23d905f 100644 --- a/src/server/public/html/menu.html +++ b/src/server/public/html/menu.html @@ -1,39 +1 @@ -
- - -
-
-
-
-
-
-
-
-
-
-
-
- -
-
- - 1 - -
-
- -
- -
- -
-
-
\ No newline at end of file +
1
\ No newline at end of file diff --git a/src/server/public/html/menuSite.html b/src/server/public/html/menuSite.html index fda9d00..b1bc221 100644 --- a/src/server/public/html/menuSite.html +++ b/src/server/public/html/menuSite.html @@ -1,12 +1 @@ - -
- -
-
- - - -
-
-
- \ No newline at end of file +
\ No newline at end of file diff --git a/src/server/public/html/navbar.html b/src/server/public/html/navbar.html index 31258cf..6643a2d 100644 --- a/src/server/public/html/navbar.html +++ b/src/server/public/html/navbar.html @@ -1,37 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/server/public/html/notAllowedSite.html b/src/server/public/html/notAllowedSite.html index 870d3df..1de870d 100644 --- a/src/server/public/html/notAllowedSite.html +++ b/src/server/public/html/notAllowedSite.html @@ -1,9 +1 @@ -
-
-
-
-
- -

Not allowed

-

You don't have the rights to do this!

-

If you are not logged in, please log in and try again.

\ No newline at end of file +




Not allowed

You don't have the rights to do this!

If you are not logged in, please log in and try again.

\ No newline at end of file diff --git a/src/server/public/html/privacyPolicy.html b/src/server/public/html/privacyPolicy.html index bb10707..701d2eb 100644 --- a/src/server/public/html/privacyPolicy.html +++ b/src/server/public/html/privacyPolicy.html @@ -1,233 +1 @@ -
-

Datenschutzerklärung

-

-

Diese Datenschutzerklärung klärt Sie über die Art, den Umfang und Zweck der Verarbeitung von personenbezogenen - Daten (nachfolgend kurz „Daten“) im Rahmen der Erbringung unserer Leistungen sowie innerhalb unseres - Onlineangebotes und der mit ihm verbundenen Webseiten, Funktionen und Inhalte sowie externen Onlinepräsenzen - (nachfolgend gemeinsam bezeichnet als „Onlineangebot“). Im Hinblick auf - die verwendeten Begrifflichkeiten, wie z.B. „Verarbeitung“ oder „Verantwortlicher“ verweisen wir auf die - Definitionen im Art. 4 der Datenschutzgrundverordnung (DSGVO).
-
-

-

Verantwortlicher

-

Silas Günther
-Mariabrunnstraße 48
-52064 Aachen
-Deutschland
-
-E-Mailadresse: wordRotator@silas.link
- Link zum Impressum: https://wordrotator.silas.link/impressum

-

Arten der verarbeiteten Daten

-

- - Bestandsdaten (z.B., Personen-Stammdaten, Namen oder Adressen).
- - Kontaktdaten (z.B., E-Mail, Telefonnummern).
- - Nutzungsdaten (z.B., besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).
- - Meta-/Kommunikationsdaten (z.B., Geräte-Informationen, Anonymisierte IP-Adressen).

-

Kategorien betroffener Personen

-

Besucher und Nutzer des Onlineangebotes (Nachfolgend bezeichnen wir die betroffenen Personen zusammenfassend auch - als „Nutzer“).
-

-

Zweck der Verarbeitung

-

- Zurverfügungstellung des Onlineangebotes, seiner Funktionen und Inhalte.
- - Beantwortung von Kontaktanfragen und Kommunikation mit Nutzern.
- - Sicherheitsmaßnahmen.
- - Reichweitenmessung/Marketing
-

-

Verwendete Begrifflichkeiten

-

„Personenbezogene Daten“ sind alle Informationen, die sich auf eine identifizierte oder identifizierbare - natürliche Person (im Folgenden „betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person - angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer - Kennnummer, zu Standortdaten, zu einer Online-Kennung (z.B. Cookie) oder zu einem oder mehreren besonderen - Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, - wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.
-
- „Verarbeitung“ ist jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführte Vorgang oder jede solche - Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Der Begriff reicht weit und umfasst praktisch jeden - Umgang mit Daten.
-
- „Pseudonymisierung“ die Verarbeitung personenbezogener Daten in einer Weise, dass die personenbezogenen Daten - ohne Hinzuziehung zusätzlicher Informationen nicht mehr einer spezifischen betroffenen Person zugeordnet werden - können, sofern diese zusätzlichen Informationen gesondert aufbewahrt werden und technischen und - organisatorischen Maßnahmen unterliegen, die gewährleisten, dass die personenbezogenen Daten nicht einer - identifizierten oder identifizierbaren natürlichen Person zugewiesen werden.
-
- „Profiling“ jede Art der automatisierten Verarbeitung personenbezogener Daten, die darin besteht, dass diese - personenbezogenen Daten verwendet werden, um bestimmte persönliche Aspekte, die sich auf eine natürliche Person - beziehen, zu bewerten, insbesondere um Aspekte bezüglich Arbeitsleistung, wirtschaftliche Lage, Gesundheit, - persönliche Vorlieben, Interessen, Zuverlässigkeit, Verhalten, Aufenthaltsort oder Ortswechsel dieser - natürlichen Person zu analysieren oder vorherzusagen.
-
- Als „Verantwortlicher“ wird die natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die - allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten - entscheidet, bezeichnet.
-
- „Auftragsverarbeiter“ eine natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die - personenbezogene Daten im Auftrag des Verantwortlichen verarbeitet.
-

-

Maßgebliche Rechtsgrundlagen

-

Nach Maßgabe des Art. 13 DSGVO teilen wir Ihnen die Rechtsgrundlagen unserer Datenverarbeitungen mit. Für Nutzer - aus dem Geltungsbereich der Datenschutzgrundverordnung (DSGVO), d.h. der EU und des EWG gilt, sofern die - Rechtsgrundlage in der Datenschutzerklärung nicht genannt wird, Folgendes:
- Die Rechtsgrundlage für die Einholung von Einwilligungen ist Art. 6 Abs. 1 lit. a und Art. 7 DSGVO;
- Die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer Leistungen und Durchführung vertraglicher - Maßnahmen sowie Beantwortung von Anfragen ist Art. 6 Abs. 1 lit. b DSGVO;
- Die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer rechtlichen Verpflichtungen ist Art. 6 Abs. 1 - lit. c DSGVO;
- Für den Fall, dass lebenswichtige Interessen der betroffenen Person oder einer anderen natürlichen Person eine - Verarbeitung personenbezogener Daten erforderlich machen, dient Art. 6 Abs. 1 lit. d DSGVO als - Rechtsgrundlage.
- Die Rechtsgrundlage für die erforderliche Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen - Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt, die dem Verantwortlichen übertragen wurde ist Art. - 6 Abs. 1 lit. e DSGVO.
- Die Rechtsgrundlage für die Verarbeitung zur Wahrung unserer berechtigten Interessen ist Art. 6 Abs. 1 lit. f - DSGVO.
- Die Verarbeitung von Daten zu anderen Zwecken als denen, zu denen sie ehoben wurden, bestimmt sich nach den - Vorgaben des Art 6 Abs. 4 DSGVO.
- Die Verarbeitung von besonderen Kategorien von Daten (entsprechend Art. 9 Abs. 1 DSGVO) bestimmt sich nach den - Vorgaben des Art. 9 Abs. 2 DSGVO.
-

-

Sicherheitsmaßnahmen

-

Wir treffen nach Maßgabe der gesetzlichen Vorgabenunter Berücksichtigung des Stands der Technik, der - Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der Verarbeitung sowie der - unterschiedlichen Eintrittswahrscheinlichkeit und Schwere des Risikos für die Rechte und Freiheiten natürlicher - Personen, geeignete technische und organisatorische Maßnahmen, um ein dem Risiko angemessenes Schutzniveau zu - gewährleisten.
-
- Zu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten - durch Kontrolle des physischen Zugangs zu den Daten, als auch des sie betreffenden Zugriffs, der Eingabe, - Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren eingerichtet, - die eine Wahrnehmung von Betroffenenrechten, Löschung von Daten und Reaktion auf Gefährdung der Daten - gewährleisten. Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der Entwicklung, bzw. - Auswahl von Hardware, Software sowie Verfahren, entsprechend dem Prinzip des Datenschutzes durch - Technikgestaltung und durch datenschutzfreundliche Voreinstellungen.
-

-

Zusammenarbeit mit Auftragsverarbeitern, gemeinsam Verantwortlichen und - Dritten

-

Sofern wir im Rahmen unserer Verarbeitung Daten gegenüber anderen Personen und Unternehmen (Auftragsverarbeitern, - gemeinsam Verantwortlichen oder Dritten) offenbaren, sie an diese übermitteln oder ihnen sonst Zugriff auf die - Daten gewähren, erfolgt dies nur auf Grundlage einer gesetzlichen Erlaubnis (z.B. wenn eine Übermittlung der - Daten an Dritte, wie an Zahlungsdienstleister, zur Vertragserfüllung erforderlich ist), Nutzer eingewilligt - haben, eine rechtliche Verpflichtung dies vorsieht oder auf Grundlage unserer berechtigten Interessen (z.B. beim - Einsatz von Beauftragten, Webhostern, etc.).
-
- Sofern wir Daten anderen Unternehmen unserer Unternehmensgruppe offenbaren, übermitteln oder ihnen sonst den - Zugriff gewähren, erfolgt dies insbesondere zu administrativen Zwecken als berechtigtes Interesse und - darüberhinausgehend auf einer den gesetzlichen Vorgaben entsprechenden Grundlage.
-

- - - - - - - - - - - -

Rechte der betroffenen Personen

-

Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende Daten verarbeitet werden und auf - Auskunft über diese Daten sowie auf weitere Informationen und Kopie der Daten entsprechend den gesetzlichen - Vorgaben.
-
- Sie haben entsprechend. den gesetzlichen Vorgaben das Recht, die Vervollständigung der Sie betreffenden Daten - oder die Berichtigung der Sie betreffenden unrichtigen Daten zu verlangen.
-
- Sie haben nach Maßgabe der gesetzlichen Vorgaben das Recht zu verlangen, dass betreffende Daten unverzüglich - gelöscht werden, bzw. alternativ nach Maßgabe der gesetzlichen Vorgaben eine Einschränkung der Verarbeitung der - Daten zu verlangen.
-
- Sie haben das Recht zu verlangen, dass die Sie betreffenden Daten, die Sie uns bereitgestellt haben nach Maßgabe - der gesetzlichen Vorgaben zu erhalten und deren Übermittlung an andere Verantwortliche zu fordern.
-
- Sie haben ferner nach Maßgabe der gesetzlichen Vorgaben das Recht, eine Beschwerde bei der zuständigen - Aufsichtsbehörde einzureichen.
-

-

Widerrufsrecht

-

Sie haben das Recht, erteilte Einwilligungen mit Wirkung für die Zukunft zu widerrufen.

-

Widerspruchsrecht

-

Sie können der künftigen Verarbeitung der Sie betreffenden Daten nach Maßgabe der gesetzlichen Vorgaben - jederzeit widersprechen. Der Widerspruch kann insbesondere gegen die Verarbeitung für Zwecke der Direktwerbung - erfolgen.

-

Cookies und Widerspruchsrecht bei Direktwerbung

-

Als „Cookies“ werden kleine Dateien bezeichnet, die auf Rechnern der Nutzer gespeichert werden. Innerhalb der - Cookies können unterschiedliche Angaben gespeichert werden. Ein Cookie dient primär dazu, die Angaben zu einem - Nutzer (bzw. dem Gerät auf dem das Cookie gespeichert ist) während oder auch nach seinem Besuch innerhalb eines - Onlineangebotes zu speichern. Als temporäre Cookies, bzw. „Session-Cookies“ oder „transiente Cookies“, werden - Cookies bezeichnet, die gelöscht werden, nachdem ein Nutzer ein Onlineangebot verlässt und seinen Browser - schließt. In einem solchen Cookie kann z.B. der Inhalt eines Warenkorbs in einem Onlineshop oder ein - Login-Status gespeichert werden. Als „permanent“ oder „persistent“ werden Cookies bezeichnet, die auch nach dem - Schließen des Browsers gespeichert bleiben. So kann z.B. der Login-Status gespeichert werden, wenn die Nutzer - diese nach mehreren Tagen aufsuchen. Ebenso können in einem solchen Cookie die Interessen der Nutzer gespeichert - werden, die für Reichweitenmessung oder Marketingzwecke verwendet werden. Als „Third-Party-Cookie“ werden - Cookies bezeichnet, die von anderen Anbietern als dem Verantwortlichen, der das Onlineangebot betreibt, - angeboten werden (andernfalls, wenn es nur dessen Cookies sind spricht man von „First-Party Cookies“).
-
- Wir können temporäre und permanente Cookies einsetzen und klären hierüber im Rahmen unserer Datenschutzerklärung - auf.
-
- Falls die Nutzer nicht möchten, dass Cookies auf ihrem Rechner gespeichert werden, werden sie gebeten die - entsprechende Option in den Systemeinstellungen ihres Browsers zu deaktivieren. Gespeicherte Cookies können in - den Systemeinstellungen des Browsers gelöscht werden. Der Ausschluss von Cookies kann zu - Funktionseinschränkungen dieses Onlineangebotes führen.
-

Löschung von Daten

-

Die von uns verarbeiteten Daten werden nach Maßgabe der gesetzlichen Vorgaben gelöscht oder in ihrer Verarbeitung - eingeschränkt. Sofern nicht im Rahmen dieser Datenschutzerklärung ausdrücklich angegeben, werden die bei uns - gespeicherten Daten gelöscht, sobald sie für ihre Zweckbestimmung nicht mehr erforderlich sind und der Löschung - keine gesetzlichen Aufbewahrungspflichten entgegenstehen.
-
- Sofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind, - wird deren Verarbeitung eingeschränkt. D.h. die Daten werden gesperrt und nicht für andere Zwecke verarbeitet. - Das gilt z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen.

-

Änderungen und Aktualisierungen der Datenschutzerklärung

-

Wir bitten Sie sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die - Datenschutzerklärung an, sobald die Änderungen der von uns durchgeführten Datenverarbeitungen dies erforderlich - machen. Wir informieren Sie, sobald durch die Änderungen eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung) - oder eine sonstige individuelle Benachrichtigung erforderlich wird.

-

-

Hosting und E-Mail-Versand

-

-

Die von uns in Anspruch genommenen Hosting-Leistungen dienen der Zurverfügungstellung der folgenden Leistungen: Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste, E-Mail-Versand, Sicherheitsleistungen sowie technische Wartungsleistungen, die wir zum Zwecke des Betriebs dieses Onlineangebotes einsetzen.
-
-Hierbei verarbeiten wir, bzw. unser Hostinganbieter Bestandsdaten, Kontaktdaten, Vertragsdaten, Nutzungsdaten, Meta- und Kommunikationsdaten von Kunden, Interessenten und Besuchern dieses Onlineangebotes auf Grundlage unserer berechtigten Interessen an einer effizienten und sicheren Zurverfügungstellung dieses Onlineangebotes gem. Art. 6 Abs. 1 lit. f DSGVO i.V.m. Art. 28 DSGVO (Abschluss Auftragsverarbeitungsvertrag).
-

-

-

Erhebung von Zugriffsdaten und Logfiles

-

-

Wir, bzw. unser Hostinganbieter, erhebt auf Grundlage unserer berechtigten Interessen - im Sinne des Art. 6 Abs. 1 lit. f. DSGVO Daten über jeden Zugriff auf den Server, auf dem sich dieser Dienst befindet - (sogenannte Serverlogfiles). Zu den Zugriffsdaten gehören Name der abgerufenen Webseite, Datei, Datum und Uhrzeit des Abrufs, - übertragene Datenmenge, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL - (die zuvor besuchte Seite), IP-Adresse und der anfragende Provider.
-
-Logfile-Informationen werden aus Sicherheitsgründen (z.B. zur Aufklärung von Missbrauchs- oder Betrugshandlungen) für die - Dauer von maximal 5 Wochen gespeichert und danach gelöscht. Daten, deren weitere Aufbewahrung zu Beweiszwecken erforderlich ist, sind bis zur endgültigen Klärung des jeweiligen Vorfalls von der Löschung ausgenommen.
-

-

-

Reichweitenmessung mit Matomo

-

-

Im Rahmen der Reichweitenanalyse von Matomo werden auf Grundlage unserer berechtigten Interessen (d.h. Interesse an der Analyse, Optimierung und wirtschaftlichem Betrieb unseres Onlineangebotes im Sinne des Art. 6 Abs. 1 lit. f. DSGVO) die folgenden Daten verarbeitet: der von Ihnen verwendete Browsertyp und die Browserversion, das von Ihnen verwendete Betriebssystem, Ihr Herkunftsland, Datum und Uhrzeit der Serveranfrage, die Anzahl der Besuche, Ihre Verweildauer auf der Website sowie die von Ihnen betätigten externen Links. Die IP-Adresse der Nutzer wird anonymisiert, bevor sie gespeichert wird.
-
-Matomo verwendet Cookies, die auf dem Computer der Nutzer gespeichert werden und die eine Analyse der Benutzung unseres Onlineangebotes durch die Nutzer ermöglichen. Dabei können aus den verarbeiteten Daten pseudonyme Nutzungsprofile der Nutzer erstellt werden. Die Cookies haben eine Speicherdauer von einer Woche. Die durch das Cookie erzeugten Informationen über Ihre Benutzung dieser Webseite werden nur auf unserem Server gespeichert und nicht an Dritte weitergegeben.
-
-Nutzer können der anonymisierten Datenerhebung durch das Programm Matomo jederzeit mit Wirkung für die Zukunft widersprechen, - indem sie den unten befindlichen Schalter nutzen. In diesem Fall wird in ihrem Browser ein sog. Opt-Out-Cookie abgelegt, - was zur Folge hat, dass Matomo keinerlei Sitzungsdaten mehr erhebt. - Wenn Nutzer ihre Cookies löschen, so hat dies jedoch zur Folge, dass auch das Opt-Out-Cookie gelöscht wird und daher - von den Nutzern erneut aktiviert werden muss.
-
-Die Logs mit den Daten der Nutzer werden nach spätestens einem Jahr gelöscht.
-
-

- - Erstellt mit - Datenschutz-Generator.de von RA Dr. Thomas Schwenke
- und angepasst vom Webseitenbetreiber -
\ No newline at end of file +

Datenschutzerklärung

Diese Datenschutzerklärung klärt Sie über die Art, den Umfang und Zweck der Verarbeitung von personenbezogenen Daten (nachfolgend kurz „Daten“) im Rahmen der Erbringung unserer Leistungen sowie innerhalb unseres Onlineangebotes und der mit ihm verbundenen Webseiten, Funktionen und Inhalte sowie externen Onlinepräsenzen (nachfolgend gemeinsam bezeichnet als „Onlineangebot“). Im Hinblick auf die verwendeten Begrifflichkeiten, wie z.B. „Verarbeitung“ oder „Verantwortlicher“ verweisen wir auf die Definitionen im Art. 4 der Datenschutzgrundverordnung (DSGVO).

Verantwortlicher

Silas Günther
Mariabrunnstraße 48
52064 Aachen
Deutschland

E-Mailadresse: wordRotator@silas.link
Link zum Impressum: https://wordrotator.silas.link/impressum

Arten der verarbeiteten Daten

- Bestandsdaten (z.B., Personen-Stammdaten, Namen oder Adressen).
- Kontaktdaten (z.B., E-Mail, Telefonnummern).
- Nutzungsdaten (z.B., besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).
- Meta-/Kommunikationsdaten (z.B., Geräte-Informationen, Anonymisierte IP-Adressen).

Kategorien betroffener Personen

Besucher und Nutzer des Onlineangebotes (Nachfolgend bezeichnen wir die betroffenen Personen zusammenfassend auch als „Nutzer“).

Zweck der Verarbeitung

- Zurverfügungstellung des Onlineangebotes, seiner Funktionen und Inhalte.
- Beantwortung von Kontaktanfragen und Kommunikation mit Nutzern.
- Sicherheitsmaßnahmen.
- Reichweitenmessung/Marketing

Verwendete Begrifflichkeiten

„Personenbezogene Daten“ sind alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person (im Folgenden „betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung (z.B. Cookie) oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.

„Verarbeitung“ ist jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführte Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Der Begriff reicht weit und umfasst praktisch jeden Umgang mit Daten.

„Pseudonymisierung“ die Verarbeitung personenbezogener Daten in einer Weise, dass die personenbezogenen Daten ohne Hinzuziehung zusätzlicher Informationen nicht mehr einer spezifischen betroffenen Person zugeordnet werden können, sofern diese zusätzlichen Informationen gesondert aufbewahrt werden und technischen und organisatorischen Maßnahmen unterliegen, die gewährleisten, dass die personenbezogenen Daten nicht einer identifizierten oder identifizierbaren natürlichen Person zugewiesen werden.

„Profiling“ jede Art der automatisierten Verarbeitung personenbezogener Daten, die darin besteht, dass diese personenbezogenen Daten verwendet werden, um bestimmte persönliche Aspekte, die sich auf eine natürliche Person beziehen, zu bewerten, insbesondere um Aspekte bezüglich Arbeitsleistung, wirtschaftliche Lage, Gesundheit, persönliche Vorlieben, Interessen, Zuverlässigkeit, Verhalten, Aufenthaltsort oder Ortswechsel dieser natürlichen Person zu analysieren oder vorherzusagen.

Als „Verantwortlicher“ wird die natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten entscheidet, bezeichnet.

„Auftragsverarbeiter“ eine natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die personenbezogene Daten im Auftrag des Verantwortlichen verarbeitet.

Maßgebliche Rechtsgrundlagen

Nach Maßgabe des Art. 13 DSGVO teilen wir Ihnen die Rechtsgrundlagen unserer Datenverarbeitungen mit. Für Nutzer aus dem Geltungsbereich der Datenschutzgrundverordnung (DSGVO), d.h. der EU und des EWG gilt, sofern die Rechtsgrundlage in der Datenschutzerklärung nicht genannt wird, Folgendes:
Die Rechtsgrundlage für die Einholung von Einwilligungen ist Art. 6 Abs. 1 lit. a und Art. 7 DSGVO;
Die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer Leistungen und Durchführung vertraglicher Maßnahmen sowie Beantwortung von Anfragen ist Art. 6 Abs. 1 lit. b DSGVO;
Die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer rechtlichen Verpflichtungen ist Art. 6 Abs. 1 lit. c DSGVO;
Für den Fall, dass lebenswichtige Interessen der betroffenen Person oder einer anderen natürlichen Person eine Verarbeitung personenbezogener Daten erforderlich machen, dient Art. 6 Abs. 1 lit. d DSGVO als Rechtsgrundlage.
Die Rechtsgrundlage für die erforderliche Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt, die dem Verantwortlichen übertragen wurde ist Art. 6 Abs. 1 lit. e DSGVO.
Die Rechtsgrundlage für die Verarbeitung zur Wahrung unserer berechtigten Interessen ist Art. 6 Abs. 1 lit. f DSGVO.
Die Verarbeitung von Daten zu anderen Zwecken als denen, zu denen sie ehoben wurden, bestimmt sich nach den Vorgaben des Art 6 Abs. 4 DSGVO.
Die Verarbeitung von besonderen Kategorien von Daten (entsprechend Art. 9 Abs. 1 DSGVO) bestimmt sich nach den Vorgaben des Art. 9 Abs. 2 DSGVO.

Sicherheitsmaßnahmen

Wir treffen nach Maßgabe der gesetzlichen Vorgabenunter Berücksichtigung des Stands der Technik, der Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der Verarbeitung sowie der unterschiedlichen Eintrittswahrscheinlichkeit und Schwere des Risikos für die Rechte und Freiheiten natürlicher Personen, geeignete technische und organisatorische Maßnahmen, um ein dem Risiko angemessenes Schutzniveau zu gewährleisten.

Zu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten durch Kontrolle des physischen Zugangs zu den Daten, als auch des sie betreffenden Zugriffs, der Eingabe, Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren eingerichtet, die eine Wahrnehmung von Betroffenenrechten, Löschung von Daten und Reaktion auf Gefährdung der Daten gewährleisten. Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der Entwicklung, bzw. Auswahl von Hardware, Software sowie Verfahren, entsprechend dem Prinzip des Datenschutzes durch Technikgestaltung und durch datenschutzfreundliche Voreinstellungen.

Zusammenarbeit mit Auftragsverarbeitern, gemeinsam Verantwortlichen und Dritten

Sofern wir im Rahmen unserer Verarbeitung Daten gegenüber anderen Personen und Unternehmen (Auftragsverarbeitern, gemeinsam Verantwortlichen oder Dritten) offenbaren, sie an diese übermitteln oder ihnen sonst Zugriff auf die Daten gewähren, erfolgt dies nur auf Grundlage einer gesetzlichen Erlaubnis (z.B. wenn eine Übermittlung der Daten an Dritte, wie an Zahlungsdienstleister, zur Vertragserfüllung erforderlich ist), Nutzer eingewilligt haben, eine rechtliche Verpflichtung dies vorsieht oder auf Grundlage unserer berechtigten Interessen (z.B. beim Einsatz von Beauftragten, Webhostern, etc.).

Sofern wir Daten anderen Unternehmen unserer Unternehmensgruppe offenbaren, übermitteln oder ihnen sonst den Zugriff gewähren, erfolgt dies insbesondere zu administrativen Zwecken als berechtigtes Interesse und darüberhinausgehend auf einer den gesetzlichen Vorgaben entsprechenden Grundlage.

Rechte der betroffenen Personen

Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende Daten verarbeitet werden und auf Auskunft über diese Daten sowie auf weitere Informationen und Kopie der Daten entsprechend den gesetzlichen Vorgaben.

Sie haben entsprechend. den gesetzlichen Vorgaben das Recht, die Vervollständigung der Sie betreffenden Daten oder die Berichtigung der Sie betreffenden unrichtigen Daten zu verlangen.

Sie haben nach Maßgabe der gesetzlichen Vorgaben das Recht zu verlangen, dass betreffende Daten unverzüglich gelöscht werden, bzw. alternativ nach Maßgabe der gesetzlichen Vorgaben eine Einschränkung der Verarbeitung der Daten zu verlangen.

Sie haben das Recht zu verlangen, dass die Sie betreffenden Daten, die Sie uns bereitgestellt haben nach Maßgabe der gesetzlichen Vorgaben zu erhalten und deren Übermittlung an andere Verantwortliche zu fordern.

Sie haben ferner nach Maßgabe der gesetzlichen Vorgaben das Recht, eine Beschwerde bei der zuständigen Aufsichtsbehörde einzureichen.

Widerrufsrecht

Sie haben das Recht, erteilte Einwilligungen mit Wirkung für die Zukunft zu widerrufen.

Widerspruchsrecht

Sie können der künftigen Verarbeitung der Sie betreffenden Daten nach Maßgabe der gesetzlichen Vorgaben jederzeit widersprechen. Der Widerspruch kann insbesondere gegen die Verarbeitung für Zwecke der Direktwerbung erfolgen.

Cookies und Widerspruchsrecht bei Direktwerbung

Als „Cookies“ werden kleine Dateien bezeichnet, die auf Rechnern der Nutzer gespeichert werden. Innerhalb der Cookies können unterschiedliche Angaben gespeichert werden. Ein Cookie dient primär dazu, die Angaben zu einem Nutzer (bzw. dem Gerät auf dem das Cookie gespeichert ist) während oder auch nach seinem Besuch innerhalb eines Onlineangebotes zu speichern. Als temporäre Cookies, bzw. „Session-Cookies“ oder „transiente Cookies“, werden Cookies bezeichnet, die gelöscht werden, nachdem ein Nutzer ein Onlineangebot verlässt und seinen Browser schließt. In einem solchen Cookie kann z.B. der Inhalt eines Warenkorbs in einem Onlineshop oder ein Login-Status gespeichert werden. Als „permanent“ oder „persistent“ werden Cookies bezeichnet, die auch nach dem Schließen des Browsers gespeichert bleiben. So kann z.B. der Login-Status gespeichert werden, wenn die Nutzer diese nach mehreren Tagen aufsuchen. Ebenso können in einem solchen Cookie die Interessen der Nutzer gespeichert werden, die für Reichweitenmessung oder Marketingzwecke verwendet werden. Als „Third-Party-Cookie“ werden Cookies bezeichnet, die von anderen Anbietern als dem Verantwortlichen, der das Onlineangebot betreibt, angeboten werden (andernfalls, wenn es nur dessen Cookies sind spricht man von „First-Party Cookies“).

Wir können temporäre und permanente Cookies einsetzen und klären hierüber im Rahmen unserer Datenschutzerklärung auf.

Falls die Nutzer nicht möchten, dass Cookies auf ihrem Rechner gespeichert werden, werden sie gebeten die entsprechende Option in den Systemeinstellungen ihres Browsers zu deaktivieren. Gespeicherte Cookies können in den Systemeinstellungen des Browsers gelöscht werden. Der Ausschluss von Cookies kann zu Funktionseinschränkungen dieses Onlineangebotes führen.

Löschung von Daten

Die von uns verarbeiteten Daten werden nach Maßgabe der gesetzlichen Vorgaben gelöscht oder in ihrer Verarbeitung eingeschränkt. Sofern nicht im Rahmen dieser Datenschutzerklärung ausdrücklich angegeben, werden die bei uns gespeicherten Daten gelöscht, sobald sie für ihre Zweckbestimmung nicht mehr erforderlich sind und der Löschung keine gesetzlichen Aufbewahrungspflichten entgegenstehen.

Sofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind, wird deren Verarbeitung eingeschränkt. D.h. die Daten werden gesperrt und nicht für andere Zwecke verarbeitet. Das gilt z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen.

Änderungen und Aktualisierungen der Datenschutzerklärung

Wir bitten Sie sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die Datenschutzerklärung an, sobald die Änderungen der von uns durchgeführten Datenverarbeitungen dies erforderlich machen. Wir informieren Sie, sobald durch die Änderungen eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung) oder eine sonstige individuelle Benachrichtigung erforderlich wird.

Hosting und E-Mail-Versand

Die von uns in Anspruch genommenen Hosting-Leistungen dienen der Zurverfügungstellung der folgenden Leistungen: Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste, E-Mail-Versand, Sicherheitsleistungen sowie technische Wartungsleistungen, die wir zum Zwecke des Betriebs dieses Onlineangebotes einsetzen.

Hierbei verarbeiten wir, bzw. unser Hostinganbieter Bestandsdaten, Kontaktdaten, Vertragsdaten, Nutzungsdaten, Meta- und Kommunikationsdaten von Kunden, Interessenten und Besuchern dieses Onlineangebotes auf Grundlage unserer berechtigten Interessen an einer effizienten und sicheren Zurverfügungstellung dieses Onlineangebotes gem. Art. 6 Abs. 1 lit. f DSGVO i.V.m. Art. 28 DSGVO (Abschluss Auftragsverarbeitungsvertrag).

Erhebung von Zugriffsdaten und Logfiles

Wir, bzw. unser Hostinganbieter, erhebt auf Grundlage unserer berechtigten Interessen im Sinne des Art. 6 Abs. 1 lit. f. DSGVO Daten über jeden Zugriff auf den Server, auf dem sich dieser Dienst befindet (sogenannte Serverlogfiles). Zu den Zugriffsdaten gehören Name der abgerufenen Webseite, Datei, Datum und Uhrzeit des Abrufs, übertragene Datenmenge, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite), IP-Adresse und der anfragende Provider.

Logfile-Informationen werden aus Sicherheitsgründen (z.B. zur Aufklärung von Missbrauchs- oder Betrugshandlungen) für die Dauer von maximal 5 Wochen gespeichert und danach gelöscht. Daten, deren weitere Aufbewahrung zu Beweiszwecken erforderlich ist, sind bis zur endgültigen Klärung des jeweiligen Vorfalls von der Löschung ausgenommen.

Reichweitenmessung mit Matomo

Im Rahmen der Reichweitenanalyse von Matomo werden auf Grundlage unserer berechtigten Interessen (d.h. Interesse an der Analyse, Optimierung und wirtschaftlichem Betrieb unseres Onlineangebotes im Sinne des Art. 6 Abs. 1 lit. f. DSGVO) die folgenden Daten verarbeitet: der von Ihnen verwendete Browsertyp und die Browserversion, das von Ihnen verwendete Betriebssystem, Ihr Herkunftsland, Datum und Uhrzeit der Serveranfrage, die Anzahl der Besuche, Ihre Verweildauer auf der Website sowie die von Ihnen betätigten externen Links. Die IP-Adresse der Nutzer wird anonymisiert, bevor sie gespeichert wird.

Matomo verwendet Cookies, die auf dem Computer der Nutzer gespeichert werden und die eine Analyse der Benutzung unseres Onlineangebotes durch die Nutzer ermöglichen. Dabei können aus den verarbeiteten Daten pseudonyme Nutzungsprofile der Nutzer erstellt werden. Die Cookies haben eine Speicherdauer von einer Woche. Die durch das Cookie erzeugten Informationen über Ihre Benutzung dieser Webseite werden nur auf unserem Server gespeichert und nicht an Dritte weitergegeben.

Nutzer können der anonymisierten Datenerhebung durch das Programm Matomo jederzeit mit Wirkung für die Zukunft widersprechen, indem sie den unten befindlichen Schalter nutzen. In diesem Fall wird in ihrem Browser ein sog. Opt-Out-Cookie abgelegt, was zur Folge hat, dass Matomo keinerlei Sitzungsdaten mehr erhebt. Wenn Nutzer ihre Cookies löschen, so hat dies jedoch zur Folge, dass auch das Opt-Out-Cookie gelöscht wird und daher von den Nutzern erneut aktiviert werden muss.

Die Logs mit den Daten der Nutzer werden nach spätestens einem Jahr gelöscht.

Erstellt mit Datenschutz-Generator.de von RA Dr. Thomas Schwenke
und angepasst vom Webseitenbetreiber
\ No newline at end of file diff --git a/src/server/public/html/registrationSite.html b/src/server/public/html/registrationSite.html index 05c53d1..5d4666c 100644 --- a/src/server/public/html/registrationSite.html +++ b/src/server/public/html/registrationSite.html @@ -1,28 +1 @@ -
-
-

registration

-
- - - - - - -
-
-
\ No newline at end of file +

registration

\ No newline at end of file diff --git a/src/server/public/html/selectUserDialog.html b/src/server/public/html/selectUserDialog.html index 1be6786..8720652 100644 --- a/src/server/public/html/selectUserDialog.html +++ b/src/server/public/html/selectUserDialog.html @@ -1,10 +1 @@ -
- -
-
- -
-
-
\ No newline at end of file +
\ No newline at end of file diff --git a/src/server/public/html/settings.html b/src/server/public/html/settings.html index b4cc422..2bcae82 100644 --- a/src/server/public/html/settings.html +++ b/src/server/public/html/settings.html @@ -1,61 +1 @@ -
-
-
- - -
- tutorial - > -
-
- credits - > -
-
- privacy-policy - > -
-
- impressum - > -
-
- contact - > -
- - - -
- version-label - -
- - -
-
-
+
tutorial >
credits >
privacy-policy >
impressum >
contact >
version-label
\ No newline at end of file diff --git a/src/server/public/html/settingsSite.html b/src/server/public/html/settingsSite.html index 3e7f084..6427e58 100644 --- a/src/server/public/html/settingsSite.html +++ b/src/server/public/html/settingsSite.html @@ -1,3 +1 @@ -
-
-
+
\ No newline at end of file diff --git a/src/server/public/html/shareDialog.html b/src/server/public/html/shareDialog.html index e8ec645..0844a7b 100644 --- a/src/server/public/html/shareDialog.html +++ b/src/server/public/html/shareDialog.html @@ -1,9 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/server/public/html/swipeFragment.html b/src/server/public/html/swipeFragment.html index bca6bfe..5d44f8a 100644 --- a/src/server/public/html/swipeFragment.html +++ b/src/server/public/html/swipeFragment.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/src/server/public/html/tabFragment.html b/src/server/public/html/tabFragment.html index 2721cfe..083de84 100644 --- a/src/server/public/html/tabFragment.html +++ b/src/server/public/html/tabFragment.html @@ -1,9 +1 @@ -
-
-
-
 
-
-
-
-
-
+
 
\ No newline at end of file diff --git a/src/server/public/html/tutorialSite.html b/src/server/public/html/tutorialSite.html index 46eef0e..169f8c8 100644 --- a/src/server/public/html/tutorialSite.html +++ b/src/server/public/html/tutorialSite.html @@ -1,39 +1 @@ -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
tutorial-1
-
-
-
-
tutorial-2
-
- -
-
-
-
-
tutorial-3
-
-
-
-
-
-
+
tutorial-1
tutorial-2
tutorial-3
\ No newline at end of file diff --git a/src/server/public/index.css b/src/server/public/index.css index 08903a5..6e10def 100644 --- a/src/server/public/index.css +++ b/src/server/public/index.css @@ -1,8701 +1,89 @@ -@charset "UTF-8"; -/** - * Foundation for Sites - * Version 6.6.3 - * https://get.foundation - * Licensed under MIT Open Source - */ -@media print, screen and (min-width: 40em) { - .reveal, .reveal.tiny, .reveal.small, .reveal.large { - right: auto; - left: auto; - margin: 0 auto; } } - -/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ -html { - line-height: 1.15; - -webkit-text-size-adjust: 100%; } - -body { - margin: 0; } - -h1 { - font-size: 2em; - margin: 0.67em 0; } - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; } - -pre { - font-family: monospace, monospace; - font-size: 1em; } - -a { - background-color: transparent; } - -abbr[title] { - border-bottom: none; - text-decoration: underline; - text-decoration: underline dotted; } - -b, -strong { - font-weight: bolder; } - -code, -kbd, -samp { - font-family: monospace, monospace; - font-size: 1em; } - -small { - font-size: 80%; } - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sub { - bottom: -0.25em; } - -sup { - top: -0.5em; } - -img { - border-style: none; } - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - font-size: 100%; - line-height: 1.15; - margin: 0; } - -button, -input { - overflow: visible; } - -button, -select { - text-transform: none; } - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; } - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; } - -fieldset { - padding: 0.35em 0.75em 0.625em; } - -legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; } - -progress { - vertical-align: baseline; } - -textarea { - overflow: auto; } - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; - padding: 0; } - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; } - -[type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; } - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; } - -details { - display: block; } - -summary { - display: list-item; } - -template { - display: none; } - -[hidden] { - display: none; } - -.foundation-mq { - font-family: "small=0em&smedium=25em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } - -html { - box-sizing: border-box; - font-size: 100%; } - -*, -*::before, -*::after { - box-sizing: inherit; } - -body { - margin: 0; - padding: 0; - background: #fefefe; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-weight: normal; - line-height: 1.5; - color: #0a0a0a; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - -img { - display: inline-block; - vertical-align: middle; - max-width: 100%; - height: auto; - -ms-interpolation-mode: bicubic; } - -textarea { - height: auto; - min-height: 50px; - border-radius: 0; } - -select { - box-sizing: border-box; - width: 100%; - border-radius: 0; } - -.map_canvas img, -.map_canvas embed, -.map_canvas object, -.mqa-display img, -.mqa-display embed, -.mqa-display object { - max-width: none !important; } - -button { - padding: 0; - appearance: none; - border: 0; - border-radius: 0; - background: transparent; - line-height: 1; - cursor: auto; } - [data-whatinput='mouse'] button { - outline: 0; } - -pre { - overflow: auto; } - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; } - -.is-visible { - display: block !important; } - -.is-hidden { - display: none !important; } - -[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], -textarea { - display: block; - box-sizing: border-box; - width: 100%; - height: 2.4375rem; - margin: 0 0 1rem; - padding: 0.5rem; - border: 1px solid #cacaca; - border-radius: 0; - background-color: #fefefe; - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - font-family: inherit; - font-size: 1rem; - font-weight: normal; - line-height: 1.5; - color: #0a0a0a; - transition: box-shadow 0.5s, border-color 0.25s ease-in-out; - appearance: none; } - [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, - textarea:focus { - outline: none; - border: 1px solid #8a8a8a; - background-color: #fefefe; - box-shadow: 0 0 5px #cacaca; - transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } - -textarea { - max-width: 100%; } - textarea[rows] { - height: auto; } - -input:disabled, input[readonly], -textarea:disabled, -textarea[readonly] { - background-color: #e6e6e6; - cursor: not-allowed; } - -[type='submit'], -[type='button'] { - appearance: none; - border-radius: 0; } - -input[type='search'] { - box-sizing: border-box; } - -::placeholder { - color: #cacaca; } - -[type='file'], -[type='checkbox'], -[type='radio'] { - margin: 0 0 1rem; } - -[type='checkbox'] + label, -[type='radio'] + label { - display: inline-block; - vertical-align: baseline; - margin-left: 0.5rem; - margin-right: 1rem; - margin-bottom: 0; } - [type='checkbox'] + label[for], - [type='radio'] + label[for] { - cursor: pointer; } - -label > [type='checkbox'], -label > [type='radio'] { - margin-right: 0.5rem; } - -[type='file'] { - width: 100%; } - -label { - display: block; - margin: 0; - font-size: 0.875rem; - font-weight: normal; - line-height: 1.8; - color: #0a0a0a; } - label.middle { - margin: 0 0 1rem; - padding: 0.5625rem 0; } - -.help-text { - margin-top: -0.5rem; - font-size: 0.8125rem; - font-style: italic; - color: #0a0a0a; } - -.input-group { - display: flex; - width: 100%; - margin-bottom: 1rem; - align-items: stretch; } - .input-group > :first-child, .input-group > :first-child.input-group-button > * { - border-radius: 0 0 0 0; } - .input-group > :last-child, .input-group > :last-child.input-group-button > * { - border-radius: 0 0 0 0; } - -.input-group-label, .input-group-field, .input-group-button, .input-group-button a, -.input-group-button input, -.input-group-button button, -.input-group-button label { - margin: 0; - white-space: nowrap; } - -.input-group-label { - padding: 0 1rem; - border: 1px solid #cacaca; - background: #e6e6e6; - color: #0a0a0a; - text-align: center; - white-space: nowrap; - display: flex; - flex: 0 0 auto; - align-items: center; } - .input-group-label:first-child { - border-right: 0; } - .input-group-label:last-child { - border-left: 0; } - -.input-group-field { - border-radius: 0; - flex: 1 1 0px; - min-width: 0; } - -.input-group-button { - padding-top: 0; - padding-bottom: 0; - text-align: center; - display: flex; - flex: 0 0 auto; } - .input-group-button a, - .input-group-button input, - .input-group-button button, - .input-group-button label { - align-self: stretch; - height: auto; - padding-top: 0; - padding-bottom: 0; - font-size: 1rem; } - -fieldset { - margin: 0; - padding: 0; - border: 0; } - -legend { - max-width: 100%; - margin-bottom: 0.5rem; } - -.fieldset { - margin: 1.125rem 0; - padding: 1.25rem; - border: 1px solid #cacaca; } - .fieldset legend { - margin: 0; - margin-left: -0.1875rem; - padding: 0 0.1875rem; } - -select { - height: 2.4375rem; - margin: 0 0 1rem; - padding: 0.5rem; - appearance: none; - border: 1px solid #cacaca; - border-radius: 0; - background-color: #fefefe; - font-family: inherit; - font-size: 1rem; - font-weight: normal; - line-height: 1.5; - color: #0a0a0a; - background-image: url("data:image/svg+xml;utf8,"); - background-origin: content-box; - background-position: right -1rem center; - background-repeat: no-repeat; - background-size: 9px 6px; - padding-right: 1.5rem; - transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } - @media screen and (min-width: 0\0) { - select { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } - select:focus { - outline: none; - border: 1px solid #8a8a8a; - background-color: #fefefe; - box-shadow: 0 0 5px #cacaca; - transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } - select:disabled { - background-color: #e6e6e6; - cursor: not-allowed; } - select::-ms-expand { - display: none; } - select[multiple] { - height: auto; - background-image: none; } - select:not([multiple]) { - padding-top: 0; - padding-bottom: 0; } - -.is-invalid-input:not(:focus) { - border-color: #cc4b37; - background-color: #f9ecea; } - .is-invalid-input:not(:focus)::placeholder { - color: #cc4b37; } - -.is-invalid-label { - color: #cc4b37; } - -.form-error { - display: none; - margin-top: -0.5rem; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: bold; - color: #cc4b37; } - .form-error.is-visible { - display: block; } - -div, -dl, -dt, -dd, -ul, -ol, -li, -h1, -h2, -h3, -h4, -h5, -h6, -pre, -form, -p, -blockquote, -th, -td { - margin: 0; - padding: 0; } - -p { - margin-bottom: 1rem; - font-size: inherit; - line-height: 1.6; - text-rendering: optimizeLegibility; } - -em, -i { - font-style: italic; - line-height: inherit; } - -strong, -b { - font-weight: bold; - line-height: inherit; } - -small { - font-size: 80%; - line-height: inherit; } - -h1, .h1, -h2, .h2, -h3, .h3, -h4, .h4, -h5, .h5, -h6, .h6 { - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-style: normal; - font-weight: normal; - color: inherit; - text-rendering: optimizeLegibility; } - h1 small, .h1 small, - h2 small, .h2 small, - h3 small, .h3 small, - h4 small, .h4 small, - h5 small, .h5 small, - h6 small, .h6 small { - line-height: 0; - color: #cacaca; } - -h1, .h1 { - font-size: 1.5rem; - line-height: 1.4; - margin-top: 0; - margin-bottom: 0.5rem; } - -h2, .h2 { - font-size: 1.25rem; - line-height: 1.4; - margin-top: 0; - margin-bottom: 0.5rem; } - -h3, .h3 { - font-size: 1.1875rem; - line-height: 1.4; - margin-top: 0; - margin-bottom: 0.5rem; } - -h4, .h4 { - font-size: 1.125rem; - line-height: 1.4; - margin-top: 0; - margin-bottom: 0.5rem; } - -h5, .h5 { - font-size: 1.0625rem; - line-height: 1.4; - margin-top: 0; - margin-bottom: 0.5rem; } - -h6, .h6 { - font-size: 1rem; - line-height: 1.4; - margin-top: 0; - margin-bottom: 0.5rem; } - -@media print, screen and (min-width: 40em) { - h1, .h1 { - font-size: 3rem; } - h2, .h2 { - font-size: 2.5rem; } - h3, .h3 { - font-size: 1.9375rem; } - h4, .h4 { - font-size: 1.5625rem; } - h5, .h5 { - font-size: 1.25rem; } - h6, .h6 { - font-size: 1rem; } } - -a { - line-height: inherit; - color: #1779ba; - text-decoration: none; - cursor: pointer; } - a:hover, a:focus { - color: #1468a0; } - a img { - border: 0; } - -hr { - clear: both; - max-width: 75rem; - height: 0; - margin: 1.25rem auto; - border-top: 0; - border-right: 0; - border-bottom: 1px solid #cacaca; - border-left: 0; } - -ul, -ol, -dl { - margin-bottom: 1rem; - list-style-position: outside; - line-height: 1.6; } - -li { - font-size: inherit; } - -ul { - margin-left: 1.25rem; - list-style-type: disc; } - -ol { - margin-left: 1.25rem; } - -ul ul, ol ul, ul ol, ol ol { - margin-left: 1.25rem; - margin-bottom: 0; } - -dl { - margin-bottom: 1rem; } - dl dt { - margin-bottom: 0.3rem; - font-weight: bold; } - -blockquote { - margin: 0 0 1rem; - padding: 0.5625rem 1.25rem 0 1.1875rem; - border-left: 1px solid #cacaca; } - blockquote, blockquote p { - line-height: 1.6; - color: #8a8a8a; } - -abbr, abbr[title] { - border-bottom: 1px dotted #0a0a0a; - cursor: help; - text-decoration: none; } - -figure { - margin: 0; } - -kbd { - margin: 0; - padding: 0.125rem 0.25rem 0; - background-color: #e6e6e6; - font-family: Consolas, "Liberation Mono", Courier, monospace; - color: #0a0a0a; } - -.subheader { - margin-top: 0.2rem; - margin-bottom: 0.5rem; - font-weight: normal; - line-height: 1.4; - color: #8a8a8a; } - -.lead { - font-size: 125%; - line-height: 1.6; } - -.stat { - font-size: 2.5rem; - line-height: 1; } - p + .stat { - margin-top: -1rem; } - -ul.no-bullet, ol.no-bullet { - margin-left: 0; - list-style: none; } - -.cite-block, cite { - display: block; - color: #8a8a8a; - font-size: 0.8125rem; } - .cite-block:before, cite:before { - content: "— "; } - -.code-inline, code { - border: 1px solid #cacaca; - background-color: #e6e6e6; - font-family: Consolas, "Liberation Mono", Courier, monospace; - font-weight: normal; - color: #0a0a0a; - display: inline; - max-width: 100%; - word-wrap: break-word; - padding: 0.125rem 0.3125rem 0.0625rem; } - -.code-block { - border: 1px solid #cacaca; - background-color: #e6e6e6; - font-family: Consolas, "Liberation Mono", Courier, monospace; - font-weight: normal; - color: #0a0a0a; - display: block; - overflow: auto; - white-space: pre; - padding: 1rem; - margin-bottom: 1.5rem; } - -.text-left { - text-align: left; } - -.text-right { - text-align: right; } - -.text-center { - text-align: center; } - -.text-justify { - text-align: justify; } - -@media screen and (min-width: 25em) { - .smedium-text-left { - text-align: left; } - .smedium-text-right { - text-align: right; } - .smedium-text-center { - text-align: center; } - .smedium-text-justify { - text-align: justify; } } - -@media print, screen and (min-width: 40em) { - .medium-text-left { - text-align: left; } - .medium-text-right { - text-align: right; } - .medium-text-center { - text-align: center; } - .medium-text-justify { - text-align: justify; } } - -@media print, screen and (min-width: 64em) { - .large-text-left { - text-align: left; } - .large-text-right { - text-align: right; } - .large-text-center { - text-align: center; } - .large-text-justify { - text-align: justify; } } - -.show-for-print { - display: none !important; } - -@media print { - * { - background: transparent !important; - color: black !important; - color-adjust: economy; - box-shadow: none !important; - text-shadow: none !important; } - .show-for-print { - display: block !important; } - .hide-for-print { - display: none !important; } - table.show-for-print { - display: table !important; } - thead.show-for-print { - display: table-header-group !important; } - tbody.show-for-print { - display: table-row-group !important; } - tr.show-for-print { - display: table-row !important; } - td.show-for-print { - display: table-cell !important; } - th.show-for-print { - display: table-cell !important; } - a, - a:visited { - text-decoration: underline; } - a[href]:after { - content: " (" attr(href) ")"; } - .ir a:after, - a[href^='javascript:']:after, - a[href^='#']:after { - content: ''; } - abbr[title]:after { - content: " (" attr(title) ")"; } - pre, - blockquote { - border: 1px solid #8a8a8a; - page-break-inside: avoid; } - thead { - display: table-header-group; } - tr, - img { - page-break-inside: avoid; } - img { - max-width: 100% !important; } - @page { - margin: 0.5cm; } - p, - h2, - h3 { - orphans: 3; - widows: 3; } - h2, - h3 { - page-break-after: avoid; } - .print-break-inside { - page-break-inside: auto; } } - -.grid-container { - padding-right: 0.625rem; - padding-left: 0.625rem; - max-width: 75rem; - margin-left: auto; - margin-right: auto; } - @media print, screen and (min-width: 40em) { - .grid-container { - padding-right: 0.9375rem; - padding-left: 0.9375rem; } } - .grid-container.fluid { - padding-right: 0.625rem; - padding-left: 0.625rem; - max-width: 100%; - margin-left: auto; - margin-right: auto; } - @media print, screen and (min-width: 40em) { - .grid-container.fluid { - padding-right: 0.9375rem; - padding-left: 0.9375rem; } } - .grid-container.full { - padding-right: 0; - padding-left: 0; - max-width: 100%; - margin-left: auto; - margin-right: auto; } - -.grid-x { - display: flex; - flex-flow: row wrap; } - -.cell { - flex: 0 0 auto; - min-height: 0px; - min-width: 0px; - width: 100%; } - .cell.auto { - flex: 1 1 0px; } - .cell.shrink { - flex: 0 0 auto; } - -.grid-x > .auto { - width: auto; } - -.grid-x > .shrink { - width: auto; } - -.grid-x > .small-shrink, .grid-x > .small-full, .grid-x > .small-1, .grid-x > .small-2, .grid-x > .small-3, .grid-x > .small-4, .grid-x > .small-5, .grid-x > .small-6, .grid-x > .small-7, .grid-x > .small-8, .grid-x > .small-9, .grid-x > .small-10, .grid-x > .small-11, .grid-x > .small-12 { - flex-basis: auto; } - -@media screen and (min-width: 25em) { - .grid-x > .smedium-shrink, .grid-x > .smedium-full, .grid-x > .smedium-1, .grid-x > .smedium-2, .grid-x > .smedium-3, .grid-x > .smedium-4, .grid-x > .smedium-5, .grid-x > .smedium-6, .grid-x > .smedium-7, .grid-x > .smedium-8, .grid-x > .smedium-9, .grid-x > .smedium-10, .grid-x > .smedium-11, .grid-x > .smedium-12 { - flex-basis: auto; } } - -@media print, screen and (min-width: 40em) { - .grid-x > .medium-shrink, .grid-x > .medium-full, .grid-x > .medium-1, .grid-x > .medium-2, .grid-x > .medium-3, .grid-x > .medium-4, .grid-x > .medium-5, .grid-x > .medium-6, .grid-x > .medium-7, .grid-x > .medium-8, .grid-x > .medium-9, .grid-x > .medium-10, .grid-x > .medium-11, .grid-x > .medium-12 { - flex-basis: auto; } } - -@media print, screen and (min-width: 64em) { - .grid-x > .large-shrink, .grid-x > .large-full, .grid-x > .large-1, .grid-x > .large-2, .grid-x > .large-3, .grid-x > .large-4, .grid-x > .large-5, .grid-x > .large-6, .grid-x > .large-7, .grid-x > .large-8, .grid-x > .large-9, .grid-x > .large-10, .grid-x > .large-11, .grid-x > .large-12 { - flex-basis: auto; } } - -.grid-x > .small-1, .grid-x > .small-2, .grid-x > .small-3, .grid-x > .small-4, .grid-x > .small-5, .grid-x > .small-6, .grid-x > .small-7, .grid-x > .small-8, .grid-x > .small-9, .grid-x > .small-10, .grid-x > .small-11, .grid-x > .small-12 { - flex: 0 0 auto; } - -.grid-x > .small-1 { - width: 8.33333%; } - -.grid-x > .small-2 { - width: 16.66667%; } - -.grid-x > .small-3 { - width: 25%; } - -.grid-x > .small-4 { - width: 33.33333%; } - -.grid-x > .small-5 { - width: 41.66667%; } - -.grid-x > .small-6 { - width: 50%; } - -.grid-x > .small-7 { - width: 58.33333%; } - -.grid-x > .small-8 { - width: 66.66667%; } - -.grid-x > .small-9 { - width: 75%; } - -.grid-x > .small-10 { - width: 83.33333%; } - -.grid-x > .small-11 { - width: 91.66667%; } - -.grid-x > .small-12 { - width: 100%; } - -@media screen and (min-width: 25em) { - .grid-x > .smedium-auto { - flex: 1 1 0px; - width: auto; } - .grid-x > .smedium-shrink, .grid-x > .smedium-1, .grid-x > .smedium-2, .grid-x > .smedium-3, .grid-x > .smedium-4, .grid-x > .smedium-5, .grid-x > .smedium-6, .grid-x > .smedium-7, .grid-x > .smedium-8, .grid-x > .smedium-9, .grid-x > .smedium-10, .grid-x > .smedium-11, .grid-x > .smedium-12 { - flex: 0 0 auto; } - .grid-x > .smedium-shrink { - width: auto; } - .grid-x > .smedium-1 { - width: 8.33333%; } - .grid-x > .smedium-2 { - width: 16.66667%; } - .grid-x > .smedium-3 { - width: 25%; } - .grid-x > .smedium-4 { - width: 33.33333%; } - .grid-x > .smedium-5 { - width: 41.66667%; } - .grid-x > .smedium-6 { - width: 50%; } - .grid-x > .smedium-7 { - width: 58.33333%; } - .grid-x > .smedium-8 { - width: 66.66667%; } - .grid-x > .smedium-9 { - width: 75%; } - .grid-x > .smedium-10 { - width: 83.33333%; } - .grid-x > .smedium-11 { - width: 91.66667%; } - .grid-x > .smedium-12 { - width: 100%; } } - -@media print, screen and (min-width: 40em) { - .grid-x > .medium-auto { - flex: 1 1 0px; - width: auto; } - .grid-x > .medium-shrink, .grid-x > .medium-1, .grid-x > .medium-2, .grid-x > .medium-3, .grid-x > .medium-4, .grid-x > .medium-5, .grid-x > .medium-6, .grid-x > .medium-7, .grid-x > .medium-8, .grid-x > .medium-9, .grid-x > .medium-10, .grid-x > .medium-11, .grid-x > .medium-12 { - flex: 0 0 auto; } - .grid-x > .medium-shrink { - width: auto; } - .grid-x > .medium-1 { - width: 8.33333%; } - .grid-x > .medium-2 { - width: 16.66667%; } - .grid-x > .medium-3 { - width: 25%; } - .grid-x > .medium-4 { - width: 33.33333%; } - .grid-x > .medium-5 { - width: 41.66667%; } - .grid-x > .medium-6 { - width: 50%; } - .grid-x > .medium-7 { - width: 58.33333%; } - .grid-x > .medium-8 { - width: 66.66667%; } - .grid-x > .medium-9 { - width: 75%; } - .grid-x > .medium-10 { - width: 83.33333%; } - .grid-x > .medium-11 { - width: 91.66667%; } - .grid-x > .medium-12 { - width: 100%; } } - -@media print, screen and (min-width: 64em) { - .grid-x > .large-auto { - flex: 1 1 0px; - width: auto; } - .grid-x > .large-shrink, .grid-x > .large-1, .grid-x > .large-2, .grid-x > .large-3, .grid-x > .large-4, .grid-x > .large-5, .grid-x > .large-6, .grid-x > .large-7, .grid-x > .large-8, .grid-x > .large-9, .grid-x > .large-10, .grid-x > .large-11, .grid-x > .large-12 { - flex: 0 0 auto; } - .grid-x > .large-shrink { - width: auto; } - .grid-x > .large-1 { - width: 8.33333%; } - .grid-x > .large-2 { - width: 16.66667%; } - .grid-x > .large-3 { - width: 25%; } - .grid-x > .large-4 { - width: 33.33333%; } - .grid-x > .large-5 { - width: 41.66667%; } - .grid-x > .large-6 { - width: 50%; } - .grid-x > .large-7 { - width: 58.33333%; } - .grid-x > .large-8 { - width: 66.66667%; } - .grid-x > .large-9 { - width: 75%; } - .grid-x > .large-10 { - width: 83.33333%; } - .grid-x > .large-11 { - width: 91.66667%; } - .grid-x > .large-12 { - width: 100%; } } - -.grid-margin-x:not(.grid-x) > .cell { - width: auto; } - -.grid-margin-y:not(.grid-y) > .cell { - height: auto; } - -.grid-margin-x { - margin-left: -0.625rem; - margin-right: -0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-margin-x { - margin-left: -0.9375rem; - margin-right: -0.9375rem; } } - .grid-margin-x > .cell { - width: calc(100% - 1.25rem); - margin-left: 0.625rem; - margin-right: 0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-margin-x > .cell { - width: calc(100% - 1.875rem); - margin-left: 0.9375rem; - margin-right: 0.9375rem; } } - .grid-margin-x > .auto { - width: auto; } - .grid-margin-x > .shrink { - width: auto; } - .grid-margin-x > .small-1 { - width: calc(8.33333% - 1.25rem); } - .grid-margin-x > .small-2 { - width: calc(16.66667% - 1.25rem); } - .grid-margin-x > .small-3 { - width: calc(25% - 1.25rem); } - .grid-margin-x > .small-4 { - width: calc(33.33333% - 1.25rem); } - .grid-margin-x > .small-5 { - width: calc(41.66667% - 1.25rem); } - .grid-margin-x > .small-6 { - width: calc(50% - 1.25rem); } - .grid-margin-x > .small-7 { - width: calc(58.33333% - 1.25rem); } - .grid-margin-x > .small-8 { - width: calc(66.66667% - 1.25rem); } - .grid-margin-x > .small-9 { - width: calc(75% - 1.25rem); } - .grid-margin-x > .small-10 { - width: calc(83.33333% - 1.25rem); } - .grid-margin-x > .small-11 { - width: calc(91.66667% - 1.25rem); } - .grid-margin-x > .small-12 { - width: calc(100% - 1.25rem); } - @media screen and (min-width: 25em) { - .grid-margin-x > .smedium-auto { - width: auto; } - .grid-margin-x > .smedium-shrink { - width: auto; } - .grid-margin-x > .smedium-1 { - width: calc(8.33333% - 1.25rem); } - .grid-margin-x > .smedium-2 { - width: calc(16.66667% - 1.25rem); } - .grid-margin-x > .smedium-3 { - width: calc(25% - 1.25rem); } - .grid-margin-x > .smedium-4 { - width: calc(33.33333% - 1.25rem); } - .grid-margin-x > .smedium-5 { - width: calc(41.66667% - 1.25rem); } - .grid-margin-x > .smedium-6 { - width: calc(50% - 1.25rem); } - .grid-margin-x > .smedium-7 { - width: calc(58.33333% - 1.25rem); } - .grid-margin-x > .smedium-8 { - width: calc(66.66667% - 1.25rem); } - .grid-margin-x > .smedium-9 { - width: calc(75% - 1.25rem); } - .grid-margin-x > .smedium-10 { - width: calc(83.33333% - 1.25rem); } - .grid-margin-x > .smedium-11 { - width: calc(91.66667% - 1.25rem); } - .grid-margin-x > .smedium-12 { - width: calc(100% - 1.25rem); } } - @media print, screen and (min-width: 40em) { - .grid-margin-x > .auto { - width: auto; } - .grid-margin-x > .shrink { - width: auto; } - .grid-margin-x > .small-1 { - width: calc(8.33333% - 1.875rem); } - .grid-margin-x > .small-2 { - width: calc(16.66667% - 1.875rem); } - .grid-margin-x > .small-3 { - width: calc(25% - 1.875rem); } - .grid-margin-x > .small-4 { - width: calc(33.33333% - 1.875rem); } - .grid-margin-x > .small-5 { - width: calc(41.66667% - 1.875rem); } - .grid-margin-x > .small-6 { - width: calc(50% - 1.875rem); } - .grid-margin-x > .small-7 { - width: calc(58.33333% - 1.875rem); } - .grid-margin-x > .small-8 { - width: calc(66.66667% - 1.875rem); } - .grid-margin-x > .small-9 { - width: calc(75% - 1.875rem); } - .grid-margin-x > .small-10 { - width: calc(83.33333% - 1.875rem); } - .grid-margin-x > .small-11 { - width: calc(91.66667% - 1.875rem); } - .grid-margin-x > .small-12 { - width: calc(100% - 1.875rem); } - .grid-margin-x > .medium-auto { - width: auto; } - .grid-margin-x > .medium-shrink { - width: auto; } - .grid-margin-x > .medium-1 { - width: calc(8.33333% - 1.875rem); } - .grid-margin-x > .medium-2 { - width: calc(16.66667% - 1.875rem); } - .grid-margin-x > .medium-3 { - width: calc(25% - 1.875rem); } - .grid-margin-x > .medium-4 { - width: calc(33.33333% - 1.875rem); } - .grid-margin-x > .medium-5 { - width: calc(41.66667% - 1.875rem); } - .grid-margin-x > .medium-6 { - width: calc(50% - 1.875rem); } - .grid-margin-x > .medium-7 { - width: calc(58.33333% - 1.875rem); } - .grid-margin-x > .medium-8 { - width: calc(66.66667% - 1.875rem); } - .grid-margin-x > .medium-9 { - width: calc(75% - 1.875rem); } - .grid-margin-x > .medium-10 { - width: calc(83.33333% - 1.875rem); } - .grid-margin-x > .medium-11 { - width: calc(91.66667% - 1.875rem); } - .grid-margin-x > .medium-12 { - width: calc(100% - 1.875rem); } } - @media print, screen and (min-width: 64em) { - .grid-margin-x > .large-auto { - width: auto; } - .grid-margin-x > .large-shrink { - width: auto; } - .grid-margin-x > .large-1 { - width: calc(8.33333% - 1.875rem); } - .grid-margin-x > .large-2 { - width: calc(16.66667% - 1.875rem); } - .grid-margin-x > .large-3 { - width: calc(25% - 1.875rem); } - .grid-margin-x > .large-4 { - width: calc(33.33333% - 1.875rem); } - .grid-margin-x > .large-5 { - width: calc(41.66667% - 1.875rem); } - .grid-margin-x > .large-6 { - width: calc(50% - 1.875rem); } - .grid-margin-x > .large-7 { - width: calc(58.33333% - 1.875rem); } - .grid-margin-x > .large-8 { - width: calc(66.66667% - 1.875rem); } - .grid-margin-x > .large-9 { - width: calc(75% - 1.875rem); } - .grid-margin-x > .large-10 { - width: calc(83.33333% - 1.875rem); } - .grid-margin-x > .large-11 { - width: calc(91.66667% - 1.875rem); } - .grid-margin-x > .large-12 { - width: calc(100% - 1.875rem); } } - -.grid-padding-x .grid-padding-x { - margin-right: -0.625rem; - margin-left: -0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-padding-x .grid-padding-x { - margin-right: -0.9375rem; - margin-left: -0.9375rem; } } - -.grid-container:not(.full) > .grid-padding-x { - margin-right: -0.625rem; - margin-left: -0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-container:not(.full) > .grid-padding-x { - margin-right: -0.9375rem; - margin-left: -0.9375rem; } } - -.grid-padding-x > .cell { - padding-right: 0.625rem; - padding-left: 0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-padding-x > .cell { - padding-right: 0.9375rem; - padding-left: 0.9375rem; } } - -.small-up-1 > .cell { - width: 100%; } - -.small-up-2 > .cell { - width: 50%; } - -.small-up-3 > .cell { - width: 33.33333%; } - -.small-up-4 > .cell { - width: 25%; } - -.small-up-5 > .cell { - width: 20%; } - -.small-up-6 > .cell { - width: 16.66667%; } - -.small-up-7 > .cell { - width: 14.28571%; } - -.small-up-8 > .cell { - width: 12.5%; } - -@media screen and (min-width: 25em) { - .smedium-up-1 > .cell { - width: 100%; } - .smedium-up-2 > .cell { - width: 50%; } - .smedium-up-3 > .cell { - width: 33.33333%; } - .smedium-up-4 > .cell { - width: 25%; } - .smedium-up-5 > .cell { - width: 20%; } - .smedium-up-6 > .cell { - width: 16.66667%; } - .smedium-up-7 > .cell { - width: 14.28571%; } - .smedium-up-8 > .cell { - width: 12.5%; } } - -@media print, screen and (min-width: 40em) { - .medium-up-1 > .cell { - width: 100%; } - .medium-up-2 > .cell { - width: 50%; } - .medium-up-3 > .cell { - width: 33.33333%; } - .medium-up-4 > .cell { - width: 25%; } - .medium-up-5 > .cell { - width: 20%; } - .medium-up-6 > .cell { - width: 16.66667%; } - .medium-up-7 > .cell { - width: 14.28571%; } - .medium-up-8 > .cell { - width: 12.5%; } } - -@media print, screen and (min-width: 64em) { - .large-up-1 > .cell { - width: 100%; } - .large-up-2 > .cell { - width: 50%; } - .large-up-3 > .cell { - width: 33.33333%; } - .large-up-4 > .cell { - width: 25%; } - .large-up-5 > .cell { - width: 20%; } - .large-up-6 > .cell { - width: 16.66667%; } - .large-up-7 > .cell { - width: 14.28571%; } - .large-up-8 > .cell { - width: 12.5%; } } - -.grid-margin-x.small-up-1 > .cell { - width: calc(100% - 1.25rem); } - -.grid-margin-x.small-up-2 > .cell { - width: calc(50% - 1.25rem); } - -.grid-margin-x.small-up-3 > .cell { - width: calc(33.33333% - 1.25rem); } - -.grid-margin-x.small-up-4 > .cell { - width: calc(25% - 1.25rem); } - -.grid-margin-x.small-up-5 > .cell { - width: calc(20% - 1.25rem); } - -.grid-margin-x.small-up-6 > .cell { - width: calc(16.66667% - 1.25rem); } - -.grid-margin-x.small-up-7 > .cell { - width: calc(14.28571% - 1.25rem); } - -.grid-margin-x.small-up-8 > .cell { - width: calc(12.5% - 1.25rem); } - -@media screen and (min-width: 25em) { - .grid-margin-x.smedium-up-1 > .cell { - width: calc(100% - 1.25rem); } - .grid-margin-x.smedium-up-2 > .cell { - width: calc(50% - 1.25rem); } - .grid-margin-x.smedium-up-3 > .cell { - width: calc(33.33333% - 1.25rem); } - .grid-margin-x.smedium-up-4 > .cell { - width: calc(25% - 1.25rem); } - .grid-margin-x.smedium-up-5 > .cell { - width: calc(20% - 1.25rem); } - .grid-margin-x.smedium-up-6 > .cell { - width: calc(16.66667% - 1.25rem); } - .grid-margin-x.smedium-up-7 > .cell { - width: calc(14.28571% - 1.25rem); } - .grid-margin-x.smedium-up-8 > .cell { - width: calc(12.5% - 1.25rem); } } - -@media print, screen and (min-width: 40em) { - .grid-margin-x.small-up-1 > .cell { - width: calc(100% - 1.875rem); } - .grid-margin-x.small-up-2 > .cell { - width: calc(50% - 1.875rem); } - .grid-margin-x.small-up-3 > .cell { - width: calc(33.33333% - 1.875rem); } - .grid-margin-x.small-up-4 > .cell { - width: calc(25% - 1.875rem); } - .grid-margin-x.small-up-5 > .cell { - width: calc(20% - 1.875rem); } - .grid-margin-x.small-up-6 > .cell { - width: calc(16.66667% - 1.875rem); } - .grid-margin-x.small-up-7 > .cell { - width: calc(14.28571% - 1.875rem); } - .grid-margin-x.small-up-8 > .cell { - width: calc(12.5% - 1.875rem); } - .grid-margin-x.medium-up-1 > .cell { - width: calc(100% - 1.875rem); } - .grid-margin-x.medium-up-2 > .cell { - width: calc(50% - 1.875rem); } - .grid-margin-x.medium-up-3 > .cell { - width: calc(33.33333% - 1.875rem); } - .grid-margin-x.medium-up-4 > .cell { - width: calc(25% - 1.875rem); } - .grid-margin-x.medium-up-5 > .cell { - width: calc(20% - 1.875rem); } - .grid-margin-x.medium-up-6 > .cell { - width: calc(16.66667% - 1.875rem); } - .grid-margin-x.medium-up-7 > .cell { - width: calc(14.28571% - 1.875rem); } - .grid-margin-x.medium-up-8 > .cell { - width: calc(12.5% - 1.875rem); } } - -@media print, screen and (min-width: 64em) { - .grid-margin-x.large-up-1 > .cell { - width: calc(100% - 1.875rem); } - .grid-margin-x.large-up-2 > .cell { - width: calc(50% - 1.875rem); } - .grid-margin-x.large-up-3 > .cell { - width: calc(33.33333% - 1.875rem); } - .grid-margin-x.large-up-4 > .cell { - width: calc(25% - 1.875rem); } - .grid-margin-x.large-up-5 > .cell { - width: calc(20% - 1.875rem); } - .grid-margin-x.large-up-6 > .cell { - width: calc(16.66667% - 1.875rem); } - .grid-margin-x.large-up-7 > .cell { - width: calc(14.28571% - 1.875rem); } - .grid-margin-x.large-up-8 > .cell { - width: calc(12.5% - 1.875rem); } } - -.small-margin-collapse { - margin-right: 0; - margin-left: 0; } - .small-margin-collapse > .cell { - margin-right: 0; - margin-left: 0; } - .small-margin-collapse > .small-1 { - width: 8.33333%; } - .small-margin-collapse > .small-2 { - width: 16.66667%; } - .small-margin-collapse > .small-3 { - width: 25%; } - .small-margin-collapse > .small-4 { - width: 33.33333%; } - .small-margin-collapse > .small-5 { - width: 41.66667%; } - .small-margin-collapse > .small-6 { - width: 50%; } - .small-margin-collapse > .small-7 { - width: 58.33333%; } - .small-margin-collapse > .small-8 { - width: 66.66667%; } - .small-margin-collapse > .small-9 { - width: 75%; } - .small-margin-collapse > .small-10 { - width: 83.33333%; } - .small-margin-collapse > .small-11 { - width: 91.66667%; } - .small-margin-collapse > .small-12 { - width: 100%; } - @media screen and (min-width: 25em) { - .small-margin-collapse > .smedium-1 { - width: 8.33333%; } - .small-margin-collapse > .smedium-2 { - width: 16.66667%; } - .small-margin-collapse > .smedium-3 { - width: 25%; } - .small-margin-collapse > .smedium-4 { - width: 33.33333%; } - .small-margin-collapse > .smedium-5 { - width: 41.66667%; } - .small-margin-collapse > .smedium-6 { - width: 50%; } - .small-margin-collapse > .smedium-7 { - width: 58.33333%; } - .small-margin-collapse > .smedium-8 { - width: 66.66667%; } - .small-margin-collapse > .smedium-9 { - width: 75%; } - .small-margin-collapse > .smedium-10 { - width: 83.33333%; } - .small-margin-collapse > .smedium-11 { - width: 91.66667%; } - .small-margin-collapse > .smedium-12 { - width: 100%; } } - @media print, screen and (min-width: 40em) { - .small-margin-collapse > .medium-1 { - width: 8.33333%; } - .small-margin-collapse > .medium-2 { - width: 16.66667%; } - .small-margin-collapse > .medium-3 { - width: 25%; } - .small-margin-collapse > .medium-4 { - width: 33.33333%; } - .small-margin-collapse > .medium-5 { - width: 41.66667%; } - .small-margin-collapse > .medium-6 { - width: 50%; } - .small-margin-collapse > .medium-7 { - width: 58.33333%; } - .small-margin-collapse > .medium-8 { - width: 66.66667%; } - .small-margin-collapse > .medium-9 { - width: 75%; } - .small-margin-collapse > .medium-10 { - width: 83.33333%; } - .small-margin-collapse > .medium-11 { - width: 91.66667%; } - .small-margin-collapse > .medium-12 { - width: 100%; } } - @media print, screen and (min-width: 64em) { - .small-margin-collapse > .large-1 { - width: 8.33333%; } - .small-margin-collapse > .large-2 { - width: 16.66667%; } - .small-margin-collapse > .large-3 { - width: 25%; } - .small-margin-collapse > .large-4 { - width: 33.33333%; } - .small-margin-collapse > .large-5 { - width: 41.66667%; } - .small-margin-collapse > .large-6 { - width: 50%; } - .small-margin-collapse > .large-7 { - width: 58.33333%; } - .small-margin-collapse > .large-8 { - width: 66.66667%; } - .small-margin-collapse > .large-9 { - width: 75%; } - .small-margin-collapse > .large-10 { - width: 83.33333%; } - .small-margin-collapse > .large-11 { - width: 91.66667%; } - .small-margin-collapse > .large-12 { - width: 100%; } } - -.small-padding-collapse { - margin-right: 0; - margin-left: 0; } - .small-padding-collapse > .cell { - padding-right: 0; - padding-left: 0; } - -@media screen and (min-width: 25em) { - .smedium-margin-collapse { - margin-right: 0; - margin-left: 0; } - .smedium-margin-collapse > .cell { - margin-right: 0; - margin-left: 0; } } - -@media screen and (min-width: 25em) { - .smedium-margin-collapse > .small-1 { - width: 8.33333%; } - .smedium-margin-collapse > .small-2 { - width: 16.66667%; } - .smedium-margin-collapse > .small-3 { - width: 25%; } - .smedium-margin-collapse > .small-4 { - width: 33.33333%; } - .smedium-margin-collapse > .small-5 { - width: 41.66667%; } - .smedium-margin-collapse > .small-6 { - width: 50%; } - .smedium-margin-collapse > .small-7 { - width: 58.33333%; } - .smedium-margin-collapse > .small-8 { - width: 66.66667%; } - .smedium-margin-collapse > .small-9 { - width: 75%; } - .smedium-margin-collapse > .small-10 { - width: 83.33333%; } - .smedium-margin-collapse > .small-11 { - width: 91.66667%; } - .smedium-margin-collapse > .small-12 { - width: 100%; } } - -@media screen and (min-width: 25em) { - .smedium-margin-collapse > .smedium-1 { - width: 8.33333%; } - .smedium-margin-collapse > .smedium-2 { - width: 16.66667%; } - .smedium-margin-collapse > .smedium-3 { - width: 25%; } - .smedium-margin-collapse > .smedium-4 { - width: 33.33333%; } - .smedium-margin-collapse > .smedium-5 { - width: 41.66667%; } - .smedium-margin-collapse > .smedium-6 { - width: 50%; } - .smedium-margin-collapse > .smedium-7 { - width: 58.33333%; } - .smedium-margin-collapse > .smedium-8 { - width: 66.66667%; } - .smedium-margin-collapse > .smedium-9 { - width: 75%; } - .smedium-margin-collapse > .smedium-10 { - width: 83.33333%; } - .smedium-margin-collapse > .smedium-11 { - width: 91.66667%; } - .smedium-margin-collapse > .smedium-12 { - width: 100%; } } - -@media screen and (min-width: 25em) { - .smedium-margin-collapse > .medium-1 { - width: 8.33333%; } - .smedium-margin-collapse > .medium-2 { - width: 16.66667%; } - .smedium-margin-collapse > .medium-3 { - width: 25%; } - .smedium-margin-collapse > .medium-4 { - width: 33.33333%; } - .smedium-margin-collapse > .medium-5 { - width: 41.66667%; } - .smedium-margin-collapse > .medium-6 { - width: 50%; } - .smedium-margin-collapse > .medium-7 { - width: 58.33333%; } - .smedium-margin-collapse > .medium-8 { - width: 66.66667%; } - .smedium-margin-collapse > .medium-9 { - width: 75%; } - .smedium-margin-collapse > .medium-10 { - width: 83.33333%; } - .smedium-margin-collapse > .medium-11 { - width: 91.66667%; } - .smedium-margin-collapse > .medium-12 { - width: 100%; } } - -@media screen and (min-width: 25em) { - .smedium-margin-collapse > .large-1 { - width: 8.33333%; } - .smedium-margin-collapse > .large-2 { - width: 16.66667%; } - .smedium-margin-collapse > .large-3 { - width: 25%; } - .smedium-margin-collapse > .large-4 { - width: 33.33333%; } - .smedium-margin-collapse > .large-5 { - width: 41.66667%; } - .smedium-margin-collapse > .large-6 { - width: 50%; } - .smedium-margin-collapse > .large-7 { - width: 58.33333%; } - .smedium-margin-collapse > .large-8 { - width: 66.66667%; } - .smedium-margin-collapse > .large-9 { - width: 75%; } - .smedium-margin-collapse > .large-10 { - width: 83.33333%; } - .smedium-margin-collapse > .large-11 { - width: 91.66667%; } - .smedium-margin-collapse > .large-12 { - width: 100%; } } - -@media screen and (min-width: 25em) { - .smedium-padding-collapse { - margin-right: 0; - margin-left: 0; } - .smedium-padding-collapse > .cell { - padding-right: 0; - padding-left: 0; } } - -@media print, screen and (min-width: 40em) { - .medium-margin-collapse { - margin-right: 0; - margin-left: 0; } - .medium-margin-collapse > .cell { - margin-right: 0; - margin-left: 0; } } - -@media print, screen and (min-width: 40em) { - .medium-margin-collapse > .small-1 { - width: 8.33333%; } - .medium-margin-collapse > .small-2 { - width: 16.66667%; } - .medium-margin-collapse > .small-3 { - width: 25%; } - .medium-margin-collapse > .small-4 { - width: 33.33333%; } - .medium-margin-collapse > .small-5 { - width: 41.66667%; } - .medium-margin-collapse > .small-6 { - width: 50%; } - .medium-margin-collapse > .small-7 { - width: 58.33333%; } - .medium-margin-collapse > .small-8 { - width: 66.66667%; } - .medium-margin-collapse > .small-9 { - width: 75%; } - .medium-margin-collapse > .small-10 { - width: 83.33333%; } - .medium-margin-collapse > .small-11 { - width: 91.66667%; } - .medium-margin-collapse > .small-12 { - width: 100%; } } - -@media screen and (min-width: 25em) { - .medium-margin-collapse > .smedium-1 { - width: 8.33333%; } - .medium-margin-collapse > .smedium-2 { - width: 16.66667%; } - .medium-margin-collapse > .smedium-3 { - width: 25%; } - .medium-margin-collapse > .smedium-4 { - width: 33.33333%; } - .medium-margin-collapse > .smedium-5 { - width: 41.66667%; } - .medium-margin-collapse > .smedium-6 { - width: 50%; } - .medium-margin-collapse > .smedium-7 { - width: 58.33333%; } - .medium-margin-collapse > .smedium-8 { - width: 66.66667%; } - .medium-margin-collapse > .smedium-9 { - width: 75%; } - .medium-margin-collapse > .smedium-10 { - width: 83.33333%; } - .medium-margin-collapse > .smedium-11 { - width: 91.66667%; } - .medium-margin-collapse > .smedium-12 { - width: 100%; } } - -@media print, screen and (min-width: 40em) { - .medium-margin-collapse > .medium-1 { - width: 8.33333%; } - .medium-margin-collapse > .medium-2 { - width: 16.66667%; } - .medium-margin-collapse > .medium-3 { - width: 25%; } - .medium-margin-collapse > .medium-4 { - width: 33.33333%; } - .medium-margin-collapse > .medium-5 { - width: 41.66667%; } - .medium-margin-collapse > .medium-6 { - width: 50%; } - .medium-margin-collapse > .medium-7 { - width: 58.33333%; } - .medium-margin-collapse > .medium-8 { - width: 66.66667%; } - .medium-margin-collapse > .medium-9 { - width: 75%; } - .medium-margin-collapse > .medium-10 { - width: 83.33333%; } - .medium-margin-collapse > .medium-11 { - width: 91.66667%; } - .medium-margin-collapse > .medium-12 { - width: 100%; } } - -@media print, screen and (min-width: 64em) { - .medium-margin-collapse > .large-1 { - width: 8.33333%; } - .medium-margin-collapse > .large-2 { - width: 16.66667%; } - .medium-margin-collapse > .large-3 { - width: 25%; } - .medium-margin-collapse > .large-4 { - width: 33.33333%; } - .medium-margin-collapse > .large-5 { - width: 41.66667%; } - .medium-margin-collapse > .large-6 { - width: 50%; } - .medium-margin-collapse > .large-7 { - width: 58.33333%; } - .medium-margin-collapse > .large-8 { - width: 66.66667%; } - .medium-margin-collapse > .large-9 { - width: 75%; } - .medium-margin-collapse > .large-10 { - width: 83.33333%; } - .medium-margin-collapse > .large-11 { - width: 91.66667%; } - .medium-margin-collapse > .large-12 { - width: 100%; } } - -@media print, screen and (min-width: 40em) { - .medium-padding-collapse { - margin-right: 0; - margin-left: 0; } - .medium-padding-collapse > .cell { - padding-right: 0; - padding-left: 0; } } - -@media print, screen and (min-width: 64em) { - .large-margin-collapse { - margin-right: 0; - margin-left: 0; } - .large-margin-collapse > .cell { - margin-right: 0; - margin-left: 0; } } - -@media print, screen and (min-width: 64em) { - .large-margin-collapse > .small-1 { - width: 8.33333%; } - .large-margin-collapse > .small-2 { - width: 16.66667%; } - .large-margin-collapse > .small-3 { - width: 25%; } - .large-margin-collapse > .small-4 { - width: 33.33333%; } - .large-margin-collapse > .small-5 { - width: 41.66667%; } - .large-margin-collapse > .small-6 { - width: 50%; } - .large-margin-collapse > .small-7 { - width: 58.33333%; } - .large-margin-collapse > .small-8 { - width: 66.66667%; } - .large-margin-collapse > .small-9 { - width: 75%; } - .large-margin-collapse > .small-10 { - width: 83.33333%; } - .large-margin-collapse > .small-11 { - width: 91.66667%; } - .large-margin-collapse > .small-12 { - width: 100%; } } - -@media screen and (min-width: 25em) { - .large-margin-collapse > .smedium-1 { - width: 8.33333%; } - .large-margin-collapse > .smedium-2 { - width: 16.66667%; } - .large-margin-collapse > .smedium-3 { - width: 25%; } - .large-margin-collapse > .smedium-4 { - width: 33.33333%; } - .large-margin-collapse > .smedium-5 { - width: 41.66667%; } - .large-margin-collapse > .smedium-6 { - width: 50%; } - .large-margin-collapse > .smedium-7 { - width: 58.33333%; } - .large-margin-collapse > .smedium-8 { - width: 66.66667%; } - .large-margin-collapse > .smedium-9 { - width: 75%; } - .large-margin-collapse > .smedium-10 { - width: 83.33333%; } - .large-margin-collapse > .smedium-11 { - width: 91.66667%; } - .large-margin-collapse > .smedium-12 { - width: 100%; } } - -@media print, screen and (min-width: 64em) { - .large-margin-collapse > .medium-1 { - width: 8.33333%; } - .large-margin-collapse > .medium-2 { - width: 16.66667%; } - .large-margin-collapse > .medium-3 { - width: 25%; } - .large-margin-collapse > .medium-4 { - width: 33.33333%; } - .large-margin-collapse > .medium-5 { - width: 41.66667%; } - .large-margin-collapse > .medium-6 { - width: 50%; } - .large-margin-collapse > .medium-7 { - width: 58.33333%; } - .large-margin-collapse > .medium-8 { - width: 66.66667%; } - .large-margin-collapse > .medium-9 { - width: 75%; } - .large-margin-collapse > .medium-10 { - width: 83.33333%; } - .large-margin-collapse > .medium-11 { - width: 91.66667%; } - .large-margin-collapse > .medium-12 { - width: 100%; } } - -@media print, screen and (min-width: 64em) { - .large-margin-collapse > .large-1 { - width: 8.33333%; } - .large-margin-collapse > .large-2 { - width: 16.66667%; } - .large-margin-collapse > .large-3 { - width: 25%; } - .large-margin-collapse > .large-4 { - width: 33.33333%; } - .large-margin-collapse > .large-5 { - width: 41.66667%; } - .large-margin-collapse > .large-6 { - width: 50%; } - .large-margin-collapse > .large-7 { - width: 58.33333%; } - .large-margin-collapse > .large-8 { - width: 66.66667%; } - .large-margin-collapse > .large-9 { - width: 75%; } - .large-margin-collapse > .large-10 { - width: 83.33333%; } - .large-margin-collapse > .large-11 { - width: 91.66667%; } - .large-margin-collapse > .large-12 { - width: 100%; } } - -@media print, screen and (min-width: 64em) { - .large-padding-collapse { - margin-right: 0; - margin-left: 0; } - .large-padding-collapse > .cell { - padding-right: 0; - padding-left: 0; } } - -.small-offset-0 { - margin-left: 0%; } - -.grid-margin-x > .small-offset-0 { - margin-left: calc(0% + 0.625rem); } - -.small-offset-1 { - margin-left: 8.33333%; } - -.grid-margin-x > .small-offset-1 { - margin-left: calc(8.33333% + 0.625rem); } - -.small-offset-2 { - margin-left: 16.66667%; } - -.grid-margin-x > .small-offset-2 { - margin-left: calc(16.66667% + 0.625rem); } - -.small-offset-3 { - margin-left: 25%; } - -.grid-margin-x > .small-offset-3 { - margin-left: calc(25% + 0.625rem); } - -.small-offset-4 { - margin-left: 33.33333%; } - -.grid-margin-x > .small-offset-4 { - margin-left: calc(33.33333% + 0.625rem); } - -.small-offset-5 { - margin-left: 41.66667%; } - -.grid-margin-x > .small-offset-5 { - margin-left: calc(41.66667% + 0.625rem); } - -.small-offset-6 { - margin-left: 50%; } - -.grid-margin-x > .small-offset-6 { - margin-left: calc(50% + 0.625rem); } - -.small-offset-7 { - margin-left: 58.33333%; } - -.grid-margin-x > .small-offset-7 { - margin-left: calc(58.33333% + 0.625rem); } - -.small-offset-8 { - margin-left: 66.66667%; } - -.grid-margin-x > .small-offset-8 { - margin-left: calc(66.66667% + 0.625rem); } - -.small-offset-9 { - margin-left: 75%; } - -.grid-margin-x > .small-offset-9 { - margin-left: calc(75% + 0.625rem); } - -.small-offset-10 { - margin-left: 83.33333%; } - -.grid-margin-x > .small-offset-10 { - margin-left: calc(83.33333% + 0.625rem); } - -.small-offset-11 { - margin-left: 91.66667%; } - -.grid-margin-x > .small-offset-11 { - margin-left: calc(91.66667% + 0.625rem); } - -@media screen and (min-width: 25em) { - .smedium-offset-0 { - margin-left: 0%; } - .grid-margin-x > .smedium-offset-0 { - margin-left: calc(0% + 0.625rem); } - .smedium-offset-1 { - margin-left: 8.33333%; } - .grid-margin-x > .smedium-offset-1 { - margin-left: calc(8.33333% + 0.625rem); } - .smedium-offset-2 { - margin-left: 16.66667%; } - .grid-margin-x > .smedium-offset-2 { - margin-left: calc(16.66667% + 0.625rem); } - .smedium-offset-3 { - margin-left: 25%; } - .grid-margin-x > .smedium-offset-3 { - margin-left: calc(25% + 0.625rem); } - .smedium-offset-4 { - margin-left: 33.33333%; } - .grid-margin-x > .smedium-offset-4 { - margin-left: calc(33.33333% + 0.625rem); } - .smedium-offset-5 { - margin-left: 41.66667%; } - .grid-margin-x > .smedium-offset-5 { - margin-left: calc(41.66667% + 0.625rem); } - .smedium-offset-6 { - margin-left: 50%; } - .grid-margin-x > .smedium-offset-6 { - margin-left: calc(50% + 0.625rem); } - .smedium-offset-7 { - margin-left: 58.33333%; } - .grid-margin-x > .smedium-offset-7 { - margin-left: calc(58.33333% + 0.625rem); } - .smedium-offset-8 { - margin-left: 66.66667%; } - .grid-margin-x > .smedium-offset-8 { - margin-left: calc(66.66667% + 0.625rem); } - .smedium-offset-9 { - margin-left: 75%; } - .grid-margin-x > .smedium-offset-9 { - margin-left: calc(75% + 0.625rem); } - .smedium-offset-10 { - margin-left: 83.33333%; } - .grid-margin-x > .smedium-offset-10 { - margin-left: calc(83.33333% + 0.625rem); } - .smedium-offset-11 { - margin-left: 91.66667%; } - .grid-margin-x > .smedium-offset-11 { - margin-left: calc(91.66667% + 0.625rem); } } - -@media print, screen and (min-width: 40em) { - .medium-offset-0 { - margin-left: 0%; } - .grid-margin-x > .medium-offset-0 { - margin-left: calc(0% + 0.9375rem); } - .medium-offset-1 { - margin-left: 8.33333%; } - .grid-margin-x > .medium-offset-1 { - margin-left: calc(8.33333% + 0.9375rem); } - .medium-offset-2 { - margin-left: 16.66667%; } - .grid-margin-x > .medium-offset-2 { - margin-left: calc(16.66667% + 0.9375rem); } - .medium-offset-3 { - margin-left: 25%; } - .grid-margin-x > .medium-offset-3 { - margin-left: calc(25% + 0.9375rem); } - .medium-offset-4 { - margin-left: 33.33333%; } - .grid-margin-x > .medium-offset-4 { - margin-left: calc(33.33333% + 0.9375rem); } - .medium-offset-5 { - margin-left: 41.66667%; } - .grid-margin-x > .medium-offset-5 { - margin-left: calc(41.66667% + 0.9375rem); } - .medium-offset-6 { - margin-left: 50%; } - .grid-margin-x > .medium-offset-6 { - margin-left: calc(50% + 0.9375rem); } - .medium-offset-7 { - margin-left: 58.33333%; } - .grid-margin-x > .medium-offset-7 { - margin-left: calc(58.33333% + 0.9375rem); } - .medium-offset-8 { - margin-left: 66.66667%; } - .grid-margin-x > .medium-offset-8 { - margin-left: calc(66.66667% + 0.9375rem); } - .medium-offset-9 { - margin-left: 75%; } - .grid-margin-x > .medium-offset-9 { - margin-left: calc(75% + 0.9375rem); } - .medium-offset-10 { - margin-left: 83.33333%; } - .grid-margin-x > .medium-offset-10 { - margin-left: calc(83.33333% + 0.9375rem); } - .medium-offset-11 { - margin-left: 91.66667%; } - .grid-margin-x > .medium-offset-11 { - margin-left: calc(91.66667% + 0.9375rem); } } - -@media print, screen and (min-width: 64em) { - .large-offset-0 { - margin-left: 0%; } - .grid-margin-x > .large-offset-0 { - margin-left: calc(0% + 0.9375rem); } - .large-offset-1 { - margin-left: 8.33333%; } - .grid-margin-x > .large-offset-1 { - margin-left: calc(8.33333% + 0.9375rem); } - .large-offset-2 { - margin-left: 16.66667%; } - .grid-margin-x > .large-offset-2 { - margin-left: calc(16.66667% + 0.9375rem); } - .large-offset-3 { - margin-left: 25%; } - .grid-margin-x > .large-offset-3 { - margin-left: calc(25% + 0.9375rem); } - .large-offset-4 { - margin-left: 33.33333%; } - .grid-margin-x > .large-offset-4 { - margin-left: calc(33.33333% + 0.9375rem); } - .large-offset-5 { - margin-left: 41.66667%; } - .grid-margin-x > .large-offset-5 { - margin-left: calc(41.66667% + 0.9375rem); } - .large-offset-6 { - margin-left: 50%; } - .grid-margin-x > .large-offset-6 { - margin-left: calc(50% + 0.9375rem); } - .large-offset-7 { - margin-left: 58.33333%; } - .grid-margin-x > .large-offset-7 { - margin-left: calc(58.33333% + 0.9375rem); } - .large-offset-8 { - margin-left: 66.66667%; } - .grid-margin-x > .large-offset-8 { - margin-left: calc(66.66667% + 0.9375rem); } - .large-offset-9 { - margin-left: 75%; } - .grid-margin-x > .large-offset-9 { - margin-left: calc(75% + 0.9375rem); } - .large-offset-10 { - margin-left: 83.33333%; } - .grid-margin-x > .large-offset-10 { - margin-left: calc(83.33333% + 0.9375rem); } - .large-offset-11 { - margin-left: 91.66667%; } - .grid-margin-x > .large-offset-11 { - margin-left: calc(91.66667% + 0.9375rem); } } - -.grid-y { - display: flex; - flex-flow: column nowrap; } - .grid-y > .cell { - height: auto; - max-height: none; } - .grid-y > .auto { - height: auto; } - .grid-y > .shrink { - height: auto; } - .grid-y > .small-shrink, .grid-y > .small-full, .grid-y > .small-1, .grid-y > .small-2, .grid-y > .small-3, .grid-y > .small-4, .grid-y > .small-5, .grid-y > .small-6, .grid-y > .small-7, .grid-y > .small-8, .grid-y > .small-9, .grid-y > .small-10, .grid-y > .small-11, .grid-y > .small-12 { - flex-basis: auto; } - @media screen and (min-width: 25em) { - .grid-y > .smedium-shrink, .grid-y > .smedium-full, .grid-y > .smedium-1, .grid-y > .smedium-2, .grid-y > .smedium-3, .grid-y > .smedium-4, .grid-y > .smedium-5, .grid-y > .smedium-6, .grid-y > .smedium-7, .grid-y > .smedium-8, .grid-y > .smedium-9, .grid-y > .smedium-10, .grid-y > .smedium-11, .grid-y > .smedium-12 { - flex-basis: auto; } } - @media print, screen and (min-width: 40em) { - .grid-y > .medium-shrink, .grid-y > .medium-full, .grid-y > .medium-1, .grid-y > .medium-2, .grid-y > .medium-3, .grid-y > .medium-4, .grid-y > .medium-5, .grid-y > .medium-6, .grid-y > .medium-7, .grid-y > .medium-8, .grid-y > .medium-9, .grid-y > .medium-10, .grid-y > .medium-11, .grid-y > .medium-12 { - flex-basis: auto; } } - @media print, screen and (min-width: 64em) { - .grid-y > .large-shrink, .grid-y > .large-full, .grid-y > .large-1, .grid-y > .large-2, .grid-y > .large-3, .grid-y > .large-4, .grid-y > .large-5, .grid-y > .large-6, .grid-y > .large-7, .grid-y > .large-8, .grid-y > .large-9, .grid-y > .large-10, .grid-y > .large-11, .grid-y > .large-12 { - flex-basis: auto; } } - .grid-y > .small-1, .grid-y > .small-2, .grid-y > .small-3, .grid-y > .small-4, .grid-y > .small-5, .grid-y > .small-6, .grid-y > .small-7, .grid-y > .small-8, .grid-y > .small-9, .grid-y > .small-10, .grid-y > .small-11, .grid-y > .small-12 { - flex: 0 0 auto; } - .grid-y > .small-1 { - height: 8.33333%; } - .grid-y > .small-2 { - height: 16.66667%; } - .grid-y > .small-3 { - height: 25%; } - .grid-y > .small-4 { - height: 33.33333%; } - .grid-y > .small-5 { - height: 41.66667%; } - .grid-y > .small-6 { - height: 50%; } - .grid-y > .small-7 { - height: 58.33333%; } - .grid-y > .small-8 { - height: 66.66667%; } - .grid-y > .small-9 { - height: 75%; } - .grid-y > .small-10 { - height: 83.33333%; } - .grid-y > .small-11 { - height: 91.66667%; } - .grid-y > .small-12 { - height: 100%; } - @media screen and (min-width: 25em) { - .grid-y > .smedium-auto { - flex: 1 1 0px; - height: auto; } - .grid-y > .smedium-shrink, .grid-y > .smedium-1, .grid-y > .smedium-2, .grid-y > .smedium-3, .grid-y > .smedium-4, .grid-y > .smedium-5, .grid-y > .smedium-6, .grid-y > .smedium-7, .grid-y > .smedium-8, .grid-y > .smedium-9, .grid-y > .smedium-10, .grid-y > .smedium-11, .grid-y > .smedium-12 { - flex: 0 0 auto; } - .grid-y > .smedium-shrink { - height: auto; } - .grid-y > .smedium-1 { - height: 8.33333%; } - .grid-y > .smedium-2 { - height: 16.66667%; } - .grid-y > .smedium-3 { - height: 25%; } - .grid-y > .smedium-4 { - height: 33.33333%; } - .grid-y > .smedium-5 { - height: 41.66667%; } - .grid-y > .smedium-6 { - height: 50%; } - .grid-y > .smedium-7 { - height: 58.33333%; } - .grid-y > .smedium-8 { - height: 66.66667%; } - .grid-y > .smedium-9 { - height: 75%; } - .grid-y > .smedium-10 { - height: 83.33333%; } - .grid-y > .smedium-11 { - height: 91.66667%; } - .grid-y > .smedium-12 { - height: 100%; } } - @media print, screen and (min-width: 40em) { - .grid-y > .medium-auto { - flex: 1 1 0px; - height: auto; } - .grid-y > .medium-shrink, .grid-y > .medium-1, .grid-y > .medium-2, .grid-y > .medium-3, .grid-y > .medium-4, .grid-y > .medium-5, .grid-y > .medium-6, .grid-y > .medium-7, .grid-y > .medium-8, .grid-y > .medium-9, .grid-y > .medium-10, .grid-y > .medium-11, .grid-y > .medium-12 { - flex: 0 0 auto; } - .grid-y > .medium-shrink { - height: auto; } - .grid-y > .medium-1 { - height: 8.33333%; } - .grid-y > .medium-2 { - height: 16.66667%; } - .grid-y > .medium-3 { - height: 25%; } - .grid-y > .medium-4 { - height: 33.33333%; } - .grid-y > .medium-5 { - height: 41.66667%; } - .grid-y > .medium-6 { - height: 50%; } - .grid-y > .medium-7 { - height: 58.33333%; } - .grid-y > .medium-8 { - height: 66.66667%; } - .grid-y > .medium-9 { - height: 75%; } - .grid-y > .medium-10 { - height: 83.33333%; } - .grid-y > .medium-11 { - height: 91.66667%; } - .grid-y > .medium-12 { - height: 100%; } } - @media print, screen and (min-width: 64em) { - .grid-y > .large-auto { - flex: 1 1 0px; - height: auto; } - .grid-y > .large-shrink, .grid-y > .large-1, .grid-y > .large-2, .grid-y > .large-3, .grid-y > .large-4, .grid-y > .large-5, .grid-y > .large-6, .grid-y > .large-7, .grid-y > .large-8, .grid-y > .large-9, .grid-y > .large-10, .grid-y > .large-11, .grid-y > .large-12 { - flex: 0 0 auto; } - .grid-y > .large-shrink { - height: auto; } - .grid-y > .large-1 { - height: 8.33333%; } - .grid-y > .large-2 { - height: 16.66667%; } - .grid-y > .large-3 { - height: 25%; } - .grid-y > .large-4 { - height: 33.33333%; } - .grid-y > .large-5 { - height: 41.66667%; } - .grid-y > .large-6 { - height: 50%; } - .grid-y > .large-7 { - height: 58.33333%; } - .grid-y > .large-8 { - height: 66.66667%; } - .grid-y > .large-9 { - height: 75%; } - .grid-y > .large-10 { - height: 83.33333%; } - .grid-y > .large-11 { - height: 91.66667%; } - .grid-y > .large-12 { - height: 100%; } } - -.grid-padding-y .grid-padding-y { - margin-top: -0.625rem; - margin-bottom: -0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-padding-y .grid-padding-y { - margin-top: -0.9375rem; - margin-bottom: -0.9375rem; } } - -.grid-padding-y > .cell { - padding-top: 0.625rem; - padding-bottom: 0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-padding-y > .cell { - padding-top: 0.9375rem; - padding-bottom: 0.9375rem; } } - -.grid-margin-y { - margin-top: -0.625rem; - margin-bottom: -0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-margin-y { - margin-top: -0.9375rem; - margin-bottom: -0.9375rem; } } - .grid-margin-y > .cell { - height: calc(100% - 1.25rem); - margin-top: 0.625rem; - margin-bottom: 0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-margin-y > .cell { - height: calc(100% - 1.875rem); - margin-top: 0.9375rem; - margin-bottom: 0.9375rem; } } - .grid-margin-y > .auto { - height: auto; } - .grid-margin-y > .shrink { - height: auto; } - .grid-margin-y > .small-1 { - height: calc(8.33333% - 1.25rem); } - .grid-margin-y > .small-2 { - height: calc(16.66667% - 1.25rem); } - .grid-margin-y > .small-3 { - height: calc(25% - 1.25rem); } - .grid-margin-y > .small-4 { - height: calc(33.33333% - 1.25rem); } - .grid-margin-y > .small-5 { - height: calc(41.66667% - 1.25rem); } - .grid-margin-y > .small-6 { - height: calc(50% - 1.25rem); } - .grid-margin-y > .small-7 { - height: calc(58.33333% - 1.25rem); } - .grid-margin-y > .small-8 { - height: calc(66.66667% - 1.25rem); } - .grid-margin-y > .small-9 { - height: calc(75% - 1.25rem); } - .grid-margin-y > .small-10 { - height: calc(83.33333% - 1.25rem); } - .grid-margin-y > .small-11 { - height: calc(91.66667% - 1.25rem); } - .grid-margin-y > .small-12 { - height: calc(100% - 1.25rem); } - @media screen and (min-width: 25em) { - .grid-margin-y > .smedium-auto { - height: auto; } - .grid-margin-y > .smedium-shrink { - height: auto; } - .grid-margin-y > .smedium-1 { - height: calc(8.33333% - 1.25rem); } - .grid-margin-y > .smedium-2 { - height: calc(16.66667% - 1.25rem); } - .grid-margin-y > .smedium-3 { - height: calc(25% - 1.25rem); } - .grid-margin-y > .smedium-4 { - height: calc(33.33333% - 1.25rem); } - .grid-margin-y > .smedium-5 { - height: calc(41.66667% - 1.25rem); } - .grid-margin-y > .smedium-6 { - height: calc(50% - 1.25rem); } - .grid-margin-y > .smedium-7 { - height: calc(58.33333% - 1.25rem); } - .grid-margin-y > .smedium-8 { - height: calc(66.66667% - 1.25rem); } - .grid-margin-y > .smedium-9 { - height: calc(75% - 1.25rem); } - .grid-margin-y > .smedium-10 { - height: calc(83.33333% - 1.25rem); } - .grid-margin-y > .smedium-11 { - height: calc(91.66667% - 1.25rem); } - .grid-margin-y > .smedium-12 { - height: calc(100% - 1.25rem); } } - @media print, screen and (min-width: 40em) { - .grid-margin-y > .auto { - height: auto; } - .grid-margin-y > .shrink { - height: auto; } - .grid-margin-y > .small-1 { - height: calc(8.33333% - 1.875rem); } - .grid-margin-y > .small-2 { - height: calc(16.66667% - 1.875rem); } - .grid-margin-y > .small-3 { - height: calc(25% - 1.875rem); } - .grid-margin-y > .small-4 { - height: calc(33.33333% - 1.875rem); } - .grid-margin-y > .small-5 { - height: calc(41.66667% - 1.875rem); } - .grid-margin-y > .small-6 { - height: calc(50% - 1.875rem); } - .grid-margin-y > .small-7 { - height: calc(58.33333% - 1.875rem); } - .grid-margin-y > .small-8 { - height: calc(66.66667% - 1.875rem); } - .grid-margin-y > .small-9 { - height: calc(75% - 1.875rem); } - .grid-margin-y > .small-10 { - height: calc(83.33333% - 1.875rem); } - .grid-margin-y > .small-11 { - height: calc(91.66667% - 1.875rem); } - .grid-margin-y > .small-12 { - height: calc(100% - 1.875rem); } - .grid-margin-y > .medium-auto { - height: auto; } - .grid-margin-y > .medium-shrink { - height: auto; } - .grid-margin-y > .medium-1 { - height: calc(8.33333% - 1.875rem); } - .grid-margin-y > .medium-2 { - height: calc(16.66667% - 1.875rem); } - .grid-margin-y > .medium-3 { - height: calc(25% - 1.875rem); } - .grid-margin-y > .medium-4 { - height: calc(33.33333% - 1.875rem); } - .grid-margin-y > .medium-5 { - height: calc(41.66667% - 1.875rem); } - .grid-margin-y > .medium-6 { - height: calc(50% - 1.875rem); } - .grid-margin-y > .medium-7 { - height: calc(58.33333% - 1.875rem); } - .grid-margin-y > .medium-8 { - height: calc(66.66667% - 1.875rem); } - .grid-margin-y > .medium-9 { - height: calc(75% - 1.875rem); } - .grid-margin-y > .medium-10 { - height: calc(83.33333% - 1.875rem); } - .grid-margin-y > .medium-11 { - height: calc(91.66667% - 1.875rem); } - .grid-margin-y > .medium-12 { - height: calc(100% - 1.875rem); } } - @media print, screen and (min-width: 64em) { - .grid-margin-y > .large-auto { - height: auto; } - .grid-margin-y > .large-shrink { - height: auto; } - .grid-margin-y > .large-1 { - height: calc(8.33333% - 1.875rem); } - .grid-margin-y > .large-2 { - height: calc(16.66667% - 1.875rem); } - .grid-margin-y > .large-3 { - height: calc(25% - 1.875rem); } - .grid-margin-y > .large-4 { - height: calc(33.33333% - 1.875rem); } - .grid-margin-y > .large-5 { - height: calc(41.66667% - 1.875rem); } - .grid-margin-y > .large-6 { - height: calc(50% - 1.875rem); } - .grid-margin-y > .large-7 { - height: calc(58.33333% - 1.875rem); } - .grid-margin-y > .large-8 { - height: calc(66.66667% - 1.875rem); } - .grid-margin-y > .large-9 { - height: calc(75% - 1.875rem); } - .grid-margin-y > .large-10 { - height: calc(83.33333% - 1.875rem); } - .grid-margin-y > .large-11 { - height: calc(91.66667% - 1.875rem); } - .grid-margin-y > .large-12 { - height: calc(100% - 1.875rem); } } - -.grid-frame { - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - width: 100vw; } - -.cell .grid-frame { - width: 100%; } - -.cell-block { - overflow-x: auto; - max-width: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } - -.cell-block-y { - overflow-y: auto; - max-height: 100%; - min-height: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } - -.cell-block-container { - display: flex; - flex-direction: column; - max-height: 100%; } - .cell-block-container > .grid-x { - max-height: 100%; - flex-wrap: nowrap; } - -@media screen and (min-width: 25em) { - .smedium-grid-frame { - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - width: 100vw; } - .cell .smedium-grid-frame { - width: 100%; } - .smedium-cell-block { - overflow-x: auto; - max-width: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } - .smedium-cell-block-container { - display: flex; - flex-direction: column; - max-height: 100%; } - .smedium-cell-block-container > .grid-x { - max-height: 100%; - flex-wrap: nowrap; } - .smedium-cell-block-y { - overflow-y: auto; - max-height: 100%; - min-height: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } } - -@media print, screen and (min-width: 40em) { - .medium-grid-frame { - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - width: 100vw; } - .cell .medium-grid-frame { - width: 100%; } - .medium-cell-block { - overflow-x: auto; - max-width: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } - .medium-cell-block-container { - display: flex; - flex-direction: column; - max-height: 100%; } - .medium-cell-block-container > .grid-x { - max-height: 100%; - flex-wrap: nowrap; } - .medium-cell-block-y { - overflow-y: auto; - max-height: 100%; - min-height: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } } - -@media print, screen and (min-width: 64em) { - .large-grid-frame { - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - width: 100vw; } - .cell .large-grid-frame { - width: 100%; } - .large-cell-block { - overflow-x: auto; - max-width: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } - .large-cell-block-container { - display: flex; - flex-direction: column; - max-height: 100%; } - .large-cell-block-container > .grid-x { - max-height: 100%; - flex-wrap: nowrap; } - .large-cell-block-y { - overflow-y: auto; - max-height: 100%; - min-height: 100%; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; } } - -.grid-y.grid-frame { - width: auto; - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - height: 100vh; } - -@media screen and (min-width: 25em) { - .grid-y.smedium-grid-frame { - width: auto; - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - height: 100vh; } } - -@media print, screen and (min-width: 40em) { - .grid-y.medium-grid-frame { - width: auto; - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - height: 100vh; } } - -@media print, screen and (min-width: 64em) { - .grid-y.large-grid-frame { - width: auto; - overflow: hidden; - position: relative; - flex-wrap: nowrap; - align-items: stretch; - height: 100vh; } } - -.cell .grid-y.grid-frame { - height: 100%; } - -@media screen and (min-width: 25em) { - .cell .grid-y.smedium-grid-frame { - height: 100%; } } - -@media print, screen and (min-width: 40em) { - .cell .grid-y.medium-grid-frame { - height: 100%; } } - -@media print, screen and (min-width: 64em) { - .cell .grid-y.large-grid-frame { - height: 100%; } } - -.grid-margin-y { - margin-top: -0.625rem; - margin-bottom: -0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-margin-y { - margin-top: -0.9375rem; - margin-bottom: -0.9375rem; } } - .grid-margin-y > .cell { - height: calc(100% - 1.25rem); - margin-top: 0.625rem; - margin-bottom: 0.625rem; } - @media print, screen and (min-width: 40em) { - .grid-margin-y > .cell { - height: calc(100% - 1.875rem); - margin-top: 0.9375rem; - margin-bottom: 0.9375rem; } } - .grid-margin-y > .auto { - height: auto; } - .grid-margin-y > .shrink { - height: auto; } - .grid-margin-y > .small-1 { - height: calc(8.33333% - 1.25rem); } - .grid-margin-y > .small-2 { - height: calc(16.66667% - 1.25rem); } - .grid-margin-y > .small-3 { - height: calc(25% - 1.25rem); } - .grid-margin-y > .small-4 { - height: calc(33.33333% - 1.25rem); } - .grid-margin-y > .small-5 { - height: calc(41.66667% - 1.25rem); } - .grid-margin-y > .small-6 { - height: calc(50% - 1.25rem); } - .grid-margin-y > .small-7 { - height: calc(58.33333% - 1.25rem); } - .grid-margin-y > .small-8 { - height: calc(66.66667% - 1.25rem); } - .grid-margin-y > .small-9 { - height: calc(75% - 1.25rem); } - .grid-margin-y > .small-10 { - height: calc(83.33333% - 1.25rem); } - .grid-margin-y > .small-11 { - height: calc(91.66667% - 1.25rem); } - .grid-margin-y > .small-12 { - height: calc(100% - 1.25rem); } - @media screen and (min-width: 25em) { - .grid-margin-y > .smedium-auto { - height: auto; } - .grid-margin-y > .smedium-shrink { - height: auto; } - .grid-margin-y > .smedium-1 { - height: calc(8.33333% - 1.25rem); } - .grid-margin-y > .smedium-2 { - height: calc(16.66667% - 1.25rem); } - .grid-margin-y > .smedium-3 { - height: calc(25% - 1.25rem); } - .grid-margin-y > .smedium-4 { - height: calc(33.33333% - 1.25rem); } - .grid-margin-y > .smedium-5 { - height: calc(41.66667% - 1.25rem); } - .grid-margin-y > .smedium-6 { - height: calc(50% - 1.25rem); } - .grid-margin-y > .smedium-7 { - height: calc(58.33333% - 1.25rem); } - .grid-margin-y > .smedium-8 { - height: calc(66.66667% - 1.25rem); } - .grid-margin-y > .smedium-9 { - height: calc(75% - 1.25rem); } - .grid-margin-y > .smedium-10 { - height: calc(83.33333% - 1.25rem); } - .grid-margin-y > .smedium-11 { - height: calc(91.66667% - 1.25rem); } - .grid-margin-y > .smedium-12 { - height: calc(100% - 1.25rem); } } - @media print, screen and (min-width: 40em) { - .grid-margin-y > .auto { - height: auto; } - .grid-margin-y > .shrink { - height: auto; } - .grid-margin-y > .small-1 { - height: calc(8.33333% - 1.875rem); } - .grid-margin-y > .small-2 { - height: calc(16.66667% - 1.875rem); } - .grid-margin-y > .small-3 { - height: calc(25% - 1.875rem); } - .grid-margin-y > .small-4 { - height: calc(33.33333% - 1.875rem); } - .grid-margin-y > .small-5 { - height: calc(41.66667% - 1.875rem); } - .grid-margin-y > .small-6 { - height: calc(50% - 1.875rem); } - .grid-margin-y > .small-7 { - height: calc(58.33333% - 1.875rem); } - .grid-margin-y > .small-8 { - height: calc(66.66667% - 1.875rem); } - .grid-margin-y > .small-9 { - height: calc(75% - 1.875rem); } - .grid-margin-y > .small-10 { - height: calc(83.33333% - 1.875rem); } - .grid-margin-y > .small-11 { - height: calc(91.66667% - 1.875rem); } - .grid-margin-y > .small-12 { - height: calc(100% - 1.875rem); } - .grid-margin-y > .medium-auto { - height: auto; } - .grid-margin-y > .medium-shrink { - height: auto; } - .grid-margin-y > .medium-1 { - height: calc(8.33333% - 1.875rem); } - .grid-margin-y > .medium-2 { - height: calc(16.66667% - 1.875rem); } - .grid-margin-y > .medium-3 { - height: calc(25% - 1.875rem); } - .grid-margin-y > .medium-4 { - height: calc(33.33333% - 1.875rem); } - .grid-margin-y > .medium-5 { - height: calc(41.66667% - 1.875rem); } - .grid-margin-y > .medium-6 { - height: calc(50% - 1.875rem); } - .grid-margin-y > .medium-7 { - height: calc(58.33333% - 1.875rem); } - .grid-margin-y > .medium-8 { - height: calc(66.66667% - 1.875rem); } - .grid-margin-y > .medium-9 { - height: calc(75% - 1.875rem); } - .grid-margin-y > .medium-10 { - height: calc(83.33333% - 1.875rem); } - .grid-margin-y > .medium-11 { - height: calc(91.66667% - 1.875rem); } - .grid-margin-y > .medium-12 { - height: calc(100% - 1.875rem); } } - @media print, screen and (min-width: 64em) { - .grid-margin-y > .large-auto { - height: auto; } - .grid-margin-y > .large-shrink { - height: auto; } - .grid-margin-y > .large-1 { - height: calc(8.33333% - 1.875rem); } - .grid-margin-y > .large-2 { - height: calc(16.66667% - 1.875rem); } - .grid-margin-y > .large-3 { - height: calc(25% - 1.875rem); } - .grid-margin-y > .large-4 { - height: calc(33.33333% - 1.875rem); } - .grid-margin-y > .large-5 { - height: calc(41.66667% - 1.875rem); } - .grid-margin-y > .large-6 { - height: calc(50% - 1.875rem); } - .grid-margin-y > .large-7 { - height: calc(58.33333% - 1.875rem); } - .grid-margin-y > .large-8 { - height: calc(66.66667% - 1.875rem); } - .grid-margin-y > .large-9 { - height: calc(75% - 1.875rem); } - .grid-margin-y > .large-10 { - height: calc(83.33333% - 1.875rem); } - .grid-margin-y > .large-11 { - height: calc(91.66667% - 1.875rem); } - .grid-margin-y > .large-12 { - height: calc(100% - 1.875rem); } } - -.grid-frame.grid-margin-y { - height: calc(100vh + 1.25rem); } - @media screen and (min-width: 25em) { - .grid-frame.grid-margin-y { - height: calc(100vh + 1.25rem); } } - @media print, screen and (min-width: 40em) { - .grid-frame.grid-margin-y { - height: calc(100vh + 1.875rem); } } - @media print, screen and (min-width: 64em) { - .grid-frame.grid-margin-y { - height: calc(100vh + 1.875rem); } } - -@media screen and (min-width: 25em) { - .grid-margin-y.smedium-grid-frame { - height: calc(100vh + 1.25rem); } } - -@media print, screen and (min-width: 40em) { - .grid-margin-y.medium-grid-frame { - height: calc(100vh + 1.875rem); } } - -@media print, screen and (min-width: 64em) { - .grid-margin-y.large-grid-frame { - height: calc(100vh + 1.875rem); } } - -.button { - display: inline-block; - vertical-align: middle; - margin: 0 0 1rem 0; - padding: 0.85em 1em; - border: 1px solid transparent; - border-radius: 0; - transition: background-color 0.25s ease-out, color 0.25s ease-out; - font-family: inherit; - font-size: 0.9rem; - -webkit-appearance: none; - line-height: 1; - text-align: center; - cursor: pointer; } - [data-whatinput='mouse'] .button { - outline: 0; } - .button.tiny { - font-size: 0.6rem; } - .button.small { - font-size: 0.75rem; } - .button.large { - font-size: 1.25rem; } - .button.expanded { - display: block; - width: 100%; - margin-right: 0; - margin-left: 0; } - .button, .button.disabled, .button[disabled], .button.disabled:hover, .button[disabled]:hover, .button.disabled:focus, .button[disabled]:focus { - background-color: #1779ba; - color: #fefefe; } - .button:hover, .button:focus { - background-color: #14679e; - color: #fefefe; } - .button.primary, .button.primary.disabled, .button.primary[disabled], .button.primary.disabled:hover, .button.primary[disabled]:hover, .button.primary.disabled:focus, .button.primary[disabled]:focus { - background-color: #1779ba; - color: #fefefe; } - .button.primary:hover, .button.primary:focus { - background-color: #126195; - color: #fefefe; } - .button.secondary, .button.secondary.disabled, .button.secondary[disabled], .button.secondary.disabled:hover, .button.secondary[disabled]:hover, .button.secondary.disabled:focus, .button.secondary[disabled]:focus { - background-color: #767676; - color: #fefefe; } - .button.secondary:hover, .button.secondary:focus { - background-color: #5e5e5e; - color: #fefefe; } - .button.success, .button.success.disabled, .button.success[disabled], .button.success.disabled:hover, .button.success[disabled]:hover, .button.success.disabled:focus, .button.success[disabled]:focus { - background-color: #3adb76; - color: #0a0a0a; } - .button.success:hover, .button.success:focus { - background-color: #22bb5b; - color: #0a0a0a; } - .button.warning, .button.warning.disabled, .button.warning[disabled], .button.warning.disabled:hover, .button.warning[disabled]:hover, .button.warning.disabled:focus, .button.warning[disabled]:focus { - background-color: #ffae00; - color: #0a0a0a; } - .button.warning:hover, .button.warning:focus { - background-color: #cc8b00; - color: #0a0a0a; } - .button.alert, .button.alert.disabled, .button.alert[disabled], .button.alert.disabled:hover, .button.alert[disabled]:hover, .button.alert.disabled:focus, .button.alert[disabled]:focus { - background-color: #cc4b37; - color: #fefefe; } - .button.alert:hover, .button.alert:focus { - background-color: #a53b2a; - color: #fefefe; } - .button.hollow, .button.hollow:hover, .button.hollow:focus, .button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus { - background-color: transparent; } - .button.hollow, .button.hollow.disabled, .button.hollow[disabled], .button.hollow.disabled:hover, .button.hollow[disabled]:hover, .button.hollow.disabled:focus, .button.hollow[disabled]:focus { - border: 1px solid #1779ba; - color: #1779ba; } - .button.hollow:hover, .button.hollow:focus { - border-color: #0c3d5d; - color: #0c3d5d; } - .button.hollow.primary, .button.hollow.primary.disabled, .button.hollow.primary[disabled], .button.hollow.primary.disabled:hover, .button.hollow.primary[disabled]:hover, .button.hollow.primary.disabled:focus, .button.hollow.primary[disabled]:focus { - border: 1px solid #1779ba; - color: #1779ba; } - .button.hollow.primary:hover, .button.hollow.primary:focus { - border-color: #0c3d5d; - color: #0c3d5d; } - .button.hollow.secondary, .button.hollow.secondary.disabled, .button.hollow.secondary[disabled], .button.hollow.secondary.disabled:hover, .button.hollow.secondary[disabled]:hover, .button.hollow.secondary.disabled:focus, .button.hollow.secondary[disabled]:focus { - border: 1px solid #767676; - color: #767676; } - .button.hollow.secondary:hover, .button.hollow.secondary:focus { - border-color: #3b3b3b; - color: #3b3b3b; } - .button.hollow.success, .button.hollow.success.disabled, .button.hollow.success[disabled], .button.hollow.success.disabled:hover, .button.hollow.success[disabled]:hover, .button.hollow.success.disabled:focus, .button.hollow.success[disabled]:focus { - border: 1px solid #3adb76; - color: #3adb76; } - .button.hollow.success:hover, .button.hollow.success:focus { - border-color: #157539; - color: #157539; } - .button.hollow.warning, .button.hollow.warning.disabled, .button.hollow.warning[disabled], .button.hollow.warning.disabled:hover, .button.hollow.warning[disabled]:hover, .button.hollow.warning.disabled:focus, .button.hollow.warning[disabled]:focus { - border: 1px solid #ffae00; - color: #ffae00; } - .button.hollow.warning:hover, .button.hollow.warning:focus { - border-color: #805700; - color: #805700; } - .button.hollow.alert, .button.hollow.alert.disabled, .button.hollow.alert[disabled], .button.hollow.alert.disabled:hover, .button.hollow.alert[disabled]:hover, .button.hollow.alert.disabled:focus, .button.hollow.alert[disabled]:focus { - border: 1px solid #cc4b37; - color: #cc4b37; } - .button.hollow.alert:hover, .button.hollow.alert:focus { - border-color: #67251a; - color: #67251a; } - .button.clear, .button.clear:hover, .button.clear:focus, .button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus { - border-color: transparent; - background-color: transparent; } - .button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear.disabled:hover, .button.clear[disabled]:hover, .button.clear.disabled:focus, .button.clear[disabled]:focus { - color: #1779ba; } - .button.clear:hover, .button.clear:focus { - color: #0c3d5d; } - .button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary.disabled:hover, .button.clear.primary[disabled]:hover, .button.clear.primary.disabled:focus, .button.clear.primary[disabled]:focus { - color: #1779ba; } - .button.clear.primary:hover, .button.clear.primary:focus { - color: #0c3d5d; } - .button.clear.secondary, .button.clear.secondary.disabled, .button.clear.secondary[disabled], .button.clear.secondary.disabled:hover, .button.clear.secondary[disabled]:hover, .button.clear.secondary.disabled:focus, .button.clear.secondary[disabled]:focus { - color: #767676; } - .button.clear.secondary:hover, .button.clear.secondary:focus { - color: #3b3b3b; } - .button.clear.success, .button.clear.success.disabled, .button.clear.success[disabled], .button.clear.success.disabled:hover, .button.clear.success[disabled]:hover, .button.clear.success.disabled:focus, .button.clear.success[disabled]:focus { - color: #3adb76; } - .button.clear.success:hover, .button.clear.success:focus { - color: #157539; } - .button.clear.warning, .button.clear.warning.disabled, .button.clear.warning[disabled], .button.clear.warning.disabled:hover, .button.clear.warning[disabled]:hover, .button.clear.warning.disabled:focus, .button.clear.warning[disabled]:focus { - color: #ffae00; } - .button.clear.warning:hover, .button.clear.warning:focus { - color: #805700; } - .button.clear.alert, .button.clear.alert.disabled, .button.clear.alert[disabled], .button.clear.alert.disabled:hover, .button.clear.alert[disabled]:hover, .button.clear.alert.disabled:focus, .button.clear.alert[disabled]:focus { - color: #cc4b37; } - .button.clear.alert:hover, .button.clear.alert:focus { - color: #67251a; } - .button.disabled, .button[disabled] { - opacity: 0.25; - cursor: not-allowed; } - .button.dropdown::after { - display: block; - width: 0; - height: 0; - border: inset 0.4em; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #fefefe transparent transparent; - position: relative; - top: 0.4em; - display: inline-block; - float: right; - margin-left: 1em; } - .button.dropdown.hollow::after, .button.dropdown.clear::after { - border-top-color: #1779ba; } - .button.dropdown.hollow.primary::after, .button.dropdown.clear.primary::after { - border-top-color: #1779ba; } - .button.dropdown.hollow.secondary::after, .button.dropdown.clear.secondary::after { - border-top-color: #767676; } - .button.dropdown.hollow.success::after, .button.dropdown.clear.success::after { - border-top-color: #3adb76; } - .button.dropdown.hollow.warning::after, .button.dropdown.clear.warning::after { - border-top-color: #ffae00; } - .button.dropdown.hollow.alert::after, .button.dropdown.clear.alert::after { - border-top-color: #cc4b37; } - .button.arrow-only::after { - top: -0.1em; - float: none; - margin-left: 0; } - -a.button:hover, a.button:focus { - text-decoration: none; } - -.button-group { - margin-bottom: 1rem; - display: flex; - flex-wrap: wrap; - align-items: stretch; - flex-grow: 1; } - .button-group::before, .button-group::after { - display: table; - content: ' '; - flex-basis: 0; - order: 1; } - .button-group::after { - clear: both; } - .button-group::before, .button-group::after { - display: none; } - .button-group .button { - margin: 0; - margin-right: 1px; - margin-bottom: 1px; - font-size: 0.9rem; - flex: 0 0 auto; } - .button-group .button:last-child { - margin-right: 0; } - .button-group.tiny .button { - font-size: 0.6rem; } - .button-group.small .button { - font-size: 0.75rem; } - .button-group.large .button { - font-size: 1.25rem; } - .button-group.expanded .button { - flex: 1 1 0px; - margin-right: 0; } - .button-group.primary .button, .button-group.primary .button.disabled, .button-group.primary .button[disabled], .button-group.primary .button.disabled:hover, .button-group.primary .button[disabled]:hover, .button-group.primary .button.disabled:focus, .button-group.primary .button[disabled]:focus { - background-color: #1779ba; - color: #fefefe; } - .button-group.primary .button:hover, .button-group.primary .button:focus { - background-color: #126195; - color: #fefefe; } - .button-group.secondary .button, .button-group.secondary .button.disabled, .button-group.secondary .button[disabled], .button-group.secondary .button.disabled:hover, .button-group.secondary .button[disabled]:hover, .button-group.secondary .button.disabled:focus, .button-group.secondary .button[disabled]:focus { - background-color: #767676; - color: #fefefe; } - .button-group.secondary .button:hover, .button-group.secondary .button:focus { - background-color: #5e5e5e; - color: #fefefe; } - .button-group.success .button, .button-group.success .button.disabled, .button-group.success .button[disabled], .button-group.success .button.disabled:hover, .button-group.success .button[disabled]:hover, .button-group.success .button.disabled:focus, .button-group.success .button[disabled]:focus { - background-color: #3adb76; - color: #0a0a0a; } - .button-group.success .button:hover, .button-group.success .button:focus { - background-color: #22bb5b; - color: #0a0a0a; } - .button-group.warning .button, .button-group.warning .button.disabled, .button-group.warning .button[disabled], .button-group.warning .button.disabled:hover, .button-group.warning .button[disabled]:hover, .button-group.warning .button.disabled:focus, .button-group.warning .button[disabled]:focus { - background-color: #ffae00; - color: #0a0a0a; } - .button-group.warning .button:hover, .button-group.warning .button:focus { - background-color: #cc8b00; - color: #0a0a0a; } - .button-group.alert .button, .button-group.alert .button.disabled, .button-group.alert .button[disabled], .button-group.alert .button.disabled:hover, .button-group.alert .button[disabled]:hover, .button-group.alert .button.disabled:focus, .button-group.alert .button[disabled]:focus { - background-color: #cc4b37; - color: #fefefe; } - .button-group.alert .button:hover, .button-group.alert .button:focus { - background-color: #a53b2a; - color: #fefefe; } - .button-group.hollow .button, .button-group.hollow .button:hover, .button-group.hollow .button:focus, .button-group.hollow .button.disabled, .button-group.hollow .button.disabled:hover, .button-group.hollow .button.disabled:focus, .button-group.hollow .button[disabled], .button-group.hollow .button[disabled]:hover, .button-group.hollow .button[disabled]:focus { - background-color: transparent; } - .button-group.hollow .button, .button-group.hollow .button.disabled, .button-group.hollow .button[disabled], .button-group.hollow .button.disabled:hover, .button-group.hollow .button[disabled]:hover, .button-group.hollow .button.disabled:focus, .button-group.hollow .button[disabled]:focus { - border: 1px solid #1779ba; - color: #1779ba; } - .button-group.hollow .button:hover, .button-group.hollow .button:focus { - border-color: #0c3d5d; - color: #0c3d5d; } - .button-group.hollow.primary .button, .button-group.hollow.primary .button.disabled, .button-group.hollow.primary .button[disabled], .button-group.hollow.primary .button.disabled:hover, .button-group.hollow.primary .button[disabled]:hover, .button-group.hollow.primary .button.disabled:focus, .button-group.hollow.primary .button[disabled]:focus, .button-group.hollow .button.primary, .button-group.hollow .button.primary.disabled, .button-group.hollow .button.primary[disabled], .button-group.hollow .button.primary.disabled:hover, .button-group.hollow .button.primary[disabled]:hover, .button-group.hollow .button.primary.disabled:focus, .button-group.hollow .button.primary[disabled]:focus { - border: 1px solid #1779ba; - color: #1779ba; } - .button-group.hollow.primary .button:hover, .button-group.hollow.primary .button:focus, .button-group.hollow .button.primary:hover, .button-group.hollow .button.primary:focus { - border-color: #0c3d5d; - color: #0c3d5d; } - .button-group.hollow.secondary .button, .button-group.hollow.secondary .button.disabled, .button-group.hollow.secondary .button[disabled], .button-group.hollow.secondary .button.disabled:hover, .button-group.hollow.secondary .button[disabled]:hover, .button-group.hollow.secondary .button.disabled:focus, .button-group.hollow.secondary .button[disabled]:focus, .button-group.hollow .button.secondary, .button-group.hollow .button.secondary.disabled, .button-group.hollow .button.secondary[disabled], .button-group.hollow .button.secondary.disabled:hover, .button-group.hollow .button.secondary[disabled]:hover, .button-group.hollow .button.secondary.disabled:focus, .button-group.hollow .button.secondary[disabled]:focus { - border: 1px solid #767676; - color: #767676; } - .button-group.hollow.secondary .button:hover, .button-group.hollow.secondary .button:focus, .button-group.hollow .button.secondary:hover, .button-group.hollow .button.secondary:focus { - border-color: #3b3b3b; - color: #3b3b3b; } - .button-group.hollow.success .button, .button-group.hollow.success .button.disabled, .button-group.hollow.success .button[disabled], .button-group.hollow.success .button.disabled:hover, .button-group.hollow.success .button[disabled]:hover, .button-group.hollow.success .button.disabled:focus, .button-group.hollow.success .button[disabled]:focus, .button-group.hollow .button.success, .button-group.hollow .button.success.disabled, .button-group.hollow .button.success[disabled], .button-group.hollow .button.success.disabled:hover, .button-group.hollow .button.success[disabled]:hover, .button-group.hollow .button.success.disabled:focus, .button-group.hollow .button.success[disabled]:focus { - border: 1px solid #3adb76; - color: #3adb76; } - .button-group.hollow.success .button:hover, .button-group.hollow.success .button:focus, .button-group.hollow .button.success:hover, .button-group.hollow .button.success:focus { - border-color: #157539; - color: #157539; } - .button-group.hollow.warning .button, .button-group.hollow.warning .button.disabled, .button-group.hollow.warning .button[disabled], .button-group.hollow.warning .button.disabled:hover, .button-group.hollow.warning .button[disabled]:hover, .button-group.hollow.warning .button.disabled:focus, .button-group.hollow.warning .button[disabled]:focus, .button-group.hollow .button.warning, .button-group.hollow .button.warning.disabled, .button-group.hollow .button.warning[disabled], .button-group.hollow .button.warning.disabled:hover, .button-group.hollow .button.warning[disabled]:hover, .button-group.hollow .button.warning.disabled:focus, .button-group.hollow .button.warning[disabled]:focus { - border: 1px solid #ffae00; - color: #ffae00; } - .button-group.hollow.warning .button:hover, .button-group.hollow.warning .button:focus, .button-group.hollow .button.warning:hover, .button-group.hollow .button.warning:focus { - border-color: #805700; - color: #805700; } - .button-group.hollow.alert .button, .button-group.hollow.alert .button.disabled, .button-group.hollow.alert .button[disabled], .button-group.hollow.alert .button.disabled:hover, .button-group.hollow.alert .button[disabled]:hover, .button-group.hollow.alert .button.disabled:focus, .button-group.hollow.alert .button[disabled]:focus, .button-group.hollow .button.alert, .button-group.hollow .button.alert.disabled, .button-group.hollow .button.alert[disabled], .button-group.hollow .button.alert.disabled:hover, .button-group.hollow .button.alert[disabled]:hover, .button-group.hollow .button.alert.disabled:focus, .button-group.hollow .button.alert[disabled]:focus { - border: 1px solid #cc4b37; - color: #cc4b37; } - .button-group.hollow.alert .button:hover, .button-group.hollow.alert .button:focus, .button-group.hollow .button.alert:hover, .button-group.hollow .button.alert:focus { - border-color: #67251a; - color: #67251a; } - .button-group.clear .button, .button-group.clear .button:hover, .button-group.clear .button:focus, .button-group.clear .button.disabled, .button-group.clear .button.disabled:hover, .button-group.clear .button.disabled:focus, .button-group.clear .button[disabled], .button-group.clear .button[disabled]:hover, .button-group.clear .button[disabled]:focus { - border-color: transparent; - background-color: transparent; } - .button-group.clear .button, .button-group.clear .button.disabled, .button-group.clear .button[disabled], .button-group.clear .button.disabled:hover, .button-group.clear .button[disabled]:hover, .button-group.clear .button.disabled:focus, .button-group.clear .button[disabled]:focus { - color: #1779ba; } - .button-group.clear .button:hover, .button-group.clear .button:focus { - color: #0c3d5d; } - .button-group.clear.primary .button, .button-group.clear.primary .button.disabled, .button-group.clear.primary .button[disabled], .button-group.clear.primary .button.disabled:hover, .button-group.clear.primary .button[disabled]:hover, .button-group.clear.primary .button.disabled:focus, .button-group.clear.primary .button[disabled]:focus, .button-group.clear .button.primary, .button-group.clear .button.primary.disabled, .button-group.clear .button.primary[disabled], .button-group.clear .button.primary.disabled:hover, .button-group.clear .button.primary[disabled]:hover, .button-group.clear .button.primary.disabled:focus, .button-group.clear .button.primary[disabled]:focus { - color: #1779ba; } - .button-group.clear.primary .button:hover, .button-group.clear.primary .button:focus, .button-group.clear .button.primary:hover, .button-group.clear .button.primary:focus { - color: #0c3d5d; } - .button-group.clear.secondary .button, .button-group.clear.secondary .button.disabled, .button-group.clear.secondary .button[disabled], .button-group.clear.secondary .button.disabled:hover, .button-group.clear.secondary .button[disabled]:hover, .button-group.clear.secondary .button.disabled:focus, .button-group.clear.secondary .button[disabled]:focus, .button-group.clear .button.secondary, .button-group.clear .button.secondary.disabled, .button-group.clear .button.secondary[disabled], .button-group.clear .button.secondary.disabled:hover, .button-group.clear .button.secondary[disabled]:hover, .button-group.clear .button.secondary.disabled:focus, .button-group.clear .button.secondary[disabled]:focus { - color: #767676; } - .button-group.clear.secondary .button:hover, .button-group.clear.secondary .button:focus, .button-group.clear .button.secondary:hover, .button-group.clear .button.secondary:focus { - color: #3b3b3b; } - .button-group.clear.success .button, .button-group.clear.success .button.disabled, .button-group.clear.success .button[disabled], .button-group.clear.success .button.disabled:hover, .button-group.clear.success .button[disabled]:hover, .button-group.clear.success .button.disabled:focus, .button-group.clear.success .button[disabled]:focus, .button-group.clear .button.success, .button-group.clear .button.success.disabled, .button-group.clear .button.success[disabled], .button-group.clear .button.success.disabled:hover, .button-group.clear .button.success[disabled]:hover, .button-group.clear .button.success.disabled:focus, .button-group.clear .button.success[disabled]:focus { - color: #3adb76; } - .button-group.clear.success .button:hover, .button-group.clear.success .button:focus, .button-group.clear .button.success:hover, .button-group.clear .button.success:focus { - color: #157539; } - .button-group.clear.warning .button, .button-group.clear.warning .button.disabled, .button-group.clear.warning .button[disabled], .button-group.clear.warning .button.disabled:hover, .button-group.clear.warning .button[disabled]:hover, .button-group.clear.warning .button.disabled:focus, .button-group.clear.warning .button[disabled]:focus, .button-group.clear .button.warning, .button-group.clear .button.warning.disabled, .button-group.clear .button.warning[disabled], .button-group.clear .button.warning.disabled:hover, .button-group.clear .button.warning[disabled]:hover, .button-group.clear .button.warning.disabled:focus, .button-group.clear .button.warning[disabled]:focus { - color: #ffae00; } - .button-group.clear.warning .button:hover, .button-group.clear.warning .button:focus, .button-group.clear .button.warning:hover, .button-group.clear .button.warning:focus { - color: #805700; } - .button-group.clear.alert .button, .button-group.clear.alert .button.disabled, .button-group.clear.alert .button[disabled], .button-group.clear.alert .button.disabled:hover, .button-group.clear.alert .button[disabled]:hover, .button-group.clear.alert .button.disabled:focus, .button-group.clear.alert .button[disabled]:focus, .button-group.clear .button.alert, .button-group.clear .button.alert.disabled, .button-group.clear .button.alert[disabled], .button-group.clear .button.alert.disabled:hover, .button-group.clear .button.alert[disabled]:hover, .button-group.clear .button.alert.disabled:focus, .button-group.clear .button.alert[disabled]:focus { - color: #cc4b37; } - .button-group.clear.alert .button:hover, .button-group.clear.alert .button:focus, .button-group.clear .button.alert:hover, .button-group.clear .button.alert:focus { - color: #67251a; } - .button-group.no-gaps .button { - margin-right: -0.0625rem; } - .button-group.no-gaps .button + .button { - border-left-color: transparent; } - .button-group.stacked, .button-group.stacked-for-small, .button-group.stacked-for-medium { - flex-wrap: wrap; } - .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { - flex: 0 0 100%; } - .button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child { - margin-bottom: 0; } - .button-group.stacked.expanded .button, .button-group.stacked-for-small.expanded .button, .button-group.stacked-for-medium.expanded .button { - flex: 1 1 0px; - margin-right: 0; } - @media print, screen and (min-width: 40em) { - .button-group.stacked-for-small .button { - flex: 0 0 auto; - margin-bottom: 0; } } - @media print, screen and (min-width: 64em) { - .button-group.stacked-for-medium .button { - flex: 0 0 auto; - margin-bottom: 0; } } - @media print, screen and (max-width: 24.99875em) { - .button-group.stacked-for-small.expanded { - display: block; } - .button-group.stacked-for-small.expanded .button { - display: block; - margin-right: 0; } } - @media print, screen and (max-width: 63.99875em) { - .button-group.stacked-for-medium.expanded { - display: block; } - .button-group.stacked-for-medium.expanded .button { - display: block; - margin-right: 0; } } - -.close-button { - position: absolute; - z-index: 10; - color: #8a8a8a; - cursor: pointer; } - [data-whatinput='mouse'] .close-button { - outline: 0; } - .close-button:hover, .close-button:focus { - color: #0a0a0a; } - .close-button.small { - right: 0.66rem; - top: 0.33em; - font-size: 1.5em; - line-height: 1; } - .close-button.medium, .close-button { - right: 1rem; - top: 0.5rem; - font-size: 2em; - line-height: 1; } - -.label { - display: inline-block; - padding: 0.33333rem 0.5rem; - border-radius: 0; - font-size: 0.8rem; - line-height: 1; - white-space: nowrap; - cursor: default; - background: #1779ba; - color: #fefefe; } - .label.primary { - background: #1779ba; - color: #fefefe; } - .label.secondary { - background: #767676; - color: #fefefe; } - .label.success { - background: #3adb76; - color: #0a0a0a; } - .label.warning { - background: #ffae00; - color: #0a0a0a; } - .label.alert { - background: #cc4b37; - color: #fefefe; } - -.progress { - height: 1rem; - margin-bottom: 1rem; - border-radius: 0; - background-color: #cacaca; } - .progress.primary .progress-meter { - background-color: #1779ba; } - .progress.secondary .progress-meter { - background-color: #767676; } - .progress.success .progress-meter { - background-color: #3adb76; } - .progress.warning .progress-meter { - background-color: #ffae00; } - .progress.alert .progress-meter { - background-color: #cc4b37; } - -.progress-meter { - position: relative; - display: block; - width: 0%; - height: 100%; - background-color: #1779ba; } - -.progress-meter-text { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - margin: 0; - font-size: 0.75rem; - font-weight: bold; - color: #fefefe; - white-space: nowrap; } - -.slider { - position: relative; - height: 0.5rem; - margin-top: 1.25rem; - margin-bottom: 2.25rem; - background-color: #e6e6e6; - cursor: pointer; - user-select: none; - touch-action: none; } - -.slider-fill { - position: absolute; - top: 0; - left: 0; - display: inline-block; - max-width: 100%; - height: 0.5rem; - background-color: #cacaca; - transition: all 0.2s ease-in-out; } - .slider-fill.is-dragging { - transition: all 0s linear; } - -.slider-handle { - position: absolute; - top: 50%; - transform: translateY(-50%); - left: 0; - z-index: 1; - display: inline-block; - width: 1.4rem; - height: 1.4rem; - border-radius: 0; - background-color: #1779ba; - transition: all 0.2s ease-in-out; - touch-action: manipulation; } - [data-whatinput='mouse'] .slider-handle { - outline: 0; } - .slider-handle:hover { - background-color: #14679e; } - .slider-handle.is-dragging { - transition: all 0s linear; } - -.slider.disabled, -.slider[disabled] { - opacity: 0.25; - cursor: not-allowed; } - -.slider.vertical { - display: inline-block; - width: 0.5rem; - height: 12.5rem; - margin: 0 1.25rem; - transform: scale(1, -1); } - .slider.vertical .slider-fill { - top: 0; - width: 0.5rem; - max-height: 100%; } - .slider.vertical .slider-handle { - position: absolute; - top: 0; - left: 50%; - width: 1.4rem; - height: 1.4rem; - transform: translateX(-50%); } - -.switch { - height: 2rem; - position: relative; - margin-bottom: 1rem; - outline: 0; - font-size: 0.875rem; - font-weight: bold; - color: #fefefe; - user-select: none; } - -.switch-input { - position: absolute; - margin-bottom: 0; - opacity: 0; } - -.switch-paddle { - position: relative; - display: block; - width: 4rem; - height: 2rem; - border-radius: 0; - background: #cacaca; - transition: all 0.25s ease-out; - font-weight: inherit; - color: inherit; - cursor: pointer; } - input + .switch-paddle { - margin: 0; } - .switch-paddle::after { - position: absolute; - top: 0.25rem; - left: 0.25rem; - display: block; - width: 1.5rem; - height: 1.5rem; - transform: translate3d(0, 0, 0); - border-radius: 0; - background: #fefefe; - transition: all 0.25s ease-out; - content: ''; } - input:checked ~ .switch-paddle { - background: #1779ba; } - input:checked ~ .switch-paddle::after { - left: 2.25rem; } - input:disabled ~ .switch-paddle { - cursor: not-allowed; - opacity: 0.5; } - [data-whatinput='mouse'] input:focus ~ .switch-paddle { - outline: 0; } - -.switch-active, .switch-inactive { - position: absolute; - top: 50%; - transform: translateY(-50%); } - -.switch-active { - left: 8%; - display: none; } - input:checked + label > .switch-active { - display: block; } - -.switch-inactive { - right: 15%; } - input:checked + label > .switch-inactive { - display: none; } - -.switch.tiny { - height: 1.5rem; } - .switch.tiny .switch-paddle { - width: 3rem; - height: 1.5rem; - font-size: 0.625rem; } - .switch.tiny .switch-paddle::after { - top: 0.25rem; - left: 0.25rem; - width: 1rem; - height: 1rem; } - .switch.tiny input:checked ~ .switch-paddle::after { - left: 1.75rem; } - -.switch.small { - height: 1.75rem; } - .switch.small .switch-paddle { - width: 3.5rem; - height: 1.75rem; - font-size: 0.75rem; } - .switch.small .switch-paddle::after { - top: 0.25rem; - left: 0.25rem; - width: 1.25rem; - height: 1.25rem; } - .switch.small input:checked ~ .switch-paddle::after { - left: 2rem; } - -.switch.large { - height: 2.5rem; } - .switch.large .switch-paddle { - width: 5rem; - height: 2.5rem; - font-size: 1rem; } - .switch.large .switch-paddle::after { - top: 0.25rem; - left: 0.25rem; - width: 2rem; - height: 2rem; } - .switch.large input:checked ~ .switch-paddle::after { - left: 2.75rem; } - -table { - border-collapse: collapse; - width: 100%; - margin-bottom: 1rem; - border-radius: 0; } - thead, - tbody, - tfoot { - border: 1px solid #f1f1f1; - background-color: #fefefe; } - caption { - padding: 0.5rem 0.625rem 0.625rem; - font-weight: bold; } - thead { - background: #f8f8f8; - color: #0a0a0a; } - tfoot { - background: #f1f1f1; - color: #0a0a0a; } - thead tr, - tfoot tr { - background: transparent; } - thead th, - thead td, - tfoot th, - tfoot td { - padding: 0.5rem 0.625rem 0.625rem; - font-weight: bold; - text-align: left; } - tbody th, - tbody td { - padding: 0.5rem 0.625rem 0.625rem; } - tbody tr:nth-child(even) { - border-bottom: 0; - background-color: #f1f1f1; } - table.unstriped tbody { - background-color: #fefefe; } - table.unstriped tbody tr { - border-bottom: 0; - border-bottom: 1px solid #f1f1f1; - background-color: #fefefe; } - -@media print, screen and (max-width: 63.99875em) { - table.stack thead { - display: none; } - table.stack tfoot { - display: none; } - table.stack tr, - table.stack th, - table.stack td { - display: block; } - table.stack td { - border-top: 0; } } - -table.scroll { - display: block; - width: 100%; - overflow-x: auto; } - -table.hover thead tr:hover { - background-color: #f3f3f3; } - -table.hover tfoot tr:hover { - background-color: #ececec; } - -table.hover tbody tr:hover { - background-color: #f9f9f9; } - -table.hover:not(.unstriped) tr:nth-of-type(even):hover { - background-color: #ececec; } - -.table-scroll { - overflow-x: auto; } - -.badge { - display: inline-block; - min-width: 2.1em; - padding: 0.3em; - border-radius: 50%; - font-size: 0.6rem; - text-align: center; - background: #1779ba; - color: #fefefe; } - .badge.primary { - background: #1779ba; - color: #fefefe; } - .badge.secondary { - background: #767676; - color: #fefefe; } - .badge.success { - background: #3adb76; - color: #0a0a0a; } - .badge.warning { - background: #ffae00; - color: #0a0a0a; } - .badge.alert { - background: #cc4b37; - color: #fefefe; } - -.breadcrumbs { - margin: 0 0 1rem 0; - list-style: none; } - .breadcrumbs::before, .breadcrumbs::after { - display: table; - content: ' '; - flex-basis: 0; - order: 1; } - .breadcrumbs::after { - clear: both; } - .breadcrumbs li { - float: left; - font-size: 0.6875rem; - color: #0a0a0a; - cursor: default; - text-transform: uppercase; } - .breadcrumbs li:not(:last-child)::after { - position: relative; - margin: 0 0.75rem; - opacity: 1; - content: "/"; - color: #cacaca; } - .breadcrumbs a { - color: #1779ba; } - .breadcrumbs a:hover { - text-decoration: underline; } - .breadcrumbs .disabled { - color: #cacaca; - cursor: not-allowed; } - -.callout { - position: relative; - margin: 0 0 1rem 0; - padding: 1rem; - border: 1px solid rgba(10, 10, 10, 0.25); - border-radius: 0; - background-color: white; - color: #0a0a0a; } - .callout > :first-child { - margin-top: 0; } - .callout > :last-child { - margin-bottom: 0; } - .callout.primary { - background-color: #d7ecfa; - color: #0a0a0a; } - .callout.secondary { - background-color: #eaeaea; - color: #0a0a0a; } - .callout.success { - background-color: #e1faea; - color: #0a0a0a; } - .callout.warning { - background-color: #fff3d9; - color: #0a0a0a; } - .callout.alert { - background-color: #f7e4e1; - color: #0a0a0a; } - .callout.small { - padding-top: 0.5rem; - padding-right: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 0.5rem; } - .callout.large { - padding-top: 3rem; - padding-right: 3rem; - padding-bottom: 3rem; - padding-left: 3rem; } - -.card { - display: flex; - flex-direction: column; - flex-grow: 1; - margin-bottom: 1rem; - border: 1px solid #e6e6e6; - border-radius: 0; - background: #fefefe; - box-shadow: none; - overflow: hidden; - color: #0a0a0a; } - .card > :last-child { - margin-bottom: 0; } - -.card-divider { - display: flex; - flex: 0 1 auto; - padding: 1rem; - background: #e6e6e6; } - .card-divider > :last-child { - margin-bottom: 0; } - -.card-section { - flex: 1 0 auto; - padding: 1rem; } - .card-section > :last-child { - margin-bottom: 0; } - -.card-image { - min-height: 1px; } - -.dropdown-pane { - position: absolute; - z-index: 10; - display: none; - width: 300px; - padding: 1rem; - visibility: hidden; - border: 1px solid #cacaca; - border-radius: 0; - background-color: #fefefe; - font-size: 1rem; } - .dropdown-pane.is-opening { - display: block; } - .dropdown-pane.is-open { - display: block; - visibility: visible; } - -.dropdown-pane.tiny { - width: 100px; } - -.dropdown-pane.small { - width: 200px; } - -.dropdown-pane.large { - width: 400px; } - -.pagination { - margin-left: 0; - margin-bottom: 1rem; } - .pagination::before, .pagination::after { - display: table; - content: ' '; - flex-basis: 0; - order: 1; } - .pagination::after { - clear: both; } - .pagination li { - margin-right: 0.0625rem; - border-radius: 0; - font-size: 0.875rem; - display: none; } - .pagination li:last-child, .pagination li:first-child { - display: inline-block; } - @media print, screen and (min-width: 40em) { - .pagination li { - display: inline-block; } } - .pagination a, - .pagination button { - display: block; - padding: 0.1875rem 0.625rem; - border-radius: 0; - color: #0a0a0a; } - .pagination a:hover, - .pagination button:hover { - background: #e6e6e6; } - .pagination .current { - padding: 0.1875rem 0.625rem; - background: #1779ba; - color: #fefefe; - cursor: default; } - .pagination .disabled { - padding: 0.1875rem 0.625rem; - color: #cacaca; - cursor: not-allowed; } - .pagination .disabled:hover { - background: transparent; } - .pagination .ellipsis::after { - padding: 0.1875rem 0.625rem; - content: '\2026'; - color: #0a0a0a; } - -.pagination-previous a::before, -.pagination-previous.disabled::before { - display: inline-block; - margin-right: 0.5rem; - content: "«"; } - -.pagination-next a::after, -.pagination-next.disabled::after { - display: inline-block; - margin-left: 0.5rem; - content: "»"; } - -.has-tip { - position: relative; - display: inline-block; - border-bottom: dotted 1px #8a8a8a; - font-weight: bold; - cursor: help; } - -.tooltip { - position: absolute; - top: calc(100% + 0.6495rem); - z-index: 1200; - max-width: 10rem; - padding: 0.75rem; - border-radius: 0; - background-color: #0a0a0a; - font-size: 80%; - color: #fefefe; } - .tooltip::before { - position: absolute; } - .tooltip.bottom::before { - display: block; - width: 0; - height: 0; - border: inset 0.75rem; - content: ''; - border-top-width: 0; - border-bottom-style: solid; - border-color: transparent transparent #0a0a0a; - bottom: 100%; } - .tooltip.bottom.align-center::before { - left: 50%; - transform: translateX(-50%); } - .tooltip.top::before { - display: block; - width: 0; - height: 0; - border: inset 0.75rem; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #0a0a0a transparent transparent; - top: 100%; - bottom: auto; } - .tooltip.top.align-center::before { - left: 50%; - transform: translateX(-50%); } - .tooltip.left::before { - display: block; - width: 0; - height: 0; - border: inset 0.75rem; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #0a0a0a; - left: 100%; } - .tooltip.left.align-center::before { - bottom: auto; - top: 50%; - transform: translateY(-50%); } - .tooltip.right::before { - display: block; - width: 0; - height: 0; - border: inset 0.75rem; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #0a0a0a transparent transparent; - right: 100%; - left: auto; } - .tooltip.right.align-center::before { - bottom: auto; - top: 50%; - transform: translateY(-50%); } - .tooltip.align-top::before { - bottom: auto; - top: 10%; } - .tooltip.align-bottom::before { - bottom: 10%; - top: auto; } - .tooltip.align-left::before { - left: 10%; - right: auto; } - .tooltip.align-right::before { - left: auto; - right: 10%; } - -.accordion { - margin-left: 0; - background: #fefefe; - list-style-type: none; } - .accordion[disabled] .accordion-title { - cursor: not-allowed; } - -.accordion-item:first-child > :first-child { - border-radius: 0 0 0 0; } - -.accordion-item:last-child > :last-child { - border-radius: 0 0 0 0; } - -.accordion-title { - position: relative; - display: block; - padding: 1.25rem 1rem; - border: 1px solid #e6e6e6; - border-bottom: 0; - font-size: 0.75rem; - line-height: 1; - color: #1779ba; } - :last-child:not(.is-active) > .accordion-title { - border-bottom: 1px solid #e6e6e6; - border-radius: 0 0 0 0; } - .accordion-title:hover, .accordion-title:focus { - background-color: #e6e6e6; } - .accordion-title::before { - position: absolute; - top: 50%; - right: 1rem; - margin-top: -0.5rem; - content: "+"; } - .is-active > .accordion-title::before { - content: "–"; } - -.accordion-content { - display: none; - padding: 1rem; - border: 1px solid #e6e6e6; - border-bottom: 0; - background-color: #fefefe; - color: #0a0a0a; } - :last-child > .accordion-content:last-child { - border-bottom: 1px solid #e6e6e6; } - -.media-object { - display: flex; - margin-bottom: 1rem; - flex-wrap: nowrap; } - .media-object img { - max-width: none; } - @media print, screen and (max-width: 24.99875em) { - .media-object.stack-for-small { - flex-wrap: wrap; } } - -.media-object-section { - flex: 0 1 auto; } - .media-object-section:first-child { - padding-right: 1rem; } - .media-object-section:last-child:not(:nth-child(2)) { - padding-left: 1rem; } - .media-object-section > :last-child { - margin-bottom: 0; } - @media print, screen and (max-width: 24.99875em) { - .stack-for-small .media-object-section { - padding: 0; - padding-bottom: 1rem; - flex-basis: 100%; - max-width: 100%; } - .stack-for-small .media-object-section img { - width: 100%; } } - .media-object-section.main-section { - flex: 1 1 0px; } - -.orbit { - position: relative; } - -.orbit-container { - position: relative; - height: 0; - margin: 0; - list-style: none; - overflow: hidden; } - -.orbit-slide { - width: 100%; - position: absolute; } - .orbit-slide.no-motionui.is-active { - top: 0; - left: 0; } - -.orbit-figure { - margin: 0; } - -.orbit-image { - width: 100%; - max-width: 100%; - margin: 0; } - -.orbit-caption { - position: absolute; - bottom: 0; - width: 100%; - margin-bottom: 0; - padding: 1rem; - background-color: rgba(10, 10, 10, 0.5); - color: #fefefe; } - -.orbit-previous, .orbit-next { - position: absolute; - top: 50%; - transform: translateY(-50%); - z-index: 10; - padding: 1rem; - color: #fefefe; } - [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next { - outline: 0; } - .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus { - background-color: rgba(10, 10, 10, 0.5); } - -.orbit-previous { - left: 0; } - -.orbit-next { - left: auto; - right: 0; } - -.orbit-bullets { - position: relative; - margin-top: 0.8rem; - margin-bottom: 0.8rem; - text-align: center; } - [data-whatinput='mouse'] .orbit-bullets { - outline: 0; } - .orbit-bullets button { - width: 1.2rem; - height: 1.2rem; - margin: 0.1rem; - border-radius: 50%; - background-color: #cacaca; } - .orbit-bullets button:hover { - background-color: #8a8a8a; } - .orbit-bullets button.is-active { - background-color: #8a8a8a; } - -.responsive-embed, -.flex-video { - position: relative; - height: 0; - margin-bottom: 1rem; - padding-bottom: 75%; - overflow: hidden; } - .responsive-embed iframe, - .responsive-embed object, - .responsive-embed embed, - .responsive-embed video, - .flex-video iframe, - .flex-video object, - .flex-video embed, - .flex-video video { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - .responsive-embed.widescreen, - .flex-video.widescreen { - padding-bottom: 56.25%; } - -.tabs { - margin: 0; - border: 1px solid #e6e6e6; - background: #fefefe; - list-style-type: none; } - .tabs::before, .tabs::after { - display: table; - content: ' '; - flex-basis: 0; - order: 1; } - .tabs::after { - clear: both; } - -.tabs.vertical > li { - display: block; - float: none; - width: auto; } - -.tabs.simple > li > a { - padding: 0; } - .tabs.simple > li > a:hover { - background: transparent; } - -.tabs.primary { - background: #1779ba; } - .tabs.primary > li > a { - color: #fefefe; } - .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { - background: #1673b1; } - -.tabs-title { - float: left; } - .tabs-title > a { - display: block; - padding: 1.25rem 1.5rem; - font-size: 0.75rem; - line-height: 1; - color: #1779ba; } - [data-whatinput='mouse'] .tabs-title > a { - outline: 0; } - .tabs-title > a:hover { - background: #fefefe; - color: #1468a0; } - .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { - background: #e6e6e6; - color: #1779ba; } - -.tabs-content { - border: 1px solid #e6e6e6; - border-top: 0; - background: #fefefe; - color: #0a0a0a; - transition: all 0.5s ease; } - -.tabs-content.vertical { - border: 1px solid #e6e6e6; - border-left: 0; } - -.tabs-panel { - display: none; - padding: 1rem; } - .tabs-panel.is-active { - display: block; } - -.thumbnail { - display: inline-block; - max-width: 100%; - margin-bottom: 1rem; - border: 4px solid #fefefe; - border-radius: 0; - box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); - line-height: 0; } - -a.thumbnail { - transition: box-shadow 200ms ease-out; } - a.thumbnail:hover, a.thumbnail:focus { - box-shadow: 0 0 6px 1px rgba(23, 121, 186, 0.5); } - a.thumbnail image { - box-shadow: none; } - -.menu { - padding: 0; - margin: 0; - list-style: none; - position: relative; - display: flex; - flex-wrap: wrap; } - [data-whatinput='mouse'] .menu li { - outline: 0; } - .menu a, - .menu .button { - line-height: 1; - text-decoration: none; - display: block; - padding: 0.7rem 1rem; } - .menu input, - .menu select, - .menu a, - .menu button { - margin-bottom: 0; } - .menu input { - display: inline-block; } - .menu, .menu.horizontal { - flex-wrap: wrap; - flex-direction: row; } - .menu.vertical { - flex-wrap: nowrap; - flex-direction: column; } - .menu.expanded li { - flex: 1 1 0px; } - .menu.simple { - align-items: center; } - .menu.simple li + li { - margin-left: 1rem; } - .menu.simple a { - padding: 0; } - @media screen and (min-width: 25em) { - .menu.smedium-horizontal { - flex-wrap: wrap; - flex-direction: row; } - .menu.smedium-vertical { - flex-wrap: nowrap; - flex-direction: column; } - .menu.smedium-expanded li { - flex: 1 1 0px; } - .menu.smedium-simple li { - flex: 1 1 0px; } } - @media print, screen and (min-width: 40em) { - .menu.medium-horizontal { - flex-wrap: wrap; - flex-direction: row; } - .menu.medium-vertical { - flex-wrap: nowrap; - flex-direction: column; } - .menu.medium-expanded li { - flex: 1 1 0px; } - .menu.medium-simple li { - flex: 1 1 0px; } } - @media print, screen and (min-width: 64em) { - .menu.large-horizontal { - flex-wrap: wrap; - flex-direction: row; } - .menu.large-vertical { - flex-wrap: nowrap; - flex-direction: column; } - .menu.large-expanded li { - flex: 1 1 0px; } - .menu.large-simple li { - flex: 1 1 0px; } } - .menu.nested { - margin-right: 0; - margin-left: 1rem; } - .menu.icons a { - display: flex; } - .menu.icon-top a, .menu.icon-right a, .menu.icon-bottom a, .menu.icon-left a { - display: flex; } - .menu.icon-left li a { - flex-flow: row nowrap; } - .menu.icon-left li a img, - .menu.icon-left li a i, - .menu.icon-left li a svg { - margin-right: 0.25rem; } - .menu.icon-right li a { - flex-flow: row nowrap; } - .menu.icon-right li a img, - .menu.icon-right li a i, - .menu.icon-right li a svg { - margin-left: 0.25rem; } - .menu.icon-top li a { - flex-flow: column nowrap; } - .menu.icon-top li a img, - .menu.icon-top li a i, - .menu.icon-top li a svg { - align-self: stretch; - margin-bottom: 0.25rem; - text-align: center; } - .menu.icon-bottom li a { - flex-flow: column nowrap; } - .menu.icon-bottom li a img, - .menu.icon-bottom li a i, - .menu.icon-bottom li a svg { - align-self: stretch; - margin-bottom: 0.25rem; - text-align: center; } - .menu .is-active > a { - background: #1779ba; - color: #fefefe; } - .menu .active > a { - background: #1779ba; - color: #fefefe; } - .menu.align-left { - justify-content: flex-start; } - .menu.align-right li { - display: flex; - justify-content: flex-end; } - .menu.align-right li .submenu li { - justify-content: flex-start; } - .menu.align-right.vertical li { - display: block; - text-align: right; } - .menu.align-right.vertical li .submenu li { - text-align: right; } - .menu.align-right .nested { - margin-right: 1rem; - margin-left: 0; } - .menu.align-center li { - display: flex; - justify-content: center; } - .menu.align-center li .submenu li { - justify-content: flex-start; } - .menu .menu-text { - padding: 0.7rem 1rem; - font-weight: bold; - line-height: 1; - color: inherit; } - -.menu-centered > .menu { - justify-content: center; } - .menu-centered > .menu li { - display: flex; - justify-content: center; } - .menu-centered > .menu li .submenu li { - justify-content: flex-start; } - -.no-js [data-responsive-menu] ul { - display: none; } - -.menu-icon { - position: relative; - display: inline-block; - vertical-align: middle; - width: 20px; - height: 16px; - cursor: pointer; } - .menu-icon::after { - position: absolute; - top: 0; - left: 0; - display: block; - width: 100%; - height: 2px; - background: #fefefe; - box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; - content: ''; } - .menu-icon:hover::after { - background: #cacaca; - box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; } - -.menu-icon.dark { - position: relative; - display: inline-block; - vertical-align: middle; - width: 20px; - height: 16px; - cursor: pointer; } - .menu-icon.dark::after { - position: absolute; - top: 0; - left: 0; - display: block; - width: 100%; - height: 2px; - background: #0a0a0a; - box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; - content: ''; } - .menu-icon.dark:hover::after { - background: #8a8a8a; - box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } - -.accordion-menu li { - width: 100%; } - -.accordion-menu a { - padding: 0.7rem 1rem; } - -.accordion-menu .is-accordion-submenu a { - padding: 0.7rem 1rem; } - -.accordion-menu .nested.is-accordion-submenu { - margin-right: 0; - margin-left: 1rem; } - -.accordion-menu.align-right .nested.is-accordion-submenu { - margin-right: 1rem; - margin-left: 0; } - -.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a { - position: relative; } - .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #1779ba transparent transparent; - position: absolute; - top: 50%; - margin-top: -3px; - right: 1rem; } - -.accordion-menu.align-left .is-accordion-submenu-parent > a::after { - right: 1rem; - left: auto; } - -.accordion-menu.align-right .is-accordion-submenu-parent > a::after { - right: auto; - left: 1rem; } - -.accordion-menu .is-accordion-submenu-parent[aria-expanded='true'] > a::after { - transform: rotate(180deg); - transform-origin: 50% 50%; } - -.is-accordion-submenu-parent { - position: relative; } - -.has-submenu-toggle > a { - margin-right: 40px; } - -.submenu-toggle { - position: absolute; - top: 0; - right: 0; - width: 40px; - height: 40px; - cursor: pointer; } - .submenu-toggle::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #1779ba transparent transparent; - top: 0; - bottom: 0; - margin: auto; } - -.submenu-toggle[aria-expanded='true']::after { - transform: scaleY(-1); - transform-origin: 50% 50%; } - -.submenu-toggle-text { - position: absolute !important; - width: 1px !important; - height: 1px !important; - padding: 0 !important; - overflow: hidden !important; - clip: rect(0, 0, 0, 0) !important; - white-space: nowrap !important; - border: 0 !important; } - -.is-drilldown { - position: relative; - overflow: hidden; } - .is-drilldown li { - display: block; } - .is-drilldown.animate-height { - transition: height 0.5s; } - -.drilldown a { - padding: 0.7rem 1rem; - background: #fefefe; } - -.drilldown .is-drilldown-submenu { - position: absolute; - top: 0; - left: 100%; - z-index: -1; - width: 100%; - background: #fefefe; - transition: transform 0.15s linear; } - .drilldown .is-drilldown-submenu.is-active { - z-index: 1; - display: block; - transform: translateX(-100%); } - .drilldown .is-drilldown-submenu.is-closing { - transform: translateX(100%); } - .drilldown .is-drilldown-submenu a { - padding: 0.7rem 1rem; } - -.drilldown .nested.is-drilldown-submenu { - margin-right: 0; - margin-left: 0; } - -.drilldown .drilldown-submenu-cover-previous { - min-height: 100%; } - -.drilldown .is-drilldown-submenu-parent > a { - position: relative; } - .drilldown .is-drilldown-submenu-parent > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #1779ba; - position: absolute; - top: 50%; - margin-top: -6px; - right: 1rem; } - -.drilldown.align-left .is-drilldown-submenu-parent > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #1779ba; - right: 1rem; - left: auto; } - -.drilldown.align-right .is-drilldown-submenu-parent > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #1779ba transparent transparent; - right: auto; - left: 1rem; } - -.drilldown .js-drilldown-back > a::before { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #1779ba transparent transparent; - display: inline-block; - vertical-align: middle; - margin-right: 0.75rem; } - -.dropdown.menu > li.opens-left > .is-dropdown-submenu { - top: 100%; - right: 0; - left: auto; } - -.dropdown.menu > li.opens-right > .is-dropdown-submenu { - top: 100%; - right: auto; - left: 0; } - -.dropdown.menu > li.is-dropdown-submenu-parent > a { - position: relative; - padding-right: 1.5rem; } - -.dropdown.menu > li.is-dropdown-submenu-parent > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #1779ba transparent transparent; - right: 5px; - left: auto; - margin-top: -3px; } - -[data-whatinput='mouse'] .dropdown.menu a { - outline: 0; } - -.dropdown.menu > li > a { - padding: 0.7rem 1rem; } - -.dropdown.menu > li.is-active > a { - background: transparent; - color: #1779ba; } - -.no-js .dropdown.menu ul { - display: none; } - -.dropdown.menu .nested.is-dropdown-submenu { - margin-right: 0; - margin-left: 0; } - -.dropdown.menu.vertical > li .is-dropdown-submenu { - top: 0; } - -.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu { - top: 0; - right: 100%; - left: auto; } - -.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu { - right: auto; - left: 100%; } - -.dropdown.menu.vertical > li > a::after { - right: 14px; } - -.dropdown.menu.vertical > li.opens-left > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #1779ba transparent transparent; - right: auto; - left: 5px; } - -.dropdown.menu.vertical > li.opens-right > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } - -@media screen and (min-width: 25em) { - .dropdown.menu.smedium-horizontal > li.opens-left > .is-dropdown-submenu { - top: 100%; - right: 0; - left: auto; } - .dropdown.menu.smedium-horizontal > li.opens-right > .is-dropdown-submenu { - top: 100%; - right: auto; - left: 0; } - .dropdown.menu.smedium-horizontal > li.is-dropdown-submenu-parent > a { - position: relative; - padding-right: 1.5rem; } - .dropdown.menu.smedium-horizontal > li.is-dropdown-submenu-parent > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #1779ba transparent transparent; - right: 5px; - left: auto; - margin-top: -3px; } - .dropdown.menu.smedium-vertical > li .is-dropdown-submenu { - top: 0; } - .dropdown.menu.smedium-vertical > li.opens-left > .is-dropdown-submenu { - top: 0; - right: 100%; - left: auto; } - .dropdown.menu.smedium-vertical > li.opens-right > .is-dropdown-submenu { - right: auto; - left: 100%; } - .dropdown.menu.smedium-vertical > li > a::after { - right: 14px; } - .dropdown.menu.smedium-vertical > li.opens-left > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #1779ba transparent transparent; - right: auto; - left: 5px; } - .dropdown.menu.smedium-vertical > li.opens-right > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } } - -@media print, screen and (min-width: 40em) { - .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { - top: 100%; - right: 0; - left: auto; } - .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { - top: 100%; - right: auto; - left: 0; } - .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { - position: relative; - padding-right: 1.5rem; } - .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #1779ba transparent transparent; - right: 5px; - left: auto; - margin-top: -3px; } - .dropdown.menu.medium-vertical > li .is-dropdown-submenu { - top: 0; } - .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu { - top: 0; - right: 100%; - left: auto; } - .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu { - right: auto; - left: 100%; } - .dropdown.menu.medium-vertical > li > a::after { - right: 14px; } - .dropdown.menu.medium-vertical > li.opens-left > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #1779ba transparent transparent; - right: auto; - left: 5px; } - .dropdown.menu.medium-vertical > li.opens-right > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } } - -@media print, screen and (min-width: 64em) { - .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { - top: 100%; - right: 0; - left: auto; } - .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { - top: 100%; - right: auto; - left: 0; } - .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { - position: relative; - padding-right: 1.5rem; } - .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-bottom-width: 0; - border-top-style: solid; - border-color: #1779ba transparent transparent; - right: 5px; - left: auto; - margin-top: -3px; } - .dropdown.menu.large-vertical > li .is-dropdown-submenu { - top: 0; } - .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu { - top: 0; - right: 100%; - left: auto; } - .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu { - right: auto; - left: 100%; } - .dropdown.menu.large-vertical > li > a::after { - right: 14px; } - .dropdown.menu.large-vertical > li.opens-left > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #1779ba transparent transparent; - right: auto; - left: 5px; } - .dropdown.menu.large-vertical > li.opens-right > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } } - -.dropdown.menu.align-right .is-dropdown-submenu.first-sub { - top: 100%; - right: 0; - left: auto; } - -.is-dropdown-menu.vertical { - width: 100px; } - .is-dropdown-menu.vertical.align-right { - float: right; } - -.is-dropdown-submenu-parent { - position: relative; } - .is-dropdown-submenu-parent a::after { - position: absolute; - top: 50%; - right: 5px; - left: auto; - margin-top: -6px; } - .is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu { - top: 100%; - left: auto; } - .is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu { - right: 100%; - left: auto; } - .is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu { - right: auto; - left: 100%; } - -.is-dropdown-submenu { - position: absolute; - top: 0; - left: 100%; - z-index: 1; - display: none; - min-width: 200px; - border: 1px solid #cacaca; - background: #fefefe; } - .dropdown .is-dropdown-submenu a { - padding: 0.7rem 1rem; } - .is-dropdown-submenu .is-dropdown-submenu-parent > a::after { - right: 14px; } - .is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-left-width: 0; - border-right-style: solid; - border-color: transparent #1779ba transparent transparent; - right: auto; - left: 5px; } - .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { - display: block; - width: 0; - height: 0; - border: inset 6px; - content: ''; - border-right-width: 0; - border-left-style: solid; - border-color: transparent transparent transparent #1779ba; } - .is-dropdown-submenu .is-dropdown-submenu { - margin-top: -1px; } - .is-dropdown-submenu > li { - width: 100%; } - .is-dropdown-submenu.js-dropdown-active { - display: block; } - -.is-off-canvas-open { - overflow: hidden; } - -.js-off-canvas-overlay { - position: absolute; - top: 0; - left: 0; - z-index: 11; - width: 100%; - height: 100%; - transition: opacity 0.5s ease, visibility 0.5s ease; - background: rgba(254, 254, 254, 0.25); - opacity: 0; - visibility: hidden; - overflow: hidden; } - .js-off-canvas-overlay.is-visible { - opacity: 1; - visibility: visible; } - .js-off-canvas-overlay.is-closable { - cursor: pointer; } - .js-off-canvas-overlay.is-overlay-absolute { - position: absolute; } - .js-off-canvas-overlay.is-overlay-fixed { - position: fixed; } - -.off-canvas-wrapper { - position: relative; - overflow: hidden; } - -.off-canvas { - position: fixed; - z-index: 12; - transition: transform 0.5s ease; - backface-visibility: hidden; - background: #e6e6e6; } - [data-whatinput='mouse'] .off-canvas { - outline: 0; } - .off-canvas.is-transition-push { - z-index: 12; } - .off-canvas.is-closed { - visibility: hidden; } - .off-canvas.is-transition-overlap { - z-index: 13; } - .off-canvas.is-transition-overlap.is-open { - box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); } - .off-canvas.is-open { - transform: translate(0, 0); } - -.off-canvas-absolute { - position: absolute; - z-index: 12; - transition: transform 0.5s ease; - backface-visibility: hidden; - background: #e6e6e6; } - [data-whatinput='mouse'] .off-canvas-absolute { - outline: 0; } - .off-canvas-absolute.is-transition-push { - z-index: 12; } - .off-canvas-absolute.is-closed { - visibility: hidden; } - .off-canvas-absolute.is-transition-overlap { - z-index: 13; } - .off-canvas-absolute.is-transition-overlap.is-open { - box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); } - .off-canvas-absolute.is-open { - transform: translate(0, 0); } - -.position-left { - top: 0; - left: 0; - height: 100%; - overflow-y: auto; - width: 250px; - transform: translateX(-250px); } - .off-canvas-content .off-canvas.position-left { - transform: translateX(-250px); } - .off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open { - transform: translate(0, 0); } - .off-canvas-content.is-open-left.has-transition-push { - transform: translateX(250px); } - .position-left.is-transition-push { - box-shadow: inset -13px 0 20px -13px rgba(10, 10, 10, 0.25); } - -.position-right { - top: 0; - right: 0; - height: 100%; - overflow-y: auto; - width: 250px; - transform: translateX(250px); } - .off-canvas-content .off-canvas.position-right { - transform: translateX(250px); } - .off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open { - transform: translate(0, 0); } - .off-canvas-content.is-open-right.has-transition-push { - transform: translateX(-250px); } - .position-right.is-transition-push { - box-shadow: inset 13px 0 20px -13px rgba(10, 10, 10, 0.25); } - -.position-top { - top: 0; - left: 0; - width: 100%; - overflow-x: auto; - height: 250px; - transform: translateY(-250px); } - .off-canvas-content .off-canvas.position-top { - transform: translateY(-250px); } - .off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open { - transform: translate(0, 0); } - .off-canvas-content.is-open-top.has-transition-push { - transform: translateY(250px); } - .position-top.is-transition-push { - box-shadow: inset 0 -13px 20px -13px rgba(10, 10, 10, 0.25); } - -.position-bottom { - bottom: 0; - left: 0; - width: 100%; - overflow-x: auto; - height: 250px; - transform: translateY(250px); } - .off-canvas-content .off-canvas.position-bottom { - transform: translateY(250px); } - .off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open { - transform: translate(0, 0); } - .off-canvas-content.is-open-bottom.has-transition-push { - transform: translateY(-250px); } - .position-bottom.is-transition-push { - box-shadow: inset 0 13px 20px -13px rgba(10, 10, 10, 0.25); } - -.off-canvas-content { - transform: none; - backface-visibility: hidden; } - .off-canvas-content.has-transition-overlap, .off-canvas-content.has-transition-push { - transition: transform 0.5s ease; } - .off-canvas-content.has-transition-push { - transform: translate(0, 0); } - .off-canvas-content .off-canvas.is-open { - transform: translate(0, 0); } - -@media screen and (min-width: 25em) { - .position-left.reveal-for-smedium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-left.reveal-for-smedium .close-button { - display: none; } - .off-canvas-content .position-left.reveal-for-smedium { - transform: none; } - .off-canvas-content.has-reveal-left { - margin-left: 250px; } - .position-left.reveal-for-smedium ~ .off-canvas-content { - margin-left: 250px; } - .position-right.reveal-for-smedium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-right.reveal-for-smedium .close-button { - display: none; } - .off-canvas-content .position-right.reveal-for-smedium { - transform: none; } - .off-canvas-content.has-reveal-right { - margin-right: 250px; } - .position-right.reveal-for-smedium ~ .off-canvas-content { - margin-right: 250px; } - .position-top.reveal-for-smedium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-top.reveal-for-smedium .close-button { - display: none; } - .off-canvas-content .position-top.reveal-for-smedium { - transform: none; } - .off-canvas-content.has-reveal-top { - margin-top: 250px; } - .position-top.reveal-for-smedium ~ .off-canvas-content { - margin-top: 250px; } - .position-bottom.reveal-for-smedium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-bottom.reveal-for-smedium .close-button { - display: none; } - .off-canvas-content .position-bottom.reveal-for-smedium { - transform: none; } - .off-canvas-content.has-reveal-bottom { - margin-bottom: 250px; } - .position-bottom.reveal-for-smedium ~ .off-canvas-content { - margin-bottom: 250px; } } - -@media print, screen and (min-width: 40em) { - .position-left.reveal-for-medium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-left.reveal-for-medium .close-button { - display: none; } - .off-canvas-content .position-left.reveal-for-medium { - transform: none; } - .off-canvas-content.has-reveal-left { - margin-left: 250px; } - .position-left.reveal-for-medium ~ .off-canvas-content { - margin-left: 250px; } - .position-right.reveal-for-medium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-right.reveal-for-medium .close-button { - display: none; } - .off-canvas-content .position-right.reveal-for-medium { - transform: none; } - .off-canvas-content.has-reveal-right { - margin-right: 250px; } - .position-right.reveal-for-medium ~ .off-canvas-content { - margin-right: 250px; } - .position-top.reveal-for-medium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-top.reveal-for-medium .close-button { - display: none; } - .off-canvas-content .position-top.reveal-for-medium { - transform: none; } - .off-canvas-content.has-reveal-top { - margin-top: 250px; } - .position-top.reveal-for-medium ~ .off-canvas-content { - margin-top: 250px; } - .position-bottom.reveal-for-medium { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-bottom.reveal-for-medium .close-button { - display: none; } - .off-canvas-content .position-bottom.reveal-for-medium { - transform: none; } - .off-canvas-content.has-reveal-bottom { - margin-bottom: 250px; } - .position-bottom.reveal-for-medium ~ .off-canvas-content { - margin-bottom: 250px; } } - -@media print, screen and (min-width: 64em) { - .position-left.reveal-for-large { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-left.reveal-for-large .close-button { - display: none; } - .off-canvas-content .position-left.reveal-for-large { - transform: none; } - .off-canvas-content.has-reveal-left { - margin-left: 250px; } - .position-left.reveal-for-large ~ .off-canvas-content { - margin-left: 250px; } - .position-right.reveal-for-large { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-right.reveal-for-large .close-button { - display: none; } - .off-canvas-content .position-right.reveal-for-large { - transform: none; } - .off-canvas-content.has-reveal-right { - margin-right: 250px; } - .position-right.reveal-for-large ~ .off-canvas-content { - margin-right: 250px; } - .position-top.reveal-for-large { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-top.reveal-for-large .close-button { - display: none; } - .off-canvas-content .position-top.reveal-for-large { - transform: none; } - .off-canvas-content.has-reveal-top { - margin-top: 250px; } - .position-top.reveal-for-large ~ .off-canvas-content { - margin-top: 250px; } - .position-bottom.reveal-for-large { - transform: none; - z-index: 12; - transition: none; - visibility: visible; } - .position-bottom.reveal-for-large .close-button { - display: none; } - .off-canvas-content .position-bottom.reveal-for-large { - transform: none; } - .off-canvas-content.has-reveal-bottom { - margin-bottom: 250px; } - .position-bottom.reveal-for-large ~ .off-canvas-content { - margin-bottom: 250px; } } - -@media screen and (min-width: 25em) { - .off-canvas.in-canvas-for-smedium { - visibility: visible; - height: auto; - position: static; - background: none; - width: auto; - overflow: visible; - transition: none; } - .off-canvas.in-canvas-for-smedium.position-left, .off-canvas.in-canvas-for-smedium.position-right, .off-canvas.in-canvas-for-smedium.position-top, .off-canvas.in-canvas-for-smedium.position-bottom { - box-shadow: none; - transform: none; } - .off-canvas.in-canvas-for-smedium .close-button { - display: none; } } - -@media print, screen and (min-width: 40em) { - .off-canvas.in-canvas-for-medium { - visibility: visible; - height: auto; - position: static; - background: none; - width: auto; - overflow: visible; - transition: none; } - .off-canvas.in-canvas-for-medium.position-left, .off-canvas.in-canvas-for-medium.position-right, .off-canvas.in-canvas-for-medium.position-top, .off-canvas.in-canvas-for-medium.position-bottom { - box-shadow: none; - transform: none; } - .off-canvas.in-canvas-for-medium .close-button { - display: none; } } - -@media print, screen and (min-width: 64em) { - .off-canvas.in-canvas-for-large { - visibility: visible; - height: auto; - position: static; - background: none; - width: auto; - overflow: visible; - transition: none; } - .off-canvas.in-canvas-for-large.position-left, .off-canvas.in-canvas-for-large.position-right, .off-canvas.in-canvas-for-large.position-top, .off-canvas.in-canvas-for-large.position-bottom { - box-shadow: none; - transform: none; } - .off-canvas.in-canvas-for-large .close-button { - display: none; } } - -html.is-reveal-open { - position: fixed; - width: 100%; - overflow-y: hidden; } - html.is-reveal-open.zf-has-scroll { - overflow-y: scroll; } - html.is-reveal-open body { - overflow-y: hidden; } - -.reveal-overlay { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1005; - display: none; - background-color: rgba(10, 10, 10, 0.45); - overflow-y: auto; } - -.reveal { - z-index: 1006; - backface-visibility: hidden; - display: none; - padding: 1rem; - border: 1px solid #cacaca; - border-radius: 0; - background-color: #fefefe; - position: relative; - top: 100px; - margin-right: auto; - margin-left: auto; - overflow-y: auto; } - [data-whatinput='mouse'] .reveal { - outline: 0; } - @media print, screen and (min-width: 40em) { - .reveal { - min-height: 0; } } - .reveal .column { - min-width: 0; } - .reveal > :last-child { - margin-bottom: 0; } - @media print, screen and (min-width: 40em) { - .reveal { - width: 600px; - max-width: 75rem; } } - .reveal.collapse { - padding: 0; } - @media print, screen and (min-width: 40em) { - .reveal.tiny { - width: 30%; - max-width: 75rem; } } - @media print, screen and (min-width: 40em) { - .reveal.small { - width: 50%; - max-width: 75rem; } } - @media print, screen and (min-width: 40em) { - .reveal.large { - width: 90%; - max-width: 75rem; } } - .reveal.full { - top: 0; - right: 0; - bottom: 0; - left: 0; - width: 100%; - max-width: none; - height: 100%; - min-height: 100%; - margin-left: 0; - border: 0; - border-radius: 0; } - @media print, screen and (max-width: 24.99875em) { - .reveal { - top: 0; - right: 0; - bottom: 0; - left: 0; - width: 100%; - max-width: none; - height: 100%; - min-height: 100%; - margin-left: 0; - border: 0; - border-radius: 0; } } - .reveal.without-overlay { - position: fixed; } - -.sticky-container { - position: relative; } - -.sticky { - position: relative; - z-index: 0; - transform: translate3d(0, 0, 0); } - -.sticky.is-stuck { - position: fixed; - z-index: 5; - width: 100%; } - .sticky.is-stuck.is-at-top { - top: 0; } - .sticky.is-stuck.is-at-bottom { - bottom: 0; } - -.sticky.is-anchored { - position: relative; - right: auto; - left: auto; } - .sticky.is-anchored.is-at-bottom { - bottom: 0; } - -.title-bar { - padding: 0.5rem; - background: #0a0a0a; - color: #fefefe; - display: flex; - justify-content: flex-start; - align-items: center; } - .title-bar .menu-icon { - margin-left: 0.25rem; - margin-right: 0.25rem; } - -.title-bar-left, -.title-bar-right { - flex: 1 1 0px; } - -.title-bar-right { - text-align: right; } - -.title-bar-title { - display: inline-block; - vertical-align: middle; - font-weight: bold; } - -.top-bar { - display: flex; - flex-wrap: nowrap; - justify-content: space-between; - align-items: center; - padding: 0.5rem; - flex-wrap: wrap; } - .top-bar, - .top-bar ul { - background-color: #e6e6e6; } - .top-bar input { - max-width: 200px; - margin-right: 1rem; } - .top-bar .input-group-field { - width: 100%; - margin-right: 0; } - .top-bar input.button { - width: auto; } - .top-bar .top-bar-left, - .top-bar .top-bar-right { - flex: 0 0 100%; - max-width: 100%; } - @media print, screen and (min-width: 40em) { - .top-bar { - flex-wrap: nowrap; } - .top-bar .top-bar-left { - flex: 1 1 auto; - margin-right: auto; } - .top-bar .top-bar-right { - flex: 0 1 auto; - margin-left: auto; } } - @media screen and (max-width: 39.99875em) { - .top-bar.stacked-for-smedium { - flex-wrap: wrap; } - .top-bar.stacked-for-smedium .top-bar-left, - .top-bar.stacked-for-smedium .top-bar-right { - flex: 0 0 100%; - max-width: 100%; } } - @media print, screen and (max-width: 63.99875em) { - .top-bar.stacked-for-medium { - flex-wrap: wrap; } - .top-bar.stacked-for-medium .top-bar-left, - .top-bar.stacked-for-medium .top-bar-right { - flex: 0 0 100%; - max-width: 100%; } } - @media print, screen and (max-width: 74.99875em) { - .top-bar.stacked-for-large { - flex-wrap: wrap; } - .top-bar.stacked-for-large .top-bar-left, - .top-bar.stacked-for-large .top-bar-right { - flex: 0 0 100%; - max-width: 100%; } } - -.top-bar-title { - flex: 0 0 auto; - margin: 0.5rem 1rem 0.5rem 0; } - -.top-bar-left, -.top-bar-right { - flex: 0 0 auto; } - -.float-left { - float: left !important; } - -.float-right { - float: right !important; } - -.float-center { - display: block; - margin-right: auto; - margin-left: auto; } - -.clearfix::before, .clearfix::after { - display: table; - content: ' '; - flex-basis: 0; - order: 1; } - -.clearfix::after { - clear: both; } - -.align-left { - justify-content: flex-start; } - -.align-right { - justify-content: flex-end; } - -.align-center { - justify-content: center; } - -.align-justify { - justify-content: space-between; } - -.align-spaced { - justify-content: space-around; } - -.align-left.vertical.menu > li > a { - justify-content: flex-start; } - -.align-right.vertical.menu > li > a { - justify-content: flex-end; } - -.align-center.vertical.menu > li > a { - justify-content: center; } - -.align-top { - align-items: flex-start; } - -.align-self-top { - align-self: flex-start; } - -.align-bottom { - align-items: flex-end; } - -.align-self-bottom { - align-self: flex-end; } - -.align-middle { - align-items: center; } - -.align-self-middle { - align-self: center; } - -.align-stretch { - align-items: stretch; } - -.align-self-stretch { - align-self: stretch; } - -.align-center-middle { - justify-content: center; - align-items: center; - align-content: center; } - -.small-order-1 { - order: 1; } - -.small-order-2 { - order: 2; } - -.small-order-3 { - order: 3; } - -.small-order-4 { - order: 4; } - -.small-order-5 { - order: 5; } - -.small-order-6 { - order: 6; } - -@media screen and (min-width: 25em) { - .smedium-order-1 { - order: 1; } - .smedium-order-2 { - order: 2; } - .smedium-order-3 { - order: 3; } - .smedium-order-4 { - order: 4; } - .smedium-order-5 { - order: 5; } - .smedium-order-6 { - order: 6; } } - -@media print, screen and (min-width: 40em) { - .medium-order-1 { - order: 1; } - .medium-order-2 { - order: 2; } - .medium-order-3 { - order: 3; } - .medium-order-4 { - order: 4; } - .medium-order-5 { - order: 5; } - .medium-order-6 { - order: 6; } } - -@media print, screen and (min-width: 64em) { - .large-order-1 { - order: 1; } - .large-order-2 { - order: 2; } - .large-order-3 { - order: 3; } - .large-order-4 { - order: 4; } - .large-order-5 { - order: 5; } - .large-order-6 { - order: 6; } } - -.flex-container { - display: flex; } - -.flex-child-auto { - flex: 1 1 auto; } - -.flex-child-grow { - flex: 1 0 auto; } - -.flex-child-shrink { - flex: 0 1 auto; } - -.flex-dir-row { - flex-direction: row; } - -.flex-dir-row-reverse { - flex-direction: row-reverse; } - -.flex-dir-column { - flex-direction: column; } - -.flex-dir-column-reverse { - flex-direction: column-reverse; } - -@media screen and (min-width: 25em) { - .smedium-flex-container { - display: flex; } - .smedium-flex-child-auto { - flex: 1 1 auto; } - .smedium-flex-child-grow { - flex: 1 0 auto; } - .smedium-flex-child-shrink { - flex: 0 1 auto; } - .smedium-flex-dir-row { - flex-direction: row; } - .smedium-flex-dir-row-reverse { - flex-direction: row-reverse; } - .smedium-flex-dir-column { - flex-direction: column; } - .smedium-flex-dir-column-reverse { - flex-direction: column-reverse; } } - -@media print, screen and (min-width: 40em) { - .medium-flex-container { - display: flex; } - .medium-flex-child-auto { - flex: 1 1 auto; } - .medium-flex-child-grow { - flex: 1 0 auto; } - .medium-flex-child-shrink { - flex: 0 1 auto; } - .medium-flex-dir-row { - flex-direction: row; } - .medium-flex-dir-row-reverse { - flex-direction: row-reverse; } - .medium-flex-dir-column { - flex-direction: column; } - .medium-flex-dir-column-reverse { - flex-direction: column-reverse; } } - -@media print, screen and (min-width: 64em) { - .large-flex-container { - display: flex; } - .large-flex-child-auto { - flex: 1 1 auto; } - .large-flex-child-grow { - flex: 1 0 auto; } - .large-flex-child-shrink { - flex: 0 1 auto; } - .large-flex-dir-row { - flex-direction: row; } - .large-flex-dir-row-reverse { - flex-direction: row-reverse; } - .large-flex-dir-column { - flex-direction: column; } - .large-flex-dir-column-reverse { - flex-direction: column-reverse; } } - -.hide { - display: none !important; } - -.invisible { - visibility: hidden; } - -@media print, screen and (max-width: 24.99875em) { - .hide-for-small-only { - display: none !important; } } - -@media screen and (max-width: 0em), screen and (min-width: 25em) { - .show-for-small-only { - display: none !important; } } - -@media screen and (min-width: 25em) { - .hide-for-smedium { - display: none !important; } } - -@media screen and (max-width: 24.99875em) { - .show-for-smedium { - display: none !important; } } - -@media screen and (min-width: 25em) and (max-width: 39.99875em) { - .hide-for-smedium-only { - display: none !important; } } - -@media screen and (max-width: 24.99875em), screen and (min-width: 40em) { - .show-for-smedium-only { - display: none !important; } } - -@media print, screen and (min-width: 40em) { - .hide-for-medium { - display: none !important; } } - -@media screen and (max-width: 39.99875em) { - .show-for-medium { - display: none !important; } } - -@media print, screen and (min-width: 40em) and (max-width: 63.99875em) { - .hide-for-medium-only { - display: none !important; } } - -@media screen and (max-width: 39.99875em), screen and (min-width: 64em) { - .show-for-medium-only { - display: none !important; } } - -@media print, screen and (min-width: 64em) { - .hide-for-large { - display: none !important; } } - -@media screen and (max-width: 63.99875em) { - .show-for-large { - display: none !important; } } - -@media print, screen and (min-width: 64em) and (max-width: 74.99875em) { - .hide-for-large-only { - display: none !important; } } - -@media screen and (max-width: 63.99875em), screen and (min-width: 75em) { - .show-for-large-only { - display: none !important; } } - -.show-for-sr, -.show-on-focus { - position: absolute !important; - width: 1px !important; - height: 1px !important; - padding: 0 !important; - overflow: hidden !important; - clip: rect(0, 0, 0, 0) !important; - white-space: nowrap !important; - border: 0 !important; } - -.show-on-focus:active, .show-on-focus:focus { - position: static !important; - width: auto !important; - height: auto !important; - overflow: visible !important; - clip: auto !important; - white-space: normal !important; } - -.show-for-landscape, -.hide-for-portrait { - display: block !important; } - @media screen and (orientation: landscape) { - .show-for-landscape, - .hide-for-portrait { - display: block !important; } } - @media screen and (orientation: portrait) { - .show-for-landscape, - .hide-for-portrait { - display: none !important; } } - -.hide-for-landscape, -.show-for-portrait { - display: none !important; } - @media screen and (orientation: landscape) { - .hide-for-landscape, - .show-for-portrait { - display: none !important; } } - @media screen and (orientation: portrait) { - .hide-for-landscape, - .show-for-portrait { - display: block !important; } } - -#toast-container { - z-index: 10001; - text-align: center; - position: absolute; - height: 100vh !important; - width: 100%; - overflow: visible !important; - padding: 8.5vh 0 0 0; - pointer-events: none; } - #toast-container div.toast { - position: relative; - width: 100%; - pointer-events: none; - transition: opacity 0.25s; } - #toast-container div.toast.toast-template { - visibility: hidden; } - #toast-container div.toast span.message { - pointer-events: auto; - font-size: 0.8rem; - border-radius: 25px; - letter-spacing: 0; - z-index: 10001; - max-width: 100%; - display: inline-block; - box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.28); - border: 1px solid #626262; - background-color: #6b6b6b; - padding: .3em .6em; - text-align: center; - color: white; } - #toast-container div.toast span.message:hover { - opacity: .4; - cursor: pointer; } - #toast-container div.toast span.message:before, #toast-container div.toast span.message:after { - display: block; - content: ""; } - -.background { - position: fixed; - z-index: 1000000; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: auto; - background-color: rgba(55, 55, 55, 0.6); } - .background .modal { - position: relative; - top: 50%; - margin: auto; - width: 80%; - border-radius: 2px; - background-color: #fefefe; - transform: translateY(-50%); - padding: 0.5rem; - display: flex; - flex-direction: column; - max-height: 80%; - max-width: 1024px; } - @media print, screen and (max-width: 63.99875em) { - .background .modal.small-margin { - width: 90%; } } - @media print, screen and (max-width: 24.99875em) { - .background .modal.small-margin { - width: 95%; } } - .background .modal.max-small { - max-width: 0; } - .background .modal.max-smedium { - max-width: 400px; } - .background .modal.max-medium { - max-width: 640px; } - .background .modal.max-large { - max-width: 1024px; } - .background .modal.max-xlarge { - max-width: 1200px; } - .background .modal.max-xxlarge { - max-width: 1440px; } - .background .modal .title { - font-weight: bold; - padding-bottom: 0.5rem; } - .background .modal .content-container { - overflow-y: auto; - max-height: 100%; } - .background .modal .content-container .loader { - position: static; - transform: none; } - .background .modal .close { - text-align: right; - float: right; - font-size: 28px; - font-weight: bold; - line-height: 1; } - .background .modal .close:hover, .background .modal .close:focus { - text-decoration: none; - cursor: pointer; } - .background .modal .modal-button-container { - padding-top: 0.5rem; } - .background .modal .modal-button-container .button { - margin-left: 0.2rem; - margin-bottom: 0 !important; - padding: 0.6em 0.8em; } - @media print, screen and (max-width: 24.99875em) { - .background .modal .modal-button-container .button { - margin-left: 0.1rem; - padding: 0.3em 0.5em; } } - .background .modal .choose-dialog-value-row { - line-height: 1; - padding-top: 0.5em; - padding-bottom: 0.5em; - width: 100%; - cursor: pointer; - background: rgba(150, 150, 150, 0.15); - display: inline-block; - margin-top: 0.3rem; - margin-bottom: 0.3rem; - padding-left: 0.5rem; } - .background .modal.no-title .title { - display: none; } - -label { - position: relative; } - label [type='text'], label [type='password'], label [type='date'], label [type='datetime'], label [type='datetime-local'], label [type='month'], - label [type='week'], label [type='email'], label [type='number'], label [type='search'], label [type='tel'], label [type='time'], label [type='url'], - label [type='color'], label textarea, label input[type='text'], label input:not([type]) { - display: block; - width: 100%; - height: 2.4375rem; - padding: 0.5rem; - box-shadow: none; - font-size: 1rem; - font-weight: normal; - line-height: 1.5; - border: none; - border-bottom: solid 1px #626262; - outline: 0; - margin: 0 0 15px; } - label [type='text']:invalid, label [type='password']:invalid, label [type='date']:invalid, label [type='datetime']:invalid, label [type='datetime-local']:invalid, label [type='month']:invalid, - label [type='week']:invalid, label [type='email']:invalid, label [type='number']:invalid, label [type='search']:invalid, label [type='tel']:invalid, label [type='time']:invalid, label [type='url']:invalid, - label [type='color']:invalid, label textarea:invalid, label input[type='text']:invalid, label input:not([type]):invalid { - box-shadow: 0 0 2px 2px #ff6776; } - label [type='text']:disabled, label [type='password']:disabled, label [type='date']:disabled, label [type='datetime']:disabled, label [type='datetime-local']:disabled, label [type='month']:disabled, - label [type='week']:disabled, label [type='email']:disabled, label [type='number']:disabled, label [type='search']:disabled, label [type='tel']:disabled, label [type='time']:disabled, label [type='url']:disabled, - label [type='color']:disabled, label textarea:disabled, label input[type='text']:disabled, label input:not([type]):disabled { - background-color: #e6e6e6; } - label [type='text']:focus, label [type='password']:focus, label [type='date']:focus, label [type='datetime']:focus, label [type='datetime-local']:focus, label [type='month']:focus, - label [type='week']:focus, label [type='email']:focus, label [type='number']:focus, label [type='search']:focus, label [type='tel']:focus, label [type='time']:focus, label [type='url']:focus, - label [type='color']:focus, label textarea:focus, label input[type='text']:focus, label input:not([type]):focus { - border: none; - border-bottom: solid 1px #626262; - box-shadow: none; } - label [type='text']:focus:invalid, label [type='password']:focus:invalid, label [type='date']:focus:invalid, label [type='datetime']:focus:invalid, label [type='datetime-local']:focus:invalid, label [type='month']:focus:invalid, - label [type='week']:focus:invalid, label [type='email']:focus:invalid, label [type='number']:focus:invalid, label [type='search']:focus:invalid, label [type='tel']:focus:invalid, label [type='time']:focus:invalid, label [type='url']:focus:invalid, - label [type='color']:focus:invalid, label textarea:focus:invalid, label input[type='text']:focus:invalid, label input:not([type]):focus:invalid { - box-shadow: 0 0 2px 2px #ff6776; } - label [type='text']:focus:disabled, label [type='password']:focus:disabled, label [type='date']:focus:disabled, label [type='datetime']:focus:disabled, label [type='datetime-local']:focus:disabled, label [type='month']:focus:disabled, - label [type='week']:focus:disabled, label [type='email']:focus:disabled, label [type='number']:focus:disabled, label [type='search']:focus:disabled, label [type='tel']:focus:disabled, label [type='time']:focus:disabled, label [type='url']:focus:disabled, - label [type='color']:focus:disabled, label textarea:focus:disabled, label input[type='text']:focus:disabled, label input:not([type]):focus:disabled { - background-color: #e6e6e6; } - label [type='text']:focus ~ span, label [type='text'].notEmpty:not(:focus) ~ span, label [type='text']:not(:empty) ~ span, label [type='password']:focus ~ span, label [type='password'].notEmpty:not(:focus) ~ span, label [type='password']:not(:empty) ~ span, label [type='date']:focus ~ span, label [type='date'].notEmpty:not(:focus) ~ span, label [type='date']:not(:empty) ~ span, label [type='datetime']:focus ~ span, label [type='datetime'].notEmpty:not(:focus) ~ span, label [type='datetime']:not(:empty) ~ span, label [type='datetime-local']:focus ~ span, label [type='datetime-local'].notEmpty:not(:focus) ~ span, label [type='datetime-local']:not(:empty) ~ span, label [type='month']:focus ~ span, label [type='month'].notEmpty:not(:focus) ~ span, label [type='month']:not(:empty) ~ span, - label [type='week']:focus ~ span, - label [type='week'].notEmpty:not(:focus) ~ span, - label [type='week']:not(:empty) ~ span, label [type='email']:focus ~ span, label [type='email'].notEmpty:not(:focus) ~ span, label [type='email']:not(:empty) ~ span, label [type='number']:focus ~ span, label [type='number'].notEmpty:not(:focus) ~ span, label [type='number']:not(:empty) ~ span, label [type='search']:focus ~ span, label [type='search'].notEmpty:not(:focus) ~ span, label [type='search']:not(:empty) ~ span, label [type='tel']:focus ~ span, label [type='tel'].notEmpty:not(:focus) ~ span, label [type='tel']:not(:empty) ~ span, label [type='time']:focus ~ span, label [type='time'].notEmpty:not(:focus) ~ span, label [type='time']:not(:empty) ~ span, label [type='url']:focus ~ span, label [type='url'].notEmpty:not(:focus) ~ span, label [type='url']:not(:empty) ~ span, - label [type='color']:focus ~ span, - label [type='color'].notEmpty:not(:focus) ~ span, - label [type='color']:not(:empty) ~ span, label textarea:focus ~ span, label textarea.notEmpty:not(:focus) ~ span, label textarea:not(:empty) ~ span, label input[type='text']:focus ~ span, label input[type='text'].notEmpty:not(:focus) ~ span, label input[type='text']:not(:empty) ~ span, label input:not([type]):focus ~ span, label input:not([type]).notEmpty:not(:focus) ~ span, label input:not([type]):not(:empty) ~ span { - top: -11px; - left: 0; - bottom: 0; - font-size: 11px; - opacity: 1; - color: black; } - label [type='text'] ~ span, label [type='password'] ~ span, label [type='date'] ~ span, label [type='datetime'] ~ span, label [type='datetime-local'] ~ span, label [type='month'] ~ span, - label [type='week'] ~ span, label [type='email'] ~ span, label [type='number'] ~ span, label [type='search'] ~ span, label [type='tel'] ~ span, label [type='time'] ~ span, label [type='url'] ~ span, - label [type='color'] ~ span, label textarea ~ span, label input[type='text'] ~ span, label input:not([type]) ~ span { - position: absolute; - pointer-events: none; - left: 10px; - bottom: 10px; - top: 7px; - transition: 0.2s ease all; - color: #626262; } - label textarea { - height: 10rem; - border-top-right-radius: 3px; - border-top-left-radius: 3px; } - label [type="checkbox"].before-text { - margin-bottom: 0; } - -input[type=number] { - -moz-appearance: textfield; } - input[type=number] ::-webkit-inner-spin-button, input[type=number] ::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; } - -/** - * Foundation for Sites - * Version 6.6.3 - * https://get.foundation - * Licensed under MIT Open Source - */ -@media print, screen and (min-width: 40em) { - .reveal, .reveal.tiny, .reveal.small, .reveal.large { - right: auto; - left: auto; - margin: 0 auto; } } - -nav.top-bar { - z-index: 1; - white-space: nowrap; - position: relative; - background: #000; - color: #fff; - stroke: #fff; - padding: 0; } - nav.top-bar:not(.with-image) { - margin-left: -0.625rem; - margin-right: -0.625rem; - width: calc(100% + 1.25rem); - max-width: calc(100% + 1.25rem); } - @media print, screen and (min-width: 40em) { - nav.top-bar:not(.with-image) { - margin-left: -0.9375rem; - margin-right: -0.9375rem; - width: calc(100% + 1.875rem); - max-width: calc(100% + 1.875rem); } } - nav.top-bar .background-img { - display: none; } - nav.top-bar > span > span > span { - display: flex; } - nav.top-bar > span .back-button { - cursor: pointer; - text-align: left; } - nav.top-bar > span .back-button svg { - width: 0.5rem; - height: 100%; - vertical-align: bottom; } - nav.top-bar > span .back-button.hidden { - visibility: hidden; - display: initial; } - nav.top-bar > span .top-bar-title { - margin-left: 0.5rem; } - nav.top-bar > span #navbar-close-listener-container #navbar-close-listener { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: transparent; - z-index: 8999; } - nav.top-bar > span #responsive-menu-toggle .menu-icon::after { - background: #fff; - box-shadow: 0 7px 0 #fff, 0 14px 0 #fff; } - nav.top-bar > span #responsive-menu-toggle .menu-icon { - vertical-align: -webkit-baseline-middle; } - nav.top-bar > span #responsive-menu { - display: block; - transition-duration: 0.5s; - transition-timing-function: ease-in-out; } - nav.top-bar > span #responsive-menu.visible .hidden-menu { - right: 0; } - nav.top-bar > span #responsive-menu .hidden-menu { - position: fixed; - transform: none; - display: inline-block; - z-index: 9000; - border: 1px solid #1e1c1c; - padding: 4.5rem 1.65rem 0rem 2.75rem; - text-align: left; - background: #000; - margin-top: -1rem; - right: -1000%; } - nav.top-bar > span #responsive-menu .hidden-menu li { - font-size: 1.15rem; } - nav.top-bar > span #responsive-menu .hidden-menu li.hidden { - display: none; } - nav.top-bar > span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent { - z-index: 9001; } - nav.top-bar > span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent ul.is-dropdown-submenu { - top: auto; } - nav.top-bar > span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent ul.is-dropdown-submenu > li, nav.top-bar > span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent ul.is-dropdown-submenu > .close-listener { - z-index: 9001; } - nav.top-bar > span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent > a:after { - display: block; - width: 0; - height: 0; - border: 6px inset; - content: ""; - border-bottom-width: 0; - border-top-style: solid; - border-color: #ffffff transparent transparent; - right: 5px; - left: auto; - margin-top: -3px; } - nav.top-bar > span #responsive-menu .hidden-menu li a { - white-space: nowrap; } - nav.top-bar > span #responsive-menu .hidden-menu li a img { - display: none; } - nav.top-bar > span #responsive-menu .hidden-menu li a img + span { - display: inherit; } - @media print, screen and (min-width: 40em) { - nav.top-bar > span #responsive-menu .hidden-menu li.medium { - display: none; } } - @media print, screen and (min-width: 25em) { - nav.top-bar > span #responsive-menu .hidden-menu li.smedium { - display: none; } } - @media print, screen and (min-width: 64em) { - nav.top-bar > span #responsive-menu .hidden-menu li.large { - display: none; } } - @media print, screen and (max-width: 24.99875em) { - nav.top-bar > span #responsive-menu .hidden-menu li.smedium { - display: block; } - nav.top-bar > span #responsive-menu .hidden-menu li.smedium.hidden { - display: none; } } - @media print, screen and (max-width: 39.99875em) { - nav.top-bar > span #responsive-menu .hidden-menu li.medium { - display: block; } - nav.top-bar > span #responsive-menu .hidden-menu li.medium.hidden { - display: none; } } - @media print, screen and (max-width: 63.99875em) { - nav.top-bar > span #responsive-menu .hidden-menu li.large { - display: block; } - nav.top-bar > span #responsive-menu .hidden-menu li.large.hidden { - display: none; } } - nav.top-bar > span #responsive-menu .hidden-menu li.never { - display: block; } - nav.top-bar > span #responsive-menu .hidden-menu li.never.hidden { - display: none; } - nav.top-bar > span #responsive-menu .hidden-menu li.always { - display: none; } - nav.top-bar > span .navbar-menu { - background: initial; - width: auto; - z-index: 9000; } - nav.top-bar > span .navbar-menu a img + span { - display: none; } - nav.top-bar > span .navbar-menu li { - position: relative; - z-index: 9000; } - nav.top-bar > span .navbar-menu li.is-dropdown-submenu-parent { - z-index: 9001; } - nav.top-bar > span .navbar-menu li.hidden { - display: none; } - @media print, screen and (max-width: 24.99875em) { - nav.top-bar > span .navbar-menu li.smedium { - display: none; } } - @media print, screen and (max-width: 39.99875em) { - nav.top-bar > span .navbar-menu li li { - display: table-cell; } - nav.top-bar > span .navbar-menu li.medium { - display: none; } } - @media print, screen and (max-width: 63.99875em) { - nav.top-bar > span .navbar-menu li.large { - display: none; } } - nav.top-bar > span .navbar-menu li.never { - display: none; } - nav.top-bar > span .navbar-menu .menu li, nav.top-bar > span .navbar-menu.menu li { - z-index: 100; } - @media print, screen and (max-width: 39.99875em) { - nav.top-bar > span .navbar-menu .menu li a, nav.top-bar > span .navbar-menu.menu li a { - width: 100%; } } - @media print, screen and (max-width: 39.99875em) { - nav.top-bar > span .navbar-menu .menu li a, nav.top-bar > span .navbar-menu.menu li a { - padding-left: 0.68rem; } } - @media print, screen and (max-width: 24.99875em) { - nav.top-bar > span .navbar-menu .menu li a, nav.top-bar > span .navbar-menu.menu li a { - padding-left: 0.236rem; } } - @media print, screen and (max-width: 39.99875em) { - nav.top-bar > span .navbar-menu .menu li:not(.is-dropdown-submenu-parent) a, nav.top-bar > span .navbar-menu.menu li:not(.is-dropdown-submenu-parent) a { - padding-right: 0.68rem; } } - @media print, screen and (max-width: 24.99875em) { - nav.top-bar > span .navbar-menu .menu li:not(.is-dropdown-submenu-parent) a, nav.top-bar > span .navbar-menu.menu li:not(.is-dropdown-submenu-parent) a { - padding-right: 0.236rem; } } - nav.top-bar > span .navbar-menu .menu li.img a, nav.top-bar > span .navbar-menu.menu li.img a { - padding-top: 0; - padding-bottom: 0; } - nav.top-bar > span .navbar-menu .menu li.img a img, nav.top-bar > span .navbar-menu.menu li.img a img { - vertical-align: inherit; - max-height: 1.8rem; } - nav.top-bar > span .navbar-menu .menu > li > ul.is-dropdown-submenu, nav.top-bar > span .navbar-menu.menu > li > ul.is-dropdown-submenu { - min-width: 0; } - nav.top-bar > span .navbar-menu .menu > li > ul.is-dropdown-submenu li, nav.top-bar > span .navbar-menu.menu > li > ul.is-dropdown-submenu li { - display: inherit; } - nav.top-bar > span .navbar-menu .menu > li.opens-right > a, nav.top-bar > span .navbar-menu.menu > li.opens-right > a { - margin-right: 0.5rem; } - nav.top-bar > span .navbar-menu .menu > li.opens-right > a:after, nav.top-bar > span .navbar-menu.menu > li.opens-right > a:after { - right: 0.1rem; } - nav.top-bar > span .submenu { - background: #000; } - nav.top-bar.with-image { - background: transparent; - transition: all 0.15s, background 0.0s; - transition-delay: 0s; } - nav.top-bar.with-image * { - transition: all 0.15s, background 0.0s; - transition-delay: 0s; } - nav.top-bar.with-image .background-img { - display: initial; - margin-left: -0.625rem; - margin-right: -0.625rem; - width: calc(100% + 1.25rem); - max-width: calc(100% + 1.25rem); - min-width: 1.5625rem; } - @media print, screen and (min-width: 40em) { - nav.top-bar.with-image .background-img { - margin-left: -0.9375rem; - margin-right: -0.9375rem; - width: calc(100% + 1.875rem); - max-width: calc(100% + 1.875rem); - min-width: 2.34375rem; } } - nav.top-bar.with-image > span { - background: inherit; - position: fixed; - top: 0; - left: 0; - right: 0; } - nav.top-bar.with-image > span > * { - position: relative; } - nav.top-bar.with-image > span #responsive-menu-toggle { - z-index: 9100; } - nav.top-bar.with-image > span .navbar-menu { - background: initial; } - nav.top-bar.with-image > span .submenu { - background: #000; } - nav.top-bar.with-image.color-black { - color: #000; - stroke: #000; } - nav.top-bar.with-image.color-black #responsive-menu .hidden-menu { - background: #fff; - border-color: #7F7F7F; } - nav.top-bar.with-image.color-black #responsive-menu-toggle .menu-icon::after { - background: #000; - box-shadow: 0 7px 0 #000, 0 14px 0 #000; } - nav.top-bar.with-image.color-black .submenu { - background: #fff; } - nav.top-bar.with-image.color-white { - color: #fff; - stroke: #fff; } - nav.top-bar.with-image.color-white #responsive-menu .hidden-menu { - background: #000; - border-color: #1e1c1c; } - nav.top-bar.with-image.color-white #responsive-menu-toggle .menu-icon::after { - background: #fff; - box-shadow: 0 7px 0 #fff, 0 14px 0 #fff; } - nav.top-bar.with-image.color-white .submenu { - background: #000; } - nav.top-bar.with-image.solid { - background: #000; } - nav.top-bar.with-image.solid > span #responsive-menu .hidden-menu { - border-color: #7F7F7F; } - nav.top-bar.with-image.solid > span .navbar-menu { - background: inherit; } - nav.top-bar.with-image.solid.color-black { - background: #fff; } - nav.top-bar.with-image.solid.color-white { - background: #000; } - -.menu a, .dropdown.menu a { - padding: 0.2rem 0.5rem; } - -.dropdown.menu .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) a, -#navbar-menu-hidden .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a { - margin-right: 0.5rem; } - .dropdown.menu .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) a::after, - #navbar-menu-hidden .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after { - right: 0.1rem; } - -.dropdown.menu .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) ul a, -#navbar-menu-hidden .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > ul a { - width: 100%; } - -.menu.is-accordion-submenu { - margin-left: 0.7rem; } - -.menu { - transform-origin: top; - transition: 0.25s; } - -#responsive-menu-toggle button { - vertical-align: initial; } - -.dropdown.menu > li.is-accordion-submenu-parent > ul.is-dropdown-submenu { - left: auto; - right: 0; } - -#navbar-fragment { - width: 100%; } - -.logo { - display: flex; - flex-direction: column; - justify-content: center; } - .logo .logo-img { - margin-left: 1rem; - margin-right: 0.5rem; - max-width: 2.35rem; } - -.tab-fragment .tab-names .tab-button { - display: inline-block; - border: 1px solid #E6E6E6; - border-top-left-radius: 3px; - border-top-right-radius: 3px; - background-color: #E6E6E6; - padding: 0.3rem; } - .tab-fragment .tab-names .tab-button.active { - border-bottom: 0; - background-color: initial; } - -.tab-fragment .tab-content { - border: 1px solid #E6E6E6; - border-top: 0; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; } - .tab-fragment .tab-content .tab-site { - display: none; } - .tab-fragment .tab-content .tab-site.active { - display: initial; } - -.tab-fragment .tab-button-template, .tab-fragment .tab-site-template { - display: none; } - -.tab-fragment .border-bottom { - border-bottom: 1px solid #E6E6E6; } - -.alphabetic-list { - height: 100%; - position: relative; } - .alphabetic-list .alphabetic-list-container { - height: 100%; - overflow: auto; } - .alphabetic-list .alphabetic-list-sidealphabet { - height: 100%; - user-select: none; } - .alphabetic-list .alphabetic-list-sidealphabet .alphabet-scroll-to { - cursor: pointer; - height: 3.8%; - display: block; - text-align: center; } - @media print, screen and (max-width: 24.99875em) { - .alphabetic-list .alphabetic-list-sidealphabet .alphabet-scroll-to { - font-size: 0.8em; } } - -.window-container { - position: fixed; - background: white; - padding: 0; - border: 1px solid #b1b1b1; - border-radius: 3px; - cursor: grab; - transition: none; - min-width: 10rem; - min-height: 3rem; - box-sizing: content-box; - z-index: 1000; - display: flex; - flex-direction: column; } - .window-container * { - box-sizing: border-box; } - .window-container.active-window { - z-index: 1100; } - .window-container .window-resize { - user-select: none; } - .window-container .window-resize.edge { - width: 4px; - height: 4px; } - .window-container .window-resize.edge.nw { - cursor: nw-resize; } - .window-container .window-resize.edge.ne { - cursor: ne-resize; } - .window-container .window-resize.edge.sw { - cursor: sw-resize; } - .window-container .window-resize.edge.se { - cursor: se-resize; } - .window-container .window-resize.bottom, .window-container .window-resize.top { - cursor: ns-resize; - height: 4px; } - .window-container .window-resize.left, .window-container .window-resize.right { - cursor: ew-resize; - width: 4px; } - .window-container #title { - user-select: none; - margin: 0; - padding-bottom: 0.5rem; - font-size: 1rem; - letter-spacing: 0.2rem; - font-weight: bold; } - .window-container #title-buttons .title-button { - max-height: 1rem; - cursor: pointer; - outline: none; - display: inline-block; } - .window-container.moving { - cursor: grabbing; } - .window-container.minimized { - padding: 0.2rem; - width: 0 !important; - height: 0 !important; - min-width: fit-content; } - .window-container.minimized .window { - display: none; } - .window-container.minimized .window-resize { - display: none; } - .window-container.minimized #title { - border: 0; - margin: 0; - height: 100%; } - .window-container.minimized #title-buttons .title-button.hide-minimized { - display: none; } - .window-container.maximized { - padding: 0.2rem; - border: 0; - margin: 0; - width: calc(100vw - 0.4rem) !important; - height: calc(100vh - 0.4rem) !important; - left: 0 !important; - top: 0 !important; } - .window-container.maximized .window-resize { - display: none; } - .window-container.maximized #title-buttons .title-button.hide-maximized { - display: none; } - .window-container.popup { - padding: 0.2rem; - border: 0; - margin: 0; - width: calc(100vw - 0.4rem) !important; - height: calc(100vh - 0.4rem) !important; - left: 0 !important; - top: 0 !important; } - .window-container.popup .window-resize { - display: none; } - .window-container.popup #title-buttons .title-button.hide-popup { - display: none; } - .window-container .window { - overflow: auto; - cursor: initial; - position: relative; } - -.max-height-100 { - max-height: 100%; } - -.overflow-hidden { - overflow: hidden; } - -body:not(.access-admin) .access-admin { - display: none; } - -body:not(.access-loggedIn) .access-loggedIn { - display: none; } - -body:not(.access-loggedOut) .access-loggedOut { - display: none; } - -body:not(.access-online) .access-online { - display: none; } - -body:not(.access-offline) .access-offline { - display: none; } - -body:not(.access-default) .access-default { - display: none; } - -.share-icon { - width: 1.5rem; - max-width: 1.5rem; - margin: 0.1rem; } - .share-icon svg { - width: 1.5rem; - max-width: 1.5rem; } - -*, :after, :before { - box-sizing: inherit; } - -html { - min-height: 100%; - width: 100%; - height: 100%; - letter-spacing: 1px; } - -.max-height { - height: 100%; - min-height: 100%; } - -body { - margin: 0; - padding: 0; - height: 100%; - width: 100%; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-weight: 400; - line-height: 1.5; - display: flex; - flex-direction: column; - background: #fefefe; - color: #0a0a0a; } - -footer { - border-top: #d8d8d8 solid 1px; - text-align: center; } - -.top-bar .top-bar-title strong { - vertical-align: middle; - display: inline-block; - /*margin-left: 8px;*/ } - -nav.top-bar { - color: #FFF; - font-size: 20px; - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 2px 9px 1px rgba(0, 0, 0, 0.12), 0 4px 2px -2px rgba(0, 0, 0, 0.2); - padding: 0.6rem; - display: block; } - -button.button, a.button { - border-radius: 2px; } - -.fill-me { - display: flex; - flex-direction: column; } - .fill-me.vertical { - flex-direction: row; } - .fill-me .grow { - flex: 1; } - -.flex-center { - flex-direction: column; - justify-content: center; - display: flex; - align-items: center; } - .flex-center > * { - max-height: 100%; } - -.menu a, .dropdown.menu a { - padding: .4rem .5rem; } - -svg path { - fill: currentColor; } - -div.mainContainer { - position: relative; - max-height: 100%; - max-width: 100%; - overflow: auto; - flex: 1; - margin: 0.5rem; } - div.mainContainer > .row, div.mainContainer #main-content, div.mainContainer #site { - position: absolute; - width: 100%; - height: 100%; - top: 0; - bottom: 0; - left: 0; - right: 0; } - -.inline-block { - display: inline-block; } - -.right { - float: right; } - -#logo-img { - max-height: 2.2rem; } - -a { - text-decoration: none; - cursor: pointer; - color: inherit; } - -a.hidden-link { - text-decoration: none; - color: inherit; } - -label { - cursor: pointer; } - -.align-right { - text-align: right; } - -.view-panel { - display: none; } - -.loader { - left: 50%; - top: 50%; - position: fixed; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - text-align: center; } - .loader.inline { - left: initial; - top: initial; - position: initial; - -webkit-transform: initial; - transform: initial; - text-align: center; - display: inline; } - .loader.small #spinner { - transform: scale(0.5); } - .loader #spinner { - box-sizing: border-box; - stroke: #b71c1a; - stroke-width: 3px; - transform-origin: 50%; - animation: line 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite, rotate 1.6s linear infinite; } - -@keyframes rotate { - from { - transform: rotate(0); } - to { - transform: rotate(450deg); } } - -@keyframes line { - 0% { - stroke-dasharray: 2, 85.964; - transform: rotate(0); } - 50% { - stroke-dasharray: 65.973, 21.9911; - stroke-dashoffset: 0; } - 100% { - stroke-dasharray: 2, 85.964; - stroke-dashoffset: -65.973; - transform: rotate(90deg); } } - -#print-content { - display: none; } - -.action-button { - max-height: 1.7rem; - margin-left: 0.4rem; - margin-right: 0.4rem; } - .action-button:hover { - background: #e8e8e8; } - -.vcenter-container { - width: 100%; - height: 100%; - display: table; } - .vcenter-container .vcenter { - vertical-align: middle; - display: table-cell; - flex-direction: column; - justify-content: center; } - -.max-width { - width: 100%; } - -input, button { - letter-spacing: 1px !important; } - -.no-padding { - padding: 0; - border: 0; } - -.center { - text-align: center; } - -@media print { - nav, .mainContainer, footer, #styles { - display: none !important; } - #print-content { - display: block !important; } } - -.overflow-y-auto { - overflow-y: auto !important; } - -.row.no-after:after { - content: initial; } - -.margin-bottom { - margin-bottom: 1rem; } - @media print, screen and (min-width: 25em) { - .margin-bottom { - margin-bottom: 2rem; } } - @media print, screen and (min-width: 40em) { - .margin-bottom { - margin-bottom: 3rem; } } - @media print, screen and (min-width: 64em) { - .margin-bottom { - margin-bottom: 4rem; } } - @media screen and (min-width: 75em) { - .margin-bottom { - margin-bottom: 5rem; } } - -.font-small { - font-size: 0.7em; } - -.border-bottom { - border-bottom: 1px solid #cacaca; } - -.border-right { - border-right: 1px solid #cacaca; } - -.border-left { - border-left: 1px solid #cacaca; } - -img.logo { - vertical-align: inherit; - display: inline-block; - height: auto; - max-width: 1.1rem; - margin-right: 2px; } - -.align-center { - text-align: center; } - -hr.separator { - margin: 1rem 0; } - -.button-line { - display: flex; } - .button-line .button { - flex: 1; - margin-left: 1px; - margin-right: 1px; - padding: 0.5rem 0.77rem; } - -@media print, screen and (max-width: 24.99875em) { - .small-small { - font-size: small; } } - -select { - border: 0; - padding: 0.3rem 0.3rem; } - -.hidden { - display: none; } - -.no-transition { - transition: none !important; } - -img.action-image { - max-height: 1.4rem; - cursor: pointer; } - -img.back-button { - max-height: 0.6rem; - margin-right: 0.2rem; - cursor: pointer; - vertical-align: inherit; } - -.no-margin-bottom { - margin-bottom: 0; } - -.settings-container { - border: 1px solid black; - border-radius: 2px; - padding: 0.3rem; } - @media print, screen and (min-width: 40em) { - .settings-container #settings-fragments-container { - border-left: 1px solid #cacaca; } } - .settings-container #settings-fragments-container #settings-fragments > * { - display: none; } - .settings-container #settings-fragments-container #settings-fragments > *.active { - display: block; } - -.switch { - position: relative; - display: inline-block; - height: initial; } - @media print, screen and (max-width: 24.99875em) { - .switch { - font-size: 0.6em; } } - @media print, screen and (max-width: 39.99875em) { - .switch { - font-size: 0.7em; } } - .switch input { - display: none; } - .switch input:checked + .slider:before { - transform: translateX(1.5em); } - .switch .slider { - display: inline-block; - position: relative; - cursor: pointer; - width: 3em; - height: 1.5em; - border-radius: 1.5em; - background-color: #ccc; - transition: .4s; - margin-bottom: 0; - margin-top: 0; } - .switch .slider:before { - position: absolute; - content: ""; - height: 1.1em; - width: 1.1em; - left: 0.15em; - bottom: 0.15em; - background-color: white; - transition: .4s; - border-radius: 50%; } - .switch img, .switch svg { - width: 1.4em; - display: inline; - vertical-align: initial; } - .switch img path, .switch svg path { - stroke-color: inherit; } - -label { - font-size: 1em !important; } - -.setting-row:not(.hidden) { - line-height: 1; - display: flex; - padding: 0.5rem 0.4rem; - align-items: center; - width: 100%; - cursor: pointer; - background: rgba(195, 195, 195, 0.13); } - .setting-row:not(.hidden) > * { - flex: 1; } - .setting-row:not(.hidden) input[type=checkbox] { - margin: 0; } - -.zf-green { - color: #68b604; } - -.column:last-child:not(:first-child), .columns:last-child:not(:first-child) { - float: left; } - -input[type=checkBox].form-control { - height: 24px; - height: 1.5rem; - width: 100%; } - -[type=submit] { - display: block; - box-sizing: border-box; - width: 100%; - height: 39px; - height: 2.4375rem; - padding: 8px; - padding: .5rem; - border: 1px solid #cacaca; - margin: 0 0 16px; - margin: 0 0 1rem; - font-family: inherit; - font-size: 16px; - font-size: 1rem; - color: #0a0a0a; - background-color: #fefefe; - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - border-radius: 0; - transition: box-shadow .5s, border-color .25s ease-in-out; - -webkit-appearance: none; - -moz-appearance: none; } - -form ul li { - color: red; - font-size: 12.8px; - font-size: .8rem; } - -.button-dropdown:after { - border-color: #000 transparent transparent; - border-width: .4em; - border-style: solid; - content: ""; - position: absolute; - top: .4em; - display: block; - height: 0; - width: 0; - right: 1em; } - -.button-dropdown { - position: relative; - display: block; - padding-right: 2em; } - -.button-dropdown.open:after { - border-color: transparent transparent #000; - top: 0; } - -a.ui-datepicker-next, a.ui-datepicker-prev { - height: 100% !important; } - -div.container a.navbar-brand > img { - display: inline; - margin-right: 4px; } - -ul.menu.plain li.active a { - background-color: #ededed; - color: #000; } - -ul.menu.plain li a { - color: #000; } - -ul.menu.plain li a:hover { - color: #525252; } - -ul.submenu { - border-top: 1px solid #bcbcbc; - border-bottom: 1px solid #bcbcbc; - margin-left: 10px; } - -#cookie-compliance { - line-height: 1.2; - font-size: 0.8rem; - width: 100%; - margin: 0 0; - padding: 0.3rem 0; } - #cookie-compliance #close-cookie-msg { - float: right; - margin-bottom: 0; - margin-right: 3px; - padding: 0.4rem 0.8rem; } - -.menu-container .button { - text-align: center; - width: 100%; } - -.height-5 { - height: 5%; } - -.max-height-5 { - max-height: 5%; } - -.width-5 { - width: 5%; } - -.max-width-5 { - max-width: 5%; } - -.height-10 { - height: 10%; } - -.max-height-10 { - max-height: 10%; } - -.width-10 { - width: 10%; } - -.max-width-10 { - max-width: 10%; } - -.height-15 { - height: 15%; } - -.max-height-15 { - max-height: 15%; } - -.width-15 { - width: 15%; } - -.max-width-15 { - max-width: 15%; } - -.height-20 { - height: 20%; } - -.max-height-20 { - max-height: 20%; } - -.width-20 { - width: 20%; } - -.max-width-20 { - max-width: 20%; } - -.height-25 { - height: 25%; } - -.max-height-25 { - max-height: 25%; } - -.width-25 { - width: 25%; } - -.max-width-25 { - max-width: 25%; } - -.height-30 { - height: 30%; } - -.max-height-30 { - max-height: 30%; } - -.width-30 { - width: 30%; } - -.max-width-30 { - max-width: 30%; } - -.height-35 { - height: 35%; } - -.max-height-35 { - max-height: 35%; } - -.width-35 { - width: 35%; } - -.max-width-35 { - max-width: 35%; } - -.height-40 { - height: 40%; } - -.max-height-40 { - max-height: 40%; } - -.width-40 { - width: 40%; } - -.max-width-40 { - max-width: 40%; } - -.height-45 { - height: 45%; } - -.max-height-45 { - max-height: 45%; } - -.width-45 { - width: 45%; } - -.max-width-45 { - max-width: 45%; } - -.height-50 { - height: 50%; } - -.max-height-50 { - max-height: 50%; } - -.width-50 { - width: 50%; } - -.max-width-50 { - max-width: 50%; } - -.height-55 { - height: 55%; } - -.max-height-55 { - max-height: 55%; } - -.width-55 { - width: 55%; } - -.max-width-55 { - max-width: 55%; } - -.height-60 { - height: 60%; } - -.max-height-60 { - max-height: 60%; } - -.width-60 { - width: 60%; } - -.max-width-60 { - max-width: 60%; } - -.height-65 { - height: 65%; } - -.max-height-65 { - max-height: 65%; } - -.width-65 { - width: 65%; } - -.max-width-65 { - max-width: 65%; } - -.height-70 { - height: 70%; } - -.max-height-70 { - max-height: 70%; } - -.width-70 { - width: 70%; } - -.max-width-70 { - max-width: 70%; } - -.height-75 { - height: 75%; } - -.max-height-75 { - max-height: 75%; } - -.width-75 { - width: 75%; } - -.max-width-75 { - max-width: 75%; } - -.height-80 { - height: 80%; } - -.max-height-80 { - max-height: 80%; } - -.width-80 { - width: 80%; } - -.max-width-80 { - max-width: 80%; } - -.height-85 { - height: 85%; } - -.max-height-85 { - max-height: 85%; } - -.width-85 { - width: 85%; } - -.max-width-85 { - max-width: 85%; } - -.height-90 { - height: 90%; } - -.max-height-90 { - max-height: 90%; } - -.width-90 { - width: 90%; } - -.max-width-90 { - max-width: 90%; } - -.height-95 { - height: 95%; } - -.max-height-95 { - max-height: 95%; } - -.width-95 { - width: 95%; } - -.max-width-95 { - max-width: 95%; } - -.height-100 { - height: 100%; } - -.max-height-100 { - max-height: 100%; } - -.width-100 { - width: 100%; } - -.max-width-100 { - max-width: 100%; } - -.text-right { - text-align: right; } - -* { - transition: .25s ease-out, color .25s ease-out; } - -body.red { - background: #fff; - color: #000; } - body.red #cookie-compliance { - background-color: #870015; - color: #fff; } - body.red #cookie-compliance a.link { - color: #ff3d00; - border-bottom-color: #ff3d00; } - body.red #cookie-compliance a.link:hover { - color: #ff3d00; - border-bottom-color: #ff3d00; } - body.red a.link { - text-decoration: none; - color: #ff3d00; - border-bottom: none; } - body.red a.link:hover { - color: #ff3d00; - border-bottom-color: #ff3d00; } - body.red .loader #spinner { - stroke: #b71c1a; } - body.red nav.top-bar { - color: #fff; - background: #ff0000; } - body.red .top-bar ul { - background: #ff0000 !important; } - body.red .top-bar ul a { - color: #fff; } - body.red button.button, body.red a.button { - background-color: #ff0000; } - body.red button.button.disabled, body.red button.button.disabled:hover, body.red button.button.disabled:focus, body.red button.button:hover, body.red a.button.disabled, body.red a.button.disabled:hover, body.red a.button.disabled:focus, body.red a.button:hover { - background-color: #ff0000; } - body.red .switch input:checked + .slider { - background-color: #ff0000; } - body.red .switch input:focus + .slider { - box-shadow: 0 0 1px #ff0000; } - body.red label { - color: #000; } - body.red .background .modal { - background-color: #fefefe; } - body.red svg .fill-color, body.red svg.fill-color { - fill: currentColor; } - body.red svg .fill-background, body.red svg.fill-background { - fill: #fefefe; } - body.red label [type='text'], body.red label [type='password'], body.red label [type='date'], body.red label [type='datetime'], body.red label [type='datetime-local'], body.red label [type='month'], body.red label [type='week'], body.red label [type='email'], body.red label [type='number'], body.red label [type='search'], body.red label [type='tel'], body.red label [type='time'], body.red label [type='url'], body.red label [type='color'], body.red label textarea, body.red label input[type=text], body.red label input:not([type]) { - border-bottom: solid #000; - background: #fff; - color: #000; } - body.red label [type='text']:focus, body.red label [type='password']:focus, body.red label [type='date']:focus, body.red label [type='datetime']:focus, body.red label [type='datetime-local']:focus, body.red label [type='month']:focus, body.red label [type='week']:focus, body.red label [type='email']:focus, body.red label [type='number']:focus, body.red label [type='search']:focus, body.red label [type='tel']:focus, body.red label [type='time']:focus, body.red label [type='url']:focus, body.red label [type='color']:focus, body.red label textarea:focus, body.red label input[type=text]:focus, body.red label input:not([type]):focus { - border-bottom: solid #000; } - body.red label [type='text']:focus ~ span, body.red label [type='text'].notEmpty:not(:focus) ~ span, body.red label [type='password']:focus ~ span, body.red label [type='password'].notEmpty:not(:focus) ~ span, body.red label [type='date']:focus ~ span, body.red label [type='date'].notEmpty:not(:focus) ~ span, body.red label [type='datetime']:focus ~ span, body.red label [type='datetime'].notEmpty:not(:focus) ~ span, body.red label [type='datetime-local']:focus ~ span, body.red label [type='datetime-local'].notEmpty:not(:focus) ~ span, body.red label [type='month']:focus ~ span, body.red label [type='month'].notEmpty:not(:focus) ~ span, body.red label [type='week']:focus ~ span, body.red label [type='week'].notEmpty:not(:focus) ~ span, body.red label [type='email']:focus ~ span, body.red label [type='email'].notEmpty:not(:focus) ~ span, body.red label [type='number']:focus ~ span, body.red label [type='number'].notEmpty:not(:focus) ~ span, body.red label [type='search']:focus ~ span, body.red label [type='search'].notEmpty:not(:focus) ~ span, body.red label [type='tel']:focus ~ span, body.red label [type='tel'].notEmpty:not(:focus) ~ span, body.red label [type='time']:focus ~ span, body.red label [type='time'].notEmpty:not(:focus) ~ span, body.red label [type='url']:focus ~ span, body.red label [type='url'].notEmpty:not(:focus) ~ span, body.red label [type='color']:focus ~ span, body.red label [type='color'].notEmpty:not(:focus) ~ span, body.red label textarea:focus ~ span, body.red label textarea.notEmpty:not(:focus) ~ span, body.red label input[type=text]:focus ~ span, body.red label input[type=text].notEmpty:not(:focus) ~ span, body.red label input:not([type]):focus ~ span, body.red label input:not([type]).notEmpty:not(:focus) ~ span { - color: #000; } - body.red label [type='text'] ~ span, body.red label [type='password'] ~ span, body.red label [type='date'] ~ span, body.red label [type='datetime'] ~ span, body.red label [type='datetime-local'] ~ span, body.red label [type='month'] ~ span, body.red label [type='week'] ~ span, body.red label [type='email'] ~ span, body.red label [type='number'] ~ span, body.red label [type='search'] ~ span, body.red label [type='tel'] ~ span, body.red label [type='time'] ~ span, body.red label [type='url'] ~ span, body.red label [type='color'] ~ span, body.red label textarea ~ span, body.red label input[type=text] ~ span, body.red label input:not([type]) ~ span { - color: rgba(0, 0, 0, 0.65); } - body.red label textarea { - box-shadow: 0 0 3px 2px rgba(135, 135, 135, 0.31) !important; } - body.red input.notEmpty:invalid { - background-color: rgba(255, 0, 0, 0.65); } - -body.blue { - background: #fff; - color: #000; } - body.blue #cookie-compliance { - background-color: #1a3062; - color: #fff; } - body.blue #cookie-compliance a.link { - color: #546cfe; - border-bottom-color: #546cfe; } - body.blue #cookie-compliance a.link:hover { - color: #546cfe; - border-bottom-color: #546cfe; } - body.blue a.link { - text-decoration: none; - color: #546cfe; - border-bottom: none; } - body.blue a.link:hover { - color: #546cfe; - border-bottom-color: #546cfe; } - body.blue .loader #spinner { - stroke: #673AB7; } - body.blue nav.top-bar { - color: #fff; - background: #2c58ae; } - body.blue .top-bar ul { - background: #2c58ae !important; } - body.blue .top-bar ul a { - color: #fff; } - body.blue button.button, body.blue a.button { - background-color: #2c58ae; } - body.blue button.button.disabled, body.blue button.button.disabled:hover, body.blue button.button.disabled:focus, body.blue button.button:hover, body.blue a.button.disabled, body.blue a.button.disabled:hover, body.blue a.button.disabled:focus, body.blue a.button:hover { - background-color: #2c58ae; } - body.blue .switch input:checked + .slider { - background-color: #2c58ae; } - body.blue .switch input:focus + .slider { - box-shadow: 0 0 1px #2c58ae; } - body.blue label { - color: #000; } - body.blue .background .modal { - background-color: #fefefe; } - body.blue svg .fill-color, body.blue svg.fill-color { - fill: currentColor; } - body.blue svg .fill-background, body.blue svg.fill-background { - fill: #fefefe; } - body.blue label [type='text'], body.blue label [type='password'], body.blue label [type='date'], body.blue label [type='datetime'], body.blue label [type='datetime-local'], body.blue label [type='month'], body.blue label [type='week'], body.blue label [type='email'], body.blue label [type='number'], body.blue label [type='search'], body.blue label [type='tel'], body.blue label [type='time'], body.blue label [type='url'], body.blue label [type='color'], body.blue label textarea, body.blue label input[type=text], body.blue label input:not([type]) { - border-bottom: solid #000; - background: #fff; - color: #000; } - body.blue label [type='text']:focus, body.blue label [type='password']:focus, body.blue label [type='date']:focus, body.blue label [type='datetime']:focus, body.blue label [type='datetime-local']:focus, body.blue label [type='month']:focus, body.blue label [type='week']:focus, body.blue label [type='email']:focus, body.blue label [type='number']:focus, body.blue label [type='search']:focus, body.blue label [type='tel']:focus, body.blue label [type='time']:focus, body.blue label [type='url']:focus, body.blue label [type='color']:focus, body.blue label textarea:focus, body.blue label input[type=text]:focus, body.blue label input:not([type]):focus { - border-bottom: solid #000; } - body.blue label [type='text']:focus ~ span, body.blue label [type='text'].notEmpty:not(:focus) ~ span, body.blue label [type='password']:focus ~ span, body.blue label [type='password'].notEmpty:not(:focus) ~ span, body.blue label [type='date']:focus ~ span, body.blue label [type='date'].notEmpty:not(:focus) ~ span, body.blue label [type='datetime']:focus ~ span, body.blue label [type='datetime'].notEmpty:not(:focus) ~ span, body.blue label [type='datetime-local']:focus ~ span, body.blue label [type='datetime-local'].notEmpty:not(:focus) ~ span, body.blue label [type='month']:focus ~ span, body.blue label [type='month'].notEmpty:not(:focus) ~ span, body.blue label [type='week']:focus ~ span, body.blue label [type='week'].notEmpty:not(:focus) ~ span, body.blue label [type='email']:focus ~ span, body.blue label [type='email'].notEmpty:not(:focus) ~ span, body.blue label [type='number']:focus ~ span, body.blue label [type='number'].notEmpty:not(:focus) ~ span, body.blue label [type='search']:focus ~ span, body.blue label [type='search'].notEmpty:not(:focus) ~ span, body.blue label [type='tel']:focus ~ span, body.blue label [type='tel'].notEmpty:not(:focus) ~ span, body.blue label [type='time']:focus ~ span, body.blue label [type='time'].notEmpty:not(:focus) ~ span, body.blue label [type='url']:focus ~ span, body.blue label [type='url'].notEmpty:not(:focus) ~ span, body.blue label [type='color']:focus ~ span, body.blue label [type='color'].notEmpty:not(:focus) ~ span, body.blue label textarea:focus ~ span, body.blue label textarea.notEmpty:not(:focus) ~ span, body.blue label input[type=text]:focus ~ span, body.blue label input[type=text].notEmpty:not(:focus) ~ span, body.blue label input:not([type]):focus ~ span, body.blue label input:not([type]).notEmpty:not(:focus) ~ span { - color: #000; } - body.blue label [type='text'] ~ span, body.blue label [type='password'] ~ span, body.blue label [type='date'] ~ span, body.blue label [type='datetime'] ~ span, body.blue label [type='datetime-local'] ~ span, body.blue label [type='month'] ~ span, body.blue label [type='week'] ~ span, body.blue label [type='email'] ~ span, body.blue label [type='number'] ~ span, body.blue label [type='search'] ~ span, body.blue label [type='tel'] ~ span, body.blue label [type='time'] ~ span, body.blue label [type='url'] ~ span, body.blue label [type='color'] ~ span, body.blue label textarea ~ span, body.blue label input[type=text] ~ span, body.blue label input:not([type]) ~ span { - color: rgba(0, 0, 0, 0.65); } - body.blue label textarea { - box-shadow: 0 0 3px 2px rgba(135, 135, 135, 0.31) !important; } - body.blue input.notEmpty:invalid { - background-color: rgba(44, 88, 174, 0.65); } - -body.green { - background: #fff; - color: #000; } - body.green #cookie-compliance { - background-color: #003613; - color: #fff; } - body.green #cookie-compliance a.link { - color: #009829; - border-bottom-color: #009829; } - body.green #cookie-compliance a.link:hover { - color: #009829; - border-bottom-color: #009829; } - body.green a.link { - text-decoration: none; - color: #009829; - border-bottom: none; } - body.green a.link:hover { - color: #009829; - border-bottom-color: #009829; } - body.green .loader #spinner { - stroke: #008000; } - body.green nav.top-bar { - color: #fff; - background: #008000; } - body.green .top-bar ul { - background: #008000 !important; } - body.green .top-bar ul a { - color: #fff; } - body.green button.button, body.green a.button { - background-color: #008000; } - body.green button.button.disabled, body.green button.button.disabled:hover, body.green button.button.disabled:focus, body.green button.button:hover, body.green a.button.disabled, body.green a.button.disabled:hover, body.green a.button.disabled:focus, body.green a.button:hover { - background-color: #008000; } - body.green .switch input:checked + .slider { - background-color: #008000; } - body.green .switch input:focus + .slider { - box-shadow: 0 0 1px #008000; } - body.green label { - color: #000; } - body.green .background .modal { - background-color: #fefefe; } - body.green svg .fill-color, body.green svg.fill-color { - fill: currentColor; } - body.green svg .fill-background, body.green svg.fill-background { - fill: #fefefe; } - body.green label [type='text'], body.green label [type='password'], body.green label [type='date'], body.green label [type='datetime'], body.green label [type='datetime-local'], body.green label [type='month'], body.green label [type='week'], body.green label [type='email'], body.green label [type='number'], body.green label [type='search'], body.green label [type='tel'], body.green label [type='time'], body.green label [type='url'], body.green label [type='color'], body.green label textarea, body.green label input[type=text], body.green label input:not([type]) { - border-bottom: solid #000; - background: #fff; - color: #000; } - body.green label [type='text']:focus, body.green label [type='password']:focus, body.green label [type='date']:focus, body.green label [type='datetime']:focus, body.green label [type='datetime-local']:focus, body.green label [type='month']:focus, body.green label [type='week']:focus, body.green label [type='email']:focus, body.green label [type='number']:focus, body.green label [type='search']:focus, body.green label [type='tel']:focus, body.green label [type='time']:focus, body.green label [type='url']:focus, body.green label [type='color']:focus, body.green label textarea:focus, body.green label input[type=text]:focus, body.green label input:not([type]):focus { - border-bottom: solid #000; } - body.green label [type='text']:focus ~ span, body.green label [type='text'].notEmpty:not(:focus) ~ span, body.green label [type='password']:focus ~ span, body.green label [type='password'].notEmpty:not(:focus) ~ span, body.green label [type='date']:focus ~ span, body.green label [type='date'].notEmpty:not(:focus) ~ span, body.green label [type='datetime']:focus ~ span, body.green label [type='datetime'].notEmpty:not(:focus) ~ span, body.green label [type='datetime-local']:focus ~ span, body.green label [type='datetime-local'].notEmpty:not(:focus) ~ span, body.green label [type='month']:focus ~ span, body.green label [type='month'].notEmpty:not(:focus) ~ span, body.green label [type='week']:focus ~ span, body.green label [type='week'].notEmpty:not(:focus) ~ span, body.green label [type='email']:focus ~ span, body.green label [type='email'].notEmpty:not(:focus) ~ span, body.green label [type='number']:focus ~ span, body.green label [type='number'].notEmpty:not(:focus) ~ span, body.green label [type='search']:focus ~ span, body.green label [type='search'].notEmpty:not(:focus) ~ span, body.green label [type='tel']:focus ~ span, body.green label [type='tel'].notEmpty:not(:focus) ~ span, body.green label [type='time']:focus ~ span, body.green label [type='time'].notEmpty:not(:focus) ~ span, body.green label [type='url']:focus ~ span, body.green label [type='url'].notEmpty:not(:focus) ~ span, body.green label [type='color']:focus ~ span, body.green label [type='color'].notEmpty:not(:focus) ~ span, body.green label textarea:focus ~ span, body.green label textarea.notEmpty:not(:focus) ~ span, body.green label input[type=text]:focus ~ span, body.green label input[type=text].notEmpty:not(:focus) ~ span, body.green label input:not([type]):focus ~ span, body.green label input:not([type]).notEmpty:not(:focus) ~ span { - color: #000; } - body.green label [type='text'] ~ span, body.green label [type='password'] ~ span, body.green label [type='date'] ~ span, body.green label [type='datetime'] ~ span, body.green label [type='datetime-local'] ~ span, body.green label [type='month'] ~ span, body.green label [type='week'] ~ span, body.green label [type='email'] ~ span, body.green label [type='number'] ~ span, body.green label [type='search'] ~ span, body.green label [type='tel'] ~ span, body.green label [type='time'] ~ span, body.green label [type='url'] ~ span, body.green label [type='color'] ~ span, body.green label textarea ~ span, body.green label input[type=text] ~ span, body.green label input:not([type]) ~ span { - color: rgba(0, 0, 0, 0.65); } - body.green label textarea { - box-shadow: 0 0 3px 2px rgba(135, 135, 135, 0.31) !important; } - body.green input.notEmpty:invalid { - background-color: rgba(0, 128, 0, 0.65); } - -body.pink { - background: #fff; - color: #000; } - body.pink #cookie-compliance { - background-color: #70374a; - color: #fff; } - body.pink #cookie-compliance a.link { - color: #fe64af; - border-bottom-color: #fe64af; } - body.pink #cookie-compliance a.link:hover { - color: #fe64af; - border-bottom-color: #fe64af; } - body.pink a.link { - text-decoration: none; - color: #fe64af; - border-bottom: none; } - body.pink a.link:hover { - color: #fe64af; - border-bottom-color: #fe64af; } - body.pink .loader #spinner { - stroke: #ff69b4; } - body.pink nav.top-bar { - color: #fff; - background: #ff69b4; } - body.pink .top-bar ul { - background: #ff69b4 !important; } - body.pink .top-bar ul a { - color: #fff; } - body.pink button.button, body.pink a.button { - background-color: #ff69b4; } - body.pink button.button.disabled, body.pink button.button.disabled:hover, body.pink button.button.disabled:focus, body.pink button.button:hover, body.pink a.button.disabled, body.pink a.button.disabled:hover, body.pink a.button.disabled:focus, body.pink a.button:hover { - background-color: #ff69b4; } - body.pink .switch input:checked + .slider { - background-color: #ff69b4; } - body.pink .switch input:focus + .slider { - box-shadow: 0 0 1px #ff69b4; } - body.pink label { - color: #000; } - body.pink .background .modal { - background-color: #fefefe; } - body.pink svg .fill-color, body.pink svg.fill-color { - fill: currentColor; } - body.pink svg .fill-background, body.pink svg.fill-background { - fill: #fefefe; } - body.pink label [type='text'], body.pink label [type='password'], body.pink label [type='date'], body.pink label [type='datetime'], body.pink label [type='datetime-local'], body.pink label [type='month'], body.pink label [type='week'], body.pink label [type='email'], body.pink label [type='number'], body.pink label [type='search'], body.pink label [type='tel'], body.pink label [type='time'], body.pink label [type='url'], body.pink label [type='color'], body.pink label textarea, body.pink label input[type=text], body.pink label input:not([type]) { - border-bottom: solid #000; - background: #fff; - color: #000; } - body.pink label [type='text']:focus, body.pink label [type='password']:focus, body.pink label [type='date']:focus, body.pink label [type='datetime']:focus, body.pink label [type='datetime-local']:focus, body.pink label [type='month']:focus, body.pink label [type='week']:focus, body.pink label [type='email']:focus, body.pink label [type='number']:focus, body.pink label [type='search']:focus, body.pink label [type='tel']:focus, body.pink label [type='time']:focus, body.pink label [type='url']:focus, body.pink label [type='color']:focus, body.pink label textarea:focus, body.pink label input[type=text]:focus, body.pink label input:not([type]):focus { - border-bottom: solid #000; } - body.pink label [type='text']:focus ~ span, body.pink label [type='text'].notEmpty:not(:focus) ~ span, body.pink label [type='password']:focus ~ span, body.pink label [type='password'].notEmpty:not(:focus) ~ span, body.pink label [type='date']:focus ~ span, body.pink label [type='date'].notEmpty:not(:focus) ~ span, body.pink label [type='datetime']:focus ~ span, body.pink label [type='datetime'].notEmpty:not(:focus) ~ span, body.pink label [type='datetime-local']:focus ~ span, body.pink label [type='datetime-local'].notEmpty:not(:focus) ~ span, body.pink label [type='month']:focus ~ span, body.pink label [type='month'].notEmpty:not(:focus) ~ span, body.pink label [type='week']:focus ~ span, body.pink label [type='week'].notEmpty:not(:focus) ~ span, body.pink label [type='email']:focus ~ span, body.pink label [type='email'].notEmpty:not(:focus) ~ span, body.pink label [type='number']:focus ~ span, body.pink label [type='number'].notEmpty:not(:focus) ~ span, body.pink label [type='search']:focus ~ span, body.pink label [type='search'].notEmpty:not(:focus) ~ span, body.pink label [type='tel']:focus ~ span, body.pink label [type='tel'].notEmpty:not(:focus) ~ span, body.pink label [type='time']:focus ~ span, body.pink label [type='time'].notEmpty:not(:focus) ~ span, body.pink label [type='url']:focus ~ span, body.pink label [type='url'].notEmpty:not(:focus) ~ span, body.pink label [type='color']:focus ~ span, body.pink label [type='color'].notEmpty:not(:focus) ~ span, body.pink label textarea:focus ~ span, body.pink label textarea.notEmpty:not(:focus) ~ span, body.pink label input[type=text]:focus ~ span, body.pink label input[type=text].notEmpty:not(:focus) ~ span, body.pink label input:not([type]):focus ~ span, body.pink label input:not([type]).notEmpty:not(:focus) ~ span { - color: #000; } - body.pink label [type='text'] ~ span, body.pink label [type='password'] ~ span, body.pink label [type='date'] ~ span, body.pink label [type='datetime'] ~ span, body.pink label [type='datetime-local'] ~ span, body.pink label [type='month'] ~ span, body.pink label [type='week'] ~ span, body.pink label [type='email'] ~ span, body.pink label [type='number'] ~ span, body.pink label [type='search'] ~ span, body.pink label [type='tel'] ~ span, body.pink label [type='time'] ~ span, body.pink label [type='url'] ~ span, body.pink label [type='color'] ~ span, body.pink label textarea ~ span, body.pink label input[type=text] ~ span, body.pink label input:not([type]) ~ span { - color: rgba(0, 0, 0, 0.65); } - body.pink label textarea { - box-shadow: 0 0 3px 2px rgba(135, 135, 135, 0.31) !important; } - body.pink input.notEmpty:invalid { - background-color: rgba(255, 105, 180, 0.65); } - -body.black { - background: #fff; - color: #000; } - body.black #cookie-compliance { - background-color: #353535; - color: #fff; } - body.black #cookie-compliance a.link { - color: #fff; - border-bottom-color: #fff; } - body.black #cookie-compliance a.link:hover { - color: #cacaca; - border-bottom-color: #cacaca; } - body.black a.link { - text-decoration: none; - color: #000; - border-bottom: 1px solid #000000; } - body.black a.link:hover { - color: #4e4e4e; - border-bottom-color: #4e4e4e; } - body.black .loader #spinner { - stroke: #000; } - body.black nav.top-bar { - color: #fff; - background: #000; } - body.black .top-bar ul { - background: #000 !important; } - body.black .top-bar ul a { - color: #fff; } - body.black button.button, body.black a.button { - background-color: #000; } - body.black button.button.disabled, body.black button.button.disabled:hover, body.black button.button.disabled:focus, body.black button.button:hover, body.black a.button.disabled, body.black a.button.disabled:hover, body.black a.button.disabled:focus, body.black a.button:hover { - background-color: #000; } - body.black .switch input:checked + .slider { - background-color: #000; } - body.black .switch input:focus + .slider { - box-shadow: 0 0 1px #000; } - body.black label { - color: #000; } - body.black .background .modal { - background-color: #fefefe; } - body.black svg .fill-color, body.black svg.fill-color { - fill: currentColor; } - body.black svg .fill-background, body.black svg.fill-background { - fill: #fefefe; } - body.black label [type='text'], body.black label [type='password'], body.black label [type='date'], body.black label [type='datetime'], body.black label [type='datetime-local'], body.black label [type='month'], body.black label [type='week'], body.black label [type='email'], body.black label [type='number'], body.black label [type='search'], body.black label [type='tel'], body.black label [type='time'], body.black label [type='url'], body.black label [type='color'], body.black label textarea, body.black label input[type=text], body.black label input:not([type]) { - border-bottom: solid #000; - background: #fff; - color: #000; } - body.black label [type='text']:focus, body.black label [type='password']:focus, body.black label [type='date']:focus, body.black label [type='datetime']:focus, body.black label [type='datetime-local']:focus, body.black label [type='month']:focus, body.black label [type='week']:focus, body.black label [type='email']:focus, body.black label [type='number']:focus, body.black label [type='search']:focus, body.black label [type='tel']:focus, body.black label [type='time']:focus, body.black label [type='url']:focus, body.black label [type='color']:focus, body.black label textarea:focus, body.black label input[type=text]:focus, body.black label input:not([type]):focus { - border-bottom: solid #000; } - body.black label [type='text']:focus ~ span, body.black label [type='text'].notEmpty:not(:focus) ~ span, body.black label [type='password']:focus ~ span, body.black label [type='password'].notEmpty:not(:focus) ~ span, body.black label [type='date']:focus ~ span, body.black label [type='date'].notEmpty:not(:focus) ~ span, body.black label [type='datetime']:focus ~ span, body.black label [type='datetime'].notEmpty:not(:focus) ~ span, body.black label [type='datetime-local']:focus ~ span, body.black label [type='datetime-local'].notEmpty:not(:focus) ~ span, body.black label [type='month']:focus ~ span, body.black label [type='month'].notEmpty:not(:focus) ~ span, body.black label [type='week']:focus ~ span, body.black label [type='week'].notEmpty:not(:focus) ~ span, body.black label [type='email']:focus ~ span, body.black label [type='email'].notEmpty:not(:focus) ~ span, body.black label [type='number']:focus ~ span, body.black label [type='number'].notEmpty:not(:focus) ~ span, body.black label [type='search']:focus ~ span, body.black label [type='search'].notEmpty:not(:focus) ~ span, body.black label [type='tel']:focus ~ span, body.black label [type='tel'].notEmpty:not(:focus) ~ span, body.black label [type='time']:focus ~ span, body.black label [type='time'].notEmpty:not(:focus) ~ span, body.black label [type='url']:focus ~ span, body.black label [type='url'].notEmpty:not(:focus) ~ span, body.black label [type='color']:focus ~ span, body.black label [type='color'].notEmpty:not(:focus) ~ span, body.black label textarea:focus ~ span, body.black label textarea.notEmpty:not(:focus) ~ span, body.black label input[type=text]:focus ~ span, body.black label input[type=text].notEmpty:not(:focus) ~ span, body.black label input:not([type]):focus ~ span, body.black label input:not([type]).notEmpty:not(:focus) ~ span { - color: #000; } - body.black label [type='text'] ~ span, body.black label [type='password'] ~ span, body.black label [type='date'] ~ span, body.black label [type='datetime'] ~ span, body.black label [type='datetime-local'] ~ span, body.black label [type='month'] ~ span, body.black label [type='week'] ~ span, body.black label [type='email'] ~ span, body.black label [type='number'] ~ span, body.black label [type='search'] ~ span, body.black label [type='tel'] ~ span, body.black label [type='time'] ~ span, body.black label [type='url'] ~ span, body.black label [type='color'] ~ span, body.black label textarea ~ span, body.black label input[type=text] ~ span, body.black label input:not([type]) ~ span { - color: rgba(0, 0, 0, 0.65); } - body.black label textarea { - box-shadow: 0 0 3px 2px rgba(135, 135, 135, 0.31) !important; } - body.black input.notEmpty:invalid { - background-color: rgba(0, 0, 0, 0.65); } - -body.default { - background: transparent; - color: #000; } - body.default #cookie-compliance { - background-color: #353535; - color: #fff; } - body.default #cookie-compliance a.link { - color: #fff; - border-bottom-color: #fff; } - body.default #cookie-compliance a.link:hover { - color: #cacaca; - border-bottom-color: #cacaca; } - body.default a.link { - text-decoration: none; - color: #000; - border-bottom: 1px solid #000000; } - body.default a.link:hover { - color: #4e4e4e; - border-bottom-color: #4e4e4e; } - body.default .loader #spinner { - stroke: #000; } - body.default nav.top-bar { - color: #fff; - background: #000; } - body.default .top-bar ul { - background: #000 !important; } - body.default .top-bar ul a { - color: #fff; } - body.default button.button, body.default a.button { - background-color: #000; } - body.default button.button.disabled, body.default button.button.disabled:hover, body.default button.button.disabled:focus, body.default button.button:hover, body.default a.button.disabled, body.default a.button.disabled:hover, body.default a.button.disabled:focus, body.default a.button:hover { - background-color: #000; } - body.default .switch input:checked + .slider { - background-color: #000; } - body.default .switch input:focus + .slider { - box-shadow: 0 0 1px #000; } - body.default label { - color: #000; } - body.default .background .modal { - background-color: #fefefe; } - body.default svg .fill-color, body.default svg.fill-color { - fill: currentColor; } - body.default svg .fill-background, body.default svg.fill-background { - fill: #fefefe; } - body.default label [type='text'], body.default label [type='password'], body.default label [type='date'], body.default label [type='datetime'], body.default label [type='datetime-local'], body.default label [type='month'], body.default label [type='week'], body.default label [type='email'], body.default label [type='number'], body.default label [type='search'], body.default label [type='tel'], body.default label [type='time'], body.default label [type='url'], body.default label [type='color'], body.default label textarea, body.default label input[type=text], body.default label input:not([type]) { - border-bottom: solid #000; - background: transparent; - color: #000; } - body.default label [type='text']:focus, body.default label [type='password']:focus, body.default label [type='date']:focus, body.default label [type='datetime']:focus, body.default label [type='datetime-local']:focus, body.default label [type='month']:focus, body.default label [type='week']:focus, body.default label [type='email']:focus, body.default label [type='number']:focus, body.default label [type='search']:focus, body.default label [type='tel']:focus, body.default label [type='time']:focus, body.default label [type='url']:focus, body.default label [type='color']:focus, body.default label textarea:focus, body.default label input[type=text]:focus, body.default label input:not([type]):focus { - border-bottom: solid #000; } - body.default label [type='text']:focus ~ span, body.default label [type='text'].notEmpty:not(:focus) ~ span, body.default label [type='password']:focus ~ span, body.default label [type='password'].notEmpty:not(:focus) ~ span, body.default label [type='date']:focus ~ span, body.default label [type='date'].notEmpty:not(:focus) ~ span, body.default label [type='datetime']:focus ~ span, body.default label [type='datetime'].notEmpty:not(:focus) ~ span, body.default label [type='datetime-local']:focus ~ span, body.default label [type='datetime-local'].notEmpty:not(:focus) ~ span, body.default label [type='month']:focus ~ span, body.default label [type='month'].notEmpty:not(:focus) ~ span, body.default label [type='week']:focus ~ span, body.default label [type='week'].notEmpty:not(:focus) ~ span, body.default label [type='email']:focus ~ span, body.default label [type='email'].notEmpty:not(:focus) ~ span, body.default label [type='number']:focus ~ span, body.default label [type='number'].notEmpty:not(:focus) ~ span, body.default label [type='search']:focus ~ span, body.default label [type='search'].notEmpty:not(:focus) ~ span, body.default label [type='tel']:focus ~ span, body.default label [type='tel'].notEmpty:not(:focus) ~ span, body.default label [type='time']:focus ~ span, body.default label [type='time'].notEmpty:not(:focus) ~ span, body.default label [type='url']:focus ~ span, body.default label [type='url'].notEmpty:not(:focus) ~ span, body.default label [type='color']:focus ~ span, body.default label [type='color'].notEmpty:not(:focus) ~ span, body.default label textarea:focus ~ span, body.default label textarea.notEmpty:not(:focus) ~ span, body.default label input[type=text]:focus ~ span, body.default label input[type=text].notEmpty:not(:focus) ~ span, body.default label input:not([type]):focus ~ span, body.default label input:not([type]).notEmpty:not(:focus) ~ span { - color: #000; } - body.default label [type='text'] ~ span, body.default label [type='password'] ~ span, body.default label [type='date'] ~ span, body.default label [type='datetime'] ~ span, body.default label [type='datetime-local'] ~ span, body.default label [type='month'] ~ span, body.default label [type='week'] ~ span, body.default label [type='email'] ~ span, body.default label [type='number'] ~ span, body.default label [type='search'] ~ span, body.default label [type='tel'] ~ span, body.default label [type='time'] ~ span, body.default label [type='url'] ~ span, body.default label [type='color'] ~ span, body.default label textarea ~ span, body.default label input[type=text] ~ span, body.default label input:not([type]) ~ span { - color: rgba(0, 0, 0, 0.65); } - body.default label textarea { - box-shadow: 0 0 3px 2px rgba(135, 135, 135, 0.31) !important; } - body.default input.notEmpty:invalid { - background-color: rgba(0, 0, 0, 0.65); } - -body.dark { - background: #000000; - color: #ffffff; } - body.dark #cookie-compliance { - background-color: #4b4b4b; - color: #fff; } - body.dark #cookie-compliance a.link { - color: #ffffff; - border-bottom-color: #ffffff; } - body.dark #cookie-compliance a.link:hover { - color: #ffffff; - border-bottom-color: #ffffff; } - body.dark a.link { - text-decoration: none; - color: #fff; - border-bottom: 1px solid #ffffff; } - body.dark a.link:hover { - color: #ffffff; - border-bottom-color: #ffffff; } - body.dark .loader #spinner { - stroke: #ffffff; } - body.dark nav.top-bar { - color: #fff; - background: #373737; } - body.dark .top-bar ul { - background: #373737 !important; } - body.dark .top-bar ul a { - color: #fff; } - body.dark button.button, body.dark a.button { - background-color: #373737; } - body.dark button.button.disabled, body.dark button.button.disabled:hover, body.dark button.button.disabled:focus, body.dark button.button:hover, body.dark a.button.disabled, body.dark a.button.disabled:hover, body.dark a.button.disabled:focus, body.dark a.button:hover { - background-color: #373737; } - body.dark .switch input:checked + .slider { - background-color: #373737; } - body.dark .switch input:focus + .slider { - box-shadow: 0 0 1px #373737; } - body.dark label { - color: #ffffff; } - body.dark .background .modal { - background-color: #fefefe; } - body.dark svg .fill-color, body.dark svg.fill-color { - fill: currentColor; } - body.dark svg .fill-background, body.dark svg.fill-background { - fill: #fefefe; } - body.dark label [type='text'], body.dark label [type='password'], body.dark label [type='date'], body.dark label [type='datetime'], body.dark label [type='datetime-local'], body.dark label [type='month'], body.dark label [type='week'], body.dark label [type='email'], body.dark label [type='number'], body.dark label [type='search'], body.dark label [type='tel'], body.dark label [type='time'], body.dark label [type='url'], body.dark label [type='color'], body.dark label textarea, body.dark label input[type=text], body.dark label input:not([type]) { - border-bottom: solid #ffffff; - background: #000000; - color: #ffffff; } - body.dark label [type='text']:focus, body.dark label [type='password']:focus, body.dark label [type='date']:focus, body.dark label [type='datetime']:focus, body.dark label [type='datetime-local']:focus, body.dark label [type='month']:focus, body.dark label [type='week']:focus, body.dark label [type='email']:focus, body.dark label [type='number']:focus, body.dark label [type='search']:focus, body.dark label [type='tel']:focus, body.dark label [type='time']:focus, body.dark label [type='url']:focus, body.dark label [type='color']:focus, body.dark label textarea:focus, body.dark label input[type=text]:focus, body.dark label input:not([type]):focus { - border-bottom: solid #ffffff; } - body.dark label [type='text']:focus ~ span, body.dark label [type='text'].notEmpty:not(:focus) ~ span, body.dark label [type='password']:focus ~ span, body.dark label [type='password'].notEmpty:not(:focus) ~ span, body.dark label [type='date']:focus ~ span, body.dark label [type='date'].notEmpty:not(:focus) ~ span, body.dark label [type='datetime']:focus ~ span, body.dark label [type='datetime'].notEmpty:not(:focus) ~ span, body.dark label [type='datetime-local']:focus ~ span, body.dark label [type='datetime-local'].notEmpty:not(:focus) ~ span, body.dark label [type='month']:focus ~ span, body.dark label [type='month'].notEmpty:not(:focus) ~ span, body.dark label [type='week']:focus ~ span, body.dark label [type='week'].notEmpty:not(:focus) ~ span, body.dark label [type='email']:focus ~ span, body.dark label [type='email'].notEmpty:not(:focus) ~ span, body.dark label [type='number']:focus ~ span, body.dark label [type='number'].notEmpty:not(:focus) ~ span, body.dark label [type='search']:focus ~ span, body.dark label [type='search'].notEmpty:not(:focus) ~ span, body.dark label [type='tel']:focus ~ span, body.dark label [type='tel'].notEmpty:not(:focus) ~ span, body.dark label [type='time']:focus ~ span, body.dark label [type='time'].notEmpty:not(:focus) ~ span, body.dark label [type='url']:focus ~ span, body.dark label [type='url'].notEmpty:not(:focus) ~ span, body.dark label [type='color']:focus ~ span, body.dark label [type='color'].notEmpty:not(:focus) ~ span, body.dark label textarea:focus ~ span, body.dark label textarea.notEmpty:not(:focus) ~ span, body.dark label input[type=text]:focus ~ span, body.dark label input[type=text].notEmpty:not(:focus) ~ span, body.dark label input:not([type]):focus ~ span, body.dark label input:not([type]).notEmpty:not(:focus) ~ span { - color: #ffffff; } - body.dark label [type='text'] ~ span, body.dark label [type='password'] ~ span, body.dark label [type='date'] ~ span, body.dark label [type='datetime'] ~ span, body.dark label [type='datetime-local'] ~ span, body.dark label [type='month'] ~ span, body.dark label [type='week'] ~ span, body.dark label [type='email'] ~ span, body.dark label [type='number'] ~ span, body.dark label [type='search'] ~ span, body.dark label [type='tel'] ~ span, body.dark label [type='time'] ~ span, body.dark label [type='url'] ~ span, body.dark label [type='color'] ~ span, body.dark label textarea ~ span, body.dark label input[type=text] ~ span, body.dark label input:not([type]) ~ span { - color: rgba(255, 255, 255, 0.65); } - body.dark label textarea { - box-shadow: 0 0 3px 2px rgba(135, 135, 135, 0.31) !important; } - body.dark input.notEmpty:invalid { - background-color: rgba(55, 55, 55, 0.65); } - -@keyframes tutorialPointer { - 0% { - top: 25%; } - 100% { - top: 75%; } } - -.tutorial-blanket { - display: none; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 9001; - background: rgba(55, 55, 55, 0.51); } - -.tutorial .tutorial-blanket { - display: block; } - -.tutorial .tutorial-text { - color: white; - font-size: 1.5rem; - display: flex; - transition: none !important; } - .tutorial .tutorial-text * { - transition: none !important; } - -.tutorial.step-1 #level .segment-row { - position: inherit; } - -.tutorial.step-1 #level .segment-parent:nth-child(3), .tutorial.step-1 #level .segment-parent:nth-child(3).rotating { - z-index: 9900 !important; } - -.tutorial.step-1 .tutorial-text .step-1 { - display: initial; - z-index: 9900 !important; - position: relative; } - -.tutorial.step-2 #level { - z-index: 9900 !important; } - -.tutorial.step-2 .tutorial-text .step-2 { - display: initial; - z-index: 9900 !important; - position: relative; } - -.tutorial.step-3 .tutorial-text .step-3 { - display: initial; - z-index: 9900 !important; - position: relative; } - -.tutorial.step-3 .top-bar { - z-index: 9900 !important; } - -.tutorial.step-3 .help-action { - margin-top: 0; - padding-top: 10px; - position: relative; - overflow: visible; - margin-right: 10px; - box-shadow: 0 0 10px 5px #fff; } - -.tutorial.step-4 .tutorial-text .step-4 { - display: initial; - z-index: 9900 !important; - position: relative; } - -.tutorial.step-4 #level .segment-row { - position: inherit; } - .tutorial.step-4 #level .segment-row > .child-container .segment-parent.layer-2, .tutorial.step-4 #level .segment-row > .child-container > .segment-parent.layer-2.rotating { - z-index: 9900 !important; } - .tutorial.step-4 #level .segment-row > .child-container .segment-parent.layer-2 #tutorial-pointer, .tutorial.step-4 #level .segment-row > .child-container > .segment-parent.layer-2.rotating #tutorial-pointer { - width: 0.6em; - height: 0.6em; - border-radius: 50%; - left: 75%; - position: absolute; - top: 75%; - z-index: 1; - transform: translate(-50%, -50%); - animation: tutorialPointer 2s infinite; - pointer-events: none; } - -#tutorial-site { - display: flex; - justify-content: space-evenly; - flex-direction: column; } - #tutorial-site #tutorial-1, #tutorial-site #tutorial-2, #tutorial-site #tutorial-3 { - text-align: center; - margin-top: 0.7rem; - margin-bottom: 0.5rem; } - #tutorial-site #tutorial-2 .help-action { - width: 100%; - margin-bottom: 0.3rem; } - #tutorial-site #tutorial-3 .tutorial-wrapper { - position: relative; } - #tutorial-site #tutorial-3 .tutorial-wrapper #tutorial-pointer { - width: 0.6em; - height: 0.6em; - border-radius: 50%; - left: 75%; - position: absolute; - top: 75%; - z-index: 1; - transform: translate(-50%, -50%); - animation: tutorialPointer 2s infinite; - pointer-events: none; } - -body.red #tutorial-pointer { - background: #ff0000; } - -body.red #level-number-container.in-main-menu { - background: #fff; - border-color: #000; } - -body.red .segment.segment-parent { - border-color: #555555; } - body.red .segment.segment-parent.layer-2 { - border-color: #000; } - -body.red #site > :not(.won) .segment.locked { - cursor: default; - border-color: #870015; - background-color: #ff0000 !important; } - body.red #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - cursor: default; } - -body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.blue #tutorial-pointer { - background: #2c58ae; } - -body.blue #level-number-container.in-main-menu { - background: #fff; - border-color: #000; } - -body.blue .segment.segment-parent { - border-color: #555555; } - body.blue .segment.segment-parent.layer-2 { - border-color: #000; } - -body.blue #site > :not(.won) .segment.locked { - cursor: default; - border-color: #1a3062; - background-color: #2c58ae !important; } - body.blue #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - cursor: default; } - -body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.green #tutorial-pointer { - background: #008000; } - -body.green #level-number-container.in-main-menu { - background: #fff; - border-color: #000; } - -body.green .segment.segment-parent { - border-color: #555555; } - body.green .segment.segment-parent.layer-2 { - border-color: #000; } - -body.green #site > :not(.won) .segment.locked { - cursor: default; - border-color: #003613; - background-color: #008000 !important; } - body.green #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - cursor: default; } - -body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.pink #tutorial-pointer { - background: #ff69b4; } - -body.pink #level-number-container.in-main-menu { - background: #fff; - border-color: #000; } - -body.pink .segment.segment-parent { - border-color: #555555; } - body.pink .segment.segment-parent.layer-2 { - border-color: #000; } - -body.pink #site > :not(.won) .segment.locked { - cursor: default; - border-color: #70374a; - background-color: #ff69b4 !important; } - body.pink #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - cursor: default; } - -body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.black #tutorial-pointer { - background: #000; } - -body.black #level-number-container.in-main-menu { - background: #fff; - border-color: #000; } - -body.black .segment.segment-parent { - border-color: #555555; } - body.black .segment.segment-parent.layer-2 { - border-color: #000; } - -body.black #site > :not(.won) .segment.locked { - cursor: default; - border-color: #353535; - background-color: #000 !important; } - body.black #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - cursor: default; } - -body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-90 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-180 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-270 { - background-color: #fff; } - body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-360 { - background-color: #fff; } - -body.default #tutorial-pointer { - background: #000; } - -body.default #level-number-container.in-main-menu { - background: transparent; - border-color: #000; } - -body.default .segment.segment-parent { - border-color: #555555; } - body.default .segment.segment-parent.layer-2 { - border-color: #000; } - -body.default #site > :not(.won) .segment.locked { - cursor: default; - border-color: #353535; - background-color: #000 !important; } - body.default #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - cursor: default; } - -body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-90 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-180 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-270 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-360 { - background-color: transparent; } - -body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-90 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-180 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-270 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-360 { - background-color: transparent; } - -body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-90 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-180 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-270 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-360 { - background-color: transparent; } - -body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-90 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-180 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-270 { - background-color: transparent; } - body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-360 { - background-color: transparent; } - -body.dark #tutorial-pointer { - background: #373737; } - -body.dark #level-number-container.in-main-menu { - background: #000000; - border-color: #ffffff; } - -body.dark .segment.segment-parent { - border-color: #9b9b9b; } - body.dark .segment.segment-parent.layer-2 { - border-color: #ffffff; } - -body.dark #site > :not(.won) .segment.locked { - cursor: default; - border-color: #4b4b4b; - background-color: #373737 !important; } - body.dark #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - cursor: default; } - -body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-90 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-180 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-270 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90 > .child-container > .segment.rotate-360 { - background-color: #000000; } - -body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-90 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-180 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-270 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180 > .child-container > .segment.rotate-360 { - background-color: #000000; } - -body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-90 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-180 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-270 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270 > .child-container > .segment.rotate-360 { - background-color: #000000; } - -body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-90 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-180 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-270 { - background-color: #000000; } - body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360 > .child-container > .segment.rotate-360 { - background-color: #000000; } - -body.default { - background: #0f0f49; - color: white; } - body.default * { - color: white; } - body.default #level-number-container.in-main-menu { - background: #fff !important; } - body.default .segment.segment-parent:not(.layer-2) { - border-color: #005d07; - background: rgba(109, 255, 127, 0.2) !important; } - body.default #site > :not(.won) .segment.locked { - background-color: transparent !important; - border-color: #42ff4a !important; } - body.default #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - background-color: transparent !important; } - -body.dark .switch input:checked + .slider { - border-color: black; } - -body.dark .switch .slider { - border: solid 1px white; - background-color: inherit; - padding: 1px; - margin-bottom: 0; - margin-top: 0; } - -body.dark #site > :not(.won) .segment.locked.layer-2 { - border-color: #565656; } - -body.dark .modal { - background-color: #fefefe; - border: 1px solid white; - border-radius: 2px; } - -body.black #site > :not(.won) .segment.locked { - background-color: #9d9d9d !important; - border-color: #6e6e6e !important; } - body.black #site > :not(.won) .segment.locked > .child-container > .segment-leaf { - background-color: transparent !important; } - -body.black #logo { - border: 1px solid grey; - border-radius: 50%; } - -.no-transition { - transition: none !important; } - .no-transition * { - transition: none !important; } - -nav.top-bar.title-bar { - padding: 0.3rem 0.6rem 0; } - -#logo { - max-width: 2rem; - transition: none; } - -#action-bar .top-bar-right .menu .action.img a { - padding-bottom: 0; } - #action-bar .top-bar-right .menu .action.img a img { - max-height: 1.8rem; } - -.menu a, .dropdown.menu a { - padding: 0.2rem 0.5rem; } - -.relative-level-number { - position: relative; } - .relative-level-number #level-number-container { - top: 50%; - transform: translate(-50%, -50%); } - -#level-number-container, .level-counter { - z-index: 1; - position: absolute; - left: 50%; - transform: translate(-50%); - border: 3px solid white; - border-radius: 50%; - display: table-cell; - height: 40px; - width: 40px; - text-align: center; - vertical-align: middle; } - #level-number-container.level-counter, .level-counter.level-counter { - position: fixed !important; - font-size: 1.8rem; } - #level-number-container.level-counter.num-10, .level-counter.level-counter.num-10 { - font-size: 1.3rem; } - #level-number-container.level-counter.num-100, .level-counter.level-counter.num-100 { - font-size: 0.9rem; } - #level-number-container.level-counter.num-1000, .level-counter.level-counter.num-1000 { - font-size: 0.65rem; } - #level-number-container.in-main-menu, .level-counter.in-main-menu { - background: white; - border-color: black; - height: 1em; - width: 1em; - min-height: 1em; - min-width: 1em; - max-height: 1em; - max-width: 1em; } - #level-number-container a, .level-counter a { - width: initial !important; } - #level-number-container #level-number, #level-number-container a, .level-counter #level-number, .level-counter a { - transition: none; - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - font-weight: bold; } - -.coin-counter { - display: inline-block; - position: relative; - font-size: 1.6rem; } - @media print, screen and (max-width: 24.99875em) { - .coin-counter { - font-size: 1rem; } } - .coin-counter :after { - background-image: url(img/coinTower.png); - background-size: 28px 28px; - width: 28px; - height: 28px; - display: inline-block; - content: ""; } - -#coin-container { - line-height: 1; } - #coin-container .coin { - margin-left: 3px; - margin-right: 3px; - max-width: 20px; - display: inline-block; } - @media print, screen and (min-width: 25em) { - #coin-container .coin { - max-width: 25px; } } - @media print, screen and (min-width: 40em) { - #coin-container .coin { - max-width: 30px; } } - -@keyframes rotate-90 { - 0% { - transform: rotate(0deg); } - 100% { - transform: rotate(90deg); } } - -@keyframes rotate-reverse-90 { - 0% { - transform: rotate(180deg); } - 100% { - transform: rotate(90deg); } } - -@keyframes rotate-180 { - 0% { - transform: rotate(90deg); } - 100% { - transform: rotate(180deg); } } - -@keyframes rotate-reverse-180 { - 0% { - transform: rotate(270deg); } - 100% { - transform: rotate(180deg); } } - -@keyframes rotate-270 { - 0% { - transform: rotate(180deg); } - 100% { - transform: rotate(270deg); } } - -@keyframes rotate-reverse-270 { - 0% { - transform: rotate(360deg); } - 100% { - transform: rotate(270deg); } } - -@keyframes rotate-360 { - 0% { - transform: rotate(270deg); } - 100% { - transform: rotate(360deg); } } - -@keyframes rotate-reverse-360 { - 0% { - transform: rotate(450deg); } - 100% { - transform: rotate(360deg); } } - -.segment:not(.segment-row):not(.segment-triangle).rotating { - z-index: 10 !important; - overflow: hidden; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90 { - animation-name: rotate-90; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90 > .child-container > .segment { - animation-name: rotate-360; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-direction: reverse; - -webkit-animation-direction: reverse; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90 > .child-container > .segment.rotate-90 { - animation-name: rotate-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90 > .child-container > .segment.rotate-180 { - animation-name: rotate-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90 > .child-container > .segment.rotate-270 { - animation-name: rotate-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90 > .child-container > .segment.rotate-360 { - animation-name: rotate-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse > .child-container > .segment { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse > .child-container > .segment.rotate-90 { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse > .child-container > .segment.rotate-180 { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse > .child-container > .segment.rotate-270 { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse > .child-container > .segment.rotate-360 { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180 { - animation-name: rotate-180; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180 > .child-container > .segment { - animation-name: rotate-270; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-direction: reverse; - -webkit-animation-direction: reverse; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180 > .child-container > .segment.rotate-90 { - animation-name: rotate-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180 > .child-container > .segment.rotate-180 { - animation-name: rotate-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180 > .child-container > .segment.rotate-270 { - animation-name: rotate-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180 > .child-container > .segment.rotate-360 { - animation-name: rotate-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse > .child-container > .segment { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse > .child-container > .segment.rotate-90 { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse > .child-container > .segment.rotate-180 { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse > .child-container > .segment.rotate-270 { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse > .child-container > .segment.rotate-360 { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270 { - animation-name: rotate-270; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270 > .child-container > .segment { - animation-name: rotate-180; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-direction: reverse; - -webkit-animation-direction: reverse; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270 > .child-container > .segment.rotate-90 { - animation-name: rotate-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270 > .child-container > .segment.rotate-180 { - animation-name: rotate-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270 > .child-container > .segment.rotate-270 { - animation-name: rotate-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270 > .child-container > .segment.rotate-360 { - animation-name: rotate-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse > .child-container > .segment { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse > .child-container > .segment.rotate-90 { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse > .child-container > .segment.rotate-180 { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse > .child-container > .segment.rotate-270 { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse > .child-container > .segment.rotate-360 { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360 { - animation-name: rotate-360; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360 > .child-container > .segment { - animation-name: rotate-90; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-direction: reverse; - -webkit-animation-direction: reverse; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360 > .child-container > .segment.rotate-90 { - animation-name: rotate-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360 > .child-container > .segment.rotate-180 { - animation-name: rotate-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360 > .child-container > .segment.rotate-270 { - animation-name: rotate-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360 > .child-container > .segment.rotate-360 { - animation-name: rotate-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse > .child-container > .segment { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse > .child-container > .segment.rotate-90 { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse > .child-container > .segment.rotate-180 { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse > .child-container > .segment.rotate-270 { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse > .child-container > .segment.rotate-360 { - animation-name: rotate-reverse-270; } - -.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 { - transform: rotate(90deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment { - transform: rotate(270deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-90 { - transform: rotate(360deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-90.rotating { - animation-name: rotate-360; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-90.rotating.reverse { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-180 { - transform: rotate(90deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-180.rotating { - animation-name: rotate-90; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-180.rotating.reverse { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-270 { - transform: rotate(180deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-270.rotating { - animation-name: rotate-180; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-270.rotating.reverse { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-360 { - transform: rotate(270deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-360.rotating { - animation-name: rotate-270; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90 > .child-container > .segment.rotate-360.rotating.reverse { - animation-name: rotate-reverse-270; } - -.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 { - transform: rotate(180deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment { - transform: rotate(180deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-90 { - transform: rotate(270deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-90.rotating { - animation-name: rotate-270; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-90.rotating.reverse { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-180 { - transform: rotate(360deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-180.rotating { - animation-name: rotate-360; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-180.rotating.reverse { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-270 { - transform: rotate(90deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-270.rotating { - animation-name: rotate-90; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-270.rotating.reverse { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-360 { - transform: rotate(180deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-360.rotating { - animation-name: rotate-180; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180 > .child-container > .segment.rotate-360.rotating.reverse { - animation-name: rotate-reverse-180; } - -.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 { - transform: rotate(270deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment { - transform: rotate(90deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-90 { - transform: rotate(180deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-90.rotating { - animation-name: rotate-180; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-90.rotating.reverse { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-180 { - transform: rotate(270deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-180.rotating { - animation-name: rotate-270; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-180.rotating.reverse { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-270 { - transform: rotate(360deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-270.rotating { - animation-name: rotate-360; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-270.rotating.reverse { - animation-name: rotate-reverse-360; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-360 { - transform: rotate(90deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-360.rotating { - animation-name: rotate-90; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270 > .child-container > .segment.rotate-360.rotating.reverse { - animation-name: rotate-reverse-90; } - -.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 { - transform: rotate(360deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment { - transform: rotate(0deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-90 { - transform: rotate(90deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-90.rotating { - animation-name: rotate-90; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-90.rotating.reverse { - animation-name: rotate-reverse-90; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-180 { - transform: rotate(180deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-180.rotating { - animation-name: rotate-180; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-180.rotating.reverse { - animation-name: rotate-reverse-180; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-270 { - transform: rotate(270deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-270.rotating { - animation-name: rotate-270; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-270.rotating.reverse { - animation-name: rotate-reverse-270; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-360 { - transform: rotate(360deg); - background-color: inherit; - z-index: 1; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-360.rotating { - animation-name: rotate-360; - animation-duration: 0.25s; - animation-fill-mode: forwards; - animation-timing-function: linear; } - .segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360 > .child-container > .segment.rotate-360.rotating.reverse { - animation-name: rotate-reverse-360; } - -#level { - user-select: none; - white-space: nowrap; - transition: none; - max-width: 100%; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - overflow-y: visible; } - #level * { - transition: none; } - -.segment { - vertical-align: top; - white-space: initial; - cursor: pointer; - display: inline-block; - text-align: center; - position: relative; - transition: none; - user-select: none; - z-index: 1; - background-color: inherit; - line-height: 0; } - .segment.segment-row { - display: block; - width: 100%; - animation: none !important; - white-space: nowrap; } - .segment.segment-column { - padding-top: 4px; } - .segment.segment-column > .child-container > .segment { - display: block; - width: 100%; } - .segment.segment-leaf { - background-color: transparent !important; - min-width: 1em; - padding: 0.8em; } - .segment.segment-leaf:before { - content: " "; - display: block; - padding-top: 100%; } - .segment.segment-leaf .leaf-element { - position: absolute; - width: 100%; - height: 100%; - line-height: 1.5em; - top: 0; - left: 0; } - .segment.segment-parent { - border: solid 1px #a9a9a9; - border-radius: 3px; - padding: 1px; } - .segment.segment-parent.layer-2 { - border: solid 3px #000000; } - -#site > :not(.won) .show-when-won { - display: none; } - -.level-container { - transition: none; } - -.won .show-while-playing { - display: none; } - -.won #won-text { - text-shadow: 0 0.2rem 0.2rem #464646, 0.6rem 0.8rem 0.4rem #00000090; } - -.text-right { - text-align: right; } - -#continue-button { - margin-bottom: 2px; } - @media print, screen and (max-width: 24.99875em) { - #continue-button { - margin-bottom: 0; - padding: 0.3em .6em; } } - -@media print, screen and (max-width: 24.99875em) { - #play-button { - margin-bottom: 0.5rem; } } - -#help-button { - margin: 0; - padding: 0.4em 0.4em; - max-width: 3em; } - @media print, screen and (max-width: 39.99875em) { - #help-button { - padding: 0.2em 0.2em; - max-width: 2em; } } - -.line-height-1 { - line-height: 1; } - -body { - overscroll-behavior: contain; - user-select: none; } - -#site { - overflow: visible; } - -div.mainContainer { - overflow-x: hidden; } - -.clickable { - cursor: pointer; } - -#share-button { - overflow: hidden; } - #share-button svg { - cursor: pointer; - max-width: 1.5rem; } - -svg { - color: black; } - svg .fill-background { - fill: white; } - -@keyframes jump-animation { - 0% { - transform: scale(1); } - 50% { - transform: scale(2); } - 100% { - transform: scale(1); } } - -.jump-animation { - animation-name: jump-animation; - animation-duration: 0.4s; - animation-fill-mode: none; - animation-timing-function: linear; } - -@keyframes shake { - 0% { - transform: rotate(0deg); } - 33% { - transform: rotate(-10deg); } - 66% { - transform: rotate(10deg); } - 100% { - transform: rotate(0deg); } } - -.shake .leaf-element { - /* Start the shake animation and make the animation last for 0.5 seconds */ - animation: shake 0.15s; - /* When the animation is finished, start again */ - animation-iteration-count: infinite; } - -nav.top-bar { - padding: 0; - margin-left: -0.625rem; - margin-right: -0.625rem; } - @media print, screen and (min-width: 40em) { - nav.top-bar { - margin-left: -0.9375rem; - margin-right: -0.9375rem; } } - nav.top-bar.with-image .background-img { - display: none; } - nav.top-bar .background-img { - display: none; } - nav.top-bar > .grid-container { - background: inherit; - position: fixed; - top: 0; - left: 0; - right: 0; } - nav.top-bar > .grid-container > .grid-padding-x { - display: block; - padding: 0.5rem; - margin: 0; - padding-right: 0; } - nav.top-bar > .grid-container > .grid-padding-x > .small-12 { - padding: 0; } - nav.top-bar ul > li { - display: flex; - align-items: center; } - nav.top-bar ul > li.level-counter { - margin-top: 0.2rem; } - -body.theme-blue { - background: #427081; - color: white; } - body.theme-blue .toast .message { - background: #4d575a; } - body.theme-blue nav.top-bar, body.theme-blue nav.top-bar.with-image, body.theme-blue nav.top-bar.with-image.solid { - background: #4d575a; } - body.theme-blue .button { - background: #4d575a; } - body.theme-blue .switch input:checked + .slider { - background: #d3e7eb; } - body.theme-blue #level-number-container { - background: #427081; } - body.theme-blue svg { - color: black; } - body.theme-blue ul.menu li a { - color: white; } - body.theme-blue a { - color: #d3e7eb; } - body.theme-blue a.hidden-link { - color: white; } - body.theme-blue #site > :not(.won) .segment.locked { - background-color: #00000030; } - body.theme-blue #tutorial-pointer { - background: #d3e7eb; } - -@keyframes rotate { - from { - transform: rotate(0); } - to { - transform: rotate(450deg); } } - -@keyframes line { - 0% { - stroke-dasharray: 2, 85.964; - transform: rotate(0); } - 50% { - stroke-dasharray: 65.973, 21.9911; - stroke-dashoffset: 0; } - 100% { - stroke-dasharray: 2, 85.964; - stroke-dashoffset: -65.973; - transform: rotate(90deg); } } - -html, body { - min-height: 100%; - width: 100%; - height: 100%; - letter-spacing: 1px; - overscroll-behavior: none; } - -a, a:hover { - color: #ffca00; } - -#site { - position: relative; - max-height: 100%; - max-width: 100%; - height: 100%; - width: 100%; } - -.right { - float: right; } - -.grow { - flex: 1; } - -.loader { - left: 50%; - top: 50%; - position: fixed; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - text-align: center; } - .loader.overlay { - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: rgba(192, 192, 192, 0.5); - transform: none; - z-index: 10000; } - .loader.overlay svg { - left: 50%; - top: 50%; - position: fixed; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - text-align: center; } - .loader.inline { - left: initial; - top: initial; - position: initial; - -webkit-transform: initial; - transform: initial; - text-align: center; - display: inline; } - .loader.small .spinner { - transform: scale(0.5); } - .loader .spinner { - box-sizing: border-box; - stroke: #000; - stroke-width: 3px; - transform-origin: 50%; - animation: line 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite, rotate 1.6s linear infinite; } - -.overflow-auto { - overflow: auto; } - -.overflow-hidden { - overflow: hidden; } - -.height-100 { - height: 100%; } - -.hidden { - display: none; } - -.vertical-middle { - display: flex; - align-items: center; } - -.vertical-bottom { - display: flex; - align-items: end; } - -.horizontal-center { - display: flex; - justify-content: center; } - -.width-100 { - width: 100%; } - -h1.inline { - display: inline-block; } - -h2.inline { - display: inline-block; } - -h3.inline { - display: inline-block; } - -h4.inline { - display: inline-block; } - -h5.inline { - display: inline-block; } - -h6.inline { - display: inline-block; } - -img.back-button { - cursor: pointer; - max-height: 1.1rem; - margin-right: 0.2rem; - margin-bottom: 0.65rem; } - -a.hidden-link { - color: inherit; } - -#main-content-container { - overflow: auto; - width: 100%; } - #main-content-container > .grid-x { - overflow: auto; - margin-top: 0.5rem; - margin-bottom: 0.5rem; } - #main-content-container #main-content { - padding-top: 0; - padding-bottom: 0; } +@media print, screen and (min-width: 40em){.reveal,.reveal.tiny,.reveal.small,.reveal.large{right:auto;left:auto;margin:0 auto}}/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:0.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.foundation-mq{font-family:"small=0em&smedium=25em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:100%}*,*::before,*::after{-webkit-box-sizing:inherit;box-sizing:inherit}body{margin:0;padding:0;background:#fefefe;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:1.5;color:#0a0a0a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle;max-width:100%;height:auto;-ms-interpolation-mode:bicubic}textarea{height:auto;min-height:50px;border-radius:0}select{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;border-radius:0}.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}button{padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:0;background:transparent;line-height:1;cursor:auto}[data-whatinput='mouse'] button{outline:0}pre{overflow:auto}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block !important}.is-hidden{display:none !important}[type='text'],[type='password'],[type='date'],[type='datetime'],[type='datetime-local'],[type='month'],[type='week'],[type='email'],[type='number'],[type='search'],[type='tel'],[type='time'],[type='url'],[type='color'],textarea{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:2.4375rem;margin:0 0 1rem;padding:.5rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;-webkit-box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#0a0a0a;-webkit-transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:box-shadow 0.5s,border-color 0.25s ease-in-out;transition:box-shadow 0.5s,border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;-webkit-appearance:none;-moz-appearance:none;appearance:none}[type='text']:focus,[type='password']:focus,[type='date']:focus,[type='datetime']:focus,[type='datetime-local']:focus,[type='month']:focus,[type='week']:focus,[type='email']:focus,[type='number']:focus,[type='search']:focus,[type='tel']:focus,[type='time']:focus,[type='url']:focus,[type='color']:focus,textarea:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;-webkit-transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:box-shadow 0.5s,border-color 0.25s ease-in-out;transition:box-shadow 0.5s,border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type='submit'],[type='button']{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type='search']{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:#cacaca}::-moz-placeholder{color:#cacaca}:-ms-input-placeholder{color:#cacaca}::-ms-input-placeholder{color:#cacaca}::placeholder{color:#cacaca}[type='file'],[type='checkbox'],[type='radio']{margin:0 0 1rem}[type='checkbox']+label,[type='radio']+label{display:inline-block;vertical-align:baseline;margin-left:.5rem;margin-right:1rem;margin-bottom:0}[type='checkbox']+label[for],[type='radio']+label[for]{cursor:pointer}label>[type='checkbox'],label>[type='radio']{margin-right:.5rem}[type='file']{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:normal;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin-bottom:1rem;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*{border-radius:0 0 0 0}.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0 0 0 0}.input-group-label,.input-group-field,.input-group-button,.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{margin:0;white-space:nowrap}.input-group-label{padding:0 1rem;border:1px solid #cacaca;background:#e6e6e6;color:#0a0a0a;text-align:center;white-space:nowrap;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;min-width:0}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;height:auto;padding-top:0;padding-bottom:0;font-size:1rem}fieldset{margin:0;padding:0;border:0}legend{max-width:100%;margin-bottom:.5rem}.fieldset{margin:1.125rem 0;padding:1.25rem;border:1px solid #cacaca}.fieldset legend{margin:0;margin-left:-.1875rem;padding:0 .1875rem}select{height:2.4375rem;margin:0 0 1rem;padding:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#0a0a0a;background-image:url("data:image/svg+xml;utf8,");background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;padding-right:1.5rem;-webkit-transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:box-shadow 0.5s,border-color 0.25s ease-in-out;transition:box-shadow 0.5s,border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s}@media screen and (min-width: 0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;-webkit-box-shadow:0 0 5px #cacaca;box-shadow:0 0 5px #cacaca;-webkit-transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s;transition:box-shadow 0.5s,border-color 0.25s ease-in-out;transition:box-shadow 0.5s,border-color 0.25s ease-in-out,-webkit-box-shadow 0.5s}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}select:not([multiple]){padding-top:0;padding-bottom:0}.is-invalid-input:not(:focus){border-color:#cc4b37;background-color:#f9ecea}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.is-invalid-label{color:#cc4b37}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:bold;color:#cc4b37}.form-error.is-visible{display:block}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}p{margin-bottom:1rem;font-size:inherit;line-height:1.6;text-rendering:optimizeLegibility}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:80%;line-height:inherit}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;color:inherit;text-rendering:optimizeLegibility}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small{line-height:0;color:#cacaca}h1,.h1{font-size:1.5rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h2,.h2{font-size:1.25rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h3,.h3{font-size:1.1875rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h4,.h4{font-size:1.125rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h5,.h5{font-size:1.0625rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h6,.h6{font-size:1rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}@media print, screen and (min-width: 40em){h1,.h1{font-size:3rem}h2,.h2{font-size:2.5rem}h3,.h3{font-size:1.9375rem}h4,.h4{font-size:1.5625rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}}a{line-height:inherit;color:#1779ba;text-decoration:none;cursor:pointer}a:hover,a:focus{color:#1468a0}a img{border:0}hr{clear:both;max-width:75rem;height:0;margin:1.25rem auto;border-top:0;border-right:0;border-bottom:1px solid #cacaca;border-left:0}ul,ol,dl{margin-bottom:1rem;list-style-position:outside;line-height:1.6}li{font-size:inherit}ul{margin-left:1.25rem;list-style-type:disc}ol{margin-left:1.25rem}ul ul,ol ul,ul ol,ol ol{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:bold}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure{margin:0}kbd{margin:0;padding:.125rem .25rem 0;background-color:#e6e6e6;font-family:Consolas,"Liberation Mono",Courier,monospace;color:#0a0a0a}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:normal;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ul.no-bullet,ol.no-bullet{margin-left:0;list-style:none}.cite-block,cite{display:block;color:#8a8a8a;font-size:.8125rem}.cite-block:before,cite:before{content:"— "}.code-inline,code{border:1px solid #cacaca;background-color:#e6e6e6;font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;color:#0a0a0a;display:inline;max-width:100%;word-wrap:break-word;padding:.125rem .3125rem .0625rem}.code-block{border:1px solid #cacaca;background-color:#e6e6e6;font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;color:#0a0a0a;display:block;overflow:auto;white-space:pre;padding:1rem;margin-bottom:1.5rem}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media screen and (min-width: 25em){.smedium-text-left{text-align:left}.smedium-text-right{text-align:right}.smedium-text-center{text-align:center}.smedium-text-justify{text-align:justify}}@media print, screen and (min-width: 40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print, screen and (min-width: 64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none !important}@media print{*{background:transparent !important;color:black !important;-webkit-print-color-adjust:economy;color-adjust:economy;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}.show-for-print{display:block !important}.hide-for-print{display:none !important}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='javascript:']:after,a[href^='#']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}pre,blockquote{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.grid-container{padding-right:.625rem;padding-left:.625rem;max-width:75rem;margin-left:auto;margin-right:auto}@media print, screen and (min-width: 40em){.grid-container{padding-right:.9375rem;padding-left:.9375rem}}.grid-container.fluid{padding-right:.625rem;padding-left:.625rem;max-width:100%;margin-left:auto;margin-right:auto}@media print, screen and (min-width: 40em){.grid-container.fluid{padding-right:.9375rem;padding-left:.9375rem}}.grid-container.full{padding-right:0;padding-left:0;max-width:100%;margin-left:auto;margin-right:auto}.grid-x{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.cell{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;min-height:0px;min-width:0px;width:100%}.cell.auto{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.cell.shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.auto{width:auto}.grid-x>.shrink{width:auto}.grid-x>.small-shrink,.grid-x>.small-full,.grid-x>.small-1,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media screen and (min-width: 25em){.grid-x>.smedium-shrink,.grid-x>.smedium-full,.grid-x>.smedium-1,.grid-x>.smedium-2,.grid-x>.smedium-3,.grid-x>.smedium-4,.grid-x>.smedium-5,.grid-x>.smedium-6,.grid-x>.smedium-7,.grid-x>.smedium-8,.grid-x>.smedium-9,.grid-x>.smedium-10,.grid-x>.smedium-11,.grid-x>.smedium-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print, screen and (min-width: 40em){.grid-x>.medium-shrink,.grid-x>.medium-full,.grid-x>.medium-1,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print, screen and (min-width: 64em){.grid-x>.large-shrink,.grid-x>.large-full,.grid-x>.large-1,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-x>.small-1,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.small-1{width:8.33333%}.grid-x>.small-2{width:16.66667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.33333%}.grid-x>.small-5{width:41.66667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.33333%}.grid-x>.small-8{width:66.66667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.33333%}.grid-x>.small-11{width:91.66667%}.grid-x>.small-12{width:100%}@media screen and (min-width: 25em){.grid-x>.smedium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;width:auto}.grid-x>.smedium-shrink,.grid-x>.smedium-1,.grid-x>.smedium-2,.grid-x>.smedium-3,.grid-x>.smedium-4,.grid-x>.smedium-5,.grid-x>.smedium-6,.grid-x>.smedium-7,.grid-x>.smedium-8,.grid-x>.smedium-9,.grid-x>.smedium-10,.grid-x>.smedium-11,.grid-x>.smedium-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.smedium-shrink{width:auto}.grid-x>.smedium-1{width:8.33333%}.grid-x>.smedium-2{width:16.66667%}.grid-x>.smedium-3{width:25%}.grid-x>.smedium-4{width:33.33333%}.grid-x>.smedium-5{width:41.66667%}.grid-x>.smedium-6{width:50%}.grid-x>.smedium-7{width:58.33333%}.grid-x>.smedium-8{width:66.66667%}.grid-x>.smedium-9{width:75%}.grid-x>.smedium-10{width:83.33333%}.grid-x>.smedium-11{width:91.66667%}.grid-x>.smedium-12{width:100%}}@media print, screen and (min-width: 40em){.grid-x>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;width:auto}.grid-x>.medium-shrink,.grid-x>.medium-1,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.33333%}.grid-x>.medium-2{width:16.66667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.33333%}.grid-x>.medium-5{width:41.66667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.33333%}.grid-x>.medium-8{width:66.66667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.33333%}.grid-x>.medium-11{width:91.66667%}.grid-x>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.grid-x>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;width:auto}.grid-x>.large-shrink,.grid-x>.large-1,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.33333%}.grid-x>.large-2{width:16.66667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.33333%}.grid-x>.large-5{width:41.66667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.33333%}.grid-x>.large-8{width:66.66667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.33333%}.grid-x>.large-11{width:91.66667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}@media print, screen and (min-width: 40em){.grid-margin-x{margin-left:-.9375rem;margin-right:-.9375rem}}.grid-margin-x>.cell{width:calc(100% - 1.25rem);margin-left:.625rem;margin-right:.625rem}@media print, screen and (min-width: 40em){.grid-margin-x>.cell{width:calc(100% - 1.875rem);margin-left:.9375rem;margin-right:.9375rem}}.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media screen and (min-width: 25em){.grid-margin-x>.smedium-auto{width:auto}.grid-margin-x>.smedium-shrink{width:auto}.grid-margin-x>.smedium-1{width:calc(8.33333% - 1.25rem)}.grid-margin-x>.smedium-2{width:calc(16.66667% - 1.25rem)}.grid-margin-x>.smedium-3{width:calc(25% - 1.25rem)}.grid-margin-x>.smedium-4{width:calc(33.33333% - 1.25rem)}.grid-margin-x>.smedium-5{width:calc(41.66667% - 1.25rem)}.grid-margin-x>.smedium-6{width:calc(50% - 1.25rem)}.grid-margin-x>.smedium-7{width:calc(58.33333% - 1.25rem)}.grid-margin-x>.smedium-8{width:calc(66.66667% - 1.25rem)}.grid-margin-x>.smedium-9{width:calc(75% - 1.25rem)}.grid-margin-x>.smedium-10{width:calc(83.33333% - 1.25rem)}.grid-margin-x>.smedium-11{width:calc(91.66667% - 1.25rem)}.grid-margin-x>.smedium-12{width:calc(100% - 1.25rem)}}@media print, screen and (min-width: 40em){.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto{width:auto}.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-x>.large-auto{width:auto}.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.33333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.66667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.33333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.66667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.33333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.66667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.33333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.66667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-right:-.625rem;margin-left:-.625rem}@media print, screen and (min-width: 40em){.grid-padding-x .grid-padding-x{margin-right:-.9375rem;margin-left:-.9375rem}}.grid-container:not(.full)>.grid-padding-x{margin-right:-.625rem;margin-left:-.625rem}@media print, screen and (min-width: 40em){.grid-container:not(.full)>.grid-padding-x{margin-right:-.9375rem;margin-left:-.9375rem}}.grid-padding-x>.cell{padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 40em){.grid-padding-x>.cell{padding-right:.9375rem;padding-left:.9375rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.33333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.66667%}.small-up-7>.cell{width:14.28571%}.small-up-8>.cell{width:12.5%}@media screen and (min-width: 25em){.smedium-up-1>.cell{width:100%}.smedium-up-2>.cell{width:50%}.smedium-up-3>.cell{width:33.33333%}.smedium-up-4>.cell{width:25%}.smedium-up-5>.cell{width:20%}.smedium-up-6>.cell{width:16.66667%}.smedium-up-7>.cell{width:14.28571%}.smedium-up-8>.cell{width:12.5%}}@media print, screen and (min-width: 40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.33333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.66667%}.medium-up-7>.cell{width:14.28571%}.medium-up-8>.cell{width:12.5%}}@media print, screen and (min-width: 64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.33333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.66667%}.large-up-7>.cell{width:14.28571%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media screen and (min-width: 25em){.grid-margin-x.smedium-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.smedium-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.smedium-up-3>.cell{width:calc(33.33333% - 1.25rem)}.grid-margin-x.smedium-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.smedium-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.smedium-up-6>.cell{width:calc(16.66667% - 1.25rem)}.grid-margin-x.smedium-up-7>.cell{width:calc(14.28571% - 1.25rem)}.grid-margin-x.smedium-up-8>.cell{width:calc(12.5% - 1.25rem)}}@media print, screen and (min-width: 40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.875rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.33333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.66667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.28571% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse{margin-right:0;margin-left:0}.small-margin-collapse>.cell{margin-right:0;margin-left:0}.small-margin-collapse>.small-1{width:8.33333%}.small-margin-collapse>.small-2{width:16.66667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.33333%}.small-margin-collapse>.small-5{width:41.66667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.33333%}.small-margin-collapse>.small-8{width:66.66667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.33333%}.small-margin-collapse>.small-11{width:91.66667%}.small-margin-collapse>.small-12{width:100%}@media screen and (min-width: 25em){.small-margin-collapse>.smedium-1{width:8.33333%}.small-margin-collapse>.smedium-2{width:16.66667%}.small-margin-collapse>.smedium-3{width:25%}.small-margin-collapse>.smedium-4{width:33.33333%}.small-margin-collapse>.smedium-5{width:41.66667%}.small-margin-collapse>.smedium-6{width:50%}.small-margin-collapse>.smedium-7{width:58.33333%}.small-margin-collapse>.smedium-8{width:66.66667%}.small-margin-collapse>.smedium-9{width:75%}.small-margin-collapse>.smedium-10{width:83.33333%}.small-margin-collapse>.smedium-11{width:91.66667%}.small-margin-collapse>.smedium-12{width:100%}}@media print, screen and (min-width: 40em){.small-margin-collapse>.medium-1{width:8.33333%}.small-margin-collapse>.medium-2{width:16.66667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.33333%}.small-margin-collapse>.medium-5{width:41.66667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.33333%}.small-margin-collapse>.medium-8{width:66.66667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.33333%}.small-margin-collapse>.medium-11{width:91.66667%}.small-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.small-margin-collapse>.large-1{width:8.33333%}.small-margin-collapse>.large-2{width:16.66667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.33333%}.small-margin-collapse>.large-5{width:41.66667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.33333%}.small-margin-collapse>.large-8{width:66.66667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.33333%}.small-margin-collapse>.large-11{width:91.66667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-right:0;margin-left:0}.small-padding-collapse>.cell{padding-right:0;padding-left:0}@media screen and (min-width: 25em){.smedium-margin-collapse{margin-right:0;margin-left:0}.smedium-margin-collapse>.cell{margin-right:0;margin-left:0}}@media screen and (min-width: 25em){.smedium-margin-collapse>.small-1{width:8.33333%}.smedium-margin-collapse>.small-2{width:16.66667%}.smedium-margin-collapse>.small-3{width:25%}.smedium-margin-collapse>.small-4{width:33.33333%}.smedium-margin-collapse>.small-5{width:41.66667%}.smedium-margin-collapse>.small-6{width:50%}.smedium-margin-collapse>.small-7{width:58.33333%}.smedium-margin-collapse>.small-8{width:66.66667%}.smedium-margin-collapse>.small-9{width:75%}.smedium-margin-collapse>.small-10{width:83.33333%}.smedium-margin-collapse>.small-11{width:91.66667%}.smedium-margin-collapse>.small-12{width:100%}}@media screen and (min-width: 25em){.smedium-margin-collapse>.smedium-1{width:8.33333%}.smedium-margin-collapse>.smedium-2{width:16.66667%}.smedium-margin-collapse>.smedium-3{width:25%}.smedium-margin-collapse>.smedium-4{width:33.33333%}.smedium-margin-collapse>.smedium-5{width:41.66667%}.smedium-margin-collapse>.smedium-6{width:50%}.smedium-margin-collapse>.smedium-7{width:58.33333%}.smedium-margin-collapse>.smedium-8{width:66.66667%}.smedium-margin-collapse>.smedium-9{width:75%}.smedium-margin-collapse>.smedium-10{width:83.33333%}.smedium-margin-collapse>.smedium-11{width:91.66667%}.smedium-margin-collapse>.smedium-12{width:100%}}@media screen and (min-width: 25em){.smedium-margin-collapse>.medium-1{width:8.33333%}.smedium-margin-collapse>.medium-2{width:16.66667%}.smedium-margin-collapse>.medium-3{width:25%}.smedium-margin-collapse>.medium-4{width:33.33333%}.smedium-margin-collapse>.medium-5{width:41.66667%}.smedium-margin-collapse>.medium-6{width:50%}.smedium-margin-collapse>.medium-7{width:58.33333%}.smedium-margin-collapse>.medium-8{width:66.66667%}.smedium-margin-collapse>.medium-9{width:75%}.smedium-margin-collapse>.medium-10{width:83.33333%}.smedium-margin-collapse>.medium-11{width:91.66667%}.smedium-margin-collapse>.medium-12{width:100%}}@media screen and (min-width: 25em){.smedium-margin-collapse>.large-1{width:8.33333%}.smedium-margin-collapse>.large-2{width:16.66667%}.smedium-margin-collapse>.large-3{width:25%}.smedium-margin-collapse>.large-4{width:33.33333%}.smedium-margin-collapse>.large-5{width:41.66667%}.smedium-margin-collapse>.large-6{width:50%}.smedium-margin-collapse>.large-7{width:58.33333%}.smedium-margin-collapse>.large-8{width:66.66667%}.smedium-margin-collapse>.large-9{width:75%}.smedium-margin-collapse>.large-10{width:83.33333%}.smedium-margin-collapse>.large-11{width:91.66667%}.smedium-margin-collapse>.large-12{width:100%}}@media screen and (min-width: 25em){.smedium-padding-collapse{margin-right:0;margin-left:0}.smedium-padding-collapse>.cell{padding-right:0;padding-left:0}}@media print, screen and (min-width: 40em){.medium-margin-collapse{margin-right:0;margin-left:0}.medium-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print, screen and (min-width: 40em){.medium-margin-collapse>.small-1{width:8.33333%}.medium-margin-collapse>.small-2{width:16.66667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.33333%}.medium-margin-collapse>.small-5{width:41.66667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.33333%}.medium-margin-collapse>.small-8{width:66.66667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.33333%}.medium-margin-collapse>.small-11{width:91.66667%}.medium-margin-collapse>.small-12{width:100%}}@media screen and (min-width: 25em){.medium-margin-collapse>.smedium-1{width:8.33333%}.medium-margin-collapse>.smedium-2{width:16.66667%}.medium-margin-collapse>.smedium-3{width:25%}.medium-margin-collapse>.smedium-4{width:33.33333%}.medium-margin-collapse>.smedium-5{width:41.66667%}.medium-margin-collapse>.smedium-6{width:50%}.medium-margin-collapse>.smedium-7{width:58.33333%}.medium-margin-collapse>.smedium-8{width:66.66667%}.medium-margin-collapse>.smedium-9{width:75%}.medium-margin-collapse>.smedium-10{width:83.33333%}.medium-margin-collapse>.smedium-11{width:91.66667%}.medium-margin-collapse>.smedium-12{width:100%}}@media print, screen and (min-width: 40em){.medium-margin-collapse>.medium-1{width:8.33333%}.medium-margin-collapse>.medium-2{width:16.66667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.33333%}.medium-margin-collapse>.medium-5{width:41.66667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.33333%}.medium-margin-collapse>.medium-8{width:66.66667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.33333%}.medium-margin-collapse>.medium-11{width:91.66667%}.medium-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.medium-margin-collapse>.large-1{width:8.33333%}.medium-margin-collapse>.large-2{width:16.66667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.33333%}.medium-margin-collapse>.large-5{width:41.66667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.33333%}.medium-margin-collapse>.large-8{width:66.66667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.33333%}.medium-margin-collapse>.large-11{width:91.66667%}.medium-margin-collapse>.large-12{width:100%}}@media print, screen and (min-width: 40em){.medium-padding-collapse{margin-right:0;margin-left:0}.medium-padding-collapse>.cell{padding-right:0;padding-left:0}}@media print, screen and (min-width: 64em){.large-margin-collapse{margin-right:0;margin-left:0}.large-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print, screen and (min-width: 64em){.large-margin-collapse>.small-1{width:8.33333%}.large-margin-collapse>.small-2{width:16.66667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.33333%}.large-margin-collapse>.small-5{width:41.66667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.33333%}.large-margin-collapse>.small-8{width:66.66667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.33333%}.large-margin-collapse>.small-11{width:91.66667%}.large-margin-collapse>.small-12{width:100%}}@media screen and (min-width: 25em){.large-margin-collapse>.smedium-1{width:8.33333%}.large-margin-collapse>.smedium-2{width:16.66667%}.large-margin-collapse>.smedium-3{width:25%}.large-margin-collapse>.smedium-4{width:33.33333%}.large-margin-collapse>.smedium-5{width:41.66667%}.large-margin-collapse>.smedium-6{width:50%}.large-margin-collapse>.smedium-7{width:58.33333%}.large-margin-collapse>.smedium-8{width:66.66667%}.large-margin-collapse>.smedium-9{width:75%}.large-margin-collapse>.smedium-10{width:83.33333%}.large-margin-collapse>.smedium-11{width:91.66667%}.large-margin-collapse>.smedium-12{width:100%}}@media print, screen and (min-width: 64em){.large-margin-collapse>.medium-1{width:8.33333%}.large-margin-collapse>.medium-2{width:16.66667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.33333%}.large-margin-collapse>.medium-5{width:41.66667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.33333%}.large-margin-collapse>.medium-8{width:66.66667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.33333%}.large-margin-collapse>.medium-11{width:91.66667%}.large-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.large-margin-collapse>.large-1{width:8.33333%}.large-margin-collapse>.large-2{width:16.66667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.33333%}.large-margin-collapse>.large-5{width:41.66667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.33333%}.large-margin-collapse>.large-8{width:66.66667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.33333%}.large-margin-collapse>.large-11{width:91.66667%}.large-margin-collapse>.large-12{width:100%}}@media print, screen and (min-width: 64em){.large-padding-collapse{margin-right:0;margin-left:0}.large-padding-collapse>.cell{padding-right:0;padding-left:0}}.small-offset-0{margin-left:0%}.grid-margin-x>.small-offset-0{margin-left:calc(0% + .625rem)}.small-offset-1{margin-left:8.33333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.33333% + .625rem)}.small-offset-2{margin-left:16.66667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.66667% + .625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .625rem)}.small-offset-4{margin-left:33.33333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.33333% + .625rem)}.small-offset-5{margin-left:41.66667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.66667% + .625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .625rem)}.small-offset-7{margin-left:58.33333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.33333% + .625rem)}.small-offset-8{margin-left:66.66667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.66667% + .625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .625rem)}.small-offset-10{margin-left:83.33333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.33333% + .625rem)}.small-offset-11{margin-left:91.66667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.66667% + .625rem)}@media screen and (min-width: 25em){.smedium-offset-0{margin-left:0%}.grid-margin-x>.smedium-offset-0{margin-left:calc(0% + .625rem)}.smedium-offset-1{margin-left:8.33333%}.grid-margin-x>.smedium-offset-1{margin-left:calc(8.33333% + .625rem)}.smedium-offset-2{margin-left:16.66667%}.grid-margin-x>.smedium-offset-2{margin-left:calc(16.66667% + .625rem)}.smedium-offset-3{margin-left:25%}.grid-margin-x>.smedium-offset-3{margin-left:calc(25% + .625rem)}.smedium-offset-4{margin-left:33.33333%}.grid-margin-x>.smedium-offset-4{margin-left:calc(33.33333% + .625rem)}.smedium-offset-5{margin-left:41.66667%}.grid-margin-x>.smedium-offset-5{margin-left:calc(41.66667% + .625rem)}.smedium-offset-6{margin-left:50%}.grid-margin-x>.smedium-offset-6{margin-left:calc(50% + .625rem)}.smedium-offset-7{margin-left:58.33333%}.grid-margin-x>.smedium-offset-7{margin-left:calc(58.33333% + .625rem)}.smedium-offset-8{margin-left:66.66667%}.grid-margin-x>.smedium-offset-8{margin-left:calc(66.66667% + .625rem)}.smedium-offset-9{margin-left:75%}.grid-margin-x>.smedium-offset-9{margin-left:calc(75% + .625rem)}.smedium-offset-10{margin-left:83.33333%}.grid-margin-x>.smedium-offset-10{margin-left:calc(83.33333% + .625rem)}.smedium-offset-11{margin-left:91.66667%}.grid-margin-x>.smedium-offset-11{margin-left:calc(91.66667% + .625rem)}}@media print, screen and (min-width: 40em){.medium-offset-0{margin-left:0%}.grid-margin-x>.medium-offset-0{margin-left:calc(0% + .9375rem)}.medium-offset-1{margin-left:8.33333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.33333% + .9375rem)}.medium-offset-2{margin-left:16.66667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.66667% + .9375rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .9375rem)}.medium-offset-4{margin-left:33.33333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.33333% + .9375rem)}.medium-offset-5{margin-left:41.66667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.66667% + .9375rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .9375rem)}.medium-offset-7{margin-left:58.33333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.33333% + .9375rem)}.medium-offset-8{margin-left:66.66667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.66667% + .9375rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .9375rem)}.medium-offset-10{margin-left:83.33333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.33333% + .9375rem)}.medium-offset-11{margin-left:91.66667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.66667% + .9375rem)}}@media print, screen and (min-width: 64em){.large-offset-0{margin-left:0%}.grid-margin-x>.large-offset-0{margin-left:calc(0% + .9375rem)}.large-offset-1{margin-left:8.33333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.33333% + .9375rem)}.large-offset-2{margin-left:16.66667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.66667% + .9375rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .9375rem)}.large-offset-4{margin-left:33.33333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.33333% + .9375rem)}.large-offset-5{margin-left:41.66667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.66667% + .9375rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .9375rem)}.large-offset-7{margin-left:58.33333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.33333% + .9375rem)}.large-offset-8{margin-left:66.66667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.66667% + .9375rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .9375rem)}.large-offset-10{margin-left:83.33333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.33333% + .9375rem)}.large-offset-11{margin-left:91.66667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.66667% + .9375rem)}}.grid-y{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto{height:auto}.grid-y>.shrink{height:auto}.grid-y>.small-shrink,.grid-y>.small-full,.grid-y>.small-1,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}@media screen and (min-width: 25em){.grid-y>.smedium-shrink,.grid-y>.smedium-full,.grid-y>.smedium-1,.grid-y>.smedium-2,.grid-y>.smedium-3,.grid-y>.smedium-4,.grid-y>.smedium-5,.grid-y>.smedium-6,.grid-y>.smedium-7,.grid-y>.smedium-8,.grid-y>.smedium-9,.grid-y>.smedium-10,.grid-y>.smedium-11,.grid-y>.smedium-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print, screen and (min-width: 40em){.grid-y>.medium-shrink,.grid-y>.medium-full,.grid-y>.medium-1,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}@media print, screen and (min-width: 64em){.grid-y>.large-shrink,.grid-y>.large-full,.grid-y>.large-1,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}}.grid-y>.small-1,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.small-1{height:8.33333%}.grid-y>.small-2{height:16.66667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.33333%}.grid-y>.small-5{height:41.66667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.33333%}.grid-y>.small-8{height:66.66667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.33333%}.grid-y>.small-11{height:91.66667%}.grid-y>.small-12{height:100%}@media screen and (min-width: 25em){.grid-y>.smedium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;height:auto}.grid-y>.smedium-shrink,.grid-y>.smedium-1,.grid-y>.smedium-2,.grid-y>.smedium-3,.grid-y>.smedium-4,.grid-y>.smedium-5,.grid-y>.smedium-6,.grid-y>.smedium-7,.grid-y>.smedium-8,.grid-y>.smedium-9,.grid-y>.smedium-10,.grid-y>.smedium-11,.grid-y>.smedium-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.smedium-shrink{height:auto}.grid-y>.smedium-1{height:8.33333%}.grid-y>.smedium-2{height:16.66667%}.grid-y>.smedium-3{height:25%}.grid-y>.smedium-4{height:33.33333%}.grid-y>.smedium-5{height:41.66667%}.grid-y>.smedium-6{height:50%}.grid-y>.smedium-7{height:58.33333%}.grid-y>.smedium-8{height:66.66667%}.grid-y>.smedium-9{height:75%}.grid-y>.smedium-10{height:83.33333%}.grid-y>.smedium-11{height:91.66667%}.grid-y>.smedium-12{height:100%}}@media print, screen and (min-width: 40em){.grid-y>.medium-auto{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;height:auto}.grid-y>.medium-shrink,.grid-y>.medium-1,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.33333%}.grid-y>.medium-2{height:16.66667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.33333%}.grid-y>.medium-5{height:41.66667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.33333%}.grid-y>.medium-8{height:66.66667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.33333%}.grid-y>.medium-11{height:91.66667%}.grid-y>.medium-12{height:100%}}@media print, screen and (min-width: 64em){.grid-y>.large-auto{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;height:auto}.grid-y>.large-shrink,.grid-y>.large-1,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.33333%}.grid-y>.large-2{height:16.66667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.33333%}.grid-y>.large-5{height:41.66667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.33333%}.grid-y>.large-8{height:66.66667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.33333%}.grid-y>.large-11{height:91.66667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-top:-.625rem;margin-bottom:-.625rem}@media print, screen and (min-width: 40em){.grid-padding-y .grid-padding-y{margin-top:-.9375rem;margin-bottom:-.9375rem}}.grid-padding-y>.cell{padding-top:.625rem;padding-bottom:.625rem}@media print, screen and (min-width: 40em){.grid-padding-y>.cell{padding-top:.9375rem;padding-bottom:.9375rem}}.grid-margin-y{margin-top:-.625rem;margin-bottom:-.625rem}@media print, screen and (min-width: 40em){.grid-margin-y{margin-top:-.9375rem;margin-bottom:-.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-top:.625rem;margin-bottom:.625rem}@media print, screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-top:.9375rem;margin-bottom:.9375rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media screen and (min-width: 25em){.grid-margin-y>.smedium-auto{height:auto}.grid-margin-y>.smedium-shrink{height:auto}.grid-margin-y>.smedium-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.smedium-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.smedium-3{height:calc(25% - 1.25rem)}.grid-margin-y>.smedium-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.smedium-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.smedium-6{height:calc(50% - 1.25rem)}.grid-margin-y>.smedium-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.smedium-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.smedium-9{height:calc(75% - 1.25rem)}.grid-margin-y>.smedium-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.smedium-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.smedium-12{height:calc(100% - 1.25rem)}}@media print, screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame{overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{overflow-y:auto;max-height:100%;min-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{max-height:100%;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}@media screen and (min-width: 25em){.smedium-grid-frame{overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .smedium-grid-frame{width:100%}.smedium-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.smedium-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.smedium-cell-block-container>.grid-x{max-height:100%;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.smedium-cell-block-y{overflow-y:auto;max-height:100%;min-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print, screen and (min-width: 40em){.medium-grid-frame{overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{max-height:100%;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.medium-cell-block-y{overflow-y:auto;max-height:100%;min-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print, screen and (min-width: 64em){.large-grid-frame{overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{max-height:100%;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.large-cell-block-y{overflow-y:auto;max-height:100%;min-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{width:auto;overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh}@media screen and (min-width: 25em){.grid-y.smedium-grid-frame{width:auto;overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh}}@media print, screen and (min-width: 40em){.grid-y.medium-grid-frame{width:auto;overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh}}@media print, screen and (min-width: 64em){.grid-y.large-grid-frame{width:auto;overflow:hidden;position:relative;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;height:100vh}}.cell .grid-y.grid-frame{height:100%}@media screen and (min-width: 25em){.cell .grid-y.smedium-grid-frame{height:100%}}@media print, screen and (min-width: 40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print, screen and (min-width: 64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-top:-.625rem;margin-bottom:-.625rem}@media print, screen and (min-width: 40em){.grid-margin-y{margin-top:-.9375rem;margin-bottom:-.9375rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-top:.625rem;margin-bottom:.625rem}@media print, screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-top:.9375rem;margin-bottom:.9375rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media screen and (min-width: 25em){.grid-margin-y>.smedium-auto{height:auto}.grid-margin-y>.smedium-shrink{height:auto}.grid-margin-y>.smedium-1{height:calc(8.33333% - 1.25rem)}.grid-margin-y>.smedium-2{height:calc(16.66667% - 1.25rem)}.grid-margin-y>.smedium-3{height:calc(25% - 1.25rem)}.grid-margin-y>.smedium-4{height:calc(33.33333% - 1.25rem)}.grid-margin-y>.smedium-5{height:calc(41.66667% - 1.25rem)}.grid-margin-y>.smedium-6{height:calc(50% - 1.25rem)}.grid-margin-y>.smedium-7{height:calc(58.33333% - 1.25rem)}.grid-margin-y>.smedium-8{height:calc(66.66667% - 1.25rem)}.grid-margin-y>.smedium-9{height:calc(75% - 1.25rem)}.grid-margin-y>.smedium-10{height:calc(83.33333% - 1.25rem)}.grid-margin-y>.smedium-11{height:calc(91.66667% - 1.25rem)}.grid-margin-y>.smedium-12{height:calc(100% - 1.25rem)}}@media print, screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.33333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.66667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.33333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.66667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.33333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.66667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.33333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.66667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media screen and (min-width: 25em){.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}}@media print, screen and (min-width: 40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media screen and (min-width: 25em){.grid-margin-y.smedium-grid-frame{height:calc(100vh + 1.25rem)}}@media print, screen and (min-width: 40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}.button{display:inline-block;vertical-align:middle;margin:0 0 1rem 0;padding:0.85em 1em;border:1px solid transparent;border-radius:0;-webkit-transition:background-color 0.25s ease-out,color 0.25s ease-out;transition:background-color 0.25s ease-out,color 0.25s ease-out;font-family:inherit;font-size:0.9rem;-webkit-appearance:none;line-height:1;text-align:center;cursor:pointer}[data-whatinput='mouse'] .button{outline:0}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-right:0;margin-left:0}.button,.button.disabled,.button[disabled],.button.disabled:hover,.button[disabled]:hover,.button.disabled:focus,.button[disabled]:focus{background-color:#1779ba;color:#fefefe}.button:hover,.button:focus{background-color:#14679e;color:#fefefe}.button.primary,.button.primary.disabled,.button.primary[disabled],.button.primary.disabled:hover,.button.primary[disabled]:hover,.button.primary.disabled:focus,.button.primary[disabled]:focus{background-color:#1779ba;color:#fefefe}.button.primary:hover,.button.primary:focus{background-color:#126195;color:#fefefe}.button.secondary,.button.secondary.disabled,.button.secondary[disabled],.button.secondary.disabled:hover,.button.secondary[disabled]:hover,.button.secondary.disabled:focus,.button.secondary[disabled]:focus{background-color:#767676;color:#fefefe}.button.secondary:hover,.button.secondary:focus{background-color:#5e5e5e;color:#fefefe}.button.success,.button.success.disabled,.button.success[disabled],.button.success.disabled:hover,.button.success[disabled]:hover,.button.success.disabled:focus,.button.success[disabled]:focus{background-color:#3adb76;color:#0a0a0a}.button.success:hover,.button.success:focus{background-color:#22bb5b;color:#0a0a0a}.button.warning,.button.warning.disabled,.button.warning[disabled],.button.warning.disabled:hover,.button.warning[disabled]:hover,.button.warning.disabled:focus,.button.warning[disabled]:focus{background-color:#ffae00;color:#0a0a0a}.button.warning:hover,.button.warning:focus{background-color:#cc8b00;color:#0a0a0a}.button.alert,.button.alert.disabled,.button.alert[disabled],.button.alert.disabled:hover,.button.alert[disabled]:hover,.button.alert.disabled:focus,.button.alert[disabled]:focus{background-color:#cc4b37;color:#fefefe}.button.alert:hover,.button.alert:focus{background-color:#a53b2a;color:#fefefe}.button.hollow,.button.hollow:hover,.button.hollow:focus,.button.hollow.disabled,.button.hollow.disabled:hover,.button.hollow.disabled:focus,.button.hollow[disabled],.button.hollow[disabled]:hover,.button.hollow[disabled]:focus{background-color:transparent}.button.hollow,.button.hollow.disabled,.button.hollow[disabled],.button.hollow.disabled:hover,.button.hollow[disabled]:hover,.button.hollow.disabled:focus,.button.hollow[disabled]:focus{border:1px solid #1779ba;color:#1779ba}.button.hollow:hover,.button.hollow:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary,.button.hollow.primary.disabled,.button.hollow.primary[disabled],.button.hollow.primary.disabled:hover,.button.hollow.primary[disabled]:hover,.button.hollow.primary.disabled:focus,.button.hollow.primary[disabled]:focus{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:hover,.button.hollow.primary:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary,.button.hollow.secondary.disabled,.button.hollow.secondary[disabled],.button.hollow.secondary.disabled:hover,.button.hollow.secondary[disabled]:hover,.button.hollow.secondary.disabled:focus,.button.hollow.secondary[disabled]:focus{border:1px solid #767676;color:#767676}.button.hollow.secondary:hover,.button.hollow.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success,.button.hollow.success.disabled,.button.hollow.success[disabled],.button.hollow.success.disabled:hover,.button.hollow.success[disabled]:hover,.button.hollow.success.disabled:focus,.button.hollow.success[disabled]:focus{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:hover,.button.hollow.success:focus{border-color:#157539;color:#157539}.button.hollow.warning,.button.hollow.warning.disabled,.button.hollow.warning[disabled],.button.hollow.warning.disabled:hover,.button.hollow.warning[disabled]:hover,.button.hollow.warning.disabled:focus,.button.hollow.warning[disabled]:focus{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:hover,.button.hollow.warning:focus{border-color:#805700;color:#805700}.button.hollow.alert,.button.hollow.alert.disabled,.button.hollow.alert[disabled],.button.hollow.alert.disabled:hover,.button.hollow.alert[disabled]:hover,.button.hollow.alert.disabled:focus,.button.hollow.alert[disabled]:focus{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:hover,.button.hollow.alert:focus{border-color:#67251a;color:#67251a}.button.clear,.button.clear:hover,.button.clear:focus,.button.clear.disabled,.button.clear.disabled:hover,.button.clear.disabled:focus,.button.clear[disabled],.button.clear[disabled]:hover,.button.clear[disabled]:focus{border-color:transparent;background-color:transparent}.button.clear,.button.clear.disabled,.button.clear[disabled],.button.clear.disabled:hover,.button.clear[disabled]:hover,.button.clear.disabled:focus,.button.clear[disabled]:focus{color:#1779ba}.button.clear:hover,.button.clear:focus{color:#0c3d5d}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary[disabled],.button.clear.primary.disabled:hover,.button.clear.primary[disabled]:hover,.button.clear.primary.disabled:focus,.button.clear.primary[disabled]:focus{color:#1779ba}.button.clear.primary:hover,.button.clear.primary:focus{color:#0c3d5d}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary[disabled],.button.clear.secondary.disabled:hover,.button.clear.secondary[disabled]:hover,.button.clear.secondary.disabled:focus,.button.clear.secondary[disabled]:focus{color:#767676}.button.clear.secondary:hover,.button.clear.secondary:focus{color:#3b3b3b}.button.clear.success,.button.clear.success.disabled,.button.clear.success[disabled],.button.clear.success.disabled:hover,.button.clear.success[disabled]:hover,.button.clear.success.disabled:focus,.button.clear.success[disabled]:focus{color:#3adb76}.button.clear.success:hover,.button.clear.success:focus{color:#157539}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning[disabled],.button.clear.warning.disabled:hover,.button.clear.warning[disabled]:hover,.button.clear.warning.disabled:focus,.button.clear.warning[disabled]:focus{color:#ffae00}.button.clear.warning:hover,.button.clear.warning:focus{color:#805700}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert[disabled],.button.clear.alert.disabled:hover,.button.clear.alert[disabled]:hover,.button.clear.alert.disabled:focus,.button.clear.alert[disabled]:focus{color:#cc4b37}.button.clear.alert:hover,.button.clear.alert:focus{color:#67251a}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.dropdown::after{display:block;width:0;height:0;border:inset .4em;content:'';border-bottom-width:0;border-top-style:solid;border-color:#fefefe transparent transparent;position:relative;top:0.4em;display:inline-block;float:right;margin-left:1em}.button.dropdown.hollow::after,.button.dropdown.clear::after{border-top-color:#1779ba}.button.dropdown.hollow.primary::after,.button.dropdown.clear.primary::after{border-top-color:#1779ba}.button.dropdown.hollow.secondary::after,.button.dropdown.clear.secondary::after{border-top-color:#767676}.button.dropdown.hollow.success::after,.button.dropdown.clear.success::after{border-top-color:#3adb76}.button.dropdown.hollow.warning::after,.button.dropdown.clear.warning::after{border-top-color:#ffae00}.button.dropdown.hollow.alert::after,.button.dropdown.clear.alert::after{border-top-color:#cc4b37}.button.arrow-only::after{top:-0.1em;float:none;margin-left:0}a.button:hover,a.button:focus{text-decoration:none}.button-group{margin-bottom:1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.button-group::before,.button-group::after{display:table;content:' ';-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.button-group::after{clear:both}.button-group::before,.button-group::after{display:none}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:0.9rem;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;margin-right:0}.button-group.primary .button,.button-group.primary .button.disabled,.button-group.primary .button[disabled],.button-group.primary .button.disabled:hover,.button-group.primary .button[disabled]:hover,.button-group.primary .button.disabled:focus,.button-group.primary .button[disabled]:focus{background-color:#1779ba;color:#fefefe}.button-group.primary .button:hover,.button-group.primary .button:focus{background-color:#126195;color:#fefefe}.button-group.secondary .button,.button-group.secondary .button.disabled,.button-group.secondary .button[disabled],.button-group.secondary .button.disabled:hover,.button-group.secondary .button[disabled]:hover,.button-group.secondary .button.disabled:focus,.button-group.secondary .button[disabled]:focus{background-color:#767676;color:#fefefe}.button-group.secondary .button:hover,.button-group.secondary .button:focus{background-color:#5e5e5e;color:#fefefe}.button-group.success .button,.button-group.success .button.disabled,.button-group.success .button[disabled],.button-group.success .button.disabled:hover,.button-group.success .button[disabled]:hover,.button-group.success .button.disabled:focus,.button-group.success .button[disabled]:focus{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:hover,.button-group.success .button:focus{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button,.button-group.warning .button.disabled,.button-group.warning .button[disabled],.button-group.warning .button.disabled:hover,.button-group.warning .button[disabled]:hover,.button-group.warning .button.disabled:focus,.button-group.warning .button[disabled]:focus{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:hover,.button-group.warning .button:focus{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button,.button-group.alert .button.disabled,.button-group.alert .button[disabled],.button-group.alert .button.disabled:hover,.button-group.alert .button[disabled]:hover,.button-group.alert .button.disabled:focus,.button-group.alert .button[disabled]:focus{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:hover,.button-group.alert .button:focus{background-color:#a53b2a;color:#fefefe}.button-group.hollow .button,.button-group.hollow .button:hover,.button-group.hollow .button:focus,.button-group.hollow .button.disabled,.button-group.hollow .button.disabled:hover,.button-group.hollow .button.disabled:focus,.button-group.hollow .button[disabled],.button-group.hollow .button[disabled]:hover,.button-group.hollow .button[disabled]:focus{background-color:transparent}.button-group.hollow .button,.button-group.hollow .button.disabled,.button-group.hollow .button[disabled],.button-group.hollow .button.disabled:hover,.button-group.hollow .button[disabled]:hover,.button-group.hollow .button.disabled:focus,.button-group.hollow .button[disabled]:focus{border:1px solid #1779ba;color:#1779ba}.button-group.hollow .button:hover,.button-group.hollow .button:focus{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow.primary .button,.button-group.hollow.primary .button.disabled,.button-group.hollow.primary .button[disabled],.button-group.hollow.primary .button.disabled:hover,.button-group.hollow.primary .button[disabled]:hover,.button-group.hollow.primary .button.disabled:focus,.button-group.hollow.primary .button[disabled]:focus,.button-group.hollow .button.primary,.button-group.hollow .button.primary.disabled,.button-group.hollow .button.primary[disabled],.button-group.hollow .button.primary.disabled:hover,.button-group.hollow .button.primary[disabled]:hover,.button-group.hollow .button.primary.disabled:focus,.button-group.hollow .button.primary[disabled]:focus{border:1px solid #1779ba;color:#1779ba}.button-group.hollow.primary .button:hover,.button-group.hollow.primary .button:focus,.button-group.hollow .button.primary:hover,.button-group.hollow .button.primary:focus{border-color:#0c3d5d;color:#0c3d5d}.button-group.hollow.secondary .button,.button-group.hollow.secondary .button.disabled,.button-group.hollow.secondary .button[disabled],.button-group.hollow.secondary .button.disabled:hover,.button-group.hollow.secondary .button[disabled]:hover,.button-group.hollow.secondary .button.disabled:focus,.button-group.hollow.secondary .button[disabled]:focus,.button-group.hollow .button.secondary,.button-group.hollow .button.secondary.disabled,.button-group.hollow .button.secondary[disabled],.button-group.hollow .button.secondary.disabled:hover,.button-group.hollow .button.secondary[disabled]:hover,.button-group.hollow .button.secondary.disabled:focus,.button-group.hollow .button.secondary[disabled]:focus{border:1px solid #767676;color:#767676}.button-group.hollow.secondary .button:hover,.button-group.hollow.secondary .button:focus,.button-group.hollow .button.secondary:hover,.button-group.hollow .button.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button-group.hollow.success .button,.button-group.hollow.success .button.disabled,.button-group.hollow.success .button[disabled],.button-group.hollow.success .button.disabled:hover,.button-group.hollow.success .button[disabled]:hover,.button-group.hollow.success .button.disabled:focus,.button-group.hollow.success .button[disabled]:focus,.button-group.hollow .button.success,.button-group.hollow .button.success.disabled,.button-group.hollow .button.success[disabled],.button-group.hollow .button.success.disabled:hover,.button-group.hollow .button.success[disabled]:hover,.button-group.hollow .button.success.disabled:focus,.button-group.hollow .button.success[disabled]:focus{border:1px solid #3adb76;color:#3adb76}.button-group.hollow.success .button:hover,.button-group.hollow.success .button:focus,.button-group.hollow .button.success:hover,.button-group.hollow .button.success:focus{border-color:#157539;color:#157539}.button-group.hollow.warning .button,.button-group.hollow.warning .button.disabled,.button-group.hollow.warning .button[disabled],.button-group.hollow.warning .button.disabled:hover,.button-group.hollow.warning .button[disabled]:hover,.button-group.hollow.warning .button.disabled:focus,.button-group.hollow.warning .button[disabled]:focus,.button-group.hollow .button.warning,.button-group.hollow .button.warning.disabled,.button-group.hollow .button.warning[disabled],.button-group.hollow .button.warning.disabled:hover,.button-group.hollow .button.warning[disabled]:hover,.button-group.hollow .button.warning.disabled:focus,.button-group.hollow .button.warning[disabled]:focus{border:1px solid #ffae00;color:#ffae00}.button-group.hollow.warning .button:hover,.button-group.hollow.warning .button:focus,.button-group.hollow .button.warning:hover,.button-group.hollow .button.warning:focus{border-color:#805700;color:#805700}.button-group.hollow.alert .button,.button-group.hollow.alert .button.disabled,.button-group.hollow.alert .button[disabled],.button-group.hollow.alert .button.disabled:hover,.button-group.hollow.alert .button[disabled]:hover,.button-group.hollow.alert .button.disabled:focus,.button-group.hollow.alert .button[disabled]:focus,.button-group.hollow .button.alert,.button-group.hollow .button.alert.disabled,.button-group.hollow .button.alert[disabled],.button-group.hollow .button.alert.disabled:hover,.button-group.hollow .button.alert[disabled]:hover,.button-group.hollow .button.alert.disabled:focus,.button-group.hollow .button.alert[disabled]:focus{border:1px solid #cc4b37;color:#cc4b37}.button-group.hollow.alert .button:hover,.button-group.hollow.alert .button:focus,.button-group.hollow .button.alert:hover,.button-group.hollow .button.alert:focus{border-color:#67251a;color:#67251a}.button-group.clear .button,.button-group.clear .button:hover,.button-group.clear .button:focus,.button-group.clear .button.disabled,.button-group.clear .button.disabled:hover,.button-group.clear .button.disabled:focus,.button-group.clear .button[disabled],.button-group.clear .button[disabled]:hover,.button-group.clear .button[disabled]:focus{border-color:transparent;background-color:transparent}.button-group.clear .button,.button-group.clear .button.disabled,.button-group.clear .button[disabled],.button-group.clear .button.disabled:hover,.button-group.clear .button[disabled]:hover,.button-group.clear .button.disabled:focus,.button-group.clear .button[disabled]:focus{color:#1779ba}.button-group.clear .button:hover,.button-group.clear .button:focus{color:#0c3d5d}.button-group.clear.primary .button,.button-group.clear.primary .button.disabled,.button-group.clear.primary .button[disabled],.button-group.clear.primary .button.disabled:hover,.button-group.clear.primary .button[disabled]:hover,.button-group.clear.primary .button.disabled:focus,.button-group.clear.primary .button[disabled]:focus,.button-group.clear .button.primary,.button-group.clear .button.primary.disabled,.button-group.clear .button.primary[disabled],.button-group.clear .button.primary.disabled:hover,.button-group.clear .button.primary[disabled]:hover,.button-group.clear .button.primary.disabled:focus,.button-group.clear .button.primary[disabled]:focus{color:#1779ba}.button-group.clear.primary .button:hover,.button-group.clear.primary .button:focus,.button-group.clear .button.primary:hover,.button-group.clear .button.primary:focus{color:#0c3d5d}.button-group.clear.secondary .button,.button-group.clear.secondary .button.disabled,.button-group.clear.secondary .button[disabled],.button-group.clear.secondary .button.disabled:hover,.button-group.clear.secondary .button[disabled]:hover,.button-group.clear.secondary .button.disabled:focus,.button-group.clear.secondary .button[disabled]:focus,.button-group.clear .button.secondary,.button-group.clear .button.secondary.disabled,.button-group.clear .button.secondary[disabled],.button-group.clear .button.secondary.disabled:hover,.button-group.clear .button.secondary[disabled]:hover,.button-group.clear .button.secondary.disabled:focus,.button-group.clear .button.secondary[disabled]:focus{color:#767676}.button-group.clear.secondary .button:hover,.button-group.clear.secondary .button:focus,.button-group.clear .button.secondary:hover,.button-group.clear .button.secondary:focus{color:#3b3b3b}.button-group.clear.success .button,.button-group.clear.success .button.disabled,.button-group.clear.success .button[disabled],.button-group.clear.success .button.disabled:hover,.button-group.clear.success .button[disabled]:hover,.button-group.clear.success .button.disabled:focus,.button-group.clear.success .button[disabled]:focus,.button-group.clear .button.success,.button-group.clear .button.success.disabled,.button-group.clear .button.success[disabled],.button-group.clear .button.success.disabled:hover,.button-group.clear .button.success[disabled]:hover,.button-group.clear .button.success.disabled:focus,.button-group.clear .button.success[disabled]:focus{color:#3adb76}.button-group.clear.success .button:hover,.button-group.clear.success .button:focus,.button-group.clear .button.success:hover,.button-group.clear .button.success:focus{color:#157539}.button-group.clear.warning .button,.button-group.clear.warning .button.disabled,.button-group.clear.warning .button[disabled],.button-group.clear.warning .button.disabled:hover,.button-group.clear.warning .button[disabled]:hover,.button-group.clear.warning .button.disabled:focus,.button-group.clear.warning .button[disabled]:focus,.button-group.clear .button.warning,.button-group.clear .button.warning.disabled,.button-group.clear .button.warning[disabled],.button-group.clear .button.warning.disabled:hover,.button-group.clear .button.warning[disabled]:hover,.button-group.clear .button.warning.disabled:focus,.button-group.clear .button.warning[disabled]:focus{color:#ffae00}.button-group.clear.warning .button:hover,.button-group.clear.warning .button:focus,.button-group.clear .button.warning:hover,.button-group.clear .button.warning:focus{color:#805700}.button-group.clear.alert .button,.button-group.clear.alert .button.disabled,.button-group.clear.alert .button[disabled],.button-group.clear.alert .button.disabled:hover,.button-group.clear.alert .button[disabled]:hover,.button-group.clear.alert .button.disabled:focus,.button-group.clear.alert .button[disabled]:focus,.button-group.clear .button.alert,.button-group.clear .button.alert.disabled,.button-group.clear .button.alert[disabled],.button-group.clear .button.alert.disabled:hover,.button-group.clear .button.alert[disabled]:hover,.button-group.clear .button.alert.disabled:focus,.button-group.clear .button.alert[disabled]:focus{color:#cc4b37}.button-group.clear.alert .button:hover,.button-group.clear.alert .button:focus,.button-group.clear .button.alert:hover,.button-group.clear .button.alert:focus{color:#67251a}.button-group.no-gaps .button{margin-right:-.0625rem}.button-group.no-gaps .button+.button{border-left-color:transparent}.button-group.stacked,.button-group.stacked-for-small,.button-group.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-small .button,.button-group.stacked-for-medium .button{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked-for-medium .button:last-child{margin-bottom:0}.button-group.stacked.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked-for-medium.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;margin-right:0}@media print, screen and (min-width: 40em){.button-group.stacked-for-small .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print, screen and (min-width: 64em){.button-group.stacked-for-medium .button{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media print, screen and (max-width: 24.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media print, screen and (max-width: 63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{position:absolute;z-index:10;color:#8a8a8a;cursor:pointer}[data-whatinput='mouse'] .close-button{outline:0}.close-button:hover,.close-button:focus{color:#0a0a0a}.close-button.small{right:0.66rem;top:0.33em;font-size:1.5em;line-height:1}.close-button.medium,.close-button{right:1rem;top:0.5rem;font-size:2em;line-height:1}.label{display:inline-block;padding:0.33333rem 0.5rem;border-radius:0;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;background:#1779ba;color:#fefefe}.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.progress{height:1rem;margin-bottom:1rem;border-radius:0;background-color:#cacaca}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{position:relative;display:block;width:0%;height:100%;background-color:#1779ba}.progress-meter-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);margin:0;font-size:0.75rem;font-weight:bold;color:#fefefe;white-space:nowrap}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;border-radius:0;background-color:#1779ba;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-ms-touch-action:manipulation;touch-action:manipulation}[data-whatinput='mouse'] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.switch{height:2rem;position:relative;margin-bottom:1rem;outline:0;font-size:.875rem;font-weight:bold;color:#fefefe;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{position:absolute;margin-bottom:0;opacity:0}.switch-paddle{position:relative;display:block;width:4rem;height:2rem;border-radius:0;background:#cacaca;-webkit-transition:all 0.25s ease-out;transition:all 0.25s ease-out;font-weight:inherit;color:inherit;cursor:pointer}input+.switch-paddle{margin:0}.switch-paddle::after{position:absolute;top:.25rem;left:.25rem;display:block;width:1.5rem;height:1.5rem;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);border-radius:0;background:#fefefe;-webkit-transition:all 0.25s ease-out;transition:all 0.25s ease-out;content:''}input:checked ~ .switch-paddle{background:#1779ba}input:checked ~ .switch-paddle::after{left:2.25rem}input:disabled ~ .switch-paddle{cursor:not-allowed;opacity:.5}[data-whatinput='mouse'] input:focus ~ .switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle::after{top:.25rem;left:.25rem;width:1rem;height:1rem}.switch.tiny input:checked ~ .switch-paddle::after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle::after{top:.25rem;left:.25rem;width:1.25rem;height:1.25rem}.switch.small input:checked ~ .switch-paddle::after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle::after{top:.25rem;left:.25rem;width:2rem;height:2rem}.switch.large input:checked ~ .switch-paddle::after{left:2.75rem}table{border-collapse:collapse;width:100%;margin-bottom:1rem;border-radius:0}thead,tbody,tfoot{border:1px solid #f1f1f1;background-color:#fefefe}caption{padding:.5rem .625rem .625rem;font-weight:bold}thead{background:#f8f8f8;color:#0a0a0a}tfoot{background:#f1f1f1;color:#0a0a0a}thead tr,tfoot tr{background:transparent}thead th,thead td,tfoot th,tfoot td{padding:.5rem .625rem .625rem;font-weight:bold;text-align:left}tbody th,tbody td{padding:.5rem .625rem .625rem}tbody tr:nth-child(even){border-bottom:0;background-color:#f1f1f1}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{border-bottom:0;border-bottom:1px solid #f1f1f1;background-color:#fefefe}@media print, screen and (max-width: 63.99875em){table.stack thead{display:none}table.stack tfoot{display:none}table.stack tr,table.stack th,table.stack td{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.badge{display:inline-block;min-width:2.1em;padding:.3em;border-radius:50%;font-size:.6rem;text-align:center;background:#1779ba;color:#fefefe}.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{margin:0 0 1rem 0;list-style:none}.breadcrumbs::before,.breadcrumbs::after{display:table;content:' ';-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.breadcrumbs::after{clear:both}.breadcrumbs li{float:left;font-size:.6875rem;color:#0a0a0a;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child)::after{position:relative;margin:0 .75rem;opacity:1;content:"/";color:#cacaca}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.callout{position:relative;margin:0 0 1rem 0;padding:1rem;border:1px solid rgba(10,10,10,0.25);border-radius:0;background-color:#fff;color:#0a0a0a}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding-top:.5rem;padding-right:.5rem;padding-bottom:.5rem;padding-left:.5rem}.callout.large{padding-top:3rem;padding-right:3rem;padding-bottom:3rem;padding-left:3rem}.card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-bottom:1rem;border:1px solid #e6e6e6;border-radius:0;background:#fefefe;-webkit-box-shadow:none;box-shadow:none;overflow:hidden;color:#0a0a0a}.card>:last-child{margin-bottom:0}.card-divider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;padding:1rem;background:#e6e6e6}.card-divider>:last-child{margin-bottom:0}.card-section{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.dropdown-pane{position:absolute;z-index:10;display:none;width:300px;padding:1rem;visibility:hidden;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-size:1rem}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.pagination{margin-left:0;margin-bottom:1rem}.pagination::before,.pagination::after{display:table;content:' ';-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.pagination::after{clear:both}.pagination li{margin-right:.0625rem;border-radius:0;font-size:.875rem;display:none}.pagination li:last-child,.pagination li:first-child{display:inline-block}@media print, screen and (min-width: 40em){.pagination li{display:inline-block}}.pagination a,.pagination button{display:block;padding:.1875rem .625rem;border-radius:0;color:#0a0a0a}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#1779ba;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis::after{padding:.1875rem .625rem;content:'\2026';color:#0a0a0a}.pagination-previous a::before,.pagination-previous.disabled::before{display:inline-block;margin-right:0.5rem;content:"«"}.pagination-next a::after,.pagination-next.disabled::after{display:inline-block;margin-left:0.5rem;content:"»"}.has-tip{position:relative;display:inline-block;border-bottom:dotted 1px #8a8a8a;font-weight:bold;cursor:help}.tooltip{position:absolute;top:calc(100% + .6495rem);z-index:1200;max-width:10rem;padding:.75rem;border-radius:0;background-color:#0a0a0a;font-size:80%;color:#fefefe}.tooltip::before{position:absolute}.tooltip.bottom::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-top-width:0;border-bottom-style:solid;border-color:transparent transparent #0a0a0a;bottom:100%}.tooltip.bottom.align-center::before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-bottom-width:0;border-top-style:solid;border-color:#0a0a0a transparent transparent;top:100%;bottom:auto}.tooltip.top.align-center::before{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.left::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #0a0a0a;left:100%}.tooltip.left.align-center::before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #0a0a0a transparent transparent;right:100%;left:auto}.tooltip.right.align-center::before{bottom:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.align-top::before{bottom:auto;top:10%}.tooltip.align-bottom::before{bottom:10%;top:auto}.tooltip.align-left::before{left:10%;right:auto}.tooltip.align-right::before{left:auto;right:10%}.accordion{margin-left:0;background:#fefefe;list-style-type:none}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child{border-radius:0 0 0 0}.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{position:relative;display:block;padding:1.25rem 1rem;border:1px solid #e6e6e6;border-bottom:0;font-size:.75rem;line-height:1;color:#1779ba}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0 0 0 0}.accordion-title:hover,.accordion-title:focus{background-color:#e6e6e6}.accordion-title::before{position:absolute;top:50%;right:1rem;margin-top:-0.5rem;content:"+"}.is-active>.accordion-title::before{content:"–"}.accordion-content{display:none;padding:1rem;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.media-object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:1rem;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.media-object img{max-width:none}@media print, screen and (max-width: 24.99875em){.media-object.stack-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.media-object-section{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}@media print, screen and (max-width: 24.99875em){.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.stack-for-small .media-object-section img{width:100%}}.media-object-section.main-section{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.orbit{position:relative}.orbit-container{position:relative;height:0;margin:0;list-style:none;overflow:hidden}.orbit-slide{width:100%;position:absolute}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{width:100%;max-width:100%;margin:0}.orbit-caption{position:absolute;bottom:0;width:100%;margin-bottom:0;padding:1rem;background-color:rgba(10,10,10,0.5);color:#fefefe}.orbit-previous,.orbit-next{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10;padding:1rem;color:#fefefe}[data-whatinput='mouse'] .orbit-previous,[data-whatinput='mouse'] .orbit-next{outline:0}.orbit-previous:hover,.orbit-next:hover,.orbit-previous:active,.orbit-next:active,.orbit-previous:focus,.orbit-next:focus{background-color:rgba(10,10,10,0.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput='mouse'] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;border-radius:50%;background-color:#cacaca}.orbit-bullets button:hover{background-color:#8a8a8a}.orbit-bullets button.is-active{background-color:#8a8a8a}.responsive-embed,.flex-video{position:relative;height:0;margin-bottom:1rem;padding-bottom:75%;overflow:hidden}.responsive-embed iframe,.responsive-embed object,.responsive-embed embed,.responsive-embed video,.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.responsive-embed.widescreen,.flex-video.widescreen{padding-bottom:56.25%}.tabs{margin:0;border:1px solid #e6e6e6;background:#fefefe;list-style-type:none}.tabs::before,.tabs::after{display:table;content:' ';-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.tabs::after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:hover,.tabs.primary>li>a:focus{background:#1673b1}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;font-size:.75rem;line-height:1;color:#1779ba}[data-whatinput='mouse'] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected='true']{background:#e6e6e6;color:#1779ba}.tabs-content{border:1px solid #e6e6e6;border-top:0;background:#fefefe;color:#0a0a0a;-webkit-transition:all 0.5s ease;transition:all 0.5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{display:inline-block;max-width:100%;margin-bottom:1rem;border:4px solid #fefefe;border-radius:0;-webkit-box-shadow:0 0 0 1px rgba(10,10,10,0.2);box-shadow:0 0 0 1px rgba(10,10,10,0.2);line-height:0}a.thumbnail{-webkit-transition:-webkit-box-shadow 200ms ease-out;transition:-webkit-box-shadow 200ms ease-out;transition:box-shadow 200ms ease-out;transition:box-shadow 200ms ease-out, -webkit-box-shadow 200ms ease-out}a.thumbnail:hover,a.thumbnail:focus{-webkit-box-shadow:0 0 6px 1px rgba(23,121,186,0.5);box-shadow:0 0 6px 1px rgba(23,121,186,0.5)}a.thumbnail image{-webkit-box-shadow:none;box-shadow:none}.menu{padding:0;margin:0;list-style:none;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}[data-whatinput='mouse'] .menu li{outline:0}.menu a,.menu .button{line-height:1;text-decoration:none;display:block;padding:0.7rem 1rem}.menu input,.menu select,.menu a,.menu button{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.simple{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media screen and (min-width: 25em){.menu.smedium-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.smedium-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.smedium-expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.smedium-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media print, screen and (min-width: 40em){.menu.medium-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.medium-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.medium-expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.medium-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media print, screen and (min-width: 64em){.menu.large-horizontal{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.menu.large-vertical{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.menu.large-expanded li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.large-simple li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.menu.nested{margin-right:0;margin-left:1rem}.menu.icons a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu.icon-top a,.menu.icon-right a,.menu.icon-bottom a,.menu.icon-left a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.menu.icon-left li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-left li a img,.menu.icon-left li a i,.menu.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.menu.icon-right li a img,.menu.icon-right li a i,.menu.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-top li a img,.menu.icon-top li a i,.menu.icon-top li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}.menu.icon-bottom li a img,.menu.icon-bottom li a i,.menu.icon-bottom li a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .is-active>a{background:#1779ba;color:#fefefe}.menu .active>a{background:#1779ba;color:#fefefe}.menu.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.menu.align-right li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-right:1rem;margin-left:0}.menu.align-center li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu.align-center li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.menu .menu-text{padding:0.7rem 1rem;font-weight:bold;line-height:1;color:inherit}.menu-centered>.menu{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.menu-centered>.menu li .submenu li{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#fefefe;-webkit-box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:''}.menu-icon:hover::after{background:#cacaca;-webkit-box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon.dark::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#0a0a0a;-webkit-box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:''}.menu-icon.dark:hover::after{background:#8a8a8a;-webkit-box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.accordion-menu li{width:100%}.accordion-menu a{padding:0.7rem 1rem}.accordion-menu .is-accordion-submenu a{padding:0.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-right:0;margin-left:1rem}.accordion-menu.align-right .nested.is-accordion-submenu{margin-right:1rem;margin-left:0}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;position:absolute;top:50%;margin-top:-3px;right:1rem}.accordion-menu.align-left .is-accordion-submenu-parent>a::after{right:1rem;left:auto}.accordion-menu.align-right .is-accordion-submenu-parent>a::after{right:auto;left:1rem}.accordion-menu .is-accordion-submenu-parent[aria-expanded='true']>a::after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{position:absolute;top:0;right:0;width:40px;height:40px;cursor:pointer}.submenu-toggle::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;top:0;bottom:0;margin:auto}.submenu-toggle[aria-expanded='true']::after{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}.submenu-toggle-text{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block}.is-drilldown.animate-height{-webkit-transition:height 0.5s;transition:height 0.5s}.drilldown a{padding:0.7rem 1rem;background:#fefefe}.drilldown .is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;width:100%;background:#fefefe;-webkit-transition:-webkit-transform 0.15s linear;transition:-webkit-transform 0.15s linear;transition:transform 0.15s linear;transition:transform 0.15s linear, -webkit-transform 0.15s linear}.drilldown .is-drilldown-submenu.is-active{z-index:1;display:block;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.drilldown .is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:0.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-right:0;margin-left:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba;position:absolute;top:50%;margin-top:-6px;right:1rem}.drilldown.align-left .is-drilldown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba;right:1rem;left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;right:auto;left:1rem}.drilldown .js-drilldown-back>a::before{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;display:inline-block;vertical-align:middle;margin-right:0.75rem}.dropdown.menu>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;left:auto;margin-top:-3px}[data-whatinput='mouse'] .dropdown.menu a{outline:0}.dropdown.menu>li>a{padding:0.7rem 1rem}.dropdown.menu>li.is-active>a{background:rgba(0,0,0,0);color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-right:0;margin-left:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a::after{right:14px}.dropdown.menu.vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;right:auto;left:5px}.dropdown.menu.vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}@media screen and (min-width: 25em){.dropdown.menu.smedium-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.smedium-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.smedium-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.smedium-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.smedium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.smedium-vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.smedium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.smedium-vertical>li>a::after{right:14px}.dropdown.menu.smedium-vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;right:auto;left:5px}.dropdown.menu.smedium-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}}@media print, screen and (min-width: 40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a::after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;right:auto;left:5px}.dropdown.menu.medium-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}}@media print, screen and (min-width: 64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a::after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;right:auto;left:5px}.dropdown.menu.large-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;right:0;left:auto}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a::after{position:absolute;top:50%;right:5px;left:auto;margin-top:-6px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{right:100%;left:auto}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{position:absolute;top:0;left:100%;z-index:1;display:none;min-width:200px;border:1px solid #cacaca;background:#fefefe}.dropdown .is-dropdown-submenu a{padding:0.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a::after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;right:auto;left:5px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;-webkit-transition:opacity .5s ease,visibility .5s ease;transition:opacity .5s ease,visibility .5s ease;background:rgba(254,254,254,0.25);opacity:0;visibility:hidden;overflow:hidden}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{position:relative;overflow:hidden}.off-canvas{position:fixed;z-index:12;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease, -webkit-transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6}[data-whatinput='mouse'] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px rgba(10,10,10,0.7);box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas.is-open{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-absolute{position:absolute;z-index:12;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease, -webkit-transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6}[data-whatinput='mouse'] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{-webkit-box-shadow:0 0 10px rgba(10,10,10,0.7);box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas-absolute.is-open{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.position-left{top:0;left:0;height:100%;overflow-y:auto;width:250px;-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-left.has-transition-push{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push{-webkit-box-shadow:inset -13px 0 20px -13px rgba(10,10,10,0.25);box-shadow:inset -13px 0 20px -13px rgba(10,10,10,0.25)}.position-right{top:0;right:0;height:100%;overflow-y:auto;width:250px;-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right{-webkit-transform:translateX(250px);-ms-transform:translateX(250px);transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-right.has-transition-push{-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push{-webkit-box-shadow:inset 13px 0 20px -13px rgba(10,10,10,0.25);box-shadow:inset 13px 0 20px -13px rgba(10,10,10,0.25)}.position-top{top:0;left:0;width:100%;overflow-x:auto;height:250px;-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-top.has-transition-push{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push{-webkit-box-shadow:inset 0 -13px 20px -13px rgba(10,10,10,0.25);box-shadow:inset 0 -13px 20px -13px rgba(10,10,10,0.25)}.position-bottom{bottom:0;left:0;width:100%;overflow-x:auto;height:250px;-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom{-webkit-transform:translateY(250px);-ms-transform:translateY(250px);transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content.is-open-bottom.has-transition-push{-webkit-transform:translateY(-250px);-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push{-webkit-box-shadow:inset 0 13px 20px -13px rgba(10,10,10,0.25);box-shadow:inset 0 13px 20px -13px rgba(10,10,10,0.25)}.off-canvas-content{-webkit-transform:none;-ms-transform:none;transform:none;-webkit-backface-visibility:hidden;backface-visibility:hidden}.off-canvas-content.has-transition-overlap,.off-canvas-content.has-transition-push{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease, -webkit-transform .5s ease}.off-canvas-content.has-transition-push{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.off-canvas-content .off-canvas.is-open{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}@media screen and (min-width: 25em){.position-left.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-left.reveal-for-smedium .close-button{display:none}.off-canvas-content .position-left.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-smedium ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-right.reveal-for-smedium .close-button{display:none}.off-canvas-content .position-right.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-smedium ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-top.reveal-for-smedium .close-button{display:none}.off-canvas-content .position-top.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-smedium ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-bottom.reveal-for-smedium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-smedium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-smedium ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 40em){.position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-medium ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-medium ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-medium ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-medium ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 64em){.position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-large ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-large ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-large ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none;z-index:12;-webkit-transition:none;transition:none;visibility:visible}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-large ~ .off-canvas-content{margin-bottom:250px}}@media screen and (min-width: 25em){.off-canvas.in-canvas-for-smedium{visibility:visible;height:auto;position:static;background:none;width:auto;overflow:visible;-webkit-transition:none;transition:none}.off-canvas.in-canvas-for-smedium.position-left,.off-canvas.in-canvas-for-smedium.position-right,.off-canvas.in-canvas-for-smedium.position-top,.off-canvas.in-canvas-for-smedium.position-bottom{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-smedium .close-button{display:none}}@media print, screen and (min-width: 40em){.off-canvas.in-canvas-for-medium{visibility:visible;height:auto;position:static;background:none;width:auto;overflow:visible;-webkit-transition:none;transition:none}.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top,.off-canvas.in-canvas-for-medium.position-bottom{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print, screen and (min-width: 64em){.off-canvas.in-canvas-for-large{visibility:visible;height:auto;position:static;background:none;width:auto;overflow:visible;-webkit-transition:none;transition:none}.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top,.off-canvas.in-canvas-for-large.position-bottom{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}html.is-reveal-open{position:fixed;width:100%;overflow-y:hidden}html.is-reveal-open.zf-has-scroll{overflow-y:scroll}html.is-reveal-open body{overflow-y:hidden}.reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1005;display:none;background-color:rgba(10,10,10,0.45);overflow-y:auto}.reveal{z-index:1006;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none;padding:1rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;position:relative;top:100px;margin-right:auto;margin-left:auto;overflow-y:auto}[data-whatinput='mouse'] .reveal{outline:0}@media print, screen and (min-width: 40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print, screen and (min-width: 40em){.reveal{width:600px;max-width:75rem}}.reveal.collapse{padding:0}@media print, screen and (min-width: 40em){.reveal.tiny{width:30%;max-width:75rem}}@media print, screen and (min-width: 40em){.reveal.small{width:50%;max-width:75rem}}@media print, screen and (min-width: 40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;right:0;bottom:0;left:0;width:100%;max-width:none;height:100%;min-height:100%;margin-left:0;border:0;border-radius:0}@media print, screen and (max-width: 24.99875em){.reveal{top:0;right:0;bottom:0;left:0;width:100%;max-width:none;height:100%;min-height:100%;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.sticky-container{position:relative}.sticky{position:relative;z-index:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.sticky.is-stuck{position:fixed;z-index:5;width:100%}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:relative;right:auto;left:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.title-bar{padding:.5rem;background:#0a0a0a;color:#fefefe;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;vertical-align:middle;font-weight:bold}.top-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.5rem;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media print, screen and (min-width: 40em){.top-bar{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:auto}}@media screen and (max-width: 39.99875em){.top-bar.stacked-for-smedium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-smedium .top-bar-left,.top-bar.stacked-for-smedium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print, screen and (max-width: 63.99875em){.top-bar.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media print, screen and (max-width: 74.99875em){.top-bar.stacked-for-large{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:0.5rem 1rem 0.5rem 0}.top-bar-left,.top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.float-left{float:left !important}.float-right{float:right !important}.float-center{display:block;margin-right:auto;margin-left:auto}.clearfix::before,.clearfix::after{display:table;content:' ';-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.clearfix::after{clear:both}.align-left{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.align-left.vertical.menu>li>a{-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.align-right.vertical.menu>li>a{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center.vertical.menu>li>a{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.align-self-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.align-center-middle{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center}.small-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}@media screen and (min-width: 25em){.smedium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.smedium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.smedium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.smedium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.smedium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.smedium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media print, screen and (min-width: 40em){.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media print, screen and (min-width: 64em){.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}.flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}@media screen and (min-width: 25em){.smedium-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.smedium-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.smedium-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.smedium-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.smedium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.smedium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.smedium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.smedium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print, screen and (min-width: 40em){.medium-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.medium-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.medium-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.medium-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.medium-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.medium-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.medium-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.medium-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media print, screen and (min-width: 64em){.large-flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.large-flex-child-auto{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.large-flex-child-grow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.large-flex-child-shrink{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.large-flex-dir-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.large-flex-dir-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.large-flex-dir-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.large-flex-dir-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.hide{display:none !important}.invisible{visibility:hidden}@media print, screen and (max-width: 24.99875em){.hide-for-small-only{display:none !important}}@media screen and (max-width: 0em), screen and (min-width: 25em){.show-for-small-only{display:none !important}}@media screen and (min-width: 25em){.hide-for-smedium{display:none !important}}@media screen and (max-width: 24.99875em){.show-for-smedium{display:none !important}}@media screen and (min-width: 25em) and (max-width: 39.99875em){.hide-for-smedium-only{display:none !important}}@media screen and (max-width: 24.99875em), screen and (min-width: 40em){.show-for-smedium-only{display:none !important}}@media print, screen and (min-width: 40em){.hide-for-medium{display:none !important}}@media screen and (max-width: 39.99875em){.show-for-medium{display:none !important}}@media print, screen and (min-width: 40em) and (max-width: 63.99875em){.hide-for-medium-only{display:none !important}}@media screen and (max-width: 39.99875em), screen and (min-width: 64em){.show-for-medium-only{display:none !important}}@media print, screen and (min-width: 64em){.hide-for-large{display:none !important}}@media screen and (max-width: 63.99875em){.show-for-large{display:none !important}}@media print, screen and (min-width: 64em) and (max-width: 74.99875em){.hide-for-large-only{display:none !important}}@media screen and (max-width: 63.99875em), screen and (min-width: 75em){.show-for-large-only{display:none !important}}.show-for-sr,.show-on-focus{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.show-on-focus:active,.show-on-focus:focus{position:static !important;width:auto !important;height:auto !important;overflow:visible !important;clip:auto !important;white-space:normal !important}.show-for-landscape,.hide-for-portrait{display:block !important}@media screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:block !important}}@media screen and (orientation: portrait){.show-for-landscape,.hide-for-portrait{display:none !important}}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation: landscape){.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation: portrait){.hide-for-landscape,.show-for-portrait{display:block !important}}#toast-container{z-index:10001;text-align:center;position:absolute;height:100vh !important;width:100%;overflow:visible !important;padding:8.5vh 0 0 0;pointer-events:none}#toast-container div.toast{position:relative;width:100%;pointer-events:none;-webkit-transition:opacity 0.25s;transition:opacity 0.25s}#toast-container div.toast.toast-template{visibility:hidden}#toast-container div.toast span.message{pointer-events:auto;font-size:0.8rem;border-radius:25px;letter-spacing:0;z-index:10001;max-width:100%;display:inline-block;-webkit-box-shadow:2px 2px 10px rgba(0,0,0,0.28);box-shadow:2px 2px 10px rgba(0,0,0,0.28);border:1px solid #626262;background-color:#6b6b6b;padding:.3em .6em;text-align:center;color:white}#toast-container div.toast span.message:hover{opacity:.4;cursor:pointer}#toast-container div.toast span.message:before,#toast-container div.toast span.message:after{display:block;content:""}.background{position:fixed;z-index:1000000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(55,55,55,0.6)}.background .modal{position:relative;top:50%;margin:auto;width:80%;border-radius:2px;background-color:#fefefe;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);padding:0.5rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:80%;max-width:1024px}@media print, screen and (max-width: 63.99875em){.background .modal.small-margin{width:90%}}@media print, screen and (max-width: 24.99875em){.background .modal.small-margin{width:95%}}.background .modal.max-small{max-width:0}.background .modal.max-smedium{max-width:400px}.background .modal.max-medium{max-width:640px}.background .modal.max-large{max-width:1024px}.background .modal.max-xlarge{max-width:1200px}.background .modal.max-xxlarge{max-width:1440px}.background .modal .title{font-weight:bold;padding-bottom:0.5rem}.background .modal .content-container{overflow-y:auto;max-height:100%}.background .modal .content-container .loader{position:static;-webkit-transform:none;-ms-transform:none;transform:none}.background .modal .close{text-align:right;float:right;font-size:28px;font-weight:bold;line-height:1}.background .modal .close:hover,.background .modal .close:focus{text-decoration:none;cursor:pointer}.background .modal .modal-button-container{padding-top:0.5rem}.background .modal .modal-button-container .button{margin-left:0.2rem;margin-bottom:0 !important;padding:0.6em 0.8em}@media print, screen and (max-width: 24.99875em){.background .modal .modal-button-container .button{margin-left:0.1rem;padding:0.3em 0.5em}}.background .modal .choose-dialog-value-row{line-height:1;padding-top:0.5em;padding-bottom:0.5em;width:100%;cursor:pointer;background:rgba(150,150,150,0.15);display:inline-block;margin-top:0.3rem;margin-bottom:0.3rem;padding-left:0.5rem}.background .modal.no-title .title{display:none}label{position:relative}label [type='text'],label [type='password'],label [type='date'],label [type='datetime'],label [type='datetime-local'],label [type='month'],label [type='week'],label [type='email'],label [type='number'],label [type='search'],label [type='tel'],label [type='time'],label [type='url'],label [type='color'],label textarea,label input[type='text'],label input:not([type]){display:block;width:100%;height:2.4375rem;padding:0.5rem;-webkit-box-shadow:none;box-shadow:none;font-size:1rem;font-weight:normal;line-height:1.5;border:none;border-bottom:solid 1px #626262;outline:0;margin:0 0 15px}label [type='text']:invalid,label [type='password']:invalid,label [type='date']:invalid,label [type='datetime']:invalid,label [type='datetime-local']:invalid,label [type='month']:invalid,label [type='week']:invalid,label [type='email']:invalid,label [type='number']:invalid,label [type='search']:invalid,label [type='tel']:invalid,label [type='time']:invalid,label [type='url']:invalid,label [type='color']:invalid,label textarea:invalid,label input[type='text']:invalid,label input:not([type]):invalid{-webkit-box-shadow:0 0 2px 2px #ff6776;box-shadow:0 0 2px 2px #ff6776}label [type='text']:disabled,label [type='password']:disabled,label [type='date']:disabled,label [type='datetime']:disabled,label [type='datetime-local']:disabled,label [type='month']:disabled,label [type='week']:disabled,label [type='email']:disabled,label [type='number']:disabled,label [type='search']:disabled,label [type='tel']:disabled,label [type='time']:disabled,label [type='url']:disabled,label [type='color']:disabled,label textarea:disabled,label input[type='text']:disabled,label input:not([type]):disabled{background-color:#e6e6e6}label [type='text']:focus,label [type='password']:focus,label [type='date']:focus,label [type='datetime']:focus,label [type='datetime-local']:focus,label [type='month']:focus,label [type='week']:focus,label [type='email']:focus,label [type='number']:focus,label [type='search']:focus,label [type='tel']:focus,label [type='time']:focus,label [type='url']:focus,label [type='color']:focus,label textarea:focus,label input[type='text']:focus,label input:not([type]):focus{border:none;border-bottom:solid 1px #626262;-webkit-box-shadow:none;box-shadow:none}label [type='text']:focus:invalid,label [type='password']:focus:invalid,label [type='date']:focus:invalid,label [type='datetime']:focus:invalid,label [type='datetime-local']:focus:invalid,label [type='month']:focus:invalid,label [type='week']:focus:invalid,label [type='email']:focus:invalid,label [type='number']:focus:invalid,label [type='search']:focus:invalid,label [type='tel']:focus:invalid,label [type='time']:focus:invalid,label [type='url']:focus:invalid,label [type='color']:focus:invalid,label textarea:focus:invalid,label input[type='text']:focus:invalid,label input:not([type]):focus:invalid{-webkit-box-shadow:0 0 2px 2px #ff6776;box-shadow:0 0 2px 2px #ff6776}label [type='text']:focus:disabled,label [type='password']:focus:disabled,label [type='date']:focus:disabled,label [type='datetime']:focus:disabled,label [type='datetime-local']:focus:disabled,label [type='month']:focus:disabled,label [type='week']:focus:disabled,label [type='email']:focus:disabled,label [type='number']:focus:disabled,label [type='search']:focus:disabled,label [type='tel']:focus:disabled,label [type='time']:focus:disabled,label [type='url']:focus:disabled,label [type='color']:focus:disabled,label textarea:focus:disabled,label input[type='text']:focus:disabled,label input:not([type]):focus:disabled{background-color:#e6e6e6}label [type='text']:focus ~ span,label [type='text'].notEmpty:not(:focus) ~ span,label [type='text']:not(:empty) ~ span,label [type='password']:focus ~ span,label [type='password'].notEmpty:not(:focus) ~ span,label [type='password']:not(:empty) ~ span,label [type='date']:focus ~ span,label [type='date'].notEmpty:not(:focus) ~ span,label [type='date']:not(:empty) ~ span,label [type='datetime']:focus ~ span,label [type='datetime'].notEmpty:not(:focus) ~ span,label [type='datetime']:not(:empty) ~ span,label [type='datetime-local']:focus ~ span,label [type='datetime-local'].notEmpty:not(:focus) ~ span,label [type='datetime-local']:not(:empty) ~ span,label [type='month']:focus ~ span,label [type='month'].notEmpty:not(:focus) ~ span,label [type='month']:not(:empty) ~ span,label [type='week']:focus ~ span,label [type='week'].notEmpty:not(:focus) ~ span,label [type='week']:not(:empty) ~ span,label [type='email']:focus ~ span,label [type='email'].notEmpty:not(:focus) ~ span,label [type='email']:not(:empty) ~ span,label [type='number']:focus ~ span,label [type='number'].notEmpty:not(:focus) ~ span,label [type='number']:not(:empty) ~ span,label [type='search']:focus ~ span,label [type='search'].notEmpty:not(:focus) ~ span,label [type='search']:not(:empty) ~ span,label [type='tel']:focus ~ span,label [type='tel'].notEmpty:not(:focus) ~ span,label [type='tel']:not(:empty) ~ span,label [type='time']:focus ~ span,label [type='time'].notEmpty:not(:focus) ~ span,label [type='time']:not(:empty) ~ span,label [type='url']:focus ~ span,label [type='url'].notEmpty:not(:focus) ~ span,label [type='url']:not(:empty) ~ span,label [type='color']:focus ~ span,label [type='color'].notEmpty:not(:focus) ~ span,label [type='color']:not(:empty) ~ span,label textarea:focus ~ span,label textarea.notEmpty:not(:focus) ~ span,label textarea:not(:empty) ~ span,label input[type='text']:focus ~ span,label input[type='text'].notEmpty:not(:focus) ~ span,label input[type='text']:not(:empty) ~ span,label input:not([type]):focus ~ span,label input:not([type]).notEmpty:not(:focus) ~ span,label input:not([type]):not(:empty) ~ span{top:-11px;left:0;bottom:0;font-size:11px;opacity:1;color:black}label [type='text'] ~ span,label [type='password'] ~ span,label [type='date'] ~ span,label [type='datetime'] ~ span,label [type='datetime-local'] ~ span,label [type='month'] ~ span,label [type='week'] ~ span,label [type='email'] ~ span,label [type='number'] ~ span,label [type='search'] ~ span,label [type='tel'] ~ span,label [type='time'] ~ span,label [type='url'] ~ span,label [type='color'] ~ span,label textarea ~ span,label input[type='text'] ~ span,label input:not([type]) ~ span{position:absolute;pointer-events:none;left:10px;bottom:10px;top:7px;-webkit-transition:0.2s ease all;transition:0.2s ease all;color:#626262}label textarea{height:10rem;border-top-right-radius:3px;border-top-left-radius:3px}label [type="checkbox"].before-text{margin-bottom:0}input[type=number]{-moz-appearance:textfield}input[type=number] ::-webkit-inner-spin-button,input[type=number] ::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}@media print, screen and (min-width: 40em){.reveal,.reveal.tiny,.reveal.small,.reveal.large{right:auto;left:auto;margin:0 auto}}nav.top-bar{z-index:1;white-space:nowrap;position:relative;background:#000;color:#fff;stroke:#fff;padding:0}nav.top-bar:not(.with-image){margin-left:-.625rem;margin-right:-.625rem;width:calc(100% + 1.25rem);max-width:calc(100% + 1.25rem)}@media print, screen and (min-width: 40em){nav.top-bar:not(.with-image){margin-left:-.9375rem;margin-right:-.9375rem;width:calc(100% + 1.875rem);max-width:calc(100% + 1.875rem)}}nav.top-bar .background-img{display:none}nav.top-bar>span>span>span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}nav.top-bar>span .back-button{cursor:pointer;text-align:left}nav.top-bar>span .back-button svg{width:0.5rem;height:100%;vertical-align:bottom}nav.top-bar>span .back-button.hidden{visibility:hidden;display:initial}nav.top-bar>span .top-bar-title{margin-left:0.5rem}nav.top-bar>span #navbar-close-listener-container #navbar-close-listener{position:fixed;top:0;left:0;right:0;bottom:0;background:transparent;z-index:8999}nav.top-bar>span #responsive-menu-toggle .menu-icon::after{background:#fff;-webkit-box-shadow:0 7px 0 #fff,0 14px 0 #fff;box-shadow:0 7px 0 #fff,0 14px 0 #fff}nav.top-bar>span #responsive-menu-toggle .menu-icon{vertical-align:-webkit-baseline-middle}nav.top-bar>span #responsive-menu{display:block;-webkit-transition-duration:0.5s;transition-duration:0.5s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}nav.top-bar>span #responsive-menu.visible .hidden-menu{right:0}nav.top-bar>span #responsive-menu .hidden-menu{position:fixed;-webkit-transform:none;-ms-transform:none;transform:none;display:inline-block;z-index:9000;border:1px solid #1e1c1c;padding:4.5rem 1.65rem 0rem 2.75rem;text-align:left;background:#000;margin-top:-1rem;right:-1000%}nav.top-bar>span #responsive-menu .hidden-menu li{font-size:1.15rem}nav.top-bar>span #responsive-menu .hidden-menu li.hidden{display:none}nav.top-bar>span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent{z-index:9001}nav.top-bar>span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent ul.is-dropdown-submenu{top:auto}nav.top-bar>span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent ul.is-dropdown-submenu>li,nav.top-bar>span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent ul.is-dropdown-submenu>.close-listener{z-index:9001}nav.top-bar>span #responsive-menu .hidden-menu li.is-dropdown-submenu-parent>a:after{display:block;width:0;height:0;border:6px inset;content:"";border-bottom-width:0;border-top-style:solid;border-color:#ffffff transparent transparent;right:5px;left:auto;margin-top:-3px}nav.top-bar>span #responsive-menu .hidden-menu li a{white-space:nowrap}nav.top-bar>span #responsive-menu .hidden-menu li a img{display:none}nav.top-bar>span #responsive-menu .hidden-menu li a img+span{display:inherit}@media print, screen and (min-width: 40em){nav.top-bar>span #responsive-menu .hidden-menu li.medium{display:none}}@media print, screen and (min-width: 25em){nav.top-bar>span #responsive-menu .hidden-menu li.smedium{display:none}}@media print, screen and (min-width: 64em){nav.top-bar>span #responsive-menu .hidden-menu li.large{display:none}}@media print, screen and (max-width: 24.99875em){nav.top-bar>span #responsive-menu .hidden-menu li.smedium{display:block}nav.top-bar>span #responsive-menu .hidden-menu li.smedium.hidden{display:none}}@media print, screen and (max-width: 39.99875em){nav.top-bar>span #responsive-menu .hidden-menu li.medium{display:block}nav.top-bar>span #responsive-menu .hidden-menu li.medium.hidden{display:none}}@media print, screen and (max-width: 63.99875em){nav.top-bar>span #responsive-menu .hidden-menu li.large{display:block}nav.top-bar>span #responsive-menu .hidden-menu li.large.hidden{display:none}}nav.top-bar>span #responsive-menu .hidden-menu li.never{display:block}nav.top-bar>span #responsive-menu .hidden-menu li.never.hidden{display:none}nav.top-bar>span #responsive-menu .hidden-menu li.always{display:none}nav.top-bar>span .navbar-menu{background:initial;width:auto;z-index:9000}nav.top-bar>span .navbar-menu a img+span{display:none}nav.top-bar>span .navbar-menu li{position:relative;z-index:9000}nav.top-bar>span .navbar-menu li.is-dropdown-submenu-parent{z-index:9001}nav.top-bar>span .navbar-menu li.hidden{display:none}@media print, screen and (max-width: 24.99875em){nav.top-bar>span .navbar-menu li.smedium{display:none}}@media print, screen and (max-width: 39.99875em){nav.top-bar>span .navbar-menu li li{display:table-cell}nav.top-bar>span .navbar-menu li.medium{display:none}}@media print, screen and (max-width: 63.99875em){nav.top-bar>span .navbar-menu li.large{display:none}}nav.top-bar>span .navbar-menu li.never{display:none}nav.top-bar>span .navbar-menu .menu li,nav.top-bar>span .navbar-menu.menu li{z-index:100}@media print, screen and (max-width: 39.99875em){nav.top-bar>span .navbar-menu .menu li a,nav.top-bar>span .navbar-menu.menu li a{width:100%}}@media print, screen and (max-width: 39.99875em){nav.top-bar>span .navbar-menu .menu li a,nav.top-bar>span .navbar-menu.menu li a{padding-left:0.68rem}}@media print, screen and (max-width: 24.99875em){nav.top-bar>span .navbar-menu .menu li a,nav.top-bar>span .navbar-menu.menu li a{padding-left:0.236rem}}@media print, screen and (max-width: 39.99875em){nav.top-bar>span .navbar-menu .menu li:not(.is-dropdown-submenu-parent) a,nav.top-bar>span .navbar-menu.menu li:not(.is-dropdown-submenu-parent) a{padding-right:0.68rem}}@media print, screen and (max-width: 24.99875em){nav.top-bar>span .navbar-menu .menu li:not(.is-dropdown-submenu-parent) a,nav.top-bar>span .navbar-menu.menu li:not(.is-dropdown-submenu-parent) a{padding-right:0.236rem}}nav.top-bar>span .navbar-menu .menu li.img a,nav.top-bar>span .navbar-menu.menu li.img a{padding-top:0;padding-bottom:0}nav.top-bar>span .navbar-menu .menu li.img a img,nav.top-bar>span .navbar-menu.menu li.img a img{vertical-align:inherit;max-height:1.8rem}nav.top-bar>span .navbar-menu .menu>li>ul.is-dropdown-submenu,nav.top-bar>span .navbar-menu.menu>li>ul.is-dropdown-submenu{min-width:0}nav.top-bar>span .navbar-menu .menu>li>ul.is-dropdown-submenu li,nav.top-bar>span .navbar-menu.menu>li>ul.is-dropdown-submenu li{display:inherit}nav.top-bar>span .navbar-menu .menu>li.opens-right>a,nav.top-bar>span .navbar-menu.menu>li.opens-right>a{margin-right:0.5rem}nav.top-bar>span .navbar-menu .menu>li.opens-right>a:after,nav.top-bar>span .navbar-menu.menu>li.opens-right>a:after{right:0.1rem}nav.top-bar>span .submenu{background:#000}nav.top-bar.with-image{background:rgba(0,0,0,0);-webkit-transition:all 0.15s, background 0.0s;transition:all 0.15s, background 0.0s;-webkit-transition-delay:0s;transition-delay:0s}nav.top-bar.with-image *{-webkit-transition:all 0.15s, background 0.0s;transition:all 0.15s, background 0.0s;-webkit-transition-delay:0s;transition-delay:0s}nav.top-bar.with-image .background-img{display:initial;margin-left:-.625rem;margin-right:-.625rem;width:calc(100% + 1.25rem);max-width:calc(100% + 1.25rem);min-width:1.5625rem}@media print, screen and (min-width: 40em){nav.top-bar.with-image .background-img{margin-left:-.9375rem;margin-right:-.9375rem;width:calc(100% + 1.875rem);max-width:calc(100% + 1.875rem);min-width:2.34375rem}}nav.top-bar.with-image>span{background:inherit;position:fixed;top:0;left:0;right:0}nav.top-bar.with-image>span>*{position:relative}nav.top-bar.with-image>span #responsive-menu-toggle{z-index:9100}nav.top-bar.with-image>span .navbar-menu{background:initial}nav.top-bar.with-image>span .submenu{background:#000}nav.top-bar.with-image.color-black{color:#000;stroke:#000}nav.top-bar.with-image.color-black #responsive-menu .hidden-menu{background:#fff;border-color:#7F7F7F}nav.top-bar.with-image.color-black #responsive-menu-toggle .menu-icon::after{background:#000;-webkit-box-shadow:0 7px 0 #000,0 14px 0 #000;box-shadow:0 7px 0 #000,0 14px 0 #000}nav.top-bar.with-image.color-black .submenu{background:#fff}nav.top-bar.with-image.color-white{color:#fff;stroke:#fff}nav.top-bar.with-image.color-white #responsive-menu .hidden-menu{background:#000;border-color:#1e1c1c}nav.top-bar.with-image.color-white #responsive-menu-toggle .menu-icon::after{background:#fff;-webkit-box-shadow:0 7px 0 #fff,0 14px 0 #fff;box-shadow:0 7px 0 #fff,0 14px 0 #fff}nav.top-bar.with-image.color-white .submenu{background:#000}nav.top-bar.with-image.solid{background:#000}nav.top-bar.with-image.solid>span #responsive-menu .hidden-menu{border-color:#7F7F7F}nav.top-bar.with-image.solid>span .navbar-menu{background:inherit}nav.top-bar.with-image.solid.color-black{background:#fff}nav.top-bar.with-image.solid.color-white{background:#000}.menu a,.dropdown.menu a{padding:0.2rem 0.5rem}.dropdown.menu .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) a,#navbar-menu-hidden .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{margin-right:0.5rem}.dropdown.menu .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) a::after,#navbar-menu-hidden .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a::after{right:0.1rem}.dropdown.menu .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) ul a,#navbar-menu-hidden .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>ul a{width:100%}.menu.is-accordion-submenu{margin-left:0.7rem}.menu{-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;-webkit-transition:0.25s;transition:0.25s}#responsive-menu-toggle button{vertical-align:initial}.dropdown.menu>li.is-accordion-submenu-parent>ul.is-dropdown-submenu{left:auto;right:0}#navbar-fragment{width:100%}.logo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.logo .logo-img{margin-left:1rem;margin-right:0.5rem;max-width:2.35rem}.tab-fragment .tab-names .tab-button{display:inline-block;border:1px solid #E6E6E6;border-top-left-radius:3px;border-top-right-radius:3px;background-color:#E6E6E6;padding:0.3rem}.tab-fragment .tab-names .tab-button.active{border-bottom:0;background-color:initial}.tab-fragment .tab-content{border:1px solid #E6E6E6;border-top:0;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.tab-fragment .tab-content .tab-site{display:none}.tab-fragment .tab-content .tab-site.active{display:initial}.tab-fragment .tab-button-template,.tab-fragment .tab-site-template{display:none}.tab-fragment .border-bottom{border-bottom:1px solid #E6E6E6}.alphabetic-list{height:100%;position:relative}.alphabetic-list .alphabetic-list-container{height:100%;overflow:auto}.alphabetic-list .alphabetic-list-sidealphabet{height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.alphabetic-list .alphabetic-list-sidealphabet .alphabet-scroll-to{cursor:pointer;height:3.8%;display:block;text-align:center}@media print, screen and (max-width: 24.99875em){.alphabetic-list .alphabetic-list-sidealphabet .alphabet-scroll-to{font-size:0.8em}}.window-container{position:fixed;background:white;padding:0;border:1px solid #b1b1b1;border-radius:3px;cursor:-webkit-grab;cursor:grab;-webkit-transition:none;transition:none;min-width:10rem;min-height:3rem;-webkit-box-sizing:content-box;box-sizing:content-box;z-index:1000;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.window-container *{-webkit-box-sizing:border-box;box-sizing:border-box}.window-container.active-window{z-index:1100}.window-container .window-resize{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.window-container .window-resize.edge{width:4px;height:4px}.window-container .window-resize.edge.nw{cursor:nw-resize}.window-container .window-resize.edge.ne{cursor:ne-resize}.window-container .window-resize.edge.sw{cursor:sw-resize}.window-container .window-resize.edge.se{cursor:se-resize}.window-container .window-resize.bottom,.window-container .window-resize.top{cursor:ns-resize;height:4px}.window-container .window-resize.left,.window-container .window-resize.right{cursor:ew-resize;width:4px}.window-container #title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0;padding-bottom:0.5rem;font-size:1rem;letter-spacing:0.2rem;font-weight:bold}.window-container #title-buttons .title-button{max-height:1rem;cursor:pointer;outline:none;display:inline-block}.window-container.moving{cursor:-webkit-grabbing;cursor:grabbing}.window-container.minimized{padding:0.2rem;width:0 !important;height:0 !important;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.window-container.minimized .window{display:none}.window-container.minimized .window-resize{display:none}.window-container.minimized #title{border:0;margin:0;height:100%}.window-container.minimized #title-buttons .title-button.hide-minimized{display:none}.window-container.maximized{padding:.2rem;border:0;margin:0;width:calc(100vw - .4rem) !important;height:calc(100vh - .4rem) !important;left:0 !important;top:0 !important}.window-container.maximized .window-resize{display:none}.window-container.maximized #title-buttons .title-button.hide-maximized{display:none}.window-container.popup{padding:.2rem;border:0;margin:0;width:calc(100vw - .4rem) !important;height:calc(100vh - .4rem) !important;left:0 !important;top:0 !important}.window-container.popup .window-resize{display:none}.window-container.popup #title-buttons .title-button.hide-popup{display:none}.window-container .window{overflow:auto;cursor:initial;position:relative}.max-height-100{max-height:100%}.overflow-hidden{overflow:hidden}body:not(.access-admin) .access-admin{display:none}body:not(.access-loggedIn) .access-loggedIn{display:none}body:not(.access-loggedOut) .access-loggedOut{display:none}body:not(.access-online) .access-online{display:none}body:not(.access-offline) .access-offline{display:none}body:not(.access-default) .access-default{display:none}.share-icon{width:1.5rem;max-width:1.5rem;margin:0.1rem}.share-icon svg{width:1.5rem;max-width:1.5rem}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}html{min-height:100%;width:100%;height:100%;letter-spacing:1px}.max-height{height:100%;min-height:100%}body{margin:0;padding:0;height:100%;width:100%;font-family:"Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;font-weight:400;line-height:1.5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background:#fefefe;color:#0a0a0a}footer{border-top:#d8d8d8 solid 1px;text-align:center}.top-bar .top-bar-title strong{vertical-align:middle;display:inline-block}nav.top-bar{color:#FFF;font-size:20px;-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 2px 9px 1px rgba(0,0,0,0.12),0 4px 2px -2px rgba(0,0,0,0.2);box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 2px 9px 1px rgba(0,0,0,0.12),0 4px 2px -2px rgba(0,0,0,0.2);padding:0.6rem;display:block}button.button,a.button{border-radius:2px}.fill-me{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.fill-me.vertical{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.fill-me .grow{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flex-center{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.flex-center>*{max-height:100%}.menu a,.dropdown.menu a{padding:.4rem .5rem}svg path{fill:currentColor}div.mainContainer{position:relative;max-height:100%;max-width:100%;overflow:auto;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin:0.5rem}div.mainContainer>.row,div.mainContainer #main-content,div.mainContainer #site{position:absolute;width:100%;height:100%;top:0;bottom:0;left:0;right:0}.inline-block{display:inline-block}.right{float:right}#logo-img{max-height:2.2rem}a{text-decoration:none;cursor:pointer;color:inherit}a.hidden-link{text-decoration:none;color:inherit}label{cursor:pointer}.align-right{text-align:right}.view-panel{display:none}.loader{left:50%;top:50%;position:fixed;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);text-align:center}.loader.inline{left:initial;top:initial;position:initial;-webkit-transform:initial;-ms-transform:initial;transform:initial;text-align:center;display:inline}.loader.small #spinner{-webkit-transform:scale(0.5);-ms-transform:scale(0.5);transform:scale(0.5)}.loader #spinner{-webkit-box-sizing:border-box;box-sizing:border-box;stroke:#b71c1a;stroke-width:3px;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:line 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite,rotate 1.6s linear infinite;animation:line 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite,rotate 1.6s linear infinite}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(450deg);transform:rotate(450deg)}}@keyframes rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(450deg);transform:rotate(450deg)}}@-webkit-keyframes line{0%{stroke-dasharray:2, 85.964;-webkit-transform:rotate(0);transform:rotate(0)}50%{stroke-dasharray:65.973, 21.9911;stroke-dashoffset:0}100%{stroke-dasharray:2, 85.964;stroke-dashoffset:-65.973;-webkit-transform:rotate(90deg);transform:rotate(90deg)}}@keyframes line{0%{stroke-dasharray:2, 85.964;-webkit-transform:rotate(0);transform:rotate(0)}50%{stroke-dasharray:65.973, 21.9911;stroke-dashoffset:0}100%{stroke-dasharray:2, 85.964;stroke-dashoffset:-65.973;-webkit-transform:rotate(90deg);transform:rotate(90deg)}}#print-content{display:none}.action-button{max-height:1.7rem;margin-left:0.4rem;margin-right:0.4rem}.action-button:hover{background:#e8e8e8}.vcenter-container{width:100%;height:100%;display:table}.vcenter-container .vcenter{vertical-align:middle;display:table-cell;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.max-width{width:100%}input,button{letter-spacing:1px !important}.no-padding{padding:0;border:0}.center{text-align:center}@media print{nav,.mainContainer,footer,#styles{display:none !important}#print-content{display:block !important}}.overflow-y-auto{overflow-y:auto !important}.row.no-after:after{content:initial}.margin-bottom{margin-bottom:1rem}@media print, screen and (min-width: 25em){.margin-bottom{margin-bottom:2rem}}@media print, screen and (min-width: 40em){.margin-bottom{margin-bottom:3rem}}@media print, screen and (min-width: 64em){.margin-bottom{margin-bottom:4rem}}@media screen and (min-width: 75em){.margin-bottom{margin-bottom:5rem}}.font-small{font-size:0.7em}.border-bottom{border-bottom:1px solid #cacaca}.border-right{border-right:1px solid #cacaca}.border-left{border-left:1px solid #cacaca}img.logo{vertical-align:inherit;display:inline-block;height:auto;max-width:1.1rem;margin-right:2px}.align-center{text-align:center}hr.separator{margin:1rem 0}.button-line{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.button-line .button{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin-left:1px;margin-right:1px;padding:0.5rem 0.77rem}@media print, screen and (max-width: 24.99875em){.small-small{font-size:small}}select{border:0;padding:0.3rem 0.3rem}.hidden{display:none}.no-transition{-webkit-transition:none !important;transition:none !important}img.action-image{max-height:1.4rem;cursor:pointer}img.back-button{max-height:0.6rem;margin-right:0.2rem;cursor:pointer;vertical-align:inherit}.no-margin-bottom{margin-bottom:0}.settings-container{border:1px solid black;border-radius:2px;padding:0.3rem}@media print, screen and (min-width: 40em){.settings-container #settings-fragments-container{border-left:1px solid #cacaca}}.settings-container #settings-fragments-container #settings-fragments>*{display:none}.settings-container #settings-fragments-container #settings-fragments>*.active{display:block}.switch{position:relative;display:inline-block;height:initial}@media print, screen and (max-width: 24.99875em){.switch{font-size:0.6em}}@media print, screen and (max-width: 39.99875em){.switch{font-size:0.7em}}.switch input{display:none}.switch input:checked+.slider:before{-webkit-transform:translateX(1.5em);-ms-transform:translateX(1.5em);transform:translateX(1.5em)}.switch .slider{display:inline-block;position:relative;cursor:pointer;width:3em;height:1.5em;border-radius:1.5em;background-color:#ccc;-webkit-transition:.4s;transition:.4s;margin-bottom:0;margin-top:0}.switch .slider:before{position:absolute;content:"";height:1.1em;width:1.1em;left:0.15em;bottom:0.15em;background-color:white;-webkit-transition:.4s;transition:.4s;border-radius:50%}.switch img,.switch svg{width:1.4em;display:inline;vertical-align:initial}.switch img path,.switch svg path{stroke-color:inherit}label{font-size:1em !important}.setting-row:not(.hidden){line-height:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0.5rem 0.4rem;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;width:100%;cursor:pointer;background:rgba(195,195,195,0.13)}.setting-row:not(.hidden)>*{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.setting-row:not(.hidden) input[type=checkbox]{margin:0}.zf-green{color:#68b604}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:left}input[type=checkBox].form-control{height:24px;height:1.5rem;width:100%}[type=submit]{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:39px;height:2.4375rem;padding:8px;padding:.5rem;border:1px solid #cacaca;margin:0 0 16px;margin:0 0 1rem;font-family:inherit;font-size:16px;font-size:1rem;color:#0a0a0a;background-color:#fefefe;-webkit-box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);border-radius:0;-webkit-transition:border-color .25s ease-in-out, -webkit-box-shadow .5s;transition:border-color .25s ease-in-out, -webkit-box-shadow .5s;transition:box-shadow .5s, border-color .25s ease-in-out;transition:box-shadow .5s, border-color .25s ease-in-out, -webkit-box-shadow .5s;-webkit-appearance:none;-moz-appearance:none}form ul li{color:red;font-size:12.8px;font-size:.8rem}.button-dropdown:after{border-color:#000 transparent transparent;border-width:.4em;border-style:solid;content:"";position:absolute;top:.4em;display:block;height:0;width:0;right:1em}.button-dropdown{position:relative;display:block;padding-right:2em}.button-dropdown.open:after{border-color:transparent transparent #000;top:0}a.ui-datepicker-next,a.ui-datepicker-prev{height:100% !important}div.container a.navbar-brand>img{display:inline;margin-right:4px}ul.menu.plain li.active a{background-color:#ededed;color:#000}ul.menu.plain li a{color:#000}ul.menu.plain li a:hover{color:#525252}ul.submenu{border-top:1px solid #bcbcbc;border-bottom:1px solid #bcbcbc;margin-left:10px}#cookie-compliance{line-height:1.2;font-size:0.8rem;width:100%;margin:0 0;padding:0.3rem 0}#cookie-compliance #close-cookie-msg{float:right;margin-bottom:0;margin-right:3px;padding:0.4rem 0.8rem}.menu-container .button{text-align:center;width:100%}.height-5{height:5%}.max-height-5{max-height:5%}.width-5{width:5%}.max-width-5{max-width:5%}.height-10{height:10%}.max-height-10{max-height:10%}.width-10{width:10%}.max-width-10{max-width:10%}.height-15{height:15%}.max-height-15{max-height:15%}.width-15{width:15%}.max-width-15{max-width:15%}.height-20{height:20%}.max-height-20{max-height:20%}.width-20{width:20%}.max-width-20{max-width:20%}.height-25{height:25%}.max-height-25{max-height:25%}.width-25{width:25%}.max-width-25{max-width:25%}.height-30{height:30%}.max-height-30{max-height:30%}.width-30{width:30%}.max-width-30{max-width:30%}.height-35{height:35%}.max-height-35{max-height:35%}.width-35{width:35%}.max-width-35{max-width:35%}.height-40{height:40%}.max-height-40{max-height:40%}.width-40{width:40%}.max-width-40{max-width:40%}.height-45{height:45%}.max-height-45{max-height:45%}.width-45{width:45%}.max-width-45{max-width:45%}.height-50{height:50%}.max-height-50{max-height:50%}.width-50{width:50%}.max-width-50{max-width:50%}.height-55{height:55%}.max-height-55{max-height:55%}.width-55{width:55%}.max-width-55{max-width:55%}.height-60{height:60%}.max-height-60{max-height:60%}.width-60{width:60%}.max-width-60{max-width:60%}.height-65{height:65%}.max-height-65{max-height:65%}.width-65{width:65%}.max-width-65{max-width:65%}.height-70{height:70%}.max-height-70{max-height:70%}.width-70{width:70%}.max-width-70{max-width:70%}.height-75{height:75%}.max-height-75{max-height:75%}.width-75{width:75%}.max-width-75{max-width:75%}.height-80{height:80%}.max-height-80{max-height:80%}.width-80{width:80%}.max-width-80{max-width:80%}.height-85{height:85%}.max-height-85{max-height:85%}.width-85{width:85%}.max-width-85{max-width:85%}.height-90{height:90%}.max-height-90{max-height:90%}.width-90{width:90%}.max-width-90{max-width:90%}.height-95{height:95%}.max-height-95{max-height:95%}.width-95{width:95%}.max-width-95{max-width:95%}.height-100{height:100%}.max-height-100{max-height:100%}.width-100{width:100%}.max-width-100{max-width:100%}.text-right{text-align:right}*{-webkit-transition:.25s ease-out, color .25s ease-out;transition:.25s ease-out, color .25s ease-out}body.red{background:#fff;color:#000}body.red #cookie-compliance{background-color:#870015;color:#fff}body.red #cookie-compliance a.link{color:#ff3d00;border-bottom-color:#ff3d00}body.red #cookie-compliance a.link:hover{color:#ff3d00;border-bottom-color:#ff3d00}body.red a.link{text-decoration:none;color:#ff3d00;border-bottom:none}body.red a.link:hover{color:#ff3d00;border-bottom-color:#ff3d00}body.red .loader #spinner{stroke:#b71c1a}body.red nav.top-bar{color:#fff;background:red}body.red .top-bar ul{background:red !important}body.red .top-bar ul a{color:#fff}body.red button.button,body.red a.button{background-color:red}body.red button.button.disabled,body.red button.button.disabled:hover,body.red button.button.disabled:focus,body.red button.button:hover,body.red a.button.disabled,body.red a.button.disabled:hover,body.red a.button.disabled:focus,body.red a.button:hover{background-color:red}body.red .switch input:checked+.slider{background-color:red}body.red .switch input:focus+.slider{-webkit-box-shadow:0 0 1px red;box-shadow:0 0 1px red}body.red label{color:#000}body.red .background .modal{background-color:#fefefe}body.red svg .fill-color,body.red svg.fill-color{fill:currentColor}body.red svg .fill-background,body.red svg.fill-background{fill:#fefefe}body.red label [type='text'],body.red label [type='password'],body.red label [type='date'],body.red label [type='datetime'],body.red label [type='datetime-local'],body.red label [type='month'],body.red label [type='week'],body.red label [type='email'],body.red label [type='number'],body.red label [type='search'],body.red label [type='tel'],body.red label [type='time'],body.red label [type='url'],body.red label [type='color'],body.red label textarea,body.red label input[type=text],body.red label input:not([type]){border-bottom:solid #000;background:#fff;color:#000}body.red label [type='text']:focus,body.red label [type='password']:focus,body.red label [type='date']:focus,body.red label [type='datetime']:focus,body.red label [type='datetime-local']:focus,body.red label [type='month']:focus,body.red label [type='week']:focus,body.red label [type='email']:focus,body.red label [type='number']:focus,body.red label [type='search']:focus,body.red label [type='tel']:focus,body.red label [type='time']:focus,body.red label [type='url']:focus,body.red label [type='color']:focus,body.red label textarea:focus,body.red label input[type=text]:focus,body.red label input:not([type]):focus{border-bottom:solid #000}body.red label [type='text']:focus ~ span,body.red label [type='text'].notEmpty:not(:focus) ~ span,body.red label [type='password']:focus ~ span,body.red label [type='password'].notEmpty:not(:focus) ~ span,body.red label [type='date']:focus ~ span,body.red label [type='date'].notEmpty:not(:focus) ~ span,body.red label [type='datetime']:focus ~ span,body.red label [type='datetime'].notEmpty:not(:focus) ~ span,body.red label [type='datetime-local']:focus ~ span,body.red label [type='datetime-local'].notEmpty:not(:focus) ~ span,body.red label [type='month']:focus ~ span,body.red label [type='month'].notEmpty:not(:focus) ~ span,body.red label [type='week']:focus ~ span,body.red label [type='week'].notEmpty:not(:focus) ~ span,body.red label [type='email']:focus ~ span,body.red label [type='email'].notEmpty:not(:focus) ~ span,body.red label [type='number']:focus ~ span,body.red label [type='number'].notEmpty:not(:focus) ~ span,body.red label [type='search']:focus ~ span,body.red label [type='search'].notEmpty:not(:focus) ~ span,body.red label [type='tel']:focus ~ span,body.red label [type='tel'].notEmpty:not(:focus) ~ span,body.red label [type='time']:focus ~ span,body.red label [type='time'].notEmpty:not(:focus) ~ span,body.red label [type='url']:focus ~ span,body.red label [type='url'].notEmpty:not(:focus) ~ span,body.red label [type='color']:focus ~ span,body.red label [type='color'].notEmpty:not(:focus) ~ span,body.red label textarea:focus ~ span,body.red label textarea.notEmpty:not(:focus) ~ span,body.red label input[type=text]:focus ~ span,body.red label input[type=text].notEmpty:not(:focus) ~ span,body.red label input:not([type]):focus ~ span,body.red label input:not([type]).notEmpty:not(:focus) ~ span{color:#000}body.red label [type='text'] ~ span,body.red label [type='password'] ~ span,body.red label [type='date'] ~ span,body.red label [type='datetime'] ~ span,body.red label [type='datetime-local'] ~ span,body.red label [type='month'] ~ span,body.red label [type='week'] ~ span,body.red label [type='email'] ~ span,body.red label [type='number'] ~ span,body.red label [type='search'] ~ span,body.red label [type='tel'] ~ span,body.red label [type='time'] ~ span,body.red label [type='url'] ~ span,body.red label [type='color'] ~ span,body.red label textarea ~ span,body.red label input[type=text] ~ span,body.red label input:not([type]) ~ span{color:rgba(0,0,0,0.65)}body.red label textarea{-webkit-box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important;box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important}body.red input.notEmpty:invalid{background-color:rgba(255,0,0,0.65)}body.blue{background:#fff;color:#000}body.blue #cookie-compliance{background-color:#1a3062;color:#fff}body.blue #cookie-compliance a.link{color:#546cfe;border-bottom-color:#546cfe}body.blue #cookie-compliance a.link:hover{color:#546cfe;border-bottom-color:#546cfe}body.blue a.link{text-decoration:none;color:#546cfe;border-bottom:none}body.blue a.link:hover{color:#546cfe;border-bottom-color:#546cfe}body.blue .loader #spinner{stroke:#673AB7}body.blue nav.top-bar{color:#fff;background:#2c58ae}body.blue .top-bar ul{background:#2c58ae !important}body.blue .top-bar ul a{color:#fff}body.blue button.button,body.blue a.button{background-color:#2c58ae}body.blue button.button.disabled,body.blue button.button.disabled:hover,body.blue button.button.disabled:focus,body.blue button.button:hover,body.blue a.button.disabled,body.blue a.button.disabled:hover,body.blue a.button.disabled:focus,body.blue a.button:hover{background-color:#2c58ae}body.blue .switch input:checked+.slider{background-color:#2c58ae}body.blue .switch input:focus+.slider{-webkit-box-shadow:0 0 1px #2c58ae;box-shadow:0 0 1px #2c58ae}body.blue label{color:#000}body.blue .background .modal{background-color:#fefefe}body.blue svg .fill-color,body.blue svg.fill-color{fill:currentColor}body.blue svg .fill-background,body.blue svg.fill-background{fill:#fefefe}body.blue label [type='text'],body.blue label [type='password'],body.blue label [type='date'],body.blue label [type='datetime'],body.blue label [type='datetime-local'],body.blue label [type='month'],body.blue label [type='week'],body.blue label [type='email'],body.blue label [type='number'],body.blue label [type='search'],body.blue label [type='tel'],body.blue label [type='time'],body.blue label [type='url'],body.blue label [type='color'],body.blue label textarea,body.blue label input[type=text],body.blue label input:not([type]){border-bottom:solid #000;background:#fff;color:#000}body.blue label [type='text']:focus,body.blue label [type='password']:focus,body.blue label [type='date']:focus,body.blue label [type='datetime']:focus,body.blue label [type='datetime-local']:focus,body.blue label [type='month']:focus,body.blue label [type='week']:focus,body.blue label [type='email']:focus,body.blue label [type='number']:focus,body.blue label [type='search']:focus,body.blue label [type='tel']:focus,body.blue label [type='time']:focus,body.blue label [type='url']:focus,body.blue label [type='color']:focus,body.blue label textarea:focus,body.blue label input[type=text]:focus,body.blue label input:not([type]):focus{border-bottom:solid #000}body.blue label [type='text']:focus ~ span,body.blue label [type='text'].notEmpty:not(:focus) ~ span,body.blue label [type='password']:focus ~ span,body.blue label [type='password'].notEmpty:not(:focus) ~ span,body.blue label [type='date']:focus ~ span,body.blue label [type='date'].notEmpty:not(:focus) ~ span,body.blue label [type='datetime']:focus ~ span,body.blue label [type='datetime'].notEmpty:not(:focus) ~ span,body.blue label [type='datetime-local']:focus ~ span,body.blue label [type='datetime-local'].notEmpty:not(:focus) ~ span,body.blue label [type='month']:focus ~ span,body.blue label [type='month'].notEmpty:not(:focus) ~ span,body.blue label [type='week']:focus ~ span,body.blue label [type='week'].notEmpty:not(:focus) ~ span,body.blue label [type='email']:focus ~ span,body.blue label [type='email'].notEmpty:not(:focus) ~ span,body.blue label [type='number']:focus ~ span,body.blue label [type='number'].notEmpty:not(:focus) ~ span,body.blue label [type='search']:focus ~ span,body.blue label [type='search'].notEmpty:not(:focus) ~ span,body.blue label [type='tel']:focus ~ span,body.blue label [type='tel'].notEmpty:not(:focus) ~ span,body.blue label [type='time']:focus ~ span,body.blue label [type='time'].notEmpty:not(:focus) ~ span,body.blue label [type='url']:focus ~ span,body.blue label [type='url'].notEmpty:not(:focus) ~ span,body.blue label [type='color']:focus ~ span,body.blue label [type='color'].notEmpty:not(:focus) ~ span,body.blue label textarea:focus ~ span,body.blue label textarea.notEmpty:not(:focus) ~ span,body.blue label input[type=text]:focus ~ span,body.blue label input[type=text].notEmpty:not(:focus) ~ span,body.blue label input:not([type]):focus ~ span,body.blue label input:not([type]).notEmpty:not(:focus) ~ span{color:#000}body.blue label [type='text'] ~ span,body.blue label [type='password'] ~ span,body.blue label [type='date'] ~ span,body.blue label [type='datetime'] ~ span,body.blue label [type='datetime-local'] ~ span,body.blue label [type='month'] ~ span,body.blue label [type='week'] ~ span,body.blue label [type='email'] ~ span,body.blue label [type='number'] ~ span,body.blue label [type='search'] ~ span,body.blue label [type='tel'] ~ span,body.blue label [type='time'] ~ span,body.blue label [type='url'] ~ span,body.blue label [type='color'] ~ span,body.blue label textarea ~ span,body.blue label input[type=text] ~ span,body.blue label input:not([type]) ~ span{color:rgba(0,0,0,0.65)}body.blue label textarea{-webkit-box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important;box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important}body.blue input.notEmpty:invalid{background-color:rgba(44,88,174,0.65)}body.green{background:#fff;color:#000}body.green #cookie-compliance{background-color:#003613;color:#fff}body.green #cookie-compliance a.link{color:#009829;border-bottom-color:#009829}body.green #cookie-compliance a.link:hover{color:#009829;border-bottom-color:#009829}body.green a.link{text-decoration:none;color:#009829;border-bottom:none}body.green a.link:hover{color:#009829;border-bottom-color:#009829}body.green .loader #spinner{stroke:green}body.green nav.top-bar{color:#fff;background:green}body.green .top-bar ul{background:green !important}body.green .top-bar ul a{color:#fff}body.green button.button,body.green a.button{background-color:green}body.green button.button.disabled,body.green button.button.disabled:hover,body.green button.button.disabled:focus,body.green button.button:hover,body.green a.button.disabled,body.green a.button.disabled:hover,body.green a.button.disabled:focus,body.green a.button:hover{background-color:green}body.green .switch input:checked+.slider{background-color:green}body.green .switch input:focus+.slider{-webkit-box-shadow:0 0 1px green;box-shadow:0 0 1px green}body.green label{color:#000}body.green .background .modal{background-color:#fefefe}body.green svg .fill-color,body.green svg.fill-color{fill:currentColor}body.green svg .fill-background,body.green svg.fill-background{fill:#fefefe}body.green label [type='text'],body.green label [type='password'],body.green label [type='date'],body.green label [type='datetime'],body.green label [type='datetime-local'],body.green label [type='month'],body.green label [type='week'],body.green label [type='email'],body.green label [type='number'],body.green label [type='search'],body.green label [type='tel'],body.green label [type='time'],body.green label [type='url'],body.green label [type='color'],body.green label textarea,body.green label input[type=text],body.green label input:not([type]){border-bottom:solid #000;background:#fff;color:#000}body.green label [type='text']:focus,body.green label [type='password']:focus,body.green label [type='date']:focus,body.green label [type='datetime']:focus,body.green label [type='datetime-local']:focus,body.green label [type='month']:focus,body.green label [type='week']:focus,body.green label [type='email']:focus,body.green label [type='number']:focus,body.green label [type='search']:focus,body.green label [type='tel']:focus,body.green label [type='time']:focus,body.green label [type='url']:focus,body.green label [type='color']:focus,body.green label textarea:focus,body.green label input[type=text]:focus,body.green label input:not([type]):focus{border-bottom:solid #000}body.green label [type='text']:focus ~ span,body.green label [type='text'].notEmpty:not(:focus) ~ span,body.green label [type='password']:focus ~ span,body.green label [type='password'].notEmpty:not(:focus) ~ span,body.green label [type='date']:focus ~ span,body.green label [type='date'].notEmpty:not(:focus) ~ span,body.green label [type='datetime']:focus ~ span,body.green label [type='datetime'].notEmpty:not(:focus) ~ span,body.green label [type='datetime-local']:focus ~ span,body.green label [type='datetime-local'].notEmpty:not(:focus) ~ span,body.green label [type='month']:focus ~ span,body.green label [type='month'].notEmpty:not(:focus) ~ span,body.green label [type='week']:focus ~ span,body.green label [type='week'].notEmpty:not(:focus) ~ span,body.green label [type='email']:focus ~ span,body.green label [type='email'].notEmpty:not(:focus) ~ span,body.green label [type='number']:focus ~ span,body.green label [type='number'].notEmpty:not(:focus) ~ span,body.green label [type='search']:focus ~ span,body.green label [type='search'].notEmpty:not(:focus) ~ span,body.green label [type='tel']:focus ~ span,body.green label [type='tel'].notEmpty:not(:focus) ~ span,body.green label [type='time']:focus ~ span,body.green label [type='time'].notEmpty:not(:focus) ~ span,body.green label [type='url']:focus ~ span,body.green label [type='url'].notEmpty:not(:focus) ~ span,body.green label [type='color']:focus ~ span,body.green label [type='color'].notEmpty:not(:focus) ~ span,body.green label textarea:focus ~ span,body.green label textarea.notEmpty:not(:focus) ~ span,body.green label input[type=text]:focus ~ span,body.green label input[type=text].notEmpty:not(:focus) ~ span,body.green label input:not([type]):focus ~ span,body.green label input:not([type]).notEmpty:not(:focus) ~ span{color:#000}body.green label [type='text'] ~ span,body.green label [type='password'] ~ span,body.green label [type='date'] ~ span,body.green label [type='datetime'] ~ span,body.green label [type='datetime-local'] ~ span,body.green label [type='month'] ~ span,body.green label [type='week'] ~ span,body.green label [type='email'] ~ span,body.green label [type='number'] ~ span,body.green label [type='search'] ~ span,body.green label [type='tel'] ~ span,body.green label [type='time'] ~ span,body.green label [type='url'] ~ span,body.green label [type='color'] ~ span,body.green label textarea ~ span,body.green label input[type=text] ~ span,body.green label input:not([type]) ~ span{color:rgba(0,0,0,0.65)}body.green label textarea{-webkit-box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important;box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important}body.green input.notEmpty:invalid{background-color:rgba(0,128,0,0.65)}body.pink{background:#fff;color:#000}body.pink #cookie-compliance{background-color:#70374a;color:#fff}body.pink #cookie-compliance a.link{color:#fe64af;border-bottom-color:#fe64af}body.pink #cookie-compliance a.link:hover{color:#fe64af;border-bottom-color:#fe64af}body.pink a.link{text-decoration:none;color:#fe64af;border-bottom:none}body.pink a.link:hover{color:#fe64af;border-bottom-color:#fe64af}body.pink .loader #spinner{stroke:hotpink}body.pink nav.top-bar{color:#fff;background:hotpink}body.pink .top-bar ul{background:hotpink !important}body.pink .top-bar ul a{color:#fff}body.pink button.button,body.pink a.button{background-color:hotpink}body.pink button.button.disabled,body.pink button.button.disabled:hover,body.pink button.button.disabled:focus,body.pink button.button:hover,body.pink a.button.disabled,body.pink a.button.disabled:hover,body.pink a.button.disabled:focus,body.pink a.button:hover{background-color:hotpink}body.pink .switch input:checked+.slider{background-color:hotpink}body.pink .switch input:focus+.slider{-webkit-box-shadow:0 0 1px hotpink;box-shadow:0 0 1px hotpink}body.pink label{color:#000}body.pink .background .modal{background-color:#fefefe}body.pink svg .fill-color,body.pink svg.fill-color{fill:currentColor}body.pink svg .fill-background,body.pink svg.fill-background{fill:#fefefe}body.pink label [type='text'],body.pink label [type='password'],body.pink label [type='date'],body.pink label [type='datetime'],body.pink label [type='datetime-local'],body.pink label [type='month'],body.pink label [type='week'],body.pink label [type='email'],body.pink label [type='number'],body.pink label [type='search'],body.pink label [type='tel'],body.pink label [type='time'],body.pink label [type='url'],body.pink label [type='color'],body.pink label textarea,body.pink label input[type=text],body.pink label input:not([type]){border-bottom:solid #000;background:#fff;color:#000}body.pink label [type='text']:focus,body.pink label [type='password']:focus,body.pink label [type='date']:focus,body.pink label [type='datetime']:focus,body.pink label [type='datetime-local']:focus,body.pink label [type='month']:focus,body.pink label [type='week']:focus,body.pink label [type='email']:focus,body.pink label [type='number']:focus,body.pink label [type='search']:focus,body.pink label [type='tel']:focus,body.pink label [type='time']:focus,body.pink label [type='url']:focus,body.pink label [type='color']:focus,body.pink label textarea:focus,body.pink label input[type=text]:focus,body.pink label input:not([type]):focus{border-bottom:solid #000}body.pink label [type='text']:focus ~ span,body.pink label [type='text'].notEmpty:not(:focus) ~ span,body.pink label [type='password']:focus ~ span,body.pink label [type='password'].notEmpty:not(:focus) ~ span,body.pink label [type='date']:focus ~ span,body.pink label [type='date'].notEmpty:not(:focus) ~ span,body.pink label [type='datetime']:focus ~ span,body.pink label [type='datetime'].notEmpty:not(:focus) ~ span,body.pink label [type='datetime-local']:focus ~ span,body.pink label [type='datetime-local'].notEmpty:not(:focus) ~ span,body.pink label [type='month']:focus ~ span,body.pink label [type='month'].notEmpty:not(:focus) ~ span,body.pink label [type='week']:focus ~ span,body.pink label [type='week'].notEmpty:not(:focus) ~ span,body.pink label [type='email']:focus ~ span,body.pink label [type='email'].notEmpty:not(:focus) ~ span,body.pink label [type='number']:focus ~ span,body.pink label [type='number'].notEmpty:not(:focus) ~ span,body.pink label [type='search']:focus ~ span,body.pink label [type='search'].notEmpty:not(:focus) ~ span,body.pink label [type='tel']:focus ~ span,body.pink label [type='tel'].notEmpty:not(:focus) ~ span,body.pink label [type='time']:focus ~ span,body.pink label [type='time'].notEmpty:not(:focus) ~ span,body.pink label [type='url']:focus ~ span,body.pink label [type='url'].notEmpty:not(:focus) ~ span,body.pink label [type='color']:focus ~ span,body.pink label [type='color'].notEmpty:not(:focus) ~ span,body.pink label textarea:focus ~ span,body.pink label textarea.notEmpty:not(:focus) ~ span,body.pink label input[type=text]:focus ~ span,body.pink label input[type=text].notEmpty:not(:focus) ~ span,body.pink label input:not([type]):focus ~ span,body.pink label input:not([type]).notEmpty:not(:focus) ~ span{color:#000}body.pink label [type='text'] ~ span,body.pink label [type='password'] ~ span,body.pink label [type='date'] ~ span,body.pink label [type='datetime'] ~ span,body.pink label [type='datetime-local'] ~ span,body.pink label [type='month'] ~ span,body.pink label [type='week'] ~ span,body.pink label [type='email'] ~ span,body.pink label [type='number'] ~ span,body.pink label [type='search'] ~ span,body.pink label [type='tel'] ~ span,body.pink label [type='time'] ~ span,body.pink label [type='url'] ~ span,body.pink label [type='color'] ~ span,body.pink label textarea ~ span,body.pink label input[type=text] ~ span,body.pink label input:not([type]) ~ span{color:rgba(0,0,0,0.65)}body.pink label textarea{-webkit-box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important;box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important}body.pink input.notEmpty:invalid{background-color:rgba(255,105,180,0.65)}body.black{background:#fff;color:#000}body.black #cookie-compliance{background-color:#353535;color:#fff}body.black #cookie-compliance a.link{color:#fff;border-bottom-color:#fff}body.black #cookie-compliance a.link:hover{color:#cacaca;border-bottom-color:#cacaca}body.black a.link{text-decoration:none;color:#000;border-bottom:1px solid #000}body.black a.link:hover{color:#4e4e4e;border-bottom-color:#4e4e4e}body.black .loader #spinner{stroke:#000}body.black nav.top-bar{color:#fff;background:#000}body.black .top-bar ul{background:#000 !important}body.black .top-bar ul a{color:#fff}body.black button.button,body.black a.button{background-color:#000}body.black button.button.disabled,body.black button.button.disabled:hover,body.black button.button.disabled:focus,body.black button.button:hover,body.black a.button.disabled,body.black a.button.disabled:hover,body.black a.button.disabled:focus,body.black a.button:hover{background-color:#000}body.black .switch input:checked+.slider{background-color:#000}body.black .switch input:focus+.slider{-webkit-box-shadow:0 0 1px #000;box-shadow:0 0 1px #000}body.black label{color:#000}body.black .background .modal{background-color:#fefefe}body.black svg .fill-color,body.black svg.fill-color{fill:currentColor}body.black svg .fill-background,body.black svg.fill-background{fill:#fefefe}body.black label [type='text'],body.black label [type='password'],body.black label [type='date'],body.black label [type='datetime'],body.black label [type='datetime-local'],body.black label [type='month'],body.black label [type='week'],body.black label [type='email'],body.black label [type='number'],body.black label [type='search'],body.black label [type='tel'],body.black label [type='time'],body.black label [type='url'],body.black label [type='color'],body.black label textarea,body.black label input[type=text],body.black label input:not([type]){border-bottom:solid #000;background:#fff;color:#000}body.black label [type='text']:focus,body.black label [type='password']:focus,body.black label [type='date']:focus,body.black label [type='datetime']:focus,body.black label [type='datetime-local']:focus,body.black label [type='month']:focus,body.black label [type='week']:focus,body.black label [type='email']:focus,body.black label [type='number']:focus,body.black label [type='search']:focus,body.black label [type='tel']:focus,body.black label [type='time']:focus,body.black label [type='url']:focus,body.black label [type='color']:focus,body.black label textarea:focus,body.black label input[type=text]:focus,body.black label input:not([type]):focus{border-bottom:solid #000}body.black label [type='text']:focus ~ span,body.black label [type='text'].notEmpty:not(:focus) ~ span,body.black label [type='password']:focus ~ span,body.black label [type='password'].notEmpty:not(:focus) ~ span,body.black label [type='date']:focus ~ span,body.black label [type='date'].notEmpty:not(:focus) ~ span,body.black label [type='datetime']:focus ~ span,body.black label [type='datetime'].notEmpty:not(:focus) ~ span,body.black label [type='datetime-local']:focus ~ span,body.black label [type='datetime-local'].notEmpty:not(:focus) ~ span,body.black label [type='month']:focus ~ span,body.black label [type='month'].notEmpty:not(:focus) ~ span,body.black label [type='week']:focus ~ span,body.black label [type='week'].notEmpty:not(:focus) ~ span,body.black label [type='email']:focus ~ span,body.black label [type='email'].notEmpty:not(:focus) ~ span,body.black label [type='number']:focus ~ span,body.black label [type='number'].notEmpty:not(:focus) ~ span,body.black label [type='search']:focus ~ span,body.black label [type='search'].notEmpty:not(:focus) ~ span,body.black label [type='tel']:focus ~ span,body.black label [type='tel'].notEmpty:not(:focus) ~ span,body.black label [type='time']:focus ~ span,body.black label [type='time'].notEmpty:not(:focus) ~ span,body.black label [type='url']:focus ~ span,body.black label [type='url'].notEmpty:not(:focus) ~ span,body.black label [type='color']:focus ~ span,body.black label [type='color'].notEmpty:not(:focus) ~ span,body.black label textarea:focus ~ span,body.black label textarea.notEmpty:not(:focus) ~ span,body.black label input[type=text]:focus ~ span,body.black label input[type=text].notEmpty:not(:focus) ~ span,body.black label input:not([type]):focus ~ span,body.black label input:not([type]).notEmpty:not(:focus) ~ span{color:#000}body.black label [type='text'] ~ span,body.black label [type='password'] ~ span,body.black label [type='date'] ~ span,body.black label [type='datetime'] ~ span,body.black label [type='datetime-local'] ~ span,body.black label [type='month'] ~ span,body.black label [type='week'] ~ span,body.black label [type='email'] ~ span,body.black label [type='number'] ~ span,body.black label [type='search'] ~ span,body.black label [type='tel'] ~ span,body.black label [type='time'] ~ span,body.black label [type='url'] ~ span,body.black label [type='color'] ~ span,body.black label textarea ~ span,body.black label input[type=text] ~ span,body.black label input:not([type]) ~ span{color:rgba(0,0,0,0.65)}body.black label textarea{-webkit-box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important;box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important}body.black input.notEmpty:invalid{background-color:rgba(0,0,0,0.65)}body.default{background:rgba(0,0,0,0);color:#000}body.default #cookie-compliance{background-color:#353535;color:#fff}body.default #cookie-compliance a.link{color:#fff;border-bottom-color:#fff}body.default #cookie-compliance a.link:hover{color:#cacaca;border-bottom-color:#cacaca}body.default a.link{text-decoration:none;color:#000;border-bottom:1px solid #000}body.default a.link:hover{color:#4e4e4e;border-bottom-color:#4e4e4e}body.default .loader #spinner{stroke:#000}body.default nav.top-bar{color:#fff;background:#000}body.default .top-bar ul{background:#000 !important}body.default .top-bar ul a{color:#fff}body.default button.button,body.default a.button{background-color:#000}body.default button.button.disabled,body.default button.button.disabled:hover,body.default button.button.disabled:focus,body.default button.button:hover,body.default a.button.disabled,body.default a.button.disabled:hover,body.default a.button.disabled:focus,body.default a.button:hover{background-color:#000}body.default .switch input:checked+.slider{background-color:#000}body.default .switch input:focus+.slider{-webkit-box-shadow:0 0 1px #000;box-shadow:0 0 1px #000}body.default label{color:#000}body.default .background .modal{background-color:#fefefe}body.default svg .fill-color,body.default svg.fill-color{fill:currentColor}body.default svg .fill-background,body.default svg.fill-background{fill:#fefefe}body.default label [type='text'],body.default label [type='password'],body.default label [type='date'],body.default label [type='datetime'],body.default label [type='datetime-local'],body.default label [type='month'],body.default label [type='week'],body.default label [type='email'],body.default label [type='number'],body.default label [type='search'],body.default label [type='tel'],body.default label [type='time'],body.default label [type='url'],body.default label [type='color'],body.default label textarea,body.default label input[type=text],body.default label input:not([type]){border-bottom:solid #000;background:rgba(0,0,0,0);color:#000}body.default label [type='text']:focus,body.default label [type='password']:focus,body.default label [type='date']:focus,body.default label [type='datetime']:focus,body.default label [type='datetime-local']:focus,body.default label [type='month']:focus,body.default label [type='week']:focus,body.default label [type='email']:focus,body.default label [type='number']:focus,body.default label [type='search']:focus,body.default label [type='tel']:focus,body.default label [type='time']:focus,body.default label [type='url']:focus,body.default label [type='color']:focus,body.default label textarea:focus,body.default label input[type=text]:focus,body.default label input:not([type]):focus{border-bottom:solid #000}body.default label [type='text']:focus ~ span,body.default label [type='text'].notEmpty:not(:focus) ~ span,body.default label [type='password']:focus ~ span,body.default label [type='password'].notEmpty:not(:focus) ~ span,body.default label [type='date']:focus ~ span,body.default label [type='date'].notEmpty:not(:focus) ~ span,body.default label [type='datetime']:focus ~ span,body.default label [type='datetime'].notEmpty:not(:focus) ~ span,body.default label [type='datetime-local']:focus ~ span,body.default label [type='datetime-local'].notEmpty:not(:focus) ~ span,body.default label [type='month']:focus ~ span,body.default label [type='month'].notEmpty:not(:focus) ~ span,body.default label [type='week']:focus ~ span,body.default label [type='week'].notEmpty:not(:focus) ~ span,body.default label [type='email']:focus ~ span,body.default label [type='email'].notEmpty:not(:focus) ~ span,body.default label [type='number']:focus ~ span,body.default label [type='number'].notEmpty:not(:focus) ~ span,body.default label [type='search']:focus ~ span,body.default label [type='search'].notEmpty:not(:focus) ~ span,body.default label [type='tel']:focus ~ span,body.default label [type='tel'].notEmpty:not(:focus) ~ span,body.default label [type='time']:focus ~ span,body.default label [type='time'].notEmpty:not(:focus) ~ span,body.default label [type='url']:focus ~ span,body.default label [type='url'].notEmpty:not(:focus) ~ span,body.default label [type='color']:focus ~ span,body.default label [type='color'].notEmpty:not(:focus) ~ span,body.default label textarea:focus ~ span,body.default label textarea.notEmpty:not(:focus) ~ span,body.default label input[type=text]:focus ~ span,body.default label input[type=text].notEmpty:not(:focus) ~ span,body.default label input:not([type]):focus ~ span,body.default label input:not([type]).notEmpty:not(:focus) ~ span{color:#000}body.default label [type='text'] ~ span,body.default label [type='password'] ~ span,body.default label [type='date'] ~ span,body.default label [type='datetime'] ~ span,body.default label [type='datetime-local'] ~ span,body.default label [type='month'] ~ span,body.default label [type='week'] ~ span,body.default label [type='email'] ~ span,body.default label [type='number'] ~ span,body.default label [type='search'] ~ span,body.default label [type='tel'] ~ span,body.default label [type='time'] ~ span,body.default label [type='url'] ~ span,body.default label [type='color'] ~ span,body.default label textarea ~ span,body.default label input[type=text] ~ span,body.default label input:not([type]) ~ span{color:rgba(0,0,0,0.65)}body.default label textarea{-webkit-box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important;box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important}body.default input.notEmpty:invalid{background-color:rgba(0,0,0,0.65)}body.dark{background:#000;color:#fff}body.dark #cookie-compliance{background-color:#4b4b4b;color:#fff}body.dark #cookie-compliance a.link{color:#fff;border-bottom-color:#fff}body.dark #cookie-compliance a.link:hover{color:#fff;border-bottom-color:#fff}body.dark a.link{text-decoration:none;color:#fff;border-bottom:1px solid #fff}body.dark a.link:hover{color:#fff;border-bottom-color:#fff}body.dark .loader #spinner{stroke:#fff}body.dark nav.top-bar{color:#fff;background:#373737}body.dark .top-bar ul{background:#373737 !important}body.dark .top-bar ul a{color:#fff}body.dark button.button,body.dark a.button{background-color:#373737}body.dark button.button.disabled,body.dark button.button.disabled:hover,body.dark button.button.disabled:focus,body.dark button.button:hover,body.dark a.button.disabled,body.dark a.button.disabled:hover,body.dark a.button.disabled:focus,body.dark a.button:hover{background-color:#373737}body.dark .switch input:checked+.slider{background-color:#373737}body.dark .switch input:focus+.slider{-webkit-box-shadow:0 0 1px #373737;box-shadow:0 0 1px #373737}body.dark label{color:#fff}body.dark .background .modal{background-color:#fefefe}body.dark svg .fill-color,body.dark svg.fill-color{fill:currentColor}body.dark svg .fill-background,body.dark svg.fill-background{fill:#fefefe}body.dark label [type='text'],body.dark label [type='password'],body.dark label [type='date'],body.dark label [type='datetime'],body.dark label [type='datetime-local'],body.dark label [type='month'],body.dark label [type='week'],body.dark label [type='email'],body.dark label [type='number'],body.dark label [type='search'],body.dark label [type='tel'],body.dark label [type='time'],body.dark label [type='url'],body.dark label [type='color'],body.dark label textarea,body.dark label input[type=text],body.dark label input:not([type]){border-bottom:solid #fff;background:#000;color:#fff}body.dark label [type='text']:focus,body.dark label [type='password']:focus,body.dark label [type='date']:focus,body.dark label [type='datetime']:focus,body.dark label [type='datetime-local']:focus,body.dark label [type='month']:focus,body.dark label [type='week']:focus,body.dark label [type='email']:focus,body.dark label [type='number']:focus,body.dark label [type='search']:focus,body.dark label [type='tel']:focus,body.dark label [type='time']:focus,body.dark label [type='url']:focus,body.dark label [type='color']:focus,body.dark label textarea:focus,body.dark label input[type=text]:focus,body.dark label input:not([type]):focus{border-bottom:solid #fff}body.dark label [type='text']:focus ~ span,body.dark label [type='text'].notEmpty:not(:focus) ~ span,body.dark label [type='password']:focus ~ span,body.dark label [type='password'].notEmpty:not(:focus) ~ span,body.dark label [type='date']:focus ~ span,body.dark label [type='date'].notEmpty:not(:focus) ~ span,body.dark label [type='datetime']:focus ~ span,body.dark label [type='datetime'].notEmpty:not(:focus) ~ span,body.dark label [type='datetime-local']:focus ~ span,body.dark label [type='datetime-local'].notEmpty:not(:focus) ~ span,body.dark label [type='month']:focus ~ span,body.dark label [type='month'].notEmpty:not(:focus) ~ span,body.dark label [type='week']:focus ~ span,body.dark label [type='week'].notEmpty:not(:focus) ~ span,body.dark label [type='email']:focus ~ span,body.dark label [type='email'].notEmpty:not(:focus) ~ span,body.dark label [type='number']:focus ~ span,body.dark label [type='number'].notEmpty:not(:focus) ~ span,body.dark label [type='search']:focus ~ span,body.dark label [type='search'].notEmpty:not(:focus) ~ span,body.dark label [type='tel']:focus ~ span,body.dark label [type='tel'].notEmpty:not(:focus) ~ span,body.dark label [type='time']:focus ~ span,body.dark label [type='time'].notEmpty:not(:focus) ~ span,body.dark label [type='url']:focus ~ span,body.dark label [type='url'].notEmpty:not(:focus) ~ span,body.dark label [type='color']:focus ~ span,body.dark label [type='color'].notEmpty:not(:focus) ~ span,body.dark label textarea:focus ~ span,body.dark label textarea.notEmpty:not(:focus) ~ span,body.dark label input[type=text]:focus ~ span,body.dark label input[type=text].notEmpty:not(:focus) ~ span,body.dark label input:not([type]):focus ~ span,body.dark label input:not([type]).notEmpty:not(:focus) ~ span{color:#fff}body.dark label [type='text'] ~ span,body.dark label [type='password'] ~ span,body.dark label [type='date'] ~ span,body.dark label [type='datetime'] ~ span,body.dark label [type='datetime-local'] ~ span,body.dark label [type='month'] ~ span,body.dark label [type='week'] ~ span,body.dark label [type='email'] ~ span,body.dark label [type='number'] ~ span,body.dark label [type='search'] ~ span,body.dark label [type='tel'] ~ span,body.dark label [type='time'] ~ span,body.dark label [type='url'] ~ span,body.dark label [type='color'] ~ span,body.dark label textarea ~ span,body.dark label input[type=text] ~ span,body.dark label input:not([type]) ~ span{color:rgba(255,255,255,0.65)}body.dark label textarea{-webkit-box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important;box-shadow:0 0 3px 2px rgba(135,135,135,0.31) !important}body.dark input.notEmpty:invalid{background-color:rgba(55,55,55,0.65)}@-webkit-keyframes tutorialPointer{0%{top:25%}100%{top:75%}}@keyframes tutorialPointer{0%{top:25%}100%{top:75%}}.tutorial-blanket{display:none;position:fixed;top:0;bottom:0;left:0;right:0;z-index:9001;background:rgba(55,55,55,0.51)}.tutorial .tutorial-blanket{display:block}.tutorial .tutorial-text{color:white;font-size:1.5rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition:none !important;transition:none !important}.tutorial .tutorial-text *{-webkit-transition:none !important;transition:none !important}.tutorial.step-1 #level .segment-row{position:inherit}.tutorial.step-1 #level .segment-parent:nth-child(3),.tutorial.step-1 #level .segment-parent:nth-child(3).rotating{z-index:9900 !important}.tutorial.step-1 .tutorial-text .step-1{display:initial;z-index:9900 !important;position:relative}.tutorial.step-2 #level{z-index:9900 !important}.tutorial.step-2 .tutorial-text .step-2{display:initial;z-index:9900 !important;position:relative}.tutorial.step-3 .tutorial-text .step-3{display:initial;z-index:9900 !important;position:relative}.tutorial.step-3 .top-bar{z-index:9900 !important}.tutorial.step-3 .help-action{margin-top:0;padding-top:10px;position:relative;overflow:visible;margin-right:10px;-webkit-box-shadow:0 0 10px 5px #fff;box-shadow:0 0 10px 5px #fff}.tutorial.step-4 .tutorial-text .step-4{display:initial;z-index:9900 !important;position:relative}.tutorial.step-4 #level .segment-row{position:inherit}.tutorial.step-4 #level .segment-row>.child-container .segment-parent.layer-2,.tutorial.step-4 #level .segment-row>.child-container>.segment-parent.layer-2.rotating{z-index:9900 !important}.tutorial.step-4 #level .segment-row>.child-container .segment-parent.layer-2 #tutorial-pointer,.tutorial.step-4 #level .segment-row>.child-container>.segment-parent.layer-2.rotating #tutorial-pointer{width:0.6em;height:0.6em;border-radius:50%;left:75%;position:absolute;top:75%;z-index:1;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);-webkit-animation:tutorialPointer 2s infinite;animation:tutorialPointer 2s infinite;pointer-events:none}#tutorial-site{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}#tutorial-site #tutorial-1,#tutorial-site #tutorial-2,#tutorial-site #tutorial-3{text-align:center;margin-top:0.7rem;margin-bottom:0.5rem}#tutorial-site #tutorial-2 .help-action{width:100%;margin-bottom:0.3rem}#tutorial-site #tutorial-3 .tutorial-wrapper{position:relative}#tutorial-site #tutorial-3 .tutorial-wrapper #tutorial-pointer{width:0.6em;height:0.6em;border-radius:50%;left:75%;position:absolute;top:75%;z-index:1;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);-webkit-animation:tutorialPointer 2s infinite;animation:tutorialPointer 2s infinite;pointer-events:none}body.red #tutorial-pointer{background:red}body.red #level-number-container.in-main-menu{background:#fff;border-color:#000}body.red .segment.segment-parent{border-color:#555}body.red .segment.segment-parent.layer-2{border-color:#000}body.red #site>:not(.won) .segment.locked{cursor:default;border-color:#870015;background-color:red !important}body.red #site>:not(.won) .segment.locked>.child-container>.segment-leaf{cursor:default}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-90{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-180{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-270{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-360{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-90{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-180{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-270{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-360{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-90{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-180{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-270{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-360{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-90{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-180{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-270{background-color:#fff}body.red .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-360{background-color:#fff}body.blue #tutorial-pointer{background:#2c58ae}body.blue #level-number-container.in-main-menu{background:#fff;border-color:#000}body.blue .segment.segment-parent{border-color:#555}body.blue .segment.segment-parent.layer-2{border-color:#000}body.blue #site>:not(.won) .segment.locked{cursor:default;border-color:#1a3062;background-color:#2c58ae !important}body.blue #site>:not(.won) .segment.locked>.child-container>.segment-leaf{cursor:default}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-90{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-180{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-270{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-360{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-90{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-180{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-270{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-360{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-90{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-180{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-270{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-360{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-90{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-180{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-270{background-color:#fff}body.blue .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-360{background-color:#fff}body.green #tutorial-pointer{background:green}body.green #level-number-container.in-main-menu{background:#fff;border-color:#000}body.green .segment.segment-parent{border-color:#555}body.green .segment.segment-parent.layer-2{border-color:#000}body.green #site>:not(.won) .segment.locked{cursor:default;border-color:#003613;background-color:green !important}body.green #site>:not(.won) .segment.locked>.child-container>.segment-leaf{cursor:default}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-90{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-180{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-270{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-360{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-90{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-180{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-270{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-360{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-90{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-180{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-270{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-360{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-90{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-180{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-270{background-color:#fff}body.green .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-360{background-color:#fff}body.pink #tutorial-pointer{background:hotpink}body.pink #level-number-container.in-main-menu{background:#fff;border-color:#000}body.pink .segment.segment-parent{border-color:#555}body.pink .segment.segment-parent.layer-2{border-color:#000}body.pink #site>:not(.won) .segment.locked{cursor:default;border-color:#70374a;background-color:hotpink !important}body.pink #site>:not(.won) .segment.locked>.child-container>.segment-leaf{cursor:default}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-90{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-180{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-270{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-360{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-90{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-180{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-270{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-360{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-90{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-180{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-270{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-360{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-90{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-180{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-270{background-color:#fff}body.pink .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-360{background-color:#fff}body.black #tutorial-pointer{background:#000}body.black #level-number-container.in-main-menu{background:#fff;border-color:#000}body.black .segment.segment-parent{border-color:#555}body.black .segment.segment-parent.layer-2{border-color:#000}body.black #site>:not(.won) .segment.locked{cursor:default;border-color:#353535;background-color:#000 !important}body.black #site>:not(.won) .segment.locked>.child-container>.segment-leaf{cursor:default}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-90{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-180{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-270{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-360{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-90{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-180{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-270{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-360{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-90{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-180{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-270{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-360{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-90{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-180{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-270{background-color:#fff}body.black .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-360{background-color:#fff}body.default #tutorial-pointer{background:#000}body.default #level-number-container.in-main-menu{background:rgba(0,0,0,0);border-color:#000}body.default .segment.segment-parent{border-color:#555}body.default .segment.segment-parent.layer-2{border-color:#000}body.default #site>:not(.won) .segment.locked{cursor:default;border-color:#353535;background-color:#000 !important}body.default #site>:not(.won) .segment.locked>.child-container>.segment-leaf{cursor:default}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-90{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-180{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-270{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-360{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-90{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-180{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-270{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-360{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-90{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-180{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-270{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-360{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-90{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-180{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-270{background-color:rgba(0,0,0,0)}body.default .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-360{background-color:rgba(0,0,0,0)}body.dark #tutorial-pointer{background:#373737}body.dark #level-number-container.in-main-menu{background:#000;border-color:#fff}body.dark .segment.segment-parent{border-color:#9b9b9b}body.dark .segment.segment-parent.layer-2{border-color:#fff}body.dark #site>:not(.won) .segment.locked{cursor:default;border-color:#4b4b4b;background-color:#373737 !important}body.dark #site>:not(.won) .segment.locked>.child-container>.segment-leaf{cursor:default}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-90{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-180{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-270{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-90>.child-container>.segment.rotate-360{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-90{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-180{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-270{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-180>.child-container>.segment.rotate-360{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-90{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-180{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-270{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-270>.child-container>.segment.rotate-360{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-90{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-180{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-270{background-color:#000}body.dark .segment:not(.segment-row):not(.segment-triangle).rotate-360>.child-container>.segment.rotate-360{background-color:#000}body.default{background:#0f0f49;color:white}body.default *{color:white}body.default #level-number-container.in-main-menu{background:#fff !important}body.default .segment.segment-parent:not(.layer-2){border-color:#005d07;background:rgba(109,255,127,0.2) !important}body.default #site>:not(.won) .segment.locked{background-color:transparent !important;border-color:#42ff4a !important}body.default #site>:not(.won) .segment.locked>.child-container>.segment-leaf{background-color:transparent !important}body.dark .switch input:checked+.slider{border-color:black}body.dark .switch .slider{border:solid 1px white;background-color:inherit;padding:1px;margin-bottom:0;margin-top:0}body.dark #site>:not(.won) .segment.locked.layer-2{border-color:#565656}body.dark .modal{background-color:#fefefe;border:1px solid white;border-radius:2px}body.black #site>:not(.won) .segment.locked{background-color:#9d9d9d !important;border-color:#6e6e6e !important}body.black #site>:not(.won) .segment.locked>.child-container>.segment-leaf{background-color:transparent !important}body.black #logo{border:1px solid grey;border-radius:50%}.no-transition{-webkit-transition:none !important;transition:none !important}.no-transition *{-webkit-transition:none !important;transition:none !important}nav.top-bar.title-bar{padding:0.3rem 0.6rem 0}#logo{max-width:2rem;-webkit-transition:none;transition:none}#action-bar .top-bar-right .menu .action.img a{padding-bottom:0}#action-bar .top-bar-right .menu .action.img a img{max-height:1.8rem}.menu a,.dropdown.menu a{padding:0.2rem 0.5rem}.relative-level-number{position:relative}.relative-level-number #level-number-container{top:50%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}#level-number-container,.level-counter{z-index:1;position:absolute;left:50%;-webkit-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%);border:3px solid white;border-radius:50%;display:table-cell;height:40px;width:40px;text-align:center;vertical-align:middle}#level-number-container.level-counter,.level-counter.level-counter{position:fixed !important;font-size:1.8rem}#level-number-container.level-counter.num-10,.level-counter.level-counter.num-10{font-size:1.3rem}#level-number-container.level-counter.num-100,.level-counter.level-counter.num-100{font-size:0.9rem}#level-number-container.level-counter.num-1000,.level-counter.level-counter.num-1000{font-size:0.65rem}#level-number-container.in-main-menu,.level-counter.in-main-menu{background:white;border-color:black;height:1em;width:1em;min-height:1em;min-width:1em;max-height:1em;max-width:1em}#level-number-container a,.level-counter a{width:initial !important}#level-number-container #level-number,#level-number-container a,.level-counter #level-number,.level-counter a{-webkit-transition:none;transition:none;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);font-weight:bold}.coin-counter{display:inline-block;position:relative;font-size:1.6rem}@media print, screen and (max-width: 24.99875em){.coin-counter{font-size:1rem}}.coin-counter :after{background-image:url(img/coinTower.png);background-size:28px 28px;width:28px;height:28px;display:inline-block;content:""}#coin-container{line-height:1}#coin-container .coin{margin-left:3px;margin-right:3px;max-width:20px;display:inline-block}@media print, screen and (min-width: 25em){#coin-container .coin{max-width:25px}}@media print, screen and (min-width: 40em){#coin-container .coin{max-width:30px}}@-webkit-keyframes rotate-90{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}@keyframes rotate-90{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}@-webkit-keyframes rotate-reverse-90{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}@keyframes rotate-reverse-90{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}@-webkit-keyframes rotate-180{0%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}100%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes rotate-180{0%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}100%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@-webkit-keyframes rotate-reverse-180{0%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes rotate-reverse-180{0%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@-webkit-keyframes rotate-270{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}@keyframes rotate-270{0%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}@-webkit-keyframes rotate-reverse-270{0%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}@keyframes rotate-reverse-270{0%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}@-webkit-keyframes rotate-360{0%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-360{0%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes rotate-reverse-360{0%{-webkit-transform:rotate(450deg);transform:rotate(450deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-reverse-360{0%{-webkit-transform:rotate(450deg);transform:rotate(450deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.segment:not(.segment-row):not(.segment-triangle).rotating{z-index:10 !important;overflow:hidden}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90{-webkit-animation-name:rotate-90;animation-name:rotate-90;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90>.child-container>.segment{-webkit-animation-name:rotate-360;animation-name:rotate-360;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;animation-direction:reverse;-webkit-animation-direction:reverse;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-90;animation-name:rotate-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-180;animation-name:rotate-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-270;animation-name:rotate-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-360;animation-name:rotate-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse>.child-container>.segment{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-90.reverse>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180{-webkit-animation-name:rotate-180;animation-name:rotate-180;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180>.child-container>.segment{-webkit-animation-name:rotate-270;animation-name:rotate-270;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;animation-direction:reverse;-webkit-animation-direction:reverse;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-360;animation-name:rotate-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-90;animation-name:rotate-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-180;animation-name:rotate-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-270;animation-name:rotate-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse>.child-container>.segment{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-180.reverse>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270{-webkit-animation-name:rotate-270;animation-name:rotate-270;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270>.child-container>.segment{-webkit-animation-name:rotate-180;animation-name:rotate-180;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;animation-direction:reverse;-webkit-animation-direction:reverse;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-270;animation-name:rotate-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-360;animation-name:rotate-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-90;animation-name:rotate-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-180;animation-name:rotate-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse>.child-container>.segment{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-270.reverse>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360{-webkit-animation-name:rotate-360;animation-name:rotate-360;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360>.child-container>.segment{-webkit-animation-name:rotate-90;animation-name:rotate-90;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;animation-direction:reverse;-webkit-animation-direction:reverse;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-180;animation-name:rotate-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-270;animation-name:rotate-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-360;animation-name:rotate-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-90;animation-name:rotate-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse>.child-container>.segment{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse>.child-container>.segment.rotate-90{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse>.child-container>.segment.rotate-180{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse>.child-container>.segment.rotate-270{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle).rotating.rotate-360.reverse>.child-container>.segment.rotate-360{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-90{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-90.rotating{-webkit-animation-name:rotate-360;animation-name:rotate-360;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-90.rotating.reverse{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-180{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-180.rotating{-webkit-animation-name:rotate-90;animation-name:rotate-90;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-180.rotating.reverse{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-270{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-270.rotating{-webkit-animation-name:rotate-180;animation-name:rotate-180;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-270.rotating.reverse{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-360{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-360.rotating{-webkit-animation-name:rotate-270;animation-name:rotate-270;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-90>.child-container>.segment.rotate-360.rotating.reverse{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-90{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-90.rotating{-webkit-animation-name:rotate-270;animation-name:rotate-270;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-90.rotating.reverse{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-180{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-180.rotating{-webkit-animation-name:rotate-360;animation-name:rotate-360;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-180.rotating.reverse{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-270{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-270.rotating{-webkit-animation-name:rotate-90;animation-name:rotate-90;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-270.rotating.reverse{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-360{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-360.rotating{-webkit-animation-name:rotate-180;animation-name:rotate-180;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-180>.child-container>.segment.rotate-360.rotating.reverse{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-90{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-90.rotating{-webkit-animation-name:rotate-180;animation-name:rotate-180;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-90.rotating.reverse{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-180{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-180.rotating{-webkit-animation-name:rotate-270;animation-name:rotate-270;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-180.rotating.reverse{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-270{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-270.rotating{-webkit-animation-name:rotate-360;animation-name:rotate-360;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-270.rotating.reverse{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-360{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-360.rotating{-webkit-animation-name:rotate-90;animation-name:rotate-90;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-270>.child-container>.segment.rotate-360.rotating.reverse{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-90.rotating{-webkit-animation-name:rotate-90;animation-name:rotate-90;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-90.rotating.reverse{-webkit-animation-name:rotate-reverse-90;animation-name:rotate-reverse-90}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-180.rotating{-webkit-animation-name:rotate-180;animation-name:rotate-180;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-180.rotating.reverse{-webkit-animation-name:rotate-reverse-180;animation-name:rotate-reverse-180}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-270.rotating{-webkit-animation-name:rotate-270;animation-name:rotate-270;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-270.rotating.reverse{-webkit-animation-name:rotate-reverse-270;animation-name:rotate-reverse-270}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-360{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);background-color:inherit;z-index:1}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-360.rotating{-webkit-animation-name:rotate-360;animation-name:rotate-360;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear}.segment:not(.segment-row):not(.segment-triangle):not(.rotating).rotate-360>.child-container>.segment.rotate-360.rotating.reverse{-webkit-animation-name:rotate-reverse-360;animation-name:rotate-reverse-360}#level{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;-webkit-transition:none;transition:none;max-width:100%;-webkit-tap-highlight-color:rgba(255,255,255,0);overflow-y:visible}#level *{-webkit-transition:none;transition:none}.segment{vertical-align:top;white-space:initial;cursor:pointer;display:inline-block;text-align:center;position:relative;-webkit-transition:none;transition:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1;background-color:inherit;line-height:0}.segment.segment-row{display:block;width:100%;-webkit-animation:none !important;animation:none !important;white-space:nowrap}.segment.segment-column{padding-top:4px}.segment.segment-column>.child-container>.segment{display:block;width:100%}.segment.segment-leaf{background-color:transparent !important;min-width:1em;padding:0.8em}.segment.segment-leaf:before{content:" ";display:block;padding-top:100%}.segment.segment-leaf .leaf-element{position:absolute;width:100%;height:100%;line-height:1.5em;top:0;left:0}.segment.segment-parent{border:solid 1px #a9a9a9;border-radius:3px;padding:1px}.segment.segment-parent.layer-2{border:solid 3px #000000}#site>:not(.won) .show-when-won{display:none}.level-container{-webkit-transition:none;transition:none}.won .show-while-playing{display:none}.won #won-text{text-shadow:0 0.2rem 0.2rem #464646,0.6rem 0.8rem 0.4rem rgba(0,0,0,0.564706)}.text-right{text-align:right}#continue-button{margin-bottom:2px}@media print, screen and (max-width: 24.99875em){#continue-button{margin-bottom:0;padding:0.3em .6em}}@media print, screen and (max-width: 24.99875em){#play-button{margin-bottom:0.5rem}}#help-button{margin:0;padding:0.4em 0.4em;max-width:3em}@media print, screen and (max-width: 39.99875em){#help-button{padding:0.2em 0.2em;max-width:2em}}.line-height-1{line-height:1}body{-ms-scroll-chaining:none;overscroll-behavior:contain;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#site{overflow:visible}div.mainContainer{overflow-x:hidden}.clickable{cursor:pointer}#share-button{overflow:hidden}#share-button svg{cursor:pointer;max-width:1.5rem}svg{color:black}svg .fill-background{fill:white}@-webkit-keyframes jump-animation{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(2);transform:scale(2)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes jump-animation{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(2);transform:scale(2)}100%{-webkit-transform:scale(1);transform:scale(1)}}.jump-animation{-webkit-animation-name:jump-animation;animation-name:jump-animation;-webkit-animation-duration:0.4s;animation-duration:0.4s;-webkit-animation-fill-mode:none;animation-fill-mode:none;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes shake{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}33%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}66%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes shake{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}33%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}66%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.shake .leaf-element{-webkit-animation:shake 0.15s;animation:shake 0.15s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}nav.top-bar{padding:0;margin-left:-.625rem;margin-right:-.625rem}@media print, screen and (min-width: 40em){nav.top-bar{margin-left:-.9375rem;margin-right:-.9375rem}}nav.top-bar.with-image .background-img{display:none}nav.top-bar .background-img{display:none}nav.top-bar>.grid-container{background:inherit;position:fixed;top:0;left:0;right:0}nav.top-bar>.grid-container>.grid-padding-x{display:block;padding:0.5rem;margin:0;padding-right:0}nav.top-bar>.grid-container>.grid-padding-x>.small-12{padding:0}nav.top-bar ul>li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}nav.top-bar ul>li.level-counter{margin-top:0.2rem}body.theme-blue{background:#427081;color:#fff}body.theme-blue label{color:#fff}body.theme-blue .toast .message{background:#4d575a}body.theme-blue nav.top-bar,body.theme-blue nav.top-bar.with-image,body.theme-blue nav.top-bar.with-image.solid{background:#4d575a}body.theme-blue .button{background:#4d575a}body.theme-blue .switch input:checked+.slider{background:#d3e7eb}body.theme-blue #level-number-container{background:#427081}body.theme-blue svg{color:#000}body.theme-blue ul.menu li a{color:#fff}body.theme-blue a{color:#d3e7eb}body.theme-blue a.hidden-link{color:#fff}body.theme-blue #site>:not(.won) .segment.locked{background-color:#00000030}body.theme-blue #tutorial-pointer{background:#d3e7eb}@keyframes rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(450deg);transform:rotate(450deg)}}@keyframes line{0%{stroke-dasharray:2, 85.964;-webkit-transform:rotate(0);transform:rotate(0)}50%{stroke-dasharray:65.973, 21.9911;stroke-dashoffset:0}100%{stroke-dasharray:2, 85.964;stroke-dashoffset:-65.973;-webkit-transform:rotate(90deg);transform:rotate(90deg)}}html,body{min-height:100%;width:100%;height:100%;letter-spacing:1px;-ms-scroll-chaining:none;overscroll-behavior:none}a,a:hover{color:#ffca00}#site{position:relative;max-height:100%;max-width:100%;height:100%;width:100%}.right{float:right}.grow{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.loader{left:50%;top:50%;position:fixed;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);text-align:center}.loader.overlay{left:0;top:0;right:0;bottom:0;background-color:rgba(192,192,192,0.5);-webkit-transform:none;-ms-transform:none;transform:none;z-index:10000}.loader.overlay svg{left:50%;top:50%;position:fixed;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);text-align:center}.loader.inline{left:initial;top:initial;position:initial;-webkit-transform:initial;-ms-transform:initial;transform:initial;text-align:center;display:inline}.loader.small .spinner{-webkit-transform:scale(0.5);-ms-transform:scale(0.5);transform:scale(0.5)}.loader .spinner{-webkit-box-sizing:border-box;box-sizing:border-box;stroke:#000;stroke-width:3px;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:line 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite,rotate 1.6s linear infinite;animation:line 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite,rotate 1.6s linear infinite}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.height-100{height:100%}.hidden{display:none}.vertical-middle{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.vertical-bottom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:end;-webkit-align-items:end;-ms-flex-align:end;align-items:end}.horizontal-center{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.width-100{width:100%}h1.inline{display:inline-block}h2.inline{display:inline-block}h3.inline{display:inline-block}h4.inline{display:inline-block}h5.inline{display:inline-block}h6.inline{display:inline-block}img.back-button{cursor:pointer;max-height:1.1rem;margin-right:0.2rem;margin-bottom:0.65rem}a.hidden-link{color:inherit}#main-content-container{overflow:auto;width:100%}#main-content-container>.grid-x{overflow:auto;margin-top:0.5rem;margin-bottom:0.5rem}#main-content-container #main-content{padding-top:0;padding-bottom:0} + +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/util/_breakpoint.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_reveal.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/vendor/normalize.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/_global.scss */ +/*# sourceURL=webpack://./src/client/sass/_foundationSettings.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/util/_mixins.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_text.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/util/_unit.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_checkbox.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_label.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_help-text.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_input-group.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_fieldset.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_select.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/forms/_error.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/typography/_base.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/typography/_helpers.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/typography/_alignment.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/typography/_print.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_classes.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_gutters.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_grid.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_cell.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/util/_math.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_layout.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_collapse.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_position.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/xy-grid/_frame.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_button.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_button-group.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_close-button.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_label.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_progress-bar.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_slider.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_switch.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_table.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/util/_color.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_badge.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_breadcrumbs.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_callout.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_card.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_dropdown.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_pagination.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_tooltip.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_accordion.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_media-object.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_orbit.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_responsive-embed.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_tabs.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_thumbnail.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_menu.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_menu-icon.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_accordion-menu.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_drilldown.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_dropdown-menu.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_off-canvas.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_sticky.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_title-bar.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_top-bar.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_float.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/util/_flex.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_flex.scss */ +/*# sourceURL=webpack://./node_modules/foundation-sites/scss/components/_visibility.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_toast.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_dialog.scss */ +/*# sourceURL=webpack://./src/client/sass/_settings.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_form.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_navbar.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_tabbedFragment.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_alphabeticList.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_abstractWindow.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites/src/client/scss/_index.scss */ +/*# sourceURL=webpack://./node_modules/cordova-sites-user-management/src/client/scss/_rights.scss */ +/*# sourceURL=webpack://./src/client/sass/lib/_share.scss */ +/*# sourceURL=webpack://./src/client/sass/lib/_core.scss */ +/*# sourceURL=webpack://./src/client/sass/lib/_coreSettings.scss */ +/*# sourceURL=webpack://./src/client/sass/lib/_settingsSite.scss */ +/*# sourceURL=webpack://./src/client/sass/lib/_style.scss */ +/*# sourceURL=webpack://./src/client/sass/lib/_theme.scss */ +/*# sourceURL=webpack://./src/client/sass/_tutorial.scss */ +/*# sourceURL=webpack://./src/client/sass/_wordrotatorTheme.scss */ +/*# sourceURL=webpack://./src/client/sass/wordRotator.scss */ +/*# sourceURL=webpack://./src/client/sass/_animations.scss */ +/*# sourceURL=webpack://./src/client/sass/_navbarOverride.scss */ +/*# sourceURL=webpack://./src/client/sass/_themeBlue.scss */ +/*# sourceURL=webpack://./src/client/sass/index.scss */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19yZXZlYWwuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdmVuZG9yL25vcm1hbGl6ZS5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9fZ2xvYmFsLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvX2ZvdW5kYXRpb25TZXR0aW5ncy5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdW5pdC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fY2hlY2tib3guc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2xhYmVsLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19oZWxwLXRleHQuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2lucHV0LWdyb3VwLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19maWVsZHNldC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fc2VsZWN0LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19lcnJvci5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19iYXNlLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2hlbHBlcnMuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYWxpZ25tZW50LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3ByaW50LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2NsYXNzZXMuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fZ3V0dGVycy5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2NlbGwuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWF0aC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19sYXlvdXQuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY29sbGFwc2Uuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fcG9zaXRpb24uc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fZnJhbWUuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2J1dHRvbi1ncm91cC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jbG9zZS1idXR0b24uc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbGFiZWwuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcHJvZ3Jlc3MtYmFyLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3NsaWRlci5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zd2l0Y2guc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFibGUuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fY29sb3Iuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYmFkZ2Uuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnJlYWRjcnVtYnMuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2FsbG91dC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYXJkLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3BhZ2luYXRpb24uc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9vbHRpcC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19hY2NvcmRpb24uc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVkaWEtb2JqZWN0LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX29yYml0LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3Jlc3BvbnNpdmUtZW1iZWQuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFicy5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aHVtYm5haWwuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVudS5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LWljb24uc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYWNjb3JkaW9uLW1lbnUuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJpbGxkb3duLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLW1lbnUuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb2ZmLWNhbnZhcy5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGl0bGUtYmFyLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RvcC1iYXIuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxvYXQuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZmxleC5zY3NzIiwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbGV4LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3Zpc2liaWxpdHkuc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9jb3Jkb3ZhLXNpdGVzL3NyYy9jbGllbnQvc2Nzcy9fdG9hc3Quc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9jb3Jkb3ZhLXNpdGVzL3NyYy9jbGllbnQvc2Nzcy9fZGlhbG9nLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvX3NldHRpbmdzLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvY29yZG92YS1zaXRlcy9zcmMvY2xpZW50L3Njc3MvX2Zvcm0uc2NzcyIsIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9jb3Jkb3ZhLXNpdGVzL3NyYy9jbGllbnQvc2Nzcy9fbmF2YmFyLnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvY29yZG92YS1zaXRlcy9zcmMvY2xpZW50L3Njc3MvX3RhYmJlZEZyYWdtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvY29yZG92YS1zaXRlcy9zcmMvY2xpZW50L3Njc3MvX2FscGhhYmV0aWNMaXN0LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvY29yZG92YS1zaXRlcy9zcmMvY2xpZW50L3Njc3MvX2Fic3RyYWN0V2luZG93LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvY29yZG92YS1zaXRlcy9zcmMvY2xpZW50L3Njc3MvX2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvY29yZG92YS1zaXRlcy11c2VyLW1hbmFnZW1lbnQvc3JjL2NsaWVudC9zY3NzL19yaWdodHMuc2NzcyIsIndlYnBhY2s6Ly8uL3NyYy9jbGllbnQvc2Fzcy9saWIvX3NoYXJlLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvbGliL19jb3JlLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvbGliL19jb3JlU2V0dGluZ3Muc2NzcyIsIndlYnBhY2s6Ly8uL3NyYy9jbGllbnQvc2Fzcy9saWIvX3NldHRpbmdzU2l0ZS5zY3NzIiwid2VicGFjazovLy4vc3JjL2NsaWVudC9zYXNzL2xpYi9fc3R5bGUuc2NzcyIsIndlYnBhY2s6Ly8uL3NyYy9jbGllbnQvc2Fzcy9saWIvX3RoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvX3R1dG9yaWFsLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvX3dvcmRyb3RhdG9yVGhlbWUuc2NzcyIsIndlYnBhY2s6Ly8uL3NyYy9jbGllbnQvc2Fzcy93b3JkUm90YXRvci5zY3NzIiwid2VicGFjazovLy4vc3JjL2NsaWVudC9zYXNzL19hbmltYXRpb25zLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvX25hdmJhck92ZXJyaWRlLnNjc3MiLCJ3ZWJwYWNrOi8vLi9zcmMvY2xpZW50L3Nhc3MvX3RoZW1lQmx1ZS5zY3NzIiwid2VicGFjazovLy4vc3JjL2NsaWVudC9zYXNzL2luZGV4LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0xRLDJDQ25JTixpREFDRSxVQUFXLENBQ1gsU0FBVSxDQUNWLGFBQWMsQ0FDZixDQ2hERCwyRUFBQSxDQUE0RSxLQVMxRSxnQkFBaUIsQ0FDakIsNkJBQThCLENBQy9CLEtBUUMsUUFBUyxDQUNWLEdBTUMsYUFBYyxDQUNkLGVBQWdCLENBQ2pCLEdBU0MsOEJBQXVCLENBQXZCLHNCQUF1QixDQUN2QixRQUFTLENBQ1QsZ0JBQWlCLENBQ2xCLElBTUMsZ0NBQWlDLENBQ2pDLGFBQWMsQ0FDZixFQVFDLDRCQUE2QixDQUM5QixZQU1DLGtCQUFtQixDQUNuQix5QkFBMEIsQ0FDMUIsd0NBQWlCLENBQWpCLGdDQUFpQyxDQUNsQyxTQU1DLGtCQUFtQixDQUNwQixjQVFDLGdDQUFpQyxDQUNqQyxhQUFjLENBQ2YsTUFLQyxhQUFjLENBQ2YsUUFPQyxhQUFjLENBQ2Qs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QUlDLHdCVFdnQixDU1ZoQixrQlQyWCtCLENTMVhoQyxtQkFJQyxZQUFhLENBQ2QsaUJBR0MsV0FBWSxDQUNaLHFCQUFzQixDQUN2Qix1QkFFQyxhQUFjLENBQ2QsZ0JBQWlCLENBQ2xCLDhCQ3JDQyxvQlY4QmtCLENVN0JsQix3QkFBK0QsQ0FFL0QseURBQ0UsYVYwQmdCLENVM0JsQixnREFDRSxhVjBCZ0IsQ1UzQmxCLG9EQUNFLGFWMEJnQixDVTNCbEIscURBQ0UsYVYwQmdCLENVM0JsQiwyQ0FDRSxhVjBCZ0IsQ1V6QmpCLGtCQTBCQyxhVkRnQixDVUVqQixZQXJCSCxZQUFhLENBQ2IsaUJBQWdDLENBQ2hDLGtCUDhCdUQsQ081QnZELGdCUDRCdUQsQ08zQnZELGdCVjZCdUIsQ1U1QnZCLGFWYW9CLENVTXBCLHVCQUlJLGFBQWMsQ0FDZixvRUNnS0QsUUFBUyxDQUNULFNBQVUsQ0FDWCxFQUlDLGtCWHpGMEIsQ1cyRjFCLGlCQUFrQixDQUNsQixlWDdGc0IsQ1c4RnRCLGlDWDVGeUMsQ1c2RjFDLEtBS0MsaUJBQWtCLENBQ2xCLG1CQUFvQixDQUNyQixTQUtDLGdCWG5McUIsQ1dvTHJCLG1CQUFvQixDYnRMdEIsTWEyTEUsYVhuSGlCLENXb0hqQixtQkFBb0IsQ0FDckIsMENBU0MsOERYMU1xRSxDVzJNckUsaUJYdkpzQixDV3dKdEIsa0JYdk15QixDV3dNekIsYVh2SmtCLENXd0psQixpQ1huSXNDLENXeUh4QyxrSEFhSSxhQUFjLENBQ2QsYVh4TmUsQ1d5TmhCLE9BWU8sZ0JSM042QyxDUXVPN0MsZVhwTFcsQ1c0TFgsWUFBYSxDQU9iLG1CWGxNaUIsQ1dtS3JCLE9BSUksaUJSM042QyxDUXVPN0MsZVhwTFcsQ1c0TFgsWUFBYSxDQU9iLG1CWGxNaUIsQ1dtS3JCLE9BSUksbUJSM042QyxDUXVPN0MsZVhwTFcsQ1c0TFgsWUFBYSxDQU9iLG1CWGxNaUIsQ1dtS3JCLE9BSUksa0JSM042QyxDUXVPN0MsZVhwTFcsQ1c0TFgsWUFBYSxDQU9iLG1CWGxNaUIsQ1dtS3JCLE9BSUksbUJSM042QyxDUXVPN0MsZVhwTFcsQ1c0TFgsWUFBYSxDQU9iLG1CWGxNaUIsQ1dtS3JCLE9BSUksY1IzTjZDLENRdU83QyxlWHBMVyxDVzRMWCxZQUFhLENBT2IsbUJYbE1pQixDSm9DckIsMkNlK0hBLE9BSUksY1IzTjZDLENRdU5qRCxPQUlJLGdCUjNONkMsQ1F1TmpELE9BSUksbUJSM042QyxDUXVOakQsT0FJSSxtQlIzTjZDLENRdU5qRCxPQUlJLGlCUjNONkMsQ1F1TmpELE9BSUksY1IzTjZDLENRd1BoRCxDYnhSUCxFYStSRSxtQkFBb0IsQ0FDcEIsYVhqUm9CLENXa1JwQixvQlg1S3lCLENXOEt6QixjQUFlLENBTGpCLGdCQVNJLGFYbkwyRCxDVzBLL0QsTUFnQkksUUFBUyxDYmpVYixHYXVVRSxVQUFXLENBRVgsZVJ0UnFELENRdVJyRCxRQUFTLENBQ1QsbUJYL0x5QixDV2lNekIsWUFBYSxDQUNiLGNBQWUsQ0FDZiwrQlh0U2lCLENXdVNqQixhQUFjLENBQ2YsU0FNQyxrQlh6TjBCLENXME4xQiwyQlh4TXlCLENXeU16QixlWDVOc0IsQ1c2TnZCLEdBSUMsaUJBQWtCLENBQ25CLEdBSUMsbUJYbE5zQixDV21OdEIsb0JYck5rQixDV3NObkIsR0FJQyxtQlh4TnNCLENXeU52Qix3QkFLRyxtQlg3TjJCLENXOE4zQixlQUFnQixDQUNqQixHQUtELGtCWG5PeUIsQ1drTzNCLE1BSUksbUJYcE84QixDV3FPOUIsZ0JYclVtQixDV3NVcEIsV0FLRCxlWGxRMEIsQ1dtUTFCLG9DUjlVcUQsQ1ErVXJELDZCWHpWaUIsQ1dzVm5CLHdCQU1JLGVYeFFvQixDV3lRcEIsYVg1VmEsQ1c2VmQsaUJBY0QsZ0NYMVdXLENXMldYLFdBQVksQ0FDWixvQkFBcUIsQ0FDdEIsT0FJQyxRQUFTLENBQ1YsSUFXQyxRQUFTLENBQ1Qsd0JSalhTLENRbVhULHdCWG5ZZ0IsQ1dxWWhCLHdEWHpVbUUsQ1cwVW5FLGFYbllXLENXd1laLFdDbFZDLGdCWjBFeUIsQ1l6RXpCLG1CWjBFNEIsQ1l4RTVCLGtCWmhEeUIsQ1lpRHpCLGVabUVz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SHJGSSxrQkdxRkwsQ0hyRksscUJHcUZMLENIckZLLGlCR3FGTCxDSHJGSyxhR3FGTCxDQUFDLGNIL0VHLFVHd0NDLENBQUksZ0JIcENILFVHb0NELENBQUkseVBIcEJGLHVCQUNNLENBRE4sNEJBQ00sQ0FETixlQUNNLENBQUksb0NuQnNIa0IscVJtQnZINUIsdUJBQ00sQ0FETiw0QkFDTSxDQUROLGVBQ00sQ0FBSSxDQUNqQiwyQ25CZ0h5Qyx1UW1CbEhsQyx1QkFDTSxDQUROLDRCQUNNLENBRE4sZUFDTSxDQUFJLENBQ2pCLDJDbkJnSHlDLHlQbUJsSGxDLHVCQUNNLENBRE4sNEJBQ00sQ0FETixlQUNNLENBQUksQ0FDakIsK01BWTJDLGtCRzZDM0MsQ0g3QzJDLHFCRzZDM0MsQ0g3QzJDLGlCRzZDM0MsQ0g3QzJDLGFHNkMzQyxDQUFDLGlCSDlCZ0IsY0lzRGQsQ0FBbUQsaUJKdERyQyxlSXNEZCxDQUFtRCxpQkp0RHJDLFNJc0RkLENBQW1ELGlCSnREckMsZUlzRGQsQ0FBbUQsaUJKdERyQyxlSXNEZCxDQUFtRCxpQkp0RHJDLFNJc0RkLENBQW1ELGlCSnREckMsZUlzRGQsQ0FBbUQsaUJKdERyQyxlSXNEZCxDQUFtRCxpQkp0RHJDLFNJc0RkLENBQW1ELGtCSnREcEMsZUlzRGYsQ0FBbUQsa0JKdERwQyxlSXNEZixDQUFtRCxrQkp0RHBDLFVJc0RmLENBQW1ELG9DdkJvQ25CLHNCbUI5R2Isa0JHa0R0QixDSGxEc0Isb0JHa0R0QixDSGxEc0IsZ0JHa0R0QixDSGxEc0IsWUdrRHRCLENBQUMsVUF2Q0ksQ0FBSSwrUEhOa0Msa0JHNkMzQyxDSDdDMkMscUJHNkMzQyxDSDdDMkMsaUJHNkMzQyxDSDdDMkMsYUc2QzNDLENBQUMsd0JIdkN1QixVR0FuQixDQUFJLG1CSFNVLGNJc0RoQixDQUFtRCxtQkp0RG5DLGVJc0RoQixDQUFtRCxtQkp0RG5DLFNJc0RoQixDQUFtRCxtQkp0RG5DLGVJc0RoQixDQUFtRCxtQkp0RG5DLGVJc0RoQixDQUFtRCxtQkp0RG5DLFNJc0RoQixDQUFtRCxtQkp0RG5DLGVJc0RoQixDQUFtRCxtQkp0RG5DLGVJc0RoQixDQUFtRCxtQkp0RG5DLFNJc0RoQixDQUFtRCxvQkp0RGxDLGVJc0RqQixDQUFtRCxvQkp0RGxDLGVJc0RqQixDQUFtRCxvQkp0RGxDLFVJc0RqQixDQUFtRCxDSm5EdEQsMkNuQmtGeUMscUJtQnpHcEIsa0JHa0RyQixDSGxEcUIsb0JHa0RyQixDSGxEcUIsZ0JHa0RyQixDSGxEcUIsWUdrRHJCLENBQUMsVUF2Q0ksQ0FBSSxrUEhOa0Msa0JHNkMzQyxDSDdDMkMscUJHNkMzQyxDSDdDMkMsaUJHNkMzQyxDSDdDMkMsYUc2QzNDLENBQUMsdUJIdkNzQixVR0FsQixDQUFJLGtCSFNTLGNJc0RmLENBQW1ELGtCSnREcEMsZUlzRGYsQ0FBbUQsa0JKdERwQyxTSXNEZixDQUFtRCxrQkp0RHBDLGVJc0RmLENBQW1ELGtCSnREcEMsZUlzRGYsQ0FBbUQsa0JKdERwQyxTSXNEZixDQUFtRCxrQkp0RHBDLGVJc0RmLENBQW1ELGtCSnREcEMsZUlzRGYsQ0FBbUQsa0JKdERwQyxTSXNEZixDQUFtRCxtQkp0RG5DLGVJc0RoQixDQUFtRCxtQkp0RG5DLGVJc0RoQixDQUFtRCxtQkp0RG5DLFVJc0RoQixDQUFtRCxDSm5EdEQsMkNuQmtGeUMsb0JtQnpHckIsa0JHa0RwQixDSGxEb0Isb0JHa0RwQixDSGxEb0IsZ0JHa0RwQixDSGxEb0IsWUdrRHBCLENBQUMsVUF2Q0ksQ0FBSSxxT0hOa0Msa0JHNkMzQyxDSDdDMkMscUJHNkMzQyxDSDdDMkMsaUJHNkMzQyxDSDdDMkMsYUc2QzNDLENBQUMsc0JIdkNxQixVR0FqQixDQUFJLGlCSFNRLGNJc0RkLENBQW1ELGlCSnREckMsZUlzRGQsQ0FBbUQsaUJKdERyQyxTSXNEZCxDQUFtRCxpQkp0RHJDLGVJc0RkLENBQW1ELGlCSnREckMsZUlzRGQsQ0FBbUQsaUJKdERyQyxTSXNEZCxDQUFtRCxpQkp0RHJDLGVJc0RkLENBQW1ELGlCSnREckMsZUlzRGQsQ0FBbUQsaUJKdERyQyxTSXNEZCxDQUFtRCxrQkp0RHBDLGVJc0RmLENBQW1ELGtCSnREcEMsZUlzRGYsQ0FBbUQsa0JKdERwQyxVSXNEZixDQUFtRCxDSm5EdEQsa0NBSzhCLFVBQzFCLENBQUksa0NBSXNCLFdBQ3pCLENBQUksZUE4QkEsb0JDdkdvQixDQUFpQyxxQkFBakMsQ0FBaUMsMkNwQmdKckIsZW1CekNoQyxxQkN2R29CLENBQWlDLHNCQUFqQyxDQUFpQyxDRHNJbEUscUJBM0JRLDBCRzdCdUMsQ0FBZ0QsbUJGckVoRSxDQUFpQyxvQkFBakMsQ0FBaUMsMkNwQnVJbkIscUJtQnJDckMsMkJHN0J1QyxDQUFnRCxvQkZyRWhFLENBQWlDLHFCQUFqQyxDQUFpQyxDRDJHMUQscUJBckNBLFVHN0JHLENBQUksdUJIaUNMLFVHakNDLENBQUksd0JIeUNGLDhCR2JvQyxDQUFnRCx3QkhhcEYsK0JHYm9DLENBQWdELHdCSGFwRix5Qkdib0MsQ0FBZ0Qsd0JIYXBGLCtCR2JvQyxDQUFnRCx3QkhhcEYsK0JHYm9DLENBQWdELHdCSGFwRix5Qkdib0MsQ0FBZ0Qsd0JIYXBGLCtCR2JvQyxDQUFnRCx3QkhhcEYsK0JHYm9DLENBQWdELHdCSGFwRix5Qkdib0MsQ0FBZ0QseUJIYW5GLCtCR2JtQyxDQUFnRCx5QkhhbkYsK0JHYm1DLENBQWdELHlCSGFuRiwwQkdibUMsQ0FBZ0Qsb0N0QnVFeEQsNkJtQnRFekIsVUc3QkwsQ0FBSSwrQkhpQ0csVUdqQ1AsQ0FBSSwwQkh5Q0EsOEJHYmtDLENBQWdELDBCSGFsRiwrQkdia0MsQ0FBZ0QsMEJIYWxGLHlCR2JrQyxDQUFnRCwwQkhhbEYsK0JHYmtDLENBQWdELDBCSGFsRiwrQkdia0MsQ0FBZ0QsMEJIYWxGLHlCR2JrQyxDQUFnRCwwQkhhbEYsK0JHYmtDLENBQWdELDBCSGFsRiwrQkdia0MsQ0FBZ0QsMEJIYWxGLHlCR2JrQyxDQUFnRCwyQkhhakYsK0JHYmlDLENBQWdELDJCSGFqRiwrQkdiaUMsQ0FBZ0QsMkJIYWpGLDBCR2JpQyxDQUFnRCxDSGU3RiwyQ25CbUQyQyxxQm1CakV2QyxVRzdCRyxDQUFJLHVCSGlDTCxVR2pDQyxDQUFJLHdCSHlDRiwrQkdib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHdCSGFwRixnQ0dib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHdCSGFwRixnQ0dib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHlCSGFuRixnQ0dibUMsQ0FBZ0QseUJIYW5GLGdDR2JtQyxDQUFnRCx5QkhhbkYsMkJHYm1DLENBQWdELDRCSENsRixVRzdCSixDQUFJLDhCSGlDRSxVR2pDTixDQUFJLHlCSHlDRCwrQkdibUMsQ0FBZ0QseUJIYW5GLGdDR2JtQyxDQUFnRCx5QkhhbkYsMEJHYm1DLENBQWdELHlCSGFuRixnQ0dibUMsQ0FBZ0QseUJIYW5GLGdDR2JtQyxDQUFnRCx5QkhhbkYsMEJHYm1DLENBQWdELHlCSGFuRixnQ0dibUMsQ0FBZ0QseUJIYW5GLGdDR2JtQyxDQUFnRCx5QkhhbkYsMEJHYm1DLENBQWdELDBCSGFsRixnQ0dia0MsQ0FBZ0QsMEJIYWxGLGdDR2JrQyxDQUFnRCwwQkhhbEYsMkJHYmtDLENBQWdELENIZTdGLDJDbkJtRDJDLDJCbUJqRWpDLFVHN0JILENBQUksNkJIaUNDLFVHakNMLENBQUksd0JIeUNGLCtCR2JvQyxDQUFnRCx3QkhhcEYsZ0NHYm9DLENBQWdELHdCSGFwRiwwQkdib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsZ0NHYm9DLENBQWdELHdCSGFwRiwwQkdib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsZ0NHYm9DLENBQWdELHdCSGFwRiwwQkdib0MsQ0FBZ0QseUJIYW5GLGdDR2JtQyxDQUFnRCx5QkhhbkYsZ0NHYm1DLENBQWdELHlCSGFuRiwyQkdibUMsQ0FBZ0QsQ0hlN0YsZ0NBaURjLHFCQzlJaUIsQ0FBaUMsb0JBQWpDLENBQWlDLDJDcEJnSnJCLGdDbUJGN0Isc0JDOUlpQixDQUFpQyxxQkFBakMsQ0FBaUMsQ0RnSmhFLDJDQUxZLHFCQzNJbUIsQ0FBaUMsb0JBQWpDLENBQWlDLDJDcEJnSnJCLDJDbUJML0Isc0JDM0ltQixDQUFpQyxxQkFBakMsQ0FBaUMsQ0RzSmhFLHNCQUdNLHFCQ3pKeUIsQ0FBaUMsb0JBQWpDLENBQWlDLDJDcEJnSnJCLHNCbUJTckMsc0JDekp5QixDQUFpQyxxQkFBakMsQ0FBaUMsQ0QySmhFLGtCSzNKTSxVRGlIRCxDQUFtRCxrQkNqSGxELFNEaUhELENBQW1ELGtCQ2pIbEQsZURpSEQsQ0FBbUQsa0JDakhsRCxTRGlIRCxDQUFtRCxrQkNqSGxELFNEaUhELENBQW1ELGtCQ2pIbEQsZURpSEQsQ0FBbUQsa0JDakhsRCxlRGlIRCxDQUFtRCxrQkNqSGxELFdEaUhELENBQW1ELG9DdkJvQ25CLG9Cd0JySi9CLFVEaUhELENBQW1ELG9CQ2pIbEQsU0RpSEQsQ0FBbUQsb0JDakhsRCxlRGlIRCxDQUFtRCxvQkNqSGxELFNEaUhELENBQW1ELG9CQ2pIbEQsU0RpSEQsQ0FBbUQsb0JDakhsRCxlRGlIRCxDQUFtRCxvQkNqSGxELGVEaUhELENBQW1ELG9CQ2pIbEQsV0RpSEQsQ0FBbUQsQ0MvRzFELDJDeEI4STZDLG1Cd0JoSnJDLFVEaUhELENBQW1ELG1CQ2pIbEQsU0RpSEQsQ0FBbUQsbUJDakhsRCxlRGlIRCxDQUFtRCxtQkNqSGxELFNEaUhELENBQW1ELG1CQ2pIbEQsU0RpSEQsQ0FBbUQsbUJDakhsRCxlRGlIRCxDQUFtRCxtQkNqSGxELGVEaUhELENBQW1ELG1CQ2pIbEQsV0RpSEQsQ0FBbUQsQ0MvRzFELDJDeEI4STZDLGtCd0JoSnJDLFVEaUhELENBQW1ELGtCQ2pIbEQsU0RpSEQsQ0FBbUQsa0JDakhsRCxlRGlIRCxDQUFtRCxrQkNqSGxELFNEaUhELENBQW1ELGtCQ2pIbEQsU0RpSEQsQ0FBbUQsa0JDakhsRCxlRGlIRCxDQUFtRCxrQkNqSGxELGVEaUhELENBQW1ELGtCQ2pIbEQsV0RpSEQsQ0FBbUQsQ0MvRzFELGdDQUZRLDBCRjhFdUMsQ0FBZ0QsZ0NFOUV2Rix5QkY4RXVDLENBQWdELGdDRTlFdkYsK0JGOEV1QyxDQUFnRCxnQ0U5RXZGLHlCRjhFdUMsQ0FBZ0QsZ0NFOUV2Rix5QkY4RXVDLENBQWdELGdDRTlFdkYsK0JGOEV1QyxDQUFnRCxnQ0U5RXZGLCtCRjhFdUMsQ0FBZ0QsZ0NFOUV2RiwyQkY4RXVDLENBQWdELG9DdEJ1RXhELGtDd0JySi9CLDBCRjhFdUMsQ0FBZ0Qsa0NFOUV2Rix5QkY4RXVDLENBQWdELGtDRTlFdkYsK0JGOEV1QyxDQUFnRCxrQ0U5RXZGLHlCRjhFdUMsQ0FBZ0Qsa0NFOUV2Rix5QkY4RXVDLENBQWdELGtDRTlFdkYsK0JGOEV1QyxDQUFnRCxrQ0U5RXZGLCtCRjhFdUMsQ0FBZ0Qsa0NFOUV2RiwyQkY4RXVDLENBQWdELENFNUUvRiwyQ3hCOEk2QyxnQ3dCaEpyQywyQkY4RXVDLENBQWdELGdDRTlFdkYsMEJGOEV1QyxDQUFnRCxnQ0U5RXZGLGdDRjhFdUMsQ0FBZ0QsZ0NFOUV2RiwwQkY4RXVDLENBQWdELGdDRTlFdkYsMEJGOEV1QyxDQUFnRCxnQ0U5RXZGLGdDRjhFdUMsQ0FBZ0QsZ0NFOUV2RixnQ0Y4RXVDLENBQWdELGdDRTlFdkYsNEJGOEV1QyxDQUFnRCxpQ0U5RXZGLDJCRjhFdUMsQ0FBZ0QsaUNFOUV2RiwwQkY4RXVDLENBQWdELGlDRTlFdkYsZ0NGOEV1QyxDQUFnRCxpQ0U5RXZGLDBCRjhFdUMsQ0FBZ0QsaUNFOUV2RiwwQkY4RXVDLENBQWdELGlDRTlFdkYsZ0NGOEV1QyxDQUFnRCxpQ0U5RXZGLGdDRjhFdUMsQ0FBZ0QsaUNFOUV2Riw0QkY4RXVDLENBQWdELENFNUUvRiwyQ3hCOEk2QyxnQ3dCaEpyQywyQkY4RXVDLENBQWdELGdDRTlFdkYsMEJGOEV1QyxDQUFnRCxnQ0U5RXZGLGdDRjhFdUMsQ0FBZ0QsZ0NFOUV2RiwwQkY4RXVDLENBQWdELGdDRTlFdkYsMEJGOEV1QyxDQUFnRCxnQ0U5RXZGLGdDRjhFdUMsQ0FBZ0QsZ0NFOUV2RixnQ0Y4RXVDLENBQWdELGdDRTlFdkYsNEJGOEV1QyxDQUFnRCxDRTVFL0YsdUJMcU15QixjTTlNSyxDQUFDLGFBQUQsQ0FBQyw2QkFHckIsY0FFc0IsQ0FBQyxhQUFELENBQUMsZ0NBc0JkLGNGNkZaLENBQW1ELGdDRTdGdkMsZUY2RlosQ0FBbUQsZ0NFN0Z2QyxTRjZGWixDQUFtRCxnQ0U3RnZDLGVGNkZaLENBQW1ELGdDRTdGdkMsZUY2RlosQ0FBbUQsZ0NFN0Z2QyxTRjZGWixDQUFtRCxnQ0U3RnZDLGVGNkZaLENBQW1ELGdDRTdGdkMsZUY2RlosQ0FBbUQsZ0NFN0Z2QyxTRjZGWixDQUFtRCxpQ0U3RnRDLGVGNkZiLENBQW1ELGlDRTdGdEMsZUY2RmIsQ0FBbUQsaUNFN0Z0QyxVRjZGYixDQUFtRCxvQ3ZCb0NuQixrQ3lCaklsQixjRjZGZCxDQUFtRCxrQ0U3RnJDLGVGNkZkLENBQW1ELGtDRTdGckMsU0Y2RmQsQ0FBbUQsa0NFN0ZyQyxlRjZGZCxDQUFtRCxrQ0U3RnJDLGVGNkZkLENBQW1ELGtDRTdGckMsU0Y2RmQsQ0FBbUQsa0NFN0ZyQyxlRjZGZCxDQUFtRCxrQ0U3RnJDLGVGNkZkLENBQW1ELGtDRTdGckMsU0Y2RmQsQ0FBbUQsbUNFN0ZwQyxlRjZGZixDQUFtRCxtQ0U3RnBDLGVGNkZmLENBQW1ELG1DRTdGcEMsVUY2RmYsQ0FBbUQsQ0UzRmhELDJDekIwSG1DLGlDeUI1SHpCLGNGNkZiLENBQW1ELGlDRTdGdEMsZUY2RmIsQ0FBbUQsaUNFN0Z0QyxTRjZGYixDQUFtRCxpQ0U3RnRDLGVGNkZiLENBQW1ELGlDRTdGdEMsZUY2RmIsQ0FBbUQsaUNFN0Z0QyxTRjZGYixDQUFtRCxpQ0U3RnRDLGVGNkZiLENBQW1ELGlDRTdGdEMsZUY2RmIsQ0FBbUQsaUNFN0Z0QyxTRjZGYixDQUFtRCxrQ0U3RnJDLGVGNkZkLENBQW1ELGtDRTdGckMsZUY2RmQsQ0FBbUQsa0NFN0ZyQyxVRjZGZCxDQUFtRCxDRTNGaEQsMkN6QjBIbUMsZ0N5QjVIMUIsY0Y2RlosQ0FBbUQsZ0NFN0Z2QyxlRjZGWixDQUFtRCxnQ0U3RnZDLFNGNkZaLENBQW1ELGdDRTdGdkMsZUY2RlosQ0FBbUQsZ0NFN0Z2QyxlRjZGWixDQUFtRCxnQ0U3RnZDLFNGNkZaLENBQW1ELGdDRTdGdkMsZUY2RlosQ0FBbUQsZ0NFN0Z2QyxlRjZGWixDQUFtRCxnQ0U3RnZDLFNGNkZaLENBQW1ELGlDRTdGdEMsZUY2RmIsQ0FBbUQsaUNFN0Z0QyxlRjZGYixDQUFtRCxpQ0U3RnRDLFVGNkZiLENBQW1ELENFM0ZoRCx3Qk51TGdCLGNNN0tJLENBQUMsYUFBRCxDQUFDLDhCQUdyQixlQUV3QixDQUFDLGNBQUQsQ0FBQyxvQ3pCZ0hJLHlCbUJrRFosY005TUcsQ0FBQyxhQUFELENBQUMsK0JBR3JCLGNBRXNCLENBQUMsYUFBRCxDQUFDLENBRTdCLG9DekJxSm1DLGtDeUIxSXBCLGNGc0daLENBQW1ELGtDRXRHdkMsZUZzR1osQ0FBbUQsa0NFdEd2QyxTRnNHWixDQUFtRCxrQ0V0R3ZDLGVGc0daLENBQW1ELGtDRXRHdkMsZUZzR1osQ0FBbUQsa0NFdEd2QyxTRnNHWixDQUFtRCxrQ0V0R3ZDLGVGc0daLENBQW1ELGtDRXRHdkMsZUZzR1osQ0FBbUQsa0NFdEd2QyxTRnNHWixDQUFtRCxtQ0V0R3RDLGVGc0diLENBQW1ELG1DRXRHdEMsZUZzR2IsQ0FBbUQsbUNFdEd0QyxVRnNHYixDQUFtRCxDRXBHaEQsb0N6QndJNkIsb0N5QmpJbEIsY0Y2RmQsQ0FBbUQsb0NFN0ZyQyxlRjZGZCxDQUFtRCxvQ0U3RnJDLFNGNkZkLENBQW1ELG9DRTdGckMsZUY2RmQsQ0FBbUQsb0NFN0ZyQyxlRjZGZCxDQUFtRCxvQ0U3RnJDLFNGNkZkLENBQW1ELG9DRTdGckMsZUY2RmQsQ0FBbUQsb0NFN0ZyQyxlRjZGZCxDQUFtRCxvQ0U3RnJDLFNGNkZkLENBQW1ELHFDRTdGcEMsZUY2RmYsQ0FBbUQscUNFN0ZwQyxlRjZGZixDQUFtRCxxQ0U3RnBDLFVGNkZmLENBQW1ELENFM0ZoRCxvQ3pCK0g2QixtQ3lCMUluQixjRnNHYixDQUFtRCxtQ0V0R3RDLGVGc0diLENBQW1ELG1DRXRHdEMsU0ZzR2IsQ0FBbUQsbUNFdEd0QyxlRnNHYixDQUFtRCxtQ0V0R3RDLGVGc0diLENBQW1ELG1DRXRHdEMsU0ZzR2IsQ0FBbUQsbUNFdEd0QyxlRnNHYixDQUFtRCxtQ0V0R3RDLGVGc0diLENBQW1ELG1DRXRHdEMsU0ZzR2IsQ0FBbUQsb0NFdEdyQyxlRnNHZCxDQUFtRCxvQ0V0R3JDLGVGc0dkLENBQW1ELG9DRXRHckMsVUZzR2QsQ0FBbUQsQ0VwR2hELG9DekJ3STZCLGtDeUIxSXBCLGNGc0daLENBQW1ELGtDRXRHdkMsZUZzR1osQ0FBbUQsa0NFdEd2QyxTRnNHWixDQUFtRCxrQ0V0R3ZDLGVGc0daLENBQW1ELGtDRXRHdkMsZUZzR1osQ0FBbUQsa0NFdEd2QyxTRnNHWixDQUFtRCxrQ0V0R3ZDLGVGc0daLENBQW1ELGtDRXRHdkMsZUZzR1osQ0FBbUQsa0NFdEd2QyxTRnNHWixDQUFtRCxtQ0V0R3RDLGVGc0diLENBQW1ELG1DRXRHdEMsZUZzR2IsQ0FBbUQsbUNFdEd0QyxVRnNHYixDQUFtRCxDRXBHaEQsb0N6QndJNkIsMEJtQndEWCxjTTdLRSxDQUFDLGFBQUQsQ0FBQyxnQ0FHckIsZUFFd0IsQ0FBQyxjQUFELENBQUMsQ0FFL0IsMkN6QnlHeUMsd0JtQnVEbkIsY005TUksQ0FBQyxhQUFELENBQUMsOEJBR3JCLGNBRXNCLENBQUMsYUFBRCxDQUFDLENBRTdCLDJDekJnSnlDLGlDeUJySTFCLGNGc0daLENBQW1ELGlDRXRHdkMsZUZzR1osQ0FBbUQsaUNFdEd2QyxTRnNHWixDQUFtRCxpQ0V0R3ZDLGVGc0daLENBQW1ELGlDRXRHdkMsZUZzR1osQ0FBbUQsaUNFdEd2QyxTRnNHWixDQUFtRCxpQ0V0R3ZDLGVGc0daLENBQW1ELGlDRXRHdkMsZUZzR1osQ0FBbUQsaUNFdEd2QyxTRnNHWixDQUFtRCxrQ0V0R3RDLGVGc0diLENBQW1ELGtDRXRHdEMsZUZzR2IsQ0FBbUQsa0NFdEd0QyxVRnNHYixDQUFtRCxDRXBHaEQsb0N6QndJNkIsbUN5QmpJbEIsY0Y2RmQsQ0FBbUQsbUNFN0ZyQyxlRjZGZCxDQUFtRCxtQ0U3RnJDLFNGNkZkLENBQW1ELG1DRTdGckMsZUY2RmQsQ0FBbUQsbUNFN0ZyQyxlRjZGZCxDQUFtRCxtQ0U3RnJDLFNGNkZkLENBQW1ELG1DRTdGckMsZUY2RmQsQ0FBbUQsbUNFN0ZyQyxlRjZGZCxDQUFtRCxtQ0U3RnJDLFNGNkZkLENBQW1ELG9DRTdGcEMsZUY2RmYsQ0FBbUQsb0NFN0ZwQyxlRjZGZixDQUFtRCxvQ0U3RnBDLFVGNkZmLENBQW1ELENFM0ZoRCwyQ3pCMEhtQyxrQ3lCNUh6QixjRjZGYixDQUFtRCxrQ0U3RnRDLGVGNkZiLENBQW1ELGtDRTdGdEMsU0Y2RmIsQ0FBbUQsa0NFN0Z0QyxlRjZGYixDQUFtRCxrQ0U3RnRDLGVGNkZiLENBQW1ELGtDRTdGdEMsU0Y2RmIsQ0FBbUQsa0NFN0Z0QyxlRjZGYixDQUFtRCxrQ0U3RnRDLGVGNkZiLENBQW1ELGtDRTdGdEMsU0Y2RmIsQ0FBbUQsbUNFN0ZyQyxlRjZGZCxDQUFtRCxtQ0U3RnJDLGVGNkZkLENBQW1ELG1DRTdGckMsVUY2RmQsQ0FBbUQsQ0UzRmhELDJDekIwSG1DLGlDeUI1SDFCLGNGNkZaLENBQW1ELGlDRTdGdkMsZUY2RlosQ0FBbUQsaUNFN0Z2QyxTRjZGWixDQUFtRCxpQ0U3RnZDLGVGNkZaLENBQW1ELGlDRTdGdkMsZUY2RlosQ0FBbUQsaUNFN0Z2QyxTRjZGWixDQUFtRCxpQ0U3RnZDLGVGNkZaLENBQW1ELGlDRTdGdkMsZUY2RlosQ0FBbUQsaUNFN0Z2QyxTRjZGWixDQUFtRCxrQ0U3RnRDLGVGNkZiLENBQW1ELGtDRTdGdEMsZUY2RmIsQ0FBbUQsa0NFN0Z0QyxVRjZGYixDQUFtRCxDRTNGaEQsMkN6QjBIbUMseUJtQjZEbEIsY003S0csQ0FBQyxhQUFELENBQUMsK0JBR3JCLGVBRXdCLENBQUMsY0FBRCxDQUFDLENBRS9CLDJDekJ5R3lDLHVCbUJ1RHBCLGNNOU1LLENBQUMsYUFBRCxDQUFDLDZCQUdyQixjQUVzQixDQUFDLGFBQUQsQ0FBQyxDQUU3QiwyQ3pCZ0p5QyxnQ3lCckkxQixjRnNHWixDQUFtRCxnQ0V0R3ZDLGVGc0daLENBQW1ELGdDRXRHdkMsU0ZzR1osQ0FBbUQsZ0NFdEd2QyxlRnNHWixDQUFtRCxnQ0V0R3ZDLGVGc0daLENBQW1ELGdDRXRHdkMsU0ZzR1osQ0FBbUQsZ0NFdEd2QyxlRnNHWixDQUFtRCxnQ0V0R3ZDLGVGc0daLENBQW1ELGdDRXRHdkMsU0ZzR1osQ0FBbUQsaUNFdEd0QyxlRnNHYixDQUFtRCxpQ0V0R3RDLGVGc0diLENBQW1ELGlDRXRHdEMsVUZzR2IsQ0FBbUQsQ0VwR2hELG9DekJ3STZCLGtDeUJqSWxCLGNGNkZkLENBQW1ELGtDRTdGckMsZUY2RmQsQ0FBbUQsa0NFN0ZyQyxTRjZGZCxDQUFtRCxrQ0U3RnJDLGVGNkZkLENBQW1ELGtDRTdGckMsZUY2RmQsQ0FBbUQsa0NFN0ZyQyxTRjZGZCxDQUFtRCxrQ0U3RnJDLGVGNkZkLENBQW1ELGtDRTdGckMsZUY2RmQsQ0FBbUQsa0NFN0ZyQyxTRjZGZCxDQUFtRCxtQ0U3RnBDLGVGNkZmLENBQW1ELG1DRTdGcEMsZUY2RmYsQ0FBbUQsbUNFN0ZwQyxVRjZGZixDQUFtRCxDRTNGaEQsMkN6QjBIbUMsaUN5QnJJekIsY0ZzR2IsQ0FBbUQsaUNFdEd0QyxlRnNHYixDQUFtRCxpQ0V0R3RDLFNGc0diLENBQW1ELGlDRXRHdEMsZUZzR2IsQ0FBbUQsaUNFdEd0QyxlRnNHYixDQUFtRCxpQ0V0R3RDLFNGc0diLENBQW1ELGlDRXRHdEMsZUZzR2IsQ0FBbUQsaUNFdEd0QyxlRnNHYixDQUFtRCxpQ0V0R3RDLFNGc0diLENBQW1ELGtDRXRHckMsZUZzR2QsQ0FBbUQsa0NFdEdyQyxlRnNHZCxDQUFtRCxrQ0V0R3JDLFVGc0dkLENBQW1ELENFcEdoRCwyQ3pCbUltQyxnQ3lCNUgxQixjRjZGWixDQUFtRCxnQ0U3RnZDLGVGNkZaLENBQW1ELGdDRTdGdkMsU0Y2RlosQ0FBbUQsZ0NFN0Z2QyxlRjZGWixDQUFtRCxnQ0U3RnZDLGVGNkZaLENBQW1ELGdDRTdGdkMsU0Y2RlosQ0FBbUQsZ0NFN0Z2QyxlRjZGWixDQUFtRCxnQ0U3RnZDLGVGNkZaLENBQW1ELGdDRTdGdkMsU0Y2RlosQ0FBbUQsaUNFN0Z0QyxlRjZGYixDQUFtRCxpQ0U3RnRDLGVGNkZiLENBQW1ELGlDRTdGdEMsVUY2RmIsQ0FBbUQsQ0UzRmhELDJDekIwSG1DLHdCbUI2RG5CLGNNN0tJLENBQUMsYUFBRCxDQUFDLDhCQUdyQixlQUV3QixDQUFDLGNBQUQsQ0FBQyxDQUUvQixnQk5vTGMsY092TVcsQ0FBQywrQlAyTUssOEJPM01OLENBQUMsZ0JQdU1aLG9CT3ZNVyxDQUFDLCtCUDJNSyxvQ08zTU4sQ0FBQyxnQlB1TVoscUJPdk1XLENBQUMsK0JQMk1LLHFDTzNNTixDQUFDLGdCUHVNWixlT3ZNVyxDQUFDLCtCUDJNSywrQk8zTU4sQ0FBQyxnQlB1TVoscUJPdk1XLENBQUMsK0JQMk1LLHFDTzNNTixDQUFDLGdCUHVNWixxQk92TVcsQ0FBQywrQlAyTUsscUNPM01OLENBQUMsZ0JQdU1aLGVPdk1XLENBQUMsK0JQMk1LLCtCTzNNTixDQUFDLGdCUHVNWixxQk92TVcsQ0FBQywrQlAyTUsscUNPM01OLENBQUMsZ0JQdU1aLHFCT3ZNVyxDQUFDLCtCUDJNSyxxQ08zTU4sQ0FBQyxnQlB1TVosZU92TVcsQ0FBQywrQlAyTUssK0JPM01OLENBQUMsaUJQdU1YLHFCT3ZNVSxDQUFDLGdDUDJNTSxxQ08zTVAsQ0FBQyxpQlB1TVgscUJPdk1VLENBQUMsZ0NQMk1NLHFDTzNNUCxDQUFDLG9DMUJpSVMsa0JtQnNFbkIsY092TVMsQ0FBQyxpQ1AyTU8sOEJPM01SLENBQUMsa0JQdU1WLG9CT3ZNUyxDQUFDLGlDUDJNTyxvQ08zTVIsQ0FBQyxrQlB1TVYscUJPdk1TLENBQUMsaUNQMk1PLHFDTzNNUixDQUFDLGtCUHVNVixlT3ZNUyxDQUFDLGlDUDJNTywrQk8zTVIsQ0FBQyxrQlB1TVYscUJPdk1TLENBQUMsaUNQMk1PLHFDTzNNUixDQUFDLGtCUHVNVixxQk92TVMsQ0FBQyxpQ1AyTU8scUNPM01SLENBQUMsa0JQdU1WLGVPdk1TLENBQUMsaUNQMk1PLCtCTzNNUixDQUFDLGtCUHVNVixxQk92TVMsQ0FBQyxpQ1AyTU8scUNPM01SLENBQUMsa0JQdU1WLHFCT3ZNUyxDQUFDLGlDUDJNTyxxQ08zTVIsQ0FBQyxrQlB1TVYsZU92TVMsQ0FBQyxpQ1AyTU8sK0JPM01SLENBQUMsbUJQdU1ULHFCT3ZNUSxDQUFDLGtDUDJNUSxxQ08zTVQsQ0FBQyxtQlB1TVQscUJPdk1RLENBQUMsa0NQMk1RLHFDTzNNVCxDQUFDLENQNk0xQiwyQ25CakZ5QyxpQm1CMkUxQixjT3ZNVSxDQUFDLGdDUDJNTSwrQk8zTVAsQ0FBQyxpQlB1TVgsb0JPdk1VLENBQUMsZ0NQMk1NLHFDTzNNUCxDQUFDLGlCUHVNWCxxQk92TVUsQ0FBQyxnQ1AyTU0sc0NPM01QLENBQUMsaUJQdU1YLGVPdk1VLENBQUMsZ0NQMk1NLGdDTzNNUCxDQUFDLGlCUHVNWCxxQk92TVUsQ0FBQyxnQ1AyTU0sc0NPM01QLENBQUMsaUJQdU1YLHFCT3ZNVSxDQUFDLGdDUDJNTSxzQ08zTVAsQ0FBQyxpQlB1TVgsZU92TVUsQ0FBQyxnQ1AyTU0sZ0NPM01QLENBQUMsaUJQdU1YLHFCT3ZNVSxDQUFDLGdDUDJNTSxzQ08zTVAsQ0FBQyxpQlB1TVgscUJPdk1VLENBQUMsZ0NQMk1NLHNDTzNNUCxDQUFDLGlCUHVNWCxlT3ZNVSxDQUFDLGdDUDJNTSxnQ08zTVAsQ0FBQyxrQlB1TVYscUJPdk1TLENBQUMsaUNQMk1PLHNDTzNNUixDQUFDLGtCUHVNVixxQk92TVMsQ0FBQyxpQ1AyTU8sc0NPM01SLENBQUMsQ1A2TTFCLDJDbkJqRnlDLGdCbUIyRTNCLGNPdk1XLENBQUMsK0JQMk1LLCtCTzNNTixDQUFDLGdCUHVNWixvQk92TVcsQ0FBQywrQlAyTUsscUNPM01OLENBQUMsZ0JQdU1aLHFCT3ZNVyxDQUFDLCtCUDJNSyxzQ08zTU4sQ0FBQyxnQlB1TVosZU92TVcsQ0FBQywrQlAyTUssZ0NPM01OLENBQUMsZ0JQdU1aLHFCT3ZNVyxDQUFDLCtCUDJNSyxzQ08zTU4sQ0FBQyxnQlB1TVoscUJPdk1XLENBQUMsK0JQMk1LLHNDTzNNTixDQUFDLGdCUHVNWixlT3ZNVyxDQUFDLCtCUDJNSyxnQ08zTU4sQ0FBQyxnQlB1TVoscUJPdk1XLENBQUMsK0JQMk1LLHNDTzNNTixDQUFDLGdCUHVNWixxQk92TVcsQ0FBQywrQlAyTUssc0NPM01OLENBQUMsZ0JQdU1aLGVPdk1XLENBQUMsK0JQMk1LLGdDTzNNTixDQUFDLGlCUHVNWCxxQk92TVUsQ0FBQyxnQ1AyTU0sc0NPM01QLENBQUMsaUJQdU1YLHFCT3ZNVSxDQUFDLGdDUDJNTSxzQ08zTVAsQ0FBQyxDUDZNMUIsUUF6SnFCLG1CRXRFakIsQ0ZzRWlCLG9CRXRFakIsQ0ZzRWlCLG1CRXRFakIsQ0ZzRWlCLFlFdEVqQixDQUFJLDJCQUZVLENBRVYsNEJBRlUsQ0FFViwrQkFGVSxDQUVWLDJCQUZVLENBRVYsdUJBRlUsQ0FBTSxjRnFQcEIsV0c5SU0sQ0FBSSxlQUNJLENBQUksY0hpSmxCLFdHdk1DLENBQUksZ0JIMk1ILFdHM01ELENBQUkseVBIeU5GLHVCQUNNLENBRE4sNEJBQ00sQ0FETixlQUNNLENBQUksb0NuQnZIa0IscVJtQnNINUIsdUJBQ00sQ0FETiw0QkFDTSxDQUROLGVBQ00sQ0FBSSxDQUNqQiwyQ25CN0h5Qyx1UW1CMkhsQyx1QkFDTSxDQUROLDRCQUNNLENBRE4sZUFDTSxDQUFJLENBQ2pCLDJDbkI3SHlDLHlQbUIySGxDLHVCQUNNLENBRE4sNEJBQ00sQ0FETixlQUNNLENBQUksQ0FDakIsK01BVzJDLGtCRy9MM0MsQ0grTDJDLHFCRy9MM0MsQ0grTDJDLGlCRy9MM0MsQ0grTDJDLGFHL0wzQyxDQUFDLGlCSDhNVSxlSXRMUixDQUFtRCxpQkpzTDNDLGdCSXRMUixDQUFtRCxpQkpzTDNDLFVJdExSLENBQW1ELGlCSnNMM0MsZ0JJdExSLENBQW1ELGlCSnNMM0MsZ0JJdExSLENBQW1ELGlCSnNMM0MsVUl0TFIsQ0FBbUQsaUJKc0wzQyxnQkl0TFIsQ0FBbUQsaUJKc0wzQyxnQkl0TFIsQ0FBbUQsaUJKc0wzQyxVSXRMUixDQUFtRCxrQkpzTDFDLGdCSXRMVCxDQUFtRCxrQkpzTDFDLGdCSXRMVCxDQUFtRCxrQkpzTDFDLFdJdExULENBQW1ELG9DdkJvQ25CLHNCbUI4SG5CLGtCRzFMaEIsQ0gwTGdCLG9CRzFMaEIsQ0gwTGdCLGdCRzFMaEIsQ0gwTGdCLFlHMUxoQixDQUFDLFdBdkNJLENBQUksK1BIc09rQyxrQkcvTDNDLENIK0wyQyxxQkcvTDNDLENIK0wyQyxpQkcvTDNDLENIK0wyQyxhRy9MM0MsQ0FBQyx3QkhxTWlCLFdHNU9iLENBQUksbUJIcVBJLGVJdExWLENBQW1ELG1CSnNMekMsZ0JJdExWLENBQW1ELG1CSnNMekMsVUl0TFYsQ0FBbUQsbUJKc0x6QyxnQkl0TFYsQ0FBbUQsbUJKc0x6QyxnQkl0TFYsQ0FBbUQsbUJKc0x6QyxVSXRMVixDQUFtRCxtQkpzTHpDLGdCSXRMVixDQUFtRCxtQkpzTHpDLGdCSXRMVixDQUFtRCxtQkpzTHpDLFVJdExWLENBQW1ELG9CSnNMeEMsZ0JJdExYLENBQW1ELG9CSnNMeEMsZ0JJdExYLENBQW1ELG9CSnNMeEMsV0l0TFgsQ0FBbUQsQ0p5THBELDJDbkIxSnVDLHFCbUJtSTFCLGtCRzFMZixDSDBMZSxvQkcxTGYsQ0gwTGUsZ0JHMUxmLENIMExlLFlHMUxmLENBQUMsV0F2Q0ksQ0FBSSxrUEhzT2tDLGtCRy9MM0MsQ0grTDJDLHFCRy9MM0MsQ0grTDJDLGlCRy9MM0MsQ0grTDJDLGFHL0wzQyxDQUFDLHVCSHFNZ0IsV0c1T1osQ0FBSSxrQkhxUEcsZUl0TFQsQ0FBbUQsa0JKc0wxQyxnQkl0TFQsQ0FBbUQsa0JKc0wxQyxVSXRMVCxDQUFtRCxrQkpzTDFDLGdCSXRMVCxDQUFtRCxrQkpzTDFDLGdCSXRMVCxDQUFtRCxrQkpzTDFDLFVJdExULENBQW1ELGtCSnNMMUMsZ0JJdExULENBQW1ELGtCSnNMMUMsZ0JJdExULENBQW1ELGtCSnNMMUMsVUl0TFQsQ0FBbUQsbUJKc0x6QyxnQkl0TFYsQ0FBbUQsbUJKc0x6QyxnQkl0TFYsQ0FBbUQsbUJKc0x6QyxXSXRMVixDQUFtRCxDSnlMcEQsMkNuQjFKdUMsb0JtQm1JM0Isa0JHMUxkLENIMExjLG9CRzFMZCxDSDBMYyxnQkcxTGQsQ0gwTGMsWUcxTGQsQ0FBQyxXQXZDSSxDQUFJLHFPSHNPa0Msa0JHL0wzQyxDSCtMMkMscUJHL0wzQyxDSCtMMkMsaUJHL0wzQyxDSCtMMkMsYUcvTDNDLENBQUMsc0JIcU1lLFdHNU9YLENBQUksaUJIcVBFLGVJdExSLENBQW1ELGlCSnNMM0MsZ0JJdExSLENBQW1ELGlCSnNMM0MsVUl0TFIsQ0FBbUQsaUJKc0wzQyxnQkl0TFIsQ0FBbUQsaUJKc0wzQyxnQkl0TFIsQ0FBbUQsaUJKc0wzQyxVSXRMUixDQUFtRCxpQkpzTDNDLGdCSXRMUixDQUFtRCxpQkpzTDNDLGdCSXRMUixDQUFtRCxpQkpzTDNDLFVJdExSLENBQW1ELGtCSnNMMUMsZ0JJdExULENBQW1ELGtCSnNMMUMsZ0JJdExULENBQW1ELGtCSnNMMUMsV0l0TFQsQ0FBbUQsQ0p5THBELGdDQVNZLG1CQ25UZSxDQUFpQyxzQkFBakMsQ0FBaUMsMkNwQmdKckIsZ0NtQm1LM0Isb0JDblRlLENBQWlDLHVCQUFqQyxDQUFpQyxDRHFUOUQsc0JBR00sbUJDeFR1QixDQUFpQyxzQkFBakMsQ0FBaUMsMkNwQmdKckIsc0JtQndLbkMsb0JDeFR1QixDQUFpQyx1QkFBakMsQ0FBaUMsQ0QwVDlELGVBbk5TLG1CQ3ZHb0IsQ0FBaUMsc0JBQWpDLENBQWlDLDJDcEJnSnJCLGVtQnpDaEMsb0JDdkdvQixDQUFpQyx1QkFBakMsQ0FBaUMsQ0RzSWxFLHFCQTNCUSwyQkc3QnVDLENBQWdELGtCRnJFaEUsQ0FBaUMscUJBQWpDLENBQWlDLDJDcEJ1SW5CLHFCbUJyQ3JDLDRCRzdCdUMsQ0FBZ0QsbUJGckVoRSxDQUFpQyxzQkFBakMsQ0FBaUMsQ0QyRzFELHFCQXJDQSxXRzdCRyxDQUFJLHVCSGlDTCxXR2pDQyxDQUFJLHdCSHlDRiwrQkdib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHdCSGFwRixnQ0dib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHdCSGFwRixnQ0dib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHlCSGFuRixnQ0dibUMsQ0FBZ0QseUJIYW5GLGdDR2JtQyxDQUFnRCx5QkhhbkYsMkJHYm1DLENBQWdELG9DdEJ1RXhELDZCbUJ0RXpCLFdHN0JMLENBQUksK0JIaUNHLFdHakNQLENBQUksMEJIeUNBLCtCR2JrQyxDQUFnRCwwQkhhbEYsZ0NHYmtDLENBQWdELDBCSGFsRiwwQkdia0MsQ0FBZ0QsMEJIYWxGLGdDR2JrQyxDQUFnRCwwQkhhbEYsZ0NHYmtDLENBQWdELDBCSGFsRiwwQkdia0MsQ0FBZ0QsMEJIYWxGLGdDR2JrQyxDQUFnRCwwQkhhbEYsZ0NHYmtDLENBQWdELDBCSGFsRiwwQkdia0MsQ0FBZ0QsMkJIYWpGLGdDR2JpQyxDQUFnRCwyQkhhakYsZ0NHYmlDLENBQWdELDJCSGFqRiwyQkdiaUMsQ0FBZ0QsQ0hlN0YsMkNuQm1EMkMscUJtQmpFdkMsV0c3QkcsQ0FBSSx1QkhpQ0wsV0dqQ0MsQ0FBSSx3Qkh5Q0YsZ0NHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLDJCR2JvQyxDQUFnRCx3QkhhcEYsaUNHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLDJCR2JvQyxDQUFnRCx3QkhhcEYsaUNHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLDJCR2JvQyxDQUFnRCx5QkhhbkYsaUNHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDRCR2JtQyxDQUFnRCw0QkhDbEYsV0c3QkosQ0FBSSw4QkhpQ0UsV0dqQ04sQ0FBSSx5Qkh5Q0QsZ0NHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDJCR2JtQyxDQUFnRCx5QkhhbkYsaUNHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDJCR2JtQyxDQUFnRCx5QkhhbkYsaUNHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDJCR2JtQyxDQUFnRCwwQkhhbEYsaUNH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QUksQ0FDYiwyQ25CelB1QyxnQ21CdVBmLFdBQ2YsQ0FBSSxDQUNiLDJDbkJ6UHVDLCtCbUJ1UGhCLFdBQ2QsQ0FBSSxDQUNiLGVBbFNPLG1CQ3ZHb0IsQ0FBaUMsc0JBQWpDLENBQWlDLDJDcEJnSnJCLGVtQnpDaEMsb0JDdkdvQixDQUFpQyx1QkFBakMsQ0FBaUMsQ0RzSWxFLHFCQTNCUSwyQkc3QnVDLENBQWdELGtCRnJFaEUsQ0FBaUMscUJBQWpDLENBQWlDLDJDcEJ1SW5CLHFCbUJyQ3JDLDRCRzdCdUMsQ0FBZ0QsbUJGckVoRSxDQUFpQyxzQkFBakMsQ0FBaUMsQ0QyRzFELHFCQXJDQSxXRzdCRyxDQUFJLHVCSGlDTCxXR2pDQyxDQUFJLHdCSHlDRiwrQkdib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHdCSGFwRixnQ0dib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHdCSGFwRixnQ0dib0MsQ0FBZ0Qsd0JIYXBGLGdDR2JvQyxDQUFnRCx3QkhhcEYsMEJHYm9DLENBQWdELHlCSGFuRixnQ0dibUMsQ0FBZ0QseUJIYW5GLGdDR2JtQyxDQUFnRCx5QkhhbkYsMkJHYm1DLENBQWdELG9DdEJ1RXhELDZCbUJ0RXpCLFdHN0JMLENBQUksK0JIaUNHLFdHakNQLENBQUksMEJIeUNBLCtCR2JrQyxDQUFnRCwwQkhhbEYsZ0NHYmtDLENBQWdELDBCSGFsRiwwQkdia0MsQ0FBZ0QsMEJIYWxGLGdDR2JrQyxDQUFnRCwwQkhhbEYsZ0NHYmtDLENBQWdELDBCSGFsRiwwQkdia0MsQ0FBZ0QsMEJIYWxGLGdDR2JrQyxDQUFnRCwwQkhhbEYsZ0NHYmtDLENBQWdELDBCSGFsRiwwQkdia0MsQ0FBZ0QsMkJIYWpGLGdDR2JpQyxDQUFnRCwyQkhhakYsZ0NHYmlDLENBQWdELDJCSGFqRiwyQkdiaUMsQ0FBZ0QsQ0hlN0YsMkNuQm1EMkMscUJtQmpFdkMsV0c3QkcsQ0FBSSx1QkhpQ0wsV0dqQ0MsQ0FBSSx3Qkh5Q0YsZ0NHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLDJCR2JvQyxDQUFnRCx3QkhhcEYsaUNHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLDJCR2JvQyxDQUFnRCx3QkhhcEYsaUNHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLDJCR2JvQyxDQUFnRCx5QkhhbkYsaUNHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDRCR2JtQyxDQUFnRCw0QkhDbEYsV0c3QkosQ0FBSSw4QkhpQ0UsV0dqQ04sQ0FBSSx5Qkh5Q0QsZ0NHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDJCR2JtQyxDQUFnRCx5QkhhbkYsaUNHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDJCR2JtQyxDQUFnRCx5QkhhbkYsaUNHYm1DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLDJCR2JtQyxDQUFnRCwwQkhhbEYsaUNHYmtDLENBQWdELDBCSGFsRixpQ0dia0MsQ0FBZ0QsMEJIYWxGLDRCR2JrQyxDQUFnRCxDSGU3RiwyQ25CbUQyQywyQm1CakVqQyxXRzdCSCxDQUFJLDZCSGlDQyxXR2pDTCxDQUFJLHdCSHlDRixnQ0dib0MsQ0FBZ0Qsd0JIYXBGLGlDR2JvQyxDQUFnRCx3QkhhcEYsMkJHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLGlDR2JvQyxDQUFnRCx3QkhhcEYsMkJHYm9DLENBQWdELHdCSGFwRixpQ0dib0MsQ0FBZ0Qsd0JIYXBGLGlDR2JvQyxDQUFnRCx3QkhhcEYsMkJHYm9DLENBQWdELHlCSGFuRixpQ0dibUMsQ0FBZ0QseUJIYW5GLGlDR2JtQyxDQUFnRCx5QkhhbkYsNEJHYm1DLENBQWdELENIZTdGLDBCQWtUd0IsNEJRNVliLENBQTJCLG9DM0JrSkQsMEJtQjBQYiw0QlE1WWIsQ0FBMkIsQ1I4WXRDLDJDbkJqUTJDLDBCbUIrUG5CLDZCUTVZYixDQUEyQixDUjhZdEMsMkNu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QSxjQUNSLGFBR1UsQ0FBQSxpQkFDSyxDQUFBLGdCQUNELENBQUEsbUN0RHNKZCxhQUNVLENBQUEsV0FDQSxDQUFBLG9CQUdHLENBSEgseUJBR0csQ0FISCxZQUdHLENBQUUsMkJBQ1osQ0FEWSxlQUNaLENBRFksZ0JBQ1osQ0FEWSxPQUNQLENBQUUsaUJBSVYsVUFDUSxDQUFBLFlBQ1Isc0J1RHBMOEMsQ3ZEb0w5QyxrQ3VEcEw4QyxDdkRvTDlDLG1CdURwTDhDLEN2RG9MOUMsMEJ1RHBMOEMsQ0FBQSxhQ3dFN0Msb0JEdkVnRCxDQ3VFaEQsZ0NEdkVnRCxDQ3VFaEQsaUJEdkVnRCxDQ3VFaEQsd0JEdkVnRCxDQUFBLGNDdUVoRCx1QkR0RVUsQ0NzRVYsOEJEdEVVLENDc0VWLG9CRHRFVSxDQ3NFVixzQkR0RVUsQ0FBQSxlQ3NFVix3QkRyRVcsQ0NxRVgscUNEckVXLENDcUVYLHFCRHJFVyxDQ3FFWCw2QkRyRVcsQ0FBQSxjQ3FFWCxvQ0RwRVUsQ0NvRVYsd0JEcEVVLENDb0VWLDRCRHBFVSxDQUFBLCtCQzZFUSxzQkRqRjJCLENDaUYzQixrQ0RqRjJCLENDaUYzQixtQkRqRjJCLENDaUYzQiwwQkRqRjJCLENBQUEsZ0NDaUYzQixvQkRoRjhCLENDZ0Y5QixnQ0RoRjhCLENDZ0Y5QixpQkRoRjhCLENDZ0Y5Qix3QkRoRjhCLENBQUEsaUNDZ0Y5Qix1QkQvRVIsQ0MrRVEsOEJEL0VSLENDK0VRLG9CRC9FUixDQytFUSxzQkQvRVIsQ0FBQSxXQ2lGTCx1QkR2RUEsQ0N1RUEsOEJEdkVBLENDdUVBLG9CRHZFQSxDQ3VFQSxzQkR2RUEsQ0FBQSxnQkNnRkosNkJEaEZJLENDZ0ZKLHlCRGhGSSxDQ2dGSixxQkRoRkksQ0FBQSxjQzhFTCxxQkQ3RVEsQ0M2RVIsNEJEN0VRLENDNkVSLGtCRDdFUSxDQzZFUixvQkQ3RVEsQ0FBQSxtQkMrRVAsMkJEL0VPLENDK0VQLHVCRC9FTyxDQytFUCxtQkQvRU8sQ0FBQSxjQzZFUix3QkQ1RVEsQ0M0RVIsMEJENUVRLENDNEVSLHFCRDVFUSxDQzRFUixrQkQ1RVEsQ0FBQSxtQkM4RVAseUJEOUVPLENDOEVQLDBCRDlFTyxDQzhFUCxpQkQ5RU8sQ0FBQSxlQzRFUix5QkQzRVMsQ0MyRVQsMkJEM0VTLENDMkVULHNCRDNFUyxDQzJFVCxtQkQzRVMsQ0FBQSxvQkM2RVIsMEJEN0VRLENDNkVSLDJCRDdFUSxDQzZFUixrQkQ3RVEsQ0FBQSxxQkNpRlIsdUJEOUZTLENDOEZULDhCRDlGUyxDQzhGVCxvQkQ5RlMsQ0M4RlQsc0JEOUZTLENBQUEsd0JBWUYsQ0FaRSwwQkFZRixDQVpFLHFCQVlGLENBWkUsa0JBWUYsQ0FBQSw0QkN3Rk8sQ0R4RlAseUJDd0ZPLENEeEZQLG9CQ3dGTyxDQUFBLGVBQ2hCLDJCRDNCRCxDQzJCQyxlRDNCRCxDQzJCQyxnQkQzQkQsQ0MyQkMsT0QzQkksQ0MrQlUsZUFDWCwyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLGVBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxlQUNYLDJCRGhDSixDQ2dDSSxlRGhDSixDQ2dDSSxnQkRoQ0osQ0NnQ0ksT0RoQ0MsQ0MrQlUsZUFDWCwyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLGVBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxvQzdEd0V5QixpQjZEdkVwQywyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLGlCQUNYLDJCRGhDSixDQ2dDSSxlRGhDSixDQ2dDSSxnQkRoQ0osQ0NnQ0ksT0RoQ0MsQ0MrQlUsaUJBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxpQkFDWCwyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLGlCQUNYLDJCRGhDSixDQ2dDSSxlRGhDSixDQ2dDSSxnQkRoQ0osQ0NnQ0ksT0RoQ0MsQ0MrQlUsaUJBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxDQUFDLDJDN0RtRThCLGdCNkRsRTFDLDJCRGhDSixDQ2dDSSxlRGhDSixDQ2dDSSxnQkRoQ0osQ0NnQ0ksT0RoQ0MsQ0MrQlUsZ0JBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxnQkFDWCwyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLGdCQUNYLDJCRGhDSixDQ2dDSSxlRGhDSixDQ2dDSSxnQkRoQ0osQ0NnQ0ksT0RoQ0MsQ0MrQlUsZ0JBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxnQkFDWCwyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLENBQUMsMkM3RG1FOEIsZTZEbEUxQywyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLGVBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxlQUNYLDJCRGhDSixDQ2dDSSxlRGhDSixDQ2dDSSxnQkRoQ0osQ0NnQ0ksT0RoQ0MsQ0MrQlUsZUFDWCwyQkRoQ0osQ0NnQ0ksZURoQ0osQ0NnQ0ksZ0JEaENKLENDZ0NJLE9EaENDLENDK0JVLGVBQ1gsMkJEaENKLENDZ0NJLGVEaENKLENDZ0NJLGdCRGhDSixDQ2dDSSxPRGhDQyxDQytCVSxlQUNYLDJCRGhDSixDQ2dDSSxlRGhDSixDQ2dDSSxnQkRoQ0osQ0NnQ0ksT0RoQ0MsQ0MrQlUsQ0FBQyxnQkE1RmhCLG1CRFlTLENDWlQsb0JEWVMsQ0NaVCxtQkRZUyxDQ1pULFlEWVMsQ0FBQSxpQkNWUixrQkFHTyxDQUhQLHFCQUdPLENBSFAsaUJBR08sQ0FIUCxhQUdPLENBQUEsaUJBQ1Asa0JBR08sQ0FIUCxxQkFHTyxDQUhQLGlCQUdPLENBSFAsYUFHTyxDQUFBLG1CQUNQLGtCQUdPLENBSFAscUJBR08sQ0FIUCxpQkFHTyxDQUhQLGFBR08sQ0FBQSxjQUNQLDZCRFZNLENDVU4sNEJEVk0sQ0NVTiwwQkRWTSxDQ1VOLHNCRFZNLENDVU4sa0JEVk0sQ0FBQSxzQkNhTCw2QkRaYSxDQ1liLDZCRFphLENDWWIsa0NEWmEsQ0NZYiw4QkRaYSxDQ1liLDBCRFphLENBQUEsaUJDWWIsMkJEWFEsQ0NXUiw0QkRYUSxDQ1dSLDZCRFhRLENDV1IseUJEWFEsQ0NXUixxQkRYUSxDQUFBLHlCQ1dSLDJCRFZnQixDQ1VoQiw2QkRWZ0IsQ0NVaEIscUNEVmdCLENDVWhCLGlDRFZnQixDQ1VoQiw2QkRWZ0IsQ0FBQSxvQzVENkpzQix3QjZEekloQyxtQkRmQyxDQ2VELG9CRGZDLENDZUQsbUJEZkMsQ0NlRCxZRGZDLENBQUEseUJDaUJBLGtCQUdPLENBSFAscUJBR08sQ0FIUCxpQkFHTyxDQUhQLGFBR08sQ0FBQSx5QkFDUCxrQkFHTyxDQUhQLHFCQUdPLENBSFAsaUJBR08sQ0FIUCxhQUdPLENBQUEsMkJBQ1Asa0JBR08sQ0FIUCxxQkFHTyxDQUhQLGlCQUdPLENBSFAsYUFHTyxDQUFBLHNCQUNQLDZCRHJDRixDQ3FDRSw0QkRyQ0YsQ0NxQ0UsMEJEckNGLENDcUNFLHNCRHJDRixDQ3FDRSxrQkRyQ0YsQ0FBQSw4QkN3Q0csNkJEdkNLLENDdUNMLDZCRHZDSyxDQ3VDTCxrQ0R2Q0ssQ0N1Q0wsOEJEdkNLLENDdUNMLDBCRHZDSyxDQUFBLHlCQ3VDTCwyQkR0Q0EsQ0NzQ0EsNEJEdENBLENDc0NBLDZCRHRDQSxDQ3NDQSx5QkR0Q0EsQ0NzQ0EscUJEdENBLENBQUEsaUNDc0NBLDJCRHJDUSxDQ3FDUiw2QkRyQ1EsQ0NxQ1IscUNEckNRLENDcUNSLGlDRHJDUSxDQ3FDUiw2QkRyQ1EsQ0FBQSxDQUFjLDJDNUR3SmMsdUI2RHBJdEMsbUJEZkMsQ0NlRCxvQkRmQyxDQ2VELG1CRGZDLENDZUQsWURmQyxDQUFBLHdCQ2lCQSxrQkFHTyxDQUhQLHFCQUdPLENBSFAsaUJBR08sQ0FIUCxhQUdPLENBQUEsd0JBQ1Asa0JBR08sQ0FIUCxxQkFHTyxDQUhQLGlCQUdPLENBSFAsYUFHTyxDQUFBLDBCQUNQLGtCQUdPLENBSFAscUJBR08sQ0FIUCxpQkFHTyxDQUhQLGFBR08sQ0FBQSxxQkFDUCw2QkRyQ0YsQ0NxQ0UsNEJEckNGLENDcUNFLDBCRHJDRixDQ3FDRSxzQkRyQ0YsQ0NxQ0Usa0JEckNGLENBQUEsNkJDd0NHLDZCRHZDSyxDQ3VDTCw2QkR2Q0ssQ0N1Q0wsa0NEdkNLLENDdUNMLDhCRHZDSyxDQ3VDTCwwQkR2Q0ssQ0FBQSx3QkN1Q0wsMkJEdENBLENDc0NBLDRCRHRDQSxDQ3NDQSw2QkR0Q0EsQ0NzQ0EseUJEdENBLENDc0NBLHFCRHRDQSxDQUFBLGdDQ3NDQSwyQkRyQ1EsQ0NxQ1IsNkJEckNRLENDcUNSLHFDRHJDUSxDQ3FDUixpQ0RyQ1EsQ0NxQ1IsNkJEckNRLENBQUEsQ0FBYywyQzVEd0pjLHNCNkRwSXRDLG1CRGZDLENDZUQsb0JEZkMsQ0NlRCxtQkRmQyxDQ2VELFlEZkMsQ0FBQSx1QkNpQkEsa0JBR08sQ0FIUCxxQkFHTyxDQUhQLGlCQUdPLENBSFAsYUFHTyxDQUFBLHVCQUNQLGtCQUdPLENBSFAscUJBR08sQ0FIUCxpQkFHTyxDQUhQLGFBR08sQ0FBQSx5QkFDUCxrQkFHTyxDQUhQLHFCQUdPLENBSFAsaUJBR08sQ0FIUCxhQUdPLENBQUEsb0JBQ1AsNkJEckNGLENDcUNFLDRCRHJDRixDQ3FDRSwwQkRyQ0YsQ0NxQ0Usc0JEckNGLENDcUNFLGtCRHJDRixDQUFBLDRCQ3dDRyw2QkR2Q0ssQ0N1Q0wsNkJEdkNLLENDdUNMLGtDRHZDSyxDQ3VDTCw4QkR2Q0ssQ0N1Q0wsMEJEdkNLLENBQUEsdUJDdUNMLDJCRHRDQSxDQ3NDQSw0QkR0Q0EsQ0NzQ0EsNkJEdENBLENDc0NBLHlCRHRDQSxDQ3NDQSxxQkR0Q0EsQ0FBQSwrQkNzQ0EsMkJEckNRLENDcUNSLDZCRHJDUSxDQ3FDUixxQ0RyQ1EsQ0NxQ1IsaUNEckNRLENDcUNSLDZCRHJD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QURSLDhCQUNRLENBRFIsb0JBQ1EsQ0FEUixzQkFDUSxDQUFBLFdBQ2xCLFVBR1EsQ0FBQSxVQUlMLG9CQUNTLENBQUEsVUFEVCxvQkFDUyxDQUFBLFVBRFQsb0JBQ1MsQ0FBQSxVQURULG9CQUNTLENBQUEsVUFEVCxvQkFDUyxDQUFBLFVBRFQsb0JBQ1MsQ0FBQSxnQlg4TFYsY1d6TE8sQ0FBQSxpQkFDSSxDQUFBLG1CQUNFLENBQUEscUJBQ0MsQ0FBQSxjWHRDaEIsYVcwQ1EsQ0FBQSx3QkFDUixhQUdXLENBQUEsVUFDSCxDQUFBLGdDQUVMLGFBQ1UsQ0FBQSxpQkFDRSxDQUFBLG9CQUNHLENBQUEsc0NBR2pCLGFBQ2EsQ0FBRSxnQkFDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAwLFxuICBtZWRpdW06IDY0MHB4LFxuICBsYXJnZTogMTAyNHB4LFxuICB4bGFyZ2U6IDEyMDBweCxcbiAgeHhsYXJnZTogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBIaURQSSBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcyBmb3IgcmVzb2x1dGlvbnMuXG4vLy8gVmFsdWVzIG11c3QgcmVwcmVzZW50IHRoZSBkZXZpY2UgcGl4ZWxzIC8gd2ViIHBpeGVscyByYXRpb24gYW5kIGJlIHVuaXRsZXNzIG9yIGluIERQUFguXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHMtaGlkcGk6IChcbiAgaGlkcGktMTogMSxcbiAgaGlkcGktMS01OiAxLjUsXG4gIGhpZHBpLTI6IDIsXG4gIHJldGluYTogMixcbiAgaGlkcGktMzogM1xuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsYXJnZXN0IG5hbWVkIGJyZWFrcG9pbnQgaW4gd2hpY2ggdG8gaW5jbHVkZSBwcmludCBhcyBhIG1lZGlhIHR5cGVcbi8vLyBAdHlwZSBLZXl3b3JkXG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2UgIWRlZmF1bHQ7XG5cbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcblxuJC16Zi1icmVha3BvaW50cy1rZXlzOiBtYXAtdG8tbGlzdCgkYnJlYWtwb2ludHMsICdrZXlzJyk7XG5cbkBpZiBudGgobWFwLXZhbHVlcygkYnJlYWtwb2ludHMpLCAxKSAhPSAwIHtcbiAgQGVycm9yICdUaGUgZmlyc3Qga2V5IGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIG11c3QgaGF2ZSBhIHZhbHVlIG9mIFwiMFwiLic7XG59XG5AZWxzZSB7XG4gICQtemYtemVyby1icmVha3BvaW50OiBudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgMSk7XG59XG5cbi8vLyBBbGwgb2YgdGhlIG5hbWVzIGluIHRoaXMgbGlzdCB3aWxsIGJlIG91dHB1dCBhcyBjbGFzc2VzIGluIHlvdXIgQ1NTLCBsaWtlIGAuc21hbGwtMTJgLCBgLm1lZGl1bS02YCwgYW5kIHNvIG9uLiBFYWNoIHZhbHVlIGluIHRoaXMgbGlzdCBtdXN0IGFsc28gYmUgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcC5cbi8vLyBAdHlwZSBMaXN0XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IHN0cmluZyBtYXRjaGluZyB0aGUgaW5wdXQgdmFsdWUuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gc2VlIHdoYXQgdGhlIHBvc3NpYmxlIGlucHV0cyBhcmUuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsIFtzbWFsbF0gLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsOiAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAvLyBXZWIgc3RhbmRhcmQgUGl4ZWxzIHBlciBpbmNoLiAoMWRkcHggLyAkc3RkLXdlYi1kcGkpID0gMWRwaVxuICAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy12YWx1ZXMtMy8jYWJzb2x1dGUtbGVuZ3Roc1xuICAkc3RkLXdlYi1kcGk6IDk2O1xuXG4gIC8vIFNpemUgb3Iga2V5d29yZFxuICAkYnA6IG50aCgkdmFsLCAxKTtcbiAgLy8gVmFsdWUgb2YgdGhlIGZvbGxvd2luZyBicmVha3BvaW50XG4gICRicC1uZXh0OiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1pbjogbnVsbDtcbiAgLy8gVmFsdWUgZm9yIG1pbi13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1tYXg6IG51bGw7XG4gIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICRkaXI6IGlmKGxlbmd0aCgkdmFsKSA+IDEsIG50aCgkdmFsLCAyKSwgdXApO1xuICAvLyBJZiBuYW1lZCwgbmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuICAkbmFtZTogbnVsbDtcbiAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSBIaURQSSBicmVha3BvaW50XG4gICRoaWRwaTogZmFsc2U7XG5cbiAgLy8gT3JpZW50YXRpb24gbWVkaWEgcXVlcmllcyBoYXZlIGEgdW5pcXVlIHN5bnRheFxuICBAaWYgJGJwID09ICdsYW5kc2NhcGUnIG9yICRicCA9PSAncG9ydHJhaXQnIHtcbiAgICBAcmV0dXJuICcob3JpZW50YXRpb246ICN7JGJwfSknO1xuICB9XG5cbiAgLy8gSWYgYSBicmVha3BvaW50IG5hbWUgaXMgZ2l2ZW4sIGdldCBpdHMgdmFsdWUgZnJvbSB0aGUgJGJyZWFrcG9pbnRzLyRicmVha3BvaW50cy1oaWRwaSBtYXAuXG4gIEBpZiB0eXBlLW9mKCRicCkgPT0gJ3N0cmluZycge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuICAgICAgJG5hbWU6ICRicDtcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICAgICRicC1uZXh0OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cy1oaWRwaSwgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cy1oaWRwaSwgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dC1udW1iZXIoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApO1xuICAgICAgJGhpZHBpOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyIGAkYnJlYWtwb2ludHNgIG9yIGAkYnJlYWtwb2ludHMtaGlkcGlgIHNldHRpbmcuJztcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRuYW1lIGFuZCAkZGlyID09ICdvbmx5JyB7XG4gICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIGBvbmx5YCByYW5nZS4nO1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIE9ubHkgJ29ubHknIGFuZCAndXAnIGhhdmUgYSBtaW4gbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICd1cCcge1xuICAgICRicC1taW46IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gIH1cbiAgLy8gT25seSAnb25seScgYW5kICdkb3duJyBoYXZlIGEgbWF4IGxpbWl0LlxuICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIGEgdmFsdWUsIHVzZSBpdCBhcyBtYXggbGltaXQuXG4gICAgQGlmIG5vdCAkbmFtZSB7XG4gICAgICAkYnAtbWF4OiBpZigkaGlkcGksIHN0cmlwLXVuaXQoJGJwKSwgLXpmLWJwLXRvLWVtKCRicCkpO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBuYW1lZCwgdGhlIG1heCBsaW1pdCBpcyB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnQgLSAxcHguXG4gICAgQGVsc2UgaWYgJGJwLW5leHQge1xuICAgICAgLy8gTWF4IHZhbHVlIGlzIDAuMnB4IHVuZGVyIHRoZSBuZXh0IGJyZWFrcG9pbnQgKDAuMDIgLyAxNiA9IDAuMDAxMjUpLlxuICAgICAgLy8gVXNlIGEgcHJlY2lzaW9uIHVuZGVyIDFweCB0byBzdXBwb3J0IGJyb3dzZXIgem9vbSwgYnV0IG5vdCB0byBsb3cgdG8gYXZvaWQgcm91bmRpbmcuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgJGJwLW5leHQgLSAoMS8kc3RkLXdlYi1kcGkpLCAtemYtYnAtdG8tZW0oJGJwLW5leHQpIC0gMC4wMDEyNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIG1pbiBhbmQgbWF4IGxpbWl0cy5cbiAgQGlmICRoaWRwaSB7XG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGluIERQSSBpbnN0ZWFkIG9mIERQUFggZm9yIGFuIElFOS0xMS9PcGVyYSBtaW5pIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gU2VlIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgICAkYnAtbWluLWRwaTogaWYoJGJwLW1pbiwgJGJwLW1pbiAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1taW4pO1xuICAgICRicC1tYXgtZHBpOiBpZigkYnAtbWF4LCAkYnAtbWF4ICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1heCk7XG4gICAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgsICctd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8nLCAnLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvJyksXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLWRwaSwgJGJwLW1heC1kcGksICdtaW4tcmVzb2x1dGlvbicsICdtYXgtcmVzb2x1dGlvbicpLFxuICAgICAgJywgJyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCk7XG4gIH1cbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBhbmQgYCRicmVha3BvaW50cy1oaWRwaWAgbWFwcywgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBnZW5lcmF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIG9mIHRoZW0gYXMgZGVzY3JpYmVkIGFib3ZlLlxuLy8vIFNpbmNlIHRoZSBjb250ZW50IGlzIGR1cGxpY2F0ZWQgZm9yIGVhY2ggYnJlYWtwb2ludCwgdGhpcyBtaXhpbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcHJvcGVydGllcyB0aGF0XG4vLy8gY2hhbmdlIGFjcm9zcyBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZXMuLi4gLSBCcmVha3BvaW50IG5hbWUgb3IgcHgvcmVtL2VtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZXMuLi4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHZhbHVlcykge1xuICAgICR2YWx1ZTogbnRoKCR2YWx1ZXMsICRpKTtcbiAgICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsIG50aCgkdmFsdWUsIDEpKTtcbiAgICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcbiAgICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAgICRkaXI6IGlmKGxlbmd0aCgkdmFsdWUpID4gMSwgbnRoKCR2YWx1ZSwgMiksIHVwKTtcblxuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAgIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcblxuICAgIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICAgIC8vIGdlbmVyYXRlIHByaW50IGlmIHRoZSBicmVha3BvaW50IGFmZmVjdHMgdGhlIHByaW50LWJyZWFrcG9pbnQgKG9yIHNtYWxsZXIpLlxuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY3VycmVudCBjb25kaXRpb24gb25seSBuZWVkcyB0byBiZSBleHRlbmRlZCBzbyAnZG93bicgYWx3YXlzIGdlbmVyYXRlcyBwcmludC5cbiAgICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgKCRicCA8PSAkcGJwIG9yICRkaXIgPT0gZG93bikge1xuICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBudW1iZXIgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgbnVtYmVyIGZvbGxvd2luZyBgJG51bWJlcmAsIGlmIGAkbnVtYmVyYCB3YXMgZm91bmQuIElmIGAkbnVtYmVyYCB3YXMgbm90IGZvdW5kLCBvciBgJG51bWJlcmAgd2FzIHRoZSBiaWdnZXN0IG51bWJlciBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQtbnVtYmVyKCRtYXAsICRudW1iZXIpIHtcblxuICAkbmV4dF9udW1iZXI6IG51bGw7XG5cbiAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgIEBpZiB0eXBlLW9mKCR2KSA9PSAnbnVtYmVyJyBhbmQgJHYgPiAkbnVtYmVyIGFuZCAoJG5leHRfbnVtYmVyID09IG51bGwgb3IgJHYgPCAkbmV4dF9udW1iZXIpIHtcbiAgICAgICRuZXh0X251bWJlcjogJHY7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmV4dF9udW1iZXI7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmRfa2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmRfa2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuLy8vIFJldHVybiB0aGUgYmVzdCBicmVha3BvaW50IHRvIHVzZSBhY2NvcmRpbmcgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgcmV0dXJucyBpbiBvcmRlcjpcbi8vLyAxLiB0aGUgZ2l2ZW4gYCR2YWx1ZWAgYXJndW1lbnQgaWYgaXQgaXMgbm90IG51bGwuXG4vLy8gMi4gdGhlIGdsb2JhbCBicmVha3BvaW50IGNvbnRleHQgYCQtemYtc2l6ZWAgaWYgaXQgaXMgbm90IG51bGwgKGxpa2UgaWYgY2FsbGVkIGluc2lkZSB0aGVuIGBicmVha3BvaW50KClgIG1peGluKVxuLy8vIDMuIHRoZSBnaXZlbiBgJGRlZmF1bHRgIGFyZ3VtZW50LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgaW4gcHJpb3JpdHkgaWYgbm9uLW51bGwuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGVmYXVsdCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBieSBkZWZhdWx0IGlmIG5vIG90aGVyIHZhbHVlIGNhbiBiZSB1c2VkLlxuLy8vXG4vLy8gQHJldHVybiB7S2V5d29yZH0gVGhlIHJlc29sdmVkIGJyZWFrcG9pbnQuXG5AZnVuY3Rpb24gLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkdmFsdWU6IG51bGwsICRkZWZhdWx0OiBudWxsKSB7XG4gIEBpZiAoJHZhbHVlICE9IG51bGwpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAodmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSBhbmQgdHlwZS1vZigkLXpmLXNpemUpICE9ICdudW1iZXInKSBhbmQgJC16Zi1zaXplICE9IG51bGwge1xuICAgIEByZXR1cm4gJC16Zi1zaXplO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbi8vLyBSZXR1cm4gbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gdGhlIGdpdmVuIG1pbiBhbmQvb3IgbWF4IGxpbWl0cy5cbi8vLyBJZiBhIGxpbWl0IGlzIGVxdWFsIHRvIGBudWxsYCBvciBgMGAsIGl0IGlzIGlnbm9yZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF0gLSBNaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggWzBdIC0gTWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWluLW5hbWUgWydtaW4td2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlbGltaXRlciBbJ21heC13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gTWVkaWEgUXVlcnkgc3RyaW5nLlxuQGZ1bmN0aW9uIC16Zi1icC1qb2luKFxuICAkbWluOiAwLFxuICAkbWF4OiAwLFxuICAkbWluLW5hbWU6ICdtaW4td2lkdGgnLFxuICAkbWF4LW5hbWU6ICdtYXgtd2lkdGgnXG4pIHtcbiAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICBpZigkbWluIGFuZCAkbWluID4gMCwgJygjeyRtaW4tbmFtZX06ICN7JG1pbn0pJywgbnVsbCksXG4gICAgaWYoJG1heCBhbmQgJG1heCA+IDAsICcoI3skbWF4LW5hbWV9OiAjeyRtYXh9KScsIG51bGwpLFxuICAgICcgYW5kICcpO1xufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcmV2ZWFsXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSBtb2RhbC5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdpZHRoIG9mIGEgbW9kYWwsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtd2lkdGg6IDYwMHB4ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXhpbXVtIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHotaW5kZXggZm9yIG1vZGFscy4gVGhlIG92ZXJsYXkgdXNlcyB0aGlzIHZhbHVlLCB3aGlsZSB0aGUgbW9kYWwgaXRzZWxmIHVzZXMgdGhpcyB2YWx1ZSBwbHVzIG9uZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtemluZGV4OiAxMDA1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBtb2RhbCBvdmVybGF5cy5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQ1KSAhZGVmYXVsdDtcblxuXG4vLyBQbGFjZWhvbGRlciBzZWxlY3RvciBmb3IgbWVkaXVtLWFuZC11cCBtb2RhbHNcbi8vIFByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgd2hlbiBkZWZpbmluZyBtdWx0aXBsZSBSZXZlYWwgc2l6ZXNcbi8vIFRoaXMgc2hvdWxkIGJlIGluIHRoZSBzYW1lIGJyZWFrcG9pbnQgdGhlbiBgQG1peGluIHJldmVhbC1tb2RhbC13aWR0aGBcbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICVyZXZlYWwtY2VudGVyZWQge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbW9kYWwgb3ZlcmxheS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgb3ZlcmxheS5cbkBtaXhpbiByZXZlYWwtb3ZlcmxheSgkYmFja2dyb3VuZDogJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQpIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYSBtb2RhbC5cbkBtaXhpbiByZXZlYWwtbW9kYWwtYmFzZSB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXggKyAxO1xuICAvLyBXb3JrYXJvdW5kIGFuZHJvaWQgYnJvd3NlciB6LWluZGV4IGJ1Z1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHJldmVhbC1wYWRkaW5nO1xuXG4gIGJvcmRlcjogJHJldmVhbC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRyZXZlYWwtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmV2ZWFsLWJhY2tncm91bmQ7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICBtaW4taGVpZ2h0OiAwO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHJvd3MgZG9uJ3QgaGF2ZSBhIG1pbi13aWR0aCBvbiB0aGVtXG4gIC5jb2x1bW4ge1xuICAgIG1pbi13aWR0aDogMDtcbiAgfVxuXG4gIC8vIFN0cmlwIG1hcmdpbnMgZnJvbSB0aGUgbGFzdCBpdGVtIGluIHRoZSBtb2RhbFxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGp1c3RzIHRoZSB3aWR0aCBvZiBhIG1vZGFsLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgbW9kYWwuIEdlbmVyYWxseSBhIHBlcmNlbnRhZ2UuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXgtd2lkdGggWyRyZXZlYWwtbWF4LXdpZHRoXSAtIE1heGltdW0gd2lkdGggb2YgdGhlIG1vZGFsLlxuQG1peGluIHJldmVhbC1tb2RhbC13aWR0aChcbiAgJHdpZHRoOiAkcmV2ZWFsLXdpZHRoLFxuICAkbWF4LXdpZHRoOiAkcmV2ZWFsLW1heC13aWR0aFxuKSB7XG4gIC8vIEV4dGVuZHMgbXVzdCBiZSBtYWRlIG91dHNpZGUgb2YgYnJlYWtwb2ludHMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBuZXdlciBTYXNzIHZlcnNpb25zIChsaWJzYXNzIHYzLjUpXG4gIEBleHRlbmQgJXJldmVhbC1jZW50ZXJlZDtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGZ1bGwtc2NyZWVuIG1vZGFsLCB3aGljaCBzdHJldGNoZXMgdGhlIGZ1bGwgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgd2luZG93LlxuQG1peGluIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuIHtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuXG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IG5vbmU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogMTAwJTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1yZXZlYWwge1xuXG4gIC8vLyBEaXNhYmxlcyB0aGUgc2Nyb2xsIHdoZW4gUmV2ZWFsIGlzIHNob3duIHRvIHByZXZlbnQgdGhlIGJhY2tncm91bmQgZnJvbSBzaGlmdGluZ1xuICBodG1sLmlzLXJldmVhbC1vcGVuIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuXG4gICAgJi56Zi1oYXMtc2Nyb2xsIHtcbiAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICB9XG5cbiAgICBib2R5IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheVxuICAucmV2ZWFsLW92ZXJsYXkge1xuICAgIEBpbmNsdWRlIHJldmVhbC1vdmVybGF5O1xuICB9XG5cbiAgLy8gTW9kYWwgY29udGFpbmVyXG4gIC5yZXZlYWwge1xuICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1iYXNlO1xuICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCgkcmV2ZWFsLXdpZHRoKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAxMDBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIC8vIFJlbW92ZSBwYWRkaW5nXG4gICAgJi5jb2xsYXBzZSB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC8vIFNpemluZyBjbGFzc2VzXG4gICAgJi50aW55ICB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCgzMCUpOyB9XG4gICAgJi5zbWFsbCB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCg1MCUpOyB9XG4gICAgJi5sYXJnZSB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCg5MCUpOyB9XG5cbiAgICAvLyBGdWxsLXNjcmVlbiBtb2RlXG4gICAgJi5mdWxsIHtcbiAgICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XG4gICAgfVxuXG4gICAgJi53aXRob3V0LW92ZXJsYXkge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGZvdW5kYXRpb24tbm9ybWFsaXplKCkge1xuICAvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjAgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbiAgLy8gRG9jdW1lbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuXG4gIGh0bWwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyXG4gIH1cblxuICAvLyBTZWN0aW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cblxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gIC8vIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG4gIH1cblxuICAvLyBHcm91cGluZyBjb250ZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgLy8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG5cbiAgaHIge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvLyAxXG4gICAgaGVpZ2h0OiAwOyAvLyAxXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7IC8vIDJcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cblxuICBwcmUge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMWVtOyAvLyAyXG4gIH1cblxuICAvLyBUZXh0LWxldmVsIHNlbWFudGljc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cblxuICBhIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gIC8vIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG5cbiAgYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7IC8vIDFcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLy8gMlxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cblxuICBiLFxuICBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgY29kZSxcbiAga2JkLFxuICBzYW1wIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8vIDFcbiAgICBmb250LXNpemU6IDFlbTsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG5cbiAgLy8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gIC8vIGFsbCBicm93c2Vycy5cblxuICBzdWIsXG4gIHN1cCB7XG4gICAgZm9udC1zaXplOiA3NSU7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIHN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xuICB9XG5cbiAgc3VwIHtcbiAgICB0b3A6IC0wLjVlbTtcbiAgfVxuXG4gIC8vIEVtYmVkZGVkIGNvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuXG4gIGltZyB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICB9XG5cbiAgLy8gRm9ybXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMTAwJTsgLy8gMVxuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgbWFyZ2luOiAwOyAvLyAyXG4gIH1cblxuICAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAgLy8gMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cblxuICBidXR0b24sXG4gIGlucHV0IHsgLy8gMVxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gIC8vIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cblxuICBidXR0b24sXG4gIHNlbGVjdCB7IC8vIDFcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG4gIFt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cbiAgYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuICBbdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBmaWVsZHNldCB7XG4gICAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICAvLyAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gIC8vICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGxlZ2VuZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMVxuICAgIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gICAgZGlzcGxheTogdGFibGU7IC8vIDFcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIDFcbiAgICBwYWRkaW5nOiAwOyAvLyAzXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLy8gMVxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cblxuICBwcm9ncmVzcyB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG5cbiAgdGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gIC8vIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cblxuICBbdHlwZT1cImNoZWNrYm94XCJdLFxuICBbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG4gICAgcGFkZGluZzogMDsgLy8gMlxuICB9XG5cbiAgLy8gQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuXG4gIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuXG4gIFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gMVxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvLyAyXG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG5cbiAgW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cblxuICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLy8gMVxuICAgIGZvbnQ6IGluaGVyaXQ7IC8vIDJcbiAgfVxuXG4gIC8vIEludGVyYWN0aXZlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cblxuICBkZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cblxuICBzdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gIH1cblxuICAvLyBNaXNjXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuXG4gIHRlbXBsYXRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG5cbiAgW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tY29sb3ItbGl0ZXJhbHMsIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcblxuLy8vL1xuLy8vIEBncm91cCBnbG9iYWxcbi8vLy9cblxuQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8vIEZvbnQgc2l6ZSBhdHRyaWJ1dGUgYXBwbGllZCB0byBgPGh0bWw+YCBhbmQgYDxib2R5PmAuIFdlIHVzZSAxMDAlIGJ5IGRlZmF1bHQgc28gdGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSB1c2VyJ3MgYnJvd3NlciBzZXR0aW5ncy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHdpZHRoIG9mIHlvdXIgc2l0ZS4gVXNlZCBieSB0aGUgZ3JpZCB0byBkZXRlcm1pbmUgcm93IHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBhbGwgdHlwZS4gYCRnbG9iYWwtbGluZWhlaWdodGAgaXMgMjRweCB3aGlsZSBgJGdsb2JhbC1mb250LXNpemVgIGlzIDE2cHhcbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtbGluZWhlaWdodDogMS41ICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JzIHVzZWQgZm9yIGJ1dHRvbnMsIGNhbGxvdXRzLCBsaW5rcywgZXRjLiBUaGVyZSBtdXN0IGFsd2F5cyBiZSBhIGNvbG9yIGNhbGxlZCBgcHJpbWFyeWAuXG4vLy8gQHR5cGUgTWFwXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXG4gIHByaW1hcnk6ICMxNzc5YmEsXG4gIHNlY29uZGFyeTogIzc2NzY3NixcbiAgc3VjY2VzczogIzNhZGI3NixcbiAgd2FybmluZzogI2ZmYWUwMCxcbiAgYWxlcnQ6ICNjYzRiMzcsXG4pICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgbGlnaHQgZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGxpZ2h0LWdyYXk6ICNlNmU2ZTYgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBtZWRpdW0gZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJG1lZGl1bS1ncmF5OiAjY2FjYWNhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgZGFyayBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZGFyay1ncmF5OiAjOGE4YThhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgYmxhY2sgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibGFjazogIzBhMGEwYSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIHdoaXRlIHVpIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kd2hpdGU6ICNmZWZlZmUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0YWNrIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIExpc3RcbiRib2R5LWZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWYgIWRlZmF1bHQ7XG5cbi8vLyBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSBhbnRpYWxpYXNlZCB0eXBlLCB1c2luZyB0aGUgYC13ZWJraXQtZm9udC1zbW9vdGhpbmdgIGFuZCBgLW1vei1vc3gtZm9udC1zbW9vdGhpbmdgIENTUyBwcm9wZXJ0aWVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIG1hcmdpbiBvbiBjb21wb25lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcGFkZGluZyBvbiBjb21wb25lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIHBvc2l0aW9uaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBvc2l0aW9uOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIGZvbnQgd2VpZ2h0IHVzZWQgZm9yIG5vcm1hbCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIGZvbnQgd2VpZ2h0IHVzZWQgZm9yIGJvbGQgdHlwZS5cbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXG4kZ2xvYmFsLXdlaWdodC1ib2xkOiBib2xkICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgYSBib3JkZXIgcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1yYWRpdXM6IDAgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIG1lbnUgc3R5bGVzLiBDYW4gYmUgb3ZlcndyaXR0ZW4gYXQgaW5kaXZpZHVhbCBtZW51IGNvbXBvbmVudCBsZXZlbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtbWVudS1wYWRkaW5nOiAwLjdyZW0gMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIE5lc3RlZCBtYXJnaW4gZm9yIHN1Ym1lbnUuXG4kZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBDU1MuIENhbiBiZSBlaXRoZXIgYGx0cmAgb3IgYHJ0bGAuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGZvciBjb21wb25lbnRzIHRoYXQgc3VwcG9ydCBpdC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZ2xvYmFsLWZsZXhib3g6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVkIHJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHByb3RvdHlwZXMgaWYgYXBwbGljYWJsZVxuLy8vIEB0eXBlIEJvb2xlYW5cbiRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIEJ1dHRvbiBjdXJzb3IncyB2YWx1ZSwgYGF1dG9gIGJ5IGRlZmF1bHRcbi8vLyBAdHlwZSBLZXl3b3JkXG4kZ2xvYmFsLWJ1dHRvbi1jdXJzb3I6IGF1dG8gIWRlZmF1bHQ7XG5cbkBpZiBub3QgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICBAZXJyb3IgJ0luICRmb3VuZGF0aW9uLXBhbGV0dGUsIHlvdSBtdXN0IGhhdmUgYSBjb2xvciBuYW1lZCBcInByaW1hcnlcIi4nO1xufVxuXG4vLyBJbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCBmb3IgdGV4dCBkaXJlY3Rpb25cbiRnbG9iYWwtbGVmdDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIHJpZ2h0LCBsZWZ0KTtcbiRnbG9iYWwtcmlnaHQ6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBsZWZ0LCByaWdodCk7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlIHRoYXQgY29udGFpbnMgdGhlIGZsZXgganVzdGlmeWluZyBvcHRpb25zXG4kLXpmLWZsZXgtanVzdGlmeTogLXpmLWZsZXgtanVzdGlmeSgkZ2xvYmFsLXRleHQtZGlyZWN0aW9uKTtcblxuLy8vIEdsb2JhbCB0b2xlcmFuY2UgZm9yIGNvbG9yIHBpY2sgY29udHJhc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlOiAwICFkZWZhdWx0O1xuXG4vLyBJbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCBmb3IgY29sb3JzXG5AaW5jbHVkZSBhZGQtZm91bmRhdGlvbi1jb2xvcnM7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXMge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW5vcm1hbGl6ZTtcblxuICAvLyBUaGVzZSBzdHlsZXMgYXJlIGFwcGxpZWQgdG8gYSA8bWV0YT4gdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHRcbiAgLmZvdW5kYXRpb24tbXEge1xuICAgIGZvbnQtZmFtaWx5OiAnI3stemYtYnAtc2VyaWFsaXplKCRicmVha3BvaW50cyl9JztcbiAgfVxuXG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIFNldCBib3gtc2l6aW5nIGdsb2JhbGx5IHRvIGhhbmRsZSBwYWRkaW5nIGFuZCBib3JkZXIgd2lkdGhzXG4gICosXG4gICo6OmJlZm9yZSxcbiAgKjo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBEZWZhdWx0IGJvZHkgc3R5bGVzXG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG5cbiAgICBAaWYgKCRib2R5LWFudGlhbGlhc2VkKSB7XG4gICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICAvLyBHZXQgcmlkIG9mIGdhcCB1bmRlciBpbWFnZXMgYnkgbWFraW5nIHRoZW0gZGlzcGxheTogaW5saW5lLWJsb2NrOyBieSBkZWZhdWx0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAvLyBHcmlkIGRlZmF1bHRzIHRvIGdldCBpbWFnZXMgYW5kIGVtYmVkcyB0byB3b3JrIHByb3Blcmx5XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIHRha2VzIG9uIGhlaWdodCBhdXRvbWF0aWNhbGx5XG4gIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWluLWhlaWdodDogNTBweDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gIC8vIE1ha2Ugc2VsZWN0IGVsZW1lbnRzIGFyZSAxMDAlIHdpZHRoIGJ5IGRlZmF1bHRcbiAgc2VsZWN0IHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gU3R5bGVzIEdvb2dsZSBNYXBzIGFuZCBNYXBRdWVzdCBlbWJlZHMgcHJvcGVybHlcbiAgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1pZHNcbiAgLm1hcF9jYW52YXMsXG4gIC5tcWEtZGlzcGxheSB7XG4gICAgaW1nLFxuICAgIGVtYmVkLFxuICAgIG9iamVjdCB7XG4gICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCA8YnV0dG9uPiBzdHlsZXMgY3JlYXRlZCBieSBtb3N0IGJyb3dzZXJzXG4gIGJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY3Vyc29yOiAkZ2xvYmFsLWJ1dHRvbi1jdXJzb3I7XG4gIH1cblxuICAvLyBQcmV2ZW50IHRleHQgb3ZlcmZsb3cgb24gcHJlXG4gIHByZSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyBNYWtlIHJlc2V0IGluaGVyaXQgZm9udC1mYW1pbHkgaW5zdGVhZCBvZiBzZXR0aW5ncyBzYW5zLXNlcmlmXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIEludGVybmFsIGNsYXNzZXMgdG8gc2hvdy9oaWRlIGVsZW1lbnRzIGluIEphdmFTY3JpcHRcbiAgLmlzLXZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaXMtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbiIsIi8vICBGb3VuZGF0aW9uIGZvciBTaXRlcyBTZXR0aW5nc1xuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gIFRhYmxlIG9mIENvbnRlbnRzOlxuLy9cbi8vICAgMS4gR2xvYmFsXG4vLyAgIDIuIEJyZWFrcG9pbnRzXG4vLyAgIDMuIFRoZSBHcmlkXG4vLyAgIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gICA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcbi8vICAgNi4gQWJpZGVcbi8vICAgNy4gQWNjb3JkaW9uXG4vLyAgIDguIEFjY29yZGlvbiBNZW51XG4vLyAgIDkuIEJhZGdlXG4vLyAgMTAuIEJyZWFkY3J1bWJzXG4vLyAgMTEuIEJ1dHRvblxuLy8gIDEyLiBCdXR0b24gR3JvdXBcbi8vICAxMy4gQ2FsbG91dFxuLy8gIDE0LiBDYXJkXG4vLyAgMTUuIENsb3NlIEJ1dHRvblxuLy8gIDE2LiBEcmlsbGRvd25cbi8vICAxNy4gRHJvcGRvd25cbi8vICAxOC4gRHJvcGRvd24gTWVudVxuLy8gIDE5LiBGbGV4Ym94IFV0aWxpdGllc1xuLy8gIDIwLiBGb3Jtc1xuLy8gIDIxLiBMYWJlbFxuLy8gIDIyLiBNZWRpYSBPYmplY3Rcbi8vICAyMy4gTWVudVxuLy8gIDI0LiBNZXRlclxuLy8gIDI1LiBPZmYtY2FudmFzXG4vLyAgMjYuIE9yYml0XG4vLyAgMjcuIFBhZ2luYXRpb25cbi8vICAyOC4gUHJvZ3Jlc3MgQmFyXG4vLyAgMjkuIFByb3RvdHlwZSBBcnJvd1xuLy8gIDMwLiBQcm90b3R5cGUgQm9yZGVyLUJveFxuLy8gIDMxLiBQcm90b3R5cGUgQm9yZGVyLU5vbmVcbi8vICAzMi4gUHJvdG90eXBlIEJvcmRlcmVkXG4vLyAgMzMuIFByb3RvdHlwZSBEaXNwbGF5XG4vLyAgMzQuIFByb3RvdHlwZSBGb250LVN0eWxpbmdcbi8vICAzNS4gUHJvdG90eXBlIExpc3QtU3R5bGUtVHlwZVxuLy8gIDM2LiBQcm90b3R5cGUgT3ZlcmZsb3dcbi8vICAzNy4gUHJvdG90eXBlIFBvc2l0aW9uXG4vLyAgMzguIFByb3RvdHlwZSBSb3VuZGVkXG4vLyAgMzkuIFByb3RvdHlwZSBTZXBhcmF0b3Jcbi8vICA0MC4gUHJvdG90eXBlIFNoYWRvd1xuLy8gIDQxLiBQcm90b3R5cGUgU2l6aW5nXG4vLyAgNDIuIFByb3RvdHlwZSBTcGFjaW5nXG4vLyAgNDMuIFByb3RvdHlwZSBUZXh0LURlY29yYXRpb25cbi8vICA0NC4gUHJvdG90eXBlIFRleHQtVHJhbnNmb3JtYXRpb25cbi8vICA0NS4gUHJvdG90eXBlIFRleHQtVXRpbGl0aWVzXG4vLyAgNDYuIFJlc3BvbnNpdmUgRW1iZWRcbi8vICA0Ny4gUmV2ZWFsXG4vLyAgNDguIFNsaWRlclxuLy8gIDQ5LiBTd2l0Y2hcbi8vICA1MC4gVGFibGVcbi8vICA1MS4gVGFic1xuLy8gIDUyLiBUaHVtYm5haWxcbi8vICA1My4gVGl0bGUgQmFyXG4vLyAgNTQuIFRvb2x0aXBcbi8vICA1NS4gVG9wIEJhclxuLy8gIDU2LiBYeSBHcmlkXG5cbi8vQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8gMS4gR2xvYmFsXG4vLyAtLS0tLS0tLS1cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCU7XG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKTtcbiRnbG9iYWwtbGluZWhlaWdodDogMS41O1xuJGZvdW5kYXRpb24tcGFsZXR0ZTogKFxuICAgICAgICBwcmltYXJ5OiAjMTc3OWJhLFxuICAgICAgICBzZWNvbmRhcnk6ICM3Njc2NzYsXG4gICAgICAgIHN1Y2Nlc3M6ICMzYWRiNzYsXG4gICAgICAgIHdhcm5pbmc6ICNmZmFlMDAsXG4gICAgICAgIGFsZXJ0OiAjY2M0YjM3LFxuKTtcbiRsaWdodC1ncmF5OiAjZTZlNmU2O1xuJG1lZGl1bS1ncmF5OiAjY2FjYWNhO1xuJGRhcmstZ3JheTogIzhhOGE4YTtcbiRibGFjazogIzBhMGEwYTtcbiR3aGl0ZTogI2ZlZmVmZTtcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjaztcbiRib2R5LWZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWY7XG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZTtcbiRnbG9iYWwtbWFyZ2luOiAxcmVtO1xuJGdsb2JhbC1wYWRkaW5nOiAxcmVtO1xuJGdsb2JhbC1wb3NpdGlvbjogMXJlbTtcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsO1xuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZDtcbiRnbG9iYWwtcmFkaXVzOiAwO1xuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtO1xuJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW46IDFyZW07XG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHI7XG4kZ2xvYmFsLWZsZXhib3g6IHRydWU7XG4kZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50czogZmFsc2U7XG4kZ2xvYmFsLWJ1dHRvbi1jdXJzb3I6IGF1dG87XG4kZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlOiAwO1xuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlO1xuXG5AaW5jbHVkZSBhZGQtZm91bmRhdGlvbi1jb2xvcnM7XG4kcHJpbnQtaHJlZnM6IHRydWU7XG5cbi8vIDIuIEJyZWFrcG9pbnRzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kYnJlYWtwb2ludHM6IChcbiAgICAgICAgc21hbGw6IDAsXG4gICAgICAgIHNtZWRpdW06IDQwMHB4LFxuICAgICAgICBtZWRpdW06IDY0MHB4LFxuICAgICAgICBsYXJnZTogMTAyNHB4LFxuICAgICAgICB4bGFyZ2U6IDEyMDBweCxcbiAgICAgICAgeHhsYXJnZTogMTQ0MHB4LFxuKTtcbiRwcmludC1icmVha3BvaW50OiBsYXJnZTtcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBzbWVkaXVtIG1lZGl1bSBsYXJnZSk7XG5cbi8vIDMuIFRoZSBHcmlkXG4vLyAtLS0tLS0tLS0tLVxuXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyO1xuJGdyaWQtY29sdW1uLWd1dHRlcjogKFxuICAgICAgICBzbWFsbDogMjBweCxcbiAgICAgICAgbWVkaXVtOiAzMHB4LFxuKTtcbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlO1xuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucyc7XG4kYmxvY2stZ3JpZC1tYXg6IDg7XG5cbi8vIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWw7XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiRoZWFkZXItY29sb3I6IGluaGVyaXQ7XG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcbiRoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuJGhlYWRlci1zdHlsZXM6IChcbiAgICAgICAgc21hbGw6IChcbiAgICAgICAgICAgICAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDI0KSxcbiAgICAgICAgICAgICAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAgICAgICAgICAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcbiAgICAgICAgICAgICAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDE4KSxcbiAgICAgICAgICAgICAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcbiAgICAgICAgICAgICAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgICAgICAgKSxcbiAgICAgICAgbWVkaXVtOiAoXG4gICAgICAgICAgICAgICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXG4gICAgICAgICAgICAgICAgJ2gyJzogKCdmb250LXNpemUnOiA0MCksXG4gICAgICAgICAgICAgICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXG4gICAgICAgICAgICAgICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXG4gICAgICAgICAgICAgICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCksXG4gICAgICAgICAgICAgICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICAgICAgICksXG4pO1xuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuJHNtYWxsLWZvbnQtc2l6ZTogODAlO1xuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXk7XG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNjtcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiRjb2RlLWNvbG9yOiAkYmxhY2s7XG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRjb2RlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNSAxKTtcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lO1xuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xuJGhyLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvO1xuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuJGxpc3QtbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5O1xuJGJsb2NrcXVvdGUtcGFkZGluZzogcmVtLWNhbGMoOSAyMCAwIDE5KTtcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXk7XG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnO1xuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xuJGtleXN0cm9rZS1jb2xvcjogJGJsYWNrO1xuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApO1xuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjaztcblxuLy8gNS4gVHlwb2dyYXBoeSBIZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjU7XG4kbGVhZC1saW5laGVpZ2h0OiAxLjY7XG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcbiRzdWJoZWFkZXItY29sb3I6ICRkYXJrLWdyYXk7XG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbTtcbiRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuJHN0YXQtZm9udC1zaXplOiAyLjVyZW07XG5cbi8vIDYuIEFiaWRlXG4vLyAtLS0tLS0tLVxuXG4kYWJpZGUtaW5wdXRzOiB0cnVlO1xuJGFiaWRlLWxhYmVsczogdHJ1ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XG4kZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpO1xuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpO1xuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuXG4vLyA3LiBBY2NvcmRpb25cbi8vIC0tLS0tLS0tLS0tLVxuXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlO1xuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtO1xuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRhY2NvcmRpb24tY29udGVudC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheTtcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtO1xuXG4vLyA4LiBBY2NvcmRpb24gTWVudVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuJGFjY29yZGlvbm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XG4kYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luOiAkZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbjtcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZztcbiRhY2NvcmRpb25tZW51LWFycm93czogdHJ1ZTtcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDogbnVsbDtcbiRhY2NvcmRpb25tZW51LWJvcmRlcjogbnVsbDtcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQ6IG51bGw7XG4kYWNjb3JkaW9uLXN1Ym1lbnUtdG9nZ2xlLWJvcmRlcjogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg6IDQwcHg7XG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xuJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZTogNnB4O1xuXG4vLyA5LiBCYWRnZVxuLy8gLS0tLS0tLS1cblxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGJhZGdlLWNvbG9yOiAkd2hpdGU7XG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2s7XG4kYmFkZ2UtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbTtcbiRiYWRnZS1taW53aWR0aDogMi4xZW07XG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW07XG5cbi8vIDEwLiBCcmVhZGNydW1ic1xuLy8gLS0tLS0tLS0tLS0tLS0tXG5cbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSk7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2s7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luOiAwLjc1cmVtO1xuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yOiB0cnVlO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW06ICcvJztcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bDogJ1xcXFwnO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkbWVkaXVtLWdyYXk7XG5cbi8vIDExLiBCdXR0b25cbi8vIC0tLS0tLS0tLS1cblxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdDtcbiRidXR0b24tcGFkZGluZzogMC44NWVtIDFlbTtcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMDtcbiRidXR0b24tZmlsbDogc29saWQ7XG4kYnV0dG9uLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYnV0dG9uLWJhY2tncm91bmQsICRsaWdodG5lc3M6IC0xNSUpO1xuJGJ1dHRvbi1jb2xvcjogJHdoaXRlO1xuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjaztcbiRidXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRidXR0b24taG9sbG93LWJvcmRlci13aWR0aDogMXB4O1xuJGJ1dHRvbi1zaXplczogKFxuICAgICAgICB0aW55OiAwLjZyZW0sXG4gICAgICAgIHNtYWxsOiAwLjc1cmVtLFxuICAgICAgICBkZWZhdWx0OiAwLjlyZW0sXG4gICAgICAgIGxhcmdlOiAxLjI1cmVtLFxuKTtcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCU7XG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCU7XG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0O1xuJGJ1dHRvbi1yZXNwb25zaXZlLWV4cGFuZGVkOiBmYWxzZTtcblxuLy8gMTIuIEJ1dHRvbiBHcm91cFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtO1xuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweDtcbiRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcjogJy5idXR0b24nO1xuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDY7XG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWU7XG5cbi8vIDEzLiBDYWxsb3V0XG4vLyAtLS0tLS0tLS0tLVxuXG4kY2FsbG91dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JTtcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KTtcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMDtcbiRjYWxsb3V0LXBhZGRpbmc6IDFyZW07XG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQ7XG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGNhbGxvdXQtbGluay10aW50OiAzMCU7XG5cbi8vIDE0LiBDYXJkXG4vLyAtLS0tLS0tLVxuXG4kY2FyZC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kY2FyZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRjYXJkLWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xuJGNhcmQtc2hhZG93OiBub25lO1xuJGNhcmQtYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kY2FyZC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4kY2FyZC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcblxuLy8gMTUuIENsb3NlIEJ1dHRvblxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kY2xvc2VidXR0b24tcG9zaXRpb246IHJpZ2h0IHRvcDtcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogKFxuICAgICAgICBzbWFsbDogMC42NnJlbSxcbiAgICAgICAgbWVkaXVtOiAxcmVtLFxuKTtcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IChcbiAgICAgICAgc21hbGw6IDAuMzNlbSxcbiAgICAgICAgbWVkaXVtOiAwLjVyZW0sXG4pO1xuJGNsb3NlYnV0dG9uLXNpemU6IChcbiAgICAgICAgc21hbGw6IDEuNWVtLFxuICAgICAgICBtZWRpdW06IDJlbSxcbik7XG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMTtcbiRjbG9zZWJ1dHRvbi1jb2xvcjogJGRhcmstZ3JheTtcbiRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjogJGJsYWNrO1xuXG4vLyAxNi4gRHJpbGxkb3duXG4vLyAtLS0tLS0tLS0tLS0tXG5cbiRkcmlsbGRvd24tdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGxpbmVhcjtcbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlO1xuJGRyaWxsZG93bi1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbjogMDtcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyaWxsZG93bi1zdWJtZW51LXBhZGRpbmc6ICRkcmlsbGRvd24tcGFkZGluZztcbiRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kZHJpbGxkb3duLWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRkcmlsbGRvd24tYXJyb3ctc2l6ZTogNnB4O1xuXG4vLyAxNy4gRHJvcGRvd25cbi8vIC0tLS0tLS0tLS0tLVxuXG4kZHJvcGRvd24tcGFkZGluZzogMXJlbTtcbiRkcm9wZG93bi1iYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW07XG4kZHJvcGRvd24td2lkdGg6IDMwMHB4O1xuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kZHJvcGRvd24tc2l6ZXM6IChcbiAgICAgICAgdGlueTogMTAwcHgsXG4gICAgICAgIHNtYWxsOiAyMDBweCxcbiAgICAgICAgbGFyZ2U6IDQwMHB4LFxuKTtcblxuLy8gMTguIERyb3Bkb3duIE1lbnVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG5cbiRkcm9wZG93bm1lbnUtYXJyb3dzOiB0cnVlO1xuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvcjtcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4O1xuJGRyb3Bkb3dubWVudS1hcnJvdy1wYWRkaW5nOiAxLjVyZW07XG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHg7XG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6IG51bGw7XG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyb3Bkb3dubWVudS1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMDtcbiRkcm9wZG93bm1lbnUtc3VibWVudS1wYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmc7XG4kZHJvcGRvd25tZW51LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRkcm9wZG93bi1tZW51LWl0ZW0tY29sb3ItYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSk7XG4kZHJvcGRvd24tbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiB0cmFuc3BhcmVudDtcblxuLy8gMTkuIEZsZXhib3ggVXRpbGl0aWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiA2O1xuJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50czogdHJ1ZTtcblxuLy8gMjAuIEZvcm1zXG4vLyAtLS0tLS0tLS1cblxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCk7XG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKTtcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKTtcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KTtcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrO1xuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjaztcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbTtcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2s7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44O1xuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5O1xuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGlucHV0LWNvbG9yOiAkYmxhY2s7XG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdDtcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGlucHV0LWxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGlucHV0LWJhY2tncm91bmQtZm9jdXM6ICR3aGl0ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheTtcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kaW5wdXQtYm9yZGVyLWZvY3VzOiAxcHggc29saWQgJGRhcmstZ3JheTtcbiRpbnB1dC1wYWRkaW5nOiAkZm9ybS1zcGFjaW5nIC8gMjtcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKTtcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggJG1lZGl1bS1ncmF5O1xuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQ7XG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQ7XG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlO1xuJGlucHV0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMjEuIExhYmVsXG4vLyAtLS0tLS0tLS1cblxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGxhYmVsLWNvbG9yOiAkd2hpdGU7XG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2s7XG4kbGFiZWwtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbTtcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbTtcbiRsYWJlbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAyMi4gTWVkaWEgT2JqZWN0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG5cbiRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlO1xuXG4vLyAyMy4gTWVudVxuLy8gLS0tLS0tLS1cblxuJG1lbnUtbWFyZ2luOiAwO1xuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW47XG4kbWVudS1pdGVtcy1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRtZW51LXNpbXBsZS1tYXJnaW46IDFyZW07XG4kbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogJHdoaXRlO1xuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpO1xuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtO1xuJG1lbnUtc3RhdGUtYmFjay1jb21wYXQ6IHRydWU7XG4kbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdDogdHJ1ZTtcbiRtZW51LWljb25zLWJhY2stY29tcGF0OiB0cnVlO1xuXG4vLyAyNC4gTWV0ZXJcbi8vIC0tLS0tLS0tLVxuXG4kbWV0ZXItaGVpZ2h0OiAxcmVtO1xuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3I7XG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yO1xuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3I7XG5cbi8vIDI1LiBPZmYtY2FudmFzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kb2ZmY2FudmFzLXNpemVzOiAoXG4gICAgICAgIHNtYWxsOiAyNTBweCxcbik7XG4kb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzOiAoXG4gICAgICAgIHNtYWxsOiAyNTBweCxcbik7XG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJG9mZmNhbnZhcy1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoJGJsYWNrLCAwLjcpO1xuJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZTogMjBweDtcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSk7XG4kb2ZmY2FudmFzLW92ZXJsYXktemluZGV4OiAxMTtcbiRvZmZjYW52YXMtcHVzaC16aW5kZXg6IDEyO1xuJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogMTM7XG4kb2ZmY2FudmFzLXJldmVhbC16aW5kZXg6IDEyO1xuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cztcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2U7XG4kb2ZmY2FudmFzLWZpeGVkLXJldmVhbDogdHJ1ZTtcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSk7XG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnO1xuXG4vLyAyNi4gT3JiaXRcbi8vIC0tLS0tLS0tLVxuXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXk7XG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbjogMC4xcmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbTtcbiRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTA7XG5cbi8vIDI3LiBQYWdpbmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrO1xuJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygzIDEwKTtcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSk7XG4kcGFnaW5hdGlvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50OiAkcHJpbWFyeS1jb2xvcjtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7XG4kcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtOiBmYWxzZTtcbiRwYWdpbmF0aW9uLWFycm93czogdHJ1ZTtcblxuLy8gMjguIFByb2dyZXNzIEJhclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtO1xuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAyOS4gUHJvdG90eXBlIEFycm93XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uczogKFxuICAgICAgICBkb3duLFxuICAgICAgICB1cCxcbiAgICAgICAgcmlnaHQsXG4gICAgICAgIGxlZnRcbik7XG4kcHJvdG90eXBlLWFycm93LXNpemU6IDAuNDM3NXJlbTtcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcblxuLy8gMzAuIFByb3RvdHlwZSBCb3JkZXItQm94XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcblxuLy8gMzEuIFByb3RvdHlwZSBCb3JkZXItTm9uZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcblxuLy8gMzIuIFByb3RvdHlwZSBCb3JkZXJlZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtYm9yZGVyLXdpZHRoOiByZW0tY2FsYygxKTtcbiRwcm90b3R5cGUtYm9yZGVyLXR5cGU6IHNvbGlkO1xuJHByb3RvdHlwZS1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcblxuLy8gMzMuIFByb3RvdHlwZSBEaXNwbGF5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtZGlzcGxheTogKFxuICAgICAgICBpbmxpbmUsXG4gICAgICAgIGlubGluZS1ibG9jayxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIHRhYmxlLFxuICAgICAgICB0YWJsZS1jZWxsXG4pO1xuXG4vLyAzNC4gUHJvdG90eXBlIEZvbnQtU3R5bGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoNCk7XG4kcHJvdG90eXBlLWZvbnQtbm9ybWFsOiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kcHJvdG90eXBlLWZvbnQtYm9sZDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcblxuLy8gMzUuIFByb3RvdHlwZSBMaXN0LVN0eWxlLVR5cGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkOiAoXG4gICAgICAgIGRpc2MsXG4gICAgICAgIGNpcmNsZSxcbiAgICAgICAgc3F1YXJlXG4pO1xuJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQ6IChcbiAgICAgICAgZGVjaW1hbCxcbiAgICAgICAgbG93ZXItYWxwaGEsXG4gICAgICAgIGxvd2VyLWxhdGluLFxuICAgICAgICBsb3dlci1yb21hbixcbiAgICAgICAgdXBwZXItYWxwaGEsXG4gICAgICAgIHVwcGVyLWxhdGluLFxuICAgICAgICB1cHBlci1yb21hblxuKTtcblxuLy8gMzYuIFByb3RvdHlwZSBPdmVyZmxvd1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtb3ZlcmZsb3c6IChcbiAgICAgICAgdmlzaWJsZSxcbiAgICAgICAgaGlkZGVuLFxuICAgICAgICBzY3JvbGxcbik7XG5cbi8vIDM3LiBQcm90b3R5cGUgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXBvc2l0aW9uOiAoXG4gICAgICAgIHN0YXRpYyxcbiAgICAgICAgcmVsYXRpdmUsXG4gICAgICAgIGFic29sdXRlLFxuICAgICAgICBmaXhlZFxuKTtcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1O1xuXG4vLyAzOC4gUHJvdG90eXBlIFJvdW5kZWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygzKTtcblxuLy8gMzkuIFByb3RvdHlwZSBTZXBhcmF0b3Jcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduOiBjZW50ZXI7XG4kcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQ6IHJlbS1jYWxjKDIpO1xuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW07XG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRwcm90b3R5cGUtc2VwYXJhdG9yLW1hcmdpbi10b3A6ICRnbG9iYWwtbWFyZ2luO1xuXG4vLyA0MC4gUHJvdG90eXBlIFNoYWRvd1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1ib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsIDAsIDAsIC4xNiksXG4wIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAuMTIpO1xuXG4vLyA0MS4gUHJvdG90eXBlIFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1zaXppbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1zaXppbmc6IChcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuKTtcbiRwcm90b3R5cGUtc2l6ZXM6IChcbiAgICAgICAgMjU6IDI1JSxcbiAgICAgICAgNTA6IDUwJSxcbiAgICAgICAgNzU6IDc1JSxcbiAgICAgICAgMTAwOiAxMDAlXG4pO1xuXG4vLyA0Mi4gUHJvdG90eXBlIFNwYWNpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLXNwYWNpbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50OiAzO1xuXG4vLyA0My4gUHJvdG90eXBlIFRleHQtRGVjb3JhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uOiAoXG4gICAgICAgIG92ZXJsaW5lLFxuICAgICAgICB1bmRlcmxpbmUsXG4gICAgICAgIGxpbmUtdGhyb3VnaCxcbik7XG5cbi8vIDQ0LiBQcm90b3R5cGUgVGV4dC1UcmFuc2Zvcm1hdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtdHJhbnNmb3JtYXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uOiAoXG4gICAgICAgIGxvd2VyY2FzZSxcbiAgICAgICAgdXBwZXJjYXNlLFxuICAgICAgICBjYXBpdGFsaXplXG4pO1xuXG4vLyA0NS4gUHJvdG90eXBlIFRleHQtVXRpbGl0aWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtdXRpbGl0aWVzLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbi8vIDQ2LiBSZXNwb25zaXZlIEVtYmVkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNik7XG4kcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3M6IChcbiAgICAgICAgZGVmYXVsdDogNCBieSAzLFxuICAgICAgICB3aWRlc2NyZWVuOiAxNiBieSA5LFxuKTtcblxuLy8gNDcuIFJldmVhbFxuLy8gLS0tLS0tLS0tLVxuXG4kcmV2ZWFsLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRyZXZlYWwtd2lkdGg6IDYwMHB4O1xuJHJldmVhbC1tYXgtd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kcmV2ZWFsLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcbiRyZXZlYWwtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHJldmVhbC16aW5kZXg6IDEwMDU7XG4kcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNDUpO1xuXG4vLyA0OC4gU2xpZGVyXG4vLyAtLS0tLS0tLS0tXG5cbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbTtcbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4kc2xpZGVyLWhlaWdodDogMC41cmVtO1xuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbTtcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW07XG4kc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gNDkuIFN3aXRjaFxuLy8gLS0tLS0tLS0tLVxuXG4kc3dpdGNoLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU6ICRwcmltYXJ5LWNvbG9yO1xuJHN3aXRjaC1oZWlnaHQ6IDJyZW07XG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW07XG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbTtcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW07XG4kc3dpdGNoLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kc3dpdGNoLW1hcmdpbjogJGdsb2JhbC1tYXJnaW47XG4kc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kc3dpdGNoLXBhZGRsZS1vZmZzZXQ6IDAuMjVyZW07XG4kc3dpdGNoLXBhZGRsZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0O1xuXG4vLyA1MC4gVGFibGVcbi8vIC0tLS0tLS0tLVxuXG4kdGFibGUtYmFja2dyb3VuZDogJHdoaXRlO1xuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JTtcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1wYWRkaW5nOiByZW0tY2FsYyg4IDEwIDEwKTtcbiR0YWJsZS1ob3Zlci1zY2FsZTogMiU7XG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpO1xuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWU7XG4kdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1zdHJpcGU6IGV2ZW47XG4kdGFibGUtaGVhZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlIC8gMik7XG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpO1xuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpO1xuJHRhYmxlLWhlYWQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiR0YWJsZS1mb290LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlO1xuJHRhYmxlLXN0YWNrLWJyZWFrcG9pbnQ6IG1lZGl1bTtcblxuLy8gNTEuIFRhYnNcbi8vIC0tLS0tLS0tXG5cbiR0YWItbWFyZ2luOiAwO1xuJHRhYi1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGFiLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICRsaWdodC1ncmF5O1xuJHRhYi1hY3RpdmUtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJHRhYi1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZTtcbiR0YWItaXRlbS1wYWRkaW5nOiAxLjI1cmVtIDEuNXJlbTtcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGFiLWNvbnRlbnQtYm9yZGVyOiAkbGlnaHQtZ3JheTtcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiR0YWItY29udGVudC1wYWRkaW5nOiAxcmVtO1xuXG4vLyA1Mi4gVGh1bWJuYWlsXG4vLyAtLS0tLS0tLS0tLS0tXG5cbiR0aHVtYm5haWwtYm9yZGVyOiA0cHggc29saWQgJHdoaXRlO1xuJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiR0aHVtYm5haWwtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgkYmxhY2ssIDAuMik7XG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KTtcbiR0aHVtYm5haWwtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyMDBtcyBlYXNlLW91dDtcbiR0aHVtYm5haWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gNTMuIFRpdGxlIEJhclxuLy8gLS0tLS0tLS0tLS0tLVxuXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrO1xuJHRpdGxlYmFyLWNvbG9yOiAkd2hpdGU7XG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtO1xuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQ7XG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlO1xuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheTtcbiR0aXRsZWJhci1pY29uLXNwYWNpbmc6IDAuMjVyZW07XG5cbi8vIDU0LiBUb29sdGlwXG4vLyAtLS0tLS0tLS0tLVxuXG4kaGFzLXRpcC1jdXJzb3I6IGhlbHA7XG4kaGFzLXRpcC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiRoYXMtdGlwLWJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggJGRhcmstZ3JheTtcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiR0b29sdGlwLWNvbG9yOiAkd2hpdGU7XG4kdG9vbHRpcC1wYWRkaW5nOiAwLjc1cmVtO1xuJHRvb2x0aXAtbWF4LXdpZHRoOiAxMHJlbTtcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbTtcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2O1xuJHRvb2x0aXAtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gNTUuIFRvcCBCYXJcbi8vIC0tLS0tLS0tLS0tXG5cbiR0b3BiYXItcGFkZGluZzogMC41cmVtO1xuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4kdG9wYmFyLXRpdGxlLXNwYWNpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwO1xuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHg7XG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xuXG4vLyA1Ni4gWHkgR3JpZFxuLy8gLS0tLS0tLS0tLS1cblxuJHh5LWdyaWQ6IHRydWU7XG4kZ3JpZC1jb250YWluZXI6ICRnbG9iYWwtd2lkdGg7XG4kZ3JpZC1jb2x1bW5zOiAxMjtcbiRncmlkLW1hcmdpbi1ndXR0ZXJzOiAoXG4gICAgICAgIHNtYWxsOiAyMHB4LFxuICAgICAgICBtZWRpdW06IDMwcHhcbik7XG4kZ3JpZC1wYWRkaW5nLWd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzO1xuJGdyaWQtY29udGFpbmVyLXBhZGRpbmc6ICRncmlkLXBhZGRpbmctZ3V0dGVycztcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGg7XG4keHktYmxvY2stZ3JpZC1tYXg6IDg7XG5cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIENyZWF0ZXMgYW4gaW5uZXIgYm94LXNoYWRvdyBmb3Igb25seSBvbmUgc2lkZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2lkZSAtIFNpZGUgdGhlIHNoYWRvdyBpcyBzdXBwb3NlZCB0byBhcHBlYXIuIENhbiBiZSBgdG9wYCwgYGxlZnRgLCBgcmlnaHRgIG9yIGBib3R0b21gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSAtIFdpZHRoIGZvciB0aGUgdGFyZ2V0IHNpZGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3Igb2YgdGhlIHNoYWRvdy5cbkBtaXhpbiBpbm5lci1zaWRlLXNoYWRvdyhcbiAgJHNpZGU6IGJvdHRvbSxcbiAgJHNpemU6IDIwcHgsXG4gICRjb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpXG4pIHtcblxuICAkaGVscGVyOiByb3VuZCgkc2l6ZSAqIDAuNjUpO1xuXG4gIEBpZiAoJHNpZGUgPT0gdG9wKSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAkaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IGxlZnQpIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAkaGVscGVyIDAgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gcmlnaHQpIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAoLTEpKiRoZWxwZXIgMCAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSBib3R0b20pIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICgtMSkqJGhlbHBlciAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgQ1NTIHRyaWFuZ2xlLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgZHJvcGRvd24gYXJyb3dzLCBkcm9wZG93biBwaXBzLCBhbmQgbW9yZS4gVXNlIHRoaXMgbWl4aW4gaW5zaWRlIGEgYCY6OmJlZm9yZWAgb3IgYCY6OmFmdGVyYCBzZWxlY3RvciwgdG8gYXR0YWNoIHRoZSB0cmlhbmdsZSB0byBhbiBleGlzdGluZyBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0cmlhbmdsZS1zaXplIC0gV2lkdGggb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICR0cmlhbmdsZS1jb2xvciAtIENvbG9yIG9mIHRoZSB0cmlhbmdsZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR0cmlhbmdsZS1kaXJlY3Rpb24gLSBEaXJlY3Rpb24gdGhlIHRyaWFuZ2xlIHBvaW50cy4gQ2FuIGJlIGB1cGAsIGByaWdodGAsIGBkb3duYCwgb3IgYGxlZnRgLlxuQG1peGluIGNzcy10cmlhbmdsZShcbiAgJHRyaWFuZ2xlLXNpemUsXG4gICR0cmlhbmdsZS1jb2xvcixcbiAgJHRyaWFuZ2xlLWRpcmVjdGlvblxuKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuXG4gIGJvcmRlcjogaW5zZXQgJHRyaWFuZ2xlLXNpemU7XG5cbiAgY29udGVudDogJyc7XG5cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSB1cCkge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHJpZ2h0KSB7XG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBtZW51IGljb24gd2l0aCBhIHNldCB3aWR0aCwgaGVpZ2h0LCBudW1iZXIgb2YgYmFycywgYW5kIGNvbG9ycy4gVGhlIG1peGluIHVzZXMgdGhlIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiB0aGUgYmFycyB0byBkZXRlcm1pbmUgc3BhY2luZy4gPGRpdiBjbGFzcz1cImRvY3MtZXhhbXBsZS1idXJnZXJcIj48L2Rpdj5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yLWhvdmVyIFskZGFyay1ncmF5XSAtIENvbG9yIHRvIHVzZSB3aGVuIHRoZSBpY29uIGlzIGhvdmVyZWQgb3Zlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFsyMHB4XSAtIFdpZHRoIG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IFsxNnB4XSAtIEhlaWdodCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbMnB4XSAtIEhlaWdodCBvZiBpbmRpdmlkdWFsIGJhcnMgaW4gdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXJzIFszXSAtIE51bWJlciBvZiBiYXJzIGluIHRoZSBpY29uLlxuQG1peGluIGhhbWJ1cmdlcihcbiAgJGNvbG9yOiAkYmxhY2ssXG4gICRjb2xvci1ob3ZlcjogJGRhcmstZ3JheSxcbiAgJHdpZHRoOiAyMHB4LFxuICAkaGVpZ2h0OiAxNnB4LFxuICAkd2VpZ2h0OiAycHgsXG4gICRiYXJzOiAzXG4pIHtcbiAgLy8gYm94LXNoYWRvdyBDU1Mgb3V0cHV0XG4gICRzaGFkb3c6ICgpO1xuICAkaG92ZXItc2hhZG93OiAoKTtcblxuICAvLyBTcGFjaW5nIGJldHdlZW4gYmFycyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgZWFjaCBiYXJcbiAgJHNwYWNpbmc6ICgkaGVpZ2h0IC0gKCR3ZWlnaHQgKiAkYmFycykpIC8gKCRiYXJzIC0gMSk7XG5cbiAgQGlmIHVuaXQoJHNwYWNpbmcpID09ICdweCcge1xuICAgICRzcGFjaW5nOiBmbG9vcigkc3BhY2luZyk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xuICAgICRzaGFkb3c6IGFwcGVuZCgkc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3IsIGNvbW1hKTtcbiAgfVxuXG4gIC8vIEljb24gY29udGFpbmVyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyBJY29uIGJhcnNcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHdlaWdodDtcblxuICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICBib3gtc2hhZG93OiAkc2hhZG93O1xuXG4gICAgY29udGVudDogJyc7XG4gIH1cblxuICAvLyBIb3ZlciBzdGF0ZVxuICBAaWYgJGNvbG9yLWhvdmVyIHtcbiAgICAvLyBHZW5lcmF0ZSBDU1NcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgICAkaG92ZXItc2hhZG93OiBhcHBlbmQoJGhvdmVyLXNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLWhvdmVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWhvdmVyO1xuICAgICAgYm94LXNoYWRvdzogJGhvdmVyLXNoYWRvdztcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgYSBkb3dud2FyZC1mYWNpbmcgdHJpYW5nbGUgYXMgYSBiYWNrZ3JvdW5kIGltYWdlIHRvIGFuIGVsZW1lbnQuIFRoZSBpbWFnZSBpcyBmb3JtYXR0ZWQgYXMgYW4gU1ZHLCBtYWtpbmcgaXQgZWFzeSB0byBjaGFuZ2UgdGhlIGNvbG9yLiBCZWNhdXNlIEludGVybmV0IEV4cGxvcmVyIGRvZXNuJ3Qgc3VwcG9ydCBlbmNvZGVkIFNWR3MgYXMgYmFja2dyb3VuZCBpbWFnZXMsIGEgUE5HIGZhbGxiYWNrIGlzIGFsc28gaW5jbHVkZWQuXG4vLy8gVGhlcmUgYXJlIHR3byBQTkcgZmFsbGJhY2tzOiBhIGJsYWNrIHRyaWFuZ2xlIGFuZCBhIHdoaXRlIHRyaWFuZ2xlLiBUaGUgb25lIHVzZWQgZGVwZW5kcyBvbiB0aGUgbGlnaHRuZXNzIG9mIHRoZSBpbnB1dCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIHRyaWFuZ2xlLlxuQG1peGluIGJhY2tncm91bmQtdHJpYW5nbGUoJGNvbG9yOiAkYmxhY2spIHtcbiAgJHJnYjogJ3JnYiUyOCN7cm91bmQocmVkKCRjb2xvcikpfSwgI3tyb3VuZChncmVlbigkY29sb3IpKX0sICN7cm91bmQoYmx1ZSgkY29sb3IpKX0lMjknO1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIHdpZHRoPSczMicgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDMyIDI0Jz48cG9seWdvbiBwb2ludHM9JzAsMCAzMiwwIDE2LDI0JyBzdHlsZT0nZmlsbDogI3skcmdifSc+PC9wb2x5Z29uPjwvc3ZnPlwiKTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjBcXDApIHtcbiAgICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPCA2MCUge1xuICAgICAgLy8gV2hpdGUgdHJpYW5nbGVcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFJcEpSRUZVZU5yRWtja05nREFNQkJmUmtFdDBPYlJCQmRzR1hVRGdtUWZLNFhoSDJtOGN6UUFBeTI3UjN0c3c0UWZlMng4dU9PNm9ZTGI2R2xPb3IzR0Yrc3dVUkFPbVVKK1J3dEVKczlXdlRHRVl4QlhxSTFNUUFaaENmVVFLUnpETVZqK1R3ckFJVjZqdlNVRWtZQXIxTFNrY3lUQmIvVitLWWZYN3hBZXVzcTNzTER0R0gza0VHQUNQV0lmbE5aZmhSUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBCbGFjayB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU1CSlJFRlVlTnJFbGxzT2hDQU1SVnN6QzlJbHpVN0tDbVZIVEpzb01XWU1VdHB5djlCZ2J1WFFCNVpTZGdCWVlZNHljZ0Jpdms4S1lGc1FNZk1pVFRCUDRvM25VekNLek9hYkxKYkx5Mi9nMzFldkdrQWdpblI0L1plZ0tINXFYM2JKQ3NjQTN0MHgza2dPNXRRRnloaEZmNTB4UnFGTGJ5TVVOSlF6Z3lqR1Mvd2dDcHZLcWtSQnB1V3JFNFY5ZCsxRTRkUFVYcUlnMTA3U1FPRS8yRFJReE13VER5Z0lJblZERVQ5VDNsQ29qLzZqL1ZDbUdqWk9sMmxLcFo4QUF3RFFQN3pJaW1ER0ZRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHRoZSBtaWNybyBjbGVhcmZpeCBoYWNrIHBvcHVsYXJpemVkIGJ5IE5pY29sYXMgR2FsbGFnaGVyLiBJbmNsdWRlIHRoaXMgbWl4aW4gb24gYSBjb250YWluZXIgaWYgaXRzIGNoaWxkcmVuIGFyZSBhbGwgZmxvYXRlZCwgdG8gZ2l2ZSB0aGUgY29udGFpbmVyIGEgcHJvcGVyIGhlaWdodC5cbi8vLyBUaGUgY2xlYXJmaXggaXMgYXVnbWVudGVkIHdpdGggc3BlY2lmaWMgc3R5bGVzIHRvIHByZXZlbnQgYm9yZGVycyBpbiBmbGV4Ym94IGVudmlyb25tZW50c1xuLy8vIEBsaW5rIGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLyBNaWNybyBDbGVhcmZpeCBIYWNrXG4vLy8gQGxpbmsgaHR0cDovL2RhbmlzYWRlc2lnbmVyLmNvbS9ibG9nL2ZsZXhib3gtY2xlYXItZml4LXBzZXVkby1lbGVtZW50cy8gRmxleGJveCBmaXhcbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNvbnRlbnQ6ICcgJztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG4vLy8gQWRkcyBDU1MgZm9yIGEgXCJxdWFudGl0eSBxdWVyeVwiIHNlbGVjdG9yIHRoYXQgYXV0b21hdGljYWxseSBzaXplcyBlbGVtZW50cyBiYXNlZCBvbiBob3cgbWFueSB0aGVyZSBhcmUgaW5zaWRlIGEgY29udGFpbmVyLlxuLy8vIEBsaW5rIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL3F1YW50aXR5LXF1ZXJpZXMtZm9yLWNzcyBRdWFudGl0eSBRdWVyaWVzIGZvciBDU1Ncbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IC0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gZGV0ZWN0LiBUaGUgaGlnaGVyIHRoaXMgbnVtYmVyIGlzLCB0aGUgbW9yZSBDU1MgdGhhdCdzIHJlcXVpcmVkIHRvIGNvdmVyIGVhY2ggbnVtYmVyIG9mIGl0ZW1zLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGVsZW0gW2xpXSAtIFRhZyB0byB1c2UgZm9yIHNpYmxpbmcgc2VsZWN0b3JzLlxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJG1heCB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQsXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XG4gICAgICB3aWR0aDogcGVyY2VudGFnZSgxIC8gJGkpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXG5AbWl4aW4gZGlzYWJsZS1tb3VzZS1vdXRsaW5lIHtcbiAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICYge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgdmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgYWNjZXNzaWJsZSB0byBrZXlib2FyZHMgYW5kIGFzc2lzdGl2ZSBkZXZpY2VzLlxuLy8vIEBsaW5rIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkgSGlkaW5nIENvbnRlbnQgZm9yIEFjY2Vzc2liaWxpdHlcbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZW5mb3JjZSAtIElmIGB0cnVlYCwgdXNlIGAhaW1wb3J0YW50YCBvbiBhcHBsaWVkIHByb3BlcnRpZXNcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZShcbiAgJGVuZm9yY2U6IHRydWVcbikge1xuICAkaW1wb3J0YW50OiBpZigkZW5mb3JjZSwgJyFpbXBvcnRhbnQnLCBudWxsKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGUgI3skaW1wb3J0YW50fTtcbiAgd2lkdGg6IDFweCAjeyRpbXBvcnRhbnR9O1xuICBoZWlnaHQ6IDFweCAjeyRpbXBvcnRhbnR9O1xuICBwYWRkaW5nOiAwICN7JGltcG9ydGFudH07XG4gIG92ZXJmbG93OiBoaWRkZW4gI3skaW1wb3J0YW50fTtcbiAgY2xpcDogcmVjdCgwLDAsMCwwKSAjeyRpbXBvcnRhbnR9O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwICN7JGltcG9ydGFudH07XG4gIGJvcmRlcjogMCAjeyRpbXBvcnRhbnR9O1xufVxuXG4vLy8gUmV2ZXJzZXMgdGhlIENTUyBvdXRwdXQgY3JlYXRlZCBieSB0aGUgYGVsZW1lbnQtaW52aXNpYmxlKClgIG1peGluLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGVuZm9yY2UgLSBJZiBgdHJ1ZWAsIHVzZSBgIWltcG9ydGFudGAgb24gYXBwbGllZCBwcm9wZXJ0aWVzXG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUtb2ZmKFxuICAkZW5mb3JjZTogdHJ1ZVxuKSB7XG4gICRpbXBvcnRhbnQ6IGlmKCRlbmZvcmNlLCAnIWltcG9ydGFudCcsIG51bGwpO1xuXG4gIHBvc2l0aW9uOiBzdGF0aWMgI3skaW1wb3J0YW50fTtcbiAgd2lkdGg6IGF1dG8gI3skaW1wb3J0YW50fTtcbiAgaGVpZ2h0OiBhdXRvICN7JGltcG9ydGFudH07XG4gIG92ZXJmbG93OiB2aXNpYmxlICN7JGltcG9ydGFudH07XG4gIGNsaXA6IGF1dG8gI3skaW1wb3J0YW50fTtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbCAjeyRpbXBvcnRhbnR9O1xufVxuXG4vLy8gVmVydGljYWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vLy8gQWJzb2x1dGVseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuXG4vLy8gSXRlcmF0ZXMgdGhyb3VnaCBicmVha3BvaW50cyBkZWZpbmVkIGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBhbmQgcHJpbnRzIHRoZSBDU1MgaW5zaWRlIHRoZSBtaXhpbiBhdCBlYWNoIGJyZWFrcG9pbnQncyBtZWRpYSBxdWVyeS4gVXNlIHRoaXMgd2l0aCB0aGUgZ3JpZCwgb3IgYW55IG90aGVyIGNvbXBvbmVudCB0aGF0IGhhcyByZXNwb25zaXZlIGNsYXNzZXMuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRzbWFsbCBbdHJ1ZV0gLSBJZiBgZmFsc2VgLCB0aGUgbWl4aW4gd2lsbCBza2lwIHRoZSBgc21hbGxgIGJyZWFrcG9pbnQuIFVzZSB0aGlzIHdpdGggY29tcG9uZW50cyB0aGF0IGRvbid0IHByZWZpeCBjbGFzc2VzIHdpdGggYHNtYWxsLWAsIG9ubHkgYG1lZGl1bS1gIGFuZCB1cC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRhdXRvLWluc2VydC1icmVha3BvaW50cyBbdHJ1ZV0gLSBJZiBgZmFsc2VgLCB0aGUgbWl4aW4gd2lsbCBpdGVyYXRlIG92ZXIgYnJlYWtwb2ludHMgd2l0aG91dCBkb2luZyB0aGUgbWVkaWEgcXVlcnkgaXRzZWxmLiBVc2VmdWwgZm9yIG1vcmUgY29tcGxleCBtZWRpYSBxdWVyeSBnZW5lcmF0aW9uIGFzIGluIHRoZSBtYXJnaW4gZ3JpZC5cbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50KFxuICAkc21hbGw6IHRydWUsXG4gICRhdXRvLWluc2VydC1icmVha3BvaW50czogdHJ1ZVxuKSB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oYXV0bywgLXpmLWJvb2woJHNtYWxsKSwgLXpmLWJvb2woJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzKSkge1xuICAgIEBjb250ZW50XG4gIH07XG59XG5cbi8vLyBJdGVyYXRlcyB3aXRoIGBAY29udGVudGAgdGhyb3VnaCB0aGUgZ2l2ZW4gbGlzdCBvZiBicmVha3BvaW50cyBgJGJyZWFrcG9pbnRzYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfExpc3R9ICRicmVha3BvaW50cyBbYXV0b10gLSBCcmVha3BvaW50cyB0byBpdGVyYXRlcyBvbi4gSXQgY2FuIGJlIGEgYnJlYWtwb2ludCBuYW1lLCBsaXN0IG9mIGJyZWFrcG9pbnRzIG9yIGBhdXRvYCBmb3IgYWxsIGJyZWFrcG9pbnRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbnxOdWxsfSAkemVyby1icmVha3BvaW50IFtudWxsXSAtIFdoZXRoZXIgdGhlIHplcm8tYnJlYWtwb2ludCAob2Z0ZW4gYHNtYWxsYCkgbXVzdCBiZSBpbmNsdWRlZC4gSWYgYHRydWVgLCBpdCB3aWxsIGFsd2F5cyBiZSBhZGRlZCB0byB0aGUgbGlzdCBpZiBub3QgYWxyZWFkeSB0aGVyZS4gSWYgYGZhbHNlYCwgaXQgd2lsbCBhbHdheXMgYmUgcmVtb3ZlZC4gRG9lcyBub3RoaW5nIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtCb29sZWFufEtleXdvcmR9ICRtZWRpYS1xdWVyaWVzIFt0cnVlXSAtIFdoZXRoZXIgbWVkaWEtcXVlcmllcyBtdXN0IGJlIGdlbmVyYXRlZC4gSWYgYGZvci1saXN0c2AsIG9ubHkgZ2VuZXJhdGUgbWVkaWEtcXVlcmllcyB3aGVuIGAkYnJlYWtwb2ludHNgIGlzIGEgbGlzdC5cbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50LWluKFxuICAkYnJlYWtwb2ludHM6IGF1dG8sXG4gICR6ZXJvLWJyZWFrcG9pbnQ6IG51bGwsXG4gICRtZWRpYS1xdWVyaWVzOiB0cnVlXG4pIHtcbiAgJC1saXN0OiAoKTtcbiAgJC1icmVha3BvaW50cy1pcy1hLWxpc3Q6IHRydWU7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGxpc3Qgb2YgYnJlYWtwb2ludChzKSB0byBpdGVyYXRlIG9uLlxuICBAaWYgJGJyZWFrcG9pbnRzID09IGF1dG8ge1xuICAgICQtbGlzdDogJGJyZWFrcG9pbnQtY2xhc3NlcztcbiAgfVxuICBAZWxzZSBpZiB0eXBlLW9mKCRicmVha3BvaW50cykgPT0gJ2xpc3QnIHtcbiAgICAkLWxpc3Q6ICRicmVha3BvaW50cztcbiAgfVxuICBAZWxzZSBpZiB0eXBlLW9mKCRicmVha3BvaW50cykgPT0gJ3N0cmluZycge1xuICAgICQtbGlzdDogKCRicmVha3BvaW50cyk7XG4gICAgJC1icmVha3BvaW50cy1pcy1hLWxpc3Q6IGZhbHNlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgXCIkYnJlYWtwb2ludHNcIiBpbiBcIi16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oKVwiLiBHb3QgXCIjeyRicmVha3BvaW50c31cIiAoI3t0eXBlLW9mKCRicmVha3BvaW50cyl9KS4gRXhwZWN0ZWQgYSBicmVha3BvaW50IG5hbWUsIGEgbGlzdCBvZiBicmVha3BvaW50cyBvciBcImF1dG9cIic7XG4gIH1cblxuICAvLyBBZGQgb3IgcmVtb3ZlIHRoZSB6ZXJvIGJyZWFrcG9pbnQgYWNjb3JkaW5nIHRvIGAkemVyby1icmVha3BvaW50YFxuICBAaWYgJHplcm8tYnJlYWtwb2ludCA9PSB0cnVlIHtcbiAgICAkLWxpc3Q6IGpvaW4oKCQtemYtemVyby1icmVha3BvaW50KSwgc2wtcmVtb3ZlKCQtbGlzdCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpKTtcbiAgfVxuICBAZWxzZSBpZiAkemVyby1icmVha3BvaW50ID09IGZhbHNlIHtcbiAgICAkLWxpc3Q6IHNsLXJlbW92ZSgkLWxpc3QsICQtemYtemVyby1icmVha3BvaW50KTtcbiAgfVxuXG4gIC8vIEl0ZXJhdGUgb24gYnJlYWtwb2ludChzKVxuICBAZWFjaCAkYnAgaW4gJC1saXN0IHtcbiAgICAkb2xkLXpmLXNpemU6IG51bGw7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6ICRicCAhZ2xvYmFsO1xuXG4gICAgQGlmICgkbWVkaWEtcXVlcmllcyA9PSB0cnVlXG4gICAgICBvciAoJG1lZGlhLXF1ZXJpZXMgPT0gJ2Zvci1saXN0cycgYW5kICQtYnJlYWtwb2ludHMtaXMtYS1saXN0KSkge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnApIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XG4gIH1cbn1cblxuLy8vIEdlbmVyYXRlIHRoZSBgQGNvbnRlbnRgIHBhc3NlZCB0byB0aGUgbWl4aW4gd2l0aCBhIHZhbHVlIGAkLXpmLWJwLXZhbHVlYCByZWxhdGVkIHRvIGEgYnJlYWtwb2ludCwgZGVwZW5kaW5nIG9uIHRoZSBgJG5hbWVgIHBhcmFtZXRlcjpcbi8vLyAtIEZvciBhIHNpbmdsZSB2YWx1ZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoaXMgdmFsdWUuXG4vLy8gLSBGb3IgYSBicmVha3BvaW50IG5hbWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYC5cbi8vLyAtIEZvciBcImF1dG9cIiwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgIGFuZCBpcyBwYXNzZWQgdG8gYEBjb250ZW50YCwgd2hpY2ggaXMgbWFkZSByZXNwb25zaXZlIGZvciBlYWNoIGJyZWFrcG9pbnQgb2YgYCRtYXBgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfEFycmF5fEtleXdvcmR9ICRuYW1lIFthdXRvXSAtIFNpbmdsZSB2YWx1ZSwgYnJlYWtwb2ludCBuYW1lLCBvciBsaXN0IG9mIGJyZWFrcG9pbnQgbmFtZXMgdG8gdXNlLiBcImF1dG9cIiBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIE1hcCBvZiBicmVha3BvaW50cyBhbmQgdmFsdWVzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuXG5AbWl4aW4gLXpmLWJyZWFrcG9pbnQtdmFsdWUoXG4gICRuYW1lOiBhdXRvLFxuICAkbWFwOiBudWxsXG4pIHtcbiAgQGlmICRuYW1lID09IGF1dG8gYW5kIHR5cGUtb2YoJG1hcCkgPT0gJ21hcCcge1xuICAgIC8vIFwiYXV0b1wiXG4gICAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkaykge1xuICAgICAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkdiwgJG1hcCkge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBicmVha3BvaW50IG5hbWVcbiAgICBAaWYgdHlwZS1vZigkbmFtZSkgPT0gJ3N0cmluZycge1xuICAgICAgJGJwLXZhbHVlOiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkbmFtZSk7XG4gICAgICBAaWYgJGJwLXZhbHVlICE9IG51bGwge1xuICAgICAgICAkbmFtZTogJGJwLXZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJyZWFrcG9pbnQgdmFsdWVcbiAgICAkLXpmLWJwLXZhbHVlOiAkbmFtZSAhZ2xvYmFsO1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEZvbnQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBvZiBwbGFjZWhvbGRlciB0ZXh0IHdpdGhpbiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBGb250XG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1saW5lLWhlaWdodDogJGdsb2JhbC1saW5laGVpZ2h0ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgZm9jdXNlZCBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQtZm9jdXM6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgZGlzYWJsZWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBmb2N1c2VkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYm9yZGVyLWZvY3VzOiAxcHggc29saWQgJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wYWRkaW5nOiAkZm9ybS1zcGFjaW5nIC8gMiAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgaW5zaWRlIHRleHQgaW5wdXRzIHdoZW4gbm90IGZvY3VzZWQuXG4vLy8gQHR5cGUgU2hhZG93XG4kaW5wdXQtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIDAuMSkgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IG91dHNpZGUgdGV4dCBpbnB1dHMgd2hlbiBmb2N1c2VkLlxuLy8vIEB0eXBlIFNoYWRvd1xuJGlucHV0LXNoYWRvdy1mb2N1czogMCAwIDVweCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBDdXJzb3IgdG8gdXNlIHdoZW4gaG92ZXJpbmcgb3ZlciBhIGRpc2FibGVkIHRleHQgaW5wdXQuXG4vLy8gQHR5cGUgQ3Vyc29yXG4kaW5wdXQtY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZCAhZGVmYXVsdDtcblxuLy8vIFByb3BlcnRpZXMgdG8gdHJhbnNpdGlvbiBvbiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVzIHRoZSB1cC9kb3duIGJ1dHRvbnMgdGhhdCBDaHJvbWUgYW5kIEZpcmVmb3ggYWRkIHRvIGA8aW5wdXQgdHlwZT0nbnVtYmVyJz5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRpbnB1dC1udW1iZXItc3Bpbm5lcnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBSYWRpdXMgZm9yIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBmb3JtIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWVsZW1lbnQge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuXG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGlucHV0LXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQ7XG4gIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3c7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgfVxuXG4gIC8vIEZvY3VzIHN0YXRlXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS10ZXh0IHtcbiAgLy8gVGV4dCBpbnB1dHNcbiAgI3t0ZXh0LWlucHV0cygpfSxcbiAgdGV4dGFyZWEge1xuICAgIEBpbmNsdWRlIGZvcm0tZWxlbWVudDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgLy8gVGV4dCBhcmVhc1xuICB0ZXh0YXJlYSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgJltyb3dzXSB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgaW5wdXQsXG4gIHRleHRhcmVhIHtcbiAgICAvLyBEaXNhYmxlZC9yZWFkb25seSBzdGF0ZVxuICAgICY6ZGlzYWJsZWQsXG4gICAgJltyZWFkb25seV0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9uIGJ1dHRvbi1saWtlIGlucHV0c1xuICBbdHlwZT0nc3VibWl0J10sXG4gIFt0eXBlPSdidXR0b24nXSB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAkZm9ybS1idXR0b24tcmFkaXVzO1xuICB9XG5cbiAgLy8gUmVzZXQgTm9ybWFsaXplIHNldHRpbmcgY29udGVudC1ib3ggdG8gc2VhcmNoIGVsZW1lbnRzXG4gIGlucHV0W3R5cGU9J3NlYXJjaCddIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIC8vIE51bWJlciBpbnB1dCBzdHlsZXNcbiAgW3R5cGU9J251bWJlciddIHtcbiAgICBAaWYgbm90ICRpbnB1dC1udW1iZXItc3Bpbm5lcnMge1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG5cbiAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gICAgICAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUGxhY2Vob2xkZXIgdGV4dFxuICA6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW0gLSBOdW1iZXIgdG8gc3RyaXAgdW5pdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHNhbWUgbnVtYmVyLCBzYW5zIHVuaXQuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xufVxuXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR2YWx1ZXMgLSBPbmUgb3IgbW9yZSB2YWx1ZXMgdG8gY29udmVydC4gQmUgc3VyZSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzIGFuZCBub3QgY29tbWFzLiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHdyYXAgdGhlIGxpc3QgaW4gcGFyZW50aGVzZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gVXNpbmcgcmVtIGFzIGJhc2UgYWxsb3dzIGNvcnJlY3Qgc2NhbGluZ1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgJGNvdW50ID09IDEge1xuICAgIEByZXR1cm4gLXpmLXRvLXJlbSgkdmFsdWVzLCAkYmFzZSk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb3VudCB7XG4gICAgJHJlbS12YWx1ZXM6IGFwcGVuZCgkcmVtLXZhbHVlcywgLXpmLXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVtLXZhbHVlcztcbn1cblxuLy8gQ29udmVydHMgYSB1bml0bGVzcywgcGl4ZWwsIG9yIHJlbSB2YWx1ZSB0byBlbSwgZm9yIHVzZSBpbiBicmVha3BvaW50cy5cbkBmdW5jdGlvbiAtemYtYnAtdG8tZW0oJHZhbHVlKSB7XG4gIC8vIFBpeGVsIGFuZCB1bml0bGVzcyB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byByZW1zXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyBvciB1bml0bGVzcygkdmFsdWUpIHtcbiAgICAkdmFsdWU6IHJlbS1jYWxjKCR2YWx1ZSwgJGJhc2U6IDE2cHgpO1xuICB9XG5cbiAgLy8gVGhlbiB0aGUgdmFsdWUgaXMgY29udmVydGVkIHRvIGVtc1xuICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFlbTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwgdmFsdWUgdG8gbWF0Y2hpbmcgcmVtIHZhbHVlLiAqQW55KiB2YWx1ZSBwYXNzZWQsIHJlZ2FyZGxlc3Mgb2YgdW5pdCwgaXMgYXNzdW1lZCB0byBiZSBhIHBpeGVsIHZhbHVlLiBCeSBkZWZhdWx0LCB0aGUgYmFzZSBwaXhlbCB2YWx1ZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcmVtIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gUGl4ZWwgdmFsdWUgdG8gY29udmVydC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gQmFzZSBmb3IgcGl4ZWwgY29udmVyc2lvbi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgbnVtYmVyIGluIHJlbXMsIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGdpdmVuIHZhbHVlIGFuZCB0aGUgYmFzZSBwaXhlbCB2YWx1ZS4gcmVtIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggYXMgaXMuXG5AZnVuY3Rpb24gLXpmLXRvLXJlbSgkdmFsdWUsICRiYXNlOiBudWxsKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpICE9ICdudW1iZXInIHtcbiAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cblxuICAvLyBUcmFuc2Zvcm0gZW0gaW50byByZW0gaWYgc29tZW9uZSBoYW5kcyBvdmVyICdlbSdzXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHJlbSBpZiB1bml0cyBmb3IgJHZhbHVlIGlzIG5vdCByZW0gb3IgZW1cbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKSAqIDFyZW07XG4gIH1cblxuICAvLyBUdXJuIDByZW0gaW50byAwXG4gIEBpZiAkdmFsdWUgPT0gMHJlbSB7XG4gICAgJHZhbHVlOiAwO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsLCBwZXJjZW50YWdlLCByZW0gb3IgZW0gdmFsdWUgdG8gYSB1bml0bGVzcyB2YWx1ZSBiYXNlZCBvbiBhIGdpdmVuIGZvbnQgc2l6ZS4gSWRlYWwgZm9yIHdvcmtpbmcgb3V0IHVuaXRsZXNzIGxpbmUgaGVpZ2h0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBjb252ZXJ0IHRvIGEgdW5pdGxlc3MgbGluZSBoZWlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgZm9udCBzaXplIHRvIHVzZSB0byB3b3JrIG91dCB0aGUgbGluZSBoZWlnaHQgLSBkZWZhdWx0cyB0byAkZ2xvYmFsLWZvbnQtc2l6ZVxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFVuaXRsZXNzIG51bWJlclxuQGZ1bmN0aW9uIHVuaXRsZXNzLWNhbGMoJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIEZpcnN0LCBsZXRzIGNvbnZlcnQgb3VyICRiYXNlIHRvIHBpeGVsc1xuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBOb3cgbGV0J3MgY29udmVydCBvdXIgdmFsdWUgdG8gcGl4ZWxzIHRvb1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICclJyB7XG4gICAgJHZhbHVlOiAoJHZhbHVlIC8gMTAwJSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICAvLyAncHgnXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyB7XG4gICAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIC8vIGFzc3VtZSB0aGF0IGxpbmUtaGVpZ2h0cyBncmVhdGVyIHRoYW4gMTAgYXJlIG1lYW50IHRvIGJlIGFic29sdXRlIGluICdweCdcbiAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICgkdmFsdWUgPiAxMCkge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94IHtcbiAgW3R5cGU9J2ZpbGUnXSxcbiAgW3R5cGU9J2NoZWNrYm94J10sXG4gIFt0eXBlPSdyYWRpbyddIHtcbiAgICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dC9sYWJlbCBzaWJsaW5nc1xuICBbdHlwZT0nY2hlY2tib3gnXSArIGxhYmVsLFxuICBbdHlwZT0ncmFkaW8nXSArIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgJltmb3JdIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cblxuICAvLyBTdHlsZXMgZm9yIGlucHV0cyBpbnNpZGUgbGFiZWxzXG4gIGxhYmVsID4gW3R5cGU9J2NoZWNrYm94J10sXG4gIGxhYmVsID4gW3R5cGU9J3JhZGlvJ10ge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIGZpbGUgaW5wdXQgd2lkdGhcbiAgW3R5cGU9J2ZpbGUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3IgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgZm9ybSBsYWJlbHMuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIG1vcmUgc3BhY2UgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGl0cyBpbnB1dCBmaWVsZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjggIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcblxuICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvcjtcbn1cblxuQG1peGluIGZvcm0tbGFiZWwtbWlkZGxlIHtcbiAgJGlucHV0LWJvcmRlci13aWR0aDogZ2V0LWJvcmRlci12YWx1ZSgkaW5wdXQtYm9yZGVyLCB3aWR0aCk7XG5cbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogKCRmb3JtLXNwYWNpbmcgLyAyICsgcmVtLWNhbGMoJGlucHV0LWJvcmRlci13aWR0aCkpIDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tbGFiZWwge1xuICBsYWJlbCB7XG4gICAgQGluY2x1ZGUgZm9ybS1sYWJlbDtcblxuICAgICYubWlkZGxlIHtcbiAgICAgIEBpbmNsdWRlIGZvcm0tbGFiZWwtbWlkZGxlO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzdHlsZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0taGVscHRleHQge1xuICAuaGVscC10ZXh0IHtcbiAgICAkbWFyZ2luLXRvcDogKCRmb3JtLXNwYWNpbmcgKiAwLjUpICogLTE7XG5cbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICBmb250LXNpemU6ICRoZWxwdGV4dC1mb250LXNpemU7XG4gICAgZm9udC1zdHlsZTogJGhlbHB0ZXh0LWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRoZWxwdGV4dC1jb2xvcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBDb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIExlZnQvcmlnaHQgcGFkZGluZyBvZiBhbiBwcmUvcG9zdGZpeGVkIGlucHV0IGxhYmVsXG4kaW5wdXQtcHJlZml4LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogJGlucHV0LWxpbmUtaGVpZ2h0KSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICAuaW5wdXQtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgdGFibGUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICYsICYuaW5wdXQtZ3JvdXAtYnV0dG9uID4gKiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICYsICYuaW5wdXQtZ3JvdXAtYnV0dG9uID4gKiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAlaW5wdXQtZ3JvdXAtY2hpbGQge1xuICAgIG1hcmdpbjogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWxhYmVsIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBwYWRkaW5nOiAwICRpbnB1dC1wcmVmaXgtcGFkZGluZztcbiAgICBib3JkZXI6ICRpbnB1dC1wcmVmaXgtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDtcblxuICAgIGNvbG9yOiAkaW5wdXQtcHJlZml4LWNvbG9yO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMSU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtcHJlZml4LWJvcmRlcikge1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtYnV0dG9uIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDElO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIGEsXG4gICAgaW5wdXQsXG4gICAgYnV0dG9uLFxuICAgIGxhYmVsIHtcbiAgICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuXG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICB9XG4gICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpZmljaXR5IGJ1bXAgbmVlZGVkIHRvIHByZXZlbnQgb3ZlcnJpZGUgYnkgYnV0dG9uc1xuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgLmlucHV0LWdyb3VwIHtcbiAgICAgIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtcGFkZGluZzogcmVtLWNhbGMoMjApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBiZXR3ZWVuIHRoZSBsZWdlbmQgdGV4dCBhbmQgZmllbGRzZXQgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlZ2VuZC1wYWRkaW5nOiByZW0tY2FsYygwIDMpICFkZWZhdWx0O1xuXG5AbWl4aW4gZmllbGRzZXQge1xuICBtYXJnaW46ICRmaWVsZHNldC1tYXJnaW47XG4gIHBhZGRpbmc6ICRmaWVsZHNldC1wYWRkaW5nO1xuICBib3JkZXI6ICRmaWVsZHNldC1ib3JkZXI7XG5cbiAgbGVnZW5kIHtcbiAgICAvLyBDb3ZlcnMgdXAgdGhlIGZpZWxkc2V0J3MgYm9yZGVyIHRvIGNyZWF0ZSBhcnRpZmljaWFsIHBhZGRpbmdcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogcmVtLWNhbGMoLTMpO1xuICAgIHBhZGRpbmc6ICRsZWdlbmQtcGFkZGluZztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0IHtcbiAgZmllbGRzZXQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gIGxlZ2VuZCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gIH1cblxuICAuZmllbGRzZXQge1xuICAgIEBpbmNsdWRlIGZpZWxkc2V0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgZHJvcGRvd24gdHJpYW5nbGUgaW5zaWRlIHNlbGVjdCBtZW51cy4gU2V0IHRvIGB0cmFuc3BhcmVudGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5LlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1zZWxlY3Qge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcblxuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRzZWxlY3QtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuXG4gIEBpZiAkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yICE9IHRyYW5zcGFyZW50IHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRzZWxlY3QtdHJpYW5nbGUtY29sb3IpO1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkZ2xvYmFsLXJpZ2h0ICgtJGZvcm0tc3BhY2luZykgY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiA5cHggNnB4O1xuXG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAoJGZvcm0tc3BhY2luZyAqIDEuNSk7XG4gIH1cblxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gIH1cblxuICAvLyBGb2N1cyBzdGF0ZVxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci1mb2N1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgY3Vyc29yOiAkaW5wdXQtY3Vyc29yLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gSGlkZSB0aGUgZHJvcGRvd24gYXJyb3cgc2hvd24gaW4gbmV3ZXIgSUUgdmVyc2lvbnNcbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICZbbXVsdGlwbGVdIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxuICAmOm5vdChbbXVsdGlwbGVdKSB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Qge1xuICBzZWxlY3Qge1xuICAgIEBpbmNsdWRlIGZvcm0tc2VsZWN0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWJpZGVcbi8vLy9cblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBpbnB1dHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWlucHV0czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBsYWJlbHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWxhYmVsczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgdG8gdXNlIGZvciBpbnZhbGlkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdG8gdXNlIGZvciBsYWJlbHMgb2YgaW52YWxpZCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1lcnJvci1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlciBvZiBhbiBpbnB1dCBmaWVsZCB0byBoYXZlIGFuIGVycm9yIHN0YXRlLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRhbGVydC1jb2xvcl0gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYWNrZ3JvdW5kLWxpZ2h0ZW4gWzEwJV0gLSBMaWdodG5lc3MgbGV2ZWwgb2YgdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gZm9ybS1pbnB1dC1lcnJvcihcbiAgJGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQsXG4gICRiYWNrZ3JvdW5kLWxpZ2h0ZW46IDEwJVxuKSB7XG4gICY6bm90KDpmb2N1cykge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCRiYWNrZ3JvdW5kLCAkd2hpdGUsICRiYWNrZ3JvdW5kLWxpZ2h0ZW4pO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBlcnJvciBzdHlsZXMgdG8gYSBmb3JtIGVsZW1lbnQsIHVzaW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHNldHRpbmdzIGZpbGUuXG5AbWl4aW4gZm9ybS1lcnJvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbi10b3A6ICRmb3JtLXNwYWNpbmcgKiAtMC41O1xuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xuXG4gIGZvbnQtc2l6ZTogJGlucHV0LWVycm9yLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1lcnJvci1mb250LXdlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1lcnJvci1jb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1lcnJvciB7XG4gIEBpZiAkYWJpZGUtaW5wdXRzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgaW52YWxpZCBpbnB1dHNcbiAgICAuaXMtaW52YWxpZC1pbnB1dCB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWlucHV0LWVycm9yO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkYWJpZGUtbGFiZWxzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgbGFiZWxzIG9mIGludmFsaWQgb3V0cHV0c1xuICAgIC5pcy1pbnZhbGlkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gZXJyb3IgZWxlbWVudFxuICAuZm9ybS1lcnJvciB7XG4gICAgQGluY2x1ZGUgZm9ybS1lcnJvcjtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5LWJhc2Vcbi8vLy9cblxuLy8gQmFzZSBUeXBvZ3JhcGh5XG4vLyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLVxuLy8gVGhlc2UgYXJlIHN0eWxlcyBhcHBsaWVkIHRvIGJhc2ljIEhUTUwgdGFncywgaW5jbHVkaW5nOlxuLy8gICAtIFBhcmFncmFwaHMgPHA+XG4vLyAgIC0gQm9sZC9pdGFsaWNzIDxiPiA8c3Ryb25nPiA8aT4gPGVtPlxuLy8gICAtIFNtYWxsIHRleHQgPHNtYWxsPlxuLy8gICAtIEhlYWRpbmdzIDxoMT4tPGg2PlxuLy8gICAtIEFuY2hvcnMgPGE+XG4vLyAgIC0gRGl2aWRlcnMgPGhyPlxuLy8gICAtIExpc3RzIDx1bD4gPG9sPiA8ZGw+XG4vLyAgIC0gQmxvY2txdW90ZXMgPGJsb2NrcXVvdGU+XG4vLyAgIC0gQ29kZSBibG9ja3MgPGNvZGU+XG4vLyAgIC0gQWJicmV2aWF0aW9ucyA8YWJicj5cbi8vICAgLSBDaXRhdGlvbnMgPGNpdGU+XG4vLyAgIC0gS2V5c3Ryb2tlcyA8a2JkPlxuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGhlYWRlciBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0eWxlIChlLmcuIGl0YWxpY2l6ZWQpIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgdXNlZCBmb3IgZWxlbWVudHMgdGhhdCB1c2UgbW9ub3NwYWNlZCB0eXBlLCBzdWNoIGFzIGNvZGUgc2FtcGxlc1xuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRmb250LWZhbWlseS1tb25vc3BhY2U6IENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgQ291cmllciwgbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJGhlYWRlci1jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gU3R5bGVzIGZvciBoZWFkaW5ncyBhdCB2YXJpb3VzIHNjcmVlbiBzaXplcy4gRWFjaCBrZXkgaXMgYSBicmVha3BvaW50LCBhbmQgZWFjaCB2YWx1ZSBpcyBhIG1hcCBvZiBoZWFkaW5nIHN0eWxlcy5cbi8vLyBAdHlwZSBNYXBcbiRoZWFkZXItc3R5bGVzOiAoXG4gIHNtYWxsOiAoXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiAyNCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiAyMCksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAxOSksXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAxOCksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAxNyksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICksXG4gIG1lZGl1bTogKFxuICAgICdoMSc6ICgnZm9udC1zaXplJzogNDgpLFxuICAgICdoMic6ICgnZm9udC1zaXplJzogNDApLFxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMzEpLFxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMjUpLFxuICAgICdoNSc6ICgnZm9udC1zaXplJzogMjApLFxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxuICApLFxuKSAhZGVmYXVsdDtcblxuLy8gJGhlYWRlci1zdHlsZXMgbWFwIGlzIGJ1aWx0IGZyb20gJGhlYWRlci1zaXplcyBpbiBvcmRlciB0byBlbnN1cmUgZG93bndhcmQgY29tcGF0aWJpbGl0eVxuLy8gd2hlbiAkaGVhZGVyLXNpemVzIGlzIGRlcHJlY2lhdGVkLCAkaGVhZGVyLXN0eWxlcyBuZWVkcyB0byBnZXQgIWRlZmF1bHQgdmFsdWVzIGxpa2Ugc2V0dGluZ3Muc2Nzc1xuQGZ1bmN0aW9uIGJ1aWxkX2Zyb21faGVhZGVyLXNpemVzKCRoZWFkZXItc2l6ZXMpIHtcbiAgQHdhcm4gJ05vdGUsIHRoYXQgJGhlYWRlci1zaXplcyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICRoZWFkZXItc3R5bGVzLiAkaGVhZGVyLXNpemVzIHN0aWxsIHdvcmtzLCBidXQgaXQgaXMgZ29pbmcgdG8gYmUgZGVwcmVjaWF0ZWQuJztcbiAgJGhlYWRlci1zdHlsZXM6ICgpO1xuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zaXplcyB7XG4gICAgJGhlYWRlci1tYXA6ICgpO1xuICAgIEBlYWNoICRoZWFkZXIsICRmb250LXNpemUgaW4gJGhlYWRlcnMge1xuICAgICAgJGhlYWRlci1tYXA6IG1hcC1tZXJnZSgkaGVhZGVyLW1hcCwgKCRoZWFkZXI6ICgnZm9udC1zaXplJzogJGZvbnQtc2l6ZSkpKTtcbiAgICB9XG4gICAgJGhlYWRlci1zdHlsZXM6IG1hcC1tZXJnZSgkaGVhZGVyLXN0eWxlcywgKCRzaXplOiAkaGVhZGVyLW1hcCkpO1xuICB9XG4gIEByZXR1cm4gJGhlYWRlci1zdHlsZXM7XG59XG5cbi8vIElmIGl0IGV4aXN0cyAkaGVhZGVycy1zaXplcyBpcyB1c2VkIHRvIGJ1aWxkICRoZWFkZXItc3R5bGVzLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGhlYWRlci1zaXplcykge1xuICAkaGVhZGVyLXN0eWxlczogYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcyk7XG59XG5cbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2Qgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBgPHNtYWxsPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc21hbGwtZm9udC1zaXplOiA4MCUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBgPHNtYWxsPmAgZWxlbWVudHMgd2hlbiBwbGFjZWQgaW5zaWRlIGhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWFkZXItc21hbGwtZm9udC1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnNpZGUgYDxwPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBmb3IgcGFyYWdyYXBoIHRleHQuXG4vLy8gQHR5cGUgU3RyaW5nXG4kcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XG5cbi8vLyBVc2UgdGhlIGAuY29kZS1pbmxpbmVgIGNvbXBvbmVudCBhcyBkZWZhdWx0IGZvciBgPGNvZGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZW5hYmxlLWNvZGUtaW5saW5lOiB0cnVlO1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRhbmNob3ItY29sb3IsICRsaWdodG5lc3M6IC0xNCUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGRlY29yYXRpb24gZm9yIGxpbmtzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3Zlcjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gd2lkdGggb2YgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBMaXN0XG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kaHItbWFyZ2luOiByZW0tY2FsYygyMCkgYXV0byAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b20gIWRlZmF1bHQ7XG5cbi8vLyBCdWxsZXQgdHlwZSB0byB1c2UgZm9yIHVub3JkZXJlZCBsaXN0cyAoZS5nLiwgYHNxdWFyZWAsIGBjaXJjbGVgLCBgZGlzY2ApLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhZGVmYXVsdDtcblxuLy8vIFBvc2l0aW9uaW5nIGZvciBidWxsZXRzIG9uIHVub3JkZXJlZCBsaXN0IGl0ZW1zLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGUgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBsaXN0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgYSBsaXN0IGluc2lkZSBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBgPGRsPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBgPGR0PmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYDxkdD5gIGFuZCBgPGRkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tOiAwLjNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmxvY2txdW90ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgYDxibG9ja3F1b3RlPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpICFkZWZhdWx0O1xuXG4vLy8gU2lkZSBib3JkZXIgZm9yIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIFVzZSB0aGUgYC5jaXRlLWJsb2NrYCBjb21wb25lbnQgYXMgZGVmYXVsdCBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGVuYWJsZS1jaXRlLWJsb2NrOiB0cnVlO1xuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRrZXlzdHJva2UtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBib3JkZXIgc3R5bGUgZm9yIGA8YWJicj5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2sgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHktYmFzZSB7XG4gIC8vIFR5cG9ncmFwaHkgcmVzZXRzXG4gIGRpdixcbiAgZGwsXG4gIGR0LFxuICBkZCxcbiAgdWwsXG4gIG9sLFxuICBsaSxcbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNixcbiAgcHJlLFxuICBmb3JtLFxuICBwLFxuICBibG9ja3F1b3RlLFxuICB0aCxcbiAgdGQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLy8gUGFyYWdyYXBoc1xuICBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG5cbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodDtcbiAgICB0ZXh0LXJlbmRlcmluZzogJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZztcbiAgfVxuXG4gIC8vIEVtcGhhc2l6ZWQgdGV4dFxuICBlbSxcbiAgaSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gU3Ryb25nIHRleHRcbiAgc3Ryb25nLFxuICBiIHtcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFNtYWxsIHRleHRcbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIEhlYWRpbmdzXG4gIGgxLCAuaDEsXG4gIGgyLCAuaDIsXG4gIGgzLCAuaDMsXG4gIGg0LCAuaDQsXG4gIGg1LCAuaDUsXG4gIGg2LCAuaDYge1xuICAgIGZvbnQtZmFtaWx5OiAkaGVhZGVyLWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtc3R5bGU6ICRoZWFkZXItZm9udC1zdHlsZTtcbiAgICBmb250LXdlaWdodDogJGhlYWRlci1mb250LXdlaWdodDtcbiAgICBjb2xvcjogJGhlYWRlci1jb2xvcjtcbiAgICB0ZXh0LXJlbmRlcmluZzogJGhlYWRlci10ZXh0LXJlbmRlcmluZztcblxuICAgIHNtYWxsIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgY29sb3I6ICRoZWFkZXItc21hbGwtZm9udC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBIZWFkaW5nIHN0eWxlc1xuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zdHlsZXMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgIEBlYWNoICRoZWFkZXIsICRoZWFkZXItZGVmcyBpbiAkaGVhZGVycyB7XG4gICAgICAgICRmb250LXNpemUtdGVtcDogMXJlbTtcbiAgICAgICAgI3skaGVhZGVyfSwgLiN7JGhlYWRlcn0ge1xuXG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgZm9udC1zaXplKSB7XG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmb250LXNpemUpKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmcykge1xuICAgICAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgZnMpKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxpbmUtaGVpZ2h0KSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpLCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBsaCkge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGxoKSwgJGZvbnQtc2l6ZS10ZW1wKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKCRoZWFkZXItbGluZWhlaWdodCwgJGZvbnQtc2l6ZS10ZW1wKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWFyZ2luLXRvcCkpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtdCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG10KSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWFyZ2luLWJvdHRvbSkpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYikge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG1iKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkaGVhZGVyLW1hcmdpbi1ib3R0b20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpbmtzXG4gIGEge1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiAkYW5jaG9yLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb247XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRhbmNob3ItY29sb3ItaG92ZXI7XG4gICAgICBAaWYgJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXIgIT0gJGFuY2hvci10ZXh0LWRlY29yYXRpb24ge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGltZyB7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gSG9yaXpvbnRhbCBydWxlXG4gIGhyIHtcbiAgICBjbGVhcjogYm90aDtcblxuICAgIG1heC13aWR0aDogJGhyLXdpZHRoO1xuICAgIGhlaWdodDogMDtcbiAgICBtYXJnaW46ICRoci1tYXJnaW47XG5cbiAgICBib3JkZXItdG9wOiAwO1xuICAgIGJvcmRlci1yaWdodDogMDtcbiAgICBib3JkZXItYm90dG9tOiAkaHItYm9yZGVyO1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICB9XG5cbiAgLy8gTGlzdHNcbiAgdWwsXG4gIG9sLFxuICBkbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGxpc3QtbWFyZ2luLWJvdHRvbTtcbiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiAkbGlzdC1zdHlsZS1wb3NpdGlvbjtcbiAgICBsaW5lLWhlaWdodDogJGxpc3QtbGluZWhlaWdodDtcbiAgfVxuXG4gIC8vIExpc3QgaXRlbXNcbiAgbGkge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFVub3JkZXJlZCBsaXN0c1xuICB1bCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XG4gICAgbGlzdC1zdHlsZS10eXBlOiAkbGlzdC1zdHlsZS10eXBlO1xuICB9XG5cbiAgLy8gT3JkZXJlZCBsaXN0c1xuICBvbCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XG4gIH1cblxuICAvLyBOZXN0ZWQgdW5vcmRlcmVkL29yZGVyZWQgbGlzdHNcbiAgdWwsIG9sIHtcbiAgICAmICYge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbml0aW9uIGxpc3RzXG4gIGRsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTtcblxuICAgIGR0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b207XG4gICAgICBmb250LXdlaWdodDogJGRlZm5saXN0LXRlcm0td2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEJsb2NrcXVvdGVzXG4gIGJsb2NrcXVvdGUge1xuICAgIG1hcmdpbjogMCAwICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbiAgICBwYWRkaW5nOiAkYmxvY2txdW90ZS1wYWRkaW5nO1xuICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06ICRibG9ja3F1b3RlLWJvcmRlcjtcblxuICAgICYsIHAge1xuICAgICAgbGluZS1oZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodDtcbiAgICAgIGNvbG9yOiAkYmxvY2txdW90ZS1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBJbmxpbmUgQ2l0YXRpb25zXG4gIEBpZiAoJGVuYWJsZS1jaXRlLWJsb2NrID09IHRydWUpIHtcbiAgICBjaXRlIHtcbiAgICAgIC8vIEV4dGVuZGluZyBhIGNsYXNzIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICAgIC8vIFRPRE86IEJyZWFrIHRoZSB0eXBvZ3JhcGh5LWJhc2UvdHlwb2dyYXBoeS1oZWxwZXJzIHNlcGFyYXRpb25cbiAgICAgIEBleHRlbmQgLmNpdGUtYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgLy8gQWJicmV2aWF0aW9uc1xuICBhYmJyLCBhYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGFiYnItdW5kZXJsaW5lO1xuICAgIGN1cnNvcjogaGVscDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAvLyBGaWd1cmVzXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gQ29kZVxuICBAaWYgKCRlbmFibGUtY29kZS1pbmxpbmUgPT0gdHJ1ZSkge1xuICAgIGNvZGUge1xuICAgICAgQGV4dGVuZCAuY29kZS1pbmxpbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gS2V5c3Ryb2tlc1xuICBrYmQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAka2V5c3Ryb2tlLXBhZGRpbmc7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAka2V5c3Ryb2tlLWJhY2tncm91bmQ7XG5cbiAgICBmb250LWZhbWlseTogJGtleXN0cm9rZS1mb250O1xuICAgIGNvbG9yOiAka2V5c3Ryb2tlLWNvbG9yO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgka2V5c3Ryb2tlLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJGtleXN0cm9rZS1yYWRpdXM7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1oZWxwZXJzXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGVhZC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzdWJoZWFkZXItY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJHN1YmhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0b3AgbWFyZ2luIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tdG9wOiAwLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBzdGF0aXN0aWMgbnVtYmVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdGF0LWZvbnQtc2l6ZTogMi41cmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYC5jaXRlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjaXRlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBgLmNpdGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gUHNldWRvIGNvbnRlbnQgZm9yIGAuY2l0ZS1ibG9ja2AgY29tcG9uZW50LlxuLy8vIEB0eXBlIFN0cmluZ1xuJGNpdGUtcHNldWRvLWNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJyAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNvZGUtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IG9mIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGNvZGUtZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBMaXN0XG4kY29kZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIHRoZSBgLmNvZGUtaW5saW5lYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBhcm91bmQgdGV4dCBvZiB0aGUgYC5jb2RlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGNvZGUtYmxvY2stcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiB1bmRlciB0aGUgYC5jb2RlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY29kZS1ibG9jay1tYXJnaW4tYm90dG9tOiAxLjVyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBjaXRlLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNvbG9yOiAkY2l0ZS1jb2xvcjtcbiAgZm9udC1zaXplOiAkY2l0ZS1mb250LXNpemU7XG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRjaXRlLXBzZXVkby1jb250ZW50O1xuICB9XG59XG5cbi8vLyBBZGQgYmFzaWMgc3R5bGVzIGZvciBhIGNvZGUgaGVscGVyLlxuLy8vIFNlZSBgY29kZS1pbmxpbmVgIGFuZCBgY29kZS1ibG9ja2AgbWl4aW5zLlxuQG1peGluIGNvZGUtc3R5bGUge1xuICBib3JkZXI6ICRjb2RlLWJvcmRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmFja2dyb3VuZDtcblxuICBmb250LWZhbWlseTogJGNvZGUtZm9udC1mYW1pbHk7XG4gIGZvbnQtd2VpZ2h0OiAkY29kZS1mb250LXdlaWdodDtcbiAgY29sb3I6ICRjb2RlLWNvbG9yO1xufVxuXG4vLy8gTWFrZSBjb2RlIGhlbHBlciBmcm9tIHRoZSBgY29kZS1zdHlsZWAgbWl4aW4gaW5saW5lLlxuLy8vIFVzZWQgdG8gZ2VuZXJhdGUgYC5jb2RlLWlubGluZWBcbkBtaXhpbiBjb2RlLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cbiAgcGFkZGluZzogJGNvZGUtcGFkZGluZztcbn1cblxuLy8vIE1ha2UgY29kZSBoZWxwZXIgZnJvbSB0aGUgYGNvZGUtc3R5bGVgIG1peGluIGEgYmxvY2suXG4vLy8gVXNlZCB0byBnZW5lcmF0ZSBgLmNvZGUtYmxvY2tgXG5AbWl4aW4gY29kZS1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2hpdGUtc3BhY2U6IHByZTtcblxuICBwYWRkaW5nOiAkY29kZS1ibG9jay1wYWRkaW5nO1xuICBtYXJnaW4tYm90dG9tOiAkY29kZS1ibG9jay1tYXJnaW4tYm90dG9tO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnMge1xuICAvLyBVc2UgdG8gY3JlYXRlIGEgc3ViaGVhZGluZyB1bmRlciBhIG1haW4gaGVhZGVyXG4gIC8vIE1ha2Ugc3VyZSB5b3UgcGFpciB0aGUgdHdvIGVsZW1lbnRzIGluIGEgPGhlYWRlcj4gZWxlbWVudCwgbGlrZSB0aGlzOlxuICAvLyA8aGVhZGVyPlxuICAvLyAgIDxoMT5IZWFkaW5nPC9oMT5cbiAgLy8gICA8aDI+U3ViaGVhZGluZzwvaDI+XG4gIC8vIDwvaGVhZGVyPlxuICAuc3ViaGVhZGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkc3ViaGVhZGVyLW1hcmdpbi10b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tO1xuXG4gICAgZm9udC13ZWlnaHQ6ICRzdWJoZWFkZXItZm9udC13ZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRzdWJoZWFkZXItbGluZWhlaWdodDtcbiAgICBjb2xvcjogJHN1YmhlYWRlci1jb2xvcjtcbiAgfVxuXG4gIC8vIFVzZSB0byBzdHlsZSBhbiBpbnRyb2R1Y3RvcnkgbGVhZCwgZGVjaywgYmx1cmIsIGV0Yy5cbiAgLmxlYWQge1xuICAgIGZvbnQtc2l6ZTogJGxlYWQtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGVhZC1saW5laGVpZ2h0O1xuICB9XG5cbiAgLy8gVXNlIHRvIHN0eWxlIGEgbGFyZ2UgbnVtYmVyIHRvIGRpc3BsYXkgYSBzdGF0aXN0aWNcbiAgLnN0YXQge1xuICAgIGZvbnQtc2l6ZTogJHN0YXQtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgcCArICYge1xuICAgICAgbWFyZ2luLXRvcDogLTFyZW07XG4gICAgfVxuICB9XG5cbiAgdWwsIG9sIHtcbiAgICAvLyBVc2UgdG8gcmVtb3ZlIG51bWJlcnMgZnJvbSBvcmRlcmVkIGxpc3QgJiBidWxsZXRzIGZyb20gdW5vcmRlcmVkIGxpc3RcbiAgICAmLm5vLWJ1bGxldCB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAuY2l0ZS1ibG9jayB7XG4gICAgQGluY2x1ZGUgY2l0ZS1ibG9jaztcbiAgfVxuXG4gIC5jb2RlLWlubGluZSB7XG4gICAgQGluY2x1ZGUgY29kZS1zdHlsZTtcbiAgICBAaW5jbHVkZSBjb2RlLWlubGluZTtcbiAgfVxuXG4gIC5jb2RlLWJsb2NrIHtcbiAgICBAaW5jbHVkZSBjb2RlLXN0eWxlO1xuICAgIEBpbmNsdWRlIGNvZGUtYmxvY2s7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQge1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkYWxpZ24gaW4gKGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnkpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgLnRleHQtI3skYWxpZ259IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIElmIGB0cnVlYCwgYWxsIGVsZW1lbnRzIHdpbGwgaGF2ZSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kcyB3aGVuIHByaW50ZWQsIHRvIHNhdmUgb24gaW5rLlxuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAZ3JvdXAgZ2xvYmFsXG4kcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGRpc3BsYXlzIG5leHQgdG8gYWxsIGxpbmtzIHRoZWlyIFwiaHJlZlwiIHdoZW4gcHJpbnRlZC5cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGdyb3VwIGdsb2JhbFxuJHByaW50LWhyZWZzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBzYXNzLWxpbnQ6ZGlzYWJsZS1hbGxcblxuQG1peGluIGZvdW5kYXRpb24tcHJpbnQtc3R5bGVzIHtcbiAgLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICAqIHtcbiAgICAgIC8vIEVuc3VyZSBhIFwiYmxhY2stb24td2hpdGVcIiBwcmludCBieSByZW1vdmluZyBiYWNrZ3JvdW5kcyxcbiAgICAgIC8vIHVzaW5nIGJsYWNrIHRleHQgZXZlcnl3aGVyZSBhbmQgZm9yY2luZyB0aGUgYnJvd3NlciB0byBlY29ub21pemUgaW5rLlxuICAgICAgQGlmICRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kcyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zXG4gICAgICAgIGNvbG9yLWFkanVzdDogZWNvbm9teTtcbiAgICAgIH1cbiAgICAgIC8vIE90aGVyd2lzZSwgcHJldmVudCBhbnkgZWNvbm9teSBieSB0aGUgYnJvd3Nlci5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgIH1cblxuICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgLmhpZGUtZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgICB0YWJsZS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgICB0aGVhZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cCAhaW1wb3J0YW50OyB9XG4gICAgdGJvZHkuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXAgIWltcG9ydGFudDsgfVxuICAgIHRyLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cbiAgICB0ZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuICAgIHRoLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG5cbiAgICAvLyBEaXNwbGF5IHRoZSBVUkwgb2YgYSBsaW5rIGFmdGVyIHRoZSB0ZXh0XG4gICAgYSxcbiAgICBhOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTt9XG4gICAgQGlmICRwcmludC1ocmVmcyB7XG4gICAgICBhW2hyZWZdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKGhyZWYpICcpJzsgfVxuICAgIH1cblxuICAgIC8vIERvbid0IGRpc3BsYXkgdGhlIFVSTCBmb3IgaW1hZ2VzIG9yIEphdmFTY3JpcHQvaW50ZXJuYWwgbGlua3NcbiAgICAuaXIgYTphZnRlcixcbiAgICBhW2hyZWZePSdqYXZhc2NyaXB0OiddOmFmdGVyLFxuICAgIGFbaHJlZl49JyMnXTphZnRlciB7IGNvbnRlbnQ6ICcnOyB9XG5cbiAgICAvLyBEaXNwbGF5IHdoYXQgYW4gYWJicmV2aWF0aW9uIHN0YW5kcyBmb3IgYWZ0ZXIgdGhlIHRleHRcbiAgICBhYmJyW3RpdGxlXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cih0aXRsZSkgJyknOyB9XG5cbiAgICAvLyBQcmV2ZW50IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgYSBibG9ja3F1b3RlIG9yIHByZWZvcm1hdHRlZCB0ZXh0IGJsb2NrXG4gICAgcHJlLFxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGRhcmstZ3JheTtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvLyBoNWJwLmNvbS90XG4gICAgdGhlYWQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cblxuICAgIHRyLFxuICAgIGltZyB7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuXG4gICAgaW1nIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuICAgIEBwYWdlIHsgbWFyZ2luOiAwLjVjbTsgfVxuXG4gICAgcCxcbiAgICBoMixcbiAgICBoMyB7XG4gICAgICBvcnBoYW5zOiAzO1xuICAgICAgd2lkb3dzOiAzO1xuICAgIH1cblxuICAgIC8vIEF2b2lkIHBhZ2UgYnJlYWtzIGFmdGVyIGEgaGVhZGluZ1xuICAgIGgyLFxuICAgIGgzIHsgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH1cblxuICAgIC8vIEhlbHBlciB0byByZS1hbGxvdyBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGNlcnRhaW4gZWxlbWVudHMgKGUuZy4gcHJlLCBibG9ja3F1b3RlLCB0cilcbiAgICAucHJpbnQtYnJlYWstaW5zaWRlIHtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8gTWFyZ2luIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LWJhc2UtZ3JpZC1jbGFzc2VzIHtcblxuICAvLyBHcmlkIENvbnRhaW5lclxuICAuZ3JpZC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyO1xuXG4gICAgJi5mbHVpZCB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlKTtcbiAgICB9XG5cbiAgICAmLmZ1bGwge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXIoMTAwJSwgMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQmFzZSBncmlkIHN0eWxlc1xuICAuZ3JpZC14IHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkO1xuICB9XG5cbiAgLmNlbGwge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwoZnVsbCwgJGd1dHRlci10eXBlOiBub25lKTtcblxuICAgICYuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoYXV0byk7XG4gICAgfVxuXG4gICAgJi5zaHJpbmsge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XG4gICAgfVxuXG4gIH1cbiAgLmdyaWQteCB7XG4gICAgPiAuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoYXV0bywgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICB9XG5cbiAgICA+IC5zaHJpbmsge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKHNocmluaywgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICB9XG4gIH1cblxuICAvLyBBdXRvIHdpZHRoXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyAmIFBScyBmb3IgdGhlIGJhY2tzdG9yeTpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMDI0NFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAxNjRcbiAgICAuZ3JpZC14IHtcbiAgICAgICRzdHI6IFwiPiAuI3skLXpmLXNpemV9LXNocmluaywgPiAuI3skLXpmLXNpemV9LWZ1bGxcIjtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICRzdHI6ICRzdHIgKyBcIiwgPiAuI3skLXpmLXNpemV9LSN7JGl9XCJcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gUmVzcG9uc2l2ZSBcImF1dG9cIiBtb2RpZmllclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbChhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIFwic2hyaW5rXCIgbW9kaWZpZXJcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcbiAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstaG9yaXpvbnRhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IHdpZHRoIHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi14YCBub3Qgb24gYC5ncmlkLXhgXG4gIC5ncmlkLW1hcmdpbi14Om5vdCguZ3JpZC14KSA+IC5jZWxsIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIC8vIFJlc2V0IGhlaWdodCB3aGVuIHVzaW5nIGAuZ3JpZC1tYXJnaW4teWAgbm90IG9uIGAuZ3JpZC15YFxuICAuZ3JpZC1tYXJnaW4teTpub3QoLmdyaWQteSkgPiAuY2VsbCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGNsYXNzLWJyZWFrcG9pbnQsICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsKSB7XG4gICRwcmVmaXg6IGlmKCRjbGFzcy1icmVha3BvaW50ID09ICQtemYtemVyby1icmVha3BvaW50LCAnJywgJyN7JGNsYXNzLWJyZWFrcG9pbnR9LScpO1xuICA+IC4jeyRwcmVmaXh9YXV0byB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKGF1dG8sICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gID4gLiN7JHByZWZpeH1zaHJpbmsge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICRjbGFzc25hbWU6IGlmKCR2ZXJ0aWNhbCwgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nKTtcblxuICAgID4gI3skY2xhc3NuYW1lfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWFyZ2luIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoXG4gICRndXR0ZXItcG9zaXRpb246IGxlZnQgcmlnaHQsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICR3cmFwcGluZy1zZWxlY3RvcjogJy5ncmlkLW1hcmdpbi14J1xuKXtcbiAgI3skd3JhcHBpbmctc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogJGd1dHRlci1wb3NpdGlvbik7XG5cbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgfVxuXG4gICAgLy8gYmFzZSBzdHlsZXMgbmVlZCB0byBhbGwgYmUgYmVmb3JlIHRoZSBhdXRvIGFuZCBzaHJpbmsgc3R5bGVzXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkgYW5kICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC5jZWxsIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuXG4gICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxuICAgICAgLy8gZm9yIGFsbCBwcmlvciBicmVha3BvaW50cy5cbiAgICAgIC8vIEFzIHRoZWlyIGd1dHRlciBpcyBkZWZpbmVkIHdpdGggdGhlaXIgd2lkdGgvaGVpZ2h0LCBldmVuIGJyZWFrcG9pbnQgd2l0aG91dCBhIG5ldyBtYXJnaW4gbXVzdCBiZVxuICAgICAgLy8gZ2VuZXJhdGVkIHRvIG5vdCBoYXZpbmcgdGhlaXIgd2lkdGgvaGVpZ2h0IG92ZXJyaWRlZCBieSByZS1hZGp1c3RlZCBzbWFsbGVyIGJyZWFrcG9pbnRzLlxuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICBAZWFjaCAkYnAgaW4gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkLXpmLXNpemUpIHtcbiAgICAgICAgICBAaW5jbHVkZSAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGJwLCAkLXpmLXNpemUsICR2ZXJ0aWNhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCQtemYtc2l6ZSwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQYWRkaW5nIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzIHtcbiAgLmdyaWQtcGFkZGluZy14IHtcblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgLmdyaWQtcGFkZGluZy14IHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIGdyaWRzIHdpdGhpbiBgZ3JpZC1jb250YWluZXIvZ3JpZC1jb250YWluZXIuZmx1aWRgXG4gICAgLy8gVGhpcyBhbGxvd3MgbWFyZ2luIGFuZCBwYWRkaW5nIGdyaWRzIHRvIGxpbmUgdXAgd2l0aCBlYWNob3RoZXJcbiAgICAuZ3JpZC1jb250YWluZXI6bm90KC5mdWxsKSA+ICYge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xuICAgIH1cblxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQmxvY2sgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmxvY2stZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xuICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRuOiAkaSwgJHNlbGVjdG9yOiAnLmNlbGwnLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRvdXRwdXQ6IChzaXplKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcbiAgICAgICAgLy8gZm9yIHByaW9yIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSByZXNwb25zaXZlIGd1dHRlci5cbiAgICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgQGlmKG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkYnApKSB7XG4gICAgICAgICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JGJwfS11cC0jeyRpfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENvbGxhcHNlIGNsYXNzZXNcbkBtaXhpbiB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XG4gIEBlYWNoICRicCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICAgIC4jeyRicH0tbWFyZ2luLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJG1pbi1icmVha3BvaW50OiAkYnApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAgIC4jeyRicH0tcGFkZGluZy1jb2xsYXBzZSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29sbGFwc2UoJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkbWluLWJyZWFrcG9pbnQ6ICRicCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIE9mZnNldCBjbGFzc2VzXG5AbWl4aW4geHktb2Zmc2V0LWNlbGwtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAuZ3JpZC1tYXJnaW4teCA+IC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1vZmZzZXQoJG8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBWZXJ0aWNhbCBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS12ZXJ0aWNhbC1ncmlkLWNsYXNzZXMoXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgIH1cbiAgfVxuXG4gIC5ncmlkLXkge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQodmVydGljYWwsIGZhbHNlKTtcblxuXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXJlc2V0KCk7XG4gICAgfVxuXG4gICAgPiAuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoYXV0bywgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyBhbmQgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+IC4jeyQtemYtc2l6ZX0tI3skaX1cIlxuICAgICAgfVxuICAgICAgI3skc3RyfSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIC8vIFJlc3BvbnNpdmUgXCJhdXRvXCIgbW9kaWZpZXJcbiAgICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAgID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsKGF1dG8sICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAlLXh5LWNlbGwtYmFzZS1zaHJpbmstdmVydGljYWwtI3skLXpmLXNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlc3BvbnNpdmUgXCJzaHJpbmtcIiBtb2RpZmllclxuICAgICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LXNocmluayB7XG4gICAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstdmVydGljYWwtI3skLXpmLXNpemV9O1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZXNwb25zaXZlIHdpZHRoIG1vZGlmaWVyc1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICAgIEBleHRlbmQgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgQGlmICRwYWRkaW5nLWdyaWQge1xuICAgIC5ncmlkLXBhZGRpbmcteSB7XG4gICAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIG5lc3RlZCBncmlkc1xuICAgICAgLmdyaWQtcGFkZGluZy15IHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUsICRndXR0ZXItcG9zaXRpb246IHRvcCBib3R0b20pO1xuICAgICAgfVxuXG4gICAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgICA+IC5jZWxsIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRndXR0ZXItcG9zaXRpb246IHRvcCBib3R0b20pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkbWFyZ2luLWdyaWQge1xuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXModG9wIGJvdHRvbSwgdHJ1ZSwgJy5ncmlkLW1hcmdpbi15Jyk7XG4gIH1cblxufVxuXG5AbWl4aW4geHktZnJhbWUtZ3JpZC1jbGFzc2VzKCR2ZXJ0aWNhbC1ncmlkOiB0cnVlLCAkbWFyZ2luLWdyaWQ6IHRydWUpIHtcbiAgLy8gRnJhbWVkIGdyaWQgc3R5bGVzXG4gIC5ncmlkLWZyYW1lIHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xuICB9XG5cbiAgLmNlbGwgLmdyaWQtZnJhbWUge1xuICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICB9XG5cbiAgLmNlbGwtYmxvY2sge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2soKTtcbiAgfVxuXG4gIC5jZWxsLWJsb2NrLXkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2sodHJ1ZSk7XG4gIH1cblxuXG4gIC5jZWxsLWJsb2NrLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcbiAgfVxuXG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuXG4gICAgLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWU7XG4gICAgfVxuXG4gICAgLmNlbGwgLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS1jZWxsLWJsb2NrLWNvbnRhaW5lciB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jay15IHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2sodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICR2ZXJ0aWNhbC1ncmlkIHtcbiAgICAuZ3JpZC15IHtcbiAgICAgICYuZ3JpZC1mcmFtZSB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XG4gICAgICAgICYuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cbiAgICAuY2VsbCB7XG4gICAgICAuZ3JpZC15LmdyaWQtZnJhbWUge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gICAgICB9XG4gICAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XG4gICAgICAgIC5ncmlkLXkuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgICAgIGhlaWdodDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xuICAgIC5ncmlkLWZyYW1lLmdyaWQtbWFyZ2luLXkge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlLCBmYWxzZSwgJGdyaWQtbWFyZ2luLWd1dHRlcnMsICRpbmNsdWRlLWJhc2U6IGZhbHNlKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgLmdyaWQtbWFyZ2luLXkuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUsIGZhbHNlLCAkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEZpbmFsIGNsYXNzZXNcbkBtaXhpbiBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcyhcbiAgJGJhc2UtZ3JpZDogdHJ1ZSxcbiAgJG1hcmdpbi1ncmlkOiB0cnVlLFxuICAkcGFkZGluZy1ncmlkOiB0cnVlLFxuICAkYmxvY2stZ3JpZDogdHJ1ZSxcbiAgJGNvbGxhcHNlOiB0cnVlLFxuICAkb2Zmc2V0OiB0cnVlLFxuICAkdmVydGljYWwtZ3JpZDogdHJ1ZSxcbiAgJGZyYW1lLWdyaWQ6IHRydWVcbikge1xuXG4gIC8vIEJhc2UgZ3JpZCBzdHlsZXNcbiAgQGlmKCRiYXNlLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1iYXNlLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gTWFyZ2luIGdyaWRcbiAgQGlmKCRtYXJnaW4tZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIFBhZGRpbmcgZ3JpZFxuICBAaWYoJHBhZGRpbmctZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBCbG9jayBncmlkXG4gIEBpZigkYmxvY2stZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWJsb2NrLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgLy8gQ29sbGFwc2UgZ3V0dGVyc1xuICBAaWYoJGNvbGxhcHNlKSB7XG4gICAgQGluY2x1ZGUgeHktY29sbGFwc2UtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XG4gIH1cblxuICAvLyBPZmZzZXQgZ3V0dGVyc1xuICBAaWYoJG9mZnNldCkge1xuICAgIEBpbmNsdWRlIHh5LW9mZnNldC1jZWxsLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIFZlcnRpY2FsIGdyaWRcbiAgQGlmKCR2ZXJ0aWNhbC1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktdmVydGljYWwtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XG4gIH1cblxuICBAaWYgKCRmcmFtZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktZnJhbWUtZ3JpZC1jbGFzc2VzKCR2ZXJ0aWNhbC1ncmlkLCAkbWFyZ2luLWdyaWQpXG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGUgZ3V0dGVycyBmb3IgYSBjZWxsL2NvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgZWl0aGVyIG1hcmdpbiBvciBwYWRkaW5nLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVnYXRpdmUgW2ZhbHNlXSAtIFdoZXRoZXIgdG8gYXBwbHkgdGhlIGd1dHRlciBhcyBhIG5lZ2F0aXZlIHZhbHVlLiBDb21tb25seSB1c2VkIGZvciBuZXN0ZWQgZ3JpZHMuXG5AbWl4aW4geHktZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcbiAgJG5lZ2F0aXZlOiBmYWxzZVxuKSB7XG4gICRvcGVyYXRvcjogaWYoJG5lZ2F0aXZlLCAnLScsICcnKTtcblxuICAvLyBJZiB3ZSBoYXZlIGRlY2xhcmVkIG5lZ2F0aXZlIGd1dHRlcnMsIGZvcmNlIHR5cGUgdG8gYG1hcmdpbi5cbiAgJGd1dHRlci10eXBlOiBpZigkbmVnYXRpdmUsICdtYXJnaW4nLCAkZ3V0dGVyLXR5cGUpO1xuXG4gIC8vIE91dHB1dCBvdXIgbWFyZ2luIGd1dHRlcnMuXG4gIEBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcpIHtcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkZ3V0dGVycykge1xuICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgLyAyO1xuXG4gICAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgI3skZ3V0dGVyLXR5cGV9LSN7JHZhbHVlfTogdW5xdW90ZShcIiN7JG9wZXJhdG9yfSN7JGd1dHRlcn1cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbnVtYmVyJykge1xuICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXJzKSAvIDI7XG5cbiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiB1bnF1b3RlKFwiI3skb3BlcmF0b3J9I3skZ3V0dGVyfVwiKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgbWF4IHdpZHRoIGNvbnRhaW5lciwgZGVzaWduZWQgdG8gaG91c2UgeW91ciBncmlkIGNvbnRlbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskZ3JpZC1jb250YWluZXJdIC0gYSB3aWR0aCB0byBsaW1pdCB0aGUgY29udGFpbmVyIHRvLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJGdyaWQtY29udGFpbmVyLXBhZGRpbmddIC0gcGFkZGluZ3Mgb2YgdGhlIGNvbnRhaW5lci5cbkBtaXhpbiB4eS1ncmlkLWNvbnRhaW5lcihcbiAgJHdpZHRoOiAkZ3JpZC1jb250YWluZXIsXG4gICRwYWRkaW5nOiAkZ3JpZC1jb250YWluZXItcGFkZGluZ1xuKSB7XG4gIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRwYWRkaW5nLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuXG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgeW91ciBmbGV4IGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtob3Jpem9udGFsXSAtIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbiBvZiBjZWxscyB3aXRoaW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkd3JhcCBbdHJ1ZV0gLSBJZiB0aGUgY2VsbHMgd2l0aGluIHNob3VsZCB3cmFwIG9yIG5vdC5cbkBtaXhpbiB4eS1ncmlkKFxuICAkZGlyZWN0aW9uOiBob3Jpem9udGFsLFxuICAkd3JhcDogdHJ1ZVxuKSB7XG4gICRkaXJlY3Rpb246IGlmKCRkaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnLCByb3csIGNvbHVtbik7XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6ICRkaXJlY3Rpb24gJHdyYXA7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ1NTIGZsZXggdmFsdWUgZm9yIGEgY2VsbCBiYXNlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIEFjY2VwdHMgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgLCBgZ3Jvd2AsIG9yIGFueSBvdGhlciB2YWx1ZSByZXByZXNlbnRpbmcgYSBjZWxsIHNpemUgKGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBgc2hyaW5rYCkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gVGhlIGNlbGwgZmxleCBwcm9wZXJ0eSB2YWx1ZS5cbkBmdW5jdGlvbiB4eS1jZWxsLWJhc2UoJHNpemU6IGZ1bGwpIHtcbiAgQGlmICgkc2l6ZSA9PSAnYXV0bycpIHtcbiAgICBAcmV0dXJuIDEgMSAwcHg7XG4gIH1cbiAgQGVsc2UgaWYgKCRzaXplID09ICdncm93Jykge1xuICAgIEByZXR1cm4gMSAwIGF1dG87XG4gIH1cbiAgQGVsc2UgaWYgKCRzaXplID09ICdzaHJpbmsnIG9yICRzaXplID09ICdmdWxsJyBvciB6Zi1pcy1mcmFjdGlvbigkc2l6ZSwgJGFsbG93LW5vLWRlbm9taW5hdG9yOiB0cnVlKSkge1xuICAgIEByZXR1cm4gMCAwIGF1dG87XG4gIH1cbiAgQHJldHVybiBudWxsO1xufVxuXG4vLy8gQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgY2VsbCBndXR0ZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIHJldHVybnMgdGhlIHJlc3BvbnNpdmUgZ3V0dGVycyBtYXAgYCRndXR0ZXJzYC4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxNYXB9IFRoZSBjZWxsIGd1dHRlciBzaXplIG9yIHRoZSByZXNwb25zaXZlIGd1dHRlcnMgbWFwLlxuQGZ1bmN0aW9uIHh5LWNlbGwtZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkYnJlYWtwb2ludDogbnVsbFxuKSB7XG4gIC8vIEZvciBgYXV0b2AsIHJldHVybnMgdGhlIHJlc3BvbnNpdmUgbWFwIGAkZ3V0dGVyc2AuXG4gIEBpZiAoJGJyZWFrcG9pbnQgPT0gJ2F1dG8nKSB7XG4gICAgQHJldHVybiAkZ3V0dGVycztcbiAgfVxuXG4gIC8vIFVzZSB0aGUgY29udGV4dHVhbCBicmVha3BvaW50IGJ5IGRlZmF1bHQuXG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50KTtcblxuICBAaWYgKCRicmVha3BvaW50KSB7XG4gICAgQHJldHVybiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkLXpmLXplcm8tYnJlYWtwb2ludCkgb3IgMDtcbiAgfVxufVxuXG4vLy8gUmV0dXJucyB0aGUgcGVyY2VudGFnZSBzaXplIG9mIGEgY2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRzaXplIFskZ3JpZC1jb2x1bW5zXSAtIFNpemUgdG8gbWFrZSB0aGUgY2VsbC4gWW91IGNhbiBwYXNzIGEgdmFsdWUgaW4gbXVsdGlwbGUgZm9ybWF0cywgc3VjaCBhcyBgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8zYC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFNpemUgb2YgdGhlIGNlbGwgKGluIHBlcmNlbnQpLlxuQGZ1bmN0aW9uIHh5LWNlbGwtc2l6ZShcbiAgJHNpemU6ICRncmlkLWNvbHVtbnNcbikge1xuICBAcmV0dXJuIGZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoJHNpemUsICRkZW5vbWluYXRvcjogJGdyaWQtY29sdW1ucyk7XG59XG5cbi8vLyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDU1MgdmFsdWUgZm9yIGEgY2VsbCBzaXplLlxuLy8vXG4vLy8gR3V0dGVycy1yZWxhdGVkIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgZm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMgKGJ5IGRlZmF1bHQpIGFzIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgIG9yIGFueSBmcmFjdGlvbiBsaWtlIGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCByZXR1cm5zIGEgbWFwIG9mIHNpemVzIGFkYXB0ZWQgdG8gcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfFN0cmluZ3xNYXB9IFRoZSBjZWxsIHNpemluZyBwcm9wZXJ0eSB2YWx1ZSwgb3IgYSByZXNwb25zaXZlIG1hcCBvZiB0aGVtLlxuQGZ1bmN0aW9uIHh5LWNlbGwtc2l6ZS1jc3MoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbFxuKSB7XG4gICRtYXJnaW4tZ3V0dGVyOiAwO1xuXG4gIEBpZiAoJHNpemUgPT0gJ2F1dG8nIG9yICRzaXplID09ICdzaHJpbmsnKSB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG5cbiAgLy8gRm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMsIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgICRtYXJnaW4tZ3V0dGVyOiB4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgICBAaWYgKCRtYXJnaW4tZ3V0dGVyID09IG51bGwpIHtcbiAgICAgIEBlcnJvciAneHktY2VsbC1zaXplOiBubyBndXR0ZXJzIHdlcmUgZm91bmQgaW4gYCRndXR0ZXJzYCBmb3IgXCIkYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBjZWxsIHNpemUgKG51bWJlcilcbiAgJHNpemUtcmF3OiBpZigkc2l6ZSA9PSAnZnVsbCcsIDEwMCUsIHh5LWNlbGwtc2l6ZSgkc2l6ZSkpO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgY2VsbCBDU1Mgc2l6ZSBpbmNsdWRpbmcgZ3V0dGVycyAoc3RyaW5nKVxuICAvLyBJZiB0aGUgY2VsbCBoYXMgcmVzcG9uc2l2ZSBtYXJnaW4gZ3V0dGVycywgcmV0dXJuIGEgcmVzcG9uc2l2ZSBtYXAgb2Ygc2l6ZXMuXG4gIEBpZiB0eXBlLW9mKCRtYXJnaW4tZ3V0dGVyKSA9PSAnbWFwJyB7XG4gICAgJHJlc3BvbnNpdmUtY3NzLXNpemVzOiAoKTtcblxuICAgIEBlYWNoICRicCwgJG1nIGluICRtYXJnaW4tZ3V0dGVyIHtcbiAgICAgICRzaXplLWNzczogaWYoJG1nID09IDAsICRzaXplLXJhdywgY2FsYygjeyRzaXplLXJhd30gLSAje3JlbS1jYWxjKCRtZyl9KSk7XG4gICAgICAkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXM6IG1hcC1tZXJnZSgkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXMsICgkYnA6ICRzaXplLWNzcykpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJHJlc3BvbnNpdmUtY3NzLXNpemVzO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIGEgc2luZ2xlIENTUyBzaXplLlxuICBAZWxzZSB7XG4gICAgJGNzcy1zaXplOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAkc2l6ZS1yYXcsIGNhbGMoI3skc2l6ZS1yYXd9IC0gI3tyZW0tY2FsYygkbWFyZ2luLWd1dHRlcil9KSk7XG4gICAgQHJldHVybiAkY3NzLXNpemU7XG4gIH1cbn1cblxuLy8vIFNldHMgYmFzZSBmbGV4IHByb3BlcnRpZXMgZm9yIGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIEFjY2VwdHMgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgLCBgZ3Jvd2AsIG9yIGFueSBvdGhlciB2YWx1ZSByZXByZXNlbnRpbmcgYSBjZWxsIHNpemUgKGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBgc2hyaW5rYCkuXG5AbWl4aW4geHktY2VsbC1iYXNlKCRzaXplOiBmdWxsKSB7XG4gICRiYXNlOiB4eS1jZWxsLWJhc2UoJHNpemUpO1xuXG4gIGZsZXg6ICN7JGJhc2V9O1xuXG4gIC8vIFNldCBiYXNlIHN0eWxlcyBmb3IgXCJmdWxsXCIgb25seVxuICBAaWYoJHNpemUgPT0gJ2Z1bGwnKSB7XG4gICAgbWluLWhlaWdodDogMHB4O1xuICAgIG1pbi13aWR0aDogMHB4O1xuICB9XG59XG5cbi8vLyBSZXNldHMgYSBjZWxscyB3aWR0aCAob3IgaGVpZ2h0IGlmIHZlcnRpY2FsIGlzIHRydWUpIGFzIHdlbGwgYXMgc3RyaXBzIGl0cyBndXR0ZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtcmVzZXQoJHZlcnRpY2FsOiB0cnVlKSB7XG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCBoZWlnaHQsIHdpZHRoKTtcbiAgI3skZGlyZWN0aW9ufTogYXV0bztcbiAgbWF4LSN7JGRpcmVjdGlvbn06IG5vbmU7XG59XG5cbi8vLyBTZXRzIHNpemluZyBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEd1dHRlcnMtcmVsYXRlZCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIGZvciBjZWxscyB3aXRoIG1hcmdpbiBndXR0ZXJzIChieSBkZWZhdWx0KSBhcyB0aGUgZ3V0dGVyIGlzIGluY2x1ZGVkIGluIHRoZSB3aWR0aC5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgZ2VuZXJhdGVzIHNpemVzIGFkYXB0ZWQgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXNpemUoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRzaXplczogeHktY2VsbC1zaXplLWNzcygkc2l6ZSwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGJyZWFrcG9pbnQpO1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XG5cbiAgQGlmICh0eXBlLW9mKCRzaXplcykgPT0gJ21hcCcpIHtcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkc2l6ZXMpIHtcbiAgICAgICN7JGRpcmVjdGlvbn06ICQtemYtYnAtdmFsdWU7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAjeyRkaXJlY3Rpb259OiAkc2l6ZXM7XG4gIH1cbn1cblxuLy8vIFNldHMgZ3V0dGVycyBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtudWxsXSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi4gQnkgZGVmYXVsdCBgcmlnaHQgbGVmdGAgZm9yIGhvcml6b250YWwgY2VsbHMgYW5kIGB0b3AgYm90dG9tYCBmb3IgdmVydGljYWwgY2VsbHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCBnZW5lcmF0ZXMgcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIERpcmVjdGlvbiBvZiB0aGUgZ3V0dGVycyB0byBvdXRwdXQuIFNlZSBgJGd1dHRlci1wb3NpdGlvbmAuXG5AbWl4aW4geHktY2VsbC1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gIC8vIEdldCB0aGUgZGVmYXVsdCBndXR0ZXIgcG9zaXRpb24gYWNjb3JkaW5nIHRvIGNlbGwgZGlyZWN0aW9uXG4gIEBpZigkZ3V0dGVyLXBvc2l0aW9uID09IG51bGwpIHtcbiAgICAkZ3V0dGVyLXBvc2l0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgdG9wIGJvdHRvbSwgbGVmdCByaWdodCk7XG4gIH1cblxuICAvLyBHZXQgdGhlIGd1dHRlciB3aWR0aCBmb3IgdGhpcyBicmVha3BvaW50XG4gICRndXR0ZXItd2lkdGg6IHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICBAaWYgKCRndXR0ZXItd2lkdGggPT0gbnVsbCkge1xuICAgIEBlcnJvciAneHktY2VsbC1ndXR0ZXJzOiBubyBndXR0ZXJzIHdlcmUgZm91bmQgaW4gYCRndXR0ZXJzYCBmb3IgXCIkYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIic7XG4gIH1cblxuICBAaWYgKCRndXR0ZXItdHlwZSBhbmQgJGd1dHRlci10eXBlICE9IG5vbmUpIHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXItd2lkdGgsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBjZWxsIGZvciB5b3VyIGdyaWQuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKDEwMCUgd2lkdGgpLCBgYXV0b2AgKHVzZSBhbGwgYXZhaWxhYmxlIHNwYWNlKSwgYHNocmlua2AgKHVzZSBvbmx5IHRoZSByZXF1aXJlZCBzcGFjZSkgb3IgYW55IGZyYWN0aW9uIChgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC4uLikuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbbnVsbF0gLSBbREVQUkVDQVRFRF0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIGdlbmVyYXRlcyByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG4vLy8gQHBhcmFtIHtMaXN0fSAkb3V0cHV0IFsoYmFzZSBzaXplIGd1dHRlcnMpXSAtIENlbGwgcGFydHMgdG8gb3V0cHV0LiBZb3Ugd2lsbCBuZWVkIHRvIGdlbmVyYXRlIG90aGVycyBwYXJ0cyBvZiB0aGUgY2VsbCBzZXBlcmF0ZWx5LCBpdCBtYXkgbm90IHdvcmsgcHJvcGVybHkgb3RoZXJ3aXNlLlxuQG1peGluIHh5LWNlbGwoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyLW91dHB1dDogbnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICRvdXRwdXQ6IChiYXNlIHNpemUgZ3V0dGVycylcbikge1xuICAvLyBEZWZhdWx0IGZvciAkZ3V0dGVyLW91dHB1dFxuICBAaWYgKCRndXR0ZXItb3V0cHV0ICE9IG51bGwpIHtcbiAgICBAd2FybiAneHktY2VsbDogJGd1dHRlci1vdXRwdXQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBTZWUgbWlncmF0aW9uIG5vdGVzIGF0IGh0dHBzOi8vZ2l0LmlvL2ZvdW5kYXRpb24tNi02LTAnO1xuICAgIEBpZiAoJGd1dHRlci1vdXRwdXQgPT0gZmFsc2UpIHtcbiAgICAgICRvdXRwdXQ6IHNsLXJlbW92ZSgkb3V0cHV0LCBndXR0ZXJzKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKGluZGV4KCRvdXRwdXQsIGJhc2UpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKCRzaXplKTtcbiAgfVxuICBAaWYgKGluZGV4KCRvdXRwdXQsIHNpemUpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRzaXplLCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsKTtcbiAgfVxuICBAaWYgKGluZGV4KCRvdXRwdXQsIGd1dHRlcnMpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24sICRicmVha3BvaW50LCAkdmVydGljYWwpO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQgc2l6ZWQgZ3JpZC4gVXNlZCB0byBnZW5lcmF0ZSBvdXIgZ3JpZCBjbGFzc2VzLlxuLy8vXG4vLy8gYHh5LWNlbGwtc3RhdGljKClgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC5cbi8vLyBVc2UgYHh5LWNlbGwoKWAgaW5zdGVhZCB3aXRoIGAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKWAgdG8gbm90IGdlbmVyYXRlIHRoZSBjZWxsIGJhc2UuXG4vLy8gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wXG4vLy9cbi8vLyBAZGVwcmVjYXRlZCB2Ni42LjBcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzLiBBbHdheXMgYHRydWVgIGZvciBtYXJnaW4gZ3V0dGVycy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtc3RhdGljKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlci1vdXRwdXQ6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gIEB3YXJuICd4eS1jZWxsLXN0YXRpYygpIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIFwieHktY2VsbCgpXCIgaW5zdGVhZC4gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wJztcblxuICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICAkZ3V0dGVyLXBvc2l0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgdG9wIGJvdHRvbSwgbGVmdCByaWdodCk7XG5cbiAgJC1ndXR0ZXItb3V0cHV0OiBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicsIHRydWUsICRndXR0ZXItb3V0cHV0KTtcbiAgJC1ndXR0ZXItbWFyZ2luOiBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicsICRndXR0ZXIsIDApO1xuXG4gIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsICQtZ3V0dGVyLW1hcmdpbiwgJHZlcnRpY2FsKTtcbiAgQGlmICgkLWd1dHRlci1vdXRwdXQpIHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXIsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEZpbmRzIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gaW50ZWdlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGEgLSBGaXJzdCBudW1iZXIgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGIgLSBTZWNvbmQgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXG5AZnVuY3Rpb24gZ2NkKCRhLCAkYikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvR3JlYXRlc3RfY29tbW9uX2Rpdmlzb3IjSmF2YVNjcmlwdFxuICBAaWYgKCRiICE9IDApIHtcbiAgICBAcmV0dXJuIGdjZCgkYiwgJGEgJSAkYik7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYWJzKCRhKTtcbiAgfVxufVxuXG4vLy8gSGFuZGxlcyBkZWNpbWFsIGV4cG9uZW50cyBieSB0cnlpbmcgdG8gY29udmVydCB0aGVtIGludG8gYSBmcmFjdGlvbiBhbmQgdGhlbiB1c2UgYSBudGgtcm9vdC1hbGdvcml0aG0gZm9yIHBhcnRzIG9mIHRoZSBjYWxjdWxhdGlvblxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGJhc2UgbnVtYmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZXhwb25lbnQgLSBUaGUgZXhwb25lbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgcHJvZHVjdCBvZiB0aGUgZXhwb25lbnRpYXRpb24uXG5AZnVuY3Rpb24gcG93KCRiYXNlLCAkZXhwb25lbnQsICRwcmVjOiAxNikge1xuICBAaWYgKGZsb29yKCRleHBvbmVudCkgIT0gJGV4cG9uZW50KSB7XG4gICAgJHByZWMyIDogcG93KDEwLCAkcHJlYyk7XG4gICAgJGV4cG9uZW50OiByb3VuZCgkZXhwb25lbnQgKiAkcHJlYzIpO1xuICAgICRkZW5vbWluYXRvcjogZ2NkKCRleHBvbmVudCwgJHByZWMyKTtcbiAgICBAcmV0dXJuIG50aC1yb290KHBvdygkYmFzZSwgJGV4cG9uZW50IC8gJGRlbm9taW5hdG9yKSwgJHByZWMyIC8gJGRlbm9taW5hdG9yLCAkcHJlYyk7XG4gIH1cblxuICAkdmFsdWU6ICRiYXNlO1xuICBAaWYgJGV4cG9uZW50ID4gMSB7XG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkZXhwb25lbnQge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKiAkYmFzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGV4cG9uZW50IDwgMSB7XG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAtJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC8gJGJhc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbkBmdW5jdGlvbiBudGgtcm9vdCgkbnVtLCAkbjogMiwgJHByZWM6IDEyKSB7XG4gIC8vIEZyb206IGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9OdGhfcm9vdCNKYXZhU2NyaXB0XG4gICR4OiAxO1xuXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJHByZWMge1xuICAgICR4OiAxIC8gJG4gKiAoKCRuIC0gMSkgKiAkeCArICgkbnVtIC8gcG93KCR4LCAkbiAtIDEpKSk7XG4gIH1cblxuICBAcmV0dXJuICR4O1xufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgd2lkdGggZm9yIGEgZ2l2ZW4gcmF0aW8uXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmF0aW8gLSBSYXRpbyB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBoZWlnaHQsIGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IEEgcGVyY2VudGFnZSB2YWx1ZSBmb3IgdGhlIGhlaWdodCByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgYSByZXNwb25zaXZlIGNvbnRhaW5lci5cbkBmdW5jdGlvbiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbykge1xuICAkdzogbnRoKCRyYXRpbywgMSk7XG4gICRoOiBudGgoJHJhdGlvLCAzKTtcbiAgQHJldHVybiAkaCAvICR3ICogMTAwJTtcbn1cblxuLy8vIFBhcnNlIHRoZSBnaXZlbiBgJGZyYWN0aW9uYCB0byBudW1lcmF0b3JzIGFuZCBkZW51bWVyYXRvcnMuXG4vLy9cbi8vLyBAcGFyYW0geyp9ICRmcmFjdGlvbiAtIFZhbHVlIHJlcHJlc2VudGluZyBhIGZyYWN0aW9uIHRvIHBhcnNlLiBJdCBjYW4gYmUgZm9ybWF0dGVkIGFzIGA1MCVgLCBgMSBvZiAyYCwgYDEvMmAgb3IgYDUwYCAobm8gZGVub21pbmF0b3Igd291bGQgYmUgcmV0dXJuZWQpLlxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH0gTGlzdCBvZiBwYXJzZWQgdmFsdWVzIHdpdGggbnVtZXJhdG9yIGF0IGZpcnN0IHBvc2l0aW9uIGFuZCBkZW51bWVyYXRvciBhcyBzZWNvbmQuIFRoZXNlIHZhbHVlcyBtYXkgYmUgbnVsbC5cbkBmdW5jdGlvbiB6Zi1wYXJzZS1mcmFjdGlvbigkZnJhY3Rpb24pIHtcblxuICBAaWYgdHlwZS1vZigkZnJhY3Rpb24pID09ICdudW1iZXInIHtcbiAgICAvLyBcIjUwJVwiXG4gICAgQGlmIHVuaXQoJGZyYWN0aW9uKSA9PSAnJScge1xuICAgICAgQHJldHVybiAoc3RyaXAtdW5pdCgkZnJhY3Rpb24pLCAxMDApO1xuICAgIH1cbiAgICBAZWxzZSBpZiAodW5pdCgkZnJhY3Rpb24pID09ICcnKSB7XG4gICAgICAvLyBcIjAuNVwiXG4gICAgICBAaWYgJGZyYWN0aW9uIDwgMSB7XG4gICAgICAgIEByZXR1cm4gKCRmcmFjdGlvbiAqIDEwMCwgMTAwKTtcbiAgICAgIH1cbiAgICAgIC8vIFwiNTBcIlxuICAgICAgQGVsc2Uge1xuICAgICAgICBAcmV0dXJuICgkZnJhY3Rpb24sIG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZyYWN0aW9uKSA9PSAnbGlzdCcge1xuICAgIC8vIFwiNTAgb2YgMTAwXCIsIFwiNTAvMTAwXCIuLi5cbiAgICBAaWYgbGVuZ3RoKCRmcmFjdGlvbikgPT0gM1xuICAgICAgYW5kIHR5cGUtb2YobnRoKCRmcmFjdGlvbiwgMSkgPT0gJ251bWJlcicpXG4gICAgICBhbmQgdHlwZS1vZihudGgoJGZyYWN0aW9uLCAzKSA9PSAnbnVtYmVyJykge1xuICAgICAgQHJldHVybiAobnRoKCRmcmFjdGlvbiwgMSksIG50aCgkZnJhY3Rpb24sIDMpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIChudWxsLCBudWxsKTtcbn1cblxuLy8vIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gYCR2YWx1ZWAgcmVwcmVzZW50cyBhIGZyYWN0aW9uLiBTdXBwb3J0cyBmb3JtYXRzIGxpa2UgYDUwJWAsIGAxIG9mIDJgLCBgMSBwZXIgMmAgb3IgYDEvMmAuXG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIFZhbHVlIHRvIHRlc3QuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYWxsb3ctbm8tZGVub21pbmF0b3IgW2ZhbHNlXSAtIElmIGB0cnVlYCwgc2ltcGxlIG51bWJlcnMgd2l0aG91dCBkZW5vbWluYXRvcnMgbGlrZSBgNTBgIGFyZSBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSBgdHJ1ZWAgaWYgYCR2YWx1ZWAgcmVwcmVzZW50cyBhIGZyYWN0aW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbkBmdW5jdGlvbiB6Zi1pcy1mcmFjdGlvbigkdmFsdWUsICRhbGxvdy1uby1kZW5vbWluYXRvcjogZmFsc2UpIHtcbiAgJHBhcnNlZDogemYtcGFyc2UtZnJhY3Rpb24oJHZhbHVlKTtcbiAgQHJldHVybiBub3QobnRoKCRwYXJzZWQsIDEpID09IG51bGxcbiAgICBvciAobnRoKCRwYXJzZWQsIDIpID09IG51bGwgYW5kICRhbGxvdy1uby1kZW5vbWluYXRvciA9PSBmYWxzZSkpO1xufVxuXG4vLy8gQ2FsY3VsYXRlIGEgcGVyY2VudGFnZSBmcm9tIGEgZ2l2ZW4gZnJhY3Rpb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZnJhY3Rpb24gLSBWYWx1ZSByZXByZXNlbnRpbmcgYSBmcmFjdGlvbiB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlLCBmb3JtYXR0ZWQgYXMgYDUwYCAocmVsYXRpdmUgdG8gYCRkZW5vbWluYXRvcmApLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGRlbm9taW5hdG9yIC0gRGVmYXVsdCB2YWx1ZSB0byB1c2UgYXMgZGVub21pbmF0b3Igd2hlbiBgJGZyYWN0aW9uYCByZXByZXNlbnRzIGFuIGFic29sdXRlIHZhbHVlLlxuQGZ1bmN0aW9uIGZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoXG4gICRmcmFjdGlvbixcbiAgJGRlbm9taW5hdG9yOiBudWxsXG4pIHtcbiAgJHBhcnNlZDogemYtcGFyc2UtZnJhY3Rpb24oJGZyYWN0aW9uKTtcbiAgJHBhcnNlZC1ub21pbmF0b3I6IG50aCgkcGFyc2VkLCAxKTtcbiAgJHBhcnNlZC1kZW5vbWluYXRvcjogbnRoKCRwYXJzZWQsIDIpO1xuXG4gIEBpZiAkcGFyc2VkLW5vbWluYXRvciA9PSBudWxsIHtcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgXCJmcmFjdGlvbi10by1wZXJjZW50YWdlKClcIi4gVXNlIGEgbnVtYmVyLCBkZWNpbWFsLCBwZXJjZW50YWdlLCBvciBcIm4gb2YgblwiIC8gXCJuL25cIi4nO1xuICB9XG4gIEBpZiAkcGFyc2VkLWRlbm9taW5hdG9yID09IG51bGwge1xuICAgIEBpZiB0eXBlLW9mKCRkZW5vbWluYXRvcikgPT0gJ251bWJlcicge1xuICAgICAgJHBhcnNlZC1kZW5vbWluYXRvcjogJGRlbm9taW5hdG9yO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgJ0Vycm9yIHdpdGggXCJmcmFjdGlvbi10by1wZXJjZW50YWdlKClcIi4gQSBkZWZhdWx0IFwiJGRlbm9taW5hdG9yXCIgaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBhYnNvbHV0ZSB2YWx1ZXMnO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gcGVyY2VudGFnZSgkcGFyc2VkLW5vbWluYXRvciAvICRwYXJzZWQtZGVub21pbmF0b3IpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFNpemVzIGNoaWxkIGVsZW1lbnRzIHNvIHRoYXQgYCRuYCBudW1iZXIgb2YgaXRlbXMgYXBwZWFyIG9uIGVhY2ggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsnLmNlbGwnXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbbnVsbF0gLSBbREVQUkVDQVRFRF0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIGJyZWFrcG9pbnQgdG8gdXNlIGZvciB0aGUgY2VsbCBnZW5lcmF0aW9uLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuLy8vIEBwYXJhbSB7TGlzdH0gJG91dHB1dCBbKGJhc2Ugc2l6ZSBndXR0ZXJzKV0gLSBDZWxsIHBhcnRzIHRvIG91dHB1dC4gWW91IHdpbGwgbmVlZCB0byBnZW5lcmF0ZSBvdGhlcnMgcGFydHMgb2YgdGhlIGNlbGwgc2VwZXJhdGVseSwgaXQgbWF5IG5vdCB3b3JrIGNvcnJlY3RseSBvdGhlcndpc2UuXG5AbWl4aW4geHktZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXG4gICRndXR0ZXItb3V0cHV0OiBudWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJG91dHB1dDogKGJhc2Ugc2l6ZSBndXR0ZXJzKVxuKSB7XG4gICRzaXplOiBwZXJjZW50YWdlKDEvJG4pO1xuXG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwoJHNpemUsICRndXR0ZXItb3V0cHV0LCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsLCAkb3V0cHV0KTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENvbGxhcHNlcyB0aGUgZ3JpZCBhIGNlbGxzIHdpdGhpbiBpdC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWy5jZWxsXSAtIFRoZSBjaGlsZCBlbGVtZW50IHRvIHJlbW92ZSB0aGUgZ3V0dGVyIGZyb20uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gcmVtb3ZlLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb25zIHRvIHJlbW92ZSBndXR0ZXJzIGZyb20uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG1pbi1icmVha3BvaW50IFskLXpmLXplcm8tYnJlYWtwb2ludF0gLSBNaW5pbXVtIGJyZWFrcG9pbnQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGZvciB3aGljaCB0byBjb2xsYXBzZSB0aGUgZ3V0dGVyLlxuQG1peGluIHh5LWdyaWQtY29sbGFwc2UoXG4gICRzZWxlY3RvcjogJy5jZWxsJyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXG4gICRtaW4tYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnRcbikge1xuICAvLyBGaXJzdCwgbGV0cyBuZWdhdGUgYW55IG1hcmdpbnMgb24gdGhlIHRvcCBsZXZlbFxuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICAgIH1cblxuICAgICAgPiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRleGNsdWRlZC1icHM6IC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJG1pbi1icmVha3BvaW50KTtcblxuICAgIC8vIE91dHB1dCBuZXcgd2lkdGhzIHRvIG5vdCBpbmNsdWRlIGd1dHRlcnNcbiAgICBAZWFjaCAkYnAgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaWYoc2wtY29udGFpbigkZXhjbHVkZWQtYnBzLCAkYnApKSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgICAgID4gLiN7JGJwfS0jeyRpfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkaSwgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicCkge1xuICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgICB9XG5cbiAgICAgID4gI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAgIHBhZGRpbmctI3skdmFsdWV9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ1NTIHZhbHVlIHRvIG9mZnNldCBhIGNlbGwuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFNpemUgdG8gb2Zmc2V0IGJ5LiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgeHktY2VsbCgpYCBtaXhpbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gTWFwIG9mIGd1dHRlcnMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIFRoZSB0eXBlIG9mIGd1dHRlciB0byB1c2UuIENhbiBiZSBgbWFyZ2luYCBvciBgcGFkZGluZ2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfFN0cmluZ30gVGhlIGNlbGwgb2Zmc2V0IHByb3BlcnR5IHZhbHVlLlxuQGZ1bmN0aW9uIHh5LWNlbGwtb2Zmc2V0KFxuICAkbixcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6IG51bGxcbikge1xuICAkYnJlYWtwb2ludDogLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCwgJGRlZmF1bHQ6ICQtemYtemVyby1icmVha3BvaW50KTtcbiAgJHNpemU6IHh5LWNlbGwtc2l6ZSgkbik7XG5cbiAgJG9mZnNldDogJHNpemU7XG4gIEBpZiAoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XG4gICAgJGd1dHRlcjogcmVtLWNhbGMoeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkYnJlYWtwb2ludCkgLyAyKTtcbiAgICAkb2Zmc2V0OiBpZigkZ3V0dGVyID09IDAsICRzaXplLCBjYWxjKCN7JHNpemV9ICsgI3skZ3V0dGVyfSkpO1xuICB9XG4gIEByZXR1cm4gJG9mZnNldDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0L2JvdHRvbSBieSBgJG5gIGNvbHVtbnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFNpemUgdG8gb2Zmc2V0IGJ5LiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgeHktY2VsbCgpYCBtaXhpbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gTWFwIG9mIGd1dHRlcnMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIFRoZSB0eXBlIG9mIGd1dHRlciB0byB1c2UuIENhbiBiZSBgbWFyZ2luYCBvciBgcGFkZGluZ2Bcbi8vLyBAcGFyYW0ge051bWJlcnxBcnJheXxLZXl3b3JkfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBmb3IgYCRndXR0ZXJzYC4gSXQgY2FuIGJlIGEgYnJlYWtwb2ludCBuYW1lLCBsaXN0IG9mIGJyZWFrcG9pbnRzIG9yIGBhdXRvYCBmb3IgYWxsIGJyZWFrcG9pbnRzLiBJZiBhIGxpc3QgaXMgZ2l2ZW4sIG1lZGlhLXF1ZXJpZXMgd2lsbCBiZSBnZW5lcmF0ZWQuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIFNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgb2Zmc2V0LiBJZiBzZXQgdG8gdHJ1ZSB3aWxsIGFwcGx5IG1hcmdpbi10b3AgaW5zdGVhZC5cbkBtaXhpbiB4eS1jZWxsLW9mZnNldChcbiAkbixcbiAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gJGJyZWFrcG9pbnQ6IG51bGwsXG4gJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50LCAkZGVmYXVsdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwsICd0b3AnLCAkZ2xvYmFsLWxlZnQpO1xuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oJGJyZWFrcG9pbnQsICRtZWRpYS1xdWVyaWVzOiAnZm9yLWxpc3RzJykge1xuICAgICRvZmZzZXQ6IHh5LWNlbGwtb2Zmc2V0KCRuLCAkZ3V0dGVycywgJGd1dHRlci10eXBlKTtcbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogI3skb2Zmc2V0fTtcbiAgfVxufVxuIiwiLy8vIE1vZGlmaWVzIGEgZ3JpZCB0byBnaXZlIGl0IFwiZnJhbWVcIiBiZWhhdmlvciAobm8gb3ZlcmZsb3csIG5vIHdyYXAsIHN0cmV0Y2ggYmVoYXZpb3IpXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZXN0ZWQgW2ZhbHNlXSAtIElzIGdyaWQgbmVzdGVkIG9yIG5vdC4gSWYgbmVzdGVkIGlzIHRydWUgdGhpcyBzZXRzIHRoZSBmcmFtZSB0byAxMDAlIGhlaWdodCwgb3RoZXJ3aXNlIHdpbGwgYmUgMTAwdmguXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbbnVsbF0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlIFt0cnVlXSAtIEluY2x1ZGUgdGhlIGJhc2Ugc3R5bGVzIHRoYXQgZG9uJ3QgdmFyeSBwZXIgYnJlYWtwb2ludC5cbkBtaXhpbiB4eS1ncmlkLWZyYW1lKFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkbmVzdGVkOiBmYWxzZSxcbiAgJGd1dHRlcnM6IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkaW5jbHVkZS1iYXNlOiB0cnVlXG4pIHtcblxuICBAaWYgJGluY2x1ZGUtYmFzZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cblxuICBAaWYgJGJyZWFrcG9pbnQgPT0gbnVsbCBhbmQgdHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcge1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKCR2ZXJ0aWNhbCwgJG5lc3RlZCwgJGd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgLy8gR2V0IG91ciBndXR0ZXJzIGlmIGFwcGxpY2FibGVcbiAgICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBhIGd1dHRlciwgYWRkIGl0IHRvIHRoZSB3aWR0aC9oZWlnaHRcbiAgICBAaWYgJGd1dHRlciB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2aCk7XG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoI3skdW5pdH0gKyAjeyRndXR0ZXJ9KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2dyk7XG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xuICAgICAgICB3aWR0aDogY2FsYygjeyR1bml0fSArICN7JGd1dHRlcn0pO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICBoZWlnaHQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHdpZHRoOiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZ3KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIE1vZGlmaWVzIGEgY2VsbCB0byBnaXZlIGl0IFwiYmxvY2tcIiBiZWhhdmlvciAob3ZlcmZsb3cgYXV0bywgaW5lcnRpYWwgc2Nyb2xsaW5nKVxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIElzIGdyaWQgdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gU2hvdWxkIG1hdGNoIGdyaWQuXG5AbWl4aW4geHktY2VsbC1ibG9jayhcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRwcm9wZXJ0eTogaWYoJHZlcnRpY2FsID09IHRydWUsICdvdmVyZmxvdy15JywgJ292ZXJmbG93LXgnKTtcblxuICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICB9IEBlbHNlIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7XG59XG5cbi8vLyBDb250YWluZXIgZm9yIGluc2lkZSBhIGdyaWQgZnJhbWUgY29udGFpbmluZyBtdWx0aXBsZSBibG9ja3MuIFR5cGljYWxseSB1c2VkXG4vLy8gYXMgYSBtb2RpZmllciBmb3IgYSBgLmNlbGxgIHRvIGFsbG93IHRoZSBjZWxsIHRvIHBhc3MgYWxvbmcgZmxleCBzaXppbmdcbi8vLyBjb25zdHJhaW50cyAvIGZyb20gcGFyZW50cyB0byBjaGlsZHJlbi5cbkBtaXhpbiB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWF4LWhlaWdodDogMTAwJTtcblxuICA+IC5ncmlkLXgge1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b25cbi8vLy9cblxuLy8vIEZvbnQgZmFtaWx5IGZvciBidXR0b24gZWxlbWVudHMuXG4vLy8gQHR5cGUgRm9udFxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBidXR0b24gZWxlbWVudHMuXG4vLy8gSWdub3JlZCBpZiBudWxsIChkZWZhdWx0KVxuLy8vIEB0eXBlIEZvbnQtV2VpZ2h0XG4kYnV0dG9uLWZvbnQtd2VpZ2h0OiBudWxsICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLXBhZGRpbmc6IDAuODVlbSAxZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYXJvdW5kIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmaWxsIGZvciBidXR0b25zLiBDYW4gZWl0aGVyIGJlIGBzb2xpZGAgb3IgYGhvbGxvd2AuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGJ1dHRvbi1maWxsOiBzb2xpZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBDb2xvclxuJGJ1dHRvbi1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJ1dHRvbi1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRpdmUgZm9udCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgZm9yIGJ1dHRvbnMsIHRyYW5zcGFyZW50IGJ5IGRlZmF1bHRcbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHdpZHRoIGZvciBob2xsb3cgb3V0bGluZSBidXR0b25zXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1zaXplczogKFxuICB0aW55OiAwLjZyZW0sXG4gIHNtYWxsOiAwLjc1cmVtLFxuICBkZWZhdWx0OiAwLjlyZW0sXG4gIGxhcmdlOiAxLjI1cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gb3BhY2l0eSBmb3IgYSBkaXNhYmxlZCBidXR0b24uXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBsaWdodG5lc3Mgb24gaG92ZXIgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAtMjAlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBob2xsb3cgYnV0dG9ucy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzczogLTUwJSAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWw6IGZsaXAgZnJvbSBtYXJnaW4tcmlnaHQgdG8gbWFyZ2luLWxlZnQgZm9yIGRlZmF1bHRzXG5AaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG59XG5cbi8vLyB0cmFuc2l0aW9ucyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gQWRkaXRpb25hbCByZXNwb25zaXZlIGNsYXNzZXMgZm9yIC5leHBhbmRlZFxuLy8vIEB0eXBlIEJvb2xlYW5cbiRidXR0b24tcmVzcG9uc2l2ZS1leHBhbmRlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRPRE86IERvY3VtZW50IGJ1dHRvbi1iYXNlKCkgbWl4aW5cbkBtaXhpbiBidXR0b24tYmFzZSB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46ICRidXR0b24tbWFyZ2luO1xuXG4gIEBpZiAodHlwZS1vZigkYnV0dG9uLXBhZGRpbmcpID09ICdtYXAnKSB7XG4gICAgQGVhY2ggJHNpemUsICRwYWRkaW5nIGluICRidXR0b24tcGFkZGluZyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcGFkZGluZzogJGJ1dHRvbi1wYWRkaW5nO1xuICB9XG5cbiAgYm9yZGVyOiAkYnV0dG9uLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gIHRyYW5zaXRpb246ICRidXR0b24tdHJhbnNpdGlvbjtcbiAgZm9udC1mYW1pbHk6ICRidXR0b24tZm9udC1mYW1pbHk7XG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcbiAgZm9udC13ZWlnaHQ6ICRidXR0b24tZm9udC13ZWlnaHQ7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vLy8gRXhwYW5kcyBhIGJ1dHRvbiB0byBtYWtlIGl0IGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFt0cnVlXSAtIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHRoZSBleHBhbmQgYmVoYXZpb3IuIFNldCB0byBgZmFsc2VgIHRvIHJldmVyc2UgdGhpcyBiZWhhdmlvci5cbkBtaXhpbiBidXR0b24tZXhwYW5kKCRleHBhbmQ6IHRydWUpIHtcbiAgQGlmICRleHBhbmQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGJhc2Ugc3R5bGVzIG9mIGEgaG9sbG93IG9yIGNsZWFyIGJ1dHRvbiBmaWxsaW5nIGFjY29yZGluZyB0byBgJGZpbGxgLlxuLy8vIFNlZSBtaXhpbiBgYnV0dG9uLWZpbGwtc3R5bGVgIGZvciB0aGUgZmlsbGluZyBzdHlsZXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZmlsbCBbJGJ1dHRvbi1maWxsXSAtIFR5cGUgb2YgZmlsbGluZyBiZXR3ZWVuIGBob2xsb3dgIGFuZCBgY2xlYXJgLiBgc29saWRgIGhhcyBubyBlZmZlY3RzLlxuQG1peGluIGJ1dHRvbi1maWxsKFxuICAkZmlsbDogJGJ1dHRvbi1maWxsXG4pIHtcbiAgQGlmICRmaWxsID09IGhvbGxvdyB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcbiAgfVxuICBAZWxzZSBpZiAkZmlsbCA9PSBjbGVhciB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWNsZWFyO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGVzIG9mIGEgc29saWQvaG9sbG93L2NsZWFyIGJ1dHRvbiBmaWxsaW5nIGFjY29yZGluZyB0byBgJGZpbGxgLlxuLy8vIFNlZSBtaXhpbnMgYGJ1dHRvbi1zdHlsZWAsIGBidXR0b24taG9sbG93LXN0eWxlYCBhbmQgYGJ1dHRvbi1jbGVhci1zdHlsZWAgZm9yIGVmZmVjdHMgb2YgdmlzdWFsIHN0eWxpbmcgcGFyYW1ldGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRmaWxsIFskYnV0dG9uLWZpbGxdIC0gVHlwZSBvZiBmaWxsaW5nIGJldHdlZW4gYGhvbGxvd2AgYW5kIGBjbGVhcmAuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSAtXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSAtXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIC1cbkBtaXhpbiBidXR0b24tZmlsbC1zdHlsZShcbiAgJGZpbGw6ICRidXR0b24tZmlsbCxcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yXG4pIHtcbiAgQGlmICRmaWxsID09IHNvbGlkIHtcbiAgICBAaW5jbHVkZSBidXR0b24tc3R5bGUoJGJhY2tncm91bmQsICRiYWNrZ3JvdW5kLWhvdmVyLCAkY29sb3IpO1xuICB9XG4gIEBlbHNlIGlmICRmaWxsID09IGhvbGxvdyB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkYmFja2dyb3VuZCk7XG4gIH1cbiAgQGVsc2UgaWYgJGZpbGwgPT0gY2xlYXIge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1jbGVhci1zdHlsZSgkYmFja2dyb3VuZCk7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gYnV0dG9uLXN0eWxlKFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzc1xuKSB7XG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XG4gICAgJGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGJ1dHRvbi1jb2xvciwgJGJ1dHRvbi1jb2xvci1hbHQpKTtcbiAgfVxuXG4gIEBpZiAkYmFja2dyb3VuZC1ob3ZlciA9PSBhdXRvIHtcbiAgICAkYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJhY2tncm91bmQsICRsaWdodG5lc3M6ICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzcyk7XG4gIH1cblxuICAvLyBEZWZhdWx0IGFuZCBkaXNhYmxlZCBzdGF0ZXNcbiAgJixcbiAgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0sXG4gICYuZGlzYWJsZWQ6aG92ZXIsICZbZGlzYWJsZWRdOmhvdmVyLFxuICAmLmRpc2FibGVkOmZvY3VzLCAmW2Rpc2FibGVkXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGJhc2Ugc3R5bGVzIG9mIGEgaG9sbG93IGJ1dHRvbi5cbi8vLyBTZWUgbWl4aW4gYGJ1dHRvbi1ob2xsb3ctc3R5bGVgIGZvciB0aGUgZmlsbGluZyBzdHlsZXMuXG5AbWl4aW4gYnV0dG9uLWhvbGxvdyB7XG4gICYsICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcbiAgICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlIG9mIGEgaG9sbG93IGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tYmFja2dyb3VuZF0gLSBUZXh0IGFuZCBib3JkZXIgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkaG92ZXItbGlnaHRuZXNzIFskYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3NdIC0gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRib3JkZXItd2lkdGggWyRidXR0b24taG9sbG93LWJvcmRlci13aWR0aF0gLSBCb3JkZXIgd2lkdGggb2YgdGhlIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24taG9sbG93LXN0eWxlKFxuICAkY29sb3I6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzLFxuICAkYm9yZGVyLXdpZHRoOiAkYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhcbikge1xuICAkY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGhvdmVyLWxpZ2h0bmVzcyk7XG5cbiAgLy8gRGVmYXVsdCBhbmQgZGlzYWJsZWQgc3RhdGVzXG4gICYsXG4gICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdLFxuICAmLmRpc2FibGVkOmhvdmVyLCAmW2Rpc2FibGVkXTpob3ZlcixcbiAgJi5kaXNhYmxlZDpmb2N1cywgJltkaXNhYmxlZF06Zm9jdXMge1xuICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGJhc2Ugc3R5bGVzIG9mIGEgY2xlYXIgYnV0dG9uLlxuLy8vIFNlZSBtaXhpbiBgYnV0dG9uLWNsZWFyLXN0eWxlYCBmb3IgdGhlIGZpbGxpbmcgc3R5bGVzLlxuQG1peGluIGJ1dHRvbi1jbGVhciB7XG4gICYsICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcbiAgICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGNsZWFyIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tYmFja2dyb3VuZF0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGhvdmVyLWxpZ2h0bmVzcyBbJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzXSAtIENvbG9yIGxpZ2h0bmVzcyBvbiBob3Zlci5cbkBtaXhpbiBidXR0b24tY2xlYXItc3R5bGUoXG4gICRjb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkaG92ZXItbGlnaHRuZXNzOiAkYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3Ncbikge1xuICAkY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGhvdmVyLWxpZ2h0bmVzcyk7XG5cbiAgLy8gRGVmYXVsdCBhbmQgZGlzYWJsZWQgc3RhdGVzXG4gICYsXG4gICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdLFxuICAmLmRpc2FibGVkOmhvdmVyLCAmW2Rpc2FibGVkXTpob3ZlcixcbiAgJi5kaXNhYmxlZDpmb2N1cywgJltkaXNhYmxlZF06Zm9jdXMge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIGRpc2FibGVkIHN0eWxlcyB0byBhIGJ1dHRvbiBieSBmYWRpbmcgdGhlIGVsZW1lbnQgYW5kIHJlc2V0aW5nIHRoZSBjdXJzb3IuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvcGFjaXR5IFskYnV0dG9uLW9wYWNpdHktZGlzYWJsZWRdIC0gT3BhY2l0eSBvZiB0aGUgZGlzYWJsZWQgYnV0dG9uLlxuQG1peGluIGJ1dHRvbi1kaXNhYmxlZChcbiAgJG9wYWNpdHk6ICRidXR0b24tb3BhY2l0eS1kaXNhYmxlZFxuKSB7XG4gIG9wYWNpdHk6ICRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLy8vIEFkZHMgYSBkcm9wZG93biBhcnJvdyB0byBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgWzAuNGVtXSAtIFNpemUgb2YgdGhlIGFycm93LiBXZSByZWNvbW1lbmQgdXNpbmcgYW4gYGVtYCB2YWx1ZSBzbyB0aGUgdHJpYW5nbGUgc2NhbGVzIHdoZW4gdXNlZCBpbnNpZGUgZGlmZmVyZW50IHNpemVzIG9mIGJ1dHRvbnMuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFt3aGl0ZV0gLSBDb2xvciBvZiB0aGUgYXJyb3cuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvZmZzZXQgWyRidXR0b24tcGFkZGluZ10gLSBEaXN0YW5jZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbi4gRGVmYXVsdHMgdG8gd2hhdGV2ZXIgdGhlIHJpZ2h0IHBhZGRpbmcgb2YgYSBidXR0b24gaXMuXG5AbWl4aW4gYnV0dG9uLWRyb3Bkb3duKFxuICAkc2l6ZTogMC40ZW0sXG4gICRjb2xvcjogJHdoaXRlLFxuICAkb2Zmc2V0OiBnZXQtc2lkZSgkYnV0dG9uLXBhZGRpbmcsIHJpZ2h0KVxuKSB7XG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHNpemUsICRjb2xvciwgZG93bik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMC40ZW07IC8vIEFsaWducyB0aGUgYXJyb3cgd2l0aCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uXG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZmxvYXQ6ICN7JGdsb2JhbC1yaWdodH07XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJG9mZnNldDtcbiAgfVxufVxuXG4vLy8gQWRkcyBhbGwgc3R5bGVzIGZvciBhIGJ1dHRvbi4gRm9yIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHN0eWxlcywgdXNlIHRoZSBpbmRpdmlkdWFsIGJ1dHRvbiBtaXhpbnMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFtmYWxzZV0gLSBTZXQgdG8gYHRydWVgIHRvIG1ha2UgdGhlIGJ1dHRvbiBmdWxsLXdpZHRoLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uIG9uIGhvdmVyLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBob3ZlciBjb2xvci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHlsZSBbc29saWRdIC0gU2V0IHRvIGBob2xsb3dgIHRvIGNyZWF0ZSBhIGhvbGxvdyBidXR0b24uIFRoZSBjb2xvciBkZWZpbmVkIGluIGAkYmFja2dyb3VuZGAgd2lsbCBiZSB1c2VkIGFzIHRoZSBwcmltYXJ5IGNvbG9yIG9mIHRoZSBidXR0b24uXG5AbWl4aW4gYnV0dG9uKFxuICAkZXhwYW5kOiBmYWxzZSxcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxuICAkc3R5bGU6ICRidXR0b24tZmlsbFxuKSB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1iYXNlO1xuICBAaW5jbHVkZSBidXR0b24tZmlsbCgkc3R5bGUpO1xuICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkc3R5bGUsICRiYWNrZ3JvdW5kLCAkYmFja2dyb3VuZC1ob3ZlciwgJGNvbG9yKTtcblxuICBAaWYgJGV4cGFuZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24ge1xuICAuYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBidXR0b24oJHN0eWxlOiBub25lKTtcblxuICAgIC8vIFNpemVzXG4gICAgQGVhY2ggJHNpemUsICR2YWx1ZSBpbiBtYXAtcmVtb3ZlKCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpIHtcbiAgICAgICYuI3skc2l6ZX0ge1xuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmV4cGFuZGVkIHsgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDsgfVxuXG4gICAgQGlmICRidXR0b24tcmVzcG9uc2l2ZS1leHBhbmRlZCB7XG4gICAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgjeyRzaXplfSBvbmx5KSB7XG4gICAgICAgICAgJi4jeyRzaXplfS1vbmx5LWV4cGFuZGVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgjeyRzaXplfSBkb3duKSB7XG4gICAgICAgICAgICAmLiN7JHNpemV9LWRvd24tZXhwYW5kZWQge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoI3skc2l6ZX0pIHtcbiAgICAgICAgICAgICYuI3skc2l6ZX0tZXhwYW5kZWQge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNvbGlkLCBob2xsb3cgJiBjbGVhciBzdHlsZXNcbiAgICBAZWFjaCAkZmlsbGluZyBpbiAoc29saWQgaG9sbG93IGNsZWFyKSB7XG4gICAgICAkc2VsZWN0b3I6IGlmKCRidXR0b24tZmlsbCA9PSAkZmlsbGluZywgbnVsbCwgJy4jeyRmaWxsaW5nfScpO1xuXG4gICAgICAmI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwoJGZpbGxpbmcpO1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkZmlsbGluZyk7XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcsICRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgICAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gYXJyb3dcbiAgICAmLmRyb3Bkb3duIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kcm9wZG93bjtcblxuICAgICAgQGlmICRidXR0b24tZmlsbCA9PSBob2xsb3cge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuaG9sbG93LCAmLmNsZWFyIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1dHRvbiB3aXRoIGRyb3Bkb3duIGFycm93IG9ubHlcbiAgICAmLmFycm93LW9ubHk6OmFmdGVyIHtcbiAgICAgIHRvcDogLTAuMWVtO1xuICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIH1cbiAgfVxuXG4gIGEuYnV0dG9uIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b24tZ3JvdXBcbi8vLy9cblxuLy8vIE1hcmdpbiBmb3IgYnV0dG9uIGdyb3Vwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3I6ICcuYnV0dG9uJyAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gbnVtYmVyIG9mIGJ1dHRvbnMgdGhhdCBjYW4gYmUgaW4gYW4gZXZlbi13aWR0aCBidXR0b24gZ3JvdXAuIChPbmx5IG5lZWRlZCB3aGVuICRnbG9iYWwtZmxleGJveDogZmFsc2U7KVxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDYgIWRlZmF1bHQ7XG5cbi8vLyBEZXRlcm1pbmVzIGlmICRidXR0b24tcmFkaXVzIGlzIGFwcGxpZWQgdG8gZWFjaCBidXR0b24gb3IgdGhlIGJ1dHRvbiBncm91cCBhcyBhIHdob2xlLiBVc2UgJGdsb2JhbC1yYWRpdXMgaW4gX3NldHRpbmdzLnNjc3MgdG8gY2hhbmdlIHJhZGl1cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBBZGQgc3R5bGVzIGZvciBhIGJ1dHRvbiBncm91cCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjaGlsZC1zZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjaW5nIFskYnV0dG9uZ3JvdXAtc3BhY2luZ10gLSBTcGFjaW5nIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAoXG4gICRjaGlsZC1zZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxuICAkc3BhY2luZzogJGJ1dHRvbmdyb3VwLXNwYWNpbmdcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLWJvdHRvbTogJGJ1dHRvbmdyb3VwLW1hcmdpbjtcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgLy8gRGlzYWJsZSBjbGVhcmZpeFxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zaXplOiAwO1xuICB9XG5cbiAgI3skY2hpbGQtc2VsZWN0b3J9IHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgIH1cblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBNYWtlIGJ1dHRvbnMgYm9uZGVkIHdpdGhvdXQgZ2FwIGJldHdlZW4gdGhlbS4gQm9yZGVycyBiZXR3ZWVuIGJ1dHRvbnMgYXJlIG1lcmdlZFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC1uby1nYXBzKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcbiAgJGJvcmRlci13aWR0aDogJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoXG4pIHtcbiAgI3skc2VsZWN0b3J9IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogcmVtLWNhbGMoLSRib3JkZXItd2lkdGgpO1xuXG4gICAgKyAjeyRzZWxlY3Rvcn0ge1xuICAgICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC13aWR0aCBidXR0b24gZ3JvdXAsIG1ha2luZyBlYWNoIGJ1dHRvbiBlcXVhbCB3aWR0aC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC1leHBhbmQoXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxuICAkc3BhY2luZzogJGJ1dHRvbmdyb3VwLXNwYWNpbmcsXG4gICRjb3VudDogbnVsbFxuKSB7XG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogLSRzcGFjaW5nO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIERpc2FibGUgY2xlYXJmaXhcbiAgICB9XG4gIH1cblxuICAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gT25lIGNoaWxkXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gI3skc3BhY2luZ30pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFR3byBvciBtb3JlIGNoaWxkcmVlblxuICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYnV0dG9uZ3JvdXAtZXhwYW5kLW1heCB7XG4gICAgICAgICY6Zmlyc3QtY2hpbGQ6bnRoLWxhc3QtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgICAmLCAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygje3BlcmNlbnRhZ2UoMSAvICRpKX0gLSAjeyRzcGFjaW5nfSk7XG4gICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmc7XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZyAqIC0kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIFN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC1zdGFjayhcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3Jcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gIH1cblxuICAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBVbi1zdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgdGhlIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtdW5zdGFjayhcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3Jcbikge1xuICAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgQGlmIG5vdCAkYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2gge1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cCB7XG4gIC5idXR0b24tZ3JvdXAge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cDtcblxuICAgIC8vIFNpemVzXG4gICAgQGVhY2ggJHNpemUsICR2YWx1ZSBpbiBtYXAtcmVtb3ZlKCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpIHtcbiAgICAgICYuI3skc2l6ZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgZm9udC1zaXplOiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aCBHcm91cFxuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLWV4cGFuZDtcbiAgICB9XG5cbiAgICAvLyBTb2xpZCwgaG9sbG93ICYgY2xlYXIgc3R5bGVzXG4gICAgQGVhY2ggJGZpbGxpbmcgaW4gKHNvbGlkIGhvbGxvdyBjbGVhcikge1xuICAgICAgJGJhc2Utc2VsZWN0b3I6IGlmKCRidXR0b24tZmlsbCA9PSAkZmlsbGluZywgbnVsbCwgJy4jeyRmaWxsaW5nfScpO1xuXG4gICAgICAmI3skYmFzZS1zZWxlY3Rvcn0ge1xuICAgICAgICAvLyBEbyBub3QgZ2VuZXJhdGUgYnV0dG9uIGJhc2Ugc3R5bGVzIGZvciB0aGUgZGVmYXVsdCBmaWxsaW5nXG4gICAgICAgIEBpZigkYnV0dG9uLWZpbGwgIT0gJGZpbGxpbmcpIHtcbiAgICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwoJGZpbGxpbmcpO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgICAgICAkaW5kaXZpZHVhbC1zZWxlY3RvcjogaWYoJGJ1dHRvbi1maWxsID09ICRmaWxsaW5nLCBudWxsLCAnICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfS4jeyRuYW1lfScpO1xuXG4gICAgICAgICAgJi4jeyRuYW1lfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0sICN7JGluZGl2aWR1YWwtc2VsZWN0b3J9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsLXN0eWxlKCRmaWxsaW5nLCAkY29sb3IsIGF1dG8sIGF1dG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgJi5uby1nYXBzIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1uby1nYXBzO1xuICAgIH1cblxuICAgICYuc3RhY2tlZCxcbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLFxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1zdGFjaztcblxuICAgICAgJi5leHBhbmRlZCB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1leHBhbmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtdW5zdGFjaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC11bnN0YWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bS5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjbG9zZS1idXR0b25cbi8vLy9cblxuLy8vIERlZmF1bHQgcG9zaXRpb24gb2YgdGhlIGNsb3NlIGJ1dHRvbi4gVGhlIGZpcnN0IHZhbHVlIHNob3VsZCBiZSBgcmlnaHRgIG9yIGBsZWZ0YCwgYW5kIHRoZSBzZWNvbmQgdmFsdWUgc2hvdWxkIGJlIGB0b3BgIG9yIGBib3R0b21gLlxuLy8vIEB0eXBlIExpc3RcbiRjbG9zZWJ1dHRvbi1wb3NpdGlvbjogcmlnaHQgdG9wICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB6LWluZGV4IGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi16LWluZGV4OiAxMCAhZGVmYXVsdDtcblxuLy8vIEJ1dHRvbiBzaXplIHRvIHVzZSBhcyBkZWZhdWx0XG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQHNlZSAkY2xvc2VidXR0b24tc2l6ZVxuLy8vIEBzZWUgJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsXG4vLy8gQHNlZSAkY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsXG4kY2xvc2VidXR0b24tZGVmYXVsdC1zaXplOiBtZWRpdW0gIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCAob3IgbGVmdCkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IChcbiAgc21hbGw6IDAuNjZyZW0sXG4gIG1lZGl1bTogMXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUb3AgKG9yIGJvdHRvbSkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAoXG4gIHNtYWxsOiAwLjMzZW0sXG4gIG1lZGl1bTogMC41cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIFNpemUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gVXNlZCB0byBnZW5lcmF0ZSBzaXppbmcgbW9kaWZpZXJzLlxuLy8vIEB0eXBlIE51bWJlcnxNYXBcbiRjbG9zZWJ1dHRvbi1zaXplOiAoXG4gIHNtYWxsOiAxLjVlbSxcbiAgbWVkaXVtOiAyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBjbG9zZSBidXR0b24uIEl0IGFmZmVjdHMgdGhlIHNwYWNpbmcgb2YgdGhlIGVsZW1lbnQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBDb2xvclxuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uIHdoZW4gYmVpbmcgaG92ZXJlZCBvbi5cbi8vLyBAdHlwZSBDb2xvclxuJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyOiAkYmxhY2sgIWRlZmF1bHQ7XG5cblxuLy8vIEdldCB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gZm9yIGEgY2xvc2UgYnV0dG9uLiBJZiB0aGUgaW5wdXQgdmFsdWUgaXMgYSBudW1iZXIsIHRoZSBudW1iZXIgaXMgcmV0dXJuZWQuIElmIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIGNvbmZpZyBtYXAgYW5kIHRoZSBtYXAgaGFzIHRoZSBrZXkgYCRzaXplYCwgdGhlIHZhbHVlIGlzIHJldHVybmVkLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkdmFsdWUgLSBBIG51bWJlciBvciBtYXAgdGhhdCByZXByZXNlbnRzIHRoZSBzaXplIG9yIHBvc2l0aW9uIHZhbHVlKHMpIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBjbG9zZSBidXR0b24gdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSBUaGUgZ2l2ZW4gbnVtYmVyIG9yIHRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWFwLlxuQGZ1bmN0aW9uIC16Zi1nZXQtc2l6ZS12YWwoJHZhbHVlLCAkc2l6ZSkge1xuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgLy8gSWYgaXQgaXMsIGp1c3QgcmV0dXJuIHRoZSBudW1iZXJcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBzaXplIG5hbWUgZXhpc3RzIGluIHRoZSB2YWx1ZSBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJHZhbHVlLCAkc2l6ZSkge1xuICAgIC8vIElmIGl0IGRvZXMsIHJldHVybiB0aGUgdmFsdWVcbiAgICBAcmV0dXJuIG1hcC1nZXQoJHZhbHVlLCAkc2l6ZSk7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHNpemUgYW5kIHBvc2l0aW9uIG9mIGEgY2xvc2UgYnV0dG9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgW21lZGl1bV0gLSBUaGUgc2l6ZSB0byB1c2UuIFNldCB0byBgc21hbGxgIHRvIGNyZWF0ZSBhIHNtYWxsIGNsb3NlIGJ1dHRvbi4gVGhlICdtZWRpdW0nIHZhbHVlcyBkZWZpbmVkIGluIGAkY2xvc2VidXR0b24tKmAgdmFyaWFibGVzIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBzaXplIGFuZCBwb3NpdGlvbiBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuQG1peGluIGNsb3NlLWJ1dHRvbi1zaXplKCRzaXplKSB7XG4gICR4OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAxKTtcbiAgJHk6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDIpO1xuXG4gICN7JHh9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbCwgJHNpemUpO1xuICAjeyR5fTogLXpmLWdldC1zaXplLXZhbCgkY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsLCAkc2l6ZSk7XG4gIGZvbnQtc2l6ZTogLXpmLWdldC1zaXplLXZhbCgkY2xvc2VidXR0b24tc2l6ZSwgJHNpemUpO1xuICBsaW5lLWhlaWdodDogLXpmLWdldC1zaXplLXZhbCgkY2xvc2VidXR0b24tbGluZWhlaWdodCwgJHNpemUpO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2xvc2UgYnV0dG9uLCB1c2luZyB0aGUgc3R5bGVzIGluIHRoZSBzZXR0aW5ncyB2YXJpYWJsZXMuXG5AbWl4aW4gY2xvc2UtYnV0dG9uIHtcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XG5cbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6ICRjbG9zZWJ1dHRvbi16LWluZGV4O1xuICBjb2xvcjogJGNsb3NlYnV0dG9uLWNvbG9yO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1jbG9zZS1idXR0b24ge1xuICAuY2xvc2UtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBjbG9zZS1idXR0b247XG5cbiAgICAvLyBHZW5lcmF0ZSBhIHBsYWNlaG9sZGVyIGFuZCBhIGNsYXNzIGZvciBlYWNoIHNpemVcbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJGNsb3NlYnV0dG9uLXNpemUge1xuICAgICAgQGF0LXJvb3Qge1xuICAgICAgICAlemYtY2xvc2UtYnV0dG9uLS0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uLXNpemUoJG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBAZXh0ZW5kICV6Zi1jbG9zZS1idXR0b24tLSN7JG5hbWV9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVzZSBieSBkZWZhdWx0IHRoZSBwbGFjZWhvbGRlciBvZiB0aGUgZGVmYXVsdCBzaXplXG4gICAgQGV4dGVuZCAlemYtY2xvc2UtYnV0dG9uLS0jeyRjbG9zZWJ1dHRvbi1kZWZhdWx0LXNpemV9O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbGFiZWxcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRsYWJlbC1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYmFzZSBzdHlsZXMgZm9yIGEgbGFiZWwuXG5AbWl4aW4gbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6ICRsYWJlbC1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6ICRsYWJlbC1yYWRpdXM7XG5cbiAgZm9udC1zaXplOiAkbGFiZWwtZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1sYWJlbCB7XG4gIC5sYWJlbCB7XG4gICAgQGluY2x1ZGUgbGFiZWw7XG5cbiAgICBiYWNrZ3JvdW5kOiAkbGFiZWwtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkbGFiZWwtcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkY29sb3IsICgkbGFiZWwtY29sb3IsICRsYWJlbC1jb2xvci1hbHQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHByb2dyZXNzIGJhciBjb250YWluZXIuXG5AbWl4aW4gcHJvZ3Jlc3MtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xuICBtYXJnaW4tYm90dG9tOiAkcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLWJhY2tncm91bmQ7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIG1ldGVyIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuQG1peGluIHByb2dyZXNzLW1ldGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGV4dCBpbiB0aGUgcHJvZ3Jlc3MgbWV0ZXIuXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlcjtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogJHdoaXRlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyIHtcbiAgLy8gUHJvZ3Jlc3MgYmFyXG4gIC5wcm9ncmVzcyB7XG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtY29udGFpbmVyO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAucHJvZ3Jlc3MtbWV0ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElubmVyIG1ldGVyXG4gIC5wcm9ncmVzcy1tZXRlciB7XG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtbWV0ZXI7XG4gIH1cblxuICAvLyBJbm5lciBtZXRlciB0ZXh0XG4gIC5wcm9ncmVzcy1tZXRlci10ZXh0IHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1tZXRlci10ZXh0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vIFtUT0RPXSBDaGVjayBob3cgcGx1Z2luIGNvbmZpcm1zIGRpc2FibGVkIG9yIHZlcnRpY2FsIHN0YXR1c1xuLy8gW1RPRE9dIENoZWNrIGlmIHRyYW5zaXRpb246IGFsbDsgaXMgbmVjZXNzYXJ5XG5cbi8vLy9cbi8vLyBAZ3JvdXAgc2xpZGVyXG4vLy8vXG5cbi8vLyBEZWZhdWx0IHNsaWRlciB3aWR0aCBvZiBhIHZlcnRpY2FsIHNsaWRlci4gKERvZXNuJ3QgYXBwbHkgdG8gdGhlIG5hdGl2ZSBzbGlkZXIuKVxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci13aWR0aC12ZXJ0aWNhbDogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gVHJhbnNpdGlvbiBwcm9wZXJ0aWVzIHRvIGFwcGx5IHRvIHRoZSBzbGlkZXIgaGFuZGxlIGFuZCBmaWxsLiAoRG9lc24ndCBhcHBseSB0byB0aGUgbmF0aXZlIHNsaWRlci4pXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJHNsaWRlci10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciBzbGlkZXJzLlxuQG1peGluIHNsaWRlci1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG4gIG1hcmdpbi10b3A6IDEuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDIuMjVyZW07XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB0b3VjaC1hY3Rpb246IG5vbmU7XG59XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgYWN0aXZlIGZpbGwgZm9yIHNsaWRlcnMuXG5AbWl4aW4gc2xpZGVyLWZpbGwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWZpbGwtYmFja2dyb3VuZDtcbiAgdHJhbnNpdGlvbjogJHNsaWRlci10cmFuc2l0aW9uO1xuXG4gICYuaXMtZHJhZ2dpbmcge1xuICAgIHRyYW5zaXRpb246IGFsbCAwcyBsaW5lYXI7XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciB0aGUgc2xpZGVyIGhhbmRsZXMuXG5AbWl4aW4gc2xpZGVyLWhhbmRsZSB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcblxuICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcbiAgdHJhbnNpdGlvbjogJHNsaWRlci10cmFuc2l0aW9uO1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzY2FsZS1jb2xvcigkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgfVxuXG4gICYuaXMtZHJhZ2dpbmcge1xuICAgIHRyYW5zaXRpb246IGFsbCAwcyBsaW5lYXI7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlci1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuQG1peGluIHNsaWRlci12ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6ICRzbGlkZXItd2lkdGgtdmVydGljYWw7XG4gIGhlaWdodDogMTIuNXJlbTtcbiAgbWFyZ2luOiAwIDEuMjVyZW07XG4gIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpO1xuXG4gIC5zbGlkZXItZmlsbCB7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAuc2xpZGVyLWhhbmRsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zbGlkZXIge1xuICAvLyBDb250YWluZXJcbiAgLnNsaWRlciB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIEZpbGwgYXJlYVxuICAuc2xpZGVyLWZpbGwge1xuICAgIEBpbmNsdWRlIHNsaWRlci1maWxsO1xuICB9XG5cbiAgLy8gRHJhZ2dhYmxlIGhhbmRsZVxuICAuc2xpZGVyLWhhbmRsZSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWhhbmRsZTtcbiAgfVxuXG4gIC8vIERpc2FibGVkIHN0YXRlXG4gIC5zbGlkZXIuZGlzYWJsZWQsXG4gIC5zbGlkZXJbZGlzYWJsZWRdIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBzbGlkZXJcbiAgLnNsaWRlci52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLXZlcnRpY2FsO1xuICB9XG5cbiAgLy8gUlRMIHN1cHBvcnRcbiAgQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsIHtcbiAgICAuc2xpZGVyOm5vdCgudmVydGljYWwpIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHN3aXRjaFxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGFjdGl2ZSBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2gsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnRpbnkgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAuc21hbGwgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5sYXJnZSBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIHRoZSBzd2l0Y2hcbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBzd2l0Y2ggY29udGFpbmVyIGFuZCBwYWRkbGUuXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gYm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoIHBhZGRsZVxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHN3aXRjaCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gT3BhY2l0eSBvZiBhIGRpc2FibGVkIHN3aXRjaC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtb3BhY2l0eS1kaXNhYmxlZDogLjUgIWRlZmF1bHQ7XG5cbi8vLyBDdXJzb3IgZm9yIGEgZGlzYWJsZWQgc3dpdGNoLlxuLy8vIEB0eXBlIEN1cnNvclxuJHN3aXRjaC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkICFkZWZhdWx0O1xuXG4vLyBtYWtlIHRoZW0gdmFyaWFibGVzXG4vLyBhc2sgYWJvdXQgYWNjZXNzaWJpbGl0eSBvbiBsYWJlbFxuLy8gY2hhbmdlIGNsYXNzIG5hbWUgZm9yIHRleHRcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBjb250YWluZXIgY2xhc3MuXG5AbWl4aW4gc3dpdGNoLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogJHN3aXRjaC1tYXJnaW47XG4gIG91dGxpbmU6IDA7XG5cbiAgLy8gVGhlc2UgcHJvcGVydGllcyBjYXNjYWRlIGRvd24gdG8gdGhlIHN3aXRjaCB0ZXh0XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcblxuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBpbnB1dC4gQXBwbHkgdGhpcyB0byBhbiBgPGlucHV0PmAgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC1pbnB1dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgb3BhY2l0eTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYmFja2dyb3VuZCBhbmQgcGFkZGxlIG9mIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIGEgYDxsYWJlbD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtcGFkZGxlIHtcbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHN3aXRjaC1wYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuXG4gIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcmFkaXVzO1xuICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb247XG5cbiAgLy8gUmVzZXR0aW5nIHRoZXNlIDxsYWJlbD4gcHJlc2V0cyBzbyB0eXBlIHN0eWxlcyBjYXNjYWRlIGRvd25cbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyBOZWVkZWQgdG8gb3ZlcnJpZGUgc3BlY2lmaWNpdHlcbiAgaW5wdXQgKyAmIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBUaGUgcGFkZGxlIGl0c2VsZlxuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgYm9yZGVyLXJhZGl1czogJHN3aXRjaC1wYWRkbGUtcmFkaXVzO1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ7XG4gICAgdHJhbnNpdGlvbjogJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjtcbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIENoYW5nZSB0aGUgdmlzdWFsIHN0eWxlIHdoZW4gdGhlIHN3aXRjaCBpcyBhY3RpdmVcbiAgaW5wdXQ6Y2hlY2tlZCB+ICYge1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06ICRwYWRkbGUtYWN0aXZlLW9mZmVzdDtcbiAgICB9XG4gIH1cblxuICAvLyBpbmRpY2F0ZSBhIGRpc2FibGVkIHN3aXRjaFxuICBpbnB1dDpkaXNhYmxlZCB+ICYge1xuICAgIGN1cnNvcjogJHN3aXRjaC1jdXJzb3ItZGlzYWJsZWQ7XG4gICAgb3BhY2l0eTogJHN3aXRjaC1vcGFjaXR5LWRpc2FibGVkO1xuICB9XG5cbiAgaW5wdXQ6Zm9jdXMgfiAmIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIH1cbn1cblxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIGFjdGl2ZS9pbmFjdGl2ZSB0ZXh0IGluc2lkZSBhIHN3aXRjaC4gQXBwbHkgdGhpcyB0byB0ZXh0IGVsZW1lbnRzIGluc2lkZSB0aGUgc3dpdGNoIGA8bGFiZWw+YC5cbkBtaXhpbiBzd2l0Y2gtdGV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYWN0aXZlIHN0YXRlIHRleHQgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC10ZXh0LWFjdGl2ZSB7XG4gICN7JGdsb2JhbC1sZWZ0fTogOCU7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgaW5wdXQ6Y2hlY2tlZCArIGxhYmVsID4gJiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5hY3RpdmUgc3RhdGUgdGV4dCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXRleHQtaW5hY3RpdmUge1xuICAjeyRnbG9iYWwtcmlnaHR9OiAxNSU7XG5cbiAgaW5wdXQ6Y2hlY2tlZCArIGxhYmVsID4gJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLy8gQ2hhbmdlcyB0aGUgc2l6ZSBvZiBhIHN3aXRjaCBieSBtb2RpZnlpbmcgdGhlIHNpemUgb2YgdGhlIGJvZHkgYW5kIHBhZGRsZS4gQXBwbHkgdGhpcyB0byBhIHN3aXRjaCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmb250LXNpemUgWzFyZW1dIC0gRm9udCBzaXplIG9mIGxhYmVsIHRleHQgd2l0aGluIHRoZSBzd2l0Y2guXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzd2l0Y2gtaGVpZ2h0IFsycmVtXSAtIEhlaWdodCBvZiB0aGUgc3dpdGNoIGJvZHkuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkbGUtb2Zmc2V0IFswLjI1cmVtXSAtIFNwYWNpbmcgYmV0d2VlbiB0aGUgc3dpdGNoIHBhZGRsZSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIHN3aXRjaCBib2R5LlxuQG1peGluIHN3aXRjaC1zaXplKFxuICAkZm9udC1zaXplOiAxcmVtLFxuICAkc3dpdGNoLWhlaWdodDogMnJlbSxcbiAgJHBhZGRsZS1vZmZzZXQ6IDAuMjVyZW1cbikge1xuXG4gICRzd2l0Y2gtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0ICogMjtcbiAgJHBhZGRsZS13aWR0aDogJHN3aXRjaC1oZWlnaHQgLSAoJHBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1oZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRwYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtYWN0aXZlLW9mZmVzdDogJHN3aXRjaC13aWR0aCAtICRwYWRkbGUtd2lkdGggLSAkcGFkZGxlLW9mZnNldDtcblxuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuXG4gIC5zd2l0Y2gtcGFkZGxlIHtcbiAgICB3aWR0aDogJHN3aXRjaC13aWR0aDtcbiAgICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5zd2l0Y2gtcGFkZGxlOjphZnRlciB7XG4gICAgdG9wOiAkcGFkZGxlLW9mZnNldDtcbiAgICAjeyRnbG9iYWwtbGVmdH06ICRwYWRkbGUtb2Zmc2V0O1xuICAgIHdpZHRoOiAkcGFkZGxlLXdpZHRoO1xuICAgIGhlaWdodDogJHBhZGRsZS1oZWlnaHQ7XG4gIH1cblxuICBpbnB1dDpjaGVja2VkIH4gLnN3aXRjaC1wYWRkbGU6OmFmdGVyIHtcbiAgICAjeyRnbG9iYWwtbGVmdH06ICRwYWRkbGUtYWN0aXZlLW9mZmVzdDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zd2l0Y2gge1xuICAvLyBDb250YWluZXIgY2xhc3NcbiAgLnN3aXRjaCB7XG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtY29udGFpbmVyO1xuICB9XG5cbiAgLy8gPGlucHV0PiBlbGVtZW50XG4gIC5zd2l0Y2gtaW5wdXQge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1pbnB1dDtcbiAgfVxuXG4gIC8vIDxsYWJlbD4gZWxlbWVudFxuICAuc3dpdGNoLXBhZGRsZSB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXBhZGRsZTtcbiAgfVxuXG4gIC8vIEJhc2UgbGFiZWwgdGV4dCBzdHlsZXNcbiAgJXN3aXRjaC10ZXh0IHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dDtcbiAgfVxuXG4gIC8vIEFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAuc3dpdGNoLWFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlc3dpdGNoLXRleHQ7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQtYWN0aXZlO1xuICB9XG5cbiAgLy8gSW5hY3RpdmUgbGFiZWwgdGV4dCBzdHlsZXNcbiAgLnN3aXRjaC1pbmFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlc3dpdGNoLXRleHQ7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQtaW5hY3RpdmU7XG4gIH1cblxuICAvLyBTd2l0Y2ggc2l6ZXNcbiAgLnN3aXRjaC50aW55IHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxMCksICRzd2l0Y2gtaGVpZ2h0LXRpbnksICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cblxuICAuc3dpdGNoLnNtYWxsIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxMiksICRzd2l0Y2gtaGVpZ2h0LXNtYWxsLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG5cbiAgLnN3aXRjaC5sYXJnZSB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTYpLCAkc3dpdGNoLWhlaWdodC1sYXJnZSwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFibGVcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIHRhYmxlIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSBzdHJpcGVkIHRhYmxlIHJvd3MgYW5kIHRoZSB0YWJsZSBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtY29sb3Itc2NhbGU6IDUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzdHlsZSBmb3IgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFibGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHNjYWxlIGZvciBkYXJrZW5pbmcgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtaG92ZXItc2NhbGU6IDIlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBzdGFuZGFyZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RyaXBlZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIHRhYmxlcyBhcmUgc3RyaXBlZCBieSBkZWZhdWx0IGFuZCBhbiAudW5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuIElmIGBmYWxzZWAsIGEgLnN0cmlwZWQgY2xhc3MgaXMgY3JlYXRlZC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3Igc3RyaXBlZCByb3dzLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIHN0cmlwZSBvbiByb3dzIG9mIHRoZSB0YWJsZXMsIGV4Y2x1ZGluZyB0aGUgaGVhZGVyIGFuZCBmb290ZXIuIElmIGV2ZW4sIHRoZSBldmVuIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgb2RkLCB0aGUgb2RkIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgZW1wdHksIG9yIGFueSBvdGhlciB2YWx1ZSwgdGhlIHRhYmxlIHJvd3Mgd2lsbCBoYXZlIG5vIHN0cmlwaW5nLlxuLy8vIEB0eXBlIEtleXdvcmRcbiR0YWJsZS1zdHJpcGU6IGV2ZW4gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWFkZXIgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWhlYWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSAvIDIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBoZWFkZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgZm9vdGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBmb290ZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBoZWFkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvb3Rlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIGhlYWRlciB3aGVuIHVzaW5nIHN0YWNrZWQgdGFibGVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHN0YWNrZWQgdGFibGUgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0YWJsZS1zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUpIHtcbiAgdHIge1xuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gZXZlbiwgZGFya2VuIHRoZSBldmVuIHJvd3MuXG4gICAgQGlmICRzdHJpcGUgPT0gZXZlbiB7XG4gICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBvZGQsIGRhcmtlbiB0aGUgb2RkIHJvd3MuXG4gICAgQGVsc2UgaWYgJHN0cmlwZSA9PSBvZGQge1xuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtdW5zdHJpcGUoKSB7XG4gIHRyIHtcbiAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIGJvcmRlci1ib3R0b206ICR0YWJsZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZTogJHRhYmxlLXN0cmlwZSwgJGlzLXN0cmlwZWQ6ICR0YWJsZS1pcy1zdHJpcGVkKSB7XG4gIHRoZWFkLFxuICB0Ym9keSxcbiAgdGZvb3Qge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgfVxuXG4gIC8vIENhcHRpb25cbiAgY2FwdGlvbiB7XG4gICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gIH1cblxuICAvLyBUYWJsZSBoZWFkXG4gIHRoZWFkIHtcbiAgICBiYWNrZ3JvdW5kOiAkdGFibGUtaGVhZC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGFibGUtaGVhZC1mb250LWNvbG9yO1xuICB9XG5cbiAgLy8gVGFibGUgZm9vdFxuICB0Zm9vdCB7XG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWZvb3QtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRhYmxlLWZvb3QtZm9udC1jb2xvcjtcbiAgfVxuXG4gIC8vIFRhYmxlIGhlYWQgYW5kIGZvb3RcbiAgdGhlYWQsXG4gIHRmb290IHtcbiAgICAvLyBSb3dzIHdpdGhpbiBoZWFkIGFuZCBmb290XG4gICAgdHIge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLy8gQ2VsbHMgd2l0aGluIGhlYWQgYW5kIGZvb3RcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgICAgdGV4dC1hbGlnbjogI3skZ2xvYmFsLWxlZnR9O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRhYmxlIHJvd3NcbiAgdGJvZHkge1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRhYmxlcyBhcmUgc3RyaXBlZFxuICBAaWYgJGlzLXN0cmlwZWQgPT0gdHJ1ZSB7XG4gICAgdGJvZHkge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcbiAgICB9XG5cbiAgICAmLnVuc3RyaXBlZCB7XG4gICAgICB0Ym9keSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS11bnN0cmlwZSgpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiB0YWJsZXMgYXJlIG5vdCBzdHJpcGVkXG4gIEBlbHNlIGlmICRpcy1zdHJpcGVkID09IGZhbHNlIHtcbiAgICB0Ym9keSB7XG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcbiAgICB9XG5cbiAgICAmLnN0cmlwZWQge1xuICAgICAgdGJvZHkge1xuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRhYmxlcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHJpcGUgWyR0YWJsZS1zdHJpcGVdIC0gVXNlcyBrZXl3b3JkcyBldmVuLCBvZGQsIG9yIG5vbmUgdG8gZGFya2VuIHJvd3Mgb2YgdGhlIHRhYmxlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBldmVuLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJG5lc3QgW2ZhbHNlXSAtIE5lZWRlZCBpZiB5b3Ugb25seSB3YW50IHRvIGFwcGx5IHRoaXMgdG8gYSBzcGVjaWZpYyB0YWJsZS5cbkBtaXhpbiB0YWJsZShcbiAgJHN0cmlwZTogJHRhYmxlLXN0cmlwZSxcbiAgJG5lc3Q6IGZhbHNlXG4pIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuICBAaWYgJG5lc3Qge1xuICAgIEBpbmNsdWRlIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBhdC1yb290IHtcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZSk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBhYmlsaXR5IHRvIGhvcml6b250YWxseSBzY3JvbGwgdGhlIHRhYmxlIHdoZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGhvcml6b250YWxseS5cbkBtaXhpbiB0YWJsZS1zY3JvbGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXg6IGF1dG87XG59XG5cbi8vLyBTbGlnaHRseSBkYXJrZW5zIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxuQG1peGluIHRhYmxlLWhvdmVyIHtcbiAgdGhlYWQgdHIge1xuICAgIC8vRGFya2VucyB0aGUgdGFibGUgaGVhZGVyIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaGVhZC1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgdGZvb3QgdHIge1xuICAgIC8vRGFya2VucyB0aGUgdGFibGUgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtZm9vdC1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgdGJvZHkgdHIge1xuICAgIC8vRGFya2VucyB0aGUgbm9uLXN0cmlwZWQgdGFibGUgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgQGlmICR0YWJsZS1pcy1zdHJpcGVkID09IHRydWUge1xuICAgIC8vIERhcmtlbnMgdGhlIGV2ZW4gc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAZWxzZSBpZigkdGFibGUtc3RyaXBlID09IG9kZCkge1xuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICR0YWJsZS1pcy1zdHJpcGVkID09IGZhbHNlIHtcbiAgICAvLyBEYXJrZW5zIHRoZSBldmVuIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAaWYoJHRhYmxlLXN0cmlwZSA9PSBldmVuKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXJrZW5zIHRoZSBvZGQgc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBlbHNlIGlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3RhY2tlZCB0YWJsZS4gVXNlZnVsIGZvciBzbWFsbC1zY3JlZW4gbGF5b3V0cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRoZWFkZXIgWyRzaG93LWhlYWRlci1mb3Itc3RhY2tlZF0gLSBTaG93IHRoZSBmaXJzdCB0aCBvZiBoZWFkZXIgd2hlbiBzdGFja2VkLlxuQG1peGluIHRhYmxlLXN0YWNrKCRoZWFkZXI6ICRzaG93LWhlYWRlci1mb3Itc3RhY2tlZCkge1xuICBAaWYgJGhlYWRlciB7XG4gICAgdGhlYWQge1xuICAgICAgdGgge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRoZWFkIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgdGZvb3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICB0cixcbiAgdGgsXG4gIHRkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIHRkIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRhYmxlKCRuZXN0OiBmYWxzZSkge1xuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgdGFibGUoJG5lc3Q6ICRuZXN0KTtcbiAgfVxuXG4gIHRhYmxlLnN0YWNrIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZS1zdGFjay1icmVha3BvaW50IGRvd24pIHtcbiAgICAgIEBpbmNsdWRlIHRhYmxlLXN0YWNrO1xuICAgIH1cbiAgfVxuXG4gIHRhYmxlLnNjcm9sbCB7XG4gICAgQGluY2x1ZGUgdGFibGUtc2Nyb2xsO1xuICB9XG5cbiAgdGFibGUuaG92ZXIge1xuICAgIEBpbmNsdWRlIHRhYmxlLWhvdmVyO1xuICB9XG5cbiAgLnRhYmxlLXNjcm9sbCB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuXG4kY29udHJhc3Qtd2FybmluZ3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIGNoZWNrIHRoZSBsdW1pbmFuY2Ugb2YuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxuQGZ1bmN0aW9uIGNvbG9yLWx1bWluYW5jZSgkY29sb3IpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmXG4gICRyZ2JhOiByZWQoJGNvbG9yKSwgZ3JlZW4oJGNvbG9yKSwgYmx1ZSgkY29sb3IpO1xuICAkcmdiYTI6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMyB7XG4gICAgJHJnYjogbnRoKCRyZ2JhLCAkaSk7XG4gICAgJHJnYjogJHJnYiAvIDI1NTtcblxuICAgICRyZ2I6IGlmKCRyZ2IgPCAwLjAzOTI4LCAkcmdiIC8gMTIuOTIsIHBvdygoJHJnYiArIDAuMDU1KSAvIDEuMDU1LCAyLjQpKTtcblxuICAgICRyZ2JhMjogYXBwZW5kKCRyZ2JhMiwgJHJnYik7XG4gIH1cblxuICBAcmV0dXJuIDAuMjEyNiAqIG50aCgkcmdiYTIsIDEpICsgMC43MTUyICogbnRoKCRyZ2JhMiwgMikgKyAwLjA3MjIgKiBudGgoJHJnYmEyLCAzKTtcbn1cblxuLy8vIENoZWNrcyB0aGUgY29udHJhc3QgcmF0aW8gb2YgdHdvIGNvbG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjEgLSBGaXJzdCBjb2xvciB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjIgLSBTZWNvbmQgY29sb3IgdG8gY29tcGFyZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBjb250cmFzdCByYXRpbyBvZiB0aGUgY29tcGFyZWQgY29sb3JzLlxuQGZ1bmN0aW9uIGNvbG9yLWNvbnRyYXN0KCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI2NvbnRyYXN0LXJhdGlvZGVmXG4gICRsdW1pbmFuY2UxOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMSkgKyAwLjA1O1xuICAkbHVtaW5hbmNlMjogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjIpICsgMC4wNTtcbiAgJHJhdGlvOiAkbHVtaW5hbmNlMSAvICRsdW1pbmFuY2UyO1xuXG4gIEBpZiAkbHVtaW5hbmNlMiA+ICRsdW1pbmFuY2UxIHtcbiAgICAkcmF0aW86IDEgLyAkcmF0aW87XG4gIH1cblxuICAkcmF0aW86IHJvdW5kKCRyYXRpbyAqIDEwKSAvIDEwO1xuXG4gIEByZXR1cm4gJHJhdGlvO1xufVxuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRiYXNlYCwgYW5kIHJldHVybnMgdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFzZSAtIENvbG9yIHRvIGNoZWNrIGx1bWluYW5jZS5cbi8vLyBAcGFyYW0ge0xpc3R9ICRjb2xvcnMgWygkd2hpdGUsICRibGFjayldIC0gQ29sb3JzIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b2xlcmFuY2UgWyRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2VdIC0gQ29udHJhc3QgdG9sZXJhbmNlLlxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cbkBmdW5jdGlvbiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYXNlLCAkY29sb3JzOiAoJHdoaXRlLCAkYmxhY2spLCAkdG9sZXJhbmNlOiAkZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlKSB7XG4gICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAxKSk7XG4gICRiZXN0OiBudGgoJGNvbG9ycywgMSk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGNvbG9ycykge1xuICAgICRjdXJyZW50LWNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XG4gICAgQGlmICgkY3VycmVudC1jb250cmFzdCAtICRjb250cmFzdCA+ICR0b2xlcmFuY2UpIHtcbiAgICAgICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgICAgJGJlc3Q6IG50aCgkY29sb3JzLCAkaSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkY29udHJhc3Qtd2FybmluZ3MgYW5kICRjb250cmFzdCA8IDMpIHtcbiAgICBAd2FybiBcIkNvbnRyYXN0IHJhdGlvIG9mICN7JGJlc3R9IG9uICN7JGJhc2V9IGlzIHByZXR0eSBiYWQsIGp1c3QgI3skY29udHJhc3R9XCI7XG4gIH1cblxuICBAcmV0dXJuICRiZXN0O1xufVxuXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgZGFya2VyIGlmIGl0J3MgbGlnaHQsIG9yIGxpZ2h0ZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICR0aHJlc2hvbGQgWzQwJV0gLSBUaHJlc2hvbGQgb2YgbGlnaHRuZXNzIHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxuQGZ1bmN0aW9uIHNtYXJ0LXNjYWxlKCRjb2xvciwgJHNjYWxlOiA1JSwgJHRocmVzaG9sZDogNDAlKSB7XG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xuICAgICRzY2FsZTogLSRzY2FsZTtcbiAgfVxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcbn1cblxuLy8vIEdldCBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHBhcmFtIHtrZXl9IGNvbG9yIGtleSBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuQGZ1bmN0aW9uIGdldC1jb2xvcigka2V5KSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ2dpdmVuICRrZXkgaXMgbm90IGF2YWlsYWJsZSBpbiAkZm91bmRhdGlvbi1wYWxldHRlJztcbiAgfVxufVxuXG4vLy8gVHJhbnNmZXJzIHRoZSBjb2xvcnMgaW4gdGhlIGAkZm91bmRhdGlvbi1wYWxldHRlYCBtYXAgaW50byB2YXJpYWJsZXMsIHN1Y2ggYXMgYCRwcmltYXJ5LWNvbG9yYCBhbmQgYCRzZWNvbmRhcnktY29sb3JgLiBDYWxsIHRoaXMgbWl4aW4gYmVsb3cgdGhlIEdsb2JhbCBzZWN0aW9uIG9mIHlvdXIgc2V0dGluZ3MgZmlsZSB0byBwcm9wZXJseSBtaWdyYXRlIHlvdXIgY29kZWJhc2UuXG5AbWl4aW4gYWRkLWZvdW5kYXRpb24tY29sb3JzKCkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICAgICRwcmltYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRwcmltYXJ5LWNvbG9yOiAjMTc3OWJhICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkge1xuICAgICRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiAjNzY3Njc2ICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogIzNhZGI3NiAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSB7XG4gICAgJHdhcm5pbmctY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHdhcm5pbmctY29sb3I6ICNmZmFlMDAgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpIHtcbiAgICAkYWxlcnQtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRhbGVydC1jb2xvcjogI2NjNGIzNyAhZ2xvYmFsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYmFkZ2Vcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRiYWRnZS1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBiYWRnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtcGFkZGluZzogMC4zZW0gIWRlZmF1bHQ7XG5cbi8vLyBNaW5pbXVtIHdpZHRoIG9mIGEgYmFkZ2UuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1mb250LXNpemU6IDAuNnJlbSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgYmFkZ2UuXG5AbWl4aW4gYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1pbi13aWR0aDogJGJhZGdlLW1pbndpZHRoO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgZm9udC1zaXplOiAkYmFkZ2UtZm9udC1zaXplO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJhZGdlIHtcbiAgLmJhZGdlIHtcbiAgICBAaW5jbHVkZSBiYWRnZTtcblxuICAgIGJhY2tncm91bmQ6ICRiYWRnZS1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkYmFkZ2UtY29sb3I7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRiYWRnZS1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRjb2xvciwgKCRiYWRnZS1jb2xvciwgJGJhZGdlLWNvbG9yLWFsdCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJyZWFkY3J1bWJzXG4vLy8vXG5cbi8vLyBNYXJnaW4gYXJvdW5kIGEgYnJlYWRjcnVtYnMgY29udGFpbmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDAgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTEpICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGhlIGFjdGl2ZSBicmVhZGNydW1iIGxpbmsuXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIE9wYWNpdHkgb2YgZGlzYWJsZWQgYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYmV0d2VlbiBicmVhZGNydW1iIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luOiAwLjc1cmVtICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBtYWtlcyBicmVhZGNydW1iIGxpbmtzIHVwcGVyY2FzZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS11cHBlcmNhc2U6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFkZHMgYSBzZXBlcmF0b3IgYmV0d2VlbiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvcjogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gSWYgaXQgZXhpc3RzICRicmVhZGNydW1icy1pdGVtLXNsYXNoIGlzIHVzZWQgdG8gYnVpbGQgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gpIHtcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDtcbn1cblxuLy8vIFVzZWQgY2hhcmFjdGVyIGZvciB0aGUgYnJlYWRjcnVtYiBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgQ29udGVudFxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW06ICcvJyAhZGVmYXVsdDtcblxuLy8vIFVzZWQgY2hhcmFjdGVyIGZvciB0aGUgYnJlYWRjcnVtYiBzZXBhcmF0b3IgaW4gcnRsIG1vZGUuXG4vLy8gQHR5cGUgQ29udGVudFxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsOiAnXFxcXCcgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBJZiBpdCBleGlzdHMgJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IgaXMgdXNlZCB0byBidWlsZCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3IuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cbkBpZiB2YXJpYWJsZS1leGlzdHMoYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvcikge1xuICAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgYnJlYWRjcnVtYnMgY29udGFpbmVyLCBhbG9uZyB3aXRoIHRoZSBzdHlsZXMgZm9yIHRoZSBgPGxpPmAgYW5kIGA8YT5gIGVsZW1lbnRzIGluc2lkZSBvZiBpdC5cbkBtaXhpbiBicmVhZGNydW1icy1jb250YWluZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkYnJlYWRjcnVtYnMtbWFyZ2luO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIC8vIEl0ZW0gd3JhcHBlclxuICBsaSB7XG4gICAgZmxvYXQ6ICN7JGdsb2JhbC1sZWZ0fTtcblxuICAgIGZvbnQtc2l6ZTogJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplO1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgIEBpZiAkYnJlYWRjcnVtYnMtaXRlbS11cHBlcmNhc2Uge1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yIHtcbiAgICAgIC8vIE5lZWQgdG8gZXNjYXBlIHRoZSBiYWNrc2xhc2hcbiAgICAgICRzZXBhcmF0b3I6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ2x0cicsICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbS1ydGwpO1xuXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIG1hcmdpbjogMCAkYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW47XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBjb250ZW50OiAkc2VwYXJhdG9yO1xuICAgICAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEge1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzIHtcbiAgLmJyZWFkY3J1bWJzIHtcbiAgICBAaW5jbHVkZSBicmVhZGNydW1icy1jb250YWluZXI7XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkO1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjYWxsb3V0XG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmFkZSB2YWx1ZSBmb3IgY2FsbG91dCBiYWNrZ3JvdW5kcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LWJhY2tncm91bmQtZmFkZTogODUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIExpc3RcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDAgIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgQ2FsbG91dCBwYWRkaW5ncy5cbi8vLyBAdHlwZSBNYXBcbiRjYWxsb3V0LXNpemVzOiAoXG4gIHNtYWxsOiAwLjVyZW0sXG4gIGRlZmF1bHQ6IDFyZW0sXG4gIGxhcmdlOiAzcmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhbGxvdXRzLCBpZiB0aGUgY2FsbG91dCBoYXMgYSBkYXJrIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEFtb3VudCB0byB0aW50IGxpbmtzIHVzZWQgd2l0aGluIGNvbG9yZWQgcGFuZWxzLiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cbi8vLyBAdHlwZSBOdW1iZXIgfCBCb29sZWFuXG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhIGNhbGxvdXQsIGluY2x1ZGluZyBwYWRkaW5nIGFuZCBtYXJnaW4uXG5AbWl4aW4gY2FsbG91dC1iYXNlKCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogJGNhbGxvdXQtbWFyZ2luO1xuICBwYWRkaW5nOiBtYXAtZ2V0KCRjYWxsb3V0LXNpemVzLCBkZWZhdWx0KTtcblxuICBib3JkZXI6ICRjYWxsb3V0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGNhbGxvdXQtcmFkaXVzO1xuXG4gIC8vIFJlc3BlY3QgdGhlIHBhZGRpbmcsIGZvb2wuXG4gID4gOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gR2VuZXJhdGUgcXVpY2sgc3R5bGVzIGZvciBhIGNhbGxvdXQgdXNpbmcgYSBzaW5nbGUgY29sb3IgYXMgYSBiYXNlbGluZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRjYWxsb3V0LWJhY2tncm91bmRdIC0gQ29sb3IgdG8gdXNlLlxuQG1peGluIGNhbGxvdXQtc3R5bGUoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XG4gICRiYWNrZ3JvdW5kOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRjYWxsb3V0LWJhY2tncm91bmQtZmFkZSk7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGNhbGxvdXQtZm9udC1jb2xvciwgJGNhbGxvdXQtZm9udC1jb2xvci1hbHQpKTtcbn1cblxuQG1peGluIGNhbGxvdXQtc2l6ZSgkcGFkZGluZykge1xuICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG59XG5cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhbGxvdXQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cbkBtaXhpbiBjYWxsb3V0KCRjb2xvcjogJGNhbGxvdXQtYmFja2dyb3VuZCkge1xuICBAaW5jbHVkZSBjYWxsb3V0LWJhc2U7XG4gIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2FsbG91dCB7XG4gIC5jYWxsb3V0IHtcbiAgICBAaW5jbHVkZSBjYWxsb3V0O1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBjYWxsb3V0LXN0eWxlKCRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJHNpemUsICRwYWRkaW5nIGluIG1hcC1yZW1vdmUoJGNhbGxvdXQtc2l6ZXMsIGRlZmF1bHQpIHtcbiAgICAgICYuI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBjYWxsb3V0LXNpemUoJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNhcmRcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAdHlwZSBDb2xvclxuJGNhcmQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYXJkcy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhcmQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHN0eWxlLlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjYXJkIHNoYWRvdy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1zaGFkb3c6IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FyZC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4uXG4vLy8gQHR5cGUgbnVtYmVyXG4kY2FyZC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBmb250IGNvbG9yIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWFyZ2luIC0gQm90dG9tIG1hcmdpbiBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRib3JkZXIgLSBCb3JkZXIgYXJvdW5kIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhZGl1cyAtIGJvcmRlciByYWRpdXMgb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hhZG93IC0gYm94IHNoYWRvdyBvZiB0aGUgY2FyZC5cbkBtaXhpbiBjYXJkLWNvbnRhaW5lcihcbiAgJGJhY2tncm91bmQ6ICRjYXJkLWJhY2tncm91bmQsXG4gICRjb2xvcjogJGNhcmQtZm9udC1jb2xvcixcbiAgJG1hcmdpbjogJGNhcmQtbWFyZ2luLWJvdHRvbSxcbiAgJGJvcmRlcjogJGNhcmQtYm9yZGVyLFxuICAkcmFkaXVzOiAkY2FyZC1ib3JkZXItcmFkaXVzLFxuICAkc2hhZG93OiAkY2FyZC1zaGFkb3dcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleC1ncm93OiAxO1xuICB9XG5cbiAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcblxuICBib3JkZXI6ICRib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGJveC1zaGFkb3c6ICRzaGFkb3c7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgZGl2aWRlci5cbkBtaXhpbiBjYXJkLWRpdmlkZXIoXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1kaXZpZGVyLWJhY2tncm91bmQsXG4gICRwYWRkaW5nOiAkY2FyZC1wYWRkaW5nXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxuXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcblxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgc2VjdGlvbi5cbkBtaXhpbiBjYXJkLXNlY3Rpb24oXG4gICRwYWRkaW5nOiAkY2FyZC1wYWRkaW5nXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleDogMSAwIGF1dG87XG4gIH1cblxuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2FyZCB7XG4gIC5jYXJkIHtcbiAgICBAaW5jbHVkZSBjYXJkLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5jYXJkLWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGNhcmQtZGl2aWRlcjtcbiAgfVxuXG4gIC5jYXJkLXNlY3Rpb24ge1xuICAgIEBpbmNsdWRlIGNhcmQtc2VjdGlvbjtcbiAgfVxuXG4gIC8vIEZvciBJRSAxMSAtIEZsZXhidWdcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BoaWxpcHdhbHRvbi9mbGV4YnVncy9pc3N1ZXMvNzVcbiAgLmNhcmQtaW1hZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyb3Bkb3duXG4vLy8vXG5cbi8vLyBQYWRkaW5nIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd24tYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWZvbnQtc2l6ZTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bi13aWR0aDogMzAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgZHJvcGRvd24gcGFuZXMuIEVhY2ggc2l6ZSBpcyBhIENTUyBjbGFzcyB5b3UgY2FuIGFwcGx5LlxuLy8vIEB0eXBlIE1hcFxuJGRyb3Bkb3duLXNpemVzOiAoXG4gIHRpbnk6IDEwMHB4LFxuICBzbWFsbDogMjAwcHgsXG4gIGxhcmdlOiA0MDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBBcHBsaWVzIHN0eWxlcyBmb3IgYSBiYXNpYyBkcm9wZG93bi5cbkBtaXhpbiBkcm9wZG93bi1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgd2lkdGg6ICRkcm9wZG93bi13aWR0aDtcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmc7XG5cbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBib3JkZXI6ICRkcm9wZG93bi1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRkcm9wZG93bi1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iYWNrZ3JvdW5kO1xuXG4gIGZvbnQtc2l6ZTogJGRyb3Bkb3duLWZvbnQtc2l6ZTtcblxuXG4gIC8vIEFsbG93IGFuIGludGVybWl0dGVudCBzdGF0ZSB0byBkbyBwb3NpdGlvbmluZyBiZWZvcmUgbWFraW5nIHZpc2libGUuXG4gICYuaXMtb3BlbmluZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmLmlzLW9wZW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZHJvcGRvd24ge1xuICAuZHJvcGRvd24tcGFuZSB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24tY29udGFpbmVyO1xuICB9XG5cbiAgQGVhY2ggJG5hbWUsICRzaXplIGluICRkcm9wZG93bi1zaXplcyB7XG4gICAgLmRyb3Bkb3duLXBhbmUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwYWdpbmF0aW9uXG4vLy8vXG5cbi8vLyBGb250IHNpemUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIG9mIHRoZSBwYWdpbmF0aW9uIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygzIDEwKSAhZGVmYXVsdDtcblxuLy8vIFJpZ2h0IG1hcmdpbiB0byBzZXBhcmF0ZSBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nOiByZW0tY2FsYygxKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHRoZSBwYWdpbmF0aW9uIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBhIGRpc2FibGVkIHBhZ2luYXRpb24gaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGhlIGVsbGlwc2lzIGluIGEgcGFnaW5hdGlvbiBtZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gSWYgYGZhbHNlYCwgZG9uJ3QgZGlzcGxheSBwYWdlIG51bWJlciBsaW5rcyBvbiBtb2JpbGUsIG9ubHkgbmV4dC9wcmV2aW91cyBsaW5rc1xuLy8vIGFuZCBvcHRpb25hbGx5IGN1cnJlbnQgcGFnZSBudW1iZXIuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgZGlzcGxheSB0aGUgY3VycmVudCBwYWdlIG51bWJlciBvbiBtb2JpbGUgZXZlbiBpZiBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zYCBpcyBzZXQgdG8gYGZhbHNlYC5cbi8vLyBUaGlzIHBhcmFtZXRlciB3aWxsIG9ubHkgb3ZlcnJpZGUgdGhlIHZpc2liaWxpdHkgc2V0dGluZyBvZiB0aGUgY3VycmVudCBpdGVtIGZvciBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZTtgLFxuLy8vIGl0IHdpbGwgbm90IGFmZmVjdCB0aGUgY3VycmVudCBwYWdlIG51bWJlciB2aXNpYmlsaXR5IHdoZW4gYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGB0cnVlYC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYXJyb3dzIGFyZSBhZGRlZCB0byB0aGUgbmV4dCBhbmQgcHJldmlvdXMgbGlua3Mgb2YgcGFnaW5hdGlvbi5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBDb250ZW50IGZvciB0aGUgcHJldmlvdXMgYXJyb3cgd2hlbiBgJHBhZ2luYXRpb24tYXJyb3dzYCBpcyBgdHJ1ZWBcbi8vLyBAdHlwZSBTdHJpbmdcbiRwYWdpbmF0aW9uLWFycm93LXByZXZpb3VzOiAnXFwwMEFCJyAhZGVmYXVsdDtcblxuLy8vIENvbnRlbnQgZm9yIHRoZSBuZXh0IGFycm93IHdoZW4gYCRwYWdpbmF0aW9uLWFycm93c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kcGFnaW5hdGlvbi1hcnJvdy1uZXh0OiAnXFwwMEJCJyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHBhZ2luYXRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHBhZ2luYXRpb24tY29udGFpbmVyIChcbiAgJG1hcmdpbi1ib3R0b206ICRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b20sXG4gICRmb250LXNpemU6ICRwYWdpbmF0aW9uLWZvbnQtc2l6ZSxcbiAgJHNwYWNpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZyxcbiAgJHJhZGl1czogJHBhZ2luYXRpb24tcmFkaXVzLFxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3IsXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXJcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG5cbiAgLy8gTGlzdCBpdGVtXG4gIGxpIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmc7XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG5cbiAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgJjpsYXN0LWNoaWxkLFxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cblxuICAgICAgQGlmICRwYWdpbmF0aW9uLW1vYmlsZS1jdXJyZW50LWl0ZW0ge1xuICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUGFnZSBsaW5rc1xuICBhLFxuICBidXR0b24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgY29sb3I6ICRjb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtaG92ZXI7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGN1cnJlbnQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1jdXJyZW50IChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGJhY2tncm91bmQtY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQsXG4gICRjb2xvci1jdXJyZW50OiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnRcbikge1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtY3VycmVudDtcbiAgY29sb3I6ICRjb2xvci1jdXJyZW50O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gYW4gYDxhPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1pdGVtLWRpc2FibGVkIChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWRpc2FibGVkXG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBlbGxpcHNpcyBmb3IgdXNlIGluIGEgcGFnaW5hdGlvbiBsaXN0LlxuQG1peGluIHBhZ2luYXRpb24tZWxsaXBzaXMgKFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWVsbGlwc2lzLWNvbG9yXG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGNvbnRlbnQ6ICdcXDIwMjYnO1xuICBjb2xvcjogJGNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wYWdpbmF0aW9uIHtcbiAgLnBhZ2luYXRpb24ge1xuICAgIEBpbmNsdWRlIHBhZ2luYXRpb24tY29udGFpbmVyO1xuXG4gICAgLmN1cnJlbnQge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWN1cnJlbnQ7XG4gICAgfVxuXG4gICAgLmRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAuZWxsaXBzaXM6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24tZWxsaXBzaXM7XG4gICAgfVxuICB9XG5cbiAgQGlmICRwYWdpbmF0aW9uLWFycm93cyB7XG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMgYTo6YmVmb3JlLFxuICAgIC5wYWdpbmF0aW9uLXByZXZpb3VzLmRpc2FibGVkOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICRwYWdpbmF0aW9uLWFycm93LXByZXZpb3VzO1xuICAgIH1cblxuICAgIC5wYWdpbmF0aW9uLW5leHQgYTo6YWZ0ZXIsXG4gICAgLnBhZ2luYXRpb24tbmV4dC5kaXNhYmxlZDo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMC41cmVtO1xuICAgICAgY29udGVudDogJHBhZ2luYXRpb24tYXJyb3ctbmV4dDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0b29sdGlwXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGN1cnNvciBvZiB0aGUgZGVmaW5lZCB0ZXJtLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRoYXMtdGlwLWN1cnNvcjogaGVscCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXG4kaGFzLXRpcC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGJvdHRvbSBvZiB0aGUgZGVmaW5lZCB0ZXJtLlxuLy8vIEB0eXBlIExpc3RcbiRoYXMtdGlwLWJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgdG9vbHRpcCBmb250LlxuLy8vIEB0eXBlIENvbG9yXG4kdG9vbHRpcC1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1wYWRkaW5nOiAwLjc1cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXggd2lkdGggZm9yIHRvb2x0aXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtbWF4LXdpZHRoOiAxMHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIG9mIHRoZSB0b29sdGlwIHRleHQuIEJ5IGRlZmF1bHQsIHdlIHJlY29tbWVuZCBhIHNtYWxsZXIgZm9udCBzaXplIHRoYW4gdGhlIGJvZHkgY29weS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGlwIHdpZHRoIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGlwIGhlaWdodCBmb3IgdG9vbHRpcHMuIFRoaXMgaXMgaGVscGZ1bCBmb3IgY2FsY3VsYXRpbmcgdGhlIGRpc3RhbmNlIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvb2x0aXAgd29yZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRvb2x0aXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGhhcy10aXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBib3JkZXItYm90dG9tOiAkaGFzLXRpcC1ib3JkZXItYm90dG9tO1xuICBmb250LXdlaWdodDogJGhhcy10aXAtZm9udC13ZWlnaHQ7XG4gIGN1cnNvcjogJGhhcy10aXAtY3Vyc29yO1xufVxuXG5AbWl4aW4gdG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKDEwMCUgKyAjeyR0b29sdGlwLXBpcC1oZWlnaHR9KTtcbiAgei1pbmRleDogMTIwMDtcblxuICBtYXgtd2lkdGg6ICR0b29sdGlwLW1heC13aWR0aDtcbiAgcGFkZGluZzogJHRvb2x0aXAtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0b29sdGlwLWJhY2tncm91bmQtY29sb3I7XG4gIGZvbnQtc2l6ZTogJHRvb2x0aXAtZm9udC1zaXplO1xuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAmLmJvdHRvbSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIHVwKTtcbiAgICAgIGJvdHRvbTogMTAwJTtcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLnRvcCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGRvd24pO1xuICAgICAgdG9wOiAxMDAlO1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIH1cbiAgfVxuXG4gICYubGVmdCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIHJpZ2h0KTtcbiAgICAgIGxlZnQ6IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBib3R0b206IGF1dG87XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLnJpZ2h0IHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgbGVmdCk7XG4gICAgICByaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBib3R0b206IGF1dG87XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLXRvcDo6YmVmb3JlIHtcbiAgICBib3R0b206IGF1dG87XG4gICAgdG9wOiAxMCU7XG4gIH1cblxuICAmLmFsaWduLWJvdHRvbTo6YmVmb3JlIHtcbiAgICBib3R0b206IDEwJTtcbiAgICB0b3A6IGF1dG87XG4gIH1cblxuICAmLmFsaWduLWxlZnQ6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAlO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodDo6YmVmb3JlIHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiAxMCU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdG9vbHRpcCB7XG4gIC5oYXMtdGlwIHtcbiAgICBAaW5jbHVkZSBoYXMtdGlwO1xuICB9XG5cbiAgLnRvb2x0aXAge1xuICAgIEBpbmNsdWRlIHRvb2x0aXA7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhY2NvcmRpb25cbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY2NvcmRpb24gZ3JvdXAuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIHBsdXMgYW5kIG1pbnVzIGljb25zIHRvIHRoZSBzaWRlIG9mIGVhY2ggYWNjb3JkaW9uIHRpdGxlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ29udGVudCBmb3IgdGhlIHBsdXMgaWNvbiB3aGVuIGAkYWNjb3JkaW9uLXBsdXNtaW51c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kYWNjb3JkaW9uLXBsdXMtY29udGVudDogJ1xcMDAyQicgIWRlZmF1bHQ7XG5cbi8vLyBDb250ZW50IGZvciB0aGUgbWludXMgaWNvbiB3aGVuIGAkYWNjb3JkaW9uLXBsdXNtaW51c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kYWNjb3JkaW9uLW1pbnVzLWNvbnRlbnQ6ICdcXDIwMTMnICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGFjY29yZGlvbiB0aXRsZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGl0ZW1zIGluIGEgTWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGFuIGFjY29yZGlvbiBpdGVtLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRhY2NvcmRpb24taXRlbS1wYWRkaW5nOiAxLjI1cmVtIDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGFjY29yZGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gdGhlIHNhbWUgZWxlbWVudCB0aGF0IGdldHMgYGRhdGEtYWNjb3JkaW9uYC5cbkBtaXhpbiBhY2NvcmRpb24tY29udGFpbmVyIChcbiAgJGJhY2tncm91bmQ6ICRhY2NvcmRpb24tYmFja2dyb3VuZFxuKSB7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgJltkaXNhYmxlZF0ge1xuICAgIC5hY2NvcmRpb24tdGl0bGUge1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpc3QgaXRlbSB3aXRoaW4gYW4gYWNjb3JkaW9uIHVsLlxuQG1peGluIGFjY29yZGlvbi1pdGVtIHtcbiAgJjpmaXJzdC1jaGlsZCA+IDpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXMgMCAwO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkID4gOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSB0aXRsZSBvZiBhbiBhY2NvcmRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byB0aGUgbGluayB3aXRoaW4gYW4gYWNjb3JkaW9uIGl0ZW0uXG5AbWl4aW4gYWNjb3JkaW9uLXRpdGxlIChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24taXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSxcbiAgJGNvbG9yOiAkYWNjb3JkaW9uLWl0ZW0tY29sb3IsXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlclxuKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcblxuICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkOm5vdCguaXMtYWN0aXZlKSA+ICYge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtaG92ZXI7XG4gIH1cblxuICBAaWYgJGFjY29yZGlvbi1wbHVzbWludXMge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgICBtYXJnaW4tdG9wOiAtMC41cmVtO1xuICAgICAgY29udGVudDogJGFjY29yZGlvbi1wbHVzLWNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLmlzLWFjdGl2ZSA+ICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkYWNjb3JkaW9uLW1pbnVzLWNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYWNjb3JkaW9uIGNvbnRlbnQuIEFwcGx5IHRoaXMgdG8gdGhlIGNvbnRlbnQgcGFuZSBiZWxvdyBhbiBhY2NvcmRpb24gaXRlbSdzIHRpdGxlLlxuQG1peGluIGFjY29yZGlvbi1jb250ZW50IChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nLFxuICAkYm9yZGVyOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyLFxuICAkYmFja2dyb3VuZDogJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQsXG4gICRjb2xvcjogJGFjY29yZGlvbi1jb250ZW50LWNvbG9yXG4pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcblxuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkID4gJjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbiB7XG4gIC5hY2NvcmRpb24ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250YWluZXI7XG4gIH1cblxuICAuYWNjb3JkaW9uLWl0ZW0ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1pdGVtO1xuICB9XG5cbiAgLmFjY29yZGlvbi10aXRsZSB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLXRpdGxlO1xuICB9XG5cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1lZGlhLW9iamVjdFxuLy8vL1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIExlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgb24gc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgaW1hZ2VzIHdpdGhpbiBhIG1lZGlhIG9iamVjdCwgd2hlbiB0aGUgb2JqZWN0IGlzIHN0YWNrZWQgdmVydGljYWxseS4gU2V0IHRvICdhdXRvJyB0byB1c2UgdGhlIGltYWdlJ3MgbmF0dXJhbCB3aWR0aC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbWVkaWEgb2JqZWN0IGNvbnRhaW5lci5cbkBtaXhpbiBtZWRpYS1vYmplY3QtY29udGFpbmVyIHtcbiAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCBibG9jayk7XG4gIG1hcmdpbi1ib3R0b206ICRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG5cbiAgaW1nIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gIH1cblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAmLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHNlY3Rpb25zIHdpdGhpbiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRpbmcgWyRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmddIC0gUGFkZGluZyBiZXR3ZWVuIHNlY3Rpb25zLlxuQG1peGluIG1lZGlhLW9iamVjdC1zZWN0aW9uKCRwYWRkaW5nOiAkbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRwYWRkaW5nO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkOm5vdCg6bnRoLWNoaWxkKDIpKSB7XG4gICAgcGFkZGluZy0jeyRnbG9iYWwtbGVmdH06ICRwYWRkaW5nO1xuICB9XG5cbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5zdGFjay1mb3ItI3skLXpmLXplcm8tYnJlYWtwb2ludH0gJiB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3Qtc3RhY2s7XG4gICAgfVxuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgJi5tYWluLXNlY3Rpb24ge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICYubWlkZGxlIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgJi5ib3R0b20ge1xuICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIHRvIHN0YWNrIHNlY3Rpb25zIG9mIGEgbWVkaWEgb2JqZWN0LiBBcHBseSB0aGlzIHRvIHRoZSBzZWN0aW9uIGVsZW1lbnRzLCBub3QgdGhlIGNvbnRhaW5lci5cbkBtaXhpbiBtZWRpYS1vYmplY3Qtc3RhY2sge1xuICBwYWRkaW5nOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZztcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBpbWcge1xuICAgIHdpZHRoOiAkbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1tZWRpYS1vYmplY3Qge1xuICAubWVkaWEtb2JqZWN0IHtcbiAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3QtY29udGFpbmVyO1xuICB9XG5cbiAgLm1lZGlhLW9iamVjdC1zZWN0aW9uIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3Qtc2VjdGlvbjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG9yYml0XG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBhY3RpdmUgY29sb3IgZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZGlhbWV0ZXIgZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtZGlhbWV0ZXI6IDEuMnJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWFyZ2luIGJldHdlZW4gT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZGlzdGFuY2UgZnJvbSBzbGlkZSByZWdpb24gZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDogMC44cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZyb20gT3JiaXQncyBidWxsZXRzIHRvIHdoYXRldmVyIGNvbnRlbnQgbWF5IGx1cmsgYmVsb3cgaXQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgT3JiaXQncyBjYXB0aW9uLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjYXB0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgT3JiaXQncyBjb250cm9scyB3aGVuIGhvdmVyZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciBPcmJpdCdzIGNvbnRyb2xzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgei1pbmRleCBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTAgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIG91dGVyIE9yYml0IHdyYXBwZXIuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdGAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgT3JiaXQgc2xpZGUgY29udGFpbmVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtY29udGFpbmVyYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDsgLy8gUHJldmVudCBGT1VDIGJ5IG5vdCBzaG93aW5nIHVudGlsIEpTIHNldHMgaGVpZ2h0XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5kaXZpZHVhbCBzbGlkZXMgb2YgYW4gT3JiaXQgc2xpZGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtc2xpZGVgIGNsYXNzLlxuQG1peGluIG9yYml0LXNsaWRlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAmLm5vLW1vdGlvbnVpIHtcbiAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gb3JiaXQtZmlndXJlIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc2xpZGUgY29udGFpbmluZyBhbiBpbWFnZS4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWltYWdlYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1pbWFnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBvcmJpdCBzbGlkZSBjYXB0aW9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtY2FwdGlvbmAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtY2FwdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZzogJG9yYml0LWNhcHRpb24tcGFkZGluZztcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kO1xuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kKTtcbn1cblxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIHRoZSBuZXh0L3ByZXZpb3VzIGJ1dHRvbnMgaW4gYW4gT3JiaXQgc2xpZGVyLiBUaGVzZSBzdHlsZXMgYXJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBgLm9yYml0LW5leHRgIGFuZCBgLm9yYml0LXByZXZpb3VzYCBjbGFzc2VzIGluIHRoZSBkZWZhdWx0IENTUy5cbkBtaXhpbiBvcmJpdC1jb250cm9sIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XG4gIHotaW5kZXg6ICRvcmJpdC1jb250cm9sLXppbmRleDtcbiAgcGFkZGluZzogJG9yYml0LWNvbnRyb2wtcGFkZGluZztcbiAgY29sb3I6ICR3aGl0ZTtcblxuICAmOmhvdmVyLFxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWNvbnRyb2wtYmFja2dyb3VuZC1ob3ZlcjtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBwcmV2aW91cyBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1wcmV2aW91c2AgY2xhc3MuXG5AbWl4aW4gb3JiaXQtcHJldmlvdXMge1xuICAjeyRnbG9iYWwtbGVmdH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IG5leHQgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtbmV4dGAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtbmV4dCB7XG4gICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcbiAgI3skZ2xvYmFsLXJpZ2h0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNvbnRhaW5lciBvZiBPcmJpdCBidWxsZXRzLiAvLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBwcmV2aW91cyBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1idWxsZXRzYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1idWxsZXRzIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi10b3A6ICRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDtcbiAgbWFyZ2luLWJvdHRvbTogJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgYnV0dG9uIHtcbiAgICB3aWR0aDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcbiAgICBoZWlnaHQ6ICRvcmJpdC1idWxsZXQtZGlhbWV0ZXI7XG4gICAgbWFyZ2luOiAkb3JiaXQtYnVsbGV0LW1hcmdpbjtcblxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgfVxuXG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tb3JiaXQge1xuICAub3JiaXQge1xuICAgIEBpbmNsdWRlIG9yYml0LXdyYXBwZXI7XG4gIH1cblxuICAub3JiaXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jb250YWluZXI7XG4gIH1cblxuICAub3JiaXQtc2xpZGUge1xuICAgIEBpbmNsdWRlIG9yYml0LXNsaWRlO1xuICB9XG5cbiAgLm9yYml0LWZpZ3VyZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtZmlndXJlO1xuICB9XG5cbiAgLm9yYml0LWltYWdlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1pbWFnZTtcbiAgfVxuXG4gIC5vcmJpdC1jYXB0aW9uIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jYXB0aW9uO1xuICB9XG5cbiAgJW9yYml0LWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRyb2w7XG4gIH1cblxuICAub3JiaXQtcHJldmlvdXMge1xuICAgIEBleHRlbmQgJW9yYml0LWNvbnRyb2w7XG4gICAgQGluY2x1ZGUgb3JiaXQtcHJldmlvdXM7XG4gIH1cblxuICAub3JiaXQtbmV4dCB7XG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcbiAgICBAaW5jbHVkZSBvcmJpdC1uZXh0O1xuICB9XG5cbiAgLm9yYml0LWJ1bGxldHMge1xuICAgIEBpbmNsdWRlIG9yYml0LWJ1bGxldHM7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCByZXNwb25zaXZlLWVtYmVkXG4vLy8vXG5cbi8vLyBNYXJnaW4gYmVsb3cgYSByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEFzcGVjdCByYXRpb3MgdXNlZCB0byBkZXRlcm1pbmUgcGFkZGluZy1ib3R0b20gb2YgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXJzLlxuLy8vIEB0eXBlIE1hcFxuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zOiAoXG4gIGRlZmF1bHQ6IDQgYnkgMyxcbiAgd2lkZXNjcmVlbjogMTYgYnkgOSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtTdHJpbmd8TGlzdH0gJHJhdGlvIFtkZWZhdWx0XSAtIFJhdGlvIG9mIHRoZSBjb250YWluZXIuIENhbiBiZSBhIGtleSBmcm9tIHRoZSBgJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zYCBtYXAgb3IgYSBsaXN0IGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbkBtaXhpbiByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCkge1xuICBAaWYgdHlwZS1vZigkcmF0aW8pID09ICdzdHJpbmcnIHtcbiAgICAkcmF0aW86IG1hcC1nZXQoJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zLCAkcmF0aW8pO1xuICB9XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAkcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tO1xuICBwYWRkaW5nLWJvdHRvbTogcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIGlmcmFtZSxcbiAgb2JqZWN0LFxuICBlbWJlZCxcbiAgdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkIHtcbiAgLnJlc3BvbnNpdmUtZW1iZWQsXG4gIC5mbGV4LXZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCk7XG5cbiAgICAkcmF0aW9zOiBtYXAtcmVtb3ZlKCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcyxkZWZhdWx0KTtcblxuICAgIEBlYWNoICRuYW1lLCAkcmF0aW8gaW4gJHJhdGlvcyB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0YWJzXG4vLy8vXG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBvZiB0aGUgdGFiIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGFiIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIG9mIHRhYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEFjdGl2ZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGFiIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZTogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBBY3RpdmUgZm9udCBjb2xvciBvZiB0YWIgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1hY3RpdmUtY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIHRhYiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiBhIHRhYiBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1ib3JkZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiR0YWItY29udGVudC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgdGFiIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGA8dWw+YC5cbkBtaXhpbiB0YWJzLWNvbnRhaW5lciAoXG4gICRtYXJnaW46ICR0YWItbWFyZ2luLFxuICAkYmFja2dyb3VuZDogJHRhYi1iYWNrZ3JvdW5kLFxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbjogJG1hcmdpbjtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbn1cblxuLy8vIEF1Z21lbnRzIGEgdGFiIGNvbnRhaW5lciB0byBoYXZlIHZlcnRpY2FsIHRhYnMuIFVzZSB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYHRhYnMtY29udGFpbmVyKClgLlxuQG1peGluIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsIHtcbiAgPiBsaSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgbGlua3Mgd2l0aGluIGEgdGFiIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byB0aGUgYDxsaT5gIGVsZW1lbnRzIGluc2lkZSBhIHRhYiBjb250YWluZXIuXG5AbWl4aW4gdGFicy10aXRsZSAoXG4gICRwYWRkaW5nOiAkdGFiLWl0ZW0tcGFkZGluZyxcbiAgJGZvbnQtc2l6ZTogJHRhYi1pdGVtLWZvbnQtc2l6ZSxcbiAgJGNvbG9yOiAkdGFiLWNvbG9yLFxuICAkY29sb3ItYWN0aXZlOiAkdGFiLWFjdGl2ZS1jb2xvcixcbiAgJGJhY2tncm91bmQtaG92ZXI6ICR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkYmFja2dyb3VuZC1hY3RpdmU6ICR0YWItYmFja2dyb3VuZC1hY3RpdmVcbikge1xuICBmbG9hdDogI3skZ2xvYmFsLWxlZnR9O1xuXG4gID4gYSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogJGNvbG9yO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICAgIGNvbG9yOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtYWN0aXZlO1xuICAgICAgY29sb3I6ICRjb2xvci1hY3RpdmU7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgdGhhdCBzdXJyb3VuZHMgYSB0YWIgZ3JvdXAncyBjb250ZW50IHBhbmVzLlxuQG1peGluIHRhYnMtY29udGVudCAoXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWNvbnRlbnQtYmFja2dyb3VuZCxcbiAgJGNvbG9yOiAkdGFiLWNvbnRlbnQtY29sb3IsXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItdG9wOiAwO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRjb2xvcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcbn1cblxuLy8vIEF1Z21lbnRzIGEgdGFiIGNvbnRlbnQgY29udGFpbmVyIHRvIGhhdmUgYSB2ZXJ0aWNhbCBzdHlsZSwgYnkgc2hpZnRpbmcgdGhlIGJvcmRlciBhcm91bmQuIFVzZSB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYHRhYnMtY29udGVudCgpYC5cbkBtaXhpbiB0YWJzLWNvbnRlbnQtdmVydGljYWwgKFxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXG4pIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBpbmRpdmlkdWFsIHRhYiBjb250ZW50IHBhbmVsIHdpdGhpbiB0aGUgdGFiIGNvbnRlbnQgY29udGFpbmVyLlxuQG1peGluIHRhYnMtcGFuZWwgKFxuICAkcGFkZGluZzogJHRhYi1jb250ZW50LXBhZGRpbmdcbikge1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICAmLmlzLWFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdGFicyB7XG4gIC50YWJzIHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIFZlcnRpY2FsXG4gIC50YWJzLnZlcnRpY2FsIHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRhaW5lci12ZXJ0aWNhbDtcbiAgfVxuXG4gIC8vIFNpbXBsZVxuICAudGFicy5zaW1wbGUge1xuICAgID4gbGkgPiBhIHtcbiAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcmltYXJ5IGNvbG9yXG4gIC50YWJzLnByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuXG4gICAgPiBsaSA+IGEge1xuICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJHByaW1hcnktY29sb3IpO1xuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCRwcmltYXJ5LWNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAudGFicy10aXRsZSB7XG4gICAgQGluY2x1ZGUgdGFicy10aXRsZTtcbiAgfVxuXG4gIC50YWJzLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGVudDtcbiAgfVxuXG4gIC50YWJzLWNvbnRlbnQudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGVudC12ZXJ0aWNhbDtcbiAgfVxuXG4gIC50YWJzLXBhbmVsIHtcbiAgICBAaW5jbHVkZSB0YWJzLXBhbmVsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGh1bWJuYWlsXG4vLy8vXG5cbi8vLyBCb3JkZXIgYXJvdW5kIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kdGh1bWJuYWlsLWJvcmRlcjogNHB4IHNvbGlkICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyB1bmRlciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFNoYWRvd1xuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBTaGFkb3dcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpICFkZWZhdWx0O1xuXG4vLy8gVHJhbnNpdGlvbiBwcm9wcnRpZXMgZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGh1bWJuYWlsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHRodW1ibmFpbCBzdHlsZXMgdG8gYW4gZWxlbWVudC5cbkBtaXhpbiB0aHVtYm5haWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tO1xuXG4gIGJvcmRlcjogJHRodW1ibmFpbC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICR0aHVtYm5haWwtcmFkaXVzO1xuICBib3gtc2hhZG93OiAkdGh1bWJuYWlsLXNoYWRvdztcblxuICBsaW5lLWhlaWdodDogMDtcbn1cblxuQG1peGluIHRodW1ibmFpbC1saW5rIHtcbiAgdHJhbnNpdGlvbjogJHRodW1ibmFpbC10cmFuc2l0aW9uO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6ICR0aHVtYm5haWwtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgaW1hZ2Uge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdGh1bWJuYWlsIHtcbiAgLnRodW1ibmFpbCB7XG4gICAgQGluY2x1ZGUgdGh1bWJuYWlsO1xuICB9XG5cbiAgYS50aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHRodW1ibmFpbC1saW5rO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbWVudVxuLy8vL1xuXG4vLy8gTWFyZ2luIG9mIGEgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIExlZnQtaGFuZCBtYXJnaW4gb2YgYSBuZXN0ZWQgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgaXRlbXMgaW4gYSBwaWxsIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1pdGVtcy1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIG1hcmdpbiBmb3IgaXRlbXMgaW4gYSBzaW1wbGUgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LXNpbXBsZS1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGl2ZSB0ZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVudS1pdGVtLWNvbG9yLWFsdC1hY3RpdmU6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGFuIGljb24gYW5kIHRleHQgaW4gYSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1pY29uLXNwYWNpbmc6IDAuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBtZW51IHN0YXRlLiBJZiB0cnVlLCB0aGlzIGR1cGxpY2F0ZSBgYWN0aXZlYCB3aXRoIGBpcy1hY3RpdmVgLiBcbi8vLyBCdXQgcGxlYXNlIG5vdGUgdGhhdCBgYWN0aXZlYCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJG1lbnUtc3RhdGUtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBtZW51IGNlbnRlcmVkLiBJZiB0cnVlLCB0aGlzIGR1cGxpY2F0ZSBgLm1lbnUtY2VudGVyZWQgPiAubWVudWAgd2l0aCBgLm1lbnUuYWxpZ24tY2VudGVyYC4gXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgYG1lbnUtY2VudGVyZWRgIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIHVzaW5nIGBpY29uLSpgIGNsYXNzZXMgd2l0aG91dCBgLmljb25zYCBjbGFzc2VzXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgdGhpcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kbWVudS1pY29ucy1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIENyZWF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIE1lbnUuXG5AbWl4aW4gbWVudS1iYXNlIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gIH1cblxuICBsaSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB9XG5cbiAgYSxcbiAgLmJ1dHRvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRtZW51LWl0ZW1zLXBhZGRpbmc7XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb2YgaW5uZXIgZWxlbWVudHNcbiAgaW5wdXQsXG4gIHNlbGVjdCxcbiAgYSxcbiAgYnV0dG9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgaW5wdXQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG4vLy8gRXhwYW5kcyB0aGUgaXRlbXMgb2YgYSBNZW51LCBzbyBlYWNoIGl0ZW0gaXMgdGhlIHNhbWUgd2lkdGguXG5AbWl4aW4gbWVudS1leHBhbmQge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBsaSB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICA+IGxpIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWxpZ24gbWVudSBpdGVtcy5cbkBtaXhpbiBtZW51LWFsaWduKCRhbGlnbm1lbnQpIHtcbiAgQGlmICRhbGlnbm1lbnQgPT0gbGVmdCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtbGVmdDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSByaWdodCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLnZlcnRpY2FsIGxpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG5cbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1yaWdodDtcblxuICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgICB9XG5cbiAgICAgICYudmVydGljYWwge1xuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1yaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkYWxpZ25tZW50ID09IGNlbnRlciB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGRpcmVjdGlvbiBvZiBhIE1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIFtob3Jpem9udGFsXSAtIERpcmVjdGlvbiBvZiB0aGUgTWVudS4gQ2FuIGJlIGBob3Jpem9udGFsYCBvciBgdmVydGljYWxgLlxuQG1peGluIG1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBtZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgc2ltcGxlIE1lbnUsIHdoaWNoIGhhcyBubyBwYWRkaW5nIG9yIGhvdmVyIHN0YXRlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbJGdsb2JhbC1sZWZ0XSAtIERpcmVjdGlvbiBvZiB0aGUgbWVudS4gVGhpcyBlZmZlY3RzIHRoZSBzaWRlIG9mIHRoZSBgPGxpPmAgdGhhdCByZWNlaXZlcyB0aGUgbWFyZ2luLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWFyZ2luIFskbWVudS1zaW1wbGUtbWFyZ2luXSAtIFRoZSBtYXJnaW4gdG8gYXBwbHkgdG8gZWFjaCBgPGxpPmAuXG5AbWl4aW4gbWVudS1zaW1wbGUoJGRpcjogJGdsb2JhbC1sZWZ0LCAkbWFyZ2luOiAkbWVudS1zaW1wbGUtbWFyZ2luKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICBsaSArIGxpIHtcbiAgICBtYXJnaW4tI3skZGlyfTogJG1hcmdpbjtcbiAgfVxuXG4gIGEge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG5lc3RlZCBNZW51LCBieSBhZGRpbmcgYG1hcmdpbi1sZWZ0YCB0byB0aGUgbWVudS5cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkbWFyZ2luIFskbWVudS1uZXN0ZWQtbWFyZ2luXSAtIExlbmd0aCBvZiB0aGUgbWFyZ2luLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG5lc3RlZC1hbGlnbm1lbnQgW2xlZnRdIC0gQWxpZ25tZW50IG9mIHRoZSBuZXN0ZWQgY2xhc3NcbkBtaXhpbiBtZW51LW5lc3RlZChcbiAgJG1hcmdpbjogJG1lbnUtbmVzdGVkLW1hcmdpbixcbiAgJG5lc3RlZC1hbGlnbm1lbnQ6IGxlZnRcbikge1xuICBAaWYgJG5lc3RlZC1hbGlnbm1lbnQgPT0gcmlnaHQge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkbWFyZ2luO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRtYXJnaW47XG4gIH1cblxufVxuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGljb25zIGluIG1lbnVzLlxuQG1peGluIG1lbnUtaWNvbnMoKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGEge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGltZyxcbiAgICBpLFxuICAgIHN2ZyB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICArIHNwYW4ge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBwb3NpdGlvbiBjbGFzc2VzIGZvciBpY29ucyB3aXRoaW4gYSBtZW51LlxuQG1peGluIG1lbnUtaWNvbi1wb3NpdGlvbigkcG9zaXRpb246IGxlZnQsICRzcGFjaW5nOiAkbWVudS1pY29uLXNwYWNpbmcpIHtcbiAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmc7XG5cbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRzcGFjaW5nO1xuXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luOiAwIGF1dG8gJHNwYWNpbmc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbjogJHNwYWNpbmcgYXV0byAwO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWVudS10ZXh0IHtcbiAgcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XG5cbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuQG1peGluIG1lbnUtc3RhdGUtYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZSwgKCRtZW51LWl0ZW0tY29sb3ItYWN0aXZlLCAkbWVudS1pdGVtLWNvbG9yLWFsdC1hY3RpdmUpKTtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVudSB7XG4gIC5tZW51IHtcbiAgICBAaW5jbHVkZSBtZW51LWJhc2U7XG5cbiAgICAvLyBEZWZhdWx0IG9yaWVudGF0aW9uOiBob3Jpem9udGFsXG4gICAgJiwgJi5ob3Jpem9udGFsIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgIH1cblxuICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIG1vZGlmaWVyXG4gICAgJi52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aCBtb2RpZmllciBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvblxuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlXG4gICAgJi5zaW1wbGUge1xuICAgICAgQGluY2x1ZGUgbWVudS1zaW1wbGU7XG4gICAgfVxuXG4gICAgLy8gQnJlYWtwb2ludCBzcGVjaWZpYyB2ZXJzaW9uc1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiBmYWxzZSkge1xuICAgICAgJi4jeyQtemYtc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgICAgfVxuXG4gICAgICAmLiN7JC16Zi1zaXplfS12ZXJ0aWNhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tZXhwYW5kZWQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tc2ltcGxlIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYubmVzdGVkIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkO1xuICAgIH1cblxuICAgIC8vIEljb24gQmFzZSBTdHlsZXNcbiAgICAmLmljb25zIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XG4gICAgfVxuXG4gICAgLy8gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSBmb3IgYWN0aXZlIHN0YXRlXG4gICAgQGlmICRtZW51LWljb25zLWJhY2stY29tcGF0IHtcbiAgICAgICYuaWNvbi10b3AsXG4gICAgICAmLmljb24tcmlnaHQsXG4gICAgICAmLmljb24tYm90dG9tLFxuICAgICAgJi5pY29uLWxlZnQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWljb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEljb24gTGVmdFxuICAgICYuaWNvbi1sZWZ0IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihsZWZ0KTtcbiAgICB9XG5cbiAgICAvLyBJY29uIFJpZ2h0XG4gICAgJi5pY29uLXJpZ2h0IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihyaWdodCk7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBUb3BcbiAgICAmLmljb24tdG9wIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbih0b3ApO1xuICAgIH1cblxuICAgIC8vIEljb24gQm90dG9tXG4gICAgJi5pY29uLWJvdHRvbSB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24oYm90dG9tKTtcbiAgICB9XG5cbiAgICAvLyBBY3RpdmUgc3RhdGVcbiAgICAuaXMtYWN0aXZlID4gYSB7XG4gICAgICBAaW5jbHVkZSBtZW51LXN0YXRlLWFjdGl2ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSBmb3IgYWN0aXZlIHN0YXRlXG4gICAgQGlmICRtZW51LXN0YXRlLWJhY2stY29tcGF0IHtcbiAgICAgIC5hY3RpdmUgPiBhIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1zdGF0ZS1hY3RpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gbGVmdFxuICAgICYuYWxpZ24tI3skZ2xvYmFsLWxlZnR9IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24obGVmdCk7XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gcmlnaHRcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihyaWdodCk7XG5cbiAgICAgIC5uZXN0ZWQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkbmVzdGVkLWFsaWdubWVudDogcmlnaHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsaWduIGNlbnRlclxuICAgICYuYWxpZ24tY2VudGVyIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24oY2VudGVyKTtcbiAgICB9XG5cbiAgICAubWVudS10ZXh0IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtdGV4dDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQge1xuICAgIC5tZW51LWNlbnRlcmVkIHtcbiAgICAgID4gLm1lbnUge1xuICAgICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihjZW50ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByZXZlbnQgRk9VQyB3aGVuIHVzaW5nIHRoZSBSZXNwb25zaXZlIE1lbnUgcGx1Z2luXG4gIC5uby1qcyBbZGF0YS1yZXNwb25zaXZlLW1lbnVdIHVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCJAbWl4aW4gZm91bmRhdGlvbi1tZW51LWljb24ge1xuICAubWVudS1pY29uIHtcbiAgICBAaW5jbHVkZSBoYW1idXJnZXIoJGNvbG9yOiAkdGl0bGViYXItaWNvbi1jb2xvciwgJGNvbG9yLWhvdmVyOiAkdGl0bGViYXItaWNvbi1jb2xvci1ob3Zlcik7XG4gIH1cblxuICAubWVudS1pY29uLmRhcmsge1xuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcjtcbiAgfVxufVxuIiwiLy8vL1xuLy8vIEBncm91cCBhY2NvcmRpb24tbWVudVxuLy8vL1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGlmIGFjY29yZGlvbiBtZW51cyBoYXZlIHRoZSBkZWZhdWx0IGFycm93IHN0eWxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9ubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gYm9yZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1ib3JkZXI6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIExpc3RcbiRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyOiAkYWNjb3JkaW9ubWVudS1ib3JkZXIgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgdG9nZ2xlIGJhY2tncm91bmQgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDogNDBweCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSB0b2dnbGUgYmFja2dyb3VuZCBoZWlnaHQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplOiA2cHggIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1hY2NvcmRpb24tbWVudS1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQ6bm90KC5oYXMtc3VibWVudS10b2dnbGUpID4gYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRhY2NvcmRpb25tZW51LWFycm93LXNpemUsICRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZSAvIDIpO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLWxlZnQgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICByaWdodDogMXJlbTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodCAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFyZW07XG4gIH1cbn1cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51IHtcblxuICAuYWNjb3JkaW9uLW1lbnUge1xuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgICBib3JkZXItdG9wOiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1yaWdodDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgICBib3JkZXItbGVmdDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgfVxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBAaWYgJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgICAgcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgYSB7XG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luKTtcbiAgICB9XG5cbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW4sIHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzO1xuXG4gICAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50W2FyaWEtZXhwYW5kZWQ9J3RydWUnXSA+IGE6OmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgbGkge1xuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLmhhcy1zdWJtZW51LXRvZ2dsZSA+IGEge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcbiAgfVxuXG4gIC8vIFN1Ym1lbnUgdG9nZ2xlXG4gIC5zdWJtZW51LXRvZ2dsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xuXG4gICAgd2lkdGg6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xuICAgIGhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtaGVpZ2h0O1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI7XG5cbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgYXJyb3cgdG8gdGhlIHRvZ2dsZVxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSg2cHgsICRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcblxuICAgICAgdG9wOiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbWFyZ2luOiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJvdGF0ZSB0aGUgYXJyb3cgd2hlbiBtZW51IGlzIG9wZW5cbiAgLnN1Ym1lbnUtdG9nZ2xlW2FyaWEtZXhwYW5kZWQ9J3RydWUnXTo6YWZ0ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKC0xKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xuICB9XG5cbiAgLnN1Ym1lbnUtdG9nZ2xlLXRleHQge1xuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJpbGxkb3duXG4vLy8vXG5cbi8vLyBUcmFuc2l0aW9uIHByb3BlcnR5IHRvIHVzZSBmb3IgYW5pbWF0aW5nIG1lbnVzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRkcmlsbGRvd24tdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGxpbmVhciAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYXJyb3dzIHRvIGRyaWxsZG93biBpdGVtcyB3aXRoIHN1Ym1lbnVzLCBhcyB3ZWxsIGFzIHRoZSBiYWNrIGJ1dHRvbi5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJpbGxkb3duLWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyaWxsZG93bi1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgbmVzdGVkIG1hcmdpblxuLy8vIEB0eXBlIE51bWJlclxuJGRyaWxsZG93bi1uZXN0ZWQtbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHRvcCBsZXZlbCBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IGl0ZW0gcGFkZGluZyBpbiB0aGUgc3VibWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tc3VibWVudS1wYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcmlsbGRvd24gc3VibWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcmlsbGRvd24tYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gemYtZHJpbGxkb3duLWxlZnQtcmlnaHQtYXJyb3dzIHtcbiAgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJpbGxkb3duLWFycm93LXNpemUsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtcmlnaHQpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcmlsbGRvd24tYXJyb3ctc2l6ZTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgfVxuICB9XG5cbiAgJi5hbGlnbi1sZWZ0IC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgcmlnaHQpO1xuICAgIHJpZ2h0OiAxcmVtO1xuICAgIGxlZnQ6IGF1dG87XG4gIH1cblxuICAmLmFsaWduLXJpZ2h0IC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgbGVmdCk7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMXJlbTtcbiAgfVxuXG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51IHtcbiAgLy8gQXBwbGllZCB0byB0aGUgTWVudSBjb250YWluZXJcbiAgLmlzLWRyaWxsZG93biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICBsaSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAmLmFuaW1hdGUtaGVpZ2h0IHtcbiAgICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSB0b3AgbGV2ZWwgPHVsPlxuICAuZHJpbGxkb3duIHtcbiAgICBhIHtcbiAgICAgIHBhZGRpbmc6ICRkcmlsbGRvd24tcGFkZGluZztcbiAgICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAvLyBBcHBsaWVkIHRvIHN1Ym1lbnUgPHVsPnNcbiAgICAuaXMtZHJpbGxkb3duLXN1Ym1lbnUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgI3skZ2xvYmFsLWxlZnR9OiAxMDAlO1xuICAgICAgei1pbmRleDogLTE7XG5cbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYmFja2dyb3VuZDogJGRyaWxsZG93bi1zdWJtZW51LWJhY2tncm91bmQ7XG4gICAgICB0cmFuc2l0aW9uOiAkZHJpbGxkb3duLXRyYW5zaXRpb247XG5cbiAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgLTEwMCUsIDEwMCUpKTtcbiAgICAgIH1cblxuICAgICAgJi5pcy1jbG9zaW5nIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gbHRyLCAxMDAlLCAtMTAwJSkpO1xuICAgICAgfVxuXG4gICAgICAvLyBTdWJtZW51IGl0ZW0gcGFkZGluZ1xuICAgICAgYSB7XG4gICAgICAgIHBhZGRpbmc6ICRkcmlsbGRvd24tc3VibWVudS1wYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5uZXN0ZWQuaXMtZHJpbGxkb3duLXN1Ym1lbnUge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGRyaWxsZG93bi1uZXN0ZWQtbWFyZ2luKTtcbiAgICB9XG5cbiAgICAuZHJpbGxkb3duLXN1Ym1lbnUtY292ZXItcHJldmlvdXMge1xuICAgICAgbWluLWhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBAaWYgJGRyaWxsZG93bi1hcnJvd3Mge1xuICAgICAgQGluY2x1ZGUgemYtZHJpbGxkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuXG4gICAgICAuanMtZHJpbGxkb3duLWJhY2sgPiBhOjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyaWxsZG93bi1hcnJvdy1zaXplLCAkZHJpbGxkb3duLWFycm93LWNvbG9yLCAkZ2xvYmFsLWxlZnQpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwLjc1cmVtOyAvLyBDcmVhdGVzIHNwYWNlIGJldHdlZW4gdGhlIGFycm93IGFuZCB0aGUgdGV4dFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyb3Bkb3duLW1lbnVcbi8vLy9cblxuLy8vIEVuYWJsZXMgYXJyb3dzIGZvciBpdGVtcyB3aXRoIGRyb3Bkb3duIG1lbnVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRkcm9wZG93bm1lbnUtYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3I6ICRhbmNob3ItY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplOiA2cHggIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgcGFkZGluZyBmb3IgYWxpZ25pbmcgdGhlIGFycm93IGNvcnJlY3RseS5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZzogMS41cmVtICFkZWZhdWx0O1xuXG4vLy8gTWluaW11bSB3aWR0aCBvZiBkcm9wZG93biBzdWItbWVudXMuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyb3Bkb3ducy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIHRvcCBsZXZlbCBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgbmVzdGVkIG1hcmdpblxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3dubWVudS1uZXN0ZWQtbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3Igc3ViLW1lbnUgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGRyb3Bkb3dubWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGZvciBkcm9wZG93biBzdWItbWVudXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3dubWVudS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vIEJvcmRlciB3aWR0aCBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8gVXNlZCB0byBhZGp1c3QgdG9wIG1hcmdpbiBvZiBhIHN1Yi1tZW51IGlmIGEgYm9yZGVyIGlzIHVzZWQuXG4vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoOiBudGgoJGRyb3Bkb3dubWVudS1ib3JkZXIsIDEpO1xuXG4vLy8gVGV4dCBjb2xvciBvZiBhbiBhY3RpdmUgZHJvcGRvd24gbWVudSBpdGVtLiBFeHBsaWNpdCBvdmVycmlkZSBmb3IgbWVudSBkZWZhdWx0c1xuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY3RpdmUgZHJvcGRvd24gbWVudSBpdGVtLiBFeHBsaWNpdCBvdmVycmlkZSBmb3IgbWVudSBkZWZhdWx0c1xuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd24tbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiB0cmFuc3BhcmVudCAhZGVmYXVsdDtcblxuQG1peGluIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzIHtcbiAgPiBhOjphZnRlciB7XG4gICAgI3skZ2xvYmFsLXJpZ2h0fTogMTRweDtcbiAgfVxuXG4gICYub3BlbnMtbGVmdCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCBsZWZ0KTtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiA1cHg7XG4gIH1cblxuICAmLm9wZW5zLXJpZ2h0ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIHJpZ2h0KTtcbiAgfVxufVxuXG5AbWl4aW4gZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oJGRpcjogaG9yaXpvbnRhbCkge1xuICBAaWYgJGRpciA9PSBob3Jpem9udGFsIHtcbiAgICA+IGxpLm9wZW5zLWxlZnQgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gbGkub3BlbnMtcmlnaHQgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICA+IGxpLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50ID4gYSB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogJGRyb3Bkb3dubWVudS1hcnJvdy1wYWRkaW5nO1xuICAgICAgfVxuXG4gICAgICA+IGxpLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDVweDtcbiAgICAgICAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMSAqICgkZHJvcGRvd25tZW51LWFycm93LXNpemUgLyAyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgPiBsaSB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1sZWZ0IHtcbiAgICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1yaWdodCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgICAgQGluY2x1ZGUgemYtZHJvcGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBkcm9wZG93bi1tZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnUge1xuICAuZHJvcGRvd24ubWVudSB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG5cbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgICB9XG5cbiAgICAvLyBUb3AtbGV2ZWwgaXRlbVxuICAgID4gbGkgPiBhIHtcbiAgICAgIGJhY2tncm91bmQ6ICRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDtcbiAgICAgIHBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAvLyBUb3AtbGV2ZWwgaXRlbSBhY3RpdmUgc3RhdGVcbiAgICA+IGxpLmlzLWFjdGl2ZSA+IGEge1xuICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgIGNvbG9yOiAkZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAubm8tanMgJiB1bCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5uZXN0ZWQuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW4pO1xuICAgIH1cblxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgIH1cblxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgICYuI3skc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LmZpcnN0LXN1YiB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLW1lbnUudmVydGljYWwge1xuICAgIHdpZHRoOiAxMDBweDtcblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgYTo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTtcbiAgICB9XG5cbiAgICAmLm9wZW5zLWlubmVyID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuXG4gICAgICB0b3A6IDEwMCU7XG4gICAgICBAaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYub3BlbnMtbGVmdCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG5cbiAgICAmLm9wZW5zLXJpZ2h0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtaW4td2lkdGg6ICRkcm9wZG93bm1lbnUtbWluLXdpZHRoO1xuXG4gICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDtcblxuICAgIC5kcm9wZG93biAmIGEge1xuICAgICAgcGFkZGluZzogJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50IHtcbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAodHlwZS1vZigkZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCkgPT0gJ251bWJlcicpIHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgbWFyZ2luLXRvcDogKC0kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiBsaSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvLyBbVE9ET10gQ3V0IGJhY2sgc3BlY2lmaWNpdHlcbiAgICAvLyY6bm90KC5qcy1kcm9wZG93bi1ub2hvdmVyKSA+IC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudDpob3ZlciA+ICYsIC8vIHdoeSBpcyB0aGlzIGxpbmUgbmVlZGVkPyBPcGVuaW5nIGlzIGhhbmRsZWQgYnkgSlMgYW5kIHRoaXMgY2F1c2VzIHNvbWUgdWdseSBmbGlja2VyaW5nIHdoZW4gdGhlIHN1YiBpcyByZS1wb3NpdGlvbmVkIGF1dG9tYXRpY2FsbHkuLi5cbiAgICAmLmpzLWRyb3Bkb3duLWFjdGl2ZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvZmYtY2FudmFzXG4vLy8vXG5cbi8vLyBXaWR0aCBtYXAgb2YgYSBsZWZ0L3JpZ2h0IG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTWFwXG4kb2ZmY2FudmFzLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgbWFwIG9mIGEgdG9wL2JvdHRvbSBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE1hcFxuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKFxuICBzbWFsbDogMjUwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBmb3IgdGhlIG9mZi1jYW52YXMgb3ZlcmxhcCBwYW5lbC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KSAhZGVmYXVsdDtcblxuLy8vIElubmVyIGJveCBzaGFkb3cgc2l6ZSBmb3IgdGhlIG9mZi1jYW52YXMgcHVzaCBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemU6IDIwcHggIWRlZmF1bHQ7XG5cbi8vLyBJbm5lciBib3ggc2hhZG93IGNvbG9yIGZvciB0aGUgb2ZmLWNhbnZhcyBwdXNoIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIGNvbnRlbnQgb3ZlcmxheS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg6IDExICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBwdXNoYCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgd2l0aCB0aGUgYG92ZXJsYXBgIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAxMyAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB1c2luZyB0aGUgYHJldmVhbC1mb3ItKmAgY2xhc3NlcyBvciBtaXhpbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cyAhZGVmYXVsdDtcblxuLy8vIFRpbWluZyBmdW5jdGlvbiBvZiB0aGUgYW5pbWF0aW9uIG9uIGFuIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgS2V5d29yZFxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYSByZXZlYWxlZCBvZmYtY2FudmFzIHdpbGwgYmUgZml4ZWQtcG9zaXRpb24sIGFuZCBzY3JvbGwgd2l0aCB0aGUgc2NyZWVuLlxuLy8vIEB0eXBlIEJvb2xcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIG92ZXJsYXkgdGhhdCBhcHBlYXJzIHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gQ1NTIGNsYXNzIHVzZWQgZm9yIHRoZSBtYWluIGNvbnRlbnQgYXJlYS4gVGhlIG9mZi1jYW52YXMgbWl4aW5zIHVzZSB0aGlzIHRvIHRhcmdldCB0aGUgcGFnZSBjb250ZW50LlxuJG1haW5jb250ZW50LWNsYXNzOiAnb2ZmLWNhbnZhcy1jb250ZW50JyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzZWxpbmUgc3R5bGVzIGZvciBvZmYtY2FudmFzLiBUaGlzIENTUyBpcyByZXF1aXJlZCB0byBtYWtlIHRoZSBvdGhlciBwaWVjZXMgd29yay5cbkBtaXhpbiBvZmYtY2FudmFzLWJhc2ljcyB7XG5cbiAgLy8vIFRyYW5zZm9ybSBkZXByZWNhdGVkIHNpemUgc2V0dGluZ3MgaW50byBtYXAgJiBzaG93IHdhcm5pbmdcbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhvZmZjYW52YXMtc2l6ZSkge1xuICAgICRvZmZjYW52YXMtc2l6ZXM6IChzbWFsbDogJG9mZmNhbnZhcy1zaXplLCBtZWRpdW06ICRvZmZjYW52YXMtc2l6ZSkgIWdsb2JhbDtcbiAgICBAd2FybiAnJG9mZmNhbnZhcy1zaXplIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCB1c2VkIGFueW1vcmUhIFBsZWFzZSB1cGRhdGUgeW91ciBzZXR0aW5ncyBhbmQgdXNlIHRoZSBtYXAgJG9mZmNhbnZhcy1zaXplcyBpbnN0ZWFkJztcbiAgfVxuICBAaWYgdmFyaWFibGUtZXhpc3RzKG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSB7XG4gICAgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKHNtYWxsOiAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUsIG1lZGl1bTogJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSAhZ2xvYmFsO1xuICAgIEB3YXJuICckb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgbm90IHVzZWQgYW55bW9yZSEgUGxlYXNlIHVwZGF0ZSB5b3VyIHNldHRpbmdzIGFuZCB1c2UgdGhlIG1hcCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzIGluc3RlYWQnO1xuICB9XG5cbiAgLy8gQ2hlY2tzIHRoZSB6LWluZGV4ZXMgYW5kIGluY3JlYXNlIHRoZW0gZHVlIHRvIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBvdmVybGF5J3Mgei1pbmRleCBpcyBuZXcgc2luY2UgdjYuNCBhbmQgbWF5IGJlIGlkZW50aWNhbCB0byB0aGUgdXNlciBjdXN0b20gc2V0dGluZ3Mgb2YgdGhlIHB1c2ggei1pbmRleC5cbiAgQGlmICRvZmZjYW52YXMtcHVzaC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcHVzaC16aW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXggPD0gJG9mZmNhbnZhcy1wdXNoLXppbmRleCB7ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4ICsgMSAhZ2xvYmFsOyB9XG5cbiAgLy8gSGlkZXMgb3ZlcmZsb3cgb24gYm9keSB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cbiAgLmlzLW9mZi1jYW52YXMtb3BlbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgb3ZlcmxheSAoZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQpXG4gIC5qcy1vZmYtY2FudmFzLW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4O1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmcsIHZpc2liaWxpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuXG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ7XG5cbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgfVxuXG4gICAgJi5pcy1jbG9zYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgJi5pcy1vdmVybGF5LWFic29sdXRlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG5cbiAgICAmLmlzLW92ZXJsYXktZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYW4gb2ZmLWNhbnZhcyB3cmFwcGVyLlxuQG1peGluIG9mZi1jYW52YXMtd3JhcHBlcigpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgcGFuZWwuXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNlKFxuICAkYmFja2dyb3VuZDogJG9mZmNhbnZhcy1iYWNrZ3JvdW5kLFxuICAkdHJhbnNpdGlvbjogJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nLFxuICAkZml4ZWQ6IHRydWVcbikge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG5cbiAgQGlmICRmaXhlZCA9PSB0cnVlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgb2ZmLWNhbnZhcyB6LWluZGV4LlxuICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xuXG4gIC8vIEluY3JlYXNlIENTUyBzcGVjaWZpY2l0eVxuICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleDtcbiAgfVxuXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbjtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXG4gIC8vIEhpZGUgaW5hY3RpdmUgb2ZmLWNhbnZhcyB3aXRoaW4gdGhlIGNvbnRlbnQgdGhhdCBoYXZlIHRoZSBzYW1lIHBvc2l0aW9uXG4gICYuaXMtY2xvc2VkIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBPdmVybGFwIG9ubHkgc3R5bGVzLlxuICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICBib3gtc2hhZG93OiAkb2ZmY2FudmFzLXNoYWRvdztcbiAgICB9XG4gIH1cblxuICAvLyBTZXRzIHRyYW5zZm9ybSB0byAwIHRvIHNob3cgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbiAgJi5pcy1vcGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdG8gcG9zaXRpb24gYW4gb2ZmLWNhbnZhcyBwYW5lbCB0byB0aGUgbGVmdC9yaWdodC90b3AvYm90dG9tLlxuQG1peGluIG9mZi1jYW52YXMtcG9zaXRpb24oXG4gICRwb3NpdGlvbjogbGVmdCxcbiAgJG9yaWVudGF0aW9uOiBob3Jpem9udGFsLFxuICAkc2l6ZXM6IGlmKCRvcmllbnRhdGlvbiA9PSBob3Jpem9udGFsLCAkb2ZmY2FudmFzLXNpemVzLCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzKVxuKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcblxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG5cbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUgaXMgc2V0LCBhZGQgaW5uZXIgYm94LXNoYWRvdy5cbiAgLy8gVGhpcyBtaW1pY3MgdGhlIG9mZi1jYW52YXMgcGFuZWwgaGF2aW5nIGEgbG93ZXIgei1pbmRleCwgd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBvbmUuXG4gIEBpZiAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplIHtcbiAgICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhyaWdodCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3cobGVmdCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KGJvdHRvbSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KHRvcCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbi8vLyBTZXRzIHRoZSBzdHlsZXMgZm9yIHRoZSBjb250ZW50IGNvbnRhaW5lci5cbkBtaXhpbiBvZmYtY2FudmFzLWNvbnRlbnQoKSB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIC8vIEJpbmQgdG8gaGFzLXRyYW5zaXRpb24tWCBjbGFzcyB0byBwcmV2ZW50IHRyYW5zaXRpb24gZm9yIHRyYW5zZm9ybTpub25lXG4gICYuaGFzLXRyYW5zaXRpb24tb3ZlcmxhcCxcbiAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIHNjb3BlIHVudGlsIHRoZSBlbGVtZW50IGlzIGNsb3NlZCAobWFrZXMgc3VyZSB0cmFuc2l0aW9uZW5kIGdldHMgdHJpZ2dlcmVkKVxuICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG5cbiAgLy8gQ29uc2lkZXIgZWxlbWVudCAmIGNvbnRlbnQsIG5lc3RlZCBpbiBhbm90aGVyIGNvbnRlbnRcbiAgLm9mZi1jYW52YXMuaXMtb3BlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIHRoYXQgcmV2ZWFsIGFuIG9mZi1jYW52YXMgcGFuZWwuXG5AbWl4aW4gb2ZmLWNhbnZhcy1yZXZlYWwoXG4kcG9zaXRpb246IGxlZnQsXG4kemluZGV4OiAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsXG4kY29udGVudDogJG1haW5jb250ZW50LWNsYXNzLFxuJGJyZWFrcG9pbnQ6IHNtYWxsXG4pIHtcbiAgdHJhbnNmb3JtOiBub25lO1xuICB6LWluZGV4OiAkemluZGV4O1xuICB0cmFuc2l0aW9uOiBub25lO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXG4gIEBpZiBub3QgJG9mZmNhbnZhcy1maXhlZC1yZXZlYWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC5jbG9zZS1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBDb25zaWRlciByZXZlYWxlZCBlbGVtZW50IGlzIG5lc3RlZCBpbiBjb250ZW50XG4gIC4jeyRtYWluY29udGVudC1jbGFzc30gJiB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgQGF0LXJvb3QgLiN7JGNvbnRlbnR9Lmhhcy1yZXZlYWwtI3skcG9zaXRpb259IHtcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAtemYtZ2V0LWJwLXZhbCgkb2ZmY2FudmFzLXNpemVzLCAkYnJlYWtwb2ludCk7XG4gIH1cblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAocHJpb3IgdG8gdjYuNClcbiAgJiB+IC4jeyRjb250ZW50fSB7XG4gICAgbWFyZ2luLSN7JHBvc2l0aW9ufTogLXpmLWdldC1icC12YWwoJG9mZmNhbnZhcy1zaXplcywgJGJyZWFrcG9pbnQpO1xuICB9XG59XG5cbi8vLyBPdmVycmlkZXMgdGhlIG9mZi1jYW52YXMgc3R5bGVzXG5AbWl4aW4gaW4tY2FudmFzKCkge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHdpZHRoOiBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbjogbm9uZTtcblxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcbiAgJi5wb3NpdGlvbi1sZWZ0LFxuICAmLnBvc2l0aW9uLXJpZ2h0LFxuICAmLnBvc2l0aW9uLXRvcCxcbiAgJi5wb3NpdGlvbi1ib3R0b20ge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vZmYtY2FudmFzIHtcbiAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNpY3M7XG5cbiAgLy8gT2ZmLWNhbnZhcyB3cmFwcGVyXG4gIC5vZmYtY2FudmFzLXdyYXBwZXIge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtd3JhcHBlcjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgY29udGFpbmVyXG4gIC5vZmYtY2FudmFzIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2U7XG5cbiAgICAvLyBGb3JjZSBwb3NpdGlvbiBhYnNvbHV0ZSBmb3IgbmVzdGVkIG9mZi1jYW52YXMgYmVjYXVzZSBmaXhlZCBkb2Vzbid0IHdvcmsgZm9yIHB1c2ggdHJhbnNpdGlvbiB3aXRoaW4gdGhlIHRyYW5zZm9ybSBzY29wZS5cbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9ICYge1xuICAgICAgLy8gTk9URTogc2luY2Ugb3ZlcmxhcCB0cmFuc2l0aW9uIGlzIGN1cnJlbnRseSBmb3JjZWQgaWYgbmVzdGVkLCB0aGVyZSdzIG5vIG5lZWQgdG8gZm9yY2UgcG9zaXRpb24gYWJzb2x1dGUgdW50aWwgbmVzdGVkIHB1c2ggdHJhbnNpdGlvbiBpcyBzdXBwb3J0ZWQuXG4gICAgICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXIgd2l0aCBhYnNvbHV0ZSBwb3NpdGlvblxuICAub2ZmLWNhbnZhcy1hYnNvbHV0ZSB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlKCRmaXhlZDogZmFsc2UpO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBwb3NpdGlvbiBjbGFzc2VzXG4gIC5wb3NpdGlvbi1sZWZ0ICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihsZWZ0LCAgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi1yaWdodCAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihyaWdodCwgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi10b3AgICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbih0b3AsICAgIHZlcnRpY2FsKTsgfVxuICAucG9zaXRpb24tYm90dG9tICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24oYm90dG9tLCB2ZXJ0aWNhbCk7IH1cblxuICAub2ZmLWNhbnZhcy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWNvbnRlbnQ7XG4gIH1cblxuICAvLyBSZXZlYWwgb2ZmLWNhbnZhcyBwYW5lbCBvbiBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5wb3NpdGlvbi1sZWZ0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGxlZnQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tcmlnaHQucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwocmlnaHQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tdG9wLnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKHRvcCwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi1ib3R0b20ucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwoYm90dG9tLCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTW92ZSBpbi1jYW52YXMgZm9yIGxhcmdlciBzY3JlZW5zXG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRuYW1lICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgLm9mZi1jYW52YXMuaW4tY2FudmFzLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgaW4tY2FudmFzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tc3RpY2t5IHtcbiAgLnN0aWNreS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5zdGlja3kge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICAuc3RpY2t5LmlzLXN0dWNrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogNTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgICYuaXMtYXQtdG9wIHtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLnN0aWNreS5pcy1hbmNob3JlZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGl0bGUtYmFyXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgV2VpZ2h0XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZCAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gdGhlIG1lbnUgaWNvbiBhbmQgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10aXRsZS1iYXIge1xuICAudGl0bGUtYmFyIHtcbiAgICBwYWRkaW5nOiAkdGl0bGViYXItcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiAkdGl0bGViYXItYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRpdGxlYmFyLWNvbG9yO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLm1lbnUtaWNvbiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICR0aXRsZWJhci1pY29uLXNwYWNpbmc7XG4gICAgfVxuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgLnRpdGxlLWJhci1sZWZ0LFxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG5cbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLnRpdGxlLWJhci1sZWZ0IHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLnRpdGxlLWJhci10aXRsZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZm9udC13ZWlnaHQ6ICR0aXRsZWJhci10ZXh0LWZvbnQtd2VpZ2h0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9wLWJhclxuLy8vL1xuXG4vLy8gUGFkZGluZyBmb3IgdGhlIHRvcCBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0b3AgYmFyLiBUaGlzIGNvbG9yIGFsc28gY2FzY2FkZXMgdG8gbWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdG9wYmFyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBzdWJtZW51cyB3aXRoaW4gdGhlIHRvcCBiYXIuIFVzZWZ1bGwgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIHRyYW5zcGFyZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHRvcGJhci1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBmb3IgdGhlIHRvcCBiYXIgdGl0bGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLXRpdGxlLXNwYWNpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBgPGlucHV0PmAgZWxlbWVudHMgaW5zaWRlIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHRvcCBiYXIgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0b3AgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiB0b3AtYmFyLWNvbnRhaW5lciB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgcGFkZGluZzogJHRvcGJhci1wYWRkaW5nO1xuXG4gICYsXG4gIHVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4gIH1cblxuICAvLyBDaGVjayBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgZGlmZmVybnQgZnJvbSAkdG9wYmFyLWJhY2tncm91bmQtc3VibWVudVxuICBAaWYgKCR0b3BiYXItYmFja2dyb3VuZCAhPSAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZCkge1xuICAgIHVsIHVsIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RyYWluIHdpZHRoIG9mIGlucHV0cyBieSBkZWZhdWx0IHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8gYXJyYW5nZVxuICBpbnB1dCB7XG4gICAgbWF4LXdpZHRoOiAkdG9wYmFyLWlucHV0LXdpZHRoO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICB9XG5cbiAgLy8gVGhlIGFib3ZlIHN0eWxlcyBzaG91bGRuJ3QgYXBwbHkgdG8gaW5wdXQgZ3JvdXAgZmllbGRzXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gIH1cblxuICBpbnB1dC5idXR0b24geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gTWFrZXMgc2VjdGlvbnMgb2YgYSB0b3AgYmFyIHN0YWNrIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuQG1peGluIHRvcC1iYXItc3RhY2tlZCB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC8vIFN1Yi1zZWN0aW9uc1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBTdWItc2VjdGlvbnNcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gVW5kb2VzIHRoZSBDU1MgYXBwbGllZCBieSB0aGUgYHRvcC1iYXItc3RhY2tlZCgpYCBtaXhpbi5cbkBtaXhpbiB0b3AtYmFyLXVuc3RhY2sge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcblxuICAgIC50b3AtYmFyLWxlZnQge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvcC1iYXIge1xuICAvLyBUb3AgYmFyIGNvbnRhaW5lclxuICAudG9wLWJhciB7XG4gICAgQGluY2x1ZGUgdG9wLWJhci1jb250YWluZXI7XG5cbiAgICAvLyBTdGFjayBvbiBzbWFsbCBzY3JlZW5zIGJ5IGRlZmF1bHRcbiAgICBAaW5jbHVkZSB0b3AtYmFyLXN0YWNrZWQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0b3BiYXItdW5zdGFjay1icmVha3BvaW50KSB7XG4gICAgICBAaW5jbHVkZSB0b3AtYmFyLXVuc3RhY2s7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgY2xhc3NlcyBmb3Igc3RhY2tpbmcgb24gZWFjaCBzY3JlZW4gc2l6ZSAoZGVmaW5lZCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzKVxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgJi5zdGFja2VkLWZvci0jeyRzaXplfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0b3AtYmFyLXN0YWNrZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3ViLXNlY3Rpb25zXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIC50b3AtYmFyLXRpdGxlIHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgbWFyZ2luOiAkdG9wYmFyLXRpdGxlLXNwYWNpbmc7XG4gICAgfVxuXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50b3AtYmFyLXRpdGxlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgcGFkZGluZzogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xuXG4gICAgICAubWVudS1pY29uIHtcbiAgICAgICAgYm90dG9tOiAycHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRvcC1iYXItbGVmdCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZmxvYXRcbi8vLy9cblxuQG1peGluIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcyB7XG4gIC5mbG9hdC1sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmZsb2F0LXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5mbG9hdC1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIC5jbGVhcmZpeCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiAtemYtZmxleC1qdXN0aWZ5KCR0ZXh0LWRpcmVjdGlvbil7XG4gICQtemYtZmxleC1qdXN0aWZ5OiAoXG4gICAgJ2xlZnQnOiBpZigkdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBmbGV4LWVuZCwgZmxleC1zdGFydCksXG4gICAgJ3JpZ2h0JzogaWYoJHRleHQtZGlyZWN0aW9uID09IHJ0bCwgZmxleC1zdGFydCwgZmxleC1lbmQpLFxuICAgICdjZW50ZXInOiBjZW50ZXIsXG4gICAgJ2p1c3RpZnknOiBzcGFjZS1iZXR3ZWVuLFxuICAgICdzcGFjZWQnOiBzcGFjZS1hcm91bmQsXG4gICk7XG5cbiAgQHJldHVybiAkLXpmLWZsZXgtanVzdGlmeTtcbn1cblxuXG4kLXpmLWZsZXgtYWxpZ246IChcbiAgJ3RvcCc6IGZsZXgtc3RhcnQsXG4gICdib3R0b20nOiBmbGV4LWVuZCxcbiAgJ21pZGRsZSc6IGNlbnRlcixcbiAgJ3N0cmV0Y2gnOiBzdHJldGNoLFxuKTtcblxuJC16Zi1mbGV4LWRpcmVjdGlvbjogKFxuICAncm93Jzogcm93LFxuICAncm93LXJldmVyc2UnOiByb3ctcmV2ZXJzZSxcbiAgJ2NvbHVtbic6IGNvbHVtbixcbiAgJ2NvbHVtbi1yZXZlcnNlJzogY29sdW1uLXJldmVyc2UsXG4pO1xuXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGJ5IGFkZGluZyBgZGlzcGxheTogZmxleGAgdG8gdGhlIGVsZW1lbnQuXG5AbWl4aW4gZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBhbGlnbnMgdGhlIGl0ZW1zIHdpdGhpbiBhIGZsZXggY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeCBbbnVsbF0gLSBIb3Jpem9udGFsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgbGVmdGAsIGByaWdodGAsIGBjZW50ZXJgLCBganVzdGlmeWAsIG9yIGBzcGFjZWRgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgaG9yaXpvbnRhbCBhbGlnbm1lbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24oJHg6IG51bGwsICR5OiBudWxsKSB7XG4gIEBpZiAkeCB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1qdXN0aWZ5LCAkeCkge1xuICAgICAgJHg6IG1hcC1nZXQoJC16Zi1mbGV4LWp1c3RpZnksICR4KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeH0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGhvcml6b250YWwgYWxpZ25tZW50LiBVc2UgbGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSwgb3Igc3BhY2VkLic7XG4gICAgfVxuICB9XG5cbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAganVzdGlmeS1jb250ZW50OiAkeDtcbiAgYWxpZ24taXRlbXM6ICR5O1xufVxuXG4vLy8gVmVydGljYWxseSBhbGlnbiBhIHNpbmdsZSBjb2x1bW4gd2l0aGluIGEgZmxleCByb3cuIEFwcGx5IHRoaXMgbWl4aW4gdG8gYSBmbGV4IGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduLXNlbGYoJHk6IG51bGwpIHtcbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtY29sdW1uLWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAgYWxpZ24tc2VsZjogJHk7XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzb3VyY2Ugb3JkZXIgb2YgYSBmbGV4IGNoaWxkLiBDaGlsZHJlbiB3aXRoIGxvd2VyIG51bWJlcnMgYXBwZWFyIGZpcnN0IGluIHRoZSBsYXlvdXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvcmRlciBbMF0gLSBPcmRlciBudW1iZXIgdG8gYXBwbHkuXG5AbWl4aW4gZmxleC1vcmRlcigkb3JkZXI6IDApIHtcbiAgb3JkZXI6ICRvcmRlcjtcbn1cblxuLy8vIENoYW5nZSBmbGV4LWRpcmVjdGlvblxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpcmVjdGlvbiBbcm93XSAtIEZsZXggZGlyZWN0aW9uIHRvIHVzZS4gQ2FuIGJlXG4vLy8gICAtIHJvdyAoZGVmYXVsdCk6IHNhbWUgYXMgdGV4dCBkaXJlY3Rpb25cbi8vLyAgIC0gcm93LXJldmVyc2U6IG9wcG9zaXRlIHRvIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIGNvbHVtbjogc2FtZSBhcyByb3cgYnV0IHRvcCB0byBib3R0b21cbi8vLyAgIC0gY29sdW1uLXJldmVyc2U6IHNhbWUgYXMgcm93LXJldmVyc2UgdG9wIHRvIGJvdHRvbVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb246IHJvdykge1xuICBmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBGbGV4Ym94IFV0aWxpdGllc1xuLy8vL1xuLy9cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciB0aGUgY291bnQgb2Ygc291cmNlIG9yZGVyaW5nYFxuLy8vIEB0eXBlIE51bWJlclxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiA2ICFkZWZhdWx0O1xuXG4vLy8gUXVpY2tseSBkaXNhYmxlL2VuYWJsZSBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBWYW5pbGxhIEZsZXggSGVscGVycy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzOiB0cnVlICFkZWZhdWx0O1xuXG5AbWl4aW4gZmxleC1oZWxwZXJzIHtcbiAgLmZsZXgtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBmbGV4O1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtYXV0byB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cblxuICAuZmxleC1jaGlsZC1ncm93IHtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLXNocmluayB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cblxuICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcbiAgICAuZmxleC1kaXItI3skZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbigkcHJvcCk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jb250YWluZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1hdXRvIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLWdyb3cge1xuICAgICAgICAgICAgZmxleDogMSAwIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtc2hyaW5rIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlYWNoICRkaXIsICRwcm9wIGluICQtemYtZmxleC1kaXJlY3Rpb24ge1xuICAgICAgICAgICAgLiN7JHNpemV9LWZsZXgtZGlyLSN7JGRpcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbigkcHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlcyB7XG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IHVzaW5nIGp1c3RpZnktY29udGVudFxuICBAZWFjaCAkaGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWp1c3RpZnkge1xuICAgIC5hbGlnbi0jeyRoZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiAkaGRpcik7XG4gICAgfVxuICB9XG4gIFxuICAvLyBIb3Jpem9udGFsIGFsaWdubWVudCBTcGVjaWZpY2FsbHkgZm9yIFZlcnRpY2FsIE1lbnVcbiAgQGVhY2ggJGhkaXIsICRwcm9wIGluIG1hcC1yZW1vdmUoJC16Zi1mbGV4LWp1c3RpZnksICdqdXN0aWZ5JywgJ3NwYWNlZCcpIHtcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xuICAgICAgJi52ZXJ0aWNhbCB7XG4gICAgICAgICYubWVudSA+IGxpID4gYSB7XG4gICAgICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogJGhkaXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVmVydGljYWwgYWxpZ25tZW50IHVzaW5nIGFsaWduLWl0ZW1zIGFuZCBhbGlnbi1zZWxmXG4gIEBlYWNoICR2ZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtYWxpZ24ge1xuICAgIC5hbGlnbi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR5OiAkdmRpcik7XG4gICAgfVxuXG4gICAgLmFsaWduLXNlbGYtI3skdmRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbi1zZWxmKCR5OiAkdmRpcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2VudHJhbCBhbGlnbm1lbnQgb2YgY29udGVudFxuICAuYWxpZ24tY2VudGVyLW1pZGRsZSB7XG4gICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogY2VudGVyLCAkeTogbWlkZGxlKTtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQge1xuICAgICAgLiN7JC16Zi1zaXplfS1vcmRlci0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtb3JkZXIoJGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZhbmlsbGEgRmxleGJveCBIZWxwZXJzXG4gIEBpbmNsdWRlIGZsZXgtaGVscGVycztcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIEhpZGUgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBvbmx5IGRpc3BsYXlpbmcgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gc2hvdy1mb3IoJHNpemUpIHtcbiAgJHNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG4gIC8vIE1heCB2YWx1ZSBpcyAwLjJweCB1bmRlciB0aGUgbmV4dCBicmVha3BvaW50ICgwLjAyIC8gMTYgPSAwLjAwMTI1KS5cbiAgLy8gVXNlIGEgcHJlY2lzaW9uIHVuZGVyIDFweCB0byBzdXBwb3J0IGJyb3dzZXIgem9vbSwgYnV0IG5vdCB0byBsb3cgdG8gYXZvaWQgcm91bmRpbmcuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMTMxM1xuICAkc2l6ZTogLXpmLWJwLXRvLWVtKCRzaXplKSAtIC4wMDEyNTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIEhpZGUgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBvbmx5IGRpc3BsYXlpbmcgaXQgd2l0aGluIGEgY2VydGFpbiBicmVha3BvaW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gc2hvdy1mb3Itb25seSgkc2l6ZSkge1xuICAkbG93ZXItYm91bmQtc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcbiAgJHVwcGVyLWJvdW5kLXNpemU6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRzaXplKTtcblxuICAvLyBtb3JlIG9mdGVuIHRoYW4gbm90IHRoaXMgd2lsbCBiZSBjb3JyZWN0LCBqdXN0IG9uZSB0aW1lIHJvdW5kIHRoZSBsb29wIGl0IHdvbid0IHNvIHNldCBpbiBzY29wZSBoZXJlXG4gICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKSAtIC4wMDEyNTtcbiAgLy8gdGVzdCBhY3R1YWwgbG93ZXItYm91bmQtc2l6ZSwgaWYgMCBzZXQgaXQgdG8gMGVtXG4gIEBpZiBzdHJpcC11bml0KCRsb3dlci1ib3VuZC1zaXplKSA9PSAwIHtcbiAgICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSk7XG4gIH1cblxuICBAaWYgJHVwcGVyLWJvdW5kLXNpemUgPT0gbnVsbCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkdXBwZXItYm91bmQ6IC16Zi1icC10by1lbSgkdXBwZXItYm91bmQtc2l6ZSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3IoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yLW9ubHkoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBvbmx5KSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcyB7XG4gIC8vIEJhc2ljIGhpZGluZyBjbGFzc2VzXG4gIC5oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaW52aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIHZpc2liaWxpdHkgY2xhc3Nlc1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLmhpZGUtZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgaGlkZS1mb3IoJHNpemUpO1xuICAgICAgfVxuXG4gICAgICAuc2hvdy1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBzaG93LWZvcigkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmhpZGUtZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgaGlkZS1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgc2hvdy1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2NyZWVuIHJlYWRlciB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgLy8gTmVlZCBhIFwiaGlkZS1mb3Itc3JcIiBjbGFzcz8gQWRkIGFyaWEtaGlkZGVuPSd0cnVlJyB0byB0aGUgZWxlbWVudFxuICAuc2hvdy1mb3Itc3IsXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxuXG4gIC8vIE9ubHkgZGlzcGxheSB0aGUgZWxlbWVudCB3aGVuIGl0J3MgZm9jdXNlZFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZS1vZmY7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFuZHNjYXBlIGFuZCBwb3J0cmFpdCB2aXNpYmlsaXR5XG4gIC5zaG93LWZvci1sYW5kc2NhcGUsXG4gIC5oaWRlLWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuaGlkZS1mb3ItbGFuZHNjYXBlLFxuICAuc2hvdy1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIiN0b2FzdC1jb250YWluZXIge1xuXG4gIHotaW5kZXg6IDEwMDAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuXG4gIHBhZGRpbmc6IDguNXZoIDAgMCAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICBkaXYudG9hc3Qge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzO1xuXG4gICAgJi50b2FzdC10ZW1wbGF0ZSB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgc3Bhbi5tZXNzYWdlIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAgIHotaW5kZXg6IDEwMDAxO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgYm94LXNoYWRvdzogMnB4IDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yOCk7XG5cbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2MjYyNjI7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmI2YjZiO1xuICAgICAgcGFkZGluZzogLjNlbSAuNmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAvL29wYWNpdHk6IC45O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogLjQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cblxuICAgICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufSIsIi5iYWNrZ3JvdW5kIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMDAwMDAwO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU1LCA1NSwgNTUsIDAuNik7XG5cbiAgLm1vZGFsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIHdpZHRoOiA4MCU7XG5cbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWF4LWhlaWdodDogODAlO1xuICAgIG1heC13aWR0aDogbnRoKG50aCgkYnJlYWtwb2ludHMsIDQpLCAyKTtcblxuICAgICYuc21hbGwtbWFyZ2luIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgZG93bikge1xuICAgICAgICB3aWR0aDogOTUlO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50cyB7XG4gICAgICAmLm1heC0je250aCgkc2l6ZSwgMSl9IHtcbiAgICAgICAgbWF4LXdpZHRoOiBudGgoJHNpemUsIDIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC50aXRsZSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG4gICAgfVxuXG4gICAgLmNvbnRlbnQtY29udGFpbmVyIHtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAubG9hZGVyIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5jbG9zZSB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIC8vY29sb3I6ICNhYWE7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIC8vY29sb3I6IGJsYWNrO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubW9kYWwtYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICBwYWRkaW5nLXRvcDogMC41cmVtO1xuXG4gICAgICAuYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuMnJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwLjZlbSAwLjhlbTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBkb3duKSB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjNlbSAwLjVlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5jaG9vc2UtZGlhbG9nLXZhbHVlLXJvd3tcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgcGFkZGluZy10b3A6IDAuNWVtO1xuICAgICAgcGFkZGluZy1ib3R0b206IDAuNWVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1MCwgMTUwLCAxNTAsIDAuMTUpO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLXRvcDogMC4zcmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMC4zcmVtO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgfVxuXG4gICAgLy9BZGRpdGlvbmFsIGNsYXNzZXNcbiAgICAmLm5vLXRpdGxlIHtcbiAgICAgIC50aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn0iLCJAaW1wb3J0IFwibGliL2NvcmVTZXR0aW5nc1wiO1xuQGltcG9ydCBcImZvdW5kYXRpb25TZXR0aW5nc1wiO1xuXG4kZGVmYXVsdFRoZW1lVmFsdWVzOiAoXG4gICAgICAgIGNsYXNzOiBcIlwiLFxuICAvL3RoZW1lQ29sb3I6ICMzODM4MzgsXG4gICAgICAgIHRoZW1lQ29sb3I6ICNmZmZmZmYsXG4gICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzM1MzUzNSxcbiAgICAgICAgbGlua0NvbG9yOiAjMDAwLFxuICAgICAgICBzcGlubmVyQ29sb3I6ICMwMDAsXG4gICAgICAgIG5hdkJhclRleHRDb2xvcjogaW5oZXJpdCxcbiAgICAgICAgdGV4dENvbG9yOiAjMDAwLFxuICAgICAgICB0ZXh0Q29sb3IyOiAjNTU1NTU1LFxuICAgICAgICBsaWdodExpbmtDb2xvcjogI2ZmZixcbiAgICAgICAgbGlua0JvcmRlckJvdHRvbTogbm9uZSxcbiAgICAgICAgbGlua0hvdmVyQ29sb3I6ICM0ZTRlNGUsXG4gICAgICAgIGxpZ2h0TGlua0hvdmVyQ29sb3I6ICNjYWNhY2EsXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmYsXG4gICAgICAgIGJhY2tncm91bmQtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgjM2IzYjNiLCAjMTkxOTE5KSxcbiAgICAgICAgaGlnaGxpZ2h0OiAjRDU2QjUyLFxuICAgICAgICB0ZXh0Q29sb3JPbmU6ICNiY2JiYmIsXG4gICAgICAgIGNvbG9yT25lOiAjRjNGMUYxLFxuICAgICAgICBjb2xvclR3bzogIzNCM0IzQixcbiAgICAgICAgY29sb3JUaHJlZTogI0ZGRixcbiAgICAgICAgYnV0dG9uQm9yZGVyOiBub25lLFxuICAgICAgICBidXR0b25Db2xvcjogd2hpdGUsXG4pO1xuXG4kdGhlbWVzOiAoXG4gICAgICAgIGJsYWNrOihcbiAgICAgICAgICAgICAgICBjbGFzczogYmxhY2ssXG4gICAgICAgICAgLy90aGVtZUNvbG9yOiAjMDAwMDAwLFxuICAgICAgICAgICAgICAgIHRoZW1lQ29sb3I6ICNmZmZmZmYsXG4gICAgICAgICAgICAgICAgbGlnaHRUaGVtZUNvbG9yOiAjMzUzNTM1LFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICBzcGlubmVyQ29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgbmF2QmFyVGV4dENvbG9yOiBpbmhlcml0LFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3IyOiAjNTU1NTU1LFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0NvbG9yOiAjZmZmLFxuICAgICAgICAgICAgICAgIGxpbmtCb3JkZXJCb3R0b206IG5vbmUsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICM0ZTRlNGUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogI2NhY2FjYSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgjM2IzYjNiLCAjMTkxOTE5KSxcbiAgICAgICAgICAgICAgICBoaWdobGlnaHQ6ICNENTZCNTIsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yT25lOiAjYmNiYmJiLFxuICAgICAgICAgICAgICAgIGNvbG9yT25lOiAjRjNGMUYxLFxuICAgICAgICAgICAgICAgIGNvbG9yVHdvOiAjM0IzQjNCLFxuICAgICAgICAgICAgICAgIGNvbG9yVGhyZWU6ICNGRkYsXG4gICAgICAgICAgICAgICAgYnV0dG9uQm9yZGVyOiAxcHggc29saWQgYmxhY2ssXG4gICAgICAgICAgICAgICAgYnV0dG9uQ29sb3I6IGJsYWNrLFxuICAgICAgICApLFxuICAgICAgICByZWQ6KFxuICAgICAgICAgICAgICAgIGNsYXNzOiByZWQsXG4gICAgICAgICAgICAgICAgdGhlbWVDb2xvcjogI2ZmMDAwMCxcbiAgICAgICAgICAgICAgICBsaWdodFRoZW1lQ29sb3I6ICM4NzAwMTUsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yOiAjZmYzZDAwLFxuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvcjogI2I3MWMxYSxcbiAgICAgICAgICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjI6ICM1NTU1NTUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICNmZjNkMDAsXG4gICAgICAgICAgICAgICAgbGlua0JvcmRlckJvdHRvbTogbm9uZSxcbiAgICAgICAgICAgICAgICBsaW5rSG92ZXJDb2xvcjogI2ZmM2QwMCxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtIb3ZlckNvbG9yOiAjZmYzZDAwLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmZcbiAgICAgICAgKSxcbiAgICAgICAgYmx1ZTooXG4gICAgICAgICAgICAgICAgY2xhc3M6IGJsdWUsXG4gICAgICAgICAgICAgICAgdGhlbWVDb2xvcjogIzJjNThhZSxcbiAgICAgICAgICAgICAgICBsaWdodFRoZW1lQ29sb3I6ICMxYTMwNjIsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yOiAjNTQ2Y2ZlLFxuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvcjogIzY3M0FCNyxcbiAgICAgICAgICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjI6ICM1NTU1NTUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICM1NDZjZmUsXG4gICAgICAgICAgICAgICAgbGlua0JvcmRlckJvdHRvbTogbm9uZSxcbiAgICAgICAgICAgICAgICBsaW5rSG92ZXJDb2xvcjogIzU0NmNmZSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtIb3ZlckNvbG9yOiAjNTQ2Y2ZlLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmZcbiAgICAgICAgKSxcbiAgICAgICAgZ3JlZW46KFxuICAgICAgICAgICAgICAgIGNsYXNzOiBncmVlbixcbiAgICAgICAgICAgICAgICB0aGVtZUNvbG9yOiAjMDA4MDAwLFxuICAgICAgICAgICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzAwMzYxMyxcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3I6ICMwMDk4MjksXG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yOiAjMDA4MDAwLFxuICAgICAgICAgICAgICAgIG5hdkJhclRleHRDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yMjogIzU1NTU1NSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtDb2xvcjogIzAwOTgyOSxcbiAgICAgICAgICAgICAgICBsaW5rQm9yZGVyQm90dG9tOiBub25lLFxuICAgICAgICAgICAgICAgIGxpbmtIb3ZlckNvbG9yOiAjMDA5ODI5LFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0hvdmVyQ29sb3I6ICMwMDk4MjksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZlxuICAgICAgICApLFxuICAgICAgICBwaW5rOihcbiAgICAgICAgICAgICAgICBjbGFzczogcGluayxcbiAgICAgICAgICAgICAgICB0aGVtZUNvbG9yOiAjZmY2OWI0LFxuICAgICAgICAgICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzcwMzc0YSxcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3I6ICNmZTY0YWYsXG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yOiAjZmY2OWI0LFxuICAgICAgICAgICAgICAgIG5hdkJhclRleHRDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yMjogIzU1NTU1NSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtDb2xvcjogI2ZlNjRhZixcbiAgICAgICAgICAgICAgICBsaW5rQm9yZGVyQm90dG9tOiBub25lLFxuICAgICAgICAgICAgICAgIGxpbmtIb3ZlckNvbG9yOiAjZmU2NGFmLFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0hvdmVyQ29sb3I6ICNmZTY0YWYsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZlxuICAgICAgICApLFxuICAgICAgICBkYXJrOiAoXG4gICAgICAgICAgICAgICAgY2xhc3M6IGRhcmssXG4gICAgICAgICAgICAgICAgdGhlbWVDb2xvcjogIzM3MzczNyxcbiAgICAgICAgICAgICAgICBsaWdodFRoZW1lQ29sb3I6ICM0YjRiNGIsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yOiAjZmZmLFxuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiAjZmZmZmZmLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjI6ICM5YjliOWIsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICNmZmZmZmYsXG4gICAgICAgICAgICAgICAgbGlua0JvcmRlckJvdHRvbTogMXB4IHNvbGlkICNmZmZmZmYsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICNmZmZmZmYsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwXG4gICAgICAgIClcbik7XG5cbiR0aGVtZXM6IChcbiAgICAgICAgcmVkOihcbiAgICAgICAgICAgICAgICBjbGFzczogcmVkLFxuICAgICAgICAgICAgICAgIHRoZW1lQ29sb3I6ICNmZjAwMDAsXG4gICAgICAgICAgICAgICAgbGlnaHRUaGVtZUNvbG9yOiAjODcwMDE1LFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcjogI2ZmM2QwMCxcbiAgICAgICAgICAgICAgICBzcGlubmVyQ29sb3I6ICNiNzFjMWEsXG4gICAgICAgICAgICAgICAgbmF2QmFyVGV4dENvbG9yOiAjZmZmLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3IyOiAjNTU1NTU1LFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0NvbG9yOiAjZmYzZDAwLFxuICAgICAgICAgICAgICAgIGxpbmtCb3JkZXJCb3R0b206IG5vbmUsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICNmZjNkMDAsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogI2ZmM2QwMCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmXG4gICAgICAgICksXG4gICAgICAgIGJsdWU6KFxuICAgICAgICAgICAgICAgIGNsYXNzOiBibHVlLFxuICAgICAgICAgICAgICAgIHRoZW1lQ29sb3I6ICMyYzU4YWUsXG4gICAgICAgICAgICAgICAgbGlnaHRUaGVtZUNvbG9yOiAjMWEzMDYyLFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcjogIzU0NmNmZSxcbiAgICAgICAgICAgICAgICBzcGlubmVyQ29sb3I6ICM2NzNBQjcsXG4gICAgICAgICAgICAgICAgbmF2QmFyVGV4dENvbG9yOiAjZmZmLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3IyOiAjNTU1NTU1LFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0NvbG9yOiAjNTQ2Y2ZlLFxuICAgICAgICAgICAgICAgIGxpbmtCb3JkZXJCb3R0b206IG5vbmUsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICM1NDZjZmUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogIzU0NmNmZSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmXG4gICAgICAgICksXG4gICAgICAgIGdyZWVuOihcbiAgICAgICAgICAgICAgICBjbGFzczogZ3JlZW4sXG4gICAgICAgICAgICAgICAgdGhlbWVDb2xvcjogIzAwODAwMCxcbiAgICAgICAgICAgICAgICBsaWdodFRoZW1lQ29sb3I6ICMwMDM2MTMsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yOiAjMDA5ODI5LFxuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvcjogIzAwODAwMCxcbiAgICAgICAgICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjI6ICM1NTU1NTUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICMwMDk4MjksXG4gICAgICAgICAgICAgICAgbGlua0JvcmRlckJvdHRvbTogbm9uZSxcbiAgICAgICAgICAgICAgICBsaW5rSG92ZXJDb2xvcjogIzAwOTgyOSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtIb3ZlckNvbG9yOiAjMDA5ODI5LFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmZcbiAgICAgICAgKSxcbiAgICAgICAgcGluazooXG4gICAgICAgICAgICAgICAgY2xhc3M6IHBpbmssXG4gICAgICAgICAgICAgICAgdGhlbWVDb2xvcjogI2ZmNjliNCxcbiAgICAgICAgICAgICAgICBsaWdodFRoZW1lQ29sb3I6ICM3MDM3NGEsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yOiAjZmU2NGFmLFxuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvcjogI2ZmNjliNCxcbiAgICAgICAgICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjI6ICM1NTU1NTUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICNmZTY0YWYsXG4gICAgICAgICAgICAgICAgbGlua0JvcmRlckJvdHRvbTogbm9uZSxcbiAgICAgICAgICAgICAgICBsaW5rSG92ZXJDb2xvcjogI2ZlNjRhZixcbiAgICAgICAgICAgICAgICBsaWdodExpbmtIb3ZlckNvbG9yOiAjZmU2NGFmLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmZcbiAgICAgICAgKSxcbiAgICAgICAgYmxhY2s6KFxuICAgICAgICAgICAgICAgIGNsYXNzOiBibGFjayxcbiAgICAgICAgICAgICAgICB0aGVtZUNvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzM1MzUzNSxcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIG5hdkJhclRleHRDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yMjogIzU1NTU1NSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICBsaW5rQm9yZGVyQm90dG9tOiAxcHggc29saWQgIzAwMDAwMCxcbiAgICAgICAgICAgICAgICBsaW5rSG92ZXJDb2xvcjogIzRlNGU0ZSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtIb3ZlckNvbG9yOiAjY2FjYWNhLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmZcbiAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdDooXG4gICAgICAgICAgICAgICAgY2xhc3M6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgICAgIHRoZW1lQ29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgbGlnaHRUaGVtZUNvbG9yOiAjMzUzNTM1LFxuICAgICAgICAgICAgICAgIG5hdmJhckNvbG9yOiByZ2JhKDAsIDIwNSwgMCwgMC41KSwgLy9UT0RPIGJlbnV0emVuXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjI6ICM1NTU1NTUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgbGlua0JvcmRlckJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDAsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICM0ZTRlNGUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogI2NhY2FjYSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICAgICAgICAvL2JhY2tncm91bmQ6ICNmZWZlZmUsXG4gICAgICAgICksXG4gICAgICAgIGRhcms6IChcbiAgICAgICAgICAgICAgICBjbGFzczogZGFyayxcbiAgICAgICAgICAgICAgICB0aGVtZUNvbG9yOiAjMzczNzM3LFxuICAgICAgICAgICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzRiNGI0YixcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yOiAjZmZmZmZmLFxuICAgICAgICAgICAgICAgIG5hdkJhclRleHRDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICNmZmZmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yMjogIzliOWI5YixcbiAgICAgICAgICAgICAgICBsaWdodExpbmtDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBsaW5rQm9yZGVyQm90dG9tOiAxcHggc29saWQgI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBsaW5rSG92ZXJDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBsaWdodExpbmtIb3ZlckNvbG9yOiAjZmZmZmZmLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDBcbiAgICAgICAgKVxuKTtcblxuJHRoZW1lczogbWFwLW1lcmdlKCR0aGVtZXMsIChkYXJrOiAoXG4gICAgICAgIGNsYXNzOiBkYXJrLFxuICAgICAgICB0aGVtZUNvbG9yOiAjMzczNzM3LFxuICAgICAgICBsaWdodFRoZW1lQ29sb3I6ICM0YjRiNGIsXG4gICAgICAgIGxpbmtDb2xvcjogI2ZmZixcbiAgICAgICAgc3Bpbm5lckNvbG9yOiAjZmZmZmZmLFxuICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgIHRleHRDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgdGV4dENvbG9yMjogIzliOWI5YixcbiAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICNmZmZmZmYsXG4gICAgICAgIGxpbmtCb3JkZXJCb3R0b206IDFweCBzb2xpZCAjZmZmZmZmLFxuICAgICAgICBsaW5rSG92ZXJDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMFxuKSkpO1xuXG5AZnVuY3Rpb24gcmVjdXJzaXZlLW1hcC1tZXJnZSgkcGFyZW50LW1hcCwgJGNoaWxkLW1hcCkge1xuICAkcmVzdWx0OiAkcGFyZW50LW1hcDtcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRjaGlsZC1tYXAge1xuICAgIEBpZiAobm90IG1hcC1oYXMta2V5KCRyZXN1bHQsICRrZXkpKSBvciAodHlwZS1vZihtYXAtZ2V0KCRyZXN1bHQsICRrZXkpKSAhPSB0eXBlLW9mKCR2YWx1ZSkpIG9yIChub3QgKHR5cGUtb2YobWFwLWdldCgkcmVzdWx0LCAka2V5KSkgPT0gbWFwIGFuZCB0eXBlLW9mKCR2YWx1ZSkgPT0gbWFwKSkge1xuICAgICAgJHJlc3VsdDogbWFwLW1lcmdlKCRyZXN1bHQsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXN1bHQ6IG1hcC1tZXJnZSgkcmVzdWx0LCAoJGtleTogbm9uLWRlc3RydWN0aXZlLW1hcC1tZXJnZShtYXAtZ2V0KCRyZXN1bHQsICRrZXkpLCAkdmFsdWUpKSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQGVhY2ggJHRoZW1lLCAkdmFsdWVzIGluICR0aGVtZXMge1xuICAkdGhlbWVNYXAgOiByZWN1cnNpdmUtbWFwLW1lcmdlKCRkZWZhdWx0VGhlbWVWYWx1ZXMsICR2YWx1ZXMpO1xuICAkdGhlbWVzOiBtYXAtbWVyZ2UoJHRoZW1lcywgKCR0aGVtZTogJHRoZW1lTWFwKSlcbn1cblxuJGJyZWFrcG9pbnRzOiAoXG4gICAgICAgIHNtYWxsOiAwLFxuICAgICAgICBzbWVkaXVtOiA0MDBweCxcbiAgICAgICAgbWVkaXVtOiA2NDBweCxcbiAgICAgICAgbGFyZ2U6IDEwMjRweCxcbiAgICAgICAgeGxhcmdlOiAxMjAwcHgsXG4gICAgICAgIHh4bGFyZ2U6IDE0NDBweCxcbik7XG5cbiRtYXJnaW5zOiAoXG4gICAgICAgIHNtYWxsOiAwLjYyNXJlbSxcbiAgLy9zbWVkaXVtOiAwLjYyNXJlbSxcbiAgICAgICAgbWVkaXVtOiAwLjkzNzVyZW0sXG4gIC8vbGFyZ2U6IDAuOTM3NXJlbSxcbiAgLy94bGFyZ2U6IDAuOTM3NXJlbSxcbiAgLy94eGxhcmdlOiAwLjkzNzVyZW0sXG4pO1xuXG4kcm90YXRpb25EZWdyZWVzOiAoOTAgMTgwIDI3MCAzNjApO1xuJGFuaW1hdGlvbkR1cmF0aW9uOiAuMjVzO1xuXG4vLyRkZWdyZWVNYXRyaXg6IChcbi8vICAgICAgICAvLzA6bWF0cml4KDEsIDAsIDAsIDEsIDAsIDApLFxuLy8gICAgICAgIDA6cm90YXRlKDBkZWcpLFxuLy8gICAgICAgIDkwOm1hdHJpeCgwLCAxLCAtMSwgMCwgMCwgMCksXG4vLyAgICAgICAgMTgwOm1hdHJpeCgtMSwgMCwgMCwgLTEsIDAsIDApLFxuLy8gICAgICAgIDI3MDptYXRyaXgoMCwgLTEsIDEsIDAsIDAsIDApLFxuLy8gICAgICAgIC8vMzYwOm1hdHJpeCgwLjk5OTk5LCAwLCAwLCAwLjk5OTk5LCAwLCAwKSxcbi8vICAgICAgICAvLzQ1MDptYXRyaXgoMCwgMSwgLTEsIDAsIDAsIDApLFxuLy8gICAgICAgICAgMzYwOnJvdGF0ZSgzNjBkZWcpLFxuLy8gICAgICAgICAgNDUwOnJvdGF0ZSg0NTBkZWcpLFxuLy8pO1xuJGRlZ3JlZU1hdHJpeDogKFxuICAgICAgICAwOnJvdGF0ZSgwZGVnKSxcbiAgICAgICAgOTA6cm90YXRlKDkwZGVnKSxcbiAgICAgICAgMTgwOnJvdGF0ZSgxODBkZWcpLFxuICAgICAgICAyNzA6cm90YXRlKDI3MGRlZyksXG4gICAgICAgIDM2MDpyb3RhdGUoMzYwZGVnKSxcbiAgICAgICAgNDUwOnJvdGF0ZSg0NTBkZWcpLFxuKTsiLCIkaW52YWxpZEJveFNoYWRvdzogMCAwIDJweCAycHggI2ZmNjc3NjtcbiRkaXNhYmxlZEJhY2tncm91bmRDb2xvcjogcmdiKDIzMCwgMjMwLCAyMzApO1xuJGlucHV0Qm9yZGVyQm90dG9tOiBzb2xpZCAxcHggIzYyNjI2MjtcblxubGFiZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgW3R5cGU9J3RleHQnXSwgW3R5cGU9J3Bhc3N3b3JkJ10sIFt0eXBlPSdkYXRlJ10sIFt0eXBlPSdkYXRldGltZSddLCBbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSwgW3R5cGU9J21vbnRoJ10sXG4gIFt0eXBlPSd3ZWVrJ10sIFt0eXBlPSdlbWFpbCddLCBbdHlwZT0nbnVtYmVyJ10sIFt0eXBlPSdzZWFyY2gnXSwgW3R5cGU9J3RlbCddLCBbdHlwZT0ndGltZSddLCBbdHlwZT0ndXJsJ10sXG4gIFt0eXBlPSdjb2xvciddLCB0ZXh0YXJlYSwgaW5wdXRbdHlwZT0ndGV4dCddLCBpbnB1dDpub3QoW3R5cGVdKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyLjQzNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLWJvdHRvbTogJGlucHV0Qm9yZGVyQm90dG9tO1xuICAgIG91dGxpbmU6IDA7XG4gICAgbWFyZ2luOiAwIDAgMTVweDtcblxuICAgICY6aW52YWxpZCB7XG4gICAgICBib3gtc2hhZG93OiAkaW52YWxpZEJveFNoYWRvdztcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaXNhYmxlZEJhY2tncm91bmRDb2xvcjtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRpbnB1dEJvcmRlckJvdHRvbTtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgICAgICY6aW52YWxpZCB7XG4gICAgICAgIGJveC1zaGFkb3c6ICRpbnZhbGlkQm94U2hhZG93O1xuICAgICAgfVxuICAgICAgJjpkaXNhYmxlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaXNhYmxlZEJhY2tncm91bmRDb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzLCAmLm5vdEVtcHR5Om5vdCg6Zm9jdXMpLCAmOm5vdCg6ZW1wdHkpIHtcbiAgICAgIH4gc3BhbiB7XG4gICAgICAgIHRvcDogLTExcHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgfiBzcGFuIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgbGVmdDogMTBweDtcbiAgICAgIGJvdHRvbTogMTBweDtcbiAgICAgIHRvcDogN3B4O1xuICAgICAgdHJhbnNpdGlvbjogMC4ycyBlYXNlIGFsbDtcbiAgICAgIGNvbG9yOiAjNjI2MjYyO1xuICAgIH1cbiAgfVxuXG4gIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IDEwcmVtO1xuICAgIC8vYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMzYsIDEzNiwgMTM2LCAwLjMxKTtcbiAgICAvL2JveC1zaGFkb3c6IDAgMCAzcHggMnB4IGhzbGEoMCwgMCUsIDUzJSwgLjMxKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4O1xuICB9XG5cbiAgW3R5cGU9XCJjaGVja2JveFwiXS5iZWZvcmUtdGV4dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5pbnB1dFt0eXBlPW51bWJlcl0ge1xuICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcblxuICA6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sIDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufSIsIkBpbXBvcnQgXCJ+Zm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb25cIjtcblxuJG5hdkNvbG9yQmxhY2s6ICMwMDAgIWRlZmF1bHQ7XG4kbmF2Qm9yZGVyQ29sb3JCbGFjazogIzdGN0Y3RiAhZGVmYXVsdDtcbiRuYXZCYWNrZ3JvdW5kQmxhY2s6ICNmZmYgIWRlZmF1bHQ7XG5cbiRuYXZDb2xvcldoaXRlOiAjZmZmICFkZWZhdWx0O1xuJG5hdkJvcmRlckNvbG9yV2hpdGU6ICMxZTFjMWMgIWRlZmF1bHQ7XG4kbmF2QmFja2dyb3VuZFdoaXRlOiAjMDAwICFkZWZhdWx0O1xuXG4kbmF2Q29sb3JEZWZhdWx0OiAjZmZmICFkZWZhdWx0O1xuJG5hdkJvcmRlckNvbG9yRGVmYXVsdDogIzFlMWMxYyAhZGVmYXVsdDtcbiRuYXZCYWNrZ3JvdW5kRGVmYXVsdDogIzAwMCAhZGVmYXVsdDtcblxuJG5hdkJhY2tncm91bmRXaXRoSW1hZ2U6IHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuXG5uYXYudG9wLWJhciB7XG4gIHotaW5kZXg6IDE7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogJG5hdkJhY2tncm91bmREZWZhdWx0O1xuICBjb2xvcjogJG5hdkNvbG9yRGVmYXVsdDtcbiAgc3Ryb2tlOiAkbmF2Q29sb3JEZWZhdWx0O1xuICBwYWRkaW5nOiAwO1xuXG4gICY6bm90KC53aXRoLWltYWdlKSB7XG5cbiAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRtYXJnaW5zIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0kdmFsdWU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLSR2YWx1ZTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArICN7MiokdmFsdWV9KTtcbiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgKyAjezIqJHZhbHVlfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmJhY2tncm91bmQtaW1nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgPiBzcGFuIHtcbiAgICA+IHNwYW4ge1xuICAgICAgPiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFjay1idXR0b24ge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDAuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgICAgfVxuXG4gICAgICAmLmhpZGRlbiB7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgZGlzcGxheTogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgIH1cblxuICAgICNuYXZiYXItY2xvc2UtbGlzdGVuZXItY29udGFpbmVyIHtcbiAgICAgICNuYXZiYXItY2xvc2UtbGlzdGVuZXIge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHotaW5kZXg6IDg5OTk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgI25hdmJhci1tZW51LXZpc2libGUge1xuXG4gICAgfVxuXG4gICAgI3Jlc3BvbnNpdmUtbWVudS10b2dnbGUge1xuICAgICAgLm1lbnUtaWNvbiB7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRuYXZDb2xvckRlZmF1bHQ7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCA3cHggMCAkbmF2Q29sb3JEZWZhdWx0LCAwIDE0cHggMCAkbmF2Q29sb3JEZWZhdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5tZW51LWljb24ge1xuICAgICAgICAvL25vaW5zcGVjdGlvbiBDc3NJbnZhbGlkUHJvcGVydHlWYWx1ZVxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogLXdlYmtpdC1iYXNlbGluZS1taWRkbGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgI3Jlc3BvbnNpdmUtbWVudSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIC8vcmlnaHQ6IC0xMDAlO1xuICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41cztcbiAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcblxuICAgICAgJi52aXNpYmxlIHtcbiAgICAgICAgLmhpZGRlbi1tZW51IHtcbiAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuaGlkZGVuLW1lbnUge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB6LWluZGV4OiA5MDAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbmF2Qm9yZGVyQ29sb3JEZWZhdWx0O1xuICAgICAgICAvL3BhZGRpbmc6IDAuMnJlbTtcbiAgICAgICAgcGFkZGluZzogNC41cmVtIDEuNjVyZW0gMHJlbSAyLjc1cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2QmFja2dyb3VuZERlZmF1bHQ7XG4gICAgICAgIG1hcmdpbi10b3A6IC0xcmVtO1xuICAgICAgICByaWdodDogLTEwMDAlOyAvL2bDvHIga2xlaW5lIEJpbGRzY2hpcm1lLCB0YXVjaHQgZXMgcmVjaHRzIHdpZWRlciBhdWYsIGZhbGxzIG51ciAxMDAlXG5cbiAgICAgICAgbGkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcblxuICAgICAgICAgICYuaGlkZGVuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgICAgICAgICB6LWluZGV4OiA5MDAxO1xuXG4gICAgICAgICAgICB1bC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgICAgICAgdG9wOiBhdXRvO1xuXG4gICAgICAgICAgICAgID4gbGksID4gLmNsb3NlLWxpc3RlbmVyIHtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiA5MDAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gYTphZnRlciB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgICAgICBib3JkZXI6IDZweCBpbnNldDtcbiAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICAgICAgICAgICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgcmlnaHQ6IDVweDtcbiAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhIHtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgICAgKyBzcGFuIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICYubWVkaXVtIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWVkaXVtKSB7XG4gICAgICAgICAgICAmLnNtZWRpdW0ge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAmLmxhcmdlIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIGRvd24pIHtcbiAgICAgICAgICAgICYuc21lZGl1bSB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICAgICYuaGlkZGVuIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21lZGl1bSBkb3duKSB7XG4gICAgICAgICAgICAmLm1lZGl1bSB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICAgICYuaGlkZGVuIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgICAgICYubGFyZ2Uge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgICAmLmhpZGRlbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICYubmV2ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgICAgICYuaGlkZGVuIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmFsd2F5cyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5uYXZiYXItbWVudSB7XG4gICAgICBiYWNrZ3JvdW5kOiBpbml0aWFsO1xuXG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIHotaW5kZXg6IDkwMDA7XG5cbiAgICAgIGEge1xuICAgICAgICBpbWcgKyBzcGFuIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiA5MDAwO1xuXG4gICAgICAgICYuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xuICAgICAgICAgIHotaW5kZXg6IDkwMDE7XG4gICAgICAgIH1cblxuICAgICAgICAmLmhpZGRlbiB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgZG93bikge1xuICAgICAgICAgICYuc21lZGl1bSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtZWRpdW0gZG93bikge1xuICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgICAgfVxuICAgICAgICAgICYubWVkaXVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgICAmLmxhcmdlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5uZXZlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubWVudSwgJi5tZW51IHtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgei1pbmRleDogMTAwO1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21lZGl1bSBkb3duKSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIC8vdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtZWRpdW0gZG93bikge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC42OHJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBkb3duKSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjIzNnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmOm5vdCguaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21lZGl1bSBkb3duKSB7XG4gICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNjhyZW07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgZG93bikge1xuICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjIzNnJlbTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICYuaW1nIGEge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IGluaGVyaXQ7XG4gICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgID4gbGkgPiB1bC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG5cbiAgICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgID4gbGkub3BlbnMtcmlnaHQgPiBhIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcblxuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgcmlnaHQ6IDAuMXJlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc3VibWVudSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbmF2QmFja2dyb3VuZERlZmF1bHQ7XG4gICAgfVxuICB9XG5cbiAgJi53aXRoLWltYWdlIHtcbiAgICBiYWNrZ3JvdW5kOiAkbmF2QmFja2dyb3VuZFdpdGhJbWFnZTtcblxuICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cywgYmFja2dyb3VuZCAwLjBzO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuXG4gICAgKiB7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMsIGJhY2tncm91bmQgMC4wcztcbiAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIH1cblxuICAgIC5iYWNrZ3JvdW5kLWltZyB7XG4gICAgICBkaXNwbGF5OiBpbml0aWFsO1xuICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkbWFyZ2lucyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLSR2YWx1ZTtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0kdmFsdWU7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArICN7MiokdmFsdWV9KTtcbiAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSArICN7MiokdmFsdWV9KTtcbiAgICAgICAgICBtaW4td2lkdGg6IDIuNSokdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IHNwYW4ge1xuICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICByaWdodDogMDtcblxuICAgICAgPiBzcGFuID4gc3BhbiB7XG4gICAgICAgIC8vQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkbWFyZ2lucyB7XG4gICAgICAgIC8vICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgICAgIC8vICAgIHBhZGRpbmctbGVmdDogJHZhbHVlO1xuICAgICAgICAvL3BhZGRpbmctcmlnaHQ6IDIqJHZhbHVlICFpbXBvcnRhbnQ7XG4gICAgICAgIC8vfVxuICAgICAgICAvL31cbiAgICAgIH1cblxuICAgICAgPiAqIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICAuYmFjay1idXR0b24ge1xuXG4gICAgICB9XG5cbiAgICAgIC50b3AtYmFyLXRpdGxlIHtcblxuICAgICAgfVxuXG4gICAgICAjbmF2YmFyLWNsb3NlLWxpc3RlbmVyLWNvbnRhaW5lciB7XG4gICAgICAgICNuYXZiYXItY2xvc2UtbGlzdGVuZXIge1xuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgI25hdmJhci1tZW51LXZpc2libGUge1xuXG4gICAgICB9XG5cbiAgICAgICNyZXNwb25zaXZlLW1lbnUtdG9nZ2xlIHtcbiAgICAgICAgei1pbmRleDogOTEwMDtcbiAgICAgIH1cblxuICAgICAgI3Jlc3BvbnNpdmUtbWVudSB7XG5cbiAgICAgIH1cblxuICAgICAgLm5hdmJhci1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZDogaW5pdGlhbDtcbiAgICAgIH1cblxuICAgICAgLnN1Ym1lbnUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2QmFja2dyb3VuZERlZmF1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5jb2xvci1ibGFjayB7XG4gICAgICBjb2xvcjogJG5hdkNvbG9yQmxhY2s7XG4gICAgICBzdHJva2U6ICRuYXZDb2xvckJsYWNrO1xuXG4gICAgICAjcmVzcG9uc2l2ZS1tZW51IHtcbiAgICAgICAgLmhpZGRlbi1tZW51IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2QmFja2dyb3VuZEJsYWNrO1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJG5hdkJvcmRlckNvbG9yQmxhY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgI3Jlc3BvbnNpdmUtbWVudS10b2dnbGUge1xuICAgICAgICAubWVudS1pY29uOjphZnRlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJG5hdkNvbG9yQmxhY2s7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCA3cHggMCAkbmF2Q29sb3JCbGFjaywgMCAxNHB4IDAgJG5hdkNvbG9yQmxhY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnN1Ym1lbnUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2QmFja2dyb3VuZEJsYWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuY29sb3Itd2hpdGUge1xuICAgICAgY29sb3I6ICRuYXZDb2xvcldoaXRlO1xuICAgICAgc3Ryb2tlOiAkbmF2Q29sb3JXaGl0ZTtcblxuICAgICAgI3Jlc3BvbnNpdmUtbWVudSB7XG4gICAgICAgIC5oaWRkZW4tbWVudSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJG5hdkJhY2tncm91bmRXaGl0ZTtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRuYXZCb3JkZXJDb2xvcldoaXRlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICNyZXNwb25zaXZlLW1lbnUtdG9nZ2xlIHtcbiAgICAgICAgLm1lbnUtaWNvbjo6YWZ0ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRuYXZDb2xvcldoaXRlO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgN3B4IDAgJG5hdkNvbG9yV2hpdGUsIDAgMTRweCAwICRuYXZDb2xvcldoaXRlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zdWJtZW51IHtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdkJhY2tncm91bmRXaGl0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNvbGlkIHtcbiAgICAgIGJhY2tncm91bmQ6ICRuYXZCYWNrZ3JvdW5kRGVmYXVsdDtcblxuICAgICAgPiBzcGFuIHtcbiAgICAgICAgLy9iYWNrZ3JvdW5kOiBpbmhlcml0O1xuICAgICAgICAuYmFjay1idXR0b24ge1xuXG4gICAgICAgIH1cblxuICAgICAgICAudG9wLWJhci10aXRsZSB7XG5cbiAgICAgICAgfVxuXG4gICAgICAgICNuYXZiYXItY2xvc2UtbGlzdGVuZXItY29udGFpbmVyIHtcbiAgICAgICAgICAjbmF2YmFyLWNsb3NlLWxpc3RlbmVyIHtcblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICNuYXZiYXItbWVudS12aXNpYmxlIHtcblxuICAgICAgICB9XG5cbiAgICAgICAgI3Jlc3BvbnNpdmUtbWVudS10b2dnbGUge1xuXG4gICAgICAgIH1cblxuICAgICAgICAjcmVzcG9uc2l2ZS1tZW51IHtcbiAgICAgICAgICAuaGlkZGVuLW1lbnUge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2Qm9yZGVyQ29sb3JCbGFjaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2YmFyLW1lbnUge1xuICAgICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5jb2xvci1ibGFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRuYXZCYWNrZ3JvdW5kQmxhY2s7XG4gICAgICB9XG5cbiAgICAgICYuY29sb3Itd2hpdGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2QmFja2dyb3VuZFdoaXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyNsb2dvIHtcbi8vICBtYXgtd2lkdGg6IDJyZW07XG4vLyAgdHJhbnNpdGlvbjogbm9uZTtcbi8vfVxuXG4ubWVudSwgLmRyb3Bkb3duLm1lbnUge1xuICBhIHtcbiAgICBwYWRkaW5nOiAwLjJyZW0gMC41cmVtO1xuICB9XG59XG5cbi5kcm9wZG93bi5tZW51IC5hY2NvcmRpb24tbWVudSAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50Om5vdCguaGFzLXN1Ym1lbnUtdG9nZ2xlKSxcbiNuYXZiYXItbWVudS1oaWRkZW4gLmFjY29yZGlvbi1tZW51IC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQ6bm90KC5oYXMtc3VibWVudS10b2dnbGUpID4ge1xuICBhIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHJpZ2h0OiAwLjFyZW07XG4gICAgfVxuICB9XG5cbiAgdWwgYSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLm1lbnUuaXMtYWNjb3JkaW9uLXN1Ym1lbnUge1xuICBtYXJnaW4tbGVmdDogMC43cmVtO1xufVxuXG4ubWVudSB7XG4gIHRyYW5zZm9ybS1vcmlnaW46IHRvcDtcbiAgdHJhbnNpdGlvbjogMC4yNXM7XG4gIC8vb3ZlcmZsb3cteTpoaWRkZW47XG59XG5cblxuI3Jlc3BvbnNpdmUtbWVudS10b2dnbGUgYnV0dG9uIHtcbiAgdmVydGljYWwtYWxpZ246IGluaXRpYWw7XG59XG5cbi5kcm9wZG93bi5tZW51ID4gbGkuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50IHtcbiAgLy8+IGE6YWZ0ZXIge1xuICAvLyAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAvL31cblxuICA+IHVsLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IDA7XG4gIH1cbn1cblxuI25hdmJhci1mcmFnbWVudCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubG9nbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAubG9nby1pbWcge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgIG1heC13aWR0aDogMi4zNXJlbTtcbiAgfVxufVxuIiwiJGJvcmRlci1jb2xvcjogI0U2RTZFNjtcblxuLnRhYi1mcmFnbWVudCB7XG4gIC50YWItbmFtZXMge1xuICAgIC50YWItYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJvcmRlci1jb2xvcjtcbiAgICAgIHBhZGRpbmc6IDAuM3JlbTtcblxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWItY29udGVudCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICBib3JkZXItdG9wOiAwO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4O1xuICAgIC50YWItc2l0ZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGRpc3BsYXk6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRhYi1idXR0b24tdGVtcGxhdGUsIC50YWItc2l0ZS10ZW1wbGF0ZXtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmJvcmRlci1ib3R0b20ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICB9XG59IiwiLmFscGhhYmV0aWMtbGlzdHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmFscGhhYmV0aWMtbGlzdC1jb250YWluZXJ7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLmFscGhhYmV0aWMtbGlzdC1zaWRlYWxwaGFiZXR7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIC5hbHBoYWJldC1zY3JvbGwtdG8ge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgaGVpZ2h0OiAzLjglO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIGRvd24pe1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi53aW5kb3ctY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2IxYjFiMTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBjdXJzb3I6IGdyYWI7XG4gIHRyYW5zaXRpb246IG5vbmU7XG4gIG1pbi13aWR0aDogMTByZW07XG4gIG1pbi1oZWlnaHQ6IDNyZW07XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXG4gICoge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICB6LWluZGV4OiAxMDAwO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgJi5hY3RpdmUtd2luZG93e1xuICAgIHotaW5kZXg6IDExMDA7XG4gIH1cblxuICAud2luZG93LXJlc2l6ZSB7XG4gICAgJHJlc2l6ZVdpZHRoOiA0cHg7XG5cbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICYuZWRnZSB7XG4gICAgICB3aWR0aDogJHJlc2l6ZVdpZHRoO1xuICAgICAgaGVpZ2h0OiAkcmVzaXplV2lkdGg7XG5cbiAgICAgICYubnd7XG4gICAgICAgIGN1cnNvcjogbnctcmVzaXplO1xuICAgICAgfVxuICAgICAgJi5uZXtcbiAgICAgICAgY3Vyc29yOiBuZS1yZXNpemU7XG4gICAgICB9XG4gICAgICAmLnN3e1xuICAgICAgICBjdXJzb3I6IHN3LXJlc2l6ZTtcbiAgICAgIH1cbiAgICAgICYuc2V7XG4gICAgICAgIGN1cnNvcjogc2UtcmVzaXplO1xuICAgICAgfVxuICAgIH1cbiAgICAmLmJvdHRvbSwgJi50b3B7XG4gICAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcbiAgICAgIGhlaWdodDogJHJlc2l6ZVdpZHRoO1xuICAgIH1cbiAgICAmLmxlZnQsICYucmlnaHR7XG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgICAgIHdpZHRoOiAkcmVzaXplV2lkdGg7XG4gICAgfVxuICB9XG5cbiAgI3RpdGxlIHtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAvL21hcmdpbjogMCAwIDAuNXJlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMnJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAvL2JvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYjZiNmI2O1xuICB9XG5cbiAgI3RpdGxlLWJ1dHRvbnMge1xuICAgIC50aXRsZS1idXR0b24ge1xuICAgICAgbWF4LWhlaWdodDogMXJlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgJi5tb3Zpbmcge1xuICAgIGN1cnNvcjogZ3JhYmJpbmc7XG4gIH1cblxuICAmLm1pbmltaXplZCB7XG4gICAgcGFkZGluZzogMC4ycmVtO1xuICAgIHdpZHRoOiAwICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgbWluLXdpZHRoOiBmaXQtY29udGVudDtcbiAgICAud2luZG93IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC53aW5kb3ctcmVzaXple1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgI3RpdGxle1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgICAjdGl0bGUtYnV0dG9ucyAudGl0bGUtYnV0dG9uLmhpZGUtbWluaW1pemVke1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLm1heGltaXplZCB7XG4gICAgJG1heGltaXplZFBhZGRpbmc6IDAuMnJlbTtcblxuICAgIHBhZGRpbmc6ICRtYXhpbWl6ZWRQYWRkaW5nO1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46MDtcblxuICAgIHdpZHRoOiBjYWxjKDEwMHZ3IC0gI3syKiRtYXhpbWl6ZWRQYWRkaW5nfSkgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAjezIqJG1heGltaXplZFBhZGRpbmd9KSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB0b3A6IDAgIWltcG9ydGFudDtcblxuICAgIC53aW5kb3ctcmVzaXple1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgI3RpdGxlLWJ1dHRvbnMgLnRpdGxlLWJ1dHRvbi5oaWRlLW1heGltaXplZHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi5wb3B1cCB7XG4gICAgJG1heGltaXplZFBhZGRpbmc6IDAuMnJlbTtcblxuICAgIHBhZGRpbmc6ICRtYXhpbWl6ZWRQYWRkaW5nO1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46MDtcblxuICAgIHdpZHRoOiBjYWxjKDEwMHZ3IC0gI3syKiRtYXhpbWl6ZWRQYWRkaW5nfSkgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAjezIqJG1heGltaXplZFBhZGRpbmd9KSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB0b3A6IDAgIWltcG9ydGFudDtcblxuICAgIC53aW5kb3ctcmVzaXple1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgI3RpdGxlLWJ1dHRvbnMgLnRpdGxlLWJ1dHRvbi5oaWRlLXBvcHVwe1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAud2luZG93IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBjdXJzb3I6IGluaXRpYWw7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC8vbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7XG4gICAgLy9tYXgtd2lkdGg6IGZpdC1jb250ZW50O1xuICB9XG59IiwiQGltcG9ydCBcInRvYXN0XCI7XG5AaW1wb3J0IFwiZGlhbG9nXCI7XG5AaW1wb3J0IFwiZm9ybVwiO1xuQGltcG9ydCBcIm5hdmJhclwiO1xuQGltcG9ydCBcInN3aXBlRnJhZ21lbnRcIjtcbkBpbXBvcnQgXCJ0YWJiZWRGcmFnbWVudFwiO1xuQGltcG9ydCBcImFscGhhYmV0aWNMaXN0XCI7XG5AaW1wb3J0IFwiYWJzdHJhY3RXaW5kb3dcIjtcblxuLm1heC1oZWlnaHQtMTAwe1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuLm92ZXJmbG93LWhpZGRlbntcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn0iLCIkcmlnaHRzOiBbYWRtaW4sIGxvZ2dlZEluLCBsb2dnZWRPdXQsIG9ubGluZSwgb2ZmbGluZSwgZGVmYXVsdCBdO1xuXG5ib2R5IHtcbiAgQGVhY2ggJHJpZ2h0IGluICRyaWdodHMge1xuICAgICY6bm90KC5hY2Nlc3MtI3skcmlnaHR9KSAuYWNjZXNzLSN7JHJpZ2h0fSB7XG4gICAgICBkaXNwbGF5OiBub25lXG4gICAgfVxuICB9XG59XG4iLCIuc2hhcmUtaWNvbiB7XG4gIHdpZHRoOiAxLjVyZW07XG4gIG1heC13aWR0aDogMS41cmVtO1xuICBtYXJnaW46IDAuMXJlbTtcblxuICBzdmd7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDEuNXJlbTtcbiAgfVxufVxuIiwiLy9AaW1wb3J0IFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uXCI7XG5cbiosIDphZnRlciwgOmJlZm9yZSB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cbmh0bWwge1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAvL2ZvbnQtc2l6ZTogMThweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbn1cblxuLm1heC1oZWlnaHQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICBiYWNrZ3JvdW5kOiAjZmVmZWZlO1xuICBjb2xvcjogIzBhMGEwYTtcbn1cblxuZm9vdGVyIHtcbiAgYm9yZGVyLXRvcDogI2Q4ZDhkOCBzb2xpZCAxcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRvcC1iYXIgLnRvcC1iYXItdGl0bGUgc3Ryb25nIHtcbiAgLy9tYXJnaW4tdG9wOiA3cHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLyptYXJnaW4tbGVmdDogOHB4OyovXG59XG5cbm5hdi50b3AtYmFyIHtcblxuICBjb2xvcjogI0ZGRjtcbiAgLy9iYWNrZ3JvdW5kOiAjM0Y1MUI1O1xuICAvL2JhY2tncm91bmQ6IHJlZDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBib3gtc2hhZG93OiAwIDRweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDJweCA5cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgNHB4IDJweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgcGFkZGluZzogMC42cmVtO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuYnV0dG9uLmJ1dHRvbiwgYS5idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIC8vYmFja2dyb3VuZC1jb2xvcjogcmVkO1xuICAmLmRpc2FibGVkLCAmLmRpc2FibGVkOmhvdmVyLCAmLmRpc2FibGVkOmZvY3VzIHtcbiAgICAvL2JhY2tncm91bmQtY29sb3I6IHJlZDtcbiAgfVxuICAmOmZvY3VzLCAmOmhvdmVyIHtcbiAgICAvL2JhY2tncm91bmQtY29sb3I6ICNlMDAwMDA7XG4gIH1cbn1cblxuLmZpbGwtbWUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAmLnZlcnRpY2FsIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIC5ncm93IHtcbiAgICBmbGV4OiAxO1xuICB9XG59XG5cbi5mbGV4LWNlbnRlciB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvL2p1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBkaXNwbGF5OiBmbGV4O1xuICAvL21hcmdpbjogYXV0bztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgPiAqIHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG59XG5cbi5tZW51IGEsIC5kcm9wZG93bi5tZW51IGEge1xuICBwYWRkaW5nOiAuNHJlbSAuNXJlbVxufVxuXG5zdmcgcGF0aCB7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cblxuZGl2Lm1haW5Db250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIGZsZXg6IDE7XG4gIG1hcmdpbjogMC41cmVtO1xuICA+IC5yb3csICNtYWluLWNvbnRlbnQsICNzaXRlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICAvL2xlZnQ6IC42MjVyZW07XG4gICAgcmlnaHQ6IDA7XG4gICAgLy9yaWdodDogLjYyNXJlbTtcbiAgfVxufVxuXG4uaW5saW5lLWJsb2NrIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ucmlnaHQge1xuICBmbG9hdDogcmlnaHQ7XG59XG5cbiNsb2dvLWltZyB7XG4gIG1heC1oZWlnaHQ6IDIuMnJlbTtcbn1cblxuYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuYS5oaWRkZW4tbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbmxhYmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYWxpZ24tcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnZpZXctcGFuZWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubG9hZGVyIHtcbiAgbGVmdDogNTAlO1xuICB0b3A6IDUwJTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICYuaW5saW5lIHtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICAgIHRvcDogaW5pdGlhbDtcbiAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogaW5pdGlhbDtcbiAgICB0cmFuc2Zvcm06IGluaXRpYWw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxuXG4gICYuc21hbGwgI3NwaW5uZXIge1xuXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuICB9XG5cbiAgI3NwaW5uZXIge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgc3Ryb2tlOiAjYjcxYzFhO1xuICAgIHN0cm9rZS13aWR0aDogM3B4O1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJTtcbiAgICBhbmltYXRpb246IGxpbmUgMS42cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlLCByb3RhdGUgMS42cyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cbn1cblxuQGtleWZyYW1lcyByb3RhdGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDUwZGVnKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGxpbmUge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMiwgODUuOTY0O1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDApO1xuICB9XG4gIDUwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogNjUuOTczLCAyMS45OTExO1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDg1Ljk2NDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTY1Ljk3MztcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gIH1cbn1cblxuI3ByaW50LWNvbnRlbnQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uYWN0aW9uLWJ1dHRvbiB7XG4gIG1heC1oZWlnaHQ6IDEuN3JlbTtcbiAgbWFyZ2luLWxlZnQ6IDAuNHJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjRyZW07XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICRob3ZlckNvbG9yRGFyaztcbiAgfVxufVxuXG4udmNlbnRlci1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgLy9kaXNwbGF5OiBmbGV4O1xuICAvL2p1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvL2ZsZXgtd3JhcDogd3JhcDtcblxuICAudmNlbnRlciB7XG4gICAgLy9kaXNwbGF5OiBmbGV4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG59XG5cbi5tYXgtd2lkdGgge1xuICB3aWR0aDogMTAwJTtcbn1cblxuaW5wdXQsIGJ1dHRvbiB7XG4gIGxldHRlci1zcGFjaW5nOiAxcHggIWltcG9ydGFudDtcbn1cblxuLm5vLXBhZGRpbmcge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbi5jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtZWRpYSBwcmludCB7XG4gIG5hdiwgLm1haW5Db250YWluZXIsIGZvb3RlciwgI3N0eWxlcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gICNwcmludC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5vdmVyZmxvdy15LWF1dG8ge1xuICBvdmVyZmxvdy15OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5yb3cubm8tYWZ0ZXI6YWZ0ZXIge1xuICBjb250ZW50OiBpbml0aWFsO1xufVxuXG4ubWFyZ2luLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21lZGl1bSkge1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtO1xuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNXJlbTtcbiAgfVxufVxuXG4uZm9udC1zbWFsbCB7XG4gIGZvbnQtc2l6ZTogMC43ZW07XG59XG5cbi5ib3JkZXItYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRwcm90b3R5cGUtYm9yZGVyLWNvbG9yO1xufVxuXG4uYm9yZGVyLXJpZ2h0IHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHByb3RvdHlwZS1ib3JkZXItY29sb3I7XG59XG5cbi5ib3JkZXItbGVmdCB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJHByb3RvdHlwZS1ib3JkZXItY29sb3I7XG59XG5cbmltZy5sb2dvIHtcbiAgdmVydGljYWwtYWxpZ246IGluaGVyaXQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtd2lkdGg6IDEuMXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAycHg7XG59XG5cbi5hbGlnbi1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbmhyLnNlcGFyYXRvciB7XG4gIG1hcmdpbjogMXJlbSAwO1xufVxuXG4uYnV0dG9uLWxpbmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICAuYnV0dG9uIHtcbiAgICBmbGV4OiAxO1xuICAgIG1hcmdpbi1sZWZ0OiAxcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcHg7XG4gICAgcGFkZGluZzogMC41cmVtIDAuNzdyZW07XG4gIH1cbn1cblxuLnNtYWxsLXNtYWxsIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBkb3duKSB7XG4gICAgZm9udC1zaXplOiBzbWFsbDtcbiAgfVxufVxuXG5zZWxlY3Qge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDAuM3JlbSAwLjNyZW07XG59XG5cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubm8tdHJhbnNpdGlvbiB7XG4gIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbn1cblxuaW1nLmFjdGlvbi1pbWFnZSB7XG4gIG1heC1oZWlnaHQ6IDEuNHJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5pbWcuYmFjay1idXR0b24ge1xuICBtYXgtaGVpZ2h0OiAwLjZyZW07XG4gIG1hcmdpbi1yaWdodDogMC4ycmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1xufVxuXG4ubm8tbWFyZ2luLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4iLCJcbiRob3ZlckNvbG9yOiAjZjJmMmYyO1xuJGhvdmVyQ29sb3JEYXJrOiAjZThlOGU4O1xuXG4kdGhlbWVzOiAoXG4gICAgICAgIHJlZDooXG4gICAgICAgICAgICAgICAgY2xhc3M6IHJlZCxcbiAgICAgICAgICAgICAgICB0aGVtZUNvbG9yOiAjZmYwMDAwLFxuICAgICAgICAgICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzg3MDAxNSxcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3I6ICNmZjNkMDAsXG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yOiAjYjcxYzFhLFxuICAgICAgICAgICAgICAgIG5hdkJhclRleHRDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yMjogIzU1NTU1NSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtDb2xvcjogI2ZmM2QwMCxcbiAgICAgICAgICAgICAgICBsaW5rQm9yZGVyQm90dG9tOiBub25lLFxuICAgICAgICAgICAgICAgIGxpbmtIb3ZlckNvbG9yOiAjZmYzZDAwLFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0hvdmVyQ29sb3I6ICNmZjNkMDAsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZlxuICAgICAgICApLFxuICAgICAgICBibHVlOihcbiAgICAgICAgICAgICAgICBjbGFzczogYmx1ZSxcbiAgICAgICAgICAgICAgICB0aGVtZUNvbG9yOiAjMmM1OGFlLFxuICAgICAgICAgICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzFhMzA2MixcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3I6ICM1NDZjZmUsXG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yOiAjNjczQUI3LFxuICAgICAgICAgICAgICAgIG5hdkJhclRleHRDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICMwMDAsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yMjogIzU1NTU1NSxcbiAgICAgICAgICAgICAgICBsaWdodExpbmtDb2xvcjogIzU0NmNmZSxcbiAgICAgICAgICAgICAgICBsaW5rQm9yZGVyQm90dG9tOiBub25lLFxuICAgICAgICAgICAgICAgIGxpbmtIb3ZlckNvbG9yOiAjNTQ2Y2ZlLFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0hvdmVyQ29sb3I6ICM1NDZjZmUsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZlxuICAgICAgICApLFxuICAgICAgICBncmVlbjooXG4gICAgICAgICAgICAgICAgY2xhc3M6IGdyZWVuLFxuICAgICAgICAgICAgICAgIHRoZW1lQ29sb3I6ICMwMDgwMDAsXG4gICAgICAgICAgICAgICAgbGlnaHRUaGVtZUNvbG9yOiAjMDAzNjEzLFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcjogIzAwOTgyOSxcbiAgICAgICAgICAgICAgICBzcGlubmVyQ29sb3I6ICMwMDgwMDAsXG4gICAgICAgICAgICAgICAgbmF2QmFyVGV4dENvbG9yOiAjZmZmLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3IyOiAjNTU1NTU1LFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0NvbG9yOiAjMDA5ODI5LFxuICAgICAgICAgICAgICAgIGxpbmtCb3JkZXJCb3R0b206IG5vbmUsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICMwMDk4MjksXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogIzAwOTgyOSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmXG4gICAgICAgICksXG4gICAgICAgIHBpbms6KFxuICAgICAgICAgICAgICAgIGNsYXNzOiBwaW5rLFxuICAgICAgICAgICAgICAgIHRoZW1lQ29sb3I6ICNmZjY5YjQsXG4gICAgICAgICAgICAgICAgbGlnaHRUaGVtZUNvbG9yOiAjNzAzNzRhLFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcjogI2ZlNjRhZixcbiAgICAgICAgICAgICAgICBzcGlubmVyQ29sb3I6ICNmZjY5YjQsXG4gICAgICAgICAgICAgICAgbmF2QmFyVGV4dENvbG9yOiAjZmZmLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3IyOiAjNTU1NTU1LFxuICAgICAgICAgICAgICAgIGxpZ2h0TGlua0NvbG9yOiAjZmU2NGFmLFxuICAgICAgICAgICAgICAgIGxpbmtCb3JkZXJCb3R0b206IG5vbmUsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICNmZTY0YWYsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogI2ZlNjRhZixcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmXG4gICAgICAgICksXG4gICAgICAgIGJsYWNrOihcbiAgICAgICAgICAgICAgICBjbGFzczogYmxhY2ssXG4gICAgICAgICAgICAgICAgdGhlbWVDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICBsaWdodFRoZW1lQ29sb3I6ICMzNTM1MzUsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHNwaW5uZXJDb2xvcjogIzAwMCxcbiAgICAgICAgICAgICAgICBuYXZCYXJUZXh0Q29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiAjMDAwLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjI6ICM1NTU1NTUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rQ29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgbGlua0JvcmRlckJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDAsXG4gICAgICAgICAgICAgICAgbGlua0hvdmVyQ29sb3I6ICM0ZTRlNGUsXG4gICAgICAgICAgICAgICAgbGlnaHRMaW5rSG92ZXJDb2xvcjogI2NhY2FjYSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmXG4gICAgICAgICksXG4gICAgICAgIGRhcms6IChcbiAgICAgICAgICAgICAgICBjbGFzczogZGFyayxcbiAgICAgICAgICAgICAgICB0aGVtZUNvbG9yOiAjMzczNzM3LFxuICAgICAgICAgICAgICAgIGxpZ2h0VGhlbWVDb2xvcjogIzRiNGI0YixcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3I6ICNmZmYsXG4gICAgICAgICAgICAgICAgc3Bpbm5lckNvbG9yOiAjZmZmZmZmLFxuICAgICAgICAgICAgICAgIG5hdkJhclRleHRDb2xvcjogI2ZmZixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICNmZmZmZmYsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yMjogIzliOWI5YixcbiAgICAgICAgICAgICAgICBsaWdodExpbmtDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBsaW5rQm9yZGVyQm90dG9tOiAxcHggc29saWQgI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBsaW5rSG92ZXJDb2xvcjogI2ZmZmZmZixcbiAgICAgICAgICAgICAgICBsaWdodExpbmtIb3ZlckNvbG9yOiAjZmZmZmZmLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDBcbiAgICAgICAgKVxuKTsiLCIvL0BpbXBvcnQgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb25cIjtcblxuLnNldHRpbmdzLWNvbnRhaW5lciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHBhZGRpbmc6IDAuM3JlbTtcblxuICAjc2V0dGluZ3MtZnJhZ21lbnRzLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJHByb3RvdHlwZS1ib3JkZXItY29sb3I7XG4gICAgfVxuXG4gICAgI3NldHRpbmdzLWZyYWdtZW50cyB7XG4gICAgICA+ICoge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc3dpdGNoIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogaW5pdGlhbDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIGRvd24pIHtcbiAgICBmb250LXNpemU6IDAuNmVtO1xuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21lZGl1bSBkb3duKSB7XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgfVxuXG4gIGlucHV0IHtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmOmNoZWNrZWQgKyAuc2xpZGVyIHtcbiAgICAgIC8vYmFja2dyb3VuZC1jb2xvcjogIzIxOTZGMztcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEuNWVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzICsgLnNsaWRlciB7XG4gICAgICAvL2JveC1zaGFkb3c6IDAgMCAxcHggIzIxOTZGMztcbiAgICB9XG4gIH1cblxuICAuc2xpZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB3aWR0aDogM2VtO1xuICAgIGhlaWdodDogMS41ZW07XG4gICAgYm9yZGVyLXJhZGl1czogMS41ZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcbiAgICB0cmFuc2l0aW9uOiAuNHM7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBtYXJnaW4tdG9wOiAwO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGhlaWdodDogMS4xZW07XG4gICAgICB3aWR0aDogMS4xZW07XG4gICAgICBsZWZ0OiAwLjE1ZW07XG4gICAgICBib3R0b206IDAuMTVlbTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgdHJhbnNpdGlvbjogLjRzO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIH1cbiAgfVxuXG4gIGltZywgc3ZnIHtcbiAgICB3aWR0aDogMS40ZW07XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIHZlcnRpY2FsLWFsaWduOiBpbml0aWFsO1xuXG4gICAgcGF0aCB7XG4gICAgICBzdHJva2UtY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG5cbmxhYmVsIHtcbiAgZm9udC1zaXplOiAxZW0gIWltcG9ydGFudDtcblxufVxuXG4uc2V0dGluZy1yb3c6bm90KC5oaWRkZW4pIHtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjRyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogcmdiYSgxOTUsIDE5NSwgMTk1LCAwLjEzKTtcblxuICA+ICoge1xuICAgIGZsZXg6IDE7XG4gIH1cblxuICBpbnB1dFt0eXBlPWNoZWNrYm94XSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbiIsIi56Zi1ncmVlbiB7XG4gIGNvbG9yOiAjNjhiNjA0XG59XG5cbi5jb2x1bW46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSwgLmNvbHVtbnM6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGZsb2F0OiBsZWZ0XG59XG5cbmlucHV0W3R5cGU9Y2hlY2tCb3hdLmZvcm0tY29udHJvbCB7XG4gIGhlaWdodDogMjRweDtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIHdpZHRoOiAxMDAlXG59XG5cblt0eXBlPXN1Ym1pdF0ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzlweDtcbiAgaGVpZ2h0OiAyLjQzNzVyZW07XG4gIHBhZGRpbmc6IDhweDtcbiAgcGFkZGluZzogLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjYWNhY2E7XG4gIG1hcmdpbjogMCAwIDE2cHg7XG4gIG1hcmdpbjogMCAwIDFyZW07XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6ICMwYTBhMGE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCBoc2xhKDAsIDAlLCA0JSwgLjEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IC41cywgYm9yZGVyLWNvbG9yIC4yNXMgZWFzZS1pbi1vdXQ7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lXG59XG5cbmZvcm0gdWwgbGkge1xuICBjb2xvcjogcmVkO1xuICBmb250LXNpemU6IDEyLjhweDtcbiAgZm9udC1zaXplOiAuOHJlbVxufVxuXG4uYnV0dG9uLWRyb3Bkb3duOmFmdGVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjMDAwIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IC40ZW07XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAuNGVtO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgcmlnaHQ6IDFlbVxufVxuXG4uYnV0dG9uLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1yaWdodDogMmVtXG59XG5cbi5idXR0b24tZHJvcGRvd24ub3BlbjphZnRlciB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzAwMDtcbiAgdG9wOiAwXG59XG5cbmEudWktZGF0ZXBpY2tlci1uZXh0LCBhLnVpLWRhdGVwaWNrZXItcHJldiB7XG4gIGhlaWdodDogMTAwJSAhaW1wb3J0YW50XG59XG5cbmRpdi5jb250YWluZXIgYS5uYXZiYXItYnJhbmQgPiBpbWcge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIG1hcmdpbi1yaWdodDogNHB4XG59XG5cbnVsLm1lbnUucGxhaW4gbGkuYWN0aXZlIGEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlZGVkO1xuICBjb2xvcjogIzAwMFxufVxuXG51bC5tZW51LnBsYWluIGxpIGEge1xuICBjb2xvcjogIzAwMFxufVxuXG51bC5tZW51LnBsYWluIGxpIGE6aG92ZXIge1xuICBjb2xvcjogIzUyNTI1MlxufVxuXG51bC5zdWJtZW51IHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNiY2JjYmM7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmNiY2JjO1xuICBtYXJnaW4tbGVmdDogMTBweFxufVxuXG4jY29va2llLWNvbXBsaWFuY2Uge1xuICBsaW5lLWhlaWdodDogMS4yO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMCAwO1xuICBwYWRkaW5nOiAwLjNyZW0gMDtcbiAgI2Nsb3NlLWNvb2tpZS1tc2cge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIHBhZGRpbmc6IDAuNHJlbSAwLjhyZW07XG4gIH1cbn1cblxuLm1lbnUtY29udGFpbmVyIC5idXR0b25cbntcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbn1cblxuQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAyMCB7XG4gICRmYWN0b3I6ICRpLzIwO1xuICAkdmFsdWU6IHBlcmNlbnRhZ2UoJGZhY3Rvcik7XG4gIC5oZWlnaHQtI3skZmFjdG9yKjEwMH0ge1xuICAgIGhlaWdodDogJHZhbHVlO1xuICB9XG4gIC5tYXgtaGVpZ2h0LSN7JGZhY3RvcioxMDB9IHtcbiAgICBtYXgtaGVpZ2h0OiAkdmFsdWU7XG4gIH1cbiAgLndpZHRoLSN7JGZhY3RvcioxMDB9IHtcbiAgICB3aWR0aDogJHZhbHVlO1xuICB9XG4gIC5tYXgtd2lkdGgtI3skZmFjdG9yKjEwMH0ge1xuICAgIG1heC13aWR0aDogJHZhbHVlO1xuICB9XG59XG5cbi50ZXh0LXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59IiwiKiB7XG4gIC8vdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMjVzIGVhc2Utb3V0LCBjb2xvciAuMjVzIGVhc2Utb3V0O1xuICB0cmFuc2l0aW9uOiAuMjVzIGVhc2Utb3V0LCBjb2xvciAuMjVzIGVhc2Utb3V0O1xufVxuXG5AbWl4aW4gZGVmaW5lVGhlbWUoJHRoZW1lKSB7XG4gIGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgY29sb3I6IG1hcC1nZXQoJHRoZW1lLCB0ZXh0Q29sb3IpO1xuXG4gICNjb29raWUtY29tcGxpYW5jZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkdGhlbWUsIGxpZ2h0VGhlbWVDb2xvcik7XG4gICAgY29sb3I6IG1hcC1nZXQoJHRoZW1lLCBuYXZCYXJUZXh0Q29sb3IpO1xuICAgIGEubGluayB7XG4gICAgICBjb2xvcjogbWFwLWdldCgkdGhlbWUsIGxpZ2h0TGlua0NvbG9yKTtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IG1hcC1nZXQoJHRoZW1lLCBsaWdodExpbmtDb2xvcik7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IG1hcC1nZXQoJHRoZW1lLCBsaWdodExpbmtIb3ZlckNvbG9yKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogbWFwLWdldCgkdGhlbWUsIGxpZ2h0TGlua0hvdmVyQ29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBhLmxpbmsge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogbWFwLWdldCgkdGhlbWUsIGxpbmtDb2xvcik7XG4gICAgYm9yZGVyLWJvdHRvbTogbWFwLWdldCgkdGhlbWUsIGxpbmtCb3JkZXJCb3R0b20pO1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6IG1hcC1nZXQoJHRoZW1lLCBsaW5rSG92ZXJDb2xvcik7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiBtYXAtZ2V0KCR0aGVtZSwgbGlua0hvdmVyQ29sb3IpO1xuICAgIH1cbiAgfVxuICAubG9hZGVyICNzcGlubmVyIHtcbiAgICBzdHJva2U6IG1hcC1nZXQoJHRoZW1lLCBzcGlubmVyQ29sb3IpO1xuICB9XG5cbiAgbmF2LnRvcC1iYXIge1xuICAgIGNvbG9yOiBtYXAtZ2V0KCR0aGVtZSwgbmF2QmFyVGV4dENvbG9yKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgdGhlbWVDb2xvcik7XG4gIH1cbiAgLnRvcC1iYXIge1xuICAgIHVsIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCB0aGVtZUNvbG9yKSAhaW1wb3J0YW50O1xuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiBtYXAtZ2V0KCR0aGVtZSwgbmF2QmFyVGV4dENvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYnV0dG9uLmJ1dHRvbiwgYS5idXR0b24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJHRoZW1lLCB0aGVtZUNvbG9yKTtcbiAgICAmLmRpc2FibGVkLCAmLmRpc2FibGVkOmhvdmVyLCAmLmRpc2FibGVkOmZvY3VzLCAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJHRoZW1lLCB0aGVtZUNvbG9yKTtcbiAgICB9XG4gIH1cbiAgLnN3aXRjaCB7XG4gICAgaW5wdXQge1xuICAgICAgJjpjaGVja2VkICsgLnNsaWRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJHRoZW1lLCB0aGVtZUNvbG9yKTtcbiAgICAgIH1cbiAgICAgICY6Zm9jdXMgKyAuc2xpZGVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDFweCBtYXAtZ2V0KCR0aGVtZSwgdGhlbWVDb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGxhYmVsIHtcbiAgICBjb2xvcjogI3ttYXAtZ2V0KCR0aGVtZSwgdGV4dENvbG9yKX07XG4gIH1cbiAgLmJhY2tncm91bmQgLm1vZGFsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICAuZmlsbC1jb2xvciwgJi5maWxsLWNvbG9ye1xuICAgICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIH1cbiAgICAuZmlsbC1iYWNrZ3JvdW5kLCAmLmZpbGwtYmFja2dyb3VuZHtcbiAgICAgIGZpbGw6ICNmZWZlZmU7XG4gICAgfVxuICB9XG5cbiAgLy9Gb3Jtc1xuICBsYWJlbCB7XG4gICAgW3R5cGU9J3RleHQnXSwgW3R5cGU9J3Bhc3N3b3JkJ10sIFt0eXBlPSdkYXRlJ10sIFt0eXBlPSdkYXRldGltZSddLCBbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSwgW3R5cGU9J21vbnRoJ10sIFt0eXBlPSd3ZWVrJ10sIFt0eXBlPSdlbWFpbCddLCBbdHlwZT0nbnVtYmVyJ10sIFt0eXBlPSdzZWFyY2gnXSwgW3R5cGU9J3RlbCddLCBbdHlwZT0ndGltZSddLCBbdHlwZT0ndXJsJ10sIFt0eXBlPSdjb2xvciddLCB0ZXh0YXJlYSwgaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXQ6bm90KFt0eXBlXSkge1xuICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgI3ttYXAtZ2V0KCR0aGVtZSwgdGV4dENvbG9yKX07XG4gICAgICBiYWNrZ3JvdW5kOiAje21hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKX07XG4gICAgICBjb2xvcjoje21hcC1nZXQoJHRoZW1lLCB0ZXh0Q29sb3IpfTtcblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkICN7bWFwLWdldCgkdGhlbWUsIHRleHRDb2xvcil9O1xuICAgICAgfVxuICAgICAgJjpmb2N1cywgJi5ub3RFbXB0eTpub3QoOmZvY3VzKSB7XG4gICAgICAgIH4gc3BhbiB7XG4gICAgICAgICAgY29sb3I6ICN7bWFwLWdldCgkdGhlbWUsIHRleHRDb2xvcil9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB+IHNwYW4ge1xuICAgICAgICBjb2xvcjogI3thZGp1c3RfY29sb3IoIG1hcC1nZXQoJHRoZW1lLCB0ZXh0Q29sb3IpLCAkYWxwaGE6IC0wLjM1KX07XG4gICAgICB9XG4gICAgfVxuICAgIHRleHRhcmVhIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMnB4IGhzbGEoMCwgMCUsIDUzJSwgLjMxKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICBpbnB1dC5ub3RFbXB0eTppbnZhbGlkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAje2FkanVzdF9jb2xvciggbWFwLWdldCgkdGhlbWUsIHRoZW1lQ29sb3IpLCAkYWxwaGE6IC0wLjM1KX07XG4gIH1cbn1cblxuYm9keSB7XG4gIEBlYWNoICR0aGVtZSwgJHZhbHVlcyBpbiAkdGhlbWVzIHtcbiAgICBAaWYgKG1hcC1nZXQoJHZhbHVlcywgY2xhc3MpID09IFwiXCIpIHtcbiAgICAgIEBpbmNsdWRlIGRlZmluZVRoZW1lKCR2YWx1ZXMpXG4gICAgfSBAZWxzZSB7XG4gICAgICAmLiN7bWFwLWdldCgkdmFsdWVzLCBjbGFzcyl9IHtcbiAgICAgICAgQGluY2x1ZGUgZGVmaW5lVGhlbWUoJHZhbHVlcylcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgdHV0b3JpYWxQb2ludGVyIHtcbiAgMCUge1xuICAgIHRvcDogMjUlO1xuICB9XG4gIDEwMCUge1xuICAgIHRvcDogNzUlO1xuICB9XG59XG5cbi50dXRvcmlhbC1ibGFua2V0IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG5cbiAgei1pbmRleDogOTAwMTtcbiAgYmFja2dyb3VuZDogcmdiYSg1NSwgNTUsIDU1LCAwLjUxKTtcbn1cblxuLnR1dG9yaWFsIHtcbiAgLnR1dG9yaWFsLWJsYW5rZXQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLnR1dG9yaWFsLXRleHQge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcblxuICAgICoge1xuICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICYuc3RlcC0xIHtcbiAgICAjbGV2ZWwge1xuICAgICAgLnNlZ21lbnQtcm93IHtcbiAgICAgICAgcG9zaXRpb246IGluaGVyaXQ7XG4gICAgICB9XG5cbiAgICAgIC5zZWdtZW50LXBhcmVudDpudGgtY2hpbGQoMyksIC5zZWdtZW50LXBhcmVudDpudGgtY2hpbGQoMykucm90YXRpbmcge1xuICAgICAgICB6LWluZGV4OiA5OTAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnR1dG9yaWFsLXRleHQgLnN0ZXAtMSB7XG4gICAgICBkaXNwbGF5OiBpbml0aWFsO1xuICAgICAgei1pbmRleDogOTkwMCAhaW1wb3J0YW50O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4gICYuc3RlcC0yIHtcbiAgICAjbGV2ZWwge1xuICAgICAgei1pbmRleDogOTkwMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC50dXRvcmlhbC10ZXh0IC5zdGVwLTIge1xuICAgICAgZGlzcGxheTogaW5pdGlhbDtcbiAgICAgIHotaW5kZXg6IDk5MDAgIWltcG9ydGFudDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gIH1cblxuICAmLnN0ZXAtMyB7XG4gICAgLnR1dG9yaWFsLXRleHQgLnN0ZXAtMyB7XG4gICAgICBkaXNwbGF5OiBpbml0aWFsO1xuICAgICAgei1pbmRleDogOTkwMCAhaW1wb3J0YW50O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC50b3AtYmFyIHtcbiAgICAgIHotaW5kZXg6IDk5MDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuaGVscC1hY3Rpb24ge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAvL3otaW5kZXg6IDk5MDAgIWltcG9ydGFudDtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgYm94LXNoYWRvdzogMCAwIDEwcHggNXB4ICNmZmY7XG4gICAgfVxuICB9XG5cbiAgJi5zdGVwLTQge1xuICAgIC50dXRvcmlhbC10ZXh0IC5zdGVwLTQge1xuICAgICAgZGlzcGxheTogaW5pdGlhbDtcbiAgICAgIHotaW5kZXg6IDk5MDAgIWltcG9ydGFudDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAjbGV2ZWwge1xuICAgICAgLnNlZ21lbnQtcm93IHtcbiAgICAgICAgcG9zaXRpb246IGluaGVyaXQ7XG5cbiAgICAgICAgPiAuY2hpbGQtY29udGFpbmVyIHtcbiAgICAgICAgICAuc2VnbWVudC1wYXJlbnQubGF5ZXItMiwgPiAuc2VnbWVudC1wYXJlbnQubGF5ZXItMi5yb3RhdGluZyB7XG4gICAgICAgICAgICB6LWluZGV4OiA5OTAwICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICN0dXRvcmlhbC1wb2ludGVyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDAuNmVtO1xuICAgICAgICAgICAgICBoZWlnaHQ6IDAuNmVtO1xuICAgICAgICAgICAgICAvL2JhY2tncm91bmQ6IHJlZDtcblxuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAgICAgICAgICAgbGVmdDogNzUlO1xuICAgICAgICAgICAgICAvL3JpZ2h0OiA1MCU7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgdG9wOiA3NSU7XG4gICAgICAgICAgICAgIC8vYm90dG9tOiA1MCU7XG4gICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogdHV0b3JpYWxQb2ludGVyIDJzIGluZmluaXRlO1xuICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuI3R1dG9yaWFsLXNpdGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAjdHV0b3JpYWwtMSwgI3R1dG9yaWFsLTIsICN0dXRvcmlhbC0ze1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAwLjdyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICB9XG5cbiAgI3R1dG9yaWFsLTIgLmhlbHAtYWN0aW9ue1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiAgfVxuICAjdHV0b3JpYWwtMyAudHV0b3JpYWwtd3JhcHBlcntcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3R1dG9yaWFsLXBvaW50ZXIge1xuICAgICAgd2lkdGg6IDAuNmVtO1xuICAgICAgaGVpZ2h0OiAwLjZlbTtcblxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICAgICBsZWZ0OiA3NSU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDc1JTtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICAgICAgYW5pbWF0aW9uOiB0dXRvcmlhbFBvaW50ZXIgMnMgaW5maW5pdGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBhZGRUaGVtZURlZmluaXRpb24oJHRoZW1lKSB7XG4gICN0dXRvcmlhbC1wb2ludGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAje21hcC1nZXQoJHRoZW1lLCB0aGVtZUNvbG9yKX07XG4gIH1cblxuICAjbGV2ZWwtbnVtYmVyLWNvbnRhaW5lciB7XG4gICAgJi5pbi1tYWluLW1lbnUge1xuICAgICAgYmFja2dyb3VuZDogI3ttYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCl9O1xuICAgICAgYm9yZGVyLWNvbG9yOiAje21hcC1nZXQoJHRoZW1lLCB0ZXh0Q29sb3IpfTtcbiAgICB9XG4gIH1cbiAgLnNlZ21lbnQuc2VnbWVudC1wYXJlbnQge1xuICAgIGJvcmRlci1jb2xvcjogI3ttYXAtZ2V0KCR0aGVtZSwgdGV4dENvbG9yMil9O1xuXG4gICAgJi5sYXllci0yIHtcbiAgICAgIGJvcmRlci1jb2xvcjogI3ttYXAtZ2V0KCR0aGVtZSwgdGV4dENvbG9yKX07XG4gICAgfVxuICB9XG5cbiAgI3NpdGUgPiA6bm90KC53b24pIC5zZWdtZW50LmxvY2tlZCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIGJvcmRlci1jb2xvcjogI3ttYXAtZ2V0KCR0aGVtZSwgbGlnaHRUaGVtZUNvbG9yKX07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI3ttYXAtZ2V0KCR0aGVtZSwgdGhlbWVDb2xvcil9ICFpbXBvcnRhbnQ7XG5cbiAgICA+IC5jaGlsZC1jb250YWluZXIgPiAuc2VnbWVudC1sZWFmIHtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgICAgLy9ib3JkZXItY29sb3I6ICAje21hcC1nZXQoJHRoZW1lLCBsaWdodFRoZW1lQ29sb3IpfTtcbiAgICAgIC8vYmFja2dyb3VuZC1jb2xvcjoje21hcC1nZXQoJHRoZW1lLCB0aGVtZUNvbG9yKX0gIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbiAgLnNlZ21lbnQ6bm90KC5zZWdtZW50LXJvdyk6bm90KC5zZWdtZW50LXRyaWFuZ2xlKSB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHJvdGF0aW9uRGVncmVlcykge1xuICAgICAgJi5yb3RhdGUtI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpfSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICN7bWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpfTs7XG5cbiAgICAgICAgPiAuY2hpbGQtY29udGFpbmVyIHtcbiAgICAgICAgICA+IC5zZWdtZW50IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICN7bWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpfTs7XG5cbiAgICAgICAgICAgIEBmb3IgJGogZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRyb3RhdGlvbkRlZ3JlZXMpIHtcbiAgICAgICAgICAgICAgJGFuaW1hdGlvbk5hbWU6ICgobnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRqKS0gbnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRpKSszNjApJTM2MCk7XG4gICAgICAgICAgICAgIEBpZiAkYW5pbWF0aW9uTmFtZT09MCB7XG4gICAgICAgICAgICAgICAgJGFuaW1hdGlvbk5hbWU6IDM2MDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICYucm90YXRlLSN7bnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRqKX0ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICN7bWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLy5zZXR0aW5nLXJvd3tcbiAgLy8gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAgI3ttYXAtZ2V0KCR0aGVtZSwgdGV4dENvbG9yKX07XG4gIC8vICAmOm5vdCguaGlkZGVuKTpmaXJzdC1jaGlsZHtcbiAgLy8gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICAje21hcC1nZXQoJHRoZW1lLCB0ZXh0Q29sb3IpfTtcbiAgLy8gIH1cbiAgLy99XG59XG5cbmJvZHkge1xuICBAZWFjaCAkdGhlbWUsICR2YWx1ZXMgaW4gJHRoZW1lcyB7XG4gICAgQGlmIChtYXAtZ2V0KCR2YWx1ZXMsIGNsYXNzKSA9PSAnJykge1xuICAgICAgQGluY2x1ZGUgYWRkVGhlbWVEZWZpbml0aW9uKCR2YWx1ZXMpXG4gICAgfSBAZWxzZSB7XG4gICAgICAmLiN7bWFwLWdldCgkdmFsdWVzLCBjbGFzcyl9IHtcbiAgICAgICAgQGluY2x1ZGUgYWRkVGhlbWVEZWZpbml0aW9uKCR2YWx1ZXMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kZWZhdWx0IHtcbiAgICAvL2JhY2tncm91bmQ6ICMwNzA3NmQ7XG4gICAgYmFja2dyb3VuZDogIzBmMGY0OTtcbiAgICAvL2JhY2tncm91bmQ6ICMxYzFjNDQ7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgICoge1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAvL2JhY2tncm91bmQ6IHVybCgnLi4vaW1nL2JhY2tncm91bmQucG5nJyk7XG4gICAgLy9iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIC8vYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuXG4gICAgI2xldmVsLW51bWJlci1jb250YWluZXIge1xuICAgICAgJi5pbi1tYWluLW1lbnUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNlZ21lbnQuc2VnbWVudC1wYXJlbnQge1xuICAgICAgJjpub3QoLmxheWVyLTIpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDA1ZDA3O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwOSwgMjU1LCAxMjcsIDAuMikgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgLy9iYWNrZ3JvdW5kOiByZ2JhKDkwLCAxNjQsIDYxLCAxKSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICNzaXRlID4gOm5vdCgud29uKSAuc2VnbWVudC5sb2NrZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1jb2xvcjogIzQyZmY0YSAhaW1wb3J0YW50O1xuXG4gICAgICA+IC5jaGlsZC1jb250YWluZXIgPiAuc2VnbWVudC1sZWFmIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmRhcmsge1xuICAgIC5zd2l0Y2gge1xuICAgICAgaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IGJsYWNrO1xuICAgICAgfVxuXG4gICAgICAuc2xpZGVyIHtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIHBhZGRpbmc6IDFweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAjc2l0ZSA+IDpub3QoLndvbikgLnNlZ21lbnQubG9ja2VkLmxheWVyLTIge1xuICAgICAgYm9yZGVyLWNvbG9yOiAjNTY1NjU2O1xuICAgIH1cblxuICAgIC5tb2RhbCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgfVxuICB9XG5cbiAgJi5ibGFjayB7XG4gICAgI3NpdGUgPiA6bm90KC53b24pIC5zZWdtZW50LmxvY2tlZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWQ5ZDlkICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItY29sb3I6ICM2ZTZlNmUgIWltcG9ydGFudDtcblxuICAgICAgPiAuY2hpbGQtY29udGFpbmVyID4gLnNlZ21lbnQtbGVhZiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgI2xvZ28ge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgZ3JleTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB9XG4gIH1cblxuICAvLy5zZXR0aW5nLXJvdzpub3QoLmhpZGRlbikge1xuICAvLyAgbGluZS1oZWlnaHQ6IDE7XG4gIC8vICBwYWRkaW5nLXRvcDogMC41ZW07XG4gIC8vICBwYWRkaW5nLWJvdHRvbTogMC41ZW07XG4gIC8vICB3aWR0aDogMTAwJTtcbiAgLy8gIGN1cnNvcjogcG9pbnRlcjtcbiAgLy8gIGJhY2tncm91bmQ6IHJnYmEoMTk1LCAxOTUsIDE5NSwgMC4xMyk7XG4gIC8vICAvL2Rpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLy99XG59XG4iLCIvL0BpbXBvcnQgXCJsaWIvX3JvdGF0ZS5zY3NzXCI7XG5AaW1wb3J0IFwibGliL19zaGFyZS5zY3NzXCI7XG4vL0BpbXBvcnQgXCJsaWIvX3RhYnMuc2Nzc1wiO1xuQGltcG9ydCBcImxpYi9fY29yZS5zY3NzXCI7XG4vL0BpbXBvcnQgXCJsaWIvX2ZsYXNoTWVzc2VuZ2VyLnNjc3NcIjtcbi8vQGltcG9ydCBcImxpYi9fZnJhbWV3b3JrLnNjc3NcIjtcbkBpbXBvcnQgXCJsaWIvX3NldHRpbmdzU2l0ZS5zY3NzXCI7XG5AaW1wb3J0IFwibGliL19zdHlsZS5zY3NzXCI7XG5AaW1wb3J0IFwibGliL190aGVtZS5zY3NzXCI7XG5AaW1wb3J0IFwidHV0b3JpYWxcIjtcbkBpbXBvcnQgXCJ3b3Jkcm90YXRvclRoZW1lXCI7XG5cblxuJHRleHQtc2hhZG93OiAwIDAuMnJlbSAwLjJyZW0gIzQ2NDY0NiwgMC42cmVtIDAuOHJlbSAwLjRyZW0gIzAwMDAwMDkwO1xuXG4ubm8tdHJhbnNpdGlvbntcbiAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAqIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy9BY3Rpb25CYXJcbm5hdi50b3AtYmFyLnRpdGxlLWJhciB7XG4gIHBhZGRpbmc6IDAuM3JlbSAwLjZyZW0gMDtcbn1cblxuI2xvZ28ge1xuICBtYXgtd2lkdGg6IDJyZW07XG4gIHRyYW5zaXRpb246IG5vbmU7XG59XG5cbiNhY3Rpb24tYmFyIC50b3AtYmFyLXJpZ2h0IC5tZW51IC5hY3Rpb24uaW1nIGEge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICBpbWcge1xuICAgIG1heC1oZWlnaHQ6IDEuOHJlbTtcbiAgfVxufVxuXG4ubWVudSwgLmRyb3Bkb3duLm1lbnUge1xuICBhIHtcbiAgICBwYWRkaW5nOiAwLjJyZW0gMC41cmVtO1xuICB9XG59XG5cbi5yZWxhdGl2ZS1sZXZlbC1udW1iZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgI2xldmVsLW51bWJlci1jb250YWluZXIge1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG59XG5cbi8vYm9keS5kZWZhdWx0IC53b24gLmxldmVsLWNvdW50ZXIge1xuLy8gIHRyYW5zaXRpb24tZHVyYXRpb246IDFzO1xuLy8gIGJhY2tncm91bmQ6ICMwNmJkMDY7XG4vLyAgYm9yZGVyLWNvbG9yOiAjYzEwMDAwO1xuLy8gIC8vPiBhIHtcbi8vICAvLyAgY29sb3I6IGJsYWNrO1xuLy8gIC8vfVxuLy99XG5cbiNsZXZlbC1udW1iZXItY29udGFpbmVyLCAubGV2ZWwtY291bnRlciB7XG4gIHotaW5kZXg6IDE7XG4gIC8vdHJhbnNpdGlvbjogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUpO1xuICBib3JkZXI6IDNweCBzb2xpZCB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAvL3Zpc2liaWxpdHk6IGhpZGRlbjtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcblxuXG4gIGhlaWdodDogNDBweDtcbiAgd2lkdGg6IDQwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAmLmxldmVsLWNvdW50ZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuXG4gICAgJi5udW0tMTAge1xuICAgICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgfVxuXG4gICAgJi5udW0tMTAwIHtcbiAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIH1cblxuICAgICYubnVtLTEwMDAge1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgIH1cbiAgfVxuXG4gICYuaW4tbWFpbi1tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItY29sb3I6IGJsYWNrO1xuXG4gICAgaGVpZ2h0OiAxZW07XG4gICAgd2lkdGg6IDFlbTtcbiAgICBtaW4taGVpZ2h0OiAxZW07XG4gICAgbWluLXdpZHRoOiAxZW07XG4gICAgbWF4LWhlaWdodDogMWVtO1xuICAgIG1heC13aWR0aDogMWVtO1xuICB9XG5cbiAgYSB7XG4gICAgd2lkdGg6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgfVxuXG4gICNsZXZlbC1udW1iZXIsIGEge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxufVxuXG4kY29pblRvd2VyRGltZW5zaW9uOiAyOHB4O1xuLy9jb2luIGVsZW1lbnRcbi5jb2luLWNvdW50ZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiAxLjZyZW07XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgZG93bikge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgfVxuXG4gIDphZnRlciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWcvY29pblRvd2VyLnBuZycpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogJGNvaW5Ub3dlckRpbWVuc2lvbiAkY29pblRvd2VyRGltZW5zaW9uO1xuICAgIHdpZHRoOiAkY29pblRvd2VyRGltZW5zaW9uO1xuICAgIGhlaWdodDogJGNvaW5Ub3dlckRpbWVuc2lvbjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxufVxuXG4jY29pbi1jb250YWluZXIge1xuICBsaW5lLWhlaWdodDogMTtcblxuICAuY29pbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDNweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICBtYXgtd2lkdGg6IDIwcHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21lZGl1bSkge1xuICAgICAgbWF4LXdpZHRoOiAyNXB4O1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgbWF4LXdpZHRoOiAzMHB4O1xuICAgIH1cbiAgfVxufVxuXG4vL1NlZ21lbnRzXG5cbkBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRyb3RhdGlvbkRlZ3JlZXMpIHtcbiAgJHN0YXJ0RGVncmVlOiAoKG50aCgkcm90YXRpb25EZWdyZWVzLCAkaSkrMjcwKSUzNjApO1xuXG4gIEBrZXlmcmFtZXMgcm90YXRlLSN7bnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRpKX0ge1xuICAgIDAlIHtcbiAgICAgIC8vdHJhbnNmb3JtOiByb3RhdGUoI3skc3RhcnREZWdyZWV9ZGVnKTtcbiAgICAgIHRyYW5zZm9ybTogI3ttYXAtZ2V0KCRkZWdyZWVNYXRyaXgsICRzdGFydERlZ3JlZSl9O1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIC8vdHJhbnNmb3JtOiByb3RhdGUoI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpfWRlZyk7XG4gICAgICB0cmFuc2Zvcm06ICN7bWFwLWdldCgkZGVncmVlTWF0cml4LCBudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpKX07XG4gICAgfVxuICB9XG4gIEBrZXlmcmFtZXMgcm90YXRlLXJldmVyc2UtI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpfSB7XG4gICAgMCUge1xuICAgICAgLy90cmFuc2Zvcm06IHJvdGF0ZSgjeyhudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpKSs5MH1kZWcpO1xuICAgICAgdHJhbnNmb3JtOiAje21hcC1nZXQoJGRlZ3JlZU1hdHJpeCwgbnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRpKSs5MCl9XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgLy90cmFuc2Zvcm06IHJvdGF0ZSgjeyRzdGFydERlZ3JlZSs5MH1kZWcpO1xuICAgICAgdHJhbnNmb3JtOiAje21hcC1nZXQoJGRlZ3JlZU1hdHJpeCwgJHN0YXJ0RGVncmVlKzkwKX07XG4gICAgfVxuICB9XG59XG5cbi5zZWdtZW50Om5vdCguc2VnbWVudC1yb3cpOm5vdCguc2VnbWVudC10cmlhbmdsZSkge1xuICAmLnJvdGF0aW5nIHtcbiAgICB6LWluZGV4OiAxMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkcm90YXRpb25EZWdyZWVzKSB7XG4gICAgICAmLnJvdGF0ZS0je250aCgkcm90YXRpb25EZWdyZWVzLCAkaSl9IHtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZS0je250aCgkcm90YXRpb25EZWdyZWVzLCAkaSl9O1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246ICRhbmltYXRpb25EdXJhdGlvbjtcbiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAgICAgICA+IC5jaGlsZC1jb250YWluZXIge1xuICAgICAgICAgID4gLnNlZ21lbnQge1xuICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZS0jezQ1MC0gbnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRpKX07XG4gICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246ICRhbmltYXRpb25EdXJhdGlvbjtcbiAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAgICAgICAgICAgQGZvciAkaiBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHJvdGF0aW9uRGVncmVlcykge1xuICAgICAgICAgICAgICAkYW5pbWF0aW9uTmFtZTogKChudGgoJHJvdGF0aW9uRGVncmVlcywgJGopLSBudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpKzM2MCklMzYwKSs5MDtcbiAgICAgICAgICAgICAgJi5yb3RhdGUtI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGopfSB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZS0jeyRhbmltYXRpb25OYW1lfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYucmV2ZXJzZSB7XG4gICAgICAgICAgLy9hbmltYXRpb24tbmFtZTogcm90YXRlLXJldmVyc2UtI3sobnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRpKSklMzYwKzkwfTtcbiAgICAgICAgICBhbmltYXRpb24tbmFtZTogcm90YXRlLXJldmVyc2UtI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpfTtcblxuICAgICAgICAgID4gLmNoaWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICA+IC5zZWdtZW50IHtcbiAgICAgICAgICAgICAgLy9hbmltYXRpb24tbmFtZTogcm90YXRlLXJldmVyc2UtI3szNjAtIChudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpJTM2MCl9O1xuICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogcm90YXRlLXJldmVyc2UtI3soNTQwLSBudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpKSUzNjArOTB9O1xuICAgICAgICAgICAgICBAZm9yICRqIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkcm90YXRpb25EZWdyZWVzKSB7XG4gICAgICAgICAgICAgICAgJGFuaW1hdGlvbk5hbWU6ICgobnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRqKS0gbnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRpKSszNjApJTM2MCkrOTA7XG4gICAgICAgICAgICAgICAgJi5yb3RhdGUtI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGopfSB7XG4gICAgICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogcm90YXRlLXJldmVyc2UtI3soJGFuaW1hdGlvbk5hbWUrOTApJTM2MCs5MH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpub3QoLnJvdGF0aW5nKSB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHJvdGF0aW9uRGVncmVlcykge1xuICAgICAgJi5yb3RhdGUtI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpfSB7XG4gICAgICAgIC8vdHJhbnNmb3JtOiByb3RhdGUoI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpfWRlZyk7XG4gICAgICAgIHRyYW5zZm9ybTogI3ttYXAtZ2V0KCRkZWdyZWVNYXRyaXgsIG50aCgkcm90YXRpb25EZWdyZWVzLCAkaSkpfTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICAgICAgei1pbmRleDogMTtcblxuICAgICAgICA+IC5jaGlsZC1jb250YWluZXIge1xuICAgICAgICAgID4gLnNlZ21lbnQge1xuICAgICAgICAgICAgLy90cmFuc2Zvcm06IHJvdGF0ZSgjezM2MC0gbnRoKCRyb3RhdGlvbkRlZ3JlZXMsICRpKX1kZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiAje21hcC1nZXQoJGRlZ3JlZU1hdHJpeCwgMzYwLSBudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpKX07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgICAgei1pbmRleDogMTtcblxuICAgICAgICAgICAgQGZvciAkaiBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHJvdGF0aW9uRGVncmVlcykge1xuICAgICAgICAgICAgICAkYW5pbWF0aW9uTmFtZTogKChudGgoJHJvdGF0aW9uRGVncmVlcywgJGopLSBudGgoJHJvdGF0aW9uRGVncmVlcywgJGkpKzM2MCklMzYwKTtcbiAgICAgICAgICAgICAgQGlmICRhbmltYXRpb25OYW1lPT0wIHtcbiAgICAgICAgICAgICAgICAkYW5pbWF0aW9uTmFtZTogMzYwO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgJi5yb3RhdGUtI3tudGgoJHJvdGF0aW9uRGVncmVlcywgJGopfSB7XG4gICAgICAgICAgICAgICAgLy90cmFuc2Zvcm06IHJvdGF0ZSgjeyRhbmltYXRpb25OYW1lfWRlZyk7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAje21hcC1nZXQoJGRlZ3JlZU1hdHJpeCwgJGFuaW1hdGlvbk5hbWUpfTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG5cbiAgICAgICAgICAgICAgICAmLnJvdGF0aW5nIHtcbiAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiByb3RhdGUtI3skYW5pbWF0aW9uTmFtZX07XG4gICAgICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246ICRhbmltYXRpb25EdXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gICAgICAgICAgICAgICAgICAmLnJldmVyc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogcm90YXRlLXJldmVyc2UtI3skYW5pbWF0aW9uTmFtZX07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiNsZXZlbCB7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0cmFuc2l0aW9uOiBub25lO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTtcbiAgLy93aWR0aDogMTAwJTtcblxuICAqIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG5cbiAgb3ZlcmZsb3cteTogdmlzaWJsZTtcbn1cblxuLnNlZ21lbnQge1xuXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIHdoaXRlLXNwYWNlOiBpbml0aWFsO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zaXRpb246IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB6LWluZGV4OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogMDtcblxuICAmLnNlZ21lbnQtcm93IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG5cbiAgJi5zZWdtZW50LWNvbHVtbiB7XG4gICAgcGFkZGluZy10b3A6IDRweDtcblxuICAgID4gLmNoaWxkLWNvbnRhaW5lciA+IC5zZWdtZW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgJi5zZWdtZW50LWxlYWYge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgbWluLXdpZHRoOiAxZW07XG4gICAgcGFkZGluZzogMC44ZW07XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZy10b3A6IDEwMCU7XG4gICAgfVxuXG4gICAgLmxlYWYtZWxlbWVudCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG5cbiAgICAgIC8vdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcblxuICAgIH1cbiAgfVxuXG4gICYuc2VnbWVudC1wYXJlbnQge1xuICAgIGJvcmRlcjogc29saWQgMXB4ICNhOWE5YTk7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIHBhZGRpbmc6IDFweDtcblxuICAgICYubGF5ZXItMiB7XG4gICAgICBib3JkZXI6IHNvbGlkIDNweCAjMDAwMDAwO1xuICAgIH1cbiAgfVxuXG4gICYuc2VnbWVudC10cmlhbmdsZSB7XG4gICAgPiAuY2hpbGQtY29udGFpbmVyIHtcbiAgICAgID4gLnNlZ21lbnQtcGFyZW50IHtcbiAgICAgICAgLy9ib3JkZXI6IHNvbGlkIDNweCAjMDAwMDAwO1xuICAgICAgICAvL3Bvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy9Xb24tc2NyZWVuXG4jc2l0ZSA+IDpub3QoLndvbikge1xuICAuc2hvdy13aGVuLXdvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubGV2ZWwtY29udGFpbmVyIHtcbiAgLy9mbGV4OiAxO1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuXG4ud29uIHtcbiAgLmxldmVsLWNvbnRhaW5lciB7XG4gICAgLy9oZWlnaHQ6IDYwJTtcbiAgfVxuXG4gIC5zaG93LXdoZW4td29uIHtcbiAgICAvL3Zpc2liaWxpdHk6IGluaXRpYWw7XG4gIH1cblxuICAuc2hvdy13aGlsZS1wbGF5aW5nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgI3dvbi10ZXh0IHtcbiAgICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xuICB9XG5cbn1cblxuLnRleHQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuI2NvbnRpbnVlLWJ1dHRvbiB7XG4gIG1hcmdpbi1ib3R0b206IDJweDtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBkb3duKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBwYWRkaW5nOiAwLjNlbSAuNmVtO1xuICB9XG59XG5cbiNwbGF5LWJ1dHRvbiB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgZG93bikge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgfVxufVxuXG4jaGVscC1idXR0b24ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAuNGVtIDAuNGVtO1xuICBtYXgtd2lkdGg6IDNlbTtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWVkaXVtIGRvd24pIHtcbiAgICBwYWRkaW5nOiAwLjJlbSAwLjJlbTtcbiAgICBtYXgtd2lkdGg6IDJlbTtcbiAgfVxufVxuXG4ubGluZS1oZWlnaHQtMSB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG5ib2R5IHtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbiNzaXRlIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbmRpdi5tYWluQ29udGFpbmVyIHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG59XG5cbi8vI2ltZy1zb3VuZDpiZWZvcmUge1xuLy8gIGNvbnRlbnQ6IFwiXCI7XG4vLyAgbWF4LXdpZHRoOiAxLjRlbTtcbi8vICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltZy9zcGVha2VyLnN2ZycpXG4vL31cblxuLmNsaWNrYWJsZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuI3NoYXJlLWJ1dHRvbiB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgc3ZnIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWF4LXdpZHRoOiAxLjVyZW07XG4gIH1cbn1cblxuc3ZnIHtcbiAgY29sb3I6IGJsYWNrO1xuXG4gIC5maWxsLWJhY2tncm91bmQge1xuICAgIGZpbGw6IHdoaXRlO1xuICB9XG59XG4iLCJAa2V5ZnJhbWVzIGp1bXAtYW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIC8vdHJhbnNmb3JtOiByb3RhdGUoI3skc3RhcnREZWdyZWV9ZGVnKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbi5qdW1wLWFuaW1hdGlvbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBqdW1wLWFuaW1hdGlvbjtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjRzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBub25lO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG59XG5cbiRkZWc6IDEwZGVnO1xuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDMzJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLSRkZWcpO1xuICB9XG4gIDY2JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoJGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbn1cblxuLnNoYWtlIC5sZWFmLWVsZW1lbnQge1xuXG4gIC8qIFN0YXJ0IHRoZSBzaGFrZSBhbmltYXRpb24gYW5kIG1ha2UgdGhlIGFuaW1hdGlvbiBsYXN0IGZvciAwLjUgc2Vjb25kcyAqL1xuICBhbmltYXRpb246IHNoYWtlIDAuMTVzO1xuXG4gIC8qIFdoZW4gdGhlIGFuaW1hdGlvbiBpcyBmaW5pc2hlZCwgc3RhcnQgYWdhaW4gKi9cbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG59IiwibmF2LnRvcC1iYXIge1xuICBwYWRkaW5nOiAwO1xuXG4gIEBlYWNoICRicmVha3BvaW50LCAkdmFsdWUgaW4gJG1hcmdpbnMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtJHZhbHVlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtJHZhbHVlO1xuICAgICAgLy93aWR0aDogY2FsYygxMDAlICsgI3s0KiR2YWx1ZX0pO1xuICAgICAgLy9tYXgtd2lkdGg6IGNhbGMoMTAwJSArICN7NCokdmFsdWV9KTtcbiAgICB9XG4gIH1cblxuICAmLndpdGgtaW1hZ2UgLmJhY2tncm91bmQtaW1nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmJhY2tncm91bmQtaW1nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgPiAuZ3JpZC1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIC8vcGFkZGluZy1yaWdodDogMDtcblxuICAgID4gLmdyaWQtcGFkZGluZy14IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcblxuICAgICAgPiAuc21hbGwtMTJ7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICB1bCA+IGxpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAmLmxldmVsLWNvdW50ZXIge1xuICAgICAgbWFyZ2luLXRvcDogMC4ycmVtO1xuICAgIH1cbiAgfVxuXG59XG4iLCJcbi8vIEJsdWVcbi8vJHByaW1hcnlDb2xvcjogIzQyNzA4MTtcbi8vJHNlY29uZGFyeUNvbG9yOiAjNGQ1NzVhO1xuLy8kYWNjZW50Q29sb3I6ICNlM2FiNmU7XG4vLyR0ZXh0Q29sb3I6IHdoaXRlO1xuLy8kc3ZnQ29sb3I6IGJsYWNrO1xuXG4gLy9CbHVlIGRpZmZlcmVudCBBY2NlbnRcbiRwcmltYXJ5Q29sb3I6ICM0MjcwODE7XG4kc2Vjb25kYXJ5Q29sb3I6ICM0ZDU3NWE7XG4kYWNjZW50Q29sb3I6ICNkM2U3ZWI7XG4kdGV4dENvbG9yOiB3aGl0ZTtcbiRzdmdDb2xvcjogYmxhY2s7XG5cbi8vIEJsYXUgSW52ZXJzXG4vLyRwcmltYXJ5Q29sb3I6ICM0ZDU3NWE7XG4vLyRzZWNvbmRhcnlDb2xvcjogIzQyNzA4MTtcbi8vJGFjY2VudENvbG9yOiAjZTNhYjZlO1xuLy8kdGV4dENvbG9yOiB3aGl0ZTtcbi8vJHN2Z0NvbG9yOiBibGFjaztcblxuLy8gR3LDvG5cbi8vJHByaW1hcnlDb2xvcjogIzZiODc3ODtcbi8vJHNlY29uZGFyeUNvbG9yOiAjMDEyZjI1O1xuLy8kYWNjZW50Q29sb3I6ICNjMmNlY2E7XG4vLyR0ZXh0Q29sb3I6IHdoaXRlO1xuLy8kc3ZnQ29sb3I6IGJsYWNrO1xuXG4vLyBHcsO8biAyXG4vLyRwcmltYXJ5Q29sb3I6ICMyMzRjNDI7XG4vLyRzZWNvbmRhcnlDb2xvcjogIzAxMmYyNTtcbi8vJGFjY2VudENvbG9yOiAjYjhhY2FhO1xuLy8kdGV4dENvbG9yOiB3aGl0ZTtcbi8vJHN2Z0NvbG9yOiBibGFjaztcblxuLy8gR3LDvG4gaW52ZXJzXG4vLyRwcmltYXJ5Q29sb3I6ICMwMTJmMjU7XG4vLyRzZWNvbmRhcnlDb2xvcjogIzIzNGM0Mjtcbi8vJGFjY2VudENvbG9yOiAjYjhhY2FhO1xuLy8kdGV4dENvbG9yOiB3aGl0ZTtcbi8vJHN2Z0NvbG9yOiB3aGl0ZTtcblxuLy8gR3LDvG4gaW52ZXJzIGFuZGVyZSBBY2NlbnRcbi8vJHByaW1hcnlDb2xvcjogIzAxMmYyNTtcbi8vJHNlY29uZGFyeUNvbG9yOiAjMjM0YzQyO1xuLy8kYWNjZW50Q29sb3I6ICM2Yjg3Nzg7XG4vLyR0ZXh0Q29sb3I6IHdoaXRlO1xuLy8kc3ZnQ29sb3I6IHdoaXRlO1xuXG5ib2R5LnRoZW1lLWJsdWV7XG4gIGJhY2tncm91bmQ6ICRwcmltYXJ5Q29sb3I7XG4gIGNvbG9yOiAkdGV4dENvbG9yO1xuXG4gIGxhYmVse1xuICAgIGNvbG9yOiAkdGV4dENvbG9yO1xuICB9XG5cbiAgLnRvYXN0IC5tZXNzYWdle1xuICAgIGJhY2tncm91bmQ6ICRzZWNvbmRhcnlDb2xvcjtcbiAgfVxuXG4gIG5hdi50b3AtYmFyLCBuYXYudG9wLWJhci53aXRoLWltYWdlLCBuYXYudG9wLWJhci53aXRoLWltYWdlLnNvbGlke1xuICAgIGJhY2tncm91bmQ6ICRzZWNvbmRhcnlDb2xvcjtcbiAgfVxuXG4gIC5idXR0b257XG4gICAgYmFja2dyb3VuZDogJHNlY29uZGFyeUNvbG9yO1xuICB9XG5cbiAgLnN3aXRjaCBpbnB1dDpjaGVja2VkICsgLnNsaWRlcntcbiAgICBiYWNrZ3JvdW5kOiAkYWNjZW50Q29sb3I7XG4gIH1cbiAgI2xldmVsLW51bWJlci1jb250YWluZXJ7XG4gICAgYmFja2dyb3VuZDogJHByaW1hcnlDb2xvcjtcbiAgfVxuICBzdmcge1xuICAgIGNvbG9yOiAkc3ZnQ29sb3I7XG4gIH1cblxuICB1bC5tZW51IGxpIGEge1xuICAgIGNvbG9yOiAkdGV4dENvbG9yO1xuICB9XG5cbiAgYXtcbiAgICBjb2xvcjogJGFjY2VudENvbG9yO1xuICAgICYuaGlkZGVuLWxpbmt7XG4gICAgICBjb2xvcjogJHRleHRDb2xvcjtcbiAgICB9XG4gIH1cblxuICAjc2l0ZSA+IDpub3QoLndvbikgLnNlZ21lbnQubG9ja2VkIHtcbiAgICAvL2JhY2tncm91bmQtY29sb3I6ICRhY2NlbnRDb2xvcjtcbiAgICAvL2JhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnlDb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwMzA7XG4gICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAjODFhY2I1O1xuICB9XG5cbiAgI3R1dG9yaWFsLXBvaW50ZXJ7XG4gICAgYmFja2dyb3VuZDogJGFjY2VudENvbG9yO1xuICB9XG5cbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb25cIjtcblxuLy9TZXR0aW5ncyBuYWNoIGZvdW5kYXRpb24gZsO8ciBtaXhpbnMgaW4gc2V0dGluZ3NcbkBpbXBvcnQgXCJzZXR0aW5nc1wiO1xuXG4vL0luY2x1ZGUgZm91bmRhdGlvbiBiZWZvcmUgb3RoZXIgc3R5bGVzLCBzbyB0aGF0IG90aGVyIG9uZSBjYW4gb3ZlcnJpZGUgZm91bmRhdGlvblxuQGluY2x1ZGUgZm91bmRhdGlvbi1ldmVyeXRoaW5nO1xuXG4vL0Zyb20gZnJhbWV3b3JrXG5AaW1wb3J0IFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmRvdmEtc2l0ZXMvY29yZG92YS1zaXRlc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3Jkb3ZhLXNpdGVzLXVzZXItbWFuYWdlbWVudC9jb3Jkb3ZhLXNpdGVzLXVzZXItbWFuYWdlbWVudFwiO1xuXG4vL0FuZGVyZXMgbmFjaCBTZXR0aW5ncywgZGFtaXQgU2V0dGluZ3MgYmVyZWl0cyBhbmdld2VuZGV0IHdlcmRlblxuQGltcG9ydCBcIndvcmRSb3RhdG9yXCI7XG5AaW1wb3J0IFwiYW5pbWF0aW9uc1wiO1xuQGltcG9ydCBcIm5hdmJhck92ZXJyaWRlXCI7XG5AaW1wb3J0IFwidGhlbWVCbHVlXCI7XG5cbi50cmFuc2xhdGlvbnt9XG5cbkBrZXlmcmFtZXMgcm90YXRlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1MGRlZyk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBsaW5lIHtcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDg1Ljk2NDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTtcbiAgfVxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDY1Ljk3MywgMjEuOTkxMTtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAyLCA4NS45NjQ7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC02NS45NzM7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICB9XG59XG5cbmh0bWwsIGJvZHkge1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lO1xufVxuXG5cbmEsIGE6aG92ZXIge1xuICBjb2xvcjogI2ZmY2EwMDtcbn1cblxuI3NpdGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgLy9vdmVyZmxvdzogYXV0bztcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgLy9kaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5yaWdodCB7XG4gIGZsb2F0OiByaWdodFxufVxuXG4uZ3JvdyB7XG4gIGZsZXg6IDE7XG59XG5cbi5sb2FkZXIge1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogNTAlO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJi5vdmVybGF5IHtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxOTIsIDE5MiwgMTkyLCAwLjUpO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICB6LWluZGV4OiAxMDAwMDtcblxuICAgIHN2ZyB7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAmLmlubGluZSB7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgICB0b3A6IGluaXRpYWw7XG4gICAgcG9zaXRpb246IGluaXRpYWw7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IGluaXRpYWw7XG4gICAgdHJhbnNmb3JtOiBpbml0aWFsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cblxuICAmLnNtYWxsIC5zcGlubmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gIH1cblxuICAuc3Bpbm5lciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAvL3N0cm9rZTogI2I3MWMxYTtcbiAgICBzdHJva2U6ICMwMDA7XG4gICAgc3Ryb2tlLXdpZHRoOiAzcHg7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlO1xuICAgIGFuaW1hdGlvbjogbGluZSAxLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUsIHJvdGF0ZSAxLjZzIGxpbmVhciBpbmZpbml0ZTtcbiAgfVxufVxuXG4ub3ZlcmZsb3ctYXV0byB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm92ZXJmbG93LWhpZGRlbntcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmhlaWdodC0xMDAge1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vL1ZpZXdJbmZsYXRlclxuLmluamVjdGVkLXNwYW4ge1xufVxuXG4udmVydGljYWwtbWlkZGxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnZlcnRpY2FsLWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBlbmQ7XG59XG5cbi5ob3Jpem9udGFsLWNlbnRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ud2lkdGgtMTAwIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbkBmb3IgJGkgZnJvbSAxIHRocm91Z2ggNiB7XG4gIGgjeyRpfS5pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG5pbWcuYmFjay1idXR0b24ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1heC1oZWlnaHQ6IDEuMXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjJyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNjVyZW07XG59XG5cbmEuaGlkZGVuLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuI21haW4tY29udGVudC1jb250YWluZXIge1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAuZ3JpZC14e1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cblxuICAjbWFpbi1jb250ZW50IHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgfVxufVxuXG5ib2R5e1xuICAvL2JhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9iYWNrZ3JvdW5kLnBuZ1wiKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= */ \ No newline at end of file diff --git a/src/server/public/index.html b/src/server/public/index.html index 1e13b9d..7d94dc7 100644 --- a/src/server/public/index.html +++ b/src/server/public/index.html @@ -1,42 +1 @@ - - - - - - - - - - - - - - - - WordRotator - - - - -
-
- -
-
-
-
- - - -
-
- - - - - +WordRotator
\ No newline at end of file diff --git a/src/server/public/plugins/cordova-plugin-background-fetch/www/BackgroundFetch.js b/src/server/public/plugins/cordova-plugin-background-fetch/www/BackgroundFetch.js deleted file mode 100644 index 5332002..0000000 --- a/src/server/public/plugins/cordova-plugin-background-fetch/www/BackgroundFetch.js +++ /dev/null @@ -1,95 +0,0 @@ -cordova.define("cordova-plugin-background-fetch.BackgroundFetch", function(require, exports, module) { /*** - * Custom Cordova Background Fetch plugin. - * @author - * iOS native-side is largely based upon http://www.mindsizzlers.com/2011/07/ios-background-location/ - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ -var exec = require("cordova/exec"); - -var EMPTY_FN = function() {} - -var MODULE = "BackgroundFetch"; -module.exports = { - STATUS_RESTRICTED: 0, - STATUS_DENIED: 1, - STATUS_AVAILABLE: 2, - - FETCH_RESULT_NEW_DATA: 0, - FETCH_RESULT_NO_DATA: 1, - FETCH_RESULT_FAILED: 2, - - NETWORK_TYPE_NONE: 0, - NETWORK_TYPE_ANY: 1, - NETWORK_TYPE_UNMETERED: 2, - NETWORK_TYPE_NOT_ROAMING: 3, - NETWORK_TYPE_CELLULAR: 4, - - configure: function(callback, failure, config) { - if (typeof(callback) !== 'function') { - throw "BackgroundFetch configure error: You must provide a callback function as 1st argument"; - } - config = config || {}; - failure = failure || EMPTY_FN; - exec(callback, failure, MODULE, 'configure', [config]); - }, - - finish: function(taskId, success, failure) { - if (typeof(taskId) !== 'string') { - throw "BackgroundGeolocation.finish now requires a String taskId as first argument"; - } - success = success || EMPTY_FN; - failure = failure || EMPTY_FN; - exec(success, failure, MODULE, 'finish',[taskId]); - }, - - start: function(success, failure) { - success = success || EMPTY_FN; - failure = failure || EMPTY_FN; - exec(success, failure, MODULE, 'start',[]); - }, - - stop: function(success, failure) { - success = success || EMPTY_FN; - failure = failure || EMPTY_FN; - exec(success, failure, MODULE, 'stop', []); - }, - - scheduleTask: function(config, success, failure) { - if (typeof(config) !== 'object') throw "[BackgroundFetch stopTask] ERROR: The 1st argument to scheduleTask is a config {}"; - success = success || EMPTY_FN; - failure = failure || EMPTY_FN; - exec(success, failure, MODULE, 'scheduleTask', [config]); - }, - - stopTask: function(taskId, success, failure) { - if (typeof(taskId) !== 'string') throw "[BackgroundFetch stopTask] ERROR: The 1st argument must be a taskId:String"; - success = success || EMPTY_FN; - failure = failure || EMPTY_FN; - exec(success, failure, MODULE, 'stop', [taskId]); - }, - - status: function(success, failure) { - success = success || EMPTY_FN; - failure = failure || EMPTY_FN; - exec(success, failure, MODULE, 'status',[]); - } -}; - -}); diff --git a/src/server/public/plugins/cordova-plugin-badge/src/browser/BadgeProxy.js b/src/server/public/plugins/cordova-plugin-badge/src/browser/BadgeProxy.js deleted file mode 100644 index 4446431..0000000 --- a/src/server/public/plugins/cordova-plugin-badge/src/browser/BadgeProxy.js +++ /dev/null @@ -1,117 +0,0 @@ -cordova.define("cordova-plugin-badge.Badge.Proxy", function(require, exports, module) { /* - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apache License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://opensource.org/licenses/Apache-2.0/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - */ - -// Instance of the Favico.js libary -exports.favico = new cordova.plugins.notification.badge.Favico({ - animation: 'none' -}); - -// Holds the current badge number -var BADGE_KEY = 'cordova_badge_number'; -// Holds the saved badge config -var CONFIG_KEY = 'APPBadgeConfigKey'; - -/** - * Clears the badge of the app icon. - * - * @param [ Function ] success Success callback - * @param [ Function ] error Error callback - * - * @return [ Void ] - */ -exports.clear = function (success, error) { - exports.set(success, error, [0]); -}; - -/** - * Gets the badge of the app icon. - * - * @param [ Function ] success Success callback - * @param [ Function ] error Error callback - * - * @return [ Void ] - */ -exports.get = function (success, error) { - var badge = localStorage[BADGE_KEY]; - - success(badge || 0); -}; - -/** - * Sets the badge of the app icon. - * - * @param [ Function ] success Success callback - * @param [ Function ] error Error callback - * @param [ Int ] badge The badge number - * - * @return [ Void ] - */ -exports.set = function (success, error, args) { - var badge = args[0]; - - exports.saveBadge(badge); - exports.favico.badge(badge); - - success(badge); -}; - -/** - * Save the badge config. - * - * @param [ Function ] success Success callback - * @param [ Function ] error Error callback - * @param [ Int ] config The config map - * - * @return [ Void ] - */ -exports.save = function (success, error, args) { - var config = args[0] || null, - json = JSON.stringify(config); - - localStorage[CONFIG_KEY] = json; -}; - -/** - * Load the badge config. - * - * @param [ Function ] success Success callback - * @param [ Function ] error Error callback - * - * @return [ Void ] - */ -exports.load = function (success, error) { - var json = localStorage[CONFIG_KEY], - config = JSON.parse(json || null); - - success(config); -}; - -/** - * Persist the badge of the app icon so that `getBadge` is able to return the - * badge number back to the client. - * - * @param [ Int ] badge The badge number - * - * @return [ Void ] - */ -exports.saveBadge = function (badge) { - localStorage[BADGE_KEY] = badge; -}; - -cordova.commandProxy.add('Badge', exports); - -}); diff --git a/src/server/public/plugins/cordova-plugin-badge/src/browser/favico.min.js b/src/server/public/plugins/cordova-plugin-badge/src/browser/favico.min.js deleted file mode 100644 index a5feeeb..0000000 --- a/src/server/public/plugins/cordova-plugin-badge/src/browser/favico.min.js +++ /dev/null @@ -1,8 +0,0 @@ -cordova.define("cordova-plugin-badge.Badge.Favico", function(require, exports, module) { /** - * @license MIT - * @fileOverview Favico animations - * @author Miroslav Magda, http://blog.ejci.net - * @version 0.3.10 - */ -!function(){var e=function(e){"use strict";function t(e){if(e.paused||e.ended||g)return!1;try{f.clearRect(0,0,s,l),f.drawImage(e,0,0,s,l)}catch(o){}p=setTimeout(function(){t(e)},S.duration),O.setIcon(h)}function o(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(t,function(e,t,o,n){return t+t+o+o+n+n});var o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return o?{r:parseInt(o[1],16),g:parseInt(o[2],16),b:parseInt(o[3],16)}:!1}function n(e,t){var o,n={};for(o in e)n[o]=e[o];for(o in t)n[o]=t[o];return n}function r(){return b.hidden||b.msHidden||b.webkitHidden||b.mozHidden}e=e?e:{};var i,a,l,s,h,f,c,d,u,y,w,g,x,m,p,b,v={bgColor:"#d00",textColor:"#fff",fontFamily:"sans-serif",fontStyle:"bold",type:"circle",position:"down",animation:"slide",elementId:!1,dataUrl:!1,win:window};x={},x.ff="undefined"!=typeof InstallTrigger,x.chrome=!!window.chrome,x.opera=!!window.opera||navigator.userAgent.indexOf("Opera")>=0,x.ie=/*@cc_on!@*/!1,x.safari=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0,x.supported=x.chrome||x.ff||x.opera;var C=[];w=function(){},d=g=!1;var E=function(){i=n(v,e),i.bgColor=o(i.bgColor),i.textColor=o(i.textColor),i.position=i.position.toLowerCase(),i.animation=S.types[""+i.animation]?i.animation:v.animation,b=i.win.document;var t=i.position.indexOf("up")>-1,r=i.position.indexOf("left")>-1;if(t||r)for(var d=0;d0?c.height:32,s=c.width>0?c.width:32,h.height=l,h.width=s,f=h.getContext("2d"),M.ready()},c.setAttribute("src",a.getAttribute("href"))):(c.onload=function(){l=32,s=32,c.height=l,c.width=s,h.height=l,h.width=s,f=h.getContext("2d"),M.ready()},c.setAttribute("src",""))},M={};M.ready=function(){d=!0,M.reset(),w()},M.reset=function(){d&&(C=[],u=!1,y=!1,f.clearRect(0,0,s,l),f.drawImage(c,0,0,s,l),O.setIcon(h),window.clearTimeout(m),window.clearTimeout(p))},M.start=function(){if(d&&!y){var e=function(){u=C[0],y=!1,C.length>0&&(C.shift(),M.start())};if(C.length>0){y=!0;var t=function(){["type","animation","bgColor","textColor","fontFamily","fontStyle"].forEach(function(e){e in C[0].options&&(i[e]=C[0].options[e])}),S.run(C[0].options,function(){e()},!1)};u?S.run(u.options,function(){t()},!0):t()}}};var A={},I=function(e){return e.n="number"==typeof e.n?Math.abs(0|e.n):e.n,e.x=s*e.x,e.y=l*e.y,e.w=s*e.w,e.h=l*e.h,e.len=(""+e.n).length,e};A.circle=function(e){e=I(e);var t=!1;2===e.len?(e.x=e.x-.4*e.w,e.w=1.4*e.w,t=!0):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w,t=!0),f.clearRect(0,0,s,l),f.drawImage(c,0,0,s,l),f.beginPath(),f.font=i.fontStyle+" "+Math.floor(e.h*(e.n>99?.85:1))+"px "+i.fontFamily,f.textAlign="center",t?(f.moveTo(e.x+e.w/2,e.y),f.lineTo(e.x+e.w-e.h/2,e.y),f.quadraticCurveTo(e.x+e.w,e.y,e.x+e.w,e.y+e.h/2),f.lineTo(e.x+e.w,e.y+e.h-e.h/2),f.quadraticCurveTo(e.x+e.w,e.y+e.h,e.x+e.w-e.h/2,e.y+e.h),f.lineTo(e.x+e.h/2,e.y+e.h),f.quadraticCurveTo(e.x,e.y+e.h,e.x,e.y+e.h-e.h/2),f.lineTo(e.x,e.y+e.h/2),f.quadraticCurveTo(e.x,e.y,e.x+e.h/2,e.y)):f.arc(e.x+e.w/2,e.y+e.h/2,e.h/2,0,2*Math.PI),f.fillStyle="rgba("+i.bgColor.r+","+i.bgColor.g+","+i.bgColor.b+","+e.o+")",f.fill(),f.closePath(),f.beginPath(),f.stroke(),f.fillStyle="rgba("+i.textColor.r+","+i.textColor.g+","+i.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?f.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):f.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),f.closePath()},A.rectangle=function(e){e=I(e);var t=!1;2===e.len?(e.x=e.x-.4*e.w,e.w=1.4*e.w,t=!0):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w,t=!0),f.clearRect(0,0,s,l),f.drawImage(c,0,0,s,l),f.beginPath(),f.font=i.fontStyle+" "+Math.floor(e.h*(e.n>99?.9:1))+"px "+i.fontFamily,f.textAlign="center",f.fillStyle="rgba("+i.bgColor.r+","+i.bgColor.g+","+i.bgColor.b+","+e.o+")",f.fillRect(e.x,e.y,e.w,e.h),f.fillStyle="rgba("+i.textColor.r+","+i.textColor.g+","+i.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?f.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):f.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),f.closePath()};var T=function(e,t){t=("string"==typeof t?{animation:t}:t)||{},w=function(){try{if("number"==typeof e?e>0:""!==e){var n={type:"badge",options:{n:e}};if("animation"in t&&S.types[""+t.animation]&&(n.options.animation=""+t.animation),"type"in t&&A[""+t.type]&&(n.options.type=""+t.type),["bgColor","textColor"].forEach(function(e){e in t&&(n.options[e]=o(t[e]))}),["fontStyle","fontFamily"].forEach(function(e){e in t&&(n.options[e]=t[e])}),C.push(n),C.length>100)throw new Error("Too many badges requests in queue.");M.start()}else M.reset()}catch(r){throw new Error("Error setting badge. Message: "+r.message)}},d&&w()},U=function(e){w=function(){try{var t=e.width,o=e.height,n=document.createElement("img"),r=o/l>t/s?t/s:o/l;n.setAttribute("crossOrigin","anonymous"),n.onload=function(){f.clearRect(0,0,s,l),f.drawImage(n,0,0,s,l),O.setIcon(h)},n.setAttribute("src",e.getAttribute("src")),n.height=o/r,n.width=t/r}catch(i){throw new Error("Error setting image. Message: "+i.message)}},d&&w()},R=function(e){w=function(){try{if("stop"===e)return g=!0,M.reset(),void(g=!1);e.addEventListener("play",function(){t(this)},!1)}catch(o){throw new Error("Error setting video. Message: "+o.message)}},d&&w()},L=function(e){if(window.URL&&window.URL.createObjectURL||(window.URL=window.URL||{},window.URL.createObjectURL=function(e){return e}),x.supported){var o=!1;navigator.getUserMedia=navigator.getUserMedia||navigator.oGetUserMedia||navigator.msGetUserMedia||navigator.mozGetUserMedia||navigator.webkitGetUserMedia,w=function(){try{if("stop"===e)return g=!0,M.reset(),void(g=!1);o=document.createElement("video"),o.width=s,o.height=l,navigator.getUserMedia({video:!0,audio:!1},function(e){o.src=URL.createObjectURL(e),o.play(),t(o)},function(){})}catch(n){throw new Error("Error setting webcam. Message: "+n.message)}},d&&w()}},O={};O.getIcon=function(){var e=!1,t=function(){for(var e=b.getElementsByTagName("head")[0].getElementsByTagName("link"),t=e.length,o=t-1;o>=0;o--)if(/(^|\s)icon(\s|$)/i.test(e[o].getAttribute("rel")))return e[o];return!1};return i.element?e=i.element:i.elementId?(e=b.getElementById(i.elementId),e.setAttribute("href",e.getAttribute("src"))):(e=t(),e===!1&&(e=b.createElement("link"),e.setAttribute("rel","icon"),b.getElementsByTagName("head")[0].appendChild(e))),e.setAttribute("type","image/png"),e},O.setIcon=function(e){var t=e.toDataURL("image/png");if(i.dataUrl&&i.dataUrl(t),i.element)i.element.setAttribute("href",t),i.element.setAttribute("src",t);else if(i.elementId){var o=b.getElementById(i.elementId);o.setAttribute("href",t),o.setAttribute("src",t)}else if(x.ff||x.opera){var n=a;a=b.createElement("link"),x.opera&&a.setAttribute("rel","icon"),a.setAttribute("rel","icon"),a.setAttribute("type","image/png"),b.getElementsByTagName("head")[0].appendChild(a),a.setAttribute("href",t),n.parentNode&&n.parentNode.removeChild(n)}else a.setAttribute("href",t)};var S={};return S.duration=40,S.types={},S.types.fade=[{x:.4,y:.4,w:.6,h:.6,o:0},{x:.4,y:.4,w:.6,h:.6,o:.1},{x:.4,y:.4,w:.6,h:.6,o:.2},{x:.4,y:.4,w:.6,h:.6,o:.3},{x:.4,y:.4,w:.6,h:.6,o:.4},{x:.4,y:.4,w:.6,h:.6,o:.5},{x:.4,y:.4,w:.6,h:.6,o:.6},{x:.4,y:.4,w:.6,h:.6,o:.7},{x:.4,y:.4,w:.6,h:.6,o:.8},{x:.4,y:.4,w:.6,h:.6,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],S.types.none=[{x:.4,y:.4,w:.6,h:.6,o:1}],S.types.pop=[{x:1,y:1,w:0,h:0,o:1},{x:.9,y:.9,w:.1,h:.1,o:1},{x:.8,y:.8,w:.2,h:.2,o:1},{x:.7,y:.7,w:.3,h:.3,o:1},{x:.6,y:.6,w:.4,h:.4,o:1},{x:.5,y:.5,w:.5,h:.5,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],S.types.popFade=[{x:.75,y:.75,w:0,h:0,o:0},{x:.65,y:.65,w:.1,h:.1,o:.2},{x:.6,y:.6,w:.2,h:.2,o:.4},{x:.55,y:.55,w:.3,h:.3,o:.6},{x:.5,y:.5,w:.4,h:.4,o:.8},{x:.45,y:.45,w:.5,h:.5,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],S.types.slide=[{x:.4,y:1,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.8,w:.6,h:.6,o:1},{x:.4,y:.7,w:.6,h:.6,o:1},{x:.4,y:.6,w:.6,h:.6,o:1},{x:.4,y:.5,w:.6,h:.6,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],S.run=function(e,t,o,a){var l=S.types[r()?"none":i.animation];return a=o===!0?"undefined"!=typeof a?a:l.length-1:"undefined"!=typeof a?a:0,t=t?t:function(){},a=0?(A[i.type](n(e,l[a])),m=setTimeout(function(){o?a-=1:a+=1,S.run(e,t,o,a)},S.duration),O.setIcon(h),void 0):void t()},E(),{badge:T,video:R,image:U,webcam:L,reset:M.reset,browser:{supported:x.supported}}};"undefined"!=typeof define&&define.amd?define([],function(){return e}):"undefined"!=typeof module&&module.exports?module.exports=e:this.Favico=e}(); -}); diff --git a/src/server/public/plugins/cordova-plugin-badge/www/badge.js b/src/server/public/plugins/cordova-plugin-badge/www/badge.js deleted file mode 100644 index bbf97e6..0000000 --- a/src/server/public/plugins/cordova-plugin-badge/www/badge.js +++ /dev/null @@ -1,281 +0,0 @@ -cordova.define("cordova-plugin-badge.Badge", function(require, exports, module) { /* - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apache License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://opensource.org/licenses/Apache-2.0/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - */ - -var exec = require('cordova/exec'), - channel = require('cordova/channel'), - ua = navigator.userAgent.toLowerCase(), - isIOS = ua.indexOf('ipad') > -1 || ua.indexOf('iphone') > -1, - isMac = ua.indexOf('macintosh') > -1, - isWin = window.Windows !== undefined, - isAndroid = !isWin && ua.indexOf('android') > -1, - isWinPC = isWin && Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamily.includes('Desktop'), - isDesktop = isMac || isWinPC; - -// Default settings -exports._config = { indicator: 'badge', autoClear: false }; - -/** - * Clears the badge number. - * - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.clear = function (callback, scope) { - this.exec('clear', null, callback, scope); -}; - -/** - * Sets the badge number. - * - * @param [ Int ] badge The new badge number. - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.set = function (badge, callback, scope) { - var args = [parseInt(badge) || 0]; - - this.requestPermission(function (granted) { - if (granted) { - this.exec('set', args, callback, scope); - } - }, this); -}; - -/** - * Gets the badge of the app icon. - * - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.get = function (callback, scope) { - this.exec('get', null, callback, scope); -}; - -/** - * Increases the badge number. - * - * @param [ Int ] count Number to add to the badge number. - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.increase = function (count, callback, scope) { - this.get(function (badge) { - this.set(badge + (count || 1), callback, scope); - }, this); -}; - -/** - * Decreases the badge number. - * - * @param [ Int ] count Number to substract to the badge number. - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.decrease = function (count, callback, scope) { - this.get(function (badge) { - this.set(Math.max(0, badge - (count || 1)), callback, scope); - }, this); -}; - -/** - * Check support to show badges. - * - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.isSupported = function (callback, scope) { - if (isAndroid) { - this.exec('check', null, callback, scope); - } else { - this.createCallbackFn(callback, scope)(true); - } -}; - -/** - * Check permission to show badges. - * - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.hasPermission = function (callback, scope) { - if (isIOS) { - this.exec('check', null, callback, scope); - } else { - this.createCallbackFn(callback, scope)(true); - } -}; - -/** - * Request permission to show badges. - * - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.requestPermission = function (callback, scope) { - if (isIOS) { - this.exec('request', null, callback, scope); - } else { - this.createCallbackFn(callback, scope)(true); - } -}; - -/** - * Configures the plugin's platform options. - * - * @param [ Hash ] object Optional config settings. - * - * @return [ Hash ] The merged config settings. - */ -exports.configure = function (config) { - this.mergeConfig(config); - this.exec('save', this._config); - - return this._config; -}; - -/** - * Merge the config values with the current ones. - * - * @param [ Hash ] object Optional config settings. - * - * @return [ Hash ] The merged config settings. - */ -exports.mergeConfig = function (config) { - return Object.assign(this._config, config); -}; - -/** - * Create callback, which will be executed within a specific scope. - * - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Function ] The new callback function - */ -exports.createCallbackFn = function (callbackFn, scope) { - if (typeof callbackFn != 'function') - return; - - return function () { - callbackFn.apply(scope || this, arguments); - }; -}; - -/** - * Clear the badge if autoClear is on and the indicator type is badge. - * - * @return [ Void ] - */ -exports.clearIf = function () { - if (this._config.autoClear && this._config.indicator == 'badge') { - this.clear(); - } -}; - -/** - * Execute the native counterpart. - * - * @param [ String ] action The name of the action to execute. - * @param [ Array ] args Array of arguments to pass with. - * @param [ Function ] callback The callback function to be execute later. - * @param [ Function ] scope Optional scope for the callback function. - * - * @return [ Void ] - */ -exports.exec = function (action, args, callback, scope) { - var fn = this.createCallbackFn(callback, scope), - params = []; - - if (Array.isArray(args)) { - params = args; - } else if (args) { - params.push(args); - } - - exec(fn, null, 'Badge', action, params); -}; - -// Clear badge on app start if autoClear is set to true -channel.onCordovaReady.subscribe(function () { - exports.exec('load', null, function (config) { - this.mergeConfig(config); - this.clearIf(); - }, exports); -}); - -// Clear badge on app resume if autoClear is set to true -channel.onResume.subscribe(function () { - exports.clearIf(); -}); - -// Clear badge on app resume if autoClear is set to true -channel.onActivated.subscribe(function () { - exports.clearIf(); -}); - -if (isDesktop) { - // Clear badge on app resume if autoClear is set to true - document.addEventListener('visibilitychange', function () { - if (!document.hidden) { exports.clearIf(); } - }, false); - - // Clear badge on app resume if autoClear is set to true - window.addEventListener('focus', function () { - exports.clearIf(); - }, false); -} - -// Polyfill for Object.assign -if (typeof Object.assign != 'function') { - Object.assign = function(target) { - 'use strict'; - if (target == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - - target = Object(target); - for (var index = 1; index < arguments.length; index++) { - var source = arguments[index]; - if (source != null) { - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - } - return target; - }; -} - -}); diff --git a/src/server/public/plugins/cordova-plugin-calendar/www/Calendar.js b/src/server/public/plugins/cordova-plugin-calendar/www/Calendar.js deleted file mode 100644 index b34778c..0000000 --- a/src/server/public/plugins/cordova-plugin-calendar/www/Calendar.js +++ /dev/null @@ -1,304 +0,0 @@ -cordova.define("cordova-plugin-calendar.Calendar", function(require, exports, module) { "use strict"; -function Calendar() { -} - -Calendar.prototype.getCreateCalendarOptions = function () { - return { - calendarName: null, - calendarColor: null // optional, the OS will choose one if left empty, example: pass "#FF0000" for red - }; -}; - -Calendar.prototype.hasReadPermission = function (successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "hasReadPermission", []); -}; - -Calendar.prototype.requestReadPermission = function (successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "requestReadPermission", []); -}; - -Calendar.prototype.hasWritePermission = function (successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "hasWritePermission", []); -}; - -Calendar.prototype.requestWritePermission = function (successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "requestWritePermission", []); -}; - -Calendar.prototype.hasReadWritePermission = function (successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "hasReadWritePermission", []); -}; - -Calendar.prototype.requestReadWritePermission = function (successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "requestReadWritePermission", []); -}; - -Calendar.prototype.createCalendar = function (calendarNameOrOptionsObject, successCallback, errorCallback) { - var options; - if (typeof calendarNameOrOptionsObject == "string") { - options = { - "calendarName": calendarNameOrOptionsObject - }; - } else { - options = calendarNameOrOptionsObject; - } - // merge passed options with defaults - var mergedOptions = Calendar.prototype.getCreateCalendarOptions(); - for (var val in options) { - if (options.hasOwnProperty(val)) { - mergedOptions[val] = options[val]; - } - } - cordova.exec(successCallback, errorCallback, "Calendar", "createCalendar", [mergedOptions]); -}; - -Calendar.prototype.deleteCalendar = function (calendarName, successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "deleteCalendar", [{ - "calendarName": calendarName - }]); -}; - -Calendar.prototype.openCalendar = function (date, successCallback, errorCallback) { - // default: today - if (!(date instanceof Date)) { - date = new Date(); - } - cordova.exec(successCallback, errorCallback, "Calendar", "openCalendar", [{ - "date": date.getTime() - }]); -}; - -Calendar.prototype.getCalendarOptions = function () { - return { - firstReminderMinutes: 60, - secondReminderMinutes: null, - recurrence: null, // options are: 'daily', 'weekly', 'monthly', 'yearly' - recurrenceInterval: 1, // only used when recurrence is set - recurrenceWeekstart: "MO", - recurrenceByDay: null, - recurrenceByMonthDay: null, - recurrenceEndDate: null, - recurrenceCount: null, - calendarName: null, - calendarId: null, - url: null - }; -}; - -/** - * This method can be used if you want more control over the event details. - * Pass in an options object which you can easily override as follow: - * var options = window.plugins.calendar.getCalendarOptions(); - * options.firstReminderMinutes = 150; - */ -Calendar.prototype.createEventWithOptions = function (title, location, notes, startDate, endDate, options, successCallback, errorCallback) { - if (!(startDate instanceof Date && endDate instanceof Date)) { - errorCallback("startDate and endDate must be JavaScript Date Objects"); - return; - } - - // merge passed options with defaults - var mergedOptions = Calendar.prototype.getCalendarOptions(); - for (var val in options) { - if (options.hasOwnProperty(val)) { - mergedOptions[val] = options[val]; - } - } - if (options.recurrenceEndDate != null) { - mergedOptions.recurrenceEndTime = options.recurrenceEndDate.getTime(); - } - cordova.exec(successCallback, errorCallback, "Calendar", "createEventWithOptions", [{ - "title": title, - "location": location, - "notes": notes, - "startTime": startDate instanceof Date ? startDate.getTime() : null, - "endTime": endDate instanceof Date ? endDate.getTime() : null, - "options": mergedOptions - }]); -}; - -/** - * @deprecated use createEventWithOptions instead - */ -Calendar.prototype.createEventInNamedCalendar = function (title, location, notes, startDate, endDate, calendarName, successCallback, errorCallback) { - Calendar.prototype.createEventWithOptions(title, location, notes, startDate, endDate, {calendarName:calendarName}, successCallback, errorCallback); -}; - -Calendar.prototype.createEvent = function (title, location, notes, startDate, endDate, successCallback, errorCallback) { - Calendar.prototype.createEventWithOptions(title, location, notes, startDate, endDate, {}, successCallback, errorCallback); -}; - -Calendar.prototype.createEventInteractively = function (title, location, notes, startDate, endDate, successCallback, errorCallback) { - Calendar.prototype.createEventInteractivelyWithOptions(title, location, notes, startDate, endDate, {}, successCallback, errorCallback); -}; - -Calendar.prototype.createEventInteractivelyWithOptions = function (title, location, notes, startDate, endDate, options, successCallback, errorCallback) { - // merge passed options with defaults - var mergedOptions = Calendar.prototype.getCalendarOptions(); - for (var val in options) { - if (options.hasOwnProperty(val)) { - mergedOptions[val] = options[val]; - } - } - if (options.recurrenceEndDate != null) { - mergedOptions.recurrenceEndTime = options.recurrenceEndDate.getTime(); - } - cordova.exec(successCallback, errorCallback, "Calendar", "createEventInteractively", [{ - "title": title, - "location": location, - "notes": notes, - "startTime": startDate instanceof Date ? startDate.getTime() : null, - "endTime": endDate instanceof Date ? endDate.getTime() : null, - "options": mergedOptions - }]) -}; - -Calendar.prototype.findEventWithOptions = function (title, location, notes, startDate, endDate, options, successCallback, errorCallback) { - // merge passed options with defaults - var mergedOptions = Calendar.prototype.getCalendarOptions(); - for (var val in options) { - if (options.hasOwnProperty(val)) { - mergedOptions[val] = options[val]; - } - } - if (options.recurrenceEndDate != null) { - mergedOptions.recurrenceEndTime = options.recurrenceEndDate.getTime(); - } - cordova.exec(successCallback, errorCallback, "Calendar", "findEventWithOptions", [{ - "title": title, - "location": location, - "notes": notes, - "startTime": startDate instanceof Date ? startDate.getTime() : null, - "endTime": endDate instanceof Date ? endDate.getTime() : null, - "options": mergedOptions - }]) -}; - -Calendar.prototype.findEvent = function (title, location, notes, startDate, endDate, successCallback, errorCallback) { - Calendar.prototype.findEventWithOptions(title, location, notes, startDate, endDate, {}, successCallback, errorCallback); -}; - -Calendar.prototype.findAllEventsInNamedCalendar = function (calendarName, successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "findAllEventsInNamedCalendar", [{ - "calendarName": calendarName - }]); -}; - -Calendar.prototype.deleteEvent = function (title, location, notes, startDate, endDate, successCallback, errorCallback) { - if (!(startDate instanceof Date && endDate instanceof Date)) { - errorCallback("startDate and endDate must be JavaScript Date Objects"); - } - cordova.exec(successCallback, errorCallback, "Calendar", "deleteEvent", [{ - "title": title, - "location": location, - "notes": notes, - "startTime": startDate instanceof Date ? startDate.getTime() : null, - "endTime": endDate instanceof Date ? endDate.getTime() : null - }]) -}; - -Calendar.prototype.deleteEventFromNamedCalendar = function (title, location, notes, startDate, endDate, calendarName, successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "deleteEventFromNamedCalendar", [{ - "title": title, - "location": location, - "notes": notes, - "startTime": startDate instanceof Date ? startDate.getTime() : null, - "endTime": endDate instanceof Date ? endDate.getTime() : null, - "calendarName": calendarName - }]) -}; - -Calendar.prototype.deleteEventById = function (id, fromDate, successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "deleteEventById", [{ - "id": id, - "fromTime": fromDate instanceof Date ? fromDate.getTime() : null - }]); -}; - -Calendar.prototype.modifyEventWithOptions = function (title, location, notes, startDate, endDate, newTitle, newLocation, newNotes, newStartDate, newEndDate, options, newOptions, successCallback, errorCallback) { - if (!(newStartDate instanceof Date && newEndDate instanceof Date)) { - errorCallback("newStartDate and newEndDate must be JavaScript Date Objects"); - return; - } - // merge passed options with defaults - var mergedOptions = Calendar.prototype.getCalendarOptions(); - for (var val in options) { - if (options.hasOwnProperty(val)) { - mergedOptions[val] = options[val]; - } - } - if (options.recurrenceEndDate != null) { - mergedOptions.recurrenceEndTime = options.recurrenceEndDate.getTime(); - } - // and also merge passed newOptions with defaults - var newMergedOptions = Calendar.prototype.getCalendarOptions(); - for (var val2 in newOptions) { - if (newOptions.hasOwnProperty(val2)) { - newMergedOptions[val2] = newOptions[val2]; - } - } - if (newOptions.recurrenceEndDate != null) { - newMergedOptions.recurrenceEndTime = newOptions.recurrenceEndDate.getTime(); - } - cordova.exec(successCallback, errorCallback, "Calendar", "modifyEventWithOptions", [{ - "title": title, - "location": location, - "notes": notes, - "startTime": startDate instanceof Date ? startDate.getTime() : null, - "endTime": endDate instanceof Date ? endDate.getTime() : null, - "newTitle": newTitle, - "newLocation": newLocation, - "newNotes": newNotes, - "newStartTime": newStartDate instanceof Date ? newStartDate.getTime() : null, - "newEndTime": newEndDate instanceof Date ? newEndDate.getTime() : null, - "options": mergedOptions, - "newOptions": newMergedOptions - }]) -}; - -Calendar.prototype.modifyEvent = function (title, location, notes, startDate, endDate, newTitle, newLocation, newNotes, newStartDate, newEndDate, successCallback, errorCallback) { - Calendar.prototype.modifyEventWithOptions(title, location, notes, startDate, endDate, newTitle, newLocation, newNotes, newStartDate, newEndDate, {}, successCallback, errorCallback); -}; - -Calendar.prototype.modifyEventInNamedCalendar = function (title, location, notes, startDate, endDate, newTitle, newLocation, newNotes, newStartDate, newEndDate, calendarName, successCallback, errorCallback) { - var options = Calendar.prototype.getCalendarOptions(); - options.calendarName = calendarName; - Calendar.prototype.modifyEventWithOptions(title, location, notes, startDate, endDate, newTitle, newLocation, newNotes, newStartDate, newEndDate, options, successCallback, errorCallback); -}; - -Calendar.prototype.listEventsInRange = function (startDate, endDate, successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "listEventsInRange", [{ - "startTime": startDate instanceof Date ? startDate.getTime() : null, - "endTime": endDate instanceof Date ? endDate.getTime() : null - }]) -}; - -Calendar.prototype.listCalendars = function (successCallback, errorCallback) { - cordova.exec(successCallback, errorCallback, "Calendar", "listCalendars", []); -}; - -Calendar.prototype.parseEventDate = function (dateStr) { - // Handle yyyyMMddTHHmmssZ iCalendar UTC format - var icalRegExp = /\b(\d{4})(\d{2})(\d{2}T\d{2})(\d{2})(\d{2}Z)\b/; - if (icalRegExp.test(dateStr)) - return new Date(String(dateStr).replace(icalRegExp, '$1-$2-$3:$4:$5')); - - var spl; - // Handle yyyy-MM-dd HH:mm:ss format returned by AbstractCalendarAccessor.java L66 and Calendar.m L378, and yyyyMMddTHHmmss iCalendar local format, and similar - return (spl = /^\s*(\d{4})\D?(\d{2})\D?(\d{2})\D?(\d{2})\D?(\d{2})\D?(\d{2})\s*$/.exec(dateStr)) - && new Date(spl[1], spl[2] - 1, spl[3], spl[4], spl[5], spl[6]) - || new Date(dateStr); -}; - -Calendar.install = function () { - if (!window.plugins) { - window.plugins = {}; - } - - window.plugins.calendar = new Calendar(); - return window.plugins.calendar; -}; - -cordova.addConstructor(Calendar.install); - -}); diff --git a/src/server/public/plugins/cordova-plugin-keyboard/www/keyboard.js b/src/server/public/plugins/cordova-plugin-keyboard/www/keyboard.js deleted file mode 100644 index 0a2bf85..0000000 --- a/src/server/public/plugins/cordova-plugin-keyboard/www/keyboard.js +++ /dev/null @@ -1,108 +0,0 @@ -cordova.define("cordova-plugin-keyboard.keyboard", function(require, exports, module) { /* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -var argscheck = require('cordova/argscheck'), - utils = require('cordova/utils'), - exec = require('cordova/exec'); - -var Keyboard = function() { -}; - -Keyboard.shrinkView = function(shrink, success) { - if (shrink !== null && shrink !== undefined) { - exec(success, null, "Keyboard", "shrinkView", [shrink]); - } else { - exec(success, null, "Keyboard", "shrinkView", []); - } -}; - -Keyboard.hideFormAccessoryBar = function(hide, success) { - if (hide !== null && hide !== undefined){ - exec(success, null, "Keyboard", "hideFormAccessoryBar", [hide]); - } else { - exec(success, null, "Keyboard", "hideFormAccessoryBar", []); - } -}; - -Keyboard.disableScrollingInShrinkView = function(disable, success) { - if (disable !== null && disable !== undefined) { - exec(success, null, "Keyboard", "disableScrollingInShrinkView", [disable]); - } else { - exec(success, null, "Keyboard", "disableScrollingInShrinkView", []); - } -}; - -Keyboard.fireOnShow = function() { - Keyboard.isVisible = true; - cordova.fireWindowEvent('keyboardDidShow'); - - if(Keyboard.onshow) { - Keyboard.onshow(); - } -}; - -Keyboard.fireOnHide = function() { - Keyboard.isVisible = false; - cordova.fireWindowEvent('keyboardDidHide'); - - if(Keyboard.onhide) { - Keyboard.onhide(); - } -}; - -Keyboard.fireOnHiding = function() { - // Automatic scroll to the top of the page - // to prevent quirks when using position:fixed elements - // inside WebKit browsers (iOS specifically). - // See CB-6444 for context. - if (Keyboard.automaticScrollToTopOnHiding) { - document.body.scrollLeft = 0; - } - - cordova.fireWindowEvent('keyboardWillHide'); - - if(Keyboard.onhiding) { - Keyboard.onhiding(); - } -}; - -Keyboard.fireOnShowing = function() { - cordova.fireWindowEvent('keyboardWillShow'); - - if(Keyboard.onshowing) { - Keyboard.onshowing(); - } -}; - -Keyboard.show = function() { - exec(null, null, "Keyboard", "show", []); -}; - -Keyboard.hide = function() { - exec(null, null, "Keyboard", "hide", []); -}; - -Keyboard.isVisible = false; -Keyboard.automaticScrollToTopOnHiding = false; - -module.exports = Keyboard; - -}); diff --git a/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification-core.js b/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification-core.js deleted file mode 100644 index 52e8d29..0000000 --- a/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification-core.js +++ /dev/null @@ -1,416 +0,0 @@ -cordova.define("cordova-plugin-local-notification.LocalNotification.Core", function(require, exports, module) { /* - * Apache 2.0 License - * - * Copyright (c) Sebastian Katzer 2017 - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apache License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://opensource.org/licenses/Apache-2.0/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - */ - -var exec = require('cordova/exec'); - -/** - * Check permission to show notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.hasPermission = function (callback, scope) { - var fn = this.createCallbackFn(callback, scope); - - exec(fn, null, 'LocalNotification', 'check', []); -}; - -/** - * Request permission to show notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.requestPermission = function (callback, scope) { - var fn = this.createCallbackFn(callback, scope); - - exec(fn, null, 'LocalNotification', 'request', []); -}; - -/** - * Schedule notifications. - * - * @param [ Array ] notifications The notifications to schedule. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * @param [ Object ] args Optional flags how to schedule. - * - * @return [ Void ] - */ -exports.schedule = function (msgs, callback, scope, args) { - var fn = function (granted) { - var toasts = this.toArray(msgs); - - if (!granted && callback) { - callback.call(scope || this, false); - return; - } - - for (var i = 0, len = toasts.length; i < len; i++) { - var toast = toasts[i]; - this.mergeWithDefaults(toast); - this.convertProperties(toast); - } - - this.exec('schedule', toasts, callback, scope); - }; - - if (args && args.skipPermission) { - fn.call(this, true); - } else { - this.requestPermission(fn, this); - } -}; - -/** - * Schedule notifications. - * - * @param [ Array ] notifications The notifications to schedule. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * @param [ Object ] args Optional flags how to schedule. - * - * @return [ Void ] - */ -exports.update = function (msgs, callback, scope, args) { - var fn = function(granted) { - var toasts = this.toArray(msgs); - - if (!granted && callback) { - callback.call(scope || this, false); - return; - } - - for (var i = 0, len = toasts.length; i < len; i++) { - this.convertProperties(toasts[i]); - } - - this.exec('update', toasts, callback, scope); - }; - - if (args && args.skipPermission) { - fn.call(this, true); - } else { - this.requestPermission(fn, this); - } -}; - -/** - * Clear the specified notifications by id. - * - * @param [ Array ] ids The IDs of the notifications. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.clear = function (ids, callback, scope) { - ids = this.toArray(ids); - ids = this.convertIds(ids); - - this.exec('clear', ids, callback, scope); -}; - -/** - * Clear all triggered notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.clearAll = function (callback, scope) { - this.exec('clearAll', null, callback, scope); -}; - -/** - * Clear the specified notifications by id. - * - * @param [ Array ] ids The IDs of the notifications. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.cancel = function (ids, callback, scope) { - ids = this.toArray(ids); - ids = this.convertIds(ids); - - this.exec('cancel', ids, callback, scope); -}; - -/** - * Cancel all scheduled notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.cancelAll = function (callback, scope) { - this.exec('cancelAll', null, callback, scope); -}; - -/** - * Check if a notification is present. - * - * @param [ Int ] id The ID of the notification. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.isPresent = function (id, callback, scope) { - var fn = this.createCallbackFn(callback, scope); - - this.getType(id, function (type) { - fn(type != 'unknown'); - }); -}; - -/** - * Check if a notification has a given type. - * - * @param [ Int ] id The ID of the notification. - * @param [ String ] type The type of the notification. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.hasType = function (id, type, callback, scope) { - var fn = this.createCallbackFn(callback, scope); - - this.getType(id, function (type2) { - fn(type == type2); - }); -}; - -/** - * Get the type (triggered, scheduled) for the notification. - * - * @param [ Int ] id The ID of the notification. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getType = function (id, callback, scope) { - this.exec('type', id, callback, scope); -}; - -/** - * List of all notification ids. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getIds = function (callback, scope) { - this.exec('ids', null, callback, scope); -}; - -/** - * List of all scheduled notification IDs. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getScheduledIds = function (callback, scope) { - this.exec('scheduledIds', null, callback, scope); -}; - -/** - * List of all triggered notification IDs. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getTriggeredIds = function (callback, scope) { - this.exec('triggeredIds', null, callback, scope); -}; - -/** - * List of local notifications specified by id. - * If called without IDs, all notification will be returned. - * - * @param [ Array ] ids The IDs of the notifications. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.get = function () { - var args = Array.apply(null, arguments); - - if (typeof args[0] == 'function') { - args.unshift([]); - } - - var ids = args[0], - callback = args[1], - scope = args[2]; - - if (!Array.isArray(ids)) { - this.exec('notification', Number(ids), callback, scope); - return; - } - - ids = this.convertIds(ids); - - this.exec('notifications', ids, callback, scope); -}; - -/** - * List for all notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getAll = function (callback, scope) { - this.exec('notifications', null, callback, scope); -}; - -/** - * List of all scheduled notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - */ -exports.getScheduled = function (callback, scope) { - this.exec('scheduledNotifications', null, callback, scope); -}; - -/** - * List of all triggered notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - */ -exports.getTriggered = function (callback, scope) { - this.exec('triggeredNotifications', null, callback, scope); -}; - -/** - * Register an group of actions by id. - * - * @param [ String ] id The Id of the group. - * @param [ Array] actions The action config settings. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.addActionGroup = function (id, actions, callback, scope) { - var config = { actionGroupId: id, actions: actions }; - this.exec('actions', config, callback, scope); -}; - -/** - * The (platform specific) default settings. - * - * @return [ Object ] - */ -exports.getDefaults = function () { - var map = Object.assign({}, this._defaults); - - for (var key in map) { - if (Array.isArray(map[key])) { - map[key] = Array.from(map[key]); - } else - if (Object.prototype.isPrototypeOf(map[key])) { - map[key] = Object.assign({}, map[key]); - } - } - - return map; -}; - -/** - * Overwrite default settings. - * - * @param [ Object ] newDefaults New default values. - * - * @return [ Void ] - */ -exports.setDefaults = function (newDefaults) { - Object.assign(this._defaults, newDefaults); -}; - -/** - * Register callback for given event. - * - * @param [ String ] event The name of the event. - * @param [ Function ] callback The function to be exec as callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.on = function (event, callback, scope) { - - if (typeof callback !== "function") - return; - - if (!this._listener[event]) { - this._listener[event] = []; - } - - var item = [callback, scope || window]; - - this._listener[event].push(item); -}; - -/** - * Unregister callback for given event. - * - * @param [ String ] event The name of the event. - * @param [ Function ] callback The function to be exec as callback. - * - * @return [ Void ] - */ -exports.un = function (event, callback) { - var listener = this._listener[event]; - - if (!listener) - return; - - for (var i = 0; i < listener.length; i++) { - var fn = listener[i][0]; - - if (fn == callback) { - listener.splice(i, 1); - break; - } - } -}; - -}); diff --git a/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification-util.js b/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification-util.js deleted file mode 100644 index e1bc922..0000000 --- a/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification-util.js +++ /dev/null @@ -1,553 +0,0 @@ -cordova.define("cordova-plugin-local-notification.LocalNotification.Util", function(require, exports, module) { /* - * Apache 2.0 License - * - * Copyright (c) Sebastian Katzer 2017 - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apache License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://opensource.org/licenses/Apache-2.0/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - */ - -var exec = require('cordova/exec'), - channel = require('cordova/channel'); - -// Default values -exports._defaults = { - actionGroupId : null, - actions : [], - attachments : [], - autoClear : true, - badge : null, - channel : null, - color : null, - data : null, - defaults : 0, - foreground : false, - group : null, - groupSummary : false, - icon : null, - id : 0, - launch : true, - led : true, - lockscreen : true, - mediaSession : null, - number : 0, - priority : 0, - progressBar : false, - showWhen : true, - silent : false, - smallIcon : 'res://icon', - sound : true, - sticky : false, - summary : null, - text : '', - title : '', - trigger : { type : 'calendar' }, - vibrate : false, - wakeup : true -}; - -// Listener -exports._listener = {}; - -/** - * Merge custom properties with the default values. - * - * @param [ Object ] options Set of custom values. - * - * @retrun [ Object ] - */ -exports.mergeWithDefaults = function (options) { - var values = this.getDefaults(); - - if (values.hasOwnProperty('sticky')) { - options.sticky = this.getValueFor(options, 'sticky', 'ongoing'); - } - - if (options.sticky && options.autoClear !== true) { - options.autoClear = false; - } - - Object.assign(values, options); - - for (var key in values) { - if (values[key] !== null) { - options[key] = values[key]; - } else { - delete options[key]; - } - - if (!this._defaults.hasOwnProperty(key)) { - console.warn('Unknown property: ' + key); - } - } - - options.meta = { - plugin: 'cordova-plugin-local-notification', - version: '0.9-beta.2' - }; - - return options; -}; - -/** - * Convert the passed values to their required type. - * - * @param [ Object ] options Properties to convert for. - * - * @return [ Object ] The converted property list - */ -exports.convertProperties = function (options) { - var parseToInt = function (prop, options) { - if (isNaN(options[prop])) { - console.warn(prop + ' is not a number: ' + options[prop]); - return this._defaults[prop]; - } else { - return Number(options[prop]); - } - }; - - if (options.id) { - options.id = parseToInt('id', options); - } - - if (options.title) { - options.title = options.title.toString(); - } - - if (options.badge) { - options.badge = parseToInt('badge', options); - } - - if (options.priority) { - options.priority = parseToInt('priority', options); - } - - if (options.foreground === true) { - options.priority = Math.max(options.priority, 1); - } - - if (options.foreground === false) { - options.priority = Math.min(options.priority, 0); - } - - if (options.defaults) { - options.defaults = parseToInt('defaults', options); - } - - if (options.smallIcon && !options.smallIcon.match(/^res:/)) { - console.warn('Property "smallIcon" must be of kind res://...'); - } - - options.data = JSON.stringify(options.data); - - this.convertTrigger(options); - this.convertActions(options); - this.convertProgressBar(options); - - return options; -}; - -/** - * Convert the passed values to their required type, modifying them - * directly for Android and passing the converted list back for iOS. - * - * @param [ Map ] options Set of custom values. - * - * @return [ Map ] Interaction object with category & actions. - */ -exports.convertActions = function (options) { - var actions = []; - - if (!options.actions) - return null; - - for (var i = 0, len = options.actions.length; i < len; i++) { - var action = options.actions[i]; - - if (!action.id) { - console.warn('Action with title ' + action.title + ' ' + - 'has no id and will not be added.'); - continue; - } - - action.id = action.id.toString(); - - actions.push(action); - } - - options.actions = actions; - - return options; -}; - -/** - * Convert the passed values for the trigger to their required type. - * - * @param [ Map ] options Set of custom values. - * - * @return [ Map ] Interaction object with trigger spec. - */ -exports.convertTrigger = function (options) { - var trigger = options.trigger || {}, - date = this.getValueFor(trigger, 'at', 'firstAt', 'date'); - - var dateToNum = function (date) { - var num = typeof date == 'object' ? date.getTime() : date; - return Math.round(num); - }; - - if (!options.trigger) - return; - - if (!trigger.type) { - trigger.type = trigger.center ? 'location' : 'calendar'; - } - - var isCal = trigger.type == 'calendar'; - - if (isCal && !date) { - date = this.getValueFor(options, 'at', 'firstAt', 'date'); - } - - if (isCal && !trigger.every && options.every) { - trigger.every = options.every; - } - - if (isCal && (trigger.in || trigger.every)) { - date = null; - } - - if (isCal && date) { - trigger.at = dateToNum(date); - } - - if (isCal && trigger.firstAt) { - trigger.firstAt = dateToNum(trigger.firstAt); - } - - if (isCal && trigger.before) { - trigger.before = dateToNum(trigger.before); - } - - if (isCal && trigger.after) { - trigger.after = dateToNum(trigger.after); - } - - if (!trigger.count && device.platform == 'windows') { - trigger.count = trigger.every ? 5 : 1; - } - - if (trigger.count && device.platform == 'iOS') { - console.warn('trigger: { count: } is not supported on iOS.'); - } - - if (!isCal) { - trigger.notifyOnEntry = !!trigger.notifyOnEntry; - trigger.notifyOnExit = trigger.notifyOnExit === true; - trigger.radius = trigger.radius || 5; - trigger.single = !!trigger.single; - } - - if (!isCal || trigger.at) { - delete trigger.every; - } - - delete options.every; - delete options.at; - delete options.firstAt; - delete options.date; - - options.trigger = trigger; - - return options; -}; - -/** - * Convert the passed values for the progressBar to their required type. - * - * @param [ Map ] options Set of custom values. - * - * @return [ Map ] Interaction object with trigger spec. - */ -exports.convertProgressBar = function (options) { - var isAndroid = device.platform == 'Android', - cfg = options.progressBar; - - if (cfg === undefined) - return; - - if (typeof cfg === 'boolean') { - cfg = options.progressBar = { enabled: cfg }; - } - - if (typeof cfg.enabled !== 'boolean') { - cfg.enabled = !!(cfg.value || cfg.maxValue || cfg.indeterminate !== null); - } - - cfg.value = cfg.value || 0; - - if (isAndroid) { - cfg.maxValue = cfg.maxValue || 100; - cfg.indeterminate = !!cfg.indeterminate; - } - - cfg.enabled = !!cfg.enabled; - - return options; -}; - -/** - * Create a callback function to get executed within a specific scope. - * - * @param [ Function ] fn The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Function ] - */ -exports.createCallbackFn = function (fn, scope) { - - if (typeof fn != 'function') - return; - - return function () { - fn.apply(scope || this, arguments); - }; -}; - -/** - * Convert the IDs to numbers. - * - * @param [ Array ] ids - * - * @return [ Array ] - */ -exports.convertIds = function (ids) { - var convertedIds = []; - - for (var i = 0, len = ids.length; i < len; i++) { - convertedIds.push(Number(ids[i])); - } - - return convertedIds; -}; - -/** - * First found value for the given keys. - * - * @param [ Object ] options Object with key-value properties. - * @param [ *Array ] keys List of keys. - * - * @return [ Object ] - */ -exports.getValueFor = function (options) { - var keys = Array.apply(null, arguments).slice(1); - - for (var i = 0, key = keys[i], len = keys.length; i < len; key = keys[++i]) { - if (options.hasOwnProperty(key)) { - return options[key]; - } - } - - return null; -}; - -/** - * Convert a value to an array. - * - * @param [ Object ] obj Any kind of object. - * - * @return [ Array ] An array with the object as first item. - */ -exports.toArray = function (obj) { - return Array.isArray(obj) ? Array.from(obj) : [obj]; -}; - -/** - * Fire the event with given arguments. - * - * @param [ String ] event The event's name. - * @param [ *Array] args The callback's arguments. - * - * @return [ Void] - */ -exports.fireEvent = function (event) { - var args = Array.apply(null, arguments).slice(1), - listener = this._listener[event]; - - if (!listener) - return; - - if (args[0] && typeof args[0].data === 'string') { - args[0].data = JSON.parse(args[0].data); - } - - for (var i = 0; i < listener.length; i++) { - var fn = listener[i][0], - scope = listener[i][1]; - - fn.apply(scope, args); - } -}; - -/** - * Execute the native counterpart. - * - * @param [ String ] action The name of the action. - * @param [ Array ] args Array of arguments. - * @param [ Function] callback The callback function. - * @param [ Object ] scope The scope for the function. - * - * @return [ Void ] - */ -exports.exec = function (action, args, callback, scope) { - var fn = this.createCallbackFn(callback, scope), - params = []; - - if (Array.isArray(args)) { - params = args; - } else if (args) { - params.push(args); - } - - exec(fn, null, 'LocalNotification', action, params); -}; - -exports.setLaunchDetails = function () { - exports.exec('launch', null, function (details) { - if (details) { - cordova.plugins.notification.local.launchDetails = details; - } - }); -}; - -// Called after 'deviceready' event -channel.deviceready.subscribe(function () { - if (['Android', 'windows', 'iOS'].indexOf(device.platform) > -1) { - exports.exec('ready'); - } -}); - -// Called before 'deviceready' event -channel.onCordovaReady.subscribe(function () { - channel.onCordovaInfoReady.subscribe(function () { - if (['Android', 'windows', 'iOS'].indexOf(device.platform) > -1) { - exports.setLaunchDetails(); - } - }); -}); - -// Polyfill for Object.assign -if (typeof Object.assign != 'function') { - Object.assign = function(target) { - 'use strict'; - if (target == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - - target = Object(target); - for (var index = 1; index < arguments.length; index++) { - var source = arguments[index]; - if (source != null) { - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - } - return target; - }; -} - -// Production steps of ECMA-262, Edition 6, 22.1.2.1 -// Reference: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from -if (!Array.from) { - Array.from = (function () { - var toStr = Object.prototype.toString; - var isCallable = function (fn) { - return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; - }; - var toInteger = function (value) { - var number = Number(value); - if (isNaN(number)) { return 0; } - if (number === 0 || !isFinite(number)) { return number; } - return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); - }; - var maxSafeInteger = Math.pow(2, 53) - 1; - var toLength = function (value) { - var len = toInteger(value); - return Math.min(Math.max(len, 0), maxSafeInteger); - }; - - // The length property of the from method is 1. - return function from(arrayLike/*, mapFn, thisArg */) { - // 1. Let C be the this value. - var C = this; - - // 2. Let items be ToObject(arrayLike). - var items = Object(arrayLike); - - // 3. ReturnIfAbrupt(items). - if (arrayLike == null) { - throw new TypeError("Array.from requires an array-like object - not null or undefined"); - } - - // 4. If mapfn is undefined, then let mapping be false. - var mapFn = arguments.length > 1 ? arguments[1] : void undefined; - var T; - if (typeof mapFn !== 'undefined') { - // 5. else - // 5. a If IsCallable(mapfn) is false, throw a TypeError exception. - if (!isCallable(mapFn)) { - throw new TypeError('Array.from: when provided, the second argument must be a function'); - } - - // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 2) { - T = arguments[2]; - } - } - - // 10. Let lenValue be Get(items, "length"). - // 11. Let len be ToLength(lenValue). - var len = toLength(items.length); - - // 13. If IsConstructor(C) is true, then - // 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len. - // 14. a. Else, Let A be ArrayCreate(len). - var A = isCallable(C) ? Object(new C(len)) : new Array(len); - - // 16. Let k be 0. - var k = 0; - // 17. Repeat, while k < len… (also steps a - h) - var kValue; - while (k < len) { - kValue = items[k]; - if (mapFn) { - A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); - } else { - A[k] = kValue; - } - k += 1; - } - // 18. Let putStatus be Put(A, "length", len, true). - A.length = len; - // 20. Return A. - return A; - }; - }()); -} - -}); diff --git a/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification.js b/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification.js deleted file mode 100644 index 544bf10..0000000 --- a/src/server/public/plugins/cordova-plugin-local-notification/www/local-notification.js +++ /dev/null @@ -1,317 +0,0 @@ -cordova.define("cordova-plugin-local-notification.LocalNotification", function(require, exports, module) { /* - * Apache 2.0 License - * - * Copyright (c) Sebastian Katzer 2017 - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apache License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://opensource.org/licenses/Apache-2.0/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - */ - -/** - * Request permission to show notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.hasPermission = function (callback, scope) { - this.core.hasPermission(callback, scope); -}; - -/** - * Request permission to show notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.requestPermission = function (callback, scope) { - this.core.requestPermission(callback, scope); -}; - -/** - * Schedule notifications. - * - * @param [ Array ] notifications The notifications to schedule. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * @param [ Object ] args Optional flags how to schedule. - * - * @return [ Void ] - */ -exports.schedule = function (notifications, callback, scope, args) { - this.core.schedule(notifications, callback, scope, args); -}; - -/** - * Update notifications. - * - * @param [ Array ] notifications The notifications to schedule. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * @param [ Object ] args Optional flags how to schedule. - * - * @return [ Void ] - */ -exports.update = function (notifications, callback, scope, args) { - this.core.update(notifications, callback, scope, args); -}; - -/** - * Clear the specified notifications by id. - * - * @param [ Array ] ids The IDs of the notifications. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.clear = function (ids, callback, scope) { - this.core.clear(ids, callback, scope); -}; - -/** - * Clear all triggered notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.clearAll = function (callback, scope) { - this.core.clearAll(callback, scope); -}; - -/** - * Cancel the specified notifications by id. - * - * @param [ Array ] ids The IDs of the notifications. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.cancel = function (ids, callback, scope) { - this.core.cancel(ids, callback, scope); -}; - -/** - * Cancel all scheduled notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.cancelAll = function (callback, scope) { - this.core.cancelAll(callback, scope); -}; - -/** - * Check if a notification is present. - * - * @param [ Int ] id The ID of the notification. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.isPresent = function (id, callback, scope) { - this.core.isPresent(id, callback, scope); -}; - -/** - * Check if a notification is scheduled. - * - * @param [ Int ] id The ID of the notification. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.isScheduled = function (id, callback, scope) { - this.core.hasType(id, 'scheduled', callback, scope); -}; - -/** - * Check if a notification was triggered. - * - * @param [ Int ] id The ID of the notification. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.isTriggered = function (id, callback, scope) { - this.core.hasType(id, 'triggered', callback, scope); -}; - -/** - * Get the type (triggered, scheduled) for the notification. - * - * @param [ Int ] id The ID of the notification. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getType = function (id, callback, scope) { - this.core.getType(id, callback, scope); -}; - -/** - * List of all notification ids. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getIds = function (callback, scope) { - this.core.getIds(callback, scope); -}; - -/** - * List of all scheduled notification IDs. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getScheduledIds = function (callback, scope) { - this.core.getScheduledIds(callback, scope); -}; - -/** - * List of all triggered notification IDs. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getTriggeredIds = function (callback, scope) { - this.core.getTriggeredIds(callback, scope); -}; - -/** - * List of local notifications specified by id. - * If called without IDs, all notification will be returned. - * - * @param [ Array ] ids The IDs of the notifications. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.get = function (ids, callback, scope) { - this.core.get(ids, callback, scope); -}; - -/** - * List for all notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.getAll = function (callback, scope) { - this.core.getAll(callback, scope); -}; - -/** - * List of all scheduled notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - */ -exports.getScheduled = function (callback, scope) { - this.core.getScheduled(callback, scope); -}; - -/** - * List of all triggered notifications. - * - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - */ -exports.getTriggered = function (callback, scope) { - this.core.getTriggered(callback, scope); -}; - -/** - * Register an group of actions by id. - * - * @param [ String ] id The Id of the group. - * @param [ Array] actions The action config settings. - * @param [ Function ] callback The function to be exec as the callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.addActionGroup = function (id, actions, callback, scope) { - this.core.addActionGroup(id, actions, callback, scope); -}; - -/** - * The (platform specific) default settings. - * - * @return [ Object ] - */ -exports.getDefaults = function () { - return this.core.getDefaults(); -}; - -/** - * Overwrite default settings. - * - * @param [ Object ] newDefaults New default values. - * - * @return [ Void ] - */ -exports.setDefaults = function (defaults) { - this.core.setDefaults(defaults); -}; - -/** - * Register callback for given event. - * - * @param [ String ] event The name of the event. - * @param [ Function ] callback The function to be exec as callback. - * @param [ Object ] scope The callback function's scope. - * - * @return [ Void ] - */ -exports.on = function (event, callback, scope) { - this.core.on(event, callback, scope); -}; - -/** - * Unregister callback for given event. - * - * @param [ String ] event The name of the event. - * @param [ Function ] callback The function to be exec as callback. - * - * @return [ Void ] - */ -exports.un = function (event, callback) { - this.core.un(event, callback); -}; - -}); diff --git a/src/server/public/plugins/cordova-plugin-statusbar/src/browser/StatusBarProxy.js b/src/server/public/plugins/cordova-plugin-statusbar/src/browser/StatusBarProxy.js deleted file mode 100644 index e6e41ec..0000000 --- a/src/server/public/plugins/cordova-plugin-statusbar/src/browser/StatusBarProxy.js +++ /dev/null @@ -1,52 +0,0 @@ -cordova.define("cordova-plugin-statusbar.StatusBarProxy", function(require, exports, module) { /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -function notSupported(win,fail) { - // - console.log('StatusBar is not supported'); - setTimeout(function(){ - if (win) { - win(); - } - // note that while it is not explicitly supported, it does not fail - // this is really just here to allow developers to test their code in the browser - // and if we fail, then their app might as well. -jm - },0); -} - -module.exports = { - isVisible: false, - styleBlackTranslucent:notSupported, - styleDefault:notSupported, - styleLightContent:notSupported, - styleBlackOpaque:notSupported, - overlaysWebView:notSupported, - styleLightContect: notSupported, - backgroundColorByName: notSupported, - backgroundColorByHexString: notSupported, - hide: notSupported, - show: notSupported, - _ready:notSupported -}; - -require("cordova/exec/proxy").add("StatusBar", module.exports); - - -}); diff --git a/src/server/public/plugins/cordova-plugin-statusbar/www/statusbar.js b/src/server/public/plugins/cordova-plugin-statusbar/www/statusbar.js deleted file mode 100644 index 9684d23..0000000 --- a/src/server/public/plugins/cordova-plugin-statusbar/www/statusbar.js +++ /dev/null @@ -1,115 +0,0 @@ -cordova.define("cordova-plugin-statusbar.statusbar", function(require, exports, module) { /* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -/* global cordova */ - -var exec = require('cordova/exec'); - -var namedColors = { - "black": "#000000", - "darkGray": "#A9A9A9", - "lightGray": "#D3D3D3", - "white": "#FFFFFF", - "gray": "#808080", - "red": "#FF0000", - "green": "#00FF00", - "blue": "#0000FF", - "cyan": "#00FFFF", - "yellow": "#FFFF00", - "magenta": "#FF00FF", - "orange": "#FFA500", - "purple": "#800080", - "brown": "#A52A2A" -}; - -var StatusBar = { - - isVisible: true, - - overlaysWebView: function (doOverlay) { - exec(null, null, "StatusBar", "overlaysWebView", [doOverlay]); - }, - - styleDefault: function () { - // dark text ( to be used on a light background ) - exec(null, null, "StatusBar", "styleDefault", []); - }, - - styleLightContent: function () { - // light text ( to be used on a dark background ) - exec(null, null, "StatusBar", "styleLightContent", []); - }, - - styleBlackTranslucent: function () { - // #88000000 ? Apple says to use lightContent instead - exec(null, null, "StatusBar", "styleBlackTranslucent", []); - }, - - styleBlackOpaque: function () { - // #FF000000 ? Apple says to use lightContent instead - exec(null, null, "StatusBar", "styleBlackOpaque", []); - }, - - backgroundColorByName: function (colorname) { - return StatusBar.backgroundColorByHexString(namedColors[colorname]); - }, - - backgroundColorByHexString: function (hexString) { - if (hexString.charAt(0) !== "#") { - hexString = "#" + hexString; - } - - if (hexString.length === 4) { - var split = hexString.split(""); - hexString = "#" + split[1] + split[1] + split[2] + split[2] + split[3] + split[3]; - } - - exec(null, null, "StatusBar", "backgroundColorByHexString", [hexString]); - }, - - hide: function () { - exec(null, null, "StatusBar", "hide", []); - StatusBar.isVisible = false; - }, - - show: function () { - exec(null, null, "StatusBar", "show", []); - StatusBar.isVisible = true; - } - -}; - -// prime it. setTimeout so that proxy gets time to init -window.setTimeout(function () { - exec(function (res) { - if (typeof res == 'object') { - if (res.type == 'tap') { - cordova.fireWindowEvent('statusTap'); - } - } else { - StatusBar.isVisible = res; - } - }, null, "StatusBar", "_ready", []); -}, 0); - -module.exports = StatusBar; - -}); diff --git a/src/server/public/plugins/nl.madebymark.share/www/share.js b/src/server/public/plugins/nl.madebymark.share/www/share.js new file mode 100644 index 0000000..16ddf74 --- /dev/null +++ b/src/server/public/plugins/nl.madebymark.share/www/share.js @@ -0,0 +1,14 @@ +cordova.define("nl.madebymark.share.Share", function(require, exports, module) { module.exports = function(text,title,mimetype,success,error){ + if(typeof text !== "string") { + text = ""; + } + if(typeof title !== "string") { + title = "Share"; + } + if(typeof mimetype !== "string") { + mimetype = "text/plain"; + } + cordova.exec(success,error,"Share","share",[text,title,mimetype]); + return true; +}; +}); diff --git a/src/server/public/scripts/sql-wasm.js b/src/server/public/scripts/sql-wasm.js index fbece93..07fc80c 100644 --- a/src/server/public/scripts/sql-wasm.js +++ b/src/server/public/scripts/sql-wasm.js @@ -71,111 +71,114 @@ var initSqlJs = function (moduleConfig) { // meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort var e;e||(e=typeof Module !== 'undefined' ? Module : {});null; -e.onRuntimeInitialized=function(){function a(h,l){this.Pa=h;this.db=l;this.Oa=1;this.gb=[]}function b(h){this.filename="dbfile_"+(4294967295*Math.random()>>>0);if(null!=h){var l=this.filename,r=l?k("//"+l):"/";l=aa(!0,!0);r=ba(r,(void 0!==l?l:438)&4095|32768,0);if(h){if("string"===typeof h){for(var q=Array(h.length),A=0,da=h.length;Ad;++d)g.parameters.push(f["viii"[d]]); -d=new WebAssembly.Function(g,a)}else{f=[1,0,1,96];g={i:127,j:126,f:125,d:124};f.push(3);for(d=0;3>d;++d)f.push(g["iii"[d]]);f.push(0);f[1]=f.length-2;d=new Uint8Array([0,97,115,109,1,0,0,0].concat(f,[2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0]));d=new WebAssembly.Module(d);d=(new WebAssembly.Instance(d,{e:{f:a}})).exports.f}b.set(c,d)}G.set(a,c);a=c}return a}function sa(a){va(a)}var Ka;e.wasmBinary&&(Ka=e.wasmBinary);var noExitRuntime;e.noExitRuntime&&(noExitRuntime=e.noExitRuntime); -"object"!==typeof WebAssembly&&I("no native wasm support detected"); -function qa(a){var b="i32";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":x[a>>0]=0;break;case "i8":x[a>>0]=0;break;case "i16":La[a>>1]=0;break;case "i32":J[a>>2]=0;break;case "i64":K=[0,(L=0,1<=+Math.abs(L)?0>>0:~~+Math.ceil((L-+(~~L>>>0))/4294967296)>>>0:0)];J[a>>2]=K[0];J[a+4>>2]=K[1];break;case "float":Ma[a>>2]=0;break;case "double":Na[a>>3]=0;break;default:I("invalid type for setValue: "+b)}} -function p(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return x[a>>0];case "i8":return x[a>>0];case "i16":return La[a>>1];case "i32":return J[a>>2];case "i64":return J[a>>2];case "float":return Ma[a>>2];case "double":return Na[a>>3];default:I("invalid type for getValue: "+b)}return null}var M,Ja,Oa=!1;function assert(a,b){a||I("Assertion failed: "+b)}function Pa(a){var b=e["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b} -function Qa(a,b,c,d){var f={string:function(v){var B=0;if(null!==v&&void 0!==v&&0!==v){var H=(v.length<<2)+1;B=u(H);pa(v,N,B,H)}return B},array:function(v){var B=u(v.length);x.set(v,B);return B}},g=Pa(a),n=[];a=0;if(d)for(var t=0;t=d);)++c;if(16f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}function O(a){return a?Va(N,a,void 0):""} -function pa(a,b,c,d){if(!(0=n){var t=a.charCodeAt(++g);n=65536+((n&1023)<<10)|t&1023}if(127>=n){if(c>=d)break;b[c++]=n}else{if(2047>=n){if(c+1>=d)break;b[c++]=192|n>>6}else{if(65535>=n){if(c+2>=d)break;b[c++]=224|n>>12}else{if(c+3>=d)break;b[c++]=240|n>>18;b[c++]=128|n>>12&63}b[c++]=128|n>>6&63}b[c++]=128|n&63}}b[c]=0;return c-f} -function oa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}function Wa(a){var b=oa(a)+1,c=Ta(b);c&&pa(a,x,c,b);return c}var Xa,x,N,La,J,Ma,Na; -function Ya(a){Xa=a;e.HEAP8=x=new Int8Array(a);e.HEAP16=La=new Int16Array(a);e.HEAP32=J=new Int32Array(a);e.HEAPU8=N=new Uint8Array(a);e.HEAPU16=new Uint16Array(a);e.HEAPU32=new Uint32Array(a);e.HEAPF32=Ma=new Float32Array(a);e.HEAPF64=Na=new Float64Array(a)}var Za=e.INITIAL_MEMORY||16777216;e.wasmMemory?M=e.wasmMemory:M=new WebAssembly.Memory({initial:Za/65536,maximum:32768});M&&(Xa=M.buffer);Za=Xa.byteLength;Ya(Xa);var $a=[],ab=[],bb=[],cb=[];function db(){var a=e.preRun.shift();$a.unshift(a)} -var eb=0,fb=null,gb=null;e.preloadedImages={};e.preloadedAudios={};function I(a){if(e.onAbort)e.onAbort(a);F(a);Oa=!0;throw new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");}function hb(a){var b=ib;return String.prototype.startsWith?b.startsWith(a):0===b.indexOf(a)}function jb(){return hb("data:application/octet-stream;base64,")}var ib="sql-wasm.wasm";if(!jb()){var kb=ib;ib=e.locateFile?e.locateFile(kb,C):C+kb} -function lb(){try{if(Ka)return new Uint8Array(Ka);if(Ea)return Ea(ib);throw"both async and sync fetching of the wasm failed";}catch(a){I(a)}}function mb(){return Ka||!za&&!z||"function"!==typeof fetch||hb("file://")?Promise.resolve().then(lb):fetch(ib,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+ib+"'";return a.arrayBuffer()}).catch(function(){return lb()})}var L,K; -function nb(a){for(;0>2]=60*(new Date).getTimezoneOffset();var b=(new Date).getFullYear(),c=new Date(b,0,1);b=new Date(b,6,1);J[ub()>>2]=Number(c.getTimezoneOffset()!=b.getTimezoneOffset());var d=a(c),f=a(b);d=Wa(d);f=Wa(f);b.getTimezoneOffset()>2]=d,J[wb()+4>>2]=f):(J[wb()>>2]=f,J[wb()+4>>2]=d)}}var sb; -function xb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var f=a[d];"."===f?a.splice(d,1):".."===f?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function k(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=xb(a.split("/").filter(function(d){return!!d}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} -function yb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function zb(a){if("/"===a)return"/";a=k(a);a=a.replace(/\/$/,"");var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function Ab(a){J[Bb()>>2]=a} -function Cb(){if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);return function(){crypto.getRandomValues(a);return a[0]}}if(Aa)try{var b=require("crypto");return function(){return b.randomBytes(1)[0]}}catch(c){}return function(){I("randomDevice")}} -function Db(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=xb(a.split("/").filter(function(d){return!!d}),!b).join("/");return(b?"/":"")+a||"."}var Eb=[];function Fb(a,b){Eb[a]={input:[],output:[],$a:b};Gb(a,Hb)} -var Hb={open:function(a){var b=Eb[a.node.rdev];if(!b)throw new Q(43);a.tty=b;a.seekable=!1},close:function(a){a.tty.$a.flush(a.tty)},flush:function(a){a.tty.$a.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.$a.qb)throw new Q(60);for(var f=0,g=0;g=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.Ka,a.Ka=new Uint8Array(b),0b)a.Ka.length=b;else for(;a.Ka.length=a.node.Qa)return 0;a=Math.min(a.node.Qa-f,d);if(8b)throw new Q(28);return b},lb:function(a,b,c){R.ob(a.node,b+c);a.node.Qa=Math.max(a.node.Qa,b+c)},bb:function(a,b,c,d,f,g){assert(0===b);if(32768!==(a.node.mode&61440))throw new Q(43);a=a.node.Ka; -if(g&2||a.buffer!==Xa){if(0>>0)%U.length}function Vb(a){var b=Ub(a.parent.id,a.name);if(U[b]===a)U[b]=a.Za;else for(b=U[b];b;){if(b.Za===a){b.Za=a.Za;break}b=b.Za}} -function Nb(a,b){var c;if(c=(c=Wb(a,"x"))?c:a.La.lookup?0:2)throw new Q(c,a);for(c=U[Ub(a.id,b)];c;c=c.Za){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.La.lookup(a,b)}function Lb(a,b,c,d){a=new Xb(a,b,c,d);b=Ub(a.parent.id,a.name);a.Za=U[b];return U[b]=a}function S(a){return 16384===(a&61440)}var Yb={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218}; -function Zb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Wb(a,b){if(Rb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;return 0}function $b(a,b){try{return Nb(a,b),20}catch(c){}return Wb(a,"wx")}function ac(a,b,c){try{var d=Nb(a,b)}catch(f){return f.Na}if(a=Wb(a,"wx"))return a;if(c){if(!S(d.mode))return 54;if(d===d.parent||"/"===Tb(d))return 10}else if(S(d.mode))return 31;return 0} -function bc(a){var b=4096;for(a=a||0;a<=b;a++)if(!T[a])return a;throw new Q(33);}function cc(a,b){dc||(dc=function(){},dc.prototype={});var c=new dc,d;for(d in a)c[d]=a[d];a=c;b=bc(b);a.fd=b;return T[b]=a}var Kb={open:function(a){a.Ma=Pb[a.node.rdev].Ma;a.Ma.open&&a.Ma.open(a)},Xa:function(){throw new Q(70);}};function Gb(a,b){Pb[a]={Ma:b}} -function ec(a,b){var c="/"===b,d=!b;if(c&&Ob)throw new Q(10);if(!c&&!d){var f=W(b,{pb:!1});b=f.path;f=f.node;if(f.Ya)throw new Q(10);if(!S(f.mode))throw new Q(54);}b={type:a,Nb:{},rb:b,Fb:[]};a=a.Ua(b);a.Ua=b;b.root=a;c?Ob=a:f&&(f.Ya=b,f.Ua&&f.Ua.Fb.push(b))}function ba(a,b,c){var d=W(a,{parent:!0}).node;a=zb(a);if(!a||"."===a||".."===a)throw new Q(28);var f=$b(d,a);if(f)throw new Q(f);if(!d.La.ab)throw new Q(63);return d.La.ab(d,a,b,c)}function X(a,b){ba(a,(void 0!==b?b:511)&1023|16384,0)} -function fc(a,b,c){"undefined"===typeof c&&(c=b,b=438);ba(a,b|8192,c)}function hc(a,b){if(!Db(a))throw new Q(44);var c=W(b,{parent:!0}).node;if(!c)throw new Q(44);b=zb(b);var d=$b(c,b);if(d)throw new Q(d);if(!c.La.symlink)throw new Q(63);c.La.symlink(c,b,a)} -function ua(a){var b=W(a,{parent:!0}).node,c=zb(a),d=Nb(b,c),f=ac(b,c,!1);if(f)throw new Q(f);if(!b.La.unlink)throw new Q(63);if(d.Ya)throw new Q(10);try{V.willDeletePath&&V.willDeletePath(a)}catch(g){F("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.La.unlink(b,c);Vb(d);try{if(V.onDeletePath)V.onDeletePath(a)}catch(g){F("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}} -function Sb(a){a=W(a).node;if(!a)throw new Q(44);if(!a.La.readlink)throw new Q(28);return Db(Tb(a.parent),a.La.readlink(a))}function ic(a,b){a=W(a,{Wa:!b}).node;if(!a)throw new Q(44);if(!a.La.Sa)throw new Q(63);return a.La.Sa(a)}function jc(a){return ic(a,!0)}function ca(a,b){var c;"string"===typeof a?c=W(a,{Wa:!0}).node:c=a;if(!c.La.Ra)throw new Q(63);c.La.Ra(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} -function kc(a){var b;"string"===typeof a?b=W(a,{Wa:!0}).node:b=a;if(!b.La.Ra)throw new Q(63);b.La.Ra(b,{timestamp:Date.now()})}function lc(a,b){if(0>b)throw new Q(28);var c;"string"===typeof a?c=W(a,{Wa:!0}).node:c=a;if(!c.La.Ra)throw new Q(63);if(S(c.mode))throw new Q(31);if(32768!==(c.mode&61440))throw new Q(28);if(a=Wb(c,"w"))throw new Q(a);c.La.Ra(c,{size:b,timestamp:Date.now()})} -function m(a,b,c,d){if(""===a)throw new Q(44);if("string"===typeof b){var f=Yb[b];if("undefined"===typeof f)throw Error("Unknown file open mode: "+b);b=f}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=k(a);try{g=W(a,{Wa:!(b&131072)}).node}catch(n){}}f=!1;if(b&64)if(g){if(b&128)throw new Q(20);}else g=ba(a,c,0),f=!0;if(!g)throw new Q(44);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!S(g.mode))throw new Q(54);if(!f&&(c=g?40960===(g.mode&61440)?32:S(g.mode)&& -("r"!==Zb(b)||b&512)?31:Wb(g,Zb(b)):44))throw new Q(c);b&512&&lc(g,0);b&=-131713;d=cc({node:g,path:Tb(g),flags:b,seekable:!0,position:0,Ma:g.Ma,Kb:[],error:!1},d);d.Ma.open&&d.Ma.open(d);!e.logReadFiles||b&1||(Mc||(Mc={}),a in Mc||(Mc[a]=1,F("FS.trackingDelegate error on read file: "+a)));try{V.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),V.onOpenFile(a,g))}catch(n){F("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+n.message)}return d} -function ja(a){if(null===a.fd)throw new Q(8);a.ib&&(a.ib=null);try{a.Ma.close&&a.Ma.close(a)}catch(b){throw b;}finally{T[a.fd]=null}a.fd=null}function Nc(a,b,c){if(null===a.fd)throw new Q(8);if(!a.seekable||!a.Ma.Xa)throw new Q(70);if(0!=c&&1!=c&&2!=c)throw new Q(28);a.position=a.Ma.Xa(a,b,c);a.Kb=[]} -function Pc(a,b,c,d,f){if(0>d||0>f)throw new Q(28);if(null===a.fd)throw new Q(8);if(1===(a.flags&2097155))throw new Q(8);if(S(a.node.mode))throw new Q(31);if(!a.Ma.read)throw new Q(28);var g="undefined"!==typeof f;if(!g)f=a.position;else if(!a.seekable)throw new Q(70);b=a.Ma.read(a,b,c,d,f);g||(a.position+=b);return b} -function fa(a,b,c,d,f,g){if(0>d||0>f)throw new Q(28);if(null===a.fd)throw new Q(8);if(0===(a.flags&2097155))throw new Q(8);if(S(a.node.mode))throw new Q(31);if(!a.Ma.write)throw new Q(28);a.seekable&&a.flags&1024&&Nc(a,0,2);var n="undefined"!==typeof f;if(!n)f=a.position;else if(!a.seekable)throw new Q(70);b=a.Ma.write(a,b,c,d,f,g);n||(a.position+=b);try{if(a.path&&V.onWriteToFile)V.onWriteToFile(a.path)}catch(t){F("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+t.message)}return b} -function ta(a){var b={encoding:"binary"};b=b||{};b.flags=b.flags||"r";b.encoding=b.encoding||"binary";if("utf8"!==b.encoding&&"binary"!==b.encoding)throw Error('Invalid encoding type "'+b.encoding+'"');var c,d=m(a,b.flags);a=ic(a).size;var f=new Uint8Array(a);Pc(d,f,0,a,0);"utf8"===b.encoding?c=Va(f,0):"binary"===b.encoding&&(c=f);ja(d);return c} -function Qc(){Q||(Q=function(a,b){this.node=b;this.Jb=function(c){this.Na=c};this.Jb(a);this.message="FS error"},Q.prototype=Error(),Q.prototype.constructor=Q,[44].forEach(function(a){Mb[a]=new Q(a);Mb[a].stack=""}))}var Rc;function aa(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} -function Sc(a,b,c){a=k("/dev/"+a);var d=aa(!!b,!!c);Tc||(Tc=64);var f=Tc++<<8|0;Gb(f,{open:function(g){g.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(g,n,t,w){for(var v=0,B=0;B>2]=d.dev;J[c+4>>2]=0;J[c+8>>2]=d.ino;J[c+12>>2]=d.mode;J[c+16>>2]=d.nlink;J[c+20>>2]=d.uid;J[c+24>>2]=d.gid;J[c+28>>2]=d.rdev;J[c+32>>2]=0;K=[d.size>>>0,(L=d.size,1<=+Math.abs(L)?0>>0:~~+Math.ceil((L-+(~~L>>>0))/4294967296)>>>0:0)];J[c+40>>2]=K[0];J[c+44>>2]=K[1];J[c+48>>2]=4096;J[c+52>>2]=d.blocks;J[c+56>>2]=d.atime.getTime()/1E3|0;J[c+60>>2]= -0;J[c+64>>2]=d.mtime.getTime()/1E3|0;J[c+68>>2]=0;J[c+72>>2]=d.ctime.getTime()/1E3|0;J[c+76>>2]=0;K=[d.ino>>>0,(L=d.ino,1<=+Math.abs(L)?0>>0:~~+Math.ceil((L-+(~~L>>>0))/4294967296)>>>0:0)];J[c+80>>2]=K[0];J[c+84>>2]=K[1];return 0}var Wc=void 0;function Xc(){Wc+=4;return J[Wc-4>>2]}function Z(a){a=T[a];if(!a)throw new Q(8);return a}var Yc={}; -function Zc(){if(!$c){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ya||"./this.program"},b;for(b in Yc)a[b]=Yc[b];var c=[];for(b in a)c.push(b+"="+a[b]);$c=c}return $c}var $c,ad;Aa?ad=function(){var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:"undefined"!==typeof dateNow?ad=dateNow:ad=function(){return performance.now()}; -function bd(a){for(var b=ad();ad()-b>2]);J[b>>2]=a.getSeconds();J[b+4>>2]=a.getMinutes();J[b+8>>2]=a.getHours();J[b+12>>2]=a.getDate();J[b+16>>2]=a.getMonth();J[b+20>>2]=a.getFullYear()-1900;J[b+24>>2]=a.getDay();var c=new Date(a.getFullYear(),0,1);J[b+28>>2]=(a.getTime()-c.getTime())/864E5|0;J[b+36>>2]=-(60*a.getTimezoneOffset());var d=(new Date(a.getFullYear(),6,1)).getTimezoneOffset(); -c=c.getTimezoneOffset();a=(d!=c&&a.getTimezoneOffset()==Math.min(c,d))|0;J[b+32>>2]=a;a=J[wb()+(a?4:0)>>2];J[b+40>>2]=a;return b},I:function(a,b){try{a=O(a);if(b&-8)var c=-28;else{var d;(d=W(a,{Wa:!0}).node)?(a="",b&4&&(a+="r"),b&2&&(a+="w"),b&1&&(a+="x"),c=a&&Wb(d,a)?-2:0):c=-44}return c}catch(f){return"undefined"!==typeof Y&&f instanceof Q||I(f),-f.Na}},t:function(a,b){try{return a=O(a),ca(a,b),0}catch(c){return"undefined"!==typeof Y&&c instanceof Q||I(c),-c.Na}},z:function(a){try{return a=O(a), -kc(a),0}catch(b){return"undefined"!==typeof Y&&b instanceof Q||I(b),-b.Na}},u:function(a,b){try{var c=T[a];if(!c)throw new Q(8);ca(c.node,b);return 0}catch(d){return"undefined"!==typeof Y&&d instanceof Q||I(d),-d.Na}},B:function(a){try{var b=T[a];if(!b)throw new Q(8);kc(b.node);return 0}catch(c){return"undefined"!==typeof Y&&c instanceof Q||I(c),-c.Na}},c:function(a,b,c){Wc=c;try{var d=Z(a);switch(b){case 0:var f=Xc();return 0>f?-28:m(d.path,d.flags,0,f).fd;case 1:case 2:return 0;case 3:return d.flags; -case 4:return f=Xc(),d.flags|=f,0;case 12:return f=Xc(),La[f+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Ab(28),-1;default:return-28}}catch(g){return"undefined"!==typeof Y&&g instanceof Q||I(g),-g.Na}},w:function(a,b){try{var c=Z(a);return Vc(ic,c.path,b)}catch(d){return"undefined"!==typeof Y&&d instanceof Q||I(d),-d.Na}},F:function(a,b,c){try{var d=T[a];if(!d)throw new Q(8);if(0===(d.flags&2097155))throw new Q(28);lc(d.node,c);return 0}catch(f){return"undefined"!==typeof Y&& -f instanceof Q||I(f),-f.Na}},J:function(a,b){try{if(0===b)return-28;if(b=c)var d=-28;else{var f=Sb(a),g=Math.min(c,oa(f)),n=x[b+g];pa(f,N,b,c+1);x[b+g]=n;d=g}return d}catch(t){return"undefined"!==typeof Y&&t instanceof Q||I(t),-t.Na}},H:function(a){try{a=O(a);var b=W(a,{parent:!0}).node,c=zb(a),d=Nb(b,c),f=ac(b,c,!0);if(f)throw new Q(f);if(!b.La.rmdir)throw new Q(63);if(d.Ya)throw new Q(10);try{V.willDeletePath&&V.willDeletePath(a)}catch(g){F("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+ -g.message)}b.La.rmdir(b,c);Vb(d);try{if(V.onDeletePath)V.onDeletePath(a)}catch(g){F("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}return 0}catch(g){return"undefined"!==typeof Y&&g instanceof Q||I(g),-g.Na}},g:function(a,b){try{return a=O(a),Vc(ic,a,b)}catch(c){return"undefined"!==typeof Y&&c instanceof Q||I(c),-c.Na}},G:function(a){try{return a=O(a),ua(a),0}catch(b){return"undefined"!==typeof Y&&b instanceof Q||I(b),-b.Na}},m:function(a,b,c){N.copyWithin(a,b,b+c)}, -d:function(a){a>>>=0;var b=N.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);Ya(M.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},o:function(a,b){var c=0;Zc().forEach(function(d,f){var g=b+c;f=J[a+4*f>>2]=g;for(g=0;g>0]=d.charCodeAt(g);x[f>>0]=0;c+=d.length+1});return 0},p:function(a,b){var c= -Zc();J[a>>2]=c.length;var d=0;c.forEach(function(f){d+=f.length+1});J[b>>2]=d;return 0},f:function(a){try{var b=Z(a);ja(b);return 0}catch(c){return"undefined"!==typeof Y&&c instanceof Q||I(c),c.Na}},n:function(a,b){try{var c=Z(a);x[b>>0]=c.tty?2:S(c.mode)?3:40960===(c.mode&61440)?7:4;return 0}catch(d){return"undefined"!==typeof Y&&d instanceof Q||I(d),d.Na}},l:function(a,b,c,d,f){try{var g=Z(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Nc(g,a,d);K=[g.position>>> -0,(L=g.position,1<=+Math.abs(L)?0>>0:~~+Math.ceil((L-+(~~L>>>0))/4294967296)>>>0:0)];J[f>>2]=K[0];J[f+4>>2]=K[1];g.ib&&0===a&&0===d&&(g.ib=null);return 0}catch(n){return"undefined"!==typeof Y&&n instanceof Q||I(n),n.Na}},E:function(a){try{var b=Z(a);return b.Ma&&b.Ma.fsync?-b.Ma.fsync(b):0}catch(c){return"undefined"!==typeof Y&&c instanceof Q||I(c),c.Na}},y:function(a,b,c,d){try{a:{for(var f=Z(a),g=a=0;g>2],J[b+(8* -g+4)>>2],void 0);if(0>n){var t=-1;break a}a+=n}t=a}J[d>>2]=t;return 0}catch(w){return"undefined"!==typeof Y&&w instanceof Q||I(w),w.Na}},h:function(a){var b=Date.now();J[a>>2]=b/1E3|0;J[a+4>>2]=b%1E3*1E3|0;return 0},a:M,K:function(a,b){if(0===a)return Ab(28),-1;var c=J[a>>2];a=J[a+4>>2];if(0>a||999999999c)return Ab(28),-1;0!==b&&(J[b>>2]=0,J[b+4>>2]=0);return bd(1E6*c+a/1E3)},A:function(a){switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809; +e.onRuntimeInitialized=function(){function a(h,l){this.Ra=h;this.db=l;this.Qa=1;this.lb=[]}function b(h,l){this.db=l;l=aa(h)+1;this.eb=ba(l);if(null===this.eb)throw Error("Unable to allocate memory for the SQL string");k(h,m,this.eb,l);this.jb=this.eb;this.$a=this.pb=null}function c(h){this.filename="dbfile_"+(4294967295*Math.random()>>>0);if(null!=h){var l=this.filename,p=l?r("//"+l):"/";l=ca(!0,!0);p=da(p,(void 0!==l?l:438)&4095|32768,0);if(h){if("string"===typeof h){for(var q=Array(h.length),B= +0,ha=h.length;Bd;++d)g.parameters.push(f["viii"[d]]); +d=new WebAssembly.Function(g,a)}else{f=[1,0,1,96];g={i:127,j:126,f:125,d:124};f.push(3);for(d=0;3>d;++d)f.push(g["iii"[d]]);f.push(0);f[1]=f.length-2;d=new Uint8Array([0,97,115,109,1,0,0,0].concat(f,[2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0]));d=new WebAssembly.Module(d);d=(new WebAssembly.Instance(d,{e:{f:a}})).exports.f}b.set(c,d)}Ia.set(a,c);a=c}return a}function ra(a){ua(a)}var Ka;e.wasmBinary&&(Ka=e.wasmBinary);var noExitRuntime;e.noExitRuntime&&(noExitRuntime=e.noExitRuntime); +"object"!==typeof WebAssembly&&K("no native wasm support detected"); +function pa(a){var b="i32";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":z[a>>0]=0;break;case "i8":z[a>>0]=0;break;case "i16":La[a>>1]=0;break;case "i32":L[a>>2]=0;break;case "i64":M=[0,(N=0,1<=+Math.abs(N)?0>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)];L[a>>2]=M[0];L[a+4>>2]=M[1];break;case "float":Ma[a>>2]=0;break;case "double":Na[a>>3]=0;break;default:K("invalid type for setValue: "+b)}} +function x(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return z[a>>0];case "i8":return z[a>>0];case "i16":return La[a>>1];case "i32":return L[a>>2];case "i64":return L[a>>2];case "float":return Ma[a>>2];case "double":return Na[a>>3];default:K("invalid type for getValue: "+b)}return null}var Oa,Ja,Pa=!1;function assert(a,b){a||K("Assertion failed: "+b)}function Qa(a){var b=e["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b} +function Ra(a,b,c,d){var f={string:function(v){var C=0;if(null!==v&&void 0!==v&&0!==v){var H=(v.length<<2)+1;C=y(H);k(v,m,C,H)}return C},array:function(v){var C=y(v.length);z.set(v,C);return C}},g=Qa(a),n=[];a=0;if(d)for(var t=0;t=d);)++c;if(16f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}function A(a,b){return a?Va(m,a,b):""} +function k(a,b,c,d){if(!(0=n){var t=a.charCodeAt(++g);n=65536+((n&1023)<<10)|t&1023}if(127>=n){if(c>=d)break;b[c++]=n}else{if(2047>=n){if(c+1>=d)break;b[c++]=192|n>>6}else{if(65535>=n){if(c+2>=d)break;b[c++]=224|n>>12}else{if(c+3>=d)break;b[c++]=240|n>>18;b[c++]=128|n>>12&63}b[c++]=128|n>>6&63}b[c++]=128|n&63}}b[c]=0;return c-f} +function aa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}function Wa(a){var b=aa(a)+1,c=ba(b);c&&k(a,z,c,b);return c}var Xa,z,m,La,L,Ma,Na; +function Ya(a){Xa=a;e.HEAP8=z=new Int8Array(a);e.HEAP16=La=new Int16Array(a);e.HEAP32=L=new Int32Array(a);e.HEAPU8=m=new Uint8Array(a);e.HEAPU16=new Uint16Array(a);e.HEAPU32=new Uint32Array(a);e.HEAPF32=Ma=new Float32Array(a);e.HEAPF64=Na=new Float64Array(a)}var Za=e.INITIAL_MEMORY||16777216;e.wasmMemory?Oa=e.wasmMemory:Oa=new WebAssembly.Memory({initial:Za/65536,maximum:32768});Oa&&(Xa=Oa.buffer);Za=Xa.byteLength;Ya(Xa);var $a=[],ab=[],bb=[],cb=[]; +function db(){var a=e.preRun.shift();$a.unshift(a)}var eb=0,fb=null,gb=null;e.preloadedImages={};e.preloadedAudios={};function K(a){if(e.onAbort)e.onAbort(a);J(a);Pa=!0;throw new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");}function hb(a){var b=ib;return String.prototype.startsWith?b.startsWith(a):0===b.indexOf(a)}function jb(){return hb("data:application/octet-stream;base64,")}var ib="sql-wasm.wasm"; +if(!jb()){var kb=ib;ib=e.locateFile?e.locateFile(kb,I):I+kb}function lb(){try{if(Ka)return new Uint8Array(Ka);if(Ca)return Ca(ib);throw"both async and sync fetching of the wasm failed";}catch(a){K(a)}}function mb(){return Ka||!ya&&!G||"function"!==typeof fetch||hb("file://")?Promise.resolve().then(lb):fetch(ib,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+ib+"'";return a.arrayBuffer()}).catch(function(){return lb()})}var N,M; +function nb(a){for(;0>2]=60*(new Date).getTimezoneOffset();var b=(new Date).getFullYear(),c=new Date(b,0,1);b=new Date(b,6,1);L[vb()>>2]=Number(c.getTimezoneOffset()!=b.getTimezoneOffset());var d=a(c),f=a(b);d=Wa(d);f=Wa(f);b.getTimezoneOffset()>2]=d,L[xb()+4>>2]=f):(L[xb()>>2]=f,L[xb()+4>>2]=d)}}var tb; +function yb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var f=a[d];"."===f?a.splice(d,1):".."===f?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function r(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=yb(a.split("/").filter(function(d){return!!d}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} +function zb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Ab(a){if("/"===a)return"/";a=r(a);a=a.replace(/\/$/,"");var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function Bb(a){L[Cb()>>2]=a} +function Db(){if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);return function(){crypto.getRandomValues(a);return a[0]}}if(za)try{var b=require("crypto");return function(){return b.randomBytes(1)[0]}}catch(c){}return function(){K("randomDevice")}} +function Eb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=yb(a.split("/").filter(function(d){return!!d}),!b).join("/");return(b?"/":"")+a||"."}var Fb=[];function Gb(a,b){Fb[a]={input:[],output:[],cb:b};Hb(a,Ib)} +var Ib={open:function(a){var b=Fb[a.node.rdev];if(!b)throw new O(43);a.tty=b;a.seekable=!1},close:function(a){a.tty.cb.flush(a.tty)},flush:function(a){a.tty.cb.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.cb.xb)throw new O(60);for(var f=0,g=0;g=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.Ma,a.Ma=new Uint8Array(b),0b)a.Ma.length=b;else for(;a.Ma.length=a.node.Sa)return 0;a=Math.min(a.node.Sa-f,d);if(8b)throw new O(28);return b},sb:function(a,b,c){P.vb(a.node,b+c);a.node.Sa=Math.max(a.node.Sa,b+c)},hb:function(a,b,c,d,f,g){assert(0===b);if(32768!==(a.node.mode&61440))throw new O(43);a=a.node.Ma; +if(g&2||a.buffer!==Xa){if(0>>0)%T.length}function Wb(a){var b=Vb(a.parent.id,a.name);if(T[b]===a)T[b]=a.bb;else for(b=T[b];b;){if(b.bb===a){b.bb=a.bb;break}b=b.bb}} +function Ob(a,b){var c;if(c=(c=Xb(a,"x"))?c:a.Na.lookup?0:2)throw new O(c,a);for(c=T[Vb(a.id,b)];c;c=c.bb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.Na.lookup(a,b)}function Mb(a,b,c,d){a=new Yb(a,b,c,d);b=Vb(a.parent.id,a.name);a.bb=T[b];return T[b]=a}function Q(a){return 16384===(a&61440)}var Zb={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218}; +function $b(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Xb(a,b){if(Sb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;return 0}function ac(a,b){try{return Ob(a,b),20}catch(c){}return Xb(a,"wx")}function bc(a,b,c){try{var d=Ob(a,b)}catch(f){return f.Pa}if(a=Xb(a,"wx"))return a;if(c){if(!Q(d.mode))return 54;if(d===d.parent||"/"===Ub(d))return 10}else if(Q(d.mode))return 31;return 0} +function cc(a){var b=4096;for(a=a||0;a<=b;a++)if(!S[a])return a;throw new O(33);}function dc(a,b){ec||(ec=function(){},ec.prototype={});var c=new ec,d;for(d in a)c[d]=a[d];a=c;b=cc(b);a.fd=b;return S[b]=a}var Lb={open:function(a){a.Oa=Qb[a.node.rdev].Oa;a.Oa.open&&a.Oa.open(a)},Za:function(){throw new O(70);}};function Hb(a,b){Qb[a]={Oa:b}} +function fc(a,b){var c="/"===b,d=!b;if(c&&Pb)throw new O(10);if(!c&&!d){var f=V(b,{wb:!1});b=f.path;f=f.node;if(f.ab)throw new O(10);if(!Q(f.mode))throw new O(54);}b={type:a,Ub:{},yb:b,Mb:[]};a=a.Wa(b);a.Wa=b;b.root=a;c?Pb=a:f&&(f.ab=b,f.Wa&&f.Wa.Mb.push(b))}function da(a,b,c){var d=V(a,{parent:!0}).node;a=Ab(a);if(!a||"."===a||".."===a)throw new O(28);var f=ac(d,a);if(f)throw new O(f);if(!d.Na.gb)throw new O(63);return d.Na.gb(d,a,b,c)}function W(a,b){da(a,(void 0!==b?b:511)&1023|16384,0)} +function hc(a,b,c){"undefined"===typeof c&&(c=b,b=438);da(a,b|8192,c)}function ic(a,b){if(!Eb(a))throw new O(44);var c=V(b,{parent:!0}).node;if(!c)throw new O(44);b=Ab(b);var d=ac(c,b);if(d)throw new O(d);if(!c.Na.symlink)throw new O(63);c.Na.symlink(c,b,a)} +function ta(a){var b=V(a,{parent:!0}).node,c=Ab(a),d=Ob(b,c),f=bc(b,c,!1);if(f)throw new O(f);if(!b.Na.unlink)throw new O(63);if(d.ab)throw new O(10);try{U.willDeletePath&&U.willDeletePath(a)}catch(g){J("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.Na.unlink(b,c);Wb(d);try{if(U.onDeletePath)U.onDeletePath(a)}catch(g){J("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}} +function Tb(a){a=V(a).node;if(!a)throw new O(44);if(!a.Na.readlink)throw new O(28);return Eb(Ub(a.parent),a.Na.readlink(a))}function jc(a,b){a=V(a,{Ya:!b}).node;if(!a)throw new O(44);if(!a.Na.Ua)throw new O(63);return a.Na.Ua(a)}function kc(a){return jc(a,!0)}function ea(a,b){var c;"string"===typeof a?c=V(a,{Ya:!0}).node:c=a;if(!c.Na.Ta)throw new O(63);c.Na.Ta(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} +function lc(a){var b;"string"===typeof a?b=V(a,{Ya:!0}).node:b=a;if(!b.Na.Ta)throw new O(63);b.Na.Ta(b,{timestamp:Date.now()})}function mc(a,b){if(0>b)throw new O(28);var c;"string"===typeof a?c=V(a,{Ya:!0}).node:c=a;if(!c.Na.Ta)throw new O(63);if(Q(c.mode))throw new O(31);if(32768!==(c.mode&61440))throw new O(28);if(a=Xb(c,"w"))throw new O(a);c.Na.Ta(c,{size:b,timestamp:Date.now()})} +function u(a,b,c,d){if(""===a)throw new O(44);if("string"===typeof b){var f=Zb[b];if("undefined"===typeof f)throw Error("Unknown file open mode: "+b);b=f}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=r(a);try{g=V(a,{Ya:!(b&131072)}).node}catch(n){}}f=!1;if(b&64)if(g){if(b&128)throw new O(20);}else g=da(a,c,0),f=!0;if(!g)throw new O(44);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!Q(g.mode))throw new O(54);if(!f&&(c=g?40960===(g.mode&61440)?32:Q(g.mode)&& +("r"!==$b(b)||b&512)?31:Xb(g,$b(b)):44))throw new O(c);b&512&&mc(g,0);b&=-131713;d=dc({node:g,path:Ub(g),flags:b,seekable:!0,position:0,Oa:g.Oa,Rb:[],error:!1},d);d.Oa.open&&d.Oa.open(d);!e.logReadFiles||b&1||(Pc||(Pc={}),a in Pc||(Pc[a]=1,J("FS.trackingDelegate error on read file: "+a)));try{U.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),U.onOpenFile(a,g))}catch(n){J("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+n.message)}return d} +function ka(a){if(null===a.fd)throw new O(8);a.ob&&(a.ob=null);try{a.Oa.close&&a.Oa.close(a)}catch(b){throw b;}finally{S[a.fd]=null}a.fd=null}function Qc(a,b,c){if(null===a.fd)throw new O(8);if(!a.seekable||!a.Oa.Za)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.Oa.Za(a,b,c);a.Rb=[]} +function Sc(a,b,c,d,f){if(0>d||0>f)throw new O(28);if(null===a.fd)throw new O(8);if(1===(a.flags&2097155))throw new O(8);if(Q(a.node.mode))throw new O(31);if(!a.Oa.read)throw new O(28);var g="undefined"!==typeof f;if(!g)f=a.position;else if(!a.seekable)throw new O(70);b=a.Oa.read(a,b,c,d,f);g||(a.position+=b);return b} +function fa(a,b,c,d,f,g){if(0>d||0>f)throw new O(28);if(null===a.fd)throw new O(8);if(0===(a.flags&2097155))throw new O(8);if(Q(a.node.mode))throw new O(31);if(!a.Oa.write)throw new O(28);a.seekable&&a.flags&1024&&Qc(a,0,2);var n="undefined"!==typeof f;if(!n)f=a.position;else if(!a.seekable)throw new O(70);b=a.Oa.write(a,b,c,d,f,g);n||(a.position+=b);try{if(a.path&&U.onWriteToFile)U.onWriteToFile(a.path)}catch(t){J("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+t.message)}return b} +function sa(a){var b={encoding:"binary"};b=b||{};b.flags=b.flags||"r";b.encoding=b.encoding||"binary";if("utf8"!==b.encoding&&"binary"!==b.encoding)throw Error('Invalid encoding type "'+b.encoding+'"');var c,d=u(a,b.flags);a=jc(a).size;var f=new Uint8Array(a);Sc(d,f,0,a,0);"utf8"===b.encoding?c=Va(f,0):"binary"===b.encoding&&(c=f);ka(d);return c} +function Tc(){O||(O=function(a,b){this.node=b;this.Qb=function(c){this.Pa=c};this.Qb(a);this.message="FS error"},O.prototype=Error(),O.prototype.constructor=O,[44].forEach(function(a){Nb[a]=new O(a);Nb[a].stack=""}))}var Uc;function ca(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} +function Vc(a,b,c){a=r("/dev/"+a);var d=ca(!!b,!!c);Wc||(Wc=64);var f=Wc++<<8|0;Hb(f,{open:function(g){g.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(g,n,t,w){for(var v=0,C=0;C>2]=d.dev;L[c+4>>2]=0;L[c+8>>2]=d.ino;L[c+12>>2]=d.mode;L[c+16>>2]=d.nlink;L[c+20>>2]=d.uid;L[c+24>>2]=d.gid;L[c+28>>2]=d.rdev;L[c+32>>2]=0;M=[d.size>>>0,(N=d.size,1<=+Math.abs(N)?0>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)];L[c+40>>2]=M[0];L[c+44>>2]=M[1];L[c+48>>2]=4096;L[c+52>>2]=d.blocks;L[c+56>>2]=d.atime.getTime()/1E3|0;L[c+60>>2]= +0;L[c+64>>2]=d.mtime.getTime()/1E3|0;L[c+68>>2]=0;L[c+72>>2]=d.ctime.getTime()/1E3|0;L[c+76>>2]=0;M=[d.ino>>>0,(N=d.ino,1<=+Math.abs(N)?0>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)];L[c+80>>2]=M[0];L[c+84>>2]=M[1];return 0}var Zc=void 0;function $c(){Zc+=4;return L[Zc-4>>2]}function Z(a){a=S[a];if(!a)throw new O(8);return a}var ad={}; +function bd(){if(!cd){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:xa||"./this.program"},b;for(b in ad)a[b]=ad[b];var c=[];for(b in a)c.push(b+"="+a[b]);cd=c}return cd}var cd,dd;za?dd=function(){var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:"undefined"!==typeof dateNow?dd=dateNow:dd=function(){return performance.now()}; +function ed(a){for(var b=dd();dd()-b>2]);L[b>>2]=a.getSeconds();L[b+4>>2]=a.getMinutes();L[b+8>>2]=a.getHours();L[b+12>>2]=a.getDate();L[b+16>>2]=a.getMonth();L[b+20>>2]=a.getFullYear()-1900;L[b+24>>2]=a.getDay();var c=new Date(a.getFullYear(),0,1);L[b+28>>2]=(a.getTime()-c.getTime())/864E5|0;L[b+36>>2]=-(60*a.getTimezoneOffset());var d=(new Date(a.getFullYear(),6,1)).getTimezoneOffset(); +c=c.getTimezoneOffset();a=(d!=c&&a.getTimezoneOffset()==Math.min(c,d))|0;L[b+32>>2]=a;a=L[xb()+(a?4:0)>>2];L[b+40>>2]=a;return b},z:function(a,b){try{a=A(a);if(b&-8)var c=-28;else{var d;(d=V(a,{Ya:!0}).node)?(a="",b&4&&(a+="r"),b&2&&(a+="w"),b&1&&(a+="x"),c=a&&Xb(d,a)?-2:0):c=-44}return c}catch(f){return"undefined"!==typeof X&&f instanceof O||K(f),-f.Pa}},i:function(a,b){try{return a=A(a),ea(a,b),0}catch(c){return"undefined"!==typeof X&&c instanceof O||K(c),-c.Pa}},t:function(a){try{return a=A(a), +lc(a),0}catch(b){return"undefined"!==typeof X&&b instanceof O||K(b),-b.Pa}},j:function(a,b){try{var c=S[a];if(!c)throw new O(8);ea(c.node,b);return 0}catch(d){return"undefined"!==typeof X&&d instanceof O||K(d),-d.Pa}},u:function(a){try{var b=S[a];if(!b)throw new O(8);lc(b.node);return 0}catch(c){return"undefined"!==typeof X&&c instanceof O||K(c),-c.Pa}},c:function(a,b,c){Zc=c;try{var d=Z(a);switch(b){case 0:var f=$c();return 0>f?-28:u(d.path,d.flags,0,f).fd;case 1:case 2:return 0;case 3:return d.flags; +case 4:return f=$c(),d.flags|=f,0;case 12:return f=$c(),La[f+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Bb(28),-1;default:return-28}}catch(g){return"undefined"!==typeof X&&g instanceof O||K(g),-g.Pa}},K:function(a,b){try{var c=Z(a);return Yc(jc,c.path,b)}catch(d){return"undefined"!==typeof X&&d instanceof O||K(d),-d.Pa}},v:function(a,b,c){try{var d=S[a];if(!d)throw new O(8);if(0===(d.flags&2097155))throw new O(28);mc(d.node,c);return 0}catch(f){return"undefined"!==typeof X&& +f instanceof O||K(f),-f.Pa}},w:function(a,b){try{if(0===b)return-28;if(b=c)var d=-28;else{var f=Tb(a),g=Math.min(c,aa(f)),n=z[b+g];k(f,m,b,c+1);z[b+g]=n;d=g}return d}catch(t){return"undefined"!==typeof X&&t instanceof O||K(t),-t.Pa}},E:function(a){try{a=A(a);var b=V(a,{parent:!0}).node,c=Ab(a),d=Ob(b,c),f=bc(b,c,!0);if(f)throw new O(f);if(!b.Na.rmdir)throw new O(63);if(d.ab)throw new O(10);try{U.willDeletePath&&U.willDeletePath(a)}catch(g){J("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+ +g.message)}b.Na.rmdir(b,c);Wb(d);try{if(U.onDeletePath)U.onDeletePath(a)}catch(g){J("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}return 0}catch(g){return"undefined"!==typeof X&&g instanceof O||K(g),-g.Pa}},g:function(a,b){try{return a=A(a),Yc(jc,a,b)}catch(c){return"undefined"!==typeof X&&c instanceof O||K(c),-c.Pa}},y:function(a){try{return a=A(a),ta(a),0}catch(b){return"undefined"!==typeof X&&b instanceof O||K(b),-b.Pa}},m:function(a,b,c){m.copyWithin(a,b,b+c)}, +d:function(a){a>>>=0;var b=m.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);Ya(Oa.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},o:function(a,b){var c=0;bd().forEach(function(d,f){var g=b+c;f=L[a+4*f>>2]=g;for(g=0;g>0]=d.charCodeAt(g);z[f>>0]=0;c+=d.length+1});return 0},p:function(a,b){var c= +bd();L[a>>2]=c.length;var d=0;c.forEach(function(f){d+=f.length+1});L[b>>2]=d;return 0},f:function(a){try{var b=Z(a);ka(b);return 0}catch(c){return"undefined"!==typeof X&&c instanceof O||K(c),c.Pa}},n:function(a,b){try{var c=Z(a);z[b>>0]=c.tty?2:Q(c.mode)?3:40960===(c.mode&61440)?7:4;return 0}catch(d){return"undefined"!==typeof X&&d instanceof O||K(d),d.Pa}},l:function(a,b,c,d,f){try{var g=Z(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Qc(g,a,d);M=[g.position>>> +0,(N=g.position,1<=+Math.abs(N)?0>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)];L[f>>2]=M[0];L[f+4>>2]=M[1];g.ob&&0===a&&0===d&&(g.ob=null);return 0}catch(n){return"undefined"!==typeof X&&n instanceof O||K(n),n.Pa}},x:function(a){try{var b=Z(a);return b.Oa&&b.Oa.fsync?-b.Oa.fsync(b):0}catch(c){return"undefined"!==typeof X&&c instanceof O||K(c),c.Pa}},F:function(a,b,c,d){try{a:{for(var f=Z(a),g=a=0;g>2],L[b+(8* +g+4)>>2],void 0);if(0>n){var t=-1;break a}a+=n}t=a}L[d>>2]=t;return 0}catch(w){return"undefined"!==typeof X&&w instanceof O||K(w),w.Pa}},h:function(a){var b=Date.now();L[a>>2]=b/1E3|0;L[a+4>>2]=b%1E3*1E3|0;return 0},a:Oa,A:function(a,b){if(0===a)return Bb(28),-1;var c=L[a>>2];a=L[a+4>>2];if(0>a||999999999c)return Bb(28),-1;0!==b&&(L[b>>2]=0,L[b+4>>2]=0);return ed(1E6*c+a/1E3)},B:function(a){switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809; case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}Ab(28);return-1}, -L:function(a){var b=Date.now()/1E3|0;a&&(J[a>>2]=b);return b},r:function(a,b){if(b){var c=1E3*J[b+8>>2];c+=J[b+12>>2]/1E3}else c=Date.now();a=O(a);try{b=c;var d=W(a,{Wa:!0}).node;d.La.Ra(d,{timestamp:Math.max(b,c)});return 0}catch(f){a=f;if(!(a instanceof Q)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error();}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}e.extraStackTrace&&(d+="\n"+e.extraStackTrace());d=ob(d);throw a+d;}Ab(a.Na);return-1}}}; -(function(){function a(f){e.asm=f.exports;Ja=e.asm.M;eb--;e.monitorRunDependencies&&e.monitorRunDependencies(eb);0==eb&&(null!==fb&&(clearInterval(fb),fb=null),gb&&(f=gb,gb=null,f()))}function b(f){a(f.instance)}function c(f){return mb().then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){F("failed to asynchronously prepare wasm: "+g);I(g)})}var d={a:fd};eb++;e.monitorRunDependencies&&e.monitorRunDependencies(eb);if(e.instantiateWasm)try{return e.instantiateWasm(d,a)}catch(f){return F("Module.instantiateWasm callback failed with error: "+ -f),!1}(function(){if(Ka||"function"!==typeof WebAssembly.instantiateStreaming||jb()||hb("file://")||"function"!==typeof fetch)return c(b);fetch(ib,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,d).then(b,function(g){F("wasm streaming compile failed: "+g);F("falling back to ArrayBuffer instantiation");return c(b)})})})();return{}})(); -var cd=e.___wasm_call_ctors=function(){return(cd=e.___wasm_call_ctors=e.asm.N).apply(null,arguments)},ed=e._memset=function(){return(ed=e._memset=e.asm.O).apply(null,arguments)};e._sqlite3_free=function(){return(e._sqlite3_free=e.asm.P).apply(null,arguments)};var Bb=e.___errno_location=function(){return(Bb=e.___errno_location=e.asm.Q).apply(null,arguments)};e._sqlite3_finalize=function(){return(e._sqlite3_finalize=e.asm.R).apply(null,arguments)}; +case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}Bb(28);return-1}, +L:function(a){var b=Date.now()/1E3|0;a&&(L[a>>2]=b);return b},r:function(a,b){if(b){var c=1E3*L[b+8>>2];c+=L[b+12>>2]/1E3}else c=Date.now();a=A(a);try{b=c;var d=V(a,{Ya:!0}).node;d.Na.Ta(d,{timestamp:Math.max(b,c)});return 0}catch(f){a=f;if(!(a instanceof O)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error();}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}e.extraStackTrace&&(d+="\n"+e.extraStackTrace());d=ob(d);throw a+d;}Bb(a.Pa);return-1}}}; +(function(){function a(f){e.asm=f.exports;Ja=e.asm.M;eb--;e.monitorRunDependencies&&e.monitorRunDependencies(eb);0==eb&&(null!==fb&&(clearInterval(fb),fb=null),gb&&(f=gb,gb=null,f()))}function b(f){a(f.instance)}function c(f){return mb().then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){J("failed to asynchronously prepare wasm: "+g);K(g)})}var d={a:id};eb++;e.monitorRunDependencies&&e.monitorRunDependencies(eb);if(e.instantiateWasm)try{return e.instantiateWasm(d,a)}catch(f){return J("Module.instantiateWasm callback failed with error: "+ +f),!1}(function(){if(Ka||"function"!==typeof WebAssembly.instantiateStreaming||jb()||hb("file://")||"function"!==typeof fetch)return c(b);fetch(ib,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,d).then(b,function(g){J("wasm streaming compile failed: "+g);J("falling back to ArrayBuffer instantiation");return c(b)})})})();return{}})(); +var fd=e.___wasm_call_ctors=function(){return(fd=e.___wasm_call_ctors=e.asm.N).apply(null,arguments)},hd=e._memset=function(){return(hd=e._memset=e.asm.O).apply(null,arguments)};e._sqlite3_free=function(){return(e._sqlite3_free=e.asm.P).apply(null,arguments)};var Cb=e.___errno_location=function(){return(Cb=e.___errno_location=e.asm.Q).apply(null,arguments)};e._sqlite3_finalize=function(){return(e._sqlite3_finalize=e.asm.R).apply(null,arguments)}; e._sqlite3_reset=function(){return(e._sqlite3_reset=e.asm.S).apply(null,arguments)};e._sqlite3_clear_bindings=function(){return(e._sqlite3_clear_bindings=e.asm.T).apply(null,arguments)};e._sqlite3_value_blob=function(){return(e._sqlite3_value_blob=e.asm.U).apply(null,arguments)};e._sqlite3_value_text=function(){return(e._sqlite3_value_text=e.asm.V).apply(null,arguments)};e._sqlite3_value_bytes=function(){return(e._sqlite3_value_bytes=e.asm.W).apply(null,arguments)}; e._sqlite3_value_double=function(){return(e._sqlite3_value_double=e.asm.X).apply(null,arguments)};e._sqlite3_value_int=function(){return(e._sqlite3_value_int=e.asm.Y).apply(null,arguments)};e._sqlite3_value_type=function(){return(e._sqlite3_value_type=e.asm.Z).apply(null,arguments)};e._sqlite3_result_blob=function(){return(e._sqlite3_result_blob=e.asm._).apply(null,arguments)};e._sqlite3_result_double=function(){return(e._sqlite3_result_double=e.asm.$).apply(null,arguments)}; e._sqlite3_result_error=function(){return(e._sqlite3_result_error=e.asm.aa).apply(null,arguments)};e._sqlite3_result_int=function(){return(e._sqlite3_result_int=e.asm.ba).apply(null,arguments)};e._sqlite3_result_int64=function(){return(e._sqlite3_result_int64=e.asm.ca).apply(null,arguments)};e._sqlite3_result_null=function(){return(e._sqlite3_result_null=e.asm.da).apply(null,arguments)};e._sqlite3_result_text=function(){return(e._sqlite3_result_text=e.asm.ea).apply(null,arguments)}; e._sqlite3_step=function(){return(e._sqlite3_step=e.asm.fa).apply(null,arguments)};e._sqlite3_column_count=function(){return(e._sqlite3_column_count=e.asm.ga).apply(null,arguments)};e._sqlite3_data_count=function(){return(e._sqlite3_data_count=e.asm.ha).apply(null,arguments)};e._sqlite3_column_blob=function(){return(e._sqlite3_column_blob=e.asm.ia).apply(null,arguments)};e._sqlite3_column_bytes=function(){return(e._sqlite3_column_bytes=e.asm.ja).apply(null,arguments)}; e._sqlite3_column_double=function(){return(e._sqlite3_column_double=e.asm.ka).apply(null,arguments)};e._sqlite3_column_text=function(){return(e._sqlite3_column_text=e.asm.la).apply(null,arguments)};e._sqlite3_column_type=function(){return(e._sqlite3_column_type=e.asm.ma).apply(null,arguments)};e._sqlite3_column_name=function(){return(e._sqlite3_column_name=e.asm.na).apply(null,arguments)};e._sqlite3_bind_blob=function(){return(e._sqlite3_bind_blob=e.asm.oa).apply(null,arguments)}; -e._sqlite3_bind_double=function(){return(e._sqlite3_bind_double=e.asm.pa).apply(null,arguments)};e._sqlite3_bind_int=function(){return(e._sqlite3_bind_int=e.asm.qa).apply(null,arguments)};e._sqlite3_bind_text=function(){return(e._sqlite3_bind_text=e.asm.ra).apply(null,arguments)};e._sqlite3_bind_parameter_index=function(){return(e._sqlite3_bind_parameter_index=e.asm.sa).apply(null,arguments)};e._sqlite3_errmsg=function(){return(e._sqlite3_errmsg=e.asm.ta).apply(null,arguments)}; -e._sqlite3_exec=function(){return(e._sqlite3_exec=e.asm.ua).apply(null,arguments)};e._sqlite3_prepare_v2=function(){return(e._sqlite3_prepare_v2=e.asm.va).apply(null,arguments)};e._sqlite3_changes=function(){return(e._sqlite3_changes=e.asm.wa).apply(null,arguments)};e._sqlite3_close_v2=function(){return(e._sqlite3_close_v2=e.asm.xa).apply(null,arguments)};e._sqlite3_create_function_v2=function(){return(e._sqlite3_create_function_v2=e.asm.ya).apply(null,arguments)}; -e._sqlite3_open=function(){return(e._sqlite3_open=e.asm.za).apply(null,arguments)};var Ta=e._malloc=function(){return(Ta=e._malloc=e.asm.Aa).apply(null,arguments)},ma=e._free=function(){return(ma=e._free=e.asm.Ba).apply(null,arguments)};e._RegisterExtensionFunctions=function(){return(e._RegisterExtensionFunctions=e.asm.Ca).apply(null,arguments)}; -var wb=e.__get_tzname=function(){return(wb=e.__get_tzname=e.asm.Da).apply(null,arguments)},ub=e.__get_daylight=function(){return(ub=e.__get_daylight=e.asm.Ea).apply(null,arguments)},tb=e.__get_timezone=function(){return(tb=e.__get_timezone=e.asm.Fa).apply(null,arguments)},na=e.stackSave=function(){return(na=e.stackSave=e.asm.Ga).apply(null,arguments)},ra=e.stackRestore=function(){return(ra=e.stackRestore=e.asm.Ha).apply(null,arguments)},u=e.stackAlloc=function(){return(u=e.stackAlloc=e.asm.Ia).apply(null, -arguments)},dd=e._memalign=function(){return(dd=e._memalign=e.asm.Ja).apply(null,arguments)};e.cwrap=function(a,b,c,d){c=c||[];var f=c.every(function(g){return"number"===g});return"string"!==b&&f&&!d?Pa(a):function(){return Qa(a,b,c,arguments)}};e.stackSave=na;e.stackRestore=ra;e.stackAlloc=u;var gd;gb=function hd(){gd||id();gd||(gb=hd)}; -function id(){function a(){if(!gd&&(gd=!0,e.calledRun=!0,!Oa)){e.noFSInit||Rc||(Rc=!0,Qc(),e.stdin=e.stdin,e.stdout=e.stdout,e.stderr=e.stderr,e.stdin?Sc("stdin",e.stdin):hc("/dev/tty","/dev/stdin"),e.stdout?Sc("stdout",null,e.stdout):hc("/dev/tty","/dev/stdout"),e.stderr?Sc("stderr",null,e.stderr):hc("/dev/tty1","/dev/stderr"),m("/dev/stdin","r"),m("/dev/stdout","w"),m("/dev/stderr","w"));nb(ab);Rb=!1;nb(bb);if(e.onRuntimeInitialized)e.onRuntimeInitialized();if(e.postRun)for("function"==typeof e.postRun&& -(e.postRun=[e.postRun]);e.postRun.length;){var b=e.postRun.shift();cb.unshift(b)}nb(cb)}}if(!(0 { - if (name !== 'require') { - name = name + '.js'; - } - let promise = Promise.resolve(); - if (!registry[name]) { - - promise = new Promise(async resolve => { - if ("document" in self) { - const script = document.createElement("script"); - script.src = name; - document.head.appendChild(script); - script.onload = resolve; - } else { - importScripts(name); - resolve(); - } - }); - - } - return promise.then(() => { - if (!registry[name]) { - throw new Error(`Module ${name} didn’t register its module`); - } - return registry[name]; - }); - }; - - const require = (names, resolve) => { - Promise.all(names.map(singleRequire)) - .then(modules => resolve(modules.length === 1 ? modules[0] : modules)); - }; - - const registry = { - require: Promise.resolve(require) - }; - - self.define = (moduleName, depsNames, factory) => { - if (registry[moduleName]) { - // Module is already loading or loaded. - return; - } - registry[moduleName] = Promise.resolve().then(() => { - let exports = {}; - const module = { - uri: location.origin + moduleName.slice(1) - }; - return Promise.all( - depsNames.map(depName => { - switch(depName) { - case "exports": - return exports; - case "module": - return module; - default: - return singleRequire(depName); - } - }) - ).then(deps => { - const facValue = factory(...deps); - if(!exports.default) { - exports.default = facValue; - } - return exports; - }); - }); - }; -} -define("./service-worker.js",['./workbox-3b8b670f'], function (workbox) { 'use strict'; - - /** - * Welcome to your Workbox-powered service worker! - * - * You'll need to register this file in your web app. - * See https://goo.gl/nhQhGp - * - * The rest of the code is auto-generated. Please don't update this file - * directly; instead, make changes to your Workbox build configuration - * and re-run your build process. - * See https://goo.gl/2aRDsh - */ - - self.addEventListener('message', event => { - if (event.data && event.data.type === 'SKIP_WAITING') { - self.skipWaiting(); - } - }); - /** - * The precacheAndRoute() method efficiently caches and responds to - * requests for URLs in the manifest. - * See https://goo.gl/S9QRab - */ - - workbox.precacheAndRoute([{ - "url": "bundle.js", - "revision": "f2aa7987aaf0c1368bd16e29b26e0800" - }, { - "url": "html/abstractWindowTemplate.html", - "revision": "00bb2496dac07a457654781fa8c6948c" - }, { - "url": "html/alphabeticListFragment.html", - "revision": "05e1a0c8574de51e0de78277af030920" - }, { - "url": "html/changeUserSite.html", - "revision": "b416ddd8f231490201243a26afa49ca8" - }, { - "url": "html/chooseDialog.html", - "revision": "0171b83550d8a21f1332a5360c10baf5" - }, { - "url": "html/contactSite.html", - "revision": "b8acb685882c2cb4a970e5a7615a5c5d" - }, { - "url": "html/container.html", - "revision": "a7285c607fdacd912f47738462150efe" - }, { - "url": "html/credits.html", - "revision": "efb301e087d02b5dcd97ecda45e661ca" - }, { - "url": "html/end.html", - "revision": "8aa547874fa8716e1ddb8d29276dcc91" - }, { - "url": "html/forgotPasswordSite.html", - "revision": "b063ea7614dce48ed6794400d34b135f" - }, { - "url": "html/impressum.html", - "revision": "d0e2e95559a8820115ac92659e3d2590" - }, { - "url": "html/level.html", - "revision": "481bf599c219a9f2d94eae4096fc6d79" - }, { - "url": "html/loginSite.html", - "revision": "4d8c2f02ba16dbf38ad679827cbd62f2" - }, { - "url": "html/menu.html", - "revision": "06cf7df2e0e4918542d0d83f21a1c2b0" - }, { - "url": "html/menuSite.html", - "revision": "8dae573b1dcba5727f4bc598b1a09007" - }, { - "url": "html/navbar.html", - "revision": "482d5ac8a3b6ea9ae3f06543d3eed977" - }, { - "url": "html/notAllowedSite.html", - "revision": "2a65f4f3da6f1f508736bd63c3d093ea" - }, { - "url": "html/privacyPolicy.html", - "revision": "f55a77320c0744ac684231107bd51012" - }, { - "url": "html/registrationSite.html", - "revision": "5d732604002df8c6eb1f206709bc4b9a" - }, { - "url": "html/selectUserDialog.html", - "revision": "3cd8fc58c0d2c6a260747475f861b855" - }, { - "url": "html/settings.html", - "revision": "5a7cf19679ca839e4badd6624b6c35aa" - }, { - "url": "html/settingsSite.html", - "revision": "c20c185a3dd15b8e5a62d9934f0402f5" - }, { - "url": "html/shareDialog.html", - "revision": "49fd3d7553c48ecc11c3861afc0b0771" - }, { - "url": "html/swipeFragment.html", - "revision": "3278efb5dd279a359cdd950fa002b234" - }, { - "url": "html/tabFragment.html", - "revision": "733ad585b3927993d15cbd04e9c135da" - }, { - "url": "html/tutorialSite.html", - "revision": "24b319cd6fbb2d54fa57fdf46176287a" - }, { - "url": "img/arrowLeft.svg", - "revision": "6bbb4f0e313bb88cd0cc80c2b3cd36fc" - }, { - "url": "img/brightAndBeautifull__.mp3", - "revision": "2b40fd6c076d254cf639f8f46819d5ca" - }, { - "url": "img/coin.png", - "revision": "5b380862ff8349f6b4b8d5241893f508" - }, { - "url": "img/coinTower.png", - "revision": "50cef0780a1affcd301c2c4be09ccb25" - }, { - "url": "img/errorIcon.png", - "revision": "b48a01a1871b83b30c317f0fc4aed555" - }, { - "url": "img/help.png", - "revision": "45a8dc0493279dc37f72f8026af5bc10" - }, { - "url": "img/logo.png", - "revision": "5246599497de18a878951e1e98083493" - }, { - "url": "img/music.svg", - "revision": "ce36074e94a8d19dfa383f98bd66a1f4" - }, { - "url": "img/settings.png", - "revision": "c44ce577ac56632e53208833ff78e67f" - }, { - "url": "img/share.svg", - "revision": "ac8fc0221ee400fc843090a834df7c9d" - }, { - "url": "img/single_coin_fall_on_concrete_.mp3", - "revision": "7f0de4f503644a7fc14de7e307bbf722" - }, { - "url": "img/speaker.svg", - "revision": "0d926850f1558dd431e1c6b10fe0c2ef" - }, { - "url": "img/telegram.svg", - "revision": "e366fed4603e06142a2d6b8221be51b8" - }, { - "url": "img/whatsapp.svg", - "revision": "0fa4092ac1f91a5390e74a3c2c03d5e3" - }, { - "url": "index.css", - "revision": "6fc107452ad861200f8193f85e7709c2" - }, { - "url": "index.html", - "revision": "5f8832bceb6eae4ba8126bf5b03e0d38" - }, { - "url": "scripts/localforage.js", - "revision": "7e2a4110781376e372c538e67787773a" - }, { - "url": "scripts/sql-wasm.js", - "revision": "7da4edc42b013dcff1b48e8c02867e26" - }, { - "url": "sql-wasm.wasm", - "revision": "bff856e0a3429d33cfb88d20b7f9fcff" - }], {}); - -}); -//# sourceMappingURL=service-worker.js.map diff --git a/src/server/public/service-worker.js.map b/src/server/public/service-worker.js.map deleted file mode 100644 index 6c1e526..0000000 --- a/src/server/public/service-worker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/92f6ebd92d6f4f05d5d5b1b5bb153078/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/silas/Projekte/web/wordRotator/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"bundle.js\",\n \"revision\": \"f2aa7987aaf0c1368bd16e29b26e0800\"\n },\n {\n \"url\": \"html/abstractWindowTemplate.html\",\n \"revision\": \"00bb2496dac07a457654781fa8c6948c\"\n },\n {\n \"url\": \"html/alphabeticListFragment.html\",\n \"revision\": \"05e1a0c8574de51e0de78277af030920\"\n },\n {\n \"url\": \"html/changeUserSite.html\",\n \"revision\": \"b416ddd8f231490201243a26afa49ca8\"\n },\n {\n \"url\": \"html/chooseDialog.html\",\n \"revision\": \"0171b83550d8a21f1332a5360c10baf5\"\n },\n {\n \"url\": \"html/contactSite.html\",\n \"revision\": \"b8acb685882c2cb4a970e5a7615a5c5d\"\n },\n {\n \"url\": \"html/container.html\",\n \"revision\": \"a7285c607fdacd912f47738462150efe\"\n },\n {\n \"url\": \"html/credits.html\",\n \"revision\": \"efb301e087d02b5dcd97ecda45e661ca\"\n },\n {\n \"url\": \"html/end.html\",\n \"revision\": \"8aa547874fa8716e1ddb8d29276dcc91\"\n },\n {\n \"url\": \"html/forgotPasswordSite.html\",\n \"revision\": \"b063ea7614dce48ed6794400d34b135f\"\n },\n {\n \"url\": \"html/impressum.html\",\n \"revision\": \"d0e2e95559a8820115ac92659e3d2590\"\n },\n {\n \"url\": \"html/level.html\",\n \"revision\": \"481bf599c219a9f2d94eae4096fc6d79\"\n },\n {\n \"url\": \"html/loginSite.html\",\n \"revision\": \"4d8c2f02ba16dbf38ad679827cbd62f2\"\n },\n {\n \"url\": \"html/menu.html\",\n \"revision\": \"06cf7df2e0e4918542d0d83f21a1c2b0\"\n },\n {\n \"url\": \"html/menuSite.html\",\n \"revision\": \"8dae573b1dcba5727f4bc598b1a09007\"\n },\n {\n \"url\": \"html/navbar.html\",\n \"revision\": \"482d5ac8a3b6ea9ae3f06543d3eed977\"\n },\n {\n \"url\": \"html/notAllowedSite.html\",\n \"revision\": \"2a65f4f3da6f1f508736bd63c3d093ea\"\n },\n {\n \"url\": \"html/privacyPolicy.html\",\n \"revision\": \"f55a77320c0744ac684231107bd51012\"\n },\n {\n \"url\": \"html/registrationSite.html\",\n \"revision\": \"5d732604002df8c6eb1f206709bc4b9a\"\n },\n {\n \"url\": \"html/selectUserDialog.html\",\n \"revision\": \"3cd8fc58c0d2c6a260747475f861b855\"\n },\n {\n \"url\": \"html/settings.html\",\n \"revision\": \"5a7cf19679ca839e4badd6624b6c35aa\"\n },\n {\n \"url\": \"html/settingsSite.html\",\n \"revision\": \"c20c185a3dd15b8e5a62d9934f0402f5\"\n },\n {\n \"url\": \"html/shareDialog.html\",\n \"revision\": \"49fd3d7553c48ecc11c3861afc0b0771\"\n },\n {\n \"url\": \"html/swipeFragment.html\",\n \"revision\": \"3278efb5dd279a359cdd950fa002b234\"\n },\n {\n \"url\": \"html/tabFragment.html\",\n \"revision\": \"733ad585b3927993d15cbd04e9c135da\"\n },\n {\n \"url\": \"html/tutorialSite.html\",\n \"revision\": \"24b319cd6fbb2d54fa57fdf46176287a\"\n },\n {\n \"url\": \"img/arrowLeft.svg\",\n \"revision\": \"6bbb4f0e313bb88cd0cc80c2b3cd36fc\"\n },\n {\n \"url\": \"img/brightAndBeautifull__.mp3\",\n \"revision\": \"2b40fd6c076d254cf639f8f46819d5ca\"\n },\n {\n \"url\": \"img/coin.png\",\n \"revision\": \"5b380862ff8349f6b4b8d5241893f508\"\n },\n {\n \"url\": \"img/coinTower.png\",\n \"revision\": \"50cef0780a1affcd301c2c4be09ccb25\"\n },\n {\n \"url\": \"img/errorIcon.png\",\n \"revision\": \"b48a01a1871b83b30c317f0fc4aed555\"\n },\n {\n \"url\": \"img/help.png\",\n \"revision\": \"45a8dc0493279dc37f72f8026af5bc10\"\n },\n {\n \"url\": \"img/logo.png\",\n \"revision\": \"5246599497de18a878951e1e98083493\"\n },\n {\n \"url\": \"img/music.svg\",\n \"revision\": \"ce36074e94a8d19dfa383f98bd66a1f4\"\n },\n {\n \"url\": \"img/settings.png\",\n \"revision\": \"c44ce577ac56632e53208833ff78e67f\"\n },\n {\n \"url\": \"img/share.svg\",\n \"revision\": \"ac8fc0221ee400fc843090a834df7c9d\"\n },\n {\n \"url\": \"img/single_coin_fall_on_concrete_.mp3\",\n \"revision\": \"7f0de4f503644a7fc14de7e307bbf722\"\n },\n {\n \"url\": \"img/speaker.svg\",\n \"revision\": \"0d926850f1558dd431e1c6b10fe0c2ef\"\n },\n {\n \"url\": \"img/telegram.svg\",\n \"revision\": \"e366fed4603e06142a2d6b8221be51b8\"\n },\n {\n \"url\": \"img/whatsapp.svg\",\n \"revision\": \"0fa4092ac1f91a5390e74a3c2c03d5e3\"\n },\n {\n \"url\": \"index.css\",\n \"revision\": \"6fc107452ad861200f8193f85e7709c2\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"5f8832bceb6eae4ba8126bf5b03e0d38\"\n },\n {\n \"url\": \"scripts/localforage.js\",\n \"revision\": \"7e2a4110781376e372c538e67787773a\"\n },\n {\n \"url\": \"scripts/sql-wasm.js\",\n \"revision\": \"7da4edc42b013dcff1b48e8c02867e26\"\n },\n {\n \"url\": \"sql-wasm.wasm\",\n \"revision\": \"bff856e0a3429d33cfb88d20b7f9fcff\"\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute"],"mappings":"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"} \ No newline at end of file diff --git a/src/server/public/sql-wasm.wasm b/src/server/public/sql-wasm.wasm index 9313dae..5bb506f 100644 Binary files a/src/server/public/sql-wasm.wasm and b/src/server/public/sql-wasm.wasm differ diff --git a/src/server/public/wordRotator.apk b/src/server/public/wordRotator.apk index 78a7d7f..876ec25 100644 Binary files a/src/server/public/wordRotator.apk and b/src/server/public/wordRotator.apk differ diff --git a/src/server/public/workbox-3b8b670f.js b/src/server/public/workbox-3b8b670f.js deleted file mode 100644 index 4ae9da6..0000000 --- a/src/server/public/workbox-3b8b670f.js +++ /dev/null @@ -1,2147 +0,0 @@ -define("./workbox-3b8b670f.js",['exports'], function (exports) { 'use strict'; - - try { - self['workbox:core:5.1.4'] && _(); - } catch (e) {} - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const _cacheNameDetails = { - googleAnalytics: 'googleAnalytics', - precache: 'precache-v2', - prefix: 'workbox', - runtime: 'runtime', - suffix: typeof registration !== 'undefined' ? registration.scope : '' - }; - - const _createCacheName = cacheName => { - return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix].filter(value => value && value.length > 0).join('-'); - }; - - const eachCacheNameDetail = fn => { - for (const key of Object.keys(_cacheNameDetails)) { - fn(key); - } - }; - - const cacheNames = { - updateDetails: details => { - eachCacheNameDetail(key => { - if (typeof details[key] === 'string') { - _cacheNameDetails[key] = details[key]; - } - }); - }, - getGoogleAnalyticsName: userCacheName => { - return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics); - }, - getPrecacheName: userCacheName => { - return userCacheName || _createCacheName(_cacheNameDetails.precache); - }, - getPrefix: () => { - return _cacheNameDetails.prefix; - }, - getRuntimeName: userCacheName => { - return userCacheName || _createCacheName(_cacheNameDetails.runtime); - }, - getSuffix: () => { - return _cacheNameDetails.suffix; - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const getFriendlyURL = url => { - const urlObj = new URL(String(url), location.href); // See https://github.com/GoogleChrome/workbox/issues/2323 - // We want to include everything, except for the origin if it's same-origin. - - return urlObj.href.replace(new RegExp(`^${location.origin}`), ''); - }; - - /* - Copyright 2019 Google LLC - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const logger = (() => { - // Don't overwrite this value if it's already set. - // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923 - if (!('__WB_DISABLE_DEV_LOGS' in self)) { - self.__WB_DISABLE_DEV_LOGS = false; - } - - let inGroup = false; - const methodToColorMap = { - debug: `#7f8c8d`, - log: `#2ecc71`, - warn: `#f39c12`, - error: `#c0392b`, - groupCollapsed: `#3498db`, - groupEnd: null - }; - - const print = function (method, args) { - if (self.__WB_DISABLE_DEV_LOGS) { - return; - } - - if (method === 'groupCollapsed') { - // Safari doesn't print all console.groupCollapsed() arguments: - // https://bugs.webkit.org/show_bug.cgi?id=182754 - if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - console[method](...args); - return; - } - } - - const styles = [`background: ${methodToColorMap[method]}`, `border-radius: 0.5em`, `color: white`, `font-weight: bold`, `padding: 2px 0.5em`]; // When in a group, the workbox prefix is not displayed. - - const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')]; - console[method](...logPrefix, ...args); - - if (method === 'groupCollapsed') { - inGroup = true; - } - - if (method === 'groupEnd') { - inGroup = false; - } - }; - - const api = {}; - const loggerMethods = Object.keys(methodToColorMap); - - for (const key of loggerMethods) { - const method = key; - - api[method] = (...args) => { - print(method, args); - }; - } - - return api; - })(); - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const messages = { - 'invalid-value': ({ - paramName, - validValueDescription, - value - }) => { - if (!paramName || !validValueDescription) { - throw new Error(`Unexpected input to 'invalid-value' error.`); - } - - return `The '${paramName}' parameter was given a value with an ` + `unexpected value. ${validValueDescription} Received a value of ` + `${JSON.stringify(value)}.`; - }, - 'not-an-array': ({ - moduleName, - className, - funcName, - paramName - }) => { - if (!moduleName || !className || !funcName || !paramName) { - throw new Error(`Unexpected input to 'not-an-array' error.`); - } - - return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className}.${funcName}()' must be an array.`; - }, - 'incorrect-type': ({ - expectedType, - paramName, - moduleName, - className, - funcName - }) => { - if (!expectedType || !paramName || !moduleName || !funcName) { - throw new Error(`Unexpected input to 'incorrect-type' error.`); - } - - return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className ? className + '.' : ''}` + `${funcName}()' must be of type ${expectedType}.`; - }, - 'incorrect-class': ({ - expectedClass, - paramName, - moduleName, - className, - funcName, - isReturnValueProblem - }) => { - if (!expectedClass || !moduleName || !funcName) { - throw new Error(`Unexpected input to 'incorrect-class' error.`); - } - - if (isReturnValueProblem) { - return `The return value from ` + `'${moduleName}.${className ? className + '.' : ''}${funcName}()' ` + `must be an instance of class ${expectedClass.name}.`; - } - - return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className ? className + '.' : ''}${funcName}()' ` + `must be an instance of class ${expectedClass.name}.`; - }, - 'missing-a-method': ({ - expectedMethod, - paramName, - moduleName, - className, - funcName - }) => { - if (!expectedMethod || !paramName || !moduleName || !className || !funcName) { - throw new Error(`Unexpected input to 'missing-a-method' error.`); - } - - return `${moduleName}.${className}.${funcName}() expected the ` + `'${paramName}' parameter to expose a '${expectedMethod}' method.`; - }, - 'add-to-cache-list-unexpected-type': ({ - entry - }) => { - return `An unexpected entry was passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` + `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` + `strings with one or more characters, objects with a url property or ` + `Request objects.`; - }, - 'add-to-cache-list-conflicting-entries': ({ - firstEntry, - secondEntry - }) => { - if (!firstEntry || !secondEntry) { - throw new Error(`Unexpected input to ` + `'add-to-cache-list-duplicate-entries' error.`); - } - - return `Two of the entries passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` + `${firstEntry._entryId} but different revision details. Workbox is ` + `unable to cache and version the asset correctly. Please remove one ` + `of the entries.`; - }, - 'plugin-error-request-will-fetch': ({ - thrownError - }) => { - if (!thrownError) { - throw new Error(`Unexpected input to ` + `'plugin-error-request-will-fetch', error.`); - } - - return `An error was thrown by a plugins 'requestWillFetch()' method. ` + `The thrown error message was: '${thrownError.message}'.`; - }, - 'invalid-cache-name': ({ - cacheNameId, - value - }) => { - if (!cacheNameId) { - throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`); - } - - return `You must provide a name containing at least one character for ` + `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` + `'${JSON.stringify(value)}'`; - }, - 'unregister-route-but-not-found-with-method': ({ - method - }) => { - if (!method) { - throw new Error(`Unexpected input to ` + `'unregister-route-but-not-found-with-method' error.`); - } - - return `The route you're trying to unregister was not previously ` + `registered for the method type '${method}'.`; - }, - 'unregister-route-route-not-registered': () => { - return `The route you're trying to unregister was not previously ` + `registered.`; - }, - 'queue-replay-failed': ({ - name - }) => { - return `Replaying the background sync queue '${name}' failed.`; - }, - 'duplicate-queue-name': ({ - name - }) => { - return `The Queue name '${name}' is already being used. ` + `All instances of backgroundSync.Queue must be given unique names.`; - }, - 'expired-test-without-max-age': ({ - methodName, - paramName - }) => { - return `The '${methodName}()' method can only be used when the ` + `'${paramName}' is used in the constructor.`; - }, - 'unsupported-route-type': ({ - moduleName, - className, - funcName, - paramName - }) => { - return `The supplied '${paramName}' parameter was an unsupported type. ` + `Please check the docs for ${moduleName}.${className}.${funcName} for ` + `valid input types.`; - }, - 'not-array-of-class': ({ - value, - expectedClass, - moduleName, - className, - funcName, - paramName - }) => { - return `The supplied '${paramName}' parameter must be an array of ` + `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` + `Please check the call to ${moduleName}.${className}.${funcName}() ` + `to fix the issue.`; - }, - 'max-entries-or-age-required': ({ - moduleName, - className, - funcName - }) => { - return `You must define either config.maxEntries or config.maxAgeSeconds` + `in ${moduleName}.${className}.${funcName}`; - }, - 'statuses-or-headers-required': ({ - moduleName, - className, - funcName - }) => { - return `You must define either config.statuses or config.headers` + `in ${moduleName}.${className}.${funcName}`; - }, - 'invalid-string': ({ - moduleName, - funcName, - paramName - }) => { - if (!paramName || !moduleName || !funcName) { - throw new Error(`Unexpected input to 'invalid-string' error.`); - } - - return `When using strings, the '${paramName}' parameter must start with ` + `'http' (for cross-origin matches) or '/' (for same-origin matches). ` + `Please see the docs for ${moduleName}.${funcName}() for ` + `more info.`; - }, - 'channel-name-required': () => { - return `You must provide a channelName to construct a ` + `BroadcastCacheUpdate instance.`; - }, - 'invalid-responses-are-same-args': () => { - return `The arguments passed into responsesAreSame() appear to be ` + `invalid. Please ensure valid Responses are used.`; - }, - 'expire-custom-caches-only': () => { - return `You must provide a 'cacheName' property when using the ` + `expiration plugin with a runtime caching strategy.`; - }, - 'unit-must-be-bytes': ({ - normalizedRangeHeader - }) => { - if (!normalizedRangeHeader) { - throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`); - } - - return `The 'unit' portion of the Range header must be set to 'bytes'. ` + `The Range header provided was "${normalizedRangeHeader}"`; - }, - 'single-range-only': ({ - normalizedRangeHeader - }) => { - if (!normalizedRangeHeader) { - throw new Error(`Unexpected input to 'single-range-only' error.`); - } - - return `Multiple ranges are not supported. Please use a single start ` + `value, and optional end value. The Range header provided was ` + `"${normalizedRangeHeader}"`; - }, - 'invalid-range-values': ({ - normalizedRangeHeader - }) => { - if (!normalizedRangeHeader) { - throw new Error(`Unexpected input to 'invalid-range-values' error.`); - } - - return `The Range header is missing both start and end values. At least ` + `one of those values is needed. The Range header provided was ` + `"${normalizedRangeHeader}"`; - }, - 'no-range-header': () => { - return `No Range header was found in the Request provided.`; - }, - 'range-not-satisfiable': ({ - size, - start, - end - }) => { - return `The start (${start}) and end (${end}) values in the Range are ` + `not satisfiable by the cached response, which is ${size} bytes.`; - }, - 'attempt-to-cache-non-get-request': ({ - url, - method - }) => { - return `Unable to cache '${url}' because it is a '${method}' request and ` + `only 'GET' requests can be cached.`; - }, - 'cache-put-with-no-response': ({ - url - }) => { - return `There was an attempt to cache '${url}' but the response was not ` + `defined.`; - }, - 'no-response': ({ - url, - error - }) => { - let message = `The strategy could not generate a response for '${url}'.`; - - if (error) { - message += ` The underlying error is ${error}.`; - } - - return message; - }, - 'bad-precaching-response': ({ - url, - status - }) => { - return `The precaching request for '${url}' failed with an HTTP ` + `status of ${status}.`; - }, - 'non-precached-url': ({ - url - }) => { - return `createHandlerBoundToURL('${url}') was called, but that URL is ` + `not precached. Please pass in a URL that is precached instead.`; - }, - 'add-to-cache-list-conflicting-integrities': ({ - url - }) => { - return `Two of the entries passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` + `${url} with different integrity values. Please remove one of them.`; - }, - 'missing-precache-entry': ({ - cacheName, - url - }) => { - return `Unable to find a precached response in ${cacheName} for ${url}.`; - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const generatorFunction = (code, details = {}) => { - const message = messages[code]; - - if (!message) { - throw new Error(`Unable to find message for code '${code}'.`); - } - - return message(details); - }; - - const messageGenerator = generatorFunction; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Workbox errors should be thrown with this class. - * This allows use to ensure the type easily in tests, - * helps developers identify errors from workbox - * easily and allows use to optimise error - * messages correctly. - * - * @private - */ - - class WorkboxError extends Error { - /** - * - * @param {string} errorCode The error code that - * identifies this particular error. - * @param {Object=} details Any relevant arguments - * that will help developers identify issues should - * be added as a key on the context object. - */ - constructor(errorCode, details) { - const message = messageGenerator(errorCode, details); - super(message); - this.name = errorCode; - this.details = details; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /* - * This method throws if the supplied value is not an array. - * The destructed values are required to produce a meaningful error for users. - * The destructed and restructured object is so it's clear what is - * needed. - */ - - const isArray = (value, details) => { - if (!Array.isArray(value)) { - throw new WorkboxError('not-an-array', details); - } - }; - - const hasMethod = (object, expectedMethod, details) => { - const type = typeof object[expectedMethod]; - - if (type !== 'function') { - details['expectedMethod'] = expectedMethod; - throw new WorkboxError('missing-a-method', details); - } - }; - - const isType = (object, expectedType, details) => { - if (typeof object !== expectedType) { - details['expectedType'] = expectedType; - throw new WorkboxError('incorrect-type', details); - } - }; - - const isInstance = (object, expectedClass, details) => { - if (!(object instanceof expectedClass)) { - details['expectedClass'] = expectedClass; - throw new WorkboxError('incorrect-class', details); - } - }; - - const isOneOf = (value, validValues, details) => { - if (!validValues.includes(value)) { - details['validValueDescription'] = `Valid values are ${JSON.stringify(validValues)}.`; - throw new WorkboxError('invalid-value', details); - } - }; - - const isArrayOfClass = (value, expectedClass, details) => { - const error = new WorkboxError('not-array-of-class', details); - - if (!Array.isArray(value)) { - throw error; - } - - for (const item of value) { - if (!(item instanceof expectedClass)) { - throw error; - } - } - }; - - const finalAssertExports = { - hasMethod, - isArray, - isInstance, - isOneOf, - isType, - isArrayOfClass - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const quotaErrorCallbacks = new Set(); - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Runs all of the callback functions, one at a time sequentially, in the order - * in which they were registered. - * - * @memberof module:workbox-core - * @private - */ - - async function executeQuotaErrorCallbacks() { - { - logger.log(`About to run ${quotaErrorCallbacks.size} ` + `callbacks to clean up caches.`); - } - - for (const callback of quotaErrorCallbacks) { - await callback(); - - { - logger.log(callback, 'is complete.'); - } - } - - { - logger.log('Finished running callbacks.'); - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const pluginUtils = { - filter: (plugins, callbackName) => { - return plugins.filter(plugin => callbackName in plugin); - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Checks the list of plugins for the cacheKeyWillBeUsed callback, and - * executes any of those callbacks found in sequence. The final `Request` object - * returned by the last plugin is treated as the cache key for cache reads - * and/or writes. - * - * @param {Object} options - * @param {Request} options.request - * @param {string} options.mode - * @param {Array} [options.plugins=[]] - * @return {Promise} - * - * @private - * @memberof module:workbox-core - */ - - const _getEffectiveRequest = async ({ - request, - mode, - plugins = [] - }) => { - const cacheKeyWillBeUsedPlugins = pluginUtils.filter(plugins, "cacheKeyWillBeUsed" - /* CACHE_KEY_WILL_BE_USED */ - ); - let effectiveRequest = request; - - for (const plugin of cacheKeyWillBeUsedPlugins) { - effectiveRequest = await plugin["cacheKeyWillBeUsed" - /* CACHE_KEY_WILL_BE_USED */ - ].call(plugin, { - mode, - request: effectiveRequest - }); - - if (typeof effectiveRequest === 'string') { - effectiveRequest = new Request(effectiveRequest); - } - - { - finalAssertExports.isInstance(effectiveRequest, Request, { - moduleName: 'Plugin', - funcName: "cacheKeyWillBeUsed" - /* CACHE_KEY_WILL_BE_USED */ - , - isReturnValueProblem: true - }); - } - } - - return effectiveRequest; - }; - /** - * This method will call cacheWillUpdate on the available plugins (or use - * status === 200) to determine if the Response is safe and valid to cache. - * - * @param {Object} options - * @param {Request} options.request - * @param {Response} options.response - * @param {Event} [options.event] - * @param {Array} [options.plugins=[]] - * @return {Promise} - * - * @private - * @memberof module:workbox-core - */ - - - const _isResponseSafeToCache = async ({ - request, - response, - event, - plugins = [] - }) => { - let responseToCache = response; - let pluginsUsed = false; - - for (const plugin of plugins) { - if ("cacheWillUpdate" - /* CACHE_WILL_UPDATE */ - in plugin) { - pluginsUsed = true; - const pluginMethod = plugin["cacheWillUpdate" - /* CACHE_WILL_UPDATE */ - ]; - responseToCache = await pluginMethod.call(plugin, { - request, - response: responseToCache, - event - }); - - { - if (responseToCache) { - finalAssertExports.isInstance(responseToCache, Response, { - moduleName: 'Plugin', - funcName: "cacheWillUpdate" - /* CACHE_WILL_UPDATE */ - , - isReturnValueProblem: true - }); - } - } - - if (!responseToCache) { - break; - } - } - } - - if (!pluginsUsed) { - { - if (responseToCache) { - if (responseToCache.status !== 200) { - if (responseToCache.status === 0) { - logger.warn(`The response for '${request.url}' is an opaque ` + `response. The caching strategy that you're using will not ` + `cache opaque responses by default.`); - } else { - logger.debug(`The response for '${request.url}' returned ` + `a status code of '${response.status}' and won't be cached as a ` + `result.`); - } - } - } - } - - responseToCache = responseToCache && responseToCache.status === 200 ? responseToCache : undefined; - } - - return responseToCache ? responseToCache : null; - }; - /** - * This is a wrapper around cache.match(). - * - * @param {Object} options - * @param {string} options.cacheName Name of the cache to match against. - * @param {Request} options.request The Request that will be used to look up - * cache entries. - * @param {Event} [options.event] The event that prompted the action. - * @param {Object} [options.matchOptions] Options passed to cache.match(). - * @param {Array} [options.plugins=[]] Array of plugins. - * @return {Response} A cached response if available. - * - * @private - * @memberof module:workbox-core - */ - - - const matchWrapper = async ({ - cacheName, - request, - event, - matchOptions, - plugins = [] - }) => { - const cache = await self.caches.open(cacheName); - const effectiveRequest = await _getEffectiveRequest({ - plugins, - request, - mode: 'read' - }); - let cachedResponse = await cache.match(effectiveRequest, matchOptions); - - { - if (cachedResponse) { - logger.debug(`Found a cached response in '${cacheName}'.`); - } else { - logger.debug(`No cached response found in '${cacheName}'.`); - } - } - - for (const plugin of plugins) { - if ("cachedResponseWillBeUsed" - /* CACHED_RESPONSE_WILL_BE_USED */ - in plugin) { - const pluginMethod = plugin["cachedResponseWillBeUsed" - /* CACHED_RESPONSE_WILL_BE_USED */ - ]; - cachedResponse = await pluginMethod.call(plugin, { - cacheName, - event, - matchOptions, - cachedResponse, - request: effectiveRequest - }); - - { - if (cachedResponse) { - finalAssertExports.isInstance(cachedResponse, Response, { - moduleName: 'Plugin', - funcName: "cachedResponseWillBeUsed" - /* CACHED_RESPONSE_WILL_BE_USED */ - , - isReturnValueProblem: true - }); - } - } - } - } - - return cachedResponse; - }; - /** - * Wrapper around cache.put(). - * - * Will call `cacheDidUpdate` on plugins if the cache was updated, using - * `matchOptions` when determining what the old entry is. - * - * @param {Object} options - * @param {string} options.cacheName - * @param {Request} options.request - * @param {Response} options.response - * @param {Event} [options.event] - * @param {Array} [options.plugins=[]] - * @param {Object} [options.matchOptions] - * - * @private - * @memberof module:workbox-core - */ - - - const putWrapper = async ({ - cacheName, - request, - response, - event, - plugins = [], - matchOptions - }) => { - { - if (request.method && request.method !== 'GET') { - throw new WorkboxError('attempt-to-cache-non-get-request', { - url: getFriendlyURL(request.url), - method: request.method - }); - } - } - - const effectiveRequest = await _getEffectiveRequest({ - plugins, - request, - mode: 'write' - }); - - if (!response) { - { - logger.error(`Cannot cache non-existent response for ` + `'${getFriendlyURL(effectiveRequest.url)}'.`); - } - - throw new WorkboxError('cache-put-with-no-response', { - url: getFriendlyURL(effectiveRequest.url) - }); - } - - const responseToCache = await _isResponseSafeToCache({ - event, - plugins, - response, - request: effectiveRequest - }); - - if (!responseToCache) { - { - logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' will ` + `not be cached.`, responseToCache); - } - - return; - } - - const cache = await self.caches.open(cacheName); - const updatePlugins = pluginUtils.filter(plugins, "cacheDidUpdate" - /* CACHE_DID_UPDATE */ - ); - const oldResponse = updatePlugins.length > 0 ? await matchWrapper({ - cacheName, - matchOptions, - request: effectiveRequest - }) : null; - - { - logger.debug(`Updating the '${cacheName}' cache with a new Response for ` + `${getFriendlyURL(effectiveRequest.url)}.`); - } - - try { - await cache.put(effectiveRequest, responseToCache); - } catch (error) { - // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError - if (error.name === 'QuotaExceededError') { - await executeQuotaErrorCallbacks(); - } - - throw error; - } - - for (const plugin of updatePlugins) { - await plugin["cacheDidUpdate" - /* CACHE_DID_UPDATE */ - ].call(plugin, { - cacheName, - event, - oldResponse, - newResponse: responseToCache, - request: effectiveRequest - }); - } - }; - - const cacheWrapper = { - put: putWrapper, - match: matchWrapper - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Wrapper around the fetch API. - * - * Will call requestWillFetch on available plugins. - * - * @param {Object} options - * @param {Request|string} options.request - * @param {Object} [options.fetchOptions] - * @param {ExtendableEvent} [options.event] - * @param {Array} [options.plugins=[]] - * @return {Promise} - * - * @private - * @memberof module:workbox-core - */ - - const wrappedFetch = async ({ - request, - fetchOptions, - event, - plugins = [] - }) => { - if (typeof request === 'string') { - request = new Request(request); - } // We *should* be able to call `await event.preloadResponse` even if it's - // undefined, but for some reason, doing so leads to errors in our Node unit - // tests. To work around that, explicitly check preloadResponse's value first. - - - if (event instanceof FetchEvent && event.preloadResponse) { - const possiblePreloadResponse = await event.preloadResponse; - - if (possiblePreloadResponse) { - { - logger.log(`Using a preloaded navigation response for ` + `'${getFriendlyURL(request.url)}'`); - } - - return possiblePreloadResponse; - } - } - - { - finalAssertExports.isInstance(request, Request, { - paramName: 'request', - expectedClass: Request, - moduleName: 'workbox-core', - className: 'fetchWrapper', - funcName: 'wrappedFetch' - }); - } - - const failedFetchPlugins = pluginUtils.filter(plugins, "fetchDidFail" - /* FETCH_DID_FAIL */ - ); // If there is a fetchDidFail plugin, we need to save a clone of the - // original request before it's either modified by a requestWillFetch - // plugin or before the original request's body is consumed via fetch(). - - const originalRequest = failedFetchPlugins.length > 0 ? request.clone() : null; - - try { - for (const plugin of plugins) { - if ("requestWillFetch" - /* REQUEST_WILL_FETCH */ - in plugin) { - const pluginMethod = plugin["requestWillFetch" - /* REQUEST_WILL_FETCH */ - ]; - const requestClone = request.clone(); - request = await pluginMethod.call(plugin, { - request: requestClone, - event - }); - - if ("development" !== 'production') { - if (request) { - finalAssertExports.isInstance(request, Request, { - moduleName: 'Plugin', - funcName: "cachedResponseWillBeUsed" - /* CACHED_RESPONSE_WILL_BE_USED */ - , - isReturnValueProblem: true - }); - } - } - } - } - } catch (err) { - throw new WorkboxError('plugin-error-request-will-fetch', { - thrownError: err - }); - } // The request can be altered by plugins with `requestWillFetch` making - // the original request (Most likely from a `fetch` event) to be different - // to the Request we make. Pass both to `fetchDidFail` to aid debugging. - - - const pluginFilteredRequest = request.clone(); - - try { - let fetchResponse; // See https://github.com/GoogleChrome/workbox/issues/1796 - - if (request.mode === 'navigate') { - fetchResponse = await fetch(request); - } else { - fetchResponse = await fetch(request, fetchOptions); - } - - if ("development" !== 'production') { - logger.debug(`Network request for ` + `'${getFriendlyURL(request.url)}' returned a response with ` + `status '${fetchResponse.status}'.`); - } - - for (const plugin of plugins) { - if ("fetchDidSucceed" - /* FETCH_DID_SUCCEED */ - in plugin) { - fetchResponse = await plugin["fetchDidSucceed" - /* FETCH_DID_SUCCEED */ - ].call(plugin, { - event, - request: pluginFilteredRequest, - response: fetchResponse - }); - - if ("development" !== 'production') { - if (fetchResponse) { - finalAssertExports.isInstance(fetchResponse, Response, { - moduleName: 'Plugin', - funcName: "fetchDidSucceed" - /* FETCH_DID_SUCCEED */ - , - isReturnValueProblem: true - }); - } - } - } - } - - return fetchResponse; - } catch (error) { - { - logger.error(`Network request for ` + `'${getFriendlyURL(request.url)}' threw an error.`, error); - } - - for (const plugin of failedFetchPlugins) { - await plugin["fetchDidFail" - /* FETCH_DID_FAIL */ - ].call(plugin, { - error, - event, - originalRequest: originalRequest.clone(), - request: pluginFilteredRequest.clone() - }); - } - - throw error; - } - }; - - const fetchWrapper = { - fetch: wrappedFetch - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - let supportStatus; - /** - * A utility function that determines whether the current browser supports - * constructing a new `Response` from a `response.body` stream. - * - * @return {boolean} `true`, if the current browser can successfully - * construct a `Response` from a `response.body` stream, `false` otherwise. - * - * @private - */ - - function canConstructResponseFromBodyStream() { - if (supportStatus === undefined) { - const testResponse = new Response(''); - - if ('body' in testResponse) { - try { - new Response(testResponse.body); - supportStatus = true; - } catch (error) { - supportStatus = false; - } - } - - supportStatus = false; - } - - return supportStatus; - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Allows developers to copy a response and modify its `headers`, `status`, - * or `statusText` values (the values settable via a - * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax} - * object in the constructor). - * To modify these values, pass a function as the second argument. That - * function will be invoked with a single object with the response properties - * `{headers, status, statusText}`. The return value of this function will - * be used as the `ResponseInit` for the new `Response`. To change the values - * either modify the passed parameter(s) and return it, or return a totally - * new object. - * - * @param {Response} response - * @param {Function} modifier - * @memberof module:workbox-core - */ - - async function copyResponse(response, modifier) { - const clonedResponse = response.clone(); // Create a fresh `ResponseInit` object by cloning the headers. - - const responseInit = { - headers: new Headers(clonedResponse.headers), - status: clonedResponse.status, - statusText: clonedResponse.statusText - }; // Apply any user modifications. - - const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit; // Create the new response from the body stream and `ResponseInit` - // modifications. Note: not all browsers support the Response.body stream, - // so fall back to reading the entire body into memory as a blob. - - const body = canConstructResponseFromBodyStream() ? clonedResponse.body : await clonedResponse.blob(); - return new Response(body, modifiedResponseInit); - } - - try { - self['workbox:precaching:5.1.4'] && _(); - } catch (e) {} - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const REVISION_SEARCH_PARAM = '__WB_REVISION__'; - /** - * Converts a manifest entry into a versioned URL suitable for precaching. - * - * @param {Object|string} entry - * @return {string} A URL with versioning info. - * - * @private - * @memberof module:workbox-precaching - */ - - function createCacheKey(entry) { - if (!entry) { - throw new WorkboxError('add-to-cache-list-unexpected-type', { - entry - }); - } // If a precache manifest entry is a string, it's assumed to be a versioned - // URL, like '/app.abcd1234.js'. Return as-is. - - - if (typeof entry === 'string') { - const urlObject = new URL(entry, location.href); - return { - cacheKey: urlObject.href, - url: urlObject.href - }; - } - - const { - revision, - url - } = entry; - - if (!url) { - throw new WorkboxError('add-to-cache-list-unexpected-type', { - entry - }); - } // If there's just a URL and no revision, then it's also assumed to be a - // versioned URL. - - - if (!revision) { - const urlObject = new URL(url, location.href); - return { - cacheKey: urlObject.href, - url: urlObject.href - }; - } // Otherwise, construct a properly versioned URL using the custom Workbox - // search parameter along with the revision info. - - - const cacheKeyURL = new URL(url, location.href); - const originalURL = new URL(url, location.href); - cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision); - return { - cacheKey: cacheKeyURL.href, - url: originalURL.href - }; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @param {string} groupTitle - * @param {Array} deletedURLs - * - * @private - */ - - const logGroup = (groupTitle, deletedURLs) => { - logger.groupCollapsed(groupTitle); - - for (const url of deletedURLs) { - logger.log(url); - } - - logger.groupEnd(); - }; - /** - * @param {Array} deletedURLs - * - * @private - * @memberof module:workbox-precaching - */ - - - function printCleanupDetails(deletedURLs) { - const deletionCount = deletedURLs.length; - - if (deletionCount > 0) { - logger.groupCollapsed(`During precaching cleanup, ` + `${deletionCount} cached ` + `request${deletionCount === 1 ? ' was' : 's were'} deleted.`); - logGroup('Deleted Cache Requests', deletedURLs); - logger.groupEnd(); - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @param {string} groupTitle - * @param {Array} urls - * - * @private - */ - - function _nestedGroup(groupTitle, urls) { - if (urls.length === 0) { - return; - } - - logger.groupCollapsed(groupTitle); - - for (const url of urls) { - logger.log(url); - } - - logger.groupEnd(); - } - /** - * @param {Array} urlsToPrecache - * @param {Array} urlsAlreadyPrecached - * - * @private - * @memberof module:workbox-precaching - */ - - - function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) { - const precachedCount = urlsToPrecache.length; - const alreadyPrecachedCount = urlsAlreadyPrecached.length; - - if (precachedCount || alreadyPrecachedCount) { - let message = `Precaching ${precachedCount} file${precachedCount === 1 ? '' : 's'}.`; - - if (alreadyPrecachedCount > 0) { - message += ` ${alreadyPrecachedCount} ` + `file${alreadyPrecachedCount === 1 ? ' is' : 's are'} already cached.`; - } - - logger.groupCollapsed(message); - - _nestedGroup(`View newly precached URLs.`, urlsToPrecache); - - _nestedGroup(`View previously precached URLs.`, urlsAlreadyPrecached); - - logger.groupEnd(); - } - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Performs efficient precaching of assets. - * - * @memberof module:workbox-precaching - */ - - class PrecacheController { - /** - * Create a new PrecacheController. - * - * @param {string} [cacheName] An optional name for the cache, to override - * the default precache name. - */ - constructor(cacheName) { - this._cacheName = cacheNames.getPrecacheName(cacheName); - this._urlsToCacheKeys = new Map(); - this._urlsToCacheModes = new Map(); - this._cacheKeysToIntegrities = new Map(); - } - /** - * This method will add items to the precache list, removing duplicates - * and ensuring the information is valid. - * - * @param { - * Array - * } entries Array of entries to precache. - */ - - - addToCacheList(entries) { - { - finalAssertExports.isArray(entries, { - moduleName: 'workbox-precaching', - className: 'PrecacheController', - funcName: 'addToCacheList', - paramName: 'entries' - }); - } - - const urlsToWarnAbout = []; - - for (const entry of entries) { - // See https://github.com/GoogleChrome/workbox/issues/2259 - if (typeof entry === 'string') { - urlsToWarnAbout.push(entry); - } else if (entry && entry.revision === undefined) { - urlsToWarnAbout.push(entry.url); - } - - const { - cacheKey, - url - } = createCacheKey(entry); - const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default'; - - if (this._urlsToCacheKeys.has(url) && this._urlsToCacheKeys.get(url) !== cacheKey) { - throw new WorkboxError('add-to-cache-list-conflicting-entries', { - firstEntry: this._urlsToCacheKeys.get(url), - secondEntry: cacheKey - }); - } - - if (typeof entry !== 'string' && entry.integrity) { - if (this._cacheKeysToIntegrities.has(cacheKey) && this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) { - throw new WorkboxError('add-to-cache-list-conflicting-integrities', { - url - }); - } - - this._cacheKeysToIntegrities.set(cacheKey, entry.integrity); - } - - this._urlsToCacheKeys.set(url, cacheKey); - - this._urlsToCacheModes.set(url, cacheMode); - - if (urlsToWarnAbout.length > 0) { - const warningMessage = `Workbox is precaching URLs without revision ` + `info: ${urlsToWarnAbout.join(', ')}\nThis is generally NOT safe. ` + `Learn more at https://bit.ly/wb-precache`; - - { - logger.warn(warningMessage); - } - } - } - } - /** - * Precaches new and updated assets. Call this method from the service worker - * install event. - * - * @param {Object} options - * @param {Event} [options.event] The install event (if needed). - * @param {Array} [options.plugins] Plugins to be used for fetching - * and caching during install. - * @return {Promise} - */ - - - async install({ - event, - plugins - } = {}) { - { - if (plugins) { - finalAssertExports.isArray(plugins, { - moduleName: 'workbox-precaching', - className: 'PrecacheController', - funcName: 'install', - paramName: 'plugins' - }); - } - } - - const toBePrecached = []; - const alreadyPrecached = []; - const cache = await self.caches.open(this._cacheName); - const alreadyCachedRequests = await cache.keys(); - const existingCacheKeys = new Set(alreadyCachedRequests.map(request => request.url)); - - for (const [url, cacheKey] of this._urlsToCacheKeys) { - if (existingCacheKeys.has(cacheKey)) { - alreadyPrecached.push(url); - } else { - toBePrecached.push({ - cacheKey, - url - }); - } - } - - const precacheRequests = toBePrecached.map(({ - cacheKey, - url - }) => { - const integrity = this._cacheKeysToIntegrities.get(cacheKey); - - const cacheMode = this._urlsToCacheModes.get(url); - - return this._addURLToCache({ - cacheKey, - cacheMode, - event, - integrity, - plugins, - url - }); - }); - await Promise.all(precacheRequests); - const updatedURLs = toBePrecached.map(item => item.url); - - { - printInstallDetails(updatedURLs, alreadyPrecached); - } - - return { - updatedURLs, - notUpdatedURLs: alreadyPrecached - }; - } - /** - * Deletes assets that are no longer present in the current precache manifest. - * Call this method from the service worker activate event. - * - * @return {Promise} - */ - - - async activate() { - const cache = await self.caches.open(this._cacheName); - const currentlyCachedRequests = await cache.keys(); - const expectedCacheKeys = new Set(this._urlsToCacheKeys.values()); - const deletedURLs = []; - - for (const request of currentlyCachedRequests) { - if (!expectedCacheKeys.has(request.url)) { - await cache.delete(request); - deletedURLs.push(request.url); - } - } - - { - printCleanupDetails(deletedURLs); - } - - return { - deletedURLs - }; - } - /** - * Requests the entry and saves it to the cache if the response is valid. - * By default, any response with a status code of less than 400 (including - * opaque responses) is considered valid. - * - * If you need to use custom criteria to determine what's valid and what - * isn't, then pass in an item in `options.plugins` that implements the - * `cacheWillUpdate()` lifecycle event. - * - * @private - * @param {Object} options - * @param {string} options.cacheKey The string to use a cache key. - * @param {string} options.url The URL to fetch and cache. - * @param {string} [options.cacheMode] The cache mode for the network request. - * @param {Event} [options.event] The install event (if passed). - * @param {Array} [options.plugins] An array of plugins to apply to - * fetch and caching. - * @param {string} [options.integrity] The value to use for the `integrity` - * field when making the request. - */ - - - async _addURLToCache({ - cacheKey, - url, - cacheMode, - event, - plugins, - integrity - }) { - const request = new Request(url, { - integrity, - cache: cacheMode, - credentials: 'same-origin' - }); - let response = await fetchWrapper.fetch({ - event, - plugins, - request - }); // Allow developers to override the default logic about what is and isn't - // valid by passing in a plugin implementing cacheWillUpdate(), e.g. - // a `CacheableResponsePlugin` instance. - - let cacheWillUpdatePlugin; - - for (const plugin of plugins || []) { - if ('cacheWillUpdate' in plugin) { - cacheWillUpdatePlugin = plugin; - } - } - - const isValidResponse = cacheWillUpdatePlugin ? // Use a callback if provided. It returns a truthy value if valid. - // NOTE: invoke the method on the plugin instance so the `this` context - // is correct. - await cacheWillUpdatePlugin.cacheWillUpdate({ - event, - request, - response - }) : // Otherwise, default to considering any response status under 400 valid. - // This includes, by default, considering opaque responses valid. - response.status < 400; // Consider this a failure, leading to the `install` handler failing, if - // we get back an invalid response. - - if (!isValidResponse) { - throw new WorkboxError('bad-precaching-response', { - url, - status: response.status - }); - } // Redirected responses cannot be used to satisfy a navigation request, so - // any redirected response must be "copied" rather than cloned, so the new - // response doesn't contain the `redirected` flag. See: - // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1 - - - if (response.redirected) { - response = await copyResponse(response); - } - - await cacheWrapper.put({ - event, - plugins, - response, - // `request` already uses `url`. We may be able to reuse it. - request: cacheKey === url ? request : new Request(cacheKey), - cacheName: this._cacheName, - matchOptions: { - ignoreSearch: true - } - }); - } - /** - * Returns a mapping of a precached URL to the corresponding cache key, taking - * into account the revision information for the URL. - * - * @return {Map} A URL to cache key mapping. - */ - - - getURLsToCacheKeys() { - return this._urlsToCacheKeys; - } - /** - * Returns a list of all the URLs that have been precached by the current - * service worker. - * - * @return {Array} The precached URLs. - */ - - - getCachedURLs() { - return [...this._urlsToCacheKeys.keys()]; - } - /** - * Returns the cache key used for storing a given URL. If that URL is - * unversioned, like `/index.html', then the cache key will be the original - * URL with a search parameter appended to it. - * - * @param {string} url A URL whose cache key you want to look up. - * @return {string} The versioned URL that corresponds to a cache key - * for the original URL, or undefined if that URL isn't precached. - */ - - - getCacheKeyForURL(url) { - const urlObject = new URL(url, location.href); - return this._urlsToCacheKeys.get(urlObject.href); - } - /** - * This acts as a drop-in replacement for [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match) - * with the following differences: - * - * - It knows what the name of the precache is, and only checks in that cache. - * - It allows you to pass in an "original" URL without versioning parameters, - * and it will automatically look up the correct cache key for the currently - * active revision of that URL. - * - * E.g., `matchPrecache('index.html')` will find the correct precached - * response for the currently active service worker, even if the actual cache - * key is `'/index.html?__WB_REVISION__=1234abcd'`. - * - * @param {string|Request} request The key (without revisioning parameters) - * to look up in the precache. - * @return {Promise} - */ - - - async matchPrecache(request) { - const url = request instanceof Request ? request.url : request; - const cacheKey = this.getCacheKeyForURL(url); - - if (cacheKey) { - const cache = await self.caches.open(this._cacheName); - return cache.match(cacheKey); - } - - return undefined; - } - /** - * Returns a function that can be used within a - * {@link module:workbox-routing.Route} that will find a response for the - * incoming request against the precache. - * - * If for an unexpected reason there is a cache miss for the request, - * this will fall back to retrieving the `Response` via `fetch()` when - * `fallbackToNetwork` is `true`. - * - * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the - * response from the network if there's a precache miss. - * @return {module:workbox-routing~handlerCallback} - */ - - - createHandler(fallbackToNetwork = true) { - return async ({ - request - }) => { - try { - const response = await this.matchPrecache(request); - - if (response) { - return response; - } // This shouldn't normally happen, but there are edge cases: - // https://github.com/GoogleChrome/workbox/issues/1441 - - - throw new WorkboxError('missing-precache-entry', { - cacheName: this._cacheName, - url: request instanceof Request ? request.url : request - }); - } catch (error) { - if (fallbackToNetwork) { - { - logger.debug(`Unable to respond with precached response. ` + `Falling back to network.`, error); - } - - return fetch(request); - } - - throw error; - } - }; - } - /** - * Returns a function that looks up `url` in the precache (taking into - * account revision information), and returns the corresponding `Response`. - * - * If for an unexpected reason there is a cache miss when looking up `url`, - * this will fall back to retrieving the `Response` via `fetch()` when - * `fallbackToNetwork` is `true`. - * - * @param {string} url The precached URL which will be used to lookup the - * `Response`. - * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the - * response from the network if there's a precache miss. - * @return {module:workbox-routing~handlerCallback} - */ - - - createHandlerBoundToURL(url, fallbackToNetwork = true) { - const cacheKey = this.getCacheKeyForURL(url); - - if (!cacheKey) { - throw new WorkboxError('non-precached-url', { - url - }); - } - - const handler = this.createHandler(fallbackToNetwork); - const request = new Request(url); - return () => handler({ - request - }); - } - - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - let precacheController; - /** - * @return {PrecacheController} - * @private - */ - - const getOrCreatePrecacheController = () => { - if (!precacheController) { - precacheController = new PrecacheController(); - } - - return precacheController; - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Removes any URL search parameters that should be ignored. - * - * @param {URL} urlObject The original URL. - * @param {Array} ignoreURLParametersMatching RegExps to test against - * each search parameter name. Matches mean that the search parameter should be - * ignored. - * @return {URL} The URL with any ignored search parameters removed. - * - * @private - * @memberof module:workbox-precaching - */ - - function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) { - // Convert the iterable into an array at the start of the loop to make sure - // deletion doesn't mess up iteration. - for (const paramName of [...urlObject.searchParams.keys()]) { - if (ignoreURLParametersMatching.some(regExp => regExp.test(paramName))) { - urlObject.searchParams.delete(paramName); - } - } - - return urlObject; - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Generator function that yields possible variations on the original URL to - * check, one at a time. - * - * @param {string} url - * @param {Object} options - * - * @private - * @memberof module:workbox-precaching - */ - - function* generateURLVariations(url, { - ignoreURLParametersMatching, - directoryIndex, - cleanURLs, - urlManipulation - } = {}) { - const urlObject = new URL(url, location.href); - urlObject.hash = ''; - yield urlObject.href; - const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching); - yield urlWithoutIgnoredParams.href; - - if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) { - const directoryURL = new URL(urlWithoutIgnoredParams.href); - directoryURL.pathname += directoryIndex; - yield directoryURL.href; - } - - if (cleanURLs) { - const cleanURL = new URL(urlWithoutIgnoredParams.href); - cleanURL.pathname += '.html'; - yield cleanURL.href; - } - - if (urlManipulation) { - const additionalURLs = urlManipulation({ - url: urlObject - }); - - for (const urlToAttempt of additionalURLs) { - yield urlToAttempt.href; - } - } - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This function will take the request URL and manipulate it based on the - * configuration options. - * - * @param {string} url - * @param {Object} options - * @return {string} Returns the URL in the cache that matches the request, - * if possible. - * - * @private - */ - - const getCacheKeyForURL = (url, options) => { - const precacheController = getOrCreatePrecacheController(); - const urlsToCacheKeys = precacheController.getURLsToCacheKeys(); - - for (const possibleURL of generateURLVariations(url, options)) { - const possibleCacheKey = urlsToCacheKeys.get(possibleURL); - - if (possibleCacheKey) { - return possibleCacheKey; - } - } - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Adds a `fetch` listener to the service worker that will - * respond to - * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests} - * with precached assets. - * - * Requests for assets that aren't precached, the `FetchEvent` will not be - * responded to, allowing the event to fall through to other `fetch` event - * listeners. - * - * NOTE: when called more than once this method will replace the previously set - * configuration options. Calling it more than once is not recommended outside - * of tests. - * - * @private - * @param {Object} [options] - * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will - * check cache entries for a URLs ending with '/' to see if there is a hit when - * appending the `directoryIndex` value. - * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An - * array of regex's to remove search params when looking for a cache match. - * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will - * check the cache for the URL with a `.html` added to the end of the end. - * @param {workbox.precaching~urlManipulation} [options.urlManipulation] - * This is a function that should take a URL and return an array of - * alternative URLs that should be checked for precache matches. - */ - - const addFetchListener = ({ - ignoreURLParametersMatching = [/^utm_/], - directoryIndex = 'index.html', - cleanURLs = true, - urlManipulation - } = {}) => { - const cacheName = cacheNames.getPrecacheName(); // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705 - - self.addEventListener('fetch', event => { - const precachedURL = getCacheKeyForURL(event.request.url, { - cleanURLs, - directoryIndex, - ignoreURLParametersMatching, - urlManipulation - }); - - if (!precachedURL) { - { - logger.debug(`Precaching did not find a match for ` + getFriendlyURL(event.request.url)); - } - - return; - } - - let responsePromise = self.caches.open(cacheName).then(cache => { - return cache.match(precachedURL); - }).then(cachedResponse => { - if (cachedResponse) { - return cachedResponse; - } // Fall back to the network if we don't have a cached response - // (perhaps due to manual cache cleanup). - - - { - logger.warn(`The precached response for ` + `${getFriendlyURL(precachedURL)} in ${cacheName} was not found. ` + `Falling back to the network instead.`); - } - - return fetch(precachedURL); - }); - - { - responsePromise = responsePromise.then(response => { - // Workbox is going to handle the route. - // print the routing details to the console. - logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(event.request.url)); - logger.log(`Serving the precached url: ${precachedURL}`); - logger.groupCollapsed(`View request details here.`); - logger.log(event.request); - logger.groupEnd(); - logger.groupCollapsed(`View response details here.`); - logger.log(response); - logger.groupEnd(); - logger.groupEnd(); - return response; - }); - } - - event.respondWith(responsePromise); - }); - }; - - /* - Copyright 2019 Google LLC - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - let listenerAdded = false; - /** - * Add a `fetch` listener to the service worker that will - * respond to - * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests} - * with precached assets. - * - * Requests for assets that aren't precached, the `FetchEvent` will not be - * responded to, allowing the event to fall through to other `fetch` event - * listeners. - * - * @param {Object} [options] - * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will - * check cache entries for a URLs ending with '/' to see if there is a hit when - * appending the `directoryIndex` value. - * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An - * array of regex's to remove search params when looking for a cache match. - * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will - * check the cache for the URL with a `.html` added to the end of the end. - * @param {module:workbox-precaching~urlManipulation} [options.urlManipulation] - * This is a function that should take a URL and return an array of - * alternative URLs that should be checked for precache matches. - * - * @memberof module:workbox-precaching - */ - - function addRoute(options) { - if (!listenerAdded) { - addFetchListener(options); - listenerAdded = true; - } - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const plugins = []; - const precachePlugins = { - /* - * @return {Array} - * @private - */ - get() { - return plugins; - }, - - /* - * @param {Array} newPlugins - * @private - */ - add(newPlugins) { - plugins.push(...newPlugins); - } - - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const installListener = event => { - const precacheController = getOrCreatePrecacheController(); - const plugins = precachePlugins.get(); - event.waitUntil(precacheController.install({ - event, - plugins - }).catch(error => { - { - logger.error(`Service worker installation failed. It will ` + `be retried automatically during the next navigation.`); - } // Re-throw the error to ensure installation fails. - - - throw error; - })); - }; - - const activateListener = event => { - const precacheController = getOrCreatePrecacheController(); - event.waitUntil(precacheController.activate()); - }; - /** - * Adds items to the precache list, removing any duplicates and - * stores the files in the - * ["precache cache"]{@link module:workbox-core.cacheNames} when the service - * worker installs. - * - * This method can be called multiple times. - * - * Please note: This method **will not** serve any of the cached files for you. - * It only precaches files. To respond to a network request you call - * [addRoute()]{@link module:workbox-precaching.addRoute}. - * - * If you have a single array of files to precache, you can just call - * [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}. - * - * @param {Array} [entries=[]] Array of entries to precache. - * - * @memberof module:workbox-precaching - */ - - - function precache(entries) { - const precacheController = getOrCreatePrecacheController(); - precacheController.addToCacheList(entries); - - if (entries.length > 0) { - // NOTE: these listeners will only be added once (even if the `precache()` - // method is called multiple times) because event listeners are implemented - // as a set, where each listener must be unique. - // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705 - self.addEventListener('install', installListener); - self.addEventListener('activate', activateListener); - } - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This method will add entries to the precache list and add a route to - * respond to fetch events. - * - * This is a convenience method that will call - * [precache()]{@link module:workbox-precaching.precache} and - * [addRoute()]{@link module:workbox-precaching.addRoute} in a single call. - * - * @param {Array} entries Array of entries to precache. - * @param {Object} [options] See - * [addRoute() options]{@link module:workbox-precaching.addRoute}. - * - * @memberof module:workbox-precaching - */ - - function precacheAndRoute(entries, options) { - precache(entries); - addRoute(options); - } - - exports.precacheAndRoute = precacheAndRoute; - -}); -//# sourceMappingURL=workbox-3b8b670f.js.map diff --git a/src/server/public/workbox-3b8b670f.js.map b/src/server/public/workbox-3b8b670f.js.map deleted file mode 100644 index bc29757..0000000 --- a/src/server/public/workbox-3b8b670f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-3b8b670f.js","sources":["node_modules/workbox-core/_version.js","node_modules/workbox-core/_private/cacheNames.js","node_modules/workbox-core/_private/getFriendlyURL.js","node_modules/workbox-core/_private/logger.js","node_modules/workbox-core/models/messages/messages.js","node_modules/workbox-core/models/messages/messageGenerator.js","node_modules/workbox-core/_private/WorkboxError.js","node_modules/workbox-core/_private/assert.js","node_modules/workbox-core/models/quotaErrorCallbacks.js","node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","node_modules/workbox-core/utils/pluginUtils.js","node_modules/workbox-core/_private/cacheWrapper.js","node_modules/workbox-core/_private/fetchWrapper.js","node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","node_modules/workbox-core/copyResponse.js","node_modules/workbox-precaching/_version.js","node_modules/workbox-precaching/utils/createCacheKey.js","node_modules/workbox-precaching/utils/printCleanupDetails.js","node_modules/workbox-precaching/utils/printInstallDetails.js","node_modules/workbox-precaching/PrecacheController.js","node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","node_modules/workbox-precaching/utils/generateURLVariations.js","node_modules/workbox-precaching/utils/getCacheKeyForURL.js","node_modules/workbox-precaching/utils/addFetchListener.js","node_modules/workbox-precaching/addRoute.js","node_modules/workbox-precaching/utils/precachePlugins.js","node_modules/workbox-precaching/precache.js","node_modules/workbox-precaching/precacheAndRoute.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:5.1.4'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production' ? null : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in self)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null,\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n})());\nexport { logger };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../../_version.js';\nexport const messages = {\n 'invalid-value': ({ paramName, validValueDescription, value }) => {\n if (!paramName || !validValueDescription) {\n throw new Error(`Unexpected input to 'invalid-value' error.`);\n }\n return `The '${paramName}' parameter was given a value with an ` +\n `unexpected value. ${validValueDescription} Received a value of ` +\n `${JSON.stringify(value)}.`;\n },\n 'not-an-array': ({ moduleName, className, funcName, paramName }) => {\n if (!moduleName || !className || !funcName || !paramName) {\n throw new Error(`Unexpected input to 'not-an-array' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className}.${funcName}()' must be an array.`;\n },\n 'incorrect-type': ({ expectedType, paramName, moduleName, className, funcName }) => {\n if (!expectedType || !paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-type' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}` +\n `${funcName}()' must be of type ${expectedType}.`;\n },\n 'incorrect-class': ({ expectedClass, paramName, moduleName, className, funcName, isReturnValueProblem }) => {\n if (!expectedClass || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-class' error.`);\n }\n if (isReturnValueProblem) {\n return `The return value from ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n },\n 'missing-a-method': ({ expectedMethod, paramName, moduleName, className, funcName }) => {\n if (!expectedMethod || !paramName || !moduleName || !className\n || !funcName) {\n throw new Error(`Unexpected input to 'missing-a-method' error.`);\n }\n return `${moduleName}.${className}.${funcName}() expected the ` +\n `'${paramName}' parameter to expose a '${expectedMethod}' method.`;\n },\n 'add-to-cache-list-unexpected-type': ({ entry }) => {\n return `An unexpected entry was passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n `strings with one or more characters, objects with a url property or ` +\n `Request objects.`;\n },\n 'add-to-cache-list-conflicting-entries': ({ firstEntry, secondEntry }) => {\n if (!firstEntry || !secondEntry) {\n throw new Error(`Unexpected input to ` +\n `'add-to-cache-list-duplicate-entries' error.`);\n }\n return `Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${firstEntry._entryId} but different revision details. Workbox is ` +\n `unable to cache and version the asset correctly. Please remove one ` +\n `of the entries.`;\n },\n 'plugin-error-request-will-fetch': ({ thrownError }) => {\n if (!thrownError) {\n throw new Error(`Unexpected input to ` +\n `'plugin-error-request-will-fetch', error.`);\n }\n return `An error was thrown by a plugins 'requestWillFetch()' method. ` +\n `The thrown error message was: '${thrownError.message}'.`;\n },\n 'invalid-cache-name': ({ cacheNameId, value }) => {\n if (!cacheNameId) {\n throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n }\n return `You must provide a name containing at least one character for ` +\n `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` +\n `'${JSON.stringify(value)}'`;\n },\n 'unregister-route-but-not-found-with-method': ({ method }) => {\n if (!method) {\n throw new Error(`Unexpected input to ` +\n `'unregister-route-but-not-found-with-method' error.`);\n }\n return `The route you're trying to unregister was not previously ` +\n `registered for the method type '${method}'.`;\n },\n 'unregister-route-route-not-registered': () => {\n return `The route you're trying to unregister was not previously ` +\n `registered.`;\n },\n 'queue-replay-failed': ({ name }) => {\n return `Replaying the background sync queue '${name}' failed.`;\n },\n 'duplicate-queue-name': ({ name }) => {\n return `The Queue name '${name}' is already being used. ` +\n `All instances of backgroundSync.Queue must be given unique names.`;\n },\n 'expired-test-without-max-age': ({ methodName, paramName }) => {\n return `The '${methodName}()' method can only be used when the ` +\n `'${paramName}' is used in the constructor.`;\n },\n 'unsupported-route-type': ({ moduleName, className, funcName, paramName }) => {\n return `The supplied '${paramName}' parameter was an unsupported type. ` +\n `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n `valid input types.`;\n },\n 'not-array-of-class': ({ value, expectedClass, moduleName, className, funcName, paramName }) => {\n return `The supplied '${paramName}' parameter must be an array of ` +\n `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n `to fix the issue.`;\n },\n 'max-entries-or-age-required': ({ moduleName, className, funcName }) => {\n return `You must define either config.maxEntries or config.maxAgeSeconds` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n 'statuses-or-headers-required': ({ moduleName, className, funcName }) => {\n return `You must define either config.statuses or config.headers` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n 'invalid-string': ({ moduleName, funcName, paramName }) => {\n if (!paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'invalid-string' error.`);\n }\n return `When using strings, the '${paramName}' parameter must start with ` +\n `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n `Please see the docs for ${moduleName}.${funcName}() for ` +\n `more info.`;\n },\n 'channel-name-required': () => {\n return `You must provide a channelName to construct a ` +\n `BroadcastCacheUpdate instance.`;\n },\n 'invalid-responses-are-same-args': () => {\n return `The arguments passed into responsesAreSame() appear to be ` +\n `invalid. Please ensure valid Responses are used.`;\n },\n 'expire-custom-caches-only': () => {\n return `You must provide a 'cacheName' property when using the ` +\n `expiration plugin with a runtime caching strategy.`;\n },\n 'unit-must-be-bytes': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n }\n return `The 'unit' portion of the Range header must be set to 'bytes'. ` +\n `The Range header provided was \"${normalizedRangeHeader}\"`;\n },\n 'single-range-only': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'single-range-only' error.`);\n }\n return `Multiple ranges are not supported. Please use a single start ` +\n `value, and optional end value. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n 'invalid-range-values': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n }\n return `The Range header is missing both start and end values. At least ` +\n `one of those values is needed. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n 'no-range-header': () => {\n return `No Range header was found in the Request provided.`;\n },\n 'range-not-satisfiable': ({ size, start, end }) => {\n return `The start (${start}) and end (${end}) values in the Range are ` +\n `not satisfiable by the cached response, which is ${size} bytes.`;\n },\n 'attempt-to-cache-non-get-request': ({ url, method }) => {\n return `Unable to cache '${url}' because it is a '${method}' request and ` +\n `only 'GET' requests can be cached.`;\n },\n 'cache-put-with-no-response': ({ url }) => {\n return `There was an attempt to cache '${url}' but the response was not ` +\n `defined.`;\n },\n 'no-response': ({ url, error }) => {\n let message = `The strategy could not generate a response for '${url}'.`;\n if (error) {\n message += ` The underlying error is ${error}.`;\n }\n return message;\n },\n 'bad-precaching-response': ({ url, status }) => {\n return `The precaching request for '${url}' failed with an HTTP ` +\n `status of ${status}.`;\n },\n 'non-precached-url': ({ url }) => {\n return `createHandlerBoundToURL('${url}') was called, but that URL is ` +\n `not precached. Please pass in a URL that is precached instead.`;\n },\n 'add-to-cache-list-conflicting-integrities': ({ url }) => {\n return `Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${url} with different integrity values. Please remove one of them.`;\n },\n 'missing-precache-entry': ({ cacheName, url }) => {\n return `Unable to find a precached response in ${cacheName} for ${url}.`;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from '../_private/WorkboxError.js';\nimport '../_version.js';\n/*\n * This method throws if the supplied value is not an array.\n * The destructed values are required to produce a meaningful error for users.\n * The destructed and restructured object is so it's clear what is\n * needed.\n */\nconst isArray = (value, details) => {\n if (!Array.isArray(value)) {\n throw new WorkboxError('not-an-array', details);\n }\n};\nconst hasMethod = (object, expectedMethod, details) => {\n const type = typeof object[expectedMethod];\n if (type !== 'function') {\n details['expectedMethod'] = expectedMethod;\n throw new WorkboxError('missing-a-method', details);\n }\n};\nconst isType = (object, expectedType, details) => {\n if (typeof object !== expectedType) {\n details['expectedType'] = expectedType;\n throw new WorkboxError('incorrect-type', details);\n }\n};\nconst isInstance = (object, expectedClass, details) => {\n if (!(object instanceof expectedClass)) {\n details['expectedClass'] = expectedClass;\n throw new WorkboxError('incorrect-class', details);\n }\n};\nconst isOneOf = (value, validValues, details) => {\n if (!validValues.includes(value)) {\n details['validValueDescription'] =\n `Valid values are ${JSON.stringify(validValues)}.`;\n throw new WorkboxError('invalid-value', details);\n }\n};\nconst isArrayOfClass = (value, expectedClass, details) => {\n const error = new WorkboxError('not-array-of-class', details);\n if (!Array.isArray(value)) {\n throw error;\n }\n for (const item of value) {\n if (!(item instanceof expectedClass)) {\n throw error;\n }\n }\n};\nconst finalAssertExports = process.env.NODE_ENV === 'production' ? null : {\n hasMethod,\n isArray,\n isInstance,\n isOneOf,\n isType,\n isArrayOfClass,\n};\nexport { finalAssertExports as assert };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof module:workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nexport const pluginUtils = {\n filter: (plugins, callbackName) => {\n return plugins.filter((plugin) => callbackName in plugin);\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from './assert.js';\nimport { executeQuotaErrorCallbacks } from './executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from './getFriendlyURL.js';\nimport { logger } from './logger.js';\nimport { pluginUtils } from '../utils/pluginUtils.js';\nimport { WorkboxError } from './WorkboxError.js';\nimport '../_version.js';\n/**\n * Checks the list of plugins for the cacheKeyWillBeUsed callback, and\n * executes any of those callbacks found in sequence. The final `Request` object\n * returned by the last plugin is treated as the cache key for cache reads\n * and/or writes.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {string} options.mode\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _getEffectiveRequest = async ({ request, mode, plugins = [], }) => {\n const cacheKeyWillBeUsedPlugins = pluginUtils.filter(plugins, \"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */);\n let effectiveRequest = request;\n for (const plugin of cacheKeyWillBeUsedPlugins) {\n effectiveRequest = await plugin[\"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */].call(plugin, { mode, request: effectiveRequest });\n if (typeof effectiveRequest === 'string') {\n effectiveRequest = new Request(effectiveRequest);\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(effectiveRequest, Request, {\n moduleName: 'Plugin',\n funcName: \"cacheKeyWillBeUsed\" /* CACHE_KEY_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n return effectiveRequest;\n};\n/**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _isResponseSafeToCache = async ({ request, response, event, plugins = [], }) => {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const plugin of plugins) {\n if (\"cacheWillUpdate\" /* CACHE_WILL_UPDATE */ in plugin) {\n pluginsUsed = true;\n const pluginMethod = plugin[\"cacheWillUpdate\" /* CACHE_WILL_UPDATE */];\n responseToCache = await pluginMethod.call(plugin, {\n request,\n response: responseToCache,\n event,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n assert.isInstance(responseToCache, Response, {\n moduleName: 'Plugin',\n funcName: \"cacheWillUpdate\" /* CACHE_WILL_UPDATE */,\n isReturnValueProblem: true,\n });\n }\n }\n if (!responseToCache) {\n break;\n }\n }\n }\n if (!pluginsUsed) {\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${request.url}' is an opaque ` +\n `response. The caching strategy that you're using will not ` +\n `cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${request.url}' returned ` +\n `a status code of '${response.status}' and won't be cached as a ` +\n `result.`);\n }\n }\n }\n }\n responseToCache = responseToCache && responseToCache.status === 200 ?\n responseToCache : undefined;\n }\n return responseToCache ? responseToCache : null;\n};\n/**\n * This is a wrapper around cache.match().\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache to match against.\n * @param {Request} options.request The Request that will be used to look up\n * cache entries.\n * @param {Event} [options.event] The event that prompted the action.\n * @param {Object} [options.matchOptions] Options passed to cache.match().\n * @param {Array} [options.plugins=[]] Array of plugins.\n * @return {Response} A cached response if available.\n *\n * @private\n * @memberof module:workbox-core\n */\nconst matchWrapper = async ({ cacheName, request, event, matchOptions, plugins = [], }) => {\n const cache = await self.caches.open(cacheName);\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'read'\n });\n let cachedResponse = await cache.match(effectiveRequest, matchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const plugin of plugins) {\n if (\"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */ in plugin) {\n const pluginMethod = plugin[\"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */];\n cachedResponse = await pluginMethod.call(plugin, {\n cacheName,\n event,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n assert.isInstance(cachedResponse, Response, {\n moduleName: 'Plugin',\n funcName: \"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n return cachedResponse;\n};\n/**\n * Wrapper around cache.put().\n *\n * Will call `cacheDidUpdate` on plugins if the cache was updated, using\n * `matchOptions` when determining what the old entry is.\n *\n * @param {Object} options\n * @param {string} options.cacheName\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @param {Object} [options.matchOptions]\n *\n * @private\n * @memberof module:workbox-core\n */\nconst putWrapper = async ({ cacheName, request, response, event, plugins = [], matchOptions, }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (request.method && request.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(request.url),\n method: request.method,\n });\n }\n }\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'write'\n });\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await _isResponseSafeToCache({\n event,\n plugins,\n response,\n request: effectiveRequest,\n });\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' will ` +\n `not be cached.`, responseToCache);\n }\n return;\n }\n const cache = await self.caches.open(cacheName);\n const updatePlugins = pluginUtils.filter(plugins, \"cacheDidUpdate\" /* CACHE_DID_UPDATE */);\n const oldResponse = updatePlugins.length > 0 ?\n await matchWrapper({ cacheName, matchOptions, request: effectiveRequest }) :\n null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response for ` +\n `${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, responseToCache);\n }\n catch (error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n for (const plugin of updatePlugins) {\n await plugin[\"cacheDidUpdate\" /* CACHE_DID_UPDATE */].call(plugin, {\n cacheName,\n event,\n oldResponse,\n newResponse: responseToCache,\n request: effectiveRequest,\n });\n }\n};\nexport const cacheWrapper = {\n put: putWrapper,\n match: matchWrapper,\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from './WorkboxError.js';\nimport { logger } from './logger.js';\nimport { assert } from './assert.js';\nimport { getFriendlyURL } from '../_private/getFriendlyURL.js';\nimport { pluginUtils } from '../utils/pluginUtils.js';\nimport '../_version.js';\n/**\n * Wrapper around the fetch API.\n *\n * Will call requestWillFetch on available plugins.\n *\n * @param {Object} options\n * @param {Request|string} options.request\n * @param {Object} [options.fetchOptions]\n * @param {ExtendableEvent} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst wrappedFetch = async ({ request, fetchOptions, event, plugins = [], }) => {\n if (typeof request === 'string') {\n request = new Request(request);\n }\n // We *should* be able to call `await event.preloadResponse` even if it's\n // undefined, but for some reason, doing so leads to errors in our Node unit\n // tests. To work around that, explicitly check preloadResponse's value first.\n if (event instanceof FetchEvent && event.preloadResponse) {\n const possiblePreloadResponse = await event.preloadResponse;\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n paramName: 'request',\n expectedClass: Request,\n moduleName: 'workbox-core',\n className: 'fetchWrapper',\n funcName: 'wrappedFetch',\n });\n }\n const failedFetchPlugins = pluginUtils.filter(plugins, \"fetchDidFail\" /* FETCH_DID_FAIL */);\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = failedFetchPlugins.length > 0 ?\n request.clone() : null;\n try {\n for (const plugin of plugins) {\n if (\"requestWillFetch\" /* REQUEST_WILL_FETCH */ in plugin) {\n const pluginMethod = plugin[\"requestWillFetch\" /* REQUEST_WILL_FETCH */];\n const requestClone = request.clone();\n request = await pluginMethod.call(plugin, {\n request: requestClone,\n event,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (request) {\n assert.isInstance(request, Request, {\n moduleName: 'Plugin',\n funcName: \"cachedResponseWillBeUsed\" /* CACHED_RESPONSE_WILL_BE_USED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n }\n catch (err) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownError: err,\n });\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (Most likely from a `fetch` event) to be different\n // to the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n if (request.mode === 'navigate') {\n fetchResponse = await fetch(request);\n }\n else {\n fetchResponse = await fetch(request, fetchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const plugin of plugins) {\n if (\"fetchDidSucceed\" /* FETCH_DID_SUCCEED */ in plugin) {\n fetchResponse = await plugin[\"fetchDidSucceed\" /* FETCH_DID_SUCCEED */]\n .call(plugin, {\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (fetchResponse) {\n assert.isInstance(fetchResponse, Response, {\n moduleName: 'Plugin',\n funcName: \"fetchDidSucceed\" /* FETCH_DID_SUCCEED */,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n for (const plugin of failedFetchPlugins) {\n await plugin[\"fetchDidFail\" /* FETCH_DID_FAIL */].call(plugin, {\n error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n};\nconst fetchWrapper = {\n fetch: wrappedFetch,\n};\nexport { fetchWrapper };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof module:workbox-core\n */\nasync function copyResponse(response, modifier) {\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream() ?\n clonedResponse.body : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:5.1.4'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport '../_version.js';\n/**\n * @param {string} groupTitle\n * @param {Array} deletedURLs\n *\n * @private\n */\nconst logGroup = (groupTitle, deletedURLs) => {\n logger.groupCollapsed(groupTitle);\n for (const url of deletedURLs) {\n logger.log(url);\n }\n logger.groupEnd();\n};\n/**\n * @param {Array} deletedURLs\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function printCleanupDetails(deletedURLs) {\n const deletionCount = deletedURLs.length;\n if (deletionCount > 0) {\n logger.groupCollapsed(`During precaching cleanup, ` +\n `${deletionCount} cached ` +\n `request${deletionCount === 1 ? ' was' : 's were'} deleted.`);\n logGroup('Deleted Cache Requests', deletedURLs);\n logger.groupEnd();\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport '../_version.js';\n/**\n * @param {string} groupTitle\n * @param {Array} urls\n *\n * @private\n */\nfunction _nestedGroup(groupTitle, urls) {\n if (urls.length === 0) {\n return;\n }\n logger.groupCollapsed(groupTitle);\n for (const url of urls) {\n logger.log(url);\n }\n logger.groupEnd();\n}\n/**\n * @param {Array} urlsToPrecache\n * @param {Array} urlsAlreadyPrecached\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) {\n const precachedCount = urlsToPrecache.length;\n const alreadyPrecachedCount = urlsAlreadyPrecached.length;\n if (precachedCount || alreadyPrecachedCount) {\n let message = `Precaching ${precachedCount} file${precachedCount === 1 ? '' : 's'}.`;\n if (alreadyPrecachedCount > 0) {\n message += ` ${alreadyPrecachedCount} ` +\n `file${alreadyPrecachedCount === 1 ? ' is' : 's are'} already cached.`;\n }\n logger.groupCollapsed(message);\n _nestedGroup(`View newly precached URLs.`, urlsToPrecache);\n _nestedGroup(`View previously precached URLs.`, urlsAlreadyPrecached);\n logger.groupEnd();\n }\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { cacheWrapper } from 'workbox-core/_private/cacheWrapper.js';\nimport { fetchWrapper } from 'workbox-core/_private/fetchWrapper.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof module:workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {string} [cacheName] An optional name for the cache, to override\n * the default precache name.\n */\n constructor(cacheName) {\n this._cacheName = cacheNames.getPrecacheName(cacheName);\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {\n * Array\n * } entries Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = (typeof entry !== 'string' && entry.revision) ?\n 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * @param {Object} options\n * @param {Event} [options.event] The install event (if needed).\n * @param {Array} [options.plugins] Plugins to be used for fetching\n * and caching during install.\n * @return {Promise}\n */\n async install({ event, plugins } = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (plugins) {\n assert.isArray(plugins, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'install',\n paramName: 'plugins',\n });\n }\n }\n const toBePrecached = [];\n const alreadyPrecached = [];\n const cache = await self.caches.open(this._cacheName);\n const alreadyCachedRequests = await cache.keys();\n const existingCacheKeys = new Set(alreadyCachedRequests.map((request) => request.url));\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n if (existingCacheKeys.has(cacheKey)) {\n alreadyPrecached.push(url);\n }\n else {\n toBePrecached.push({ cacheKey, url });\n }\n }\n const precacheRequests = toBePrecached.map(({ cacheKey, url }) => {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n return this._addURLToCache({\n cacheKey,\n cacheMode,\n event,\n integrity,\n plugins,\n url,\n });\n });\n await Promise.all(precacheRequests);\n const updatedURLs = toBePrecached.map((item) => item.url);\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, alreadyPrecached);\n }\n return {\n updatedURLs,\n notUpdatedURLs: alreadyPrecached,\n };\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * @return {Promise}\n */\n async activate() {\n const cache = await self.caches.open(this._cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n }\n /**\n * Requests the entry and saves it to the cache if the response is valid.\n * By default, any response with a status code of less than 400 (including\n * opaque responses) is considered valid.\n *\n * If you need to use custom criteria to determine what's valid and what\n * isn't, then pass in an item in `options.plugins` that implements the\n * `cacheWillUpdate()` lifecycle event.\n *\n * @private\n * @param {Object} options\n * @param {string} options.cacheKey The string to use a cache key.\n * @param {string} options.url The URL to fetch and cache.\n * @param {string} [options.cacheMode] The cache mode for the network request.\n * @param {Event} [options.event] The install event (if passed).\n * @param {Array} [options.plugins] An array of plugins to apply to\n * fetch and caching.\n * @param {string} [options.integrity] The value to use for the `integrity`\n * field when making the request.\n */\n async _addURLToCache({ cacheKey, url, cacheMode, event, plugins, integrity }) {\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n let response = await fetchWrapper.fetch({\n event,\n plugins,\n request,\n });\n // Allow developers to override the default logic about what is and isn't\n // valid by passing in a plugin implementing cacheWillUpdate(), e.g.\n // a `CacheableResponsePlugin` instance.\n let cacheWillUpdatePlugin;\n for (const plugin of (plugins || [])) {\n if ('cacheWillUpdate' in plugin) {\n cacheWillUpdatePlugin = plugin;\n }\n }\n const isValidResponse = cacheWillUpdatePlugin ?\n // Use a callback if provided. It returns a truthy value if valid.\n // NOTE: invoke the method on the plugin instance so the `this` context\n // is correct.\n await cacheWillUpdatePlugin.cacheWillUpdate({ event, request, response }) :\n // Otherwise, default to considering any response status under 400 valid.\n // This includes, by default, considering opaque responses valid.\n response.status < 400;\n // Consider this a failure, leading to the `install` handler failing, if\n // we get back an invalid response.\n if (!isValidResponse) {\n throw new WorkboxError('bad-precaching-response', {\n url,\n status: response.status,\n });\n }\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n if (response.redirected) {\n response = await copyResponse(response);\n }\n await cacheWrapper.put({\n event,\n plugins,\n response,\n // `request` already uses `url`. We may be able to reuse it.\n request: cacheKey === url ? request : new Request(cacheKey),\n cacheName: this._cacheName,\n matchOptions: {\n ignoreSearch: true,\n },\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * This acts as a drop-in replacement for [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this._cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that can be used within a\n * {@link module:workbox-routing.Route} that will find a response for the\n * incoming request against the precache.\n *\n * If for an unexpected reason there is a cache miss for the request,\n * this will fall back to retrieving the `Response` via `fetch()` when\n * `fallbackToNetwork` is `true`.\n *\n * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the\n * response from the network if there's a precache miss.\n * @return {module:workbox-routing~handlerCallback}\n */\n createHandler(fallbackToNetwork = true) {\n return async ({ request }) => {\n try {\n const response = await this.matchPrecache(request);\n if (response) {\n return response;\n }\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this._cacheName,\n url: request instanceof Request ? request.url : request,\n });\n }\n catch (error) {\n if (fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Unable to respond with precached response. ` +\n `Falling back to network.`, error);\n }\n return fetch(request);\n }\n throw error;\n }\n };\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * If for an unexpected reason there is a cache miss when looking up `url`,\n * this will fall back to retrieving the `Response` via `fetch()` when\n * `fallbackToNetwork` is `true`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the\n * response from the network if there's a precache miss.\n * @return {module:workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url, fallbackToNetwork = true) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n const handler = this.createHandler(fallbackToNetwork);\n const request = new Request(url);\n return () => handler({ request });\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching, directoryIndex, cleanURLs, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './getOrCreatePrecacheController.js';\nimport { generateURLVariations } from './generateURLVariations.js';\nimport '../_version.js';\n/**\n * This function will take the request URL and manipulate it based on the\n * configuration options.\n *\n * @param {string} url\n * @param {Object} options\n * @return {string} Returns the URL in the cache that matches the request,\n * if possible.\n *\n * @private\n */\nexport const getCacheKeyForURL = (url, options) => {\n const precacheController = getOrCreatePrecacheController();\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(url, options)) {\n const possibleCacheKey = urlsToCacheKeys.get(possibleURL);\n if (possibleCacheKey) {\n return possibleCacheKey;\n }\n }\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getCacheKeyForURL } from './getCacheKeyForURL.js';\nimport '../_version.js';\n/**\n * Adds a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * NOTE: when called more than once this method will replace the previously set\n * configuration options. Calling it more than once is not recommended outside\n * of tests.\n *\n * @private\n * @param {Object} [options]\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox.precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\nexport const addFetchListener = ({ ignoreURLParametersMatching = [/^utm_/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) => {\n const cacheName = cacheNames.getPrecacheName();\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const precachedURL = getCacheKeyForURL(event.request.url, {\n cleanURLs,\n directoryIndex,\n ignoreURLParametersMatching,\n urlManipulation,\n });\n if (!precachedURL) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` +\n getFriendlyURL(event.request.url));\n }\n return;\n }\n let responsePromise = self.caches.open(cacheName).then((cache) => {\n return cache.match(precachedURL);\n }).then((cachedResponse) => {\n if (cachedResponse) {\n return cachedResponse;\n }\n // Fall back to the network if we don't have a cached response\n // (perhaps due to manual cache cleanup).\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(precachedURL)} in ${cacheName} was not found. ` +\n `Falling back to the network instead.`);\n }\n return fetch(precachedURL);\n });\n if (process.env.NODE_ENV !== 'production') {\n responsePromise = responsePromise.then((response) => {\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` +\n getFriendlyURL(event.request.url));\n logger.log(`Serving the precached url: ${precachedURL}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(event.request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n return response;\n });\n }\n event.respondWith(responsePromise);\n }));\n};\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addFetchListener } from './utils/addFetchListener.js';\nimport './_version.js';\nlet listenerAdded = false;\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options]\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {module:workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n *\n * @memberof module:workbox-precaching\n */\nfunction addRoute(options) {\n if (!listenerAdded) {\n addFetchListener(options);\n listenerAdded = true;\n }\n}\nexport { addRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst plugins = [];\nexport const precachePlugins = {\n /*\n * @return {Array}\n * @private\n */\n get() {\n return plugins;\n },\n /*\n * @param {Array} newPlugins\n * @private\n */\n add(newPlugins) {\n plugins.push(...newPlugins);\n },\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { precachePlugins } from './utils/precachePlugins.js';\nimport './_version.js';\nconst installListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n const plugins = precachePlugins.get();\n event.waitUntil(precacheController.install({ event, plugins })\n .catch((error) => {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Service worker installation failed. It will ` +\n `be retried automatically during the next navigation.`);\n }\n // Re-throw the error to ensure installation fails.\n throw error;\n }));\n};\nconst activateListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n event.waitUntil(precacheController.activate());\n};\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * [\"precache cache\"]{@link module:workbox-core.cacheNames} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * [addRoute()]{@link module:workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof module:workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.addToCacheList(entries);\n if (entries.length > 0) {\n // NOTE: these listeners will only be added once (even if the `precache()`\n // method is called multiple times) because event listeners are implemented\n // as a set, where each listener must be unique.\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('install', installListener);\n self.addEventListener('activate', activateListener);\n }\n}\nexport { precache };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * [precache()]{@link module:workbox-precaching.precache} and\n * [addRoute()]{@link module:workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See\n * [addRoute() options]{@link module:workbox-precaching.addRoute}.\n *\n * @memberof module:workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n"],"names":["self","_","e","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","value","length","join","eachCacheNameDetail","fn","key","Object","keys","cacheNames","updateDetails","details","getGoogleAnalyticsName","userCacheName","getPrecacheName","getPrefix","getRuntimeName","getSuffix","getFriendlyURL","url","urlObj","URL","String","location","href","replace","RegExp","origin","logger","__WB_DISABLE_DEV_LOGS","inGroup","methodToColorMap","debug","log","warn","error","groupCollapsed","groupEnd","print","method","args","test","navigator","userAgent","console","styles","logPrefix","api","loggerMethods","messages","paramName","validValueDescription","Error","JSON","stringify","moduleName","className","funcName","expectedType","expectedClass","isReturnValueProblem","name","expectedMethod","entry","firstEntry","secondEntry","_entryId","thrownError","message","cacheNameId","methodName","normalizedRangeHeader","size","start","end","status","generatorFunction","code","messageGenerator","WorkboxError","constructor","errorCode","isArray","Array","hasMethod","object","type","isType","isInstance","isOneOf","validValues","includes","isArrayOfClass","item","finalAssertExports","quotaErrorCallbacks","Set","executeQuotaErrorCallbacks","callback","pluginUtils","plugins","callbackName","plugin","_getEffectiveRequest","request","mode","cacheKeyWillBeUsedPlugins","effectiveRequest","call","Request","assert","_isResponseSafeToCache","response","event","responseToCache","pluginsUsed","pluginMethod","Response","undefined","matchWrapper","matchOptions","cache","caches","open","cachedResponse","match","putWrapper","updatePlugins","oldResponse","put","newResponse","cacheWrapper","wrappedFetch","fetchOptions","FetchEvent","preloadResponse","possiblePreloadResponse","failedFetchPlugins","originalRequest","clone","requestClone","err","pluginFilteredRequest","fetchResponse","fetch","fetchWrapper","supportStatus","canConstructResponseFromBodyStream","testResponse","body","copyResponse","modifier","clonedResponse","responseInit","headers","Headers","statusText","modifiedResponseInit","blob","REVISION_SEARCH_PARAM","createCacheKey","urlObject","cacheKey","revision","cacheKeyURL","originalURL","searchParams","set","logGroup","groupTitle","deletedURLs","printCleanupDetails","deletionCount","_nestedGroup","urls","printInstallDetails","urlsToPrecache","urlsAlreadyPrecached","precachedCount","alreadyPrecachedCount","PrecacheController","_cacheName","_urlsToCacheKeys","Map","_urlsToCacheModes","_cacheKeysToIntegrities","addToCacheList","entries","urlsToWarnAbout","push","cacheMode","has","get","integrity","warningMessage","install","toBePrecached","alreadyPrecached","alreadyCachedRequests","existingCacheKeys","map","precacheRequests","_addURLToCache","Promise","all","updatedURLs","notUpdatedURLs","activate","currentlyCachedRequests","expectedCacheKeys","values","delete","credentials","cacheWillUpdatePlugin","isValidResponse","cacheWillUpdate","redirected","ignoreSearch","getURLsToCacheKeys","getCachedURLs","getCacheKeyForURL","matchPrecache","createHandler","fallbackToNetwork","createHandlerBoundToURL","handler","precacheController","getOrCreatePrecacheController","removeIgnoredSearchParams","ignoreURLParametersMatching","some","regExp","generateURLVariations","directoryIndex","cleanURLs","urlManipulation","hash","urlWithoutIgnoredParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","options","urlsToCacheKeys","possibleURL","possibleCacheKey","addFetchListener","addEventListener","precachedURL","responsePromise","then","respondWith","listenerAdded","addRoute","precachePlugins","add","newPlugins","installListener","waitUntil","catch","activateListener","precacheAndRoute"],"mappings":"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"} \ No newline at end of file diff --git a/tests/misc/android/chromedriver_90 b/tests/misc/android/chromedriver_90 new file mode 100755 index 0000000..c2c0307 Binary files /dev/null and b/tests/misc/android/chromedriver_90 differ diff --git a/tests/wdio.config.android.js b/tests/wdio.config.android.js index f193dbd..c925daf 100644 --- a/tests/wdio.config.android.js +++ b/tests/wdio.config.android.js @@ -56,7 +56,7 @@ exports.config = { appium: { args: { - chromedriverExecutable: path.join(__dirname, "misc/chromedriver"), + chromedriverExecutable: path.join(__dirname, "misc/android/chromedriver_90"), } }, @@ -65,7 +65,7 @@ exports.config = { capabilities: [{ automationName: "UiAutomator2", // automationName: "Espresso", - chromedriverExecutable: path.join(__dirname, "misc/chromedriver"), + chromedriverExecutable: path.join(__dirname, "misc/android/chromedriver_90"), // For Android, Appium uses the first device it finds using "adb devices". So, this // string simply needs to be non-empty. @@ -103,4 +103,4 @@ exports.config = { console.log("tearing down..."); await Service.tearDown(); } -}; \ No newline at end of file +}; diff --git a/tools/build-release.sh b/tools/build-release.sh index 7133b25..d136bb9 100755 --- a/tools/build-release.sh +++ b/tools/build-release.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -#export MODE=production +export MODE=production export HOST_URI=https://wordRotator.silas.link/api/v1/ export CONTACT_EMAIL=wordrotator@silas.link diff --git a/webpack.config.js b/webpack.config.js index 5d94a9b..1efb30c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,7 +6,7 @@ const CopyWebpackPlugin = require("copy-webpack-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const webpack = require('webpack'); const path = require("path"); -const WorkboxPlugin = require('workbox-webpack-plugin'); +// const WorkboxPlugin = require('workbox-webpack-plugin'); const os = require('os'); const ifaces = os.networkInterfaces(); @@ -55,7 +55,7 @@ let moduleExports = { }, optimization: { - // minimize: false, + minimize: false, minimizer: [ new TerserPlugin({ terserOptions: { @@ -90,8 +90,7 @@ let moduleExports = { //Delete www before every Build (to only have nessesary files) new CleanWebpackPlugin({cleanOnceBeforeBuildPatterns: ['**/*', '!**/.gitkeep']}), - new CopyWebpackPlugin({ - patterns: [ + new CopyWebpackPlugin([ { from: path.resolve("./node_modules/sql.js/dist/sql-wasm.js"), to: "scripts/" @@ -104,7 +103,7 @@ let moduleExports = { from: path.resolve("./node_modules/localforage/dist/localforage.js"), to: "scripts/" },] - }), + ), new webpack.NormalModuleReplacementPlugin(/typeorm$/, function (result) { result.request = result.request.replace(/typeorm/, "typeorm/browser"); @@ -114,6 +113,7 @@ let moduleExports = { new HtmlWebpackPlugin({ template: 'src/client/index.html' }), + new webpack.DefinePlugin({ __HOST_ADDRESS__: "'" + (process.env.HOST_URI || ((process.env.HOST || ("http://" + getIp())) + ":" + (process.env.REQUEST_PORT || process.env.PORT || "3000") + "/api/v1/")) + "'", __SYNCHRONIZE_DB__: mode !== "production", @@ -121,9 +121,9 @@ let moduleExports = { __CONTACT_EMAIL__: "'" + process.env.CONTACT_EMAIL + "'", }), - new WorkboxPlugin.GenerateSW({ - maximumFileSizeToCacheInBytes: 1024 * 1024 * 1024 * 5 - }), + // new WorkboxPlugin.GenerateSW({ + // maximumFileSizeToCacheInBytes: 1024 * 1024 * 1024 * 5 + // }), // new webpack.ProvidePlugin({ // 'window.initSqlJs': path.join(__dirname, 'node_modules/sql.js/dist/sql-asm.js'),